Saya sedang berpikir tentang permainan peer-to-peer dengan mempertimbangkan koin sederhana permainan melempar.
Anda membuka versi P2PCoinFlipping Beta 2.3 Anda dan menampilkan daftar server nama pemain. Setelah memilih server terdekat, papan skor pemain paling beruntung muncul. Anda memilih pemain peringkat tertinggi dan permainan dimulai. Sejak Anda memulai pertempuran, pemain lawan memilih sisi koin, kepala, dan Anda diberikan ekor. Sebuah grafik kecil yang bagus muncul menampilkan koin jatuh akhirnya mendarat di kepala. Sayang sekali, kamu kalah.
Tapi bagaimana Anda tahu hasilnya adil?
Jika hasilnya dipilih di komputer Anda, Anda dapat mengedit program untuk memilih untuk menang dan hal yang sama berlaku untuk lawan. Gim ini tidak deterministik sehingga Anda tidak bisa memvalidasi hasilnya.
Apakah mungkin untuk memiliki beberapa agen permusuhan independen yang setuju pada peristiwa yang tidak deterministik?
sumber
Jawaban:
Prosedur ini akan melakukan pekerjaan:
hasil flip koin adalah XOR dari bit paling signifikan dari setiap angka, yaitu
(a & 1) ^ (b & 1)
Solusi alternatif:
Saya telah mengajukan pertanyaan ini di situs kriptografi dan menetapkan bahwa ini cukup aman. Rupanya ini adalah variasi pada skema Komitmen .
sumber
Ternyata agen lawan tidak hanya bisa melempar koin, tetapi agen musuh juga bisa bermain poker .
Yang mengatakan, itu cenderung sangat mahal secara komputasi, dan cukup sulit untuk mendapatkan yang benar. Mungkin tidak sebanding dengan upaya implementasi. Lihatlah berapa banyak protokol multi-pemain yang sangat rentan terhadap server jahat (yaitu: semua yang saya sadari), dan seberapa populernya protokol tersebut, dan sepertinya itu bukan penggunaan waktu yang praktis.
StarCraft II adalah contoh yang bagus. Ini adalah permainan di mana kepramukaan sangat penting, dan mengetahui apa yang dilakukan musuh dapat memberikan keuntungan yang fenomenal, dan hadiah lima digit atau lebih besar secara teratur bergantung pada hasilnya. . . namun kedua komputer memiliki seluruh kondisi permainan yang disimpan setiap saat! Itu sepele untuk menulis sebuah program yang memungkinkan Anda menonton lawan secara langsung dan mendapatkan kaki besar pada mereka.
Ternyata, tidak ada pesaing serius yang menggunakan program ini. Terlalu mudah dideteksi ("hei, Jim, bagaimana Anda selalu tahu apa yang saya bangun saat saya membangunnya?") Dan tidak sepadan dengan masalahnya.
Yang mengatakan, jika Anda ingin info lebih lanjut, Anda akan ingin melihat ke dalam kriptografi secara detail - ini tidak benar-benar dalam bidang pengembangan game.
sumber