News

Pelayan yang adil tidak percaya sesiapa, kami pun tidak

Maksud kuasa pelayan: pelayan memegang papan, mengesahkan setiap gerakan di puncanya, dan dadu commit-reveal mengekalkan kejujuran pihak rumah sendiri.

engineeringfairnessmultiplayer

Kuasa pelayan bermaksud pelayan memegang satu-satunya salinan permainan yang dikira. Peranti anda menghantar gerakan yang anda mahu mainkan, pelayan mengujinya terhadap dadunya sendiri dan peraturannya sendiri, dan barulah papan itu berubah. Aplikasi yang diubah suai boleh mendakwa apa sahaja: kebenaran tinggal di tempat yang tidak dicapainya.

Backgammon berhak mendapat ketegasan itu. Ia permainan dadu dengan tangga dan pot, bermakna ada dua cara untuk menipu: memalsukan gerakan atau memesong lemparan. Pelayan yang adil mesti menutup kedua-dua pintu. Pintu kedua itu melibatkan kami, dan kami akan sampai ke situ.

Apa sebenarnya maksud kuasa pelayan?

Setiap permainan Orion yang sedang berjalan wujud di satu tempat: pada pelayan kami. Papan pada telefon anda ialah tingkap, bukan permainan. Apabila anda menyeret satu buah, aplikasi tidak menggerakkannya. Ia menghantar satu mesej pendek yang berkata: inilah yang saya mahu mainkan. Pelayan memainkan semula niat itu pada papannya sendiri, dengan enjin peraturannya sendiri, dengan dadu yang dilemparnya untuk giliran itu. Gerakan yang sah menggerakkan permainan ke hadapan, dan kedua-dua pemain mendapat kedudukan baharu yang sama. Gerakan yang tidak sah tidak pernah berlaku.

Itu satu pelayan untuk semua. Aplikasi iOS ialah SwiftUI asli, aplikasi Android ialah Jetpack Compose asli, dan kedua-duanya ialah tingkap ke belakang tabir yang sama dan kumpulan pemain yang sama. Kaca berbeza, kebenaran sama.

Mengapa permainan yang mempercayai klien ditipu?

Kerana peranti lawan anda milik lawan anda. Segala yang berjalan padanya boleh diubah. Klien yang ditampal boleh menghantar gerakan yang tidak pernah sah. Penyunting memori boleh menulis semula satu nombor di tempatnya, dan skrin akan memaparkan pembohongan itu dengan setia. Tiada satu pun daripada ini eksotik. Alatnya percuma, berdokumen, dan lebih tua daripada telefon pintar.

Permainan yang mempercayai klien meminta setiap pemain berjanji tidak mengintai di bawah bonet. Ada yang mengintai. Jadi kami menjadikan pendapat klien itu tidak bermakna. Dalam Orion, aplikasi mempunyai tepat tiga tugas:

  • Melukis: papan, buah, kiub, jam.
  • Meminta: meminta pelayan memainkan satu gerakan, menawarkan dabel, mengalah.
  • Menerima: memaparkan kedudukan yang dipanggil pelayan sebagai nyata.

Melempar dadu, menilai kesahan, dan menggerakkan walau satu syiling tiada dalam senarai itu. Tiada apa-apa yang menentukan keputusan lahir pada sesebuah peranti.

Apa yang berlaku apabila saya memainkan satu gerakan?

Anda bermain.. Aplikasi anda menghantar niat: buah ini, titik ini. Tiada apa-apa pada peranti anda mengubah papan yang sebenar.

Pelayan memainkannya semula.. Enjin peraturan kami menjalankan gerakan itu terhadap papan pelayan dan dadu pelayan. Jika sah, permainan bergerak ke hadapan. Jika tidak, ia ditolak di puncanya, tidak kira aplikasi mana yang menghantarnya.

Kedua-dua pihak mendapat kebenaran yang sama.. Kedudukan baharu itu keluar kepada kedua-dua pemain. Jika sambungan anda terputus, tempoh sambung semula pada jam giliran menahan tempat anda, dan anda kembali ke papan sebagaimana ia sebenarnya, bukan sebagaimana yang terakhir diingati telefon anda.

Pertaruhan mengikut peraturan yang sama. Apabila permainan bayaran masuk bermula, pelayan memegang kedua-dua bayaran itu dalam simpanan. Pot itu hidup dalam satu lejar, pada pelayan, dan diselesaikan di situ apabila permainan tamat. Tiada klien pernah ditanya berapa banyak yang disangkanya telah dimenangi. Syiling dan permata itu maya, tiada nilai dunia sebenar dan tidak boleh ditunaikan, namun kami menyimpan lejar itu seolah-olah ia mengandungi sesuatu yang berharga, kerana memang ada: kepercayaan anda kepada kedudukan papan.

Apa yang menghalang pelayan itu sendiri daripada menipu?

Itulah soalan yang betul, dan kebanyakan permainan berharap anda tidak pernah menanyakannya. Pelayan yang melempar dadu secara rahsia boleh melempar dengan baik hati untuk pihak yang dipihaknya, dan anda tidak akan pernah melihatnya. Setiap lemparan kelihatan munasabah. Begitulah dadu.

Jadi kami merampas kuasa itu daripada diri kami sendiri. Sebelum permainan bermula, pelayan menjana satu benih rahsia dan menerbitkan komitmen SHA-256 baginya. Setiap lemparan kemudian diterbitkan daripada benih itu dengan HMAC-SHA256, satu demi satu, mengikut urutan. Apabila permainan tamat, pelayan mendedahkan benih itu. Sesiapa sahaja boleh memeriksa bahawa benih itu sepadan dengan komitmen yang diberikan sebelum lemparan pertama, dan bahawa setiap lemparan dalam permainan itu terbit daripadanya. Dari sudut kriptografi, dadu anda sudah terkunci sebelum mana-mana pemain menyentuh satu buah pun. Kami tidak mungkin memesong lemparan kedua belas tanpa memecahkan janji yang kami terbitkan pada lemparan sifar.

Anda tidak perlu menerima kata-kata kami bagi mana-mana daripada ini. Pengesahan di orion.arthea.ai/verify mengira semula keseluruhan rantai itu dalam pelayar anda, dengan Web Crypto, pada mesin anda, daripada rekod awam permainan itu. Tiada akaun, tiada pemasangan. Pintu di orion.arthea.ai/go membawa pautan App Store dan Google Play serta sentiasa menunjukkan apa yang tersedia sekarang.