fairnessprovably fairdice
Ya, boleh. Dadu dalam talian dilempar pada pelayan yang anda tidak nampak, dan tiada apa-apa secara fizikal menghalang pengendali daripada menukar satu nombor sebelum ia sampai ke papan anda. Keputusan semata-mata tidak akan pernah membuktikan apa-apa ke mana-mana arah, jadi soalan yang jujur bukanlah sama ada penipuan itu mungkin. Soalannya ialah sama ada sesebuah permainan boleh membuktikan bahawa ia tidak berlaku.
Kami sendiri membina permainan backgammon, jadi kami tidak berkecuali di sini. Justeru itulah kami mahu menjawabnya dengan betul, termasuk bahagian yang tidak selesa.
Mengapa dadu terasa dipesong di setiap laman?
Kerana varians dalam backgammon tidak berbelas kasihan, dan ingatan manusia itu senget. Dua dadu boleh jatuh dalam tiga puluh enam cara; rentetan bukan kerosakan, ia satu jaminan, dan di suatu tempat malam ini sebuah pelayan yang jujur akan melempar empat kali dabel berturut-turut terhadap seseorang yang menggerakkan setiap buah dengan betul. Anda ingat 5-5 yang mengena buah tunggal anda. Anda tidak ingat lemparan ajaib yang menyelamatkan anda Selasa lepas. Kekalahan melekat, penyelamatan menguap, dan selepas tiga permainan buruk berturut-turut dadu menjadi peribadi. Ia menjadi peribadi juga di papan sebenar di kedai kopi sebenar. Tanyalah sesiapa yang telah menolak buah kayu selama empat puluh tahun.
Dan di sinilah perangkapnya. Permainan yang dipesong akan terasa persis sama. Rentetan tidak membuktikan apa-apa ke mana-mana arah, jadi jika bukti anda ialah bagaimana dadu itu terasa, anda tidak dapat membezakan pelayan jujur daripada pelayan tidak jujur. Kami pun tidak dapat. Itu bukan pembelaan untuk dadu dalam talian. Itulah masalahnya.
Bolehkah sebuah laman benar-benar memesong dadunya?
Secara teknikal ya, dan ia pun tidak sukar. Pelayan melihat seluruh papan sebelum ia melempar. Pengendali yang mahu menipu boleh:
- Memesong beberapa lemparan daripada seratus pada saat yang paling berat: lemparan yang mengena, kemasukan dari bar yang gagal, dabel yang membalikkan permainan yang sudah kalah.
- Mengekalkan perlawanan rapat secara buatan, supaya sesi menjadi panjang dan kekalahan terasa seperti hampir menang.
- Diam-diam memihak kepada pihak yang menguntungkan pengendali.
- Melakukannya cukup jarang sehingga dadu itu tetap lulus mana-mana ujian statistik yang mampu dijalankan oleh seorang pemain.
Kami tidak mendakwa mana-mana laman tertentu berbuat begini. Kami berkata bahawa seni binanya membenarkannya. Pelayan tertutup ialah sebuah bilik berkunci: pengendali melempar sendirian, mengumumkan satu nombor, dan meminta anda percaya. Dari luar pintu, pengendali jujur dan tidak jujur kelihatan serupa.
Bukankah penjana bertauliah membuktikan dadu itu adil?
Bacalah apa yang sebenarnya dilindungi oleh sijil itu. Sebuah makmal menguji penjana: satu algoritma di atas meja yang menghasilkan berjuta nombor yang lulus pemeriksaan statistik. Ia mentauliahkan komponen itu. Ia tidak berkata apa-apa tentang penghantaran, iaitu sama ada nombor yang sampai ke papan anda datang daripada penjana itu, pada saat itu, tanpa diubah di sepanjang jalan. Penimbang yang ditentukur di gudang tidak membuktikan roti anda ditimbang dengannya.
Pentauliahan juga hanyalah satu gambar sesaat. Pelayan yang beroperasi disebar semula sepanjang masa, dan laluan kod antara penjana dengan permainan anda terus berubah lama selepas makmal itu pulang. Jadi penjana bertauliah menjawab soalan yang sebenarnya tiada siapa tanya. Yang penting bukanlah sama ada wujud dadu yang baik di suatu sudut bangunan. Yang penting ialah sama ada permainan anda mendapatnya, pada setiap lemparan, malam ini.
Apa sebenarnya yang diubah oleh commit-reveal?
Ia memindahkan keadilan daripada janji kepada bukti. Sebelum permainan bermula, pelayan mengambil satu benih rahsia dan menerbitkan cap jarinya, satu cincangan SHA-256 yang dipanggil komitmen. Setiap lemparan dalam permainan itu kemudian diterbitkan daripada benih tersebut, satu pengiraan HMAC-SHA256 bagi setiap lemparan, mengikut urutan. Apabila permainan tamat, pelayan mendedahkan benih itu.
Kini sesiapa sahaja boleh memeriksa dua perkara. Cincangkan benih yang didedahkan: ia mesti sepadan dengan komitmen yang diterbitkan sebelum gerakan pertama. Kira semula lemparan: ia mesti sepadan dengan setiap nombor yang muncul di papan. Jika pelayan mengubah walau satu dadu selepas melihat kedudukan anda, kiraan itu tidak akan menjadi. Penipuan berhenti menjadi syak yang tidak boleh anda uji, dan bertukar menjadi pembohongan yang boleh anda tangkap sedang berlaku.
Dadu yang dikunci sebelum permainan tidak boleh bertindak balas terhadapnya.
Itulah intinya. Jenis penipuan yang berguna bersifat reaktif: lihat buah tunggal, lempar yang mengena. Commit-reveal merampas mata daripada pelayan, kerana keseluruhan urutan sudah terkunci sebelum gerakan pembuka, dan sebarang campur tangan selepas komitmen boleh dikesan secara matematik. Apa yang ia tidak lakukan ialah menjadikan dadu itu baik hati. Urutan itu jujur, bukan penyayang. Anda tetap akan tersangkut di bar pada saat paling teruk, dan kini anda boleh membuktikan bahawa ia adil.
Bagaimana sesebuah permainan disahkan dalam praktik?
Beginilah kami membinanya dalam Orion. Setiap permainan yang dimainkan pada pelayan kami membawa satu komitmen yang diberikan sebelum lemparan pertama, pelayan mengesahkan setiap gerakan di puncanya, dan memeriksa permainan yang sudah tamat mengambil kira-kira satu minit:
Buka halaman pengesahan. Pergi ke orion.arthea.ai/verify dengan mana-mana pelayar. Tiada apa-apa untuk dipasang, tiada akaun untuk dibuka.
Masukkan id permainan. Setiap permainan pelayan dalam Orion mempunyainya. Tampalkan sahaja.
Biarkan pelayar mengira. Halaman itu mengira semula komitmen dan setiap lemparan menggunakan Web Crypto, secara setempat, dalam pelayar anda. Kata-kata kami bukan sebahagian daripada pemeriksaan itu. Jika satu nombor pun telah diubah, pengiraan semula akan memberitahunya.
Pengesahan itu sudah beroperasi hari ini. Permainannya sendiri sudah siap, dan pintu di orion.arthea.ai/go membawa pautan App Store dan Google Play serta sentiasa menunjukkan apa yang tersedia sekarang. Apa pun, jawapan yang jujur kekal. Ya, backgammon dalam talian boleh dipesong. Ubatnya bukan janji yang lebih cantik. Ubatnya ialah dadu yang menunjukkan kiraannya.