News

A tisztességes szerver senkiben nem bízik, bennünk sem

Mit jelent a szerveroldali fennhatóság: a szerver tartja a táblát, a forrásnál hitelesít minden lépést, a commit-reveal kocka a házat is tisztán tartja.

engineeringfairnessmultiplayer

A szerveroldali fennhatóság azt jelenti, hogy a szerver őrzi a parti egyetlen példányát, amely számít. Az eszközöd elküldi a lépést, amit játszani szeretnél, a szerver összeveti a saját kockáival és a saját szabályaival, és csak azután változik a tábla. Egy módosított alkalmazás bármit állíthat: az igazság ott lakik, ahová nem ér el.

Az ostábla kiérdemli ezt a szigort. Kockajáték ranglétrával és téttel, ami azt jelenti, hogy kétféleképpen lehet csalni: hamisítani a lépéseket, vagy hajlítani a dobásokat. A tisztességes szervernek mindkét ajtót be kell csuknia. A második minket is magában foglal, és oda is eljutunk.

Mit jelent valójában a szerveroldali fennhatóság?

Minden élő Orion-meccs pontosan egy helyen létezik: a mi szerverünkön. A telefonodon lévő tábla ablak, nem a parti. Amikor bábut húzol, az alkalmazás nem mozgatja. Rövid üzenetet küld, ami azt mondja: ezt szeretném játszani. A szerver ezt a szándékot a saját tábláján, a saját szabálymotorjával, az arra a körre általa dobott kockákkal játssza le újra. A szabályos lépések viszik előre a partit, és mindkét játékos ugyanazt az új állást kapja. A szabálytalan lépések soha nem történtek meg.

Ez egy szerver mindenkinek. Az iOS-alkalmazás natív SwiftUI, az Android-alkalmazás natív Jetpack Compose, és mindkettő ugyanarra a háttérrendszerre és ugyanarra a játékosbázisra nyíló ablak. Más üveg, ugyanaz az igazság.

Miért csalják meg a kliensben bízó játékokat?

Mert az ellenfeled eszköze az ellenfeledé. Bármi, ami rajta fut, megváltoztatható. Egy foltozott kliens küldhet olyan lépéseket, amelyek sosem voltak szabályosak. Egy memóriaszerkesztő helyben átírhat egy számot, és a képernyő hűen megjeleníti a hazugságot. Ebből semmi nem egzotikus. Az eszközök ingyenesek, dokumentáltak, és öregebbek az okostelefonoknál.

Egy kliensben bízó játék arra kéri minden játékosát, hogy ígérje meg, nem néz a motorháztető alá. Néhányan megnézik. Ezért tettük a kliens véleményét lényegtelenné. Az Orionban az alkalmazásnak pontosan három feladata van:

  • Rajzolni: a táblát, a bábukat, a duplázókockát, az órát.
  • Kérni: megkérni a szervert egy lépés lejátszására, duplázást ajánlani, feladni.
  • Fogadni: megjeleníteni azt az állást, amit a szerver valósnak nevez.

A kockadobás, a szabályosság megítélése és akár egyetlen érme mozgatása nincs ezen a listán. Semmi, ami eredményt dönt el, nem az eszközön születik.

Mi történik, amikor lépek egyet?

Te lépsz.. Az alkalmazásod elküldi a szándékot: ez a bábu, ezek a pontok. Semmi az eszközödön nem változtatja meg a valódi táblát.

A szerver lejátssza újra.. A szabálymotorunk a szerver tábláján és a szerver kockáin futtatja le a lépést. Ha szabályos, a parti halad tovább. Ha nem, a forrásnál elutasítjuk, bármelyik alkalmazás küldte is.

Mindkét fél ugyanazt az igazságot kapja.. Az új állás mindkét játékoshoz kimegy. Ha megszakad a kapcsolatod, az óra újracsatlakozási türelmi ideje megtartja a helyed, és a táblához olyannak térsz vissza, amilyen valójában, nem amilyennek a telefonod utoljára emlékezett.

A tétek ugyanezt a szabályt követik. Amikor nevezési díjas meccs indul, a szerver mindkét tétet letétbe veszi. A kassza egyetlen főkönyvben él, a szerveren, és ott számolódik el a parti végén. Egyetlen klienst sem kérdezünk meg soha, mennyit hisz nyertnek. Az érmék és a drágakövek virtuálisak, valós értékük nincs, kifizetés nincs, és mi mégis úgy vezetjük azt a főkönyvet, mintha valami értékeset őrizne, mert őriz: a pontszámba vetett bizalmadat.

Mi akadályozza meg magát a szervert a csalásban?

Ez a helyes kérdés, és a legtöbb játék abban reménykedik, hogy sosem teszed fel. Egy titokban kockát dobó szerver kedvesen dobhatna annak, akit előnyben részesít, és te sosem látnád. Minden dobás hihetőnek tűnik. A kocka már csak ilyen.

Ezért vettük el ezt a hatalmat saját magunktól. Mielőtt a parti elkezdődne, a szerver titkos magot állít elő, és SHA-256 elköteleződést tesz közzé rá. Ezután minden dobás HMAC-SHA256-tal származik abból a magból, egyesével, sorrendben. Amikor a parti véget ér, a szerver felfedi a magot. Bárki ellenőrizheti, hogy a mag egyezik-e az első dobás előtt tett elköteleződéssel, és hogy a parti minden dobása következik-e belőle. Kriptográfiai értelemben a kockáid azelőtt rögzültek, hogy bármelyik játékos bábuhoz nyúlt volna. Nem tudnánk elhajlítani a tizenkettedik dobást anélkül, hogy eltörnénk a nulladiknál közzétett ígéretet.

Ezek egyikében sem kell a szavunkra hagyatkoznod. Az orion.arthea.ai/verify oldalon lévő ellenőrző a te böngésződben, Web Cryptóval, a te gépeden, a parti nyilvános jegyzőkönyvéből számolja újra a teljes láncot. Fiók nélkül, telepítés nélkül. Az orion.arthea.ai/go ajtó viszi az App Store és a Google Play hivatkozásait, és mindig azt mutatja, ami épp most elérhető.