Apa yang terjadi on-chain selama ronde Crash?
Setiap ronde Crash dibangun dari tiga transaksi on-chain, dengan urutan berikut:- Commit: sebelum taruhan dibuka, backend membuat rahasia acak 32 byte dan memublikasikan hash SHA-256-nya di on-chain (instruksi
start_new_round). Inilah commitment: sejak saat ini, hanya rahasia yang persis sama yang dapat menyelesaikan ronde tersebut. Commitment bersifat publik di eventCrashRoundPreparedmilik transaksi itu. - Taruhan: pemain memasang taruhan. Rahasia tetap tersembunyi; commitment menjamin rahasia itu tidak dapat ditukar.
- Awal ronde / pengambilan entropi: saat ronde dimulai (instruksi
start_game), program membaca slot hash terbaru dari sysvarSlotHashesSolana dan menyimpannya di ronde. Aplikasi menyebut nilai ini sebagai block hash ronde. Titik crash kini sudah sepenuhnya ditentukan (ia murni fungsi dari slot hash yang disimpan dan rahasia yang di-commit), tetapi siapa pun yang tidak mengetahui rahasianya belum dapat menghitungnya. Nilai ini bersifat publik di eventCrashGameStarted. - Ronde berjalan: pengali naik dan pemain melakukan cashout.
- Reveal: backend mengirimkan rahasia (instruksi
crash). Program memverifikasi secara on-chain bahwasha256(secret)sama dengan commitment (jika tidak cocok, transaksi gagal), lalu menghitung sendiri titik crash dan memfinalisasi ronde. EventCrashRoundFinalizedmemublikasikan rahasia, slot hash, dan titik crash akhir.
Apa rumus pasti titik crash?
Titik crash diturunkan persis seperti ini (inilah aritmetika yang dijalankan program on-chain: matematika bilangan bulat, tanpa kejutan pembulatan):- Urutan penggabungan adalah blockhash dulu, lalu secret.
Xdibaca secara big-endian dari 4 byte pertama output SHA-256.- Pembagian adalah pembagian floor (bilangan bulat, dibulatkan ke bawah).
- Batas bawah
max(10000, …)berarti pengali tidak pernah di bawah 1.00x, dan batas atas padaXmencegah penyebut yang sangat kecil.
Contoh perhitungan
DenganX = 0xABCD1234 (2,882,343,476) dan edge saat ini sebesar 1.5% (edge_bps = 150):
Seperti apa distribusinya
Rumus ini memetakanX yang seragam ke kurva crash klasik. Probabilitas sebuah ronde mencapai setidaknya pengali m kira-kira:
Apa yang dijamin, dan apa yang tidak
Ditegakkan oleh program:- Setelah commitment ada di on-chain, operator tidak dapat mengubah rahasia ronde: transaksi reveal gagal untuk rahasia apa pun yang hash-nya tidak cocok.
- Begitu ronde dimulai (slot hash disimpan), titik crash sudah tetap. Cashout lebih awal, terlambat, atau dalam jumlah besar tidak mengubah apa pun: hasilnya sudah ditentukan sebelum pengali mulai naik.
- Titik crash dihitung oleh program, bukan dilaporkan oleh backend. Nilai yang salah tidak dapat ditulis ke on-chain.
- Semua yang diperlukan untuk verifikasi (commitment, slot hash, rahasia, titik crash akhir) dipublikasikan dalam event on-chain, secara permanen.
- Waktu mulai. Operator mengetahui rahasia sebelum ronde dimulai, dan backend-nya memutuskan kapan mengirim transaksi awal ronde. Karena slot hash terbaru bersifat publik, secara teori operator dapat menghitung lebih dulu pengali yang akan dihasilkan untuk slot-slot kandidat dan mengatur waktu mulai untuk memengaruhi slot hash mana yang diambil. Skema ini tidak mencegahnya; skema ini membuatnya dapat diamati: waktu mulai ronde bersifat publik, dan bias sistematis apa pun akan terlihat dalam statistik titik crash yang dipublikasikan, yang dapat dihitung ulang secara massal oleh siapa pun.
- Pembatalan. Setelah ronde dimulai, operator mengetahui hasilnya sebelum pemain, dan dapat membatalkan ronde yang tidak menguntungkan alih-alih melakukan reveal. Ada dua batas tegas: pembatalan mengembalikan setiap taruhan secara penuh (program tidak punya jalur penyitaan), dan setiap pembatalan memancarkan event publik; frekuensi pembatalan adalah penandanya di on-chain. Pembatalan ada sebagai jalur pemulihan jika rahasia hilang (misalnya backend crash antara commit dan reveal) dan diperkirakan hampir tidak pernah digunakan.