engineeringfairnessmultiplayer
Otoritas di server berarti server menyimpan satu-satunya salinan permainan yang berlaku. Perangkatmu mengirim langkah yang ingin kau mainkan, server memeriksanya terhadap dadunya sendiri dan aturannya sendiri, dan baru setelah itu papan berubah. Aplikasi yang dimodifikasi boleh mengklaim apa saja: kebenarannya tinggal di tempat yang tak bisa ia jangkau.
Backgammon pantas mendapat kedisiplinan ini. Ia permainan dadu dengan tangga dan taruhan, artinya ada dua cara berbuat curang: memalsukan langkah, atau membengkokkan lemparan. Server yang adil harus menutup kedua pintu. Pintu kedua itu termasuk kami, dan kita akan sampai ke sana.
Apa arti otoritas di server sebenarnya?
Setiap pertandingan langsung Orion ada di tepat satu tempat: di server kami. Papan di ponselmu adalah jendela, bukan permainannya. Ketika kau menyeret sebuah pul, aplikasi tidak memindahkannya. Ia mengirim pesan pendek yang berbunyi: inilah yang ingin saya mainkan. Server memutar ulang niat itu pada papannya sendiri, dengan mesin aturannya sendiri, memakai dadu yang ia lempar untuk giliran itu. Langkah yang sah memajukan permainan, dan kedua pemain menerima posisi baru yang sama. Langkah yang tidak sah tidak pernah terjadi.
Ini satu server untuk semua orang. Aplikasi iOS memakai SwiftUI asli, aplikasi Android memakai Jetpack Compose asli, dan keduanya adalah jendela ke backend yang sama dan kumpulan pemain yang sama. Kaca berbeda, kebenaran sama.
Mengapa permainan yang memercayai klien bisa dicurangi?
Karena perangkat lawanmu adalah milik lawanmu. Apa pun yang berjalan di sana bisa diubah. Klien yang ditambal bisa mengirim langkah yang tak pernah sah. Penyunting memori bisa menulis ulang sebuah angka di tempatnya, dan layar akan menampilkan kebohongan itu dengan setia. Tak ada yang eksotis di sini. Alat-alatnya gratis, terdokumentasi, dan lebih tua daripada telepon pintar.
Permainan yang memercayai klien meminta setiap pemain berjanji tidak mengintip ke balik kap mesin. Sebagian akan mengintip. Maka kami membuat pendapat klien menjadi tak relevan. Di Orion aplikasi punya tepat tiga tugas:
- Menggambar: papan, pul, kubus, pengatur waktu.
- Meminta: meminta server memainkan langkah, menawarkan penggandaan, menyerah.
- Menerima: menampilkan posisi mana pun yang dikatakan server sebagai yang nyata.
Melempar dadu, menilai keabsahan, dan memindahkan satu keping pun tidak ada dalam daftar itu. Tak ada yang menentukan hasil bermula di sebuah perangkat.
Apa yang terjadi ketika aku memainkan sebuah langkah?
Kau bermain.. Aplikasimu mengirim niatnya: pul ini, titik-titik ini. Tak ada di perangkatmu yang mengubah papan yang sebenarnya.
Server memutarnya ulang.. Mesin aturan kami menjalankan langkah itu terhadap papan server dan dadu server. Kalau sah, permainan maju. Kalau tidak, ia ditolak di sumbernya, dari aplikasi mana pun ia dikirim.
Kedua pihak mendapat kebenaran yang sama.. Posisi baru dikirim ke kedua pemain. Kalau sambunganmu putus, tenggang sambung ulang pada pengatur waktu menahan kursimu, dan kau kembali ke papan sebagaimana adanya, bukan sebagaimana terakhir diingat ponselmu.
Taruhan mengikuti aturan yang sama. Ketika pertandingan berbiaya masuk dimulai, server menahan kedua taruhan. Pot itu hidup dalam satu buku besar, di server, dan diselesaikan di sana ketika permainan berakhir. Tak ada klien yang pernah diminta melaporkan berapa yang menurutnya ia menangkan. Koin dan permata bersifat maya, tanpa nilai dunia nyata dan tanpa pencairan, dan kami tetap menjalankan buku besar itu seolah ia menyimpan sesuatu yang berharga, karena memang begitu: kepercayaanmu pada skor.
Apa yang mencegah server itu sendiri berbuat curang?
Ini pertanyaan yang tepat, dan sebagian besar permainan berharap kau tak pernah mengajukannya. Server yang melempar dadu diam-diam bisa melemparnya dengan ramah untuk pihak yang ia sukai, dan kau tak akan pernah melihatnya. Setiap lemparan tampak masuk akal. Begitulah dadu bekerja.
Maka kami mengambil kuasa itu dari diri kami sendiri. Sebelum permainan dimulai, server membangkitkan benih rahasia dan menerbitkan komitmen SHA-256 atasnya. Setiap lemparan lalu diturunkan dari benih itu dengan HMAC-SHA256, satu per satu, berurutan. Ketika permainan berakhir, server membuka benihnya. Siapa pun bisa memeriksa bahwa benih itu cocok dengan komitmen yang dibuat sebelum lemparan pertama, dan bahwa setiap lemparan dalam permainan mengikuti darinya. Dalam pengertian kriptografis, dadumu sudah ditetapkan sebelum salah satu pemain menyentuh pul. Kami tak bisa membengkokkan lemparan kedua belas tanpa merusak janji yang kami terbitkan pada lemparan nol.
Kau tak perlu memercayai kata-kata kami untuk semua ini. Pemverifikasi di orion.arthea.ai/verify menghitung ulang seluruh rantainya di peramban kamu, memakai Web Crypto, di mesinmu, dari catatan publik permainan itu. Tanpa akun, tanpa pemasangan. Pintu di orion.arthea.ai/go membawa tautan App Store dan Google Play serta selalu menunjukkan apa yang tersedia sekarang.