Provably fair: kanıtlanabilir adillik nedir
dond.win, hiçbir Deal or No Deal elinin hileli olmadığını nasıl kanıtlıyor: siz seçmeden önce yayınlanan bir SHA-256 taahhüdü, karıştırmaya eklenen kendi istemci tohumunuz, el sonunda açıklanan iki tohum ve 25 kutunun tamamını yeniden hesaplayan bir doğrulama sayfası.
Provably fair hangi sorunu çözer
Sıradan bir çevrimiçi oyunda, işletmecinin dürüstçe karıştırdığına ve siz seçtikten sonra büyük ödülün yerini değiştirmediğine güvenmek zorundasınız. Provably fair, yani kanıtlanabilir adillik, bu güvenin yerine aritmetiği koyar. İşletmeci siz harekete geçmeden önce karıştırmayı taahhüt eder, kendi girdinizle karıştırmayı etkilemenize izin verir ve sonunda her şeyi açıklar; siz de kontrol edebilirsiniz.
Bir elde neler olur
- Taahhüt. Siz bir kutu seçmeden önce sunucu gizli bir sunucu tohumu üretir ve bunun SHA-256 özetini yayınlar. Özet oyunda taahhüt olarak gösterilir. Sunucu, özet değişmeden tohumu sonradan değiştiremez.
- Sizin girdiniz. Bir istemci tohumunuz vardır. Varsayılan olarak rastgeledir; el başlamadan önce giriş panelinde kendinizinkini yazabilirsiniz. Sunucu bunu tahmin edemez.
- Karıştırma. 25 ödüllük merdiven Fisher-Yates ile karıştırılır; rastgele baytları, anahtar olarak sunucu tohumunu ve mesaj olarak istemci tohumunuzu kullanan HMAC-SHA256 üretir. İki taraf da dizilimi tek başına seçemez.
- Açıklama. El bittiğinde sunucu tohumu, taahhüdün ve istemci tohumunuzun yanında açıklanır.
- Doğrulama. Sunucu tohumunun özetini alın ve taahhütle karşılaştırın. Karıştırmayı iki tohumla yeniden çalıştırın ve her kutuyu gördüğünüzle karşılaştırın. Doğrulama sayfası ikisini de tarayıcınızda yapar; hiçbir yere hiçbir şey gönderilmez.
Algoritmanın tamamı
- commitment = SHA-256(utf8(serverSeed)), onaltılık (hex) olarak yazılır.
- block[i] = HMAC-SHA256(key = serverSeed, msg = clientSeed + “:” + i), i = 0, 1, 2 … için.
- Her blok sekiz adet big-endian 32 bit tam sayı verir; r = değer / 2^32. Bir blok tükenince sıradaki alınır.
- Sabit merdiven üzerinde Fisher-Yates: i, 24’ten 1’e inerken j = floor(r × (i + 1)), ladder[i] ile ladder[j] yer değiştirir. k numaralı kutu ladder[k] değerini alır.
Bunu herkes istediği dilde birkaç satırla yazabilir ve aynı dizilimi elde eder.
Neyi kanıtlar, neyi kanıtlamaz
Dizilimin siz seçmeden önce sabitlendiğini ve sunucu tarafından tek başına seçilmediğini kanıtlar. Gördüğünüz her teklifin gerçek tahtadan hesaplandığını kanıtlar. Olasılıkları değiştirmez: merdiven ve ücretler neyse odur, onlar da herkese açıktır. Burada adillik, size gösterilen oyunun gerçekten oynanan oyun olması demektir.
Eski bir eli kontrol etmek
Tohumlar ve taahhüt, el sonu ekranında ve geçmişinizde gösterilir. Bunları istediğiniz zaman doğrulama sayfasına yapıştırabilirsiniz.
Sık sorulan sorular
dond.win’deki Deal or No Deal hileli mi?
Her elin dizilimi, siz kutu seçmeden önce bir SHA-256 özetiyle taahhüt edilir, kendi istemci tohumunuzla karıştırılır ve el bitince açıklanır. Doğrulama sayfasında 25 kutunun tamamını kendiniz yeniden hesaplayabilirsiniz. Hileli bir dizilim bu kontrolden geçemez.
İstemci tohumu nedir, değiştirmeli miyim?
Karıştırmaya sizin katkınızdır. Varsayılan değer rastgeledir ve sunucunun dizilimi seçmesini zaten engeller. Kendinizinkini belirlerseniz el, yalnızca sizin seçtiğiniz bir değerle yeniden üretilebilir olur.
Sunucu kasanın lehine bir tohum seçebilir mi?
Taahhüt verdiği anda nihai dizilimi bilemez, çünkü istemci tohumunuz sonradan karışıma eklenir. Tohumu sonradan değiştiremez de, çünkü özet artık tutmaz.
Bir eli doğrulamak için bir yazılıma ihtiyacım var mı?
Hayır. Doğrulama sayfası SHA-256 ve HMAC-SHA256 hesaplarını tarayıcınızda yapar. Bu iki fonksiyonu sunan herhangi bir programlama dilini de kullanabilirsiniz.