News

Férový server neverí nikomu, ani nám

Čo znamená autorita na serveri: server drží dosku, overuje každý ťah pri zdroji a kocky commit-reveal držia poctivý aj samotný podnik.

engineeringfairnessmultiplayer

Autorita na serveri znamená, že server drží jedinú kópiu partie, na ktorej záleží. Tvoje zariadenie pošle ťah, ktorý chceš zahrať, server ho porovná s vlastnými kockami a vlastnými pravidlami, a až potom sa doska zmení. Upravená aplikácia môže tvrdiť čokoľvek: pravda býva tam, kam nedosiahne.

Vrhcáby si túto prísnosť zaslúžia. Je to hra s kockami, rebríčkom a bankom, čo znamená, že podvádzať sa dá dvoma spôsobmi: falšovať ťahy, alebo ohýbať hody. Férový server musí zatvoriť obe dvere. Tie druhé zahŕňajú aj nás, a k tomu sa dostaneme.

Čo autorita na serveri vlastne znamená?

Každý živý zápas Orionu existuje na jedinom mieste: na našom serveri. Doska v tvojom telefóne je okno, nie partia. Keď ťaháš kameň, aplikácia ním nehýbe. Pošle krátku správu, ktorá hovorí: toto chcem zahrať. Server ten zámer prehrá na vlastnej doske, vlastným pravidlovým jadrom, s kockami, ktoré pre to kolo hodil. Legálne ťahy posunú partiu ďalej a obaja hráči dostanú tú istú novú pozíciu. Nelegálne ťahy sa nikdy nestali.

Je to jeden server pre všetkých. Aplikácia pre iOS je natívne SwiftUI, pre Android natívne Jetpack Compose, a obe sú oknami do toho istého zázemia a tej istej množiny hráčov. Iné sklo, tá istá pravda.

Prečo sa v hrách dôverujúcich klientovi podvádza?

Pretože súperovo zariadenie patrí súperovi. Čokoľvek na ňom beží, sa dá zmeniť. Záplatovaný klient môže posielať ťahy, ktoré nikdy neboli legálne. Editor pamäte vie prepísať číslo na mieste a obrazovka tú lož verne zobrazí. Nič z toho nie je exotické. Nástroje sú zadarmo, zdokumentované a staršie než smartfóny.

Hra, ktorá verí klientovi, žiada každého hráča, aby sľúbil, že sa nepozrie pod kapotu. Niekto sa pozrie. Tak sme názor klienta spravili bezvýznamným. V Orione má aplikácia presne tri úlohy:

  • Kresliť: dosku, kamene, kocku zdvojenia, časomieru.
  • Žiadať: požiadať server o zahranie ťahu, ponúknuť zdvojenie, vzdať sa.
  • Prijímať: zobraziť pozíciu, ktorú server označí za skutočnú.

Hádzanie kockami, posudzovanie legality a posunutie čo i len jednej mince na tom zozname nie sú. Nič, čo rozhoduje o výsledku, nevzniká na zariadení.

Čo sa stane, keď zahrám ťah?

Ty zahráš.. Tvoja aplikácia pošle zámer: tento kameň, tieto body. Nič na tvojom zariadení nemení skutočnú dosku.

Server ho prehrá.. Naše pravidlové jadro pustí ťah proti doske servera a kockám servera. Ak je legálny, partia postúpi. Ak nie, je odmietnutý pri zdroji, nech ho poslala akákoľvek aplikácia.

Obe strany dostanú tú istú pravdu.. Nová pozícia ide obom hráčom. Ak ti vypadne spojenie, lehota na opätovné pripojenie v časomiere ti podrží miesto a vrátiš sa k doske takej, aká naozaj je, nie akú si ju naposledy pamätal tvoj telefón.

Stávky sa riadia tým istým pravidlom. Keď sa začne zápas so vkladom, server oba vklady zadrží. Bank žije v jedinej knihe, na serveri, a tam sa po konci partie vyrovná. Žiadny klient nie je nikdy opýtaný, koľko si myslí, že vyhral. Mince a drahokamy sú virtuálne, bez hodnoty v skutočnom svete a bez výplaty, a tú knihu napriek tomu vedieme, akoby v nej ležalo niečo cenné, pretože áno: tvoja dôvera v skóre.

Čo bráni podvádzať samotnému serveru?

To je tá správna otázka a väčšina hier dúfa, že ju nikdy nepoložíš. Server, ktorý hádže kockami potajme, by mohol hádzať vľúdne tomu, komu nadŕža, a ty by si to nikdy nevidel. Každý hod vyzerá vierohodne. Také kocky sú.

Tak sme si tú moc sami sebe vzali. Skôr než partia začne, server vygeneruje tajné semienko a zverejní naň záväzok SHA-256. Každý hod sa potom z toho semienka odvodí pomocou HMAC-SHA256, jeden po druhom, po poradí. Keď partia skončí, server semienko odhalí. Ktokoľvek si môže overiť, že semienko sedí so záväzkom urobeným pred prvým hodom a že z neho vyplýva každý hod partie. V kryptografickom zmysle boli tvoje kocky dané skôr, než sa ktorýkoľvek hráč dotkol kameňa. Nemohli by sme ohnúť dvanásty hod bez toho, aby sme porušili sľub zverejnený pri hode nultom.

V ničom z toho nemusíš veriť nášmu slovu. Overovač na orion.arthea.ai/verify prepočíta celú reťaz v tvojom prehliadači, pomocou Web Crypto, na tvojom stroji, z verejného záznamu partie. Bez účtu, bez inštalácie. Dvere na orion.arthea.ai/go nesú odkazy na App Store a Google Play a vždy ukazujú, čo je dostupné práve teraz.