Bir Crash turu sırasında zincir üstünde neler olur?
Her Crash turu, bu sırayla üç zincir üstü işlemden oluşur:- Commit: bahisler açılmadan önce backend rastgele 32 baytlık bir gizli değer üretir ve SHA-256 hash’ini zincir üstünde yayımlar (
start_new_roundtalimatı). Taahhüt budur: bu andan itibaren turu yalnızca o gizli değerin kendisi sonuçlandırabilir. Taahhüt, işleminCrashRoundPreparedolayında herkese açıktır. - Bahisler: oyuncular bahislerini yapar. Gizli değer saklı kalır; taahhüt, değiştirilemeyeceğini garanti eder.
- Tur başlangıcı / entropinin yakalanması: tur başladığında (
start_gametalimatı) program, Solana’nınSlotHashessysvar’ından en son slot hash’ini okur ve tura kaydeder. Uygulama bu değere turun blok hash’i der. Crash noktası artık tamamen belirlenmiştir (kaydedilen slot hash’inin ve taahhüt edilen gizli değerin saf bir fonksiyonudur), ancak gizli değeri bilmeyen hiç kimse onu henüz hesaplayamaz. Bu değerCrashGameStartedolayında herkese açıktır. - Tur oynanır: çarpan yükselir ve oyuncular kazançlarını alır.
- Reveal: backend gizli değeri gönderir (
crashtalimatı). Program,sha256(secret)değerinin taahhüde eşit olduğunu zincir üstünde doğrular (eşleşmezse işlem başarısız olur), ardından crash noktasını bizzat hesaplar ve turu kesinleştirir.CrashRoundFinalizedolayı gizli değeri, slot hash’ini ve nihai crash noktasını yayımlar.
Crash noktası formülünün tam hâli nedir?
Crash noktası tam olarak şöyle türetilir (zincir üstü programın yürüttüğü aritmetik budur: tamsayı matematiği, sürpriz yuvarlama yok):- Birleştirme sırası önce blockhash, sonra secret şeklindedir.
X, SHA-256 çıktısının ilk 4 baytından big-endian olarak okunur.- Bölmeler aşağı yuvarlamalı (tamsayı) bölmelerdir.
max(10000, …)alt sınırı, çarpanın asla 1.00x’in altına düşmeyeceği anlamına gelir;Xüzerindeki sınır ise paydanın astronomik derecede küçülmesini önler.
Örnek hesaplama
X = 0xABCD1234 (2.882.343.476) ve mevcut %1,5 kasa avantajı (edge_bps = 150) ile:
Dağılım nasıl görünür
Formül, düzgün dağılımlı birX değerini klasik crash eğrisine dönüştürür. Bir turun en az m çarpanına ulaşma olasılığı yaklaşık olarak şudur:
Neler garanti edilir, neler edilmez
Program tarafından zorunlu kılınanlar:- Taahhüt zincire yazıldıktan sonra operatör turun gizli değerini değiştiremez: hash’i eşleşmeyen herhangi bir gizli değerle reveal işlemi başarısız olur.
- Tur başladıktan (slot hash’i kaydedildikten) sonra crash noktası sabitlenmiştir. Kazancı erken, geç ya da topluca almak hiçbir şeyi değiştirmez: sonuç, çarpan yükselmeye başlamadan önce belirlenmiştir.
- Crash noktasını backend bildirmez, program hesaplar. Yanlış bir değer zincire yazılamaz.
- Doğrulama için gereken her şey (taahhüt, slot hash’i, gizli değer, nihai crash noktası) zincir üstü olaylarda kalıcı olarak yayımlanır.
- Başlangıç zamanlaması. Operatör gizli değeri tur başlamadan önce bilir ve backend’i tur başlangıç işleminin ne zaman gönderileceğine karar verir. Son slot hash’leri herkese açık olduğundan, ilke olarak aday slot’lar için olası çarpanı önceden hesaplayıp başlangıcı hangi slot hash’inin yakalanacağını etkileyecek şekilde zamanlayabilir. Şema bunu engellemez; gözlemlenebilir kılar: tur başlangıç zamanlaması herkese açıktır ve sistematik bir sapma, herkesin toplu olarak yeniden hesaplayabileceği yayımlanmış crash noktalarının istatistiklerinde ortaya çıkar.
- İptaller. Tur başladıktan sonra operatör sonucu oyunculardan önce bilir ve reveal yapmak yerine aleyhine olan bir turu iptal edebilir. Burada iki kesin sınır vardır: iptal tüm bahis tutarlarını eksiksiz iade eder (programın el koyma yolu yoktur) ve her iptal herkese açık bir olay yayar; iptal sıklığı zincir üstündeki ele veren işarettir. İptal, kaybolan bir gizli değer (örneğin commit ile reveal arasında backend’in çökmesi) için bir kurtarma yolu olarak vardır ve pratikte neredeyse hiç kullanılmaması beklenir.