Mengapa Dice tidak punya langkah commit?
Crash membutuhkan rahasia yang di-commit karena hasilnya harus tetap tetapi tersembunyi selama ronde berlangsung. Lemparan dadu tidak punya fase seperti itu: hasilnya langsung dipakai dalam instruksi yang sama dengan yang menariknya. Jadi, alih-alih meng-commit sebuah rahasia, penurunannya sama sekali tidak memakai input apa pun dari operator: tidak ada yang perlu di-commit, tidak ada yang perlu diungkap, dan tidak ada seed yang bisa dipilih operator demi keuntungannya. Entropinya berasal dari jaringan Solana itu sendiri, dicampur dengan nilai-nilai yang mengidentifikasi taruhan Anda:slothash: entri terbaru dari sysvarSlotHashesSolana pada saat transaksi taruhan Anda dieksekusi. Ini adalah entropi yang dihasilkan jaringan dan belum diketahui saat transaksi disusun (pengirim tidak bisa tahu persis di slot mana sebuah transaksi akan masuk).user: alamat 32 byte dari akun pengguna on-chain Anda (akun yang diturunkan program dari wallet Anda). Ini membuat lemparan antar pemain saling independen: dua taruhan yang masuk di slot yang sama akan mendapat lemparan berbeda.nonce: penghitung taruhan pribadi Anda, disimpan on-chain dan bertambah setiap kali Anda bermain. Ini membuat taruhan Anda yang berurutan saling independen, bahkan dalam slot yang sama, sekaligus berfungsi sebagai perlindungan terhadap pengiriman ganda.
Apa formula persis lemparan Dice?
- Input hash adalah hasil penggabungan, dengan urutan persis seperti ini: tag ASCII
"dice", slot hash, alamat akun pengguna, lalu nonce yang di-encode sebagai 8 byte little-endian. - Sampelnya adalah 16 byte pertama dari output SHA-256 yang dibaca sebagai integer unsigned 128-bit big-endian, lalu direduksi modulo 10,000.
- Mereduksi sampel 128-bit modulo 10,000 memiliki bias teoretis di bawah 2⁻¹¹⁴, puluhan orde besaran lebih kecil daripada house edge, dan karena itulah bias ini didokumentasikan alih-alih dikoreksi.
Kondisi menang dan pembayaran
edge_bps = 150):
Pengembalian yang diharapkan sama untuk setiap target:
peluang × pengali ≈ 98.5% dari taruhan (pembulatan ke bawah menguntungkan kasino paling banyak satu basis poin). Edge dan batas yang berlaku saat ini tercantum di Biaya & batas.
Apa yang dijamin, dan apa yang tidak
Ditegakkan oleh program:- Lemparan diturunkan dan diselesaikan di dalam satu instruksi on-chain, dari input yang dibaca oleh program itu sendiri. Backend tidak menyediakan lemparan dan tidak bisa melaporkannya secara keliru.
- Operator tidak memberikan input apa pun pada penurunan: tidak ada server seed yang bisa diutak-atik demi hasil yang menguntungkan.
- Nonce Anda harus dikembalikan persis sama, sehingga taruhan yang sama tidak bisa dimainkan dua kali, baik tanpa sengaja maupun dengan niat jahat.
- Setiap permainan memublikasikan semua input penurunan beserta hasilnya, sehingga setiap lemparan dalam riwayat dapat dihitung ulang oleh siapa pun.
N−1 menjadi publik di awal slot N, sehingga operator dengan latensi sangat rendah bisa memperkirakan lemparan yang akan didapat sebuah taruhan jika taruhan itu masuk di slot saat ini, lalu menunda pengiriman untuk menarik ulang. Skema ini menerima hal tersebut alih-alih berpura-pura sebaliknya (menghilangkannya akan memerlukan oracle VRF yang biaya per taruhannya melebihi nilai harapan kasino pada taruhan kecil). Yang membatasinya:
- Waktu masuknya transaksi tidak bisa dikendalikan sepenuhnya: jaringanlah, bukan pengirim, yang menentukan slot persis tempat sebuah transaksi masuk.
- Setiap input dipublikasikan, sehingga pola penundaan pengiriman dan setiap penyimpangan tingkat kemenangan agregat dari peluang yang tertera dapat diukur oleh siapa pun dari data publik. Penyalahgunaan yang sistematis tidak mungkin tetap tersembunyi.
Bagaimana cara memverifikasi lemparan Dice?
Setiap permainan memancarkan eventDiceBetSettled di transaksi taruhan itu sendiri, yang memuat semua yang Anda perlukan: slothash, user, nonce, target_bps, direction, win_chance_bps, roll, multiplier_bps dan is_win, beserta rincian penyelesaian lengkapnya. Untuk memverifikasi:
- Buka transaksi taruhan di Solana explorer dan baca field event-nya (layar Dice di aplikasi menampilkan input keadilan sesi Anda, dan riwayat taruhan Anda menautkan ke transaksinya).
- Hitung ulang
sha256("dice" ‖ slothash ‖ user ‖ nonce), ambil 16 byte pertama secara big-endian modulo 10,000, lalu bandingkan denganrolldi event. - Periksa keputusan menang/kalah (
roll < targetuntuk Di bawah,roll > targetuntuk Di atas) serta pengalinya terhadap formula di atas.