Dice’ta neden commit adımı yok?
Crash’in taahhüt edilmiş bir gizli değere ihtiyacı vardır, çünkü tur oynanırken sonucun sabit ama gizli kalması gerekir. Bir zar atışının böyle bir aşaması yoktur: sonuç, onu çeken talimatın içinde hemen kullanılır. Bu yüzden türetme bir gizli değeri taahhüt etmek yerine hiçbir operatör girdisi kullanmaz: taahhüt edilecek bir şey, açıklanacak bir şey ve operatörün işine gelecek şekilde seçebileceği bir seed yoktur. Entropi doğrudan Solana ağından gelir ve bahsinizi tanımlayan değerlerle karıştırılır:slothash: bahis işleminiz gerçekleştiği anda Solana’nınSlotHashessysvar’ındaki en son kayıt. Bu, ağın ürettiği ve işlem oluşturulurken bilinmeyen bir entropidir (gönderen, bir işlemin tam olarak hangi slot’a düşeceğini bilemez).user: zincir üstü kullanıcı hesabınızın 32 baytlık adresi (programın cüzdanınızdan türettiği bir hesap). Bu, atışları oyuncular arasında bağımsız kılar: aynı slot’a düşen iki bahis farklı atışlar alır.nonce: zincir üstünde saklanan ve her oyunda artan kişisel bahis sayacınız. Bu, aynı slot içinde bile ardışık bahislerinizi birbirinden bağımsız kılar ve aynı zamanda çift gönderime karşı koruma sağlar.
Dice atışının tam formülü nedir?
- Hash girdisi, tam olarak bu sırayla birleştirilir: ASCII etiketi
"dice", slot hash’i, kullanıcı hesabı adresi, ardından 8 bayt little-endian olarak kodlanmış nonce. - Örnek, SHA-256 çıktısının ilk 16 baytının big-endian işaretsiz 128 bitlik tamsayı olarak okunması ve 10.000’e göre mod alınmasıyla elde edilir.
- 128 bitlik bir örneğin 10.000’e göre modunu almak, 2⁻¹¹⁴’ün altında teorik bir sapma yaratır; bu, kasa avantajından onlarca mertebe daha küçüktür ve bu yüzden düzeltilmek yerine belgelenmiştir.
Kazanma koşulu ve ödeme
edge_bps = 150):
Beklenen getiri her hedef için aynıdır: bahis tutarının
şans × çarpan ≈ %98,5 kadarı (aşağı yuvarlama, en fazla bir baz puan kadar kasanın lehinedir). Mevcut avantaj ve limitler Ücretler ve limitler sayfasında listelenir.
Neler garanti ediliyor, neler edilmiyor
Program tarafından uygulananlar:- Atış, programın kendisinin okuduğu girdilerden, tek bir zincir üstü talimat içinde türetilir ve sonuçlandırılır. Atışı backend sağlamaz ve yanlış bildiremez.
- Operatör türetmeye hiçbir girdi katmaz: lehine sonuç arayarak deneyebileceği bir sunucu seed’i yoktur.
- Nonce’unuzun birebir geri gönderilmesi gerekir; böylece aynı bahis yanlışlıkla (ya da kötü niyetle) iki kez oynanamaz.
- Her oyun, türetmenin tüm girdilerini ve sonucu yayımlar; böylece geçmişteki her atış herkes tarafından yeniden hesaplanabilir.
N−1 slot’unun hash’i N slot’unun başında herkese açık hâle gelir; bu nedenle gecikmesi çok düşük bir operatör, bir bahsin eğer mevcut slot’a düşerse alacağı atışı tahmin edebilir ve yeniden çekmek için gönderimi geciktirebilir. Şema bunu yok sayıyormuş gibi yapmak yerine kabul eder (bunu ortadan kaldırmak, bahis başı maliyeti küçük bahislerde kasanın beklenen değerini aşan bir VRF oracle’ı gerektirirdi). Bunu sınırlayanlar:
- İşleme alınma tamamen kontrol edilemez: bir işlemin tam olarak hangi slot’a düşeceğine gönderen değil, ağ karar verir.
- Her girdi yayımlanır; bu nedenle gönderim gecikmesi örüntüleri ve toplam kazanma oranlarının belirtilen şanslardan her türlü sapması, herkese açık verilerden herkes tarafından ölçülebilir. Sistematik bir kötüye kullanım gizli kalamaz.
Bir Dice atışı nasıl doğrulanır?
Her oyun, bahsin kendi işleminde ihtiyacınız olan her şeyi taşıyan birDiceBetSettled olayı yayar: slothash, user, nonce, target_bps, direction, win_chance_bps, roll, multiplier_bps ve is_win, ayrıca sonuçlandırmanın tam dökümü. Doğrulamak için:
- Bahsin işlemini bir Solana gezgininde açın ve olay alanlarını okuyun (uygulamadaki Dice ekranı oturumunuzun adillik girdilerini gösterir, bahis geçmişiniz de işleme bağlantı verir).
sha256("dice" ‖ slothash ‖ user ‖ nonce)değerini yeniden hesaplayın, ilk 16 baytı big-endian olarak alıp 10.000’e göre modunu alın ve olaydakirollile karşılaştırın.- Kazandı/kaybetti kararını (Altı için
roll < target, Üstü içinroll > target) ve çarpanı yukarıdaki formülle karşılaştırın.