News

Voiko verkkobackgammon olla viritetty?

Voi. Suljettu palvelin voi ohjata noppia, eivätkä tulokset yksin todista mitään. Miltä virittäminen näyttää ja miksi commit-reveal paljastaa sen.

fairnessprovably fairdice

Voi olla. Verkossa nopat heitetään palvelimella, jota et näe, eikä mikään fyysinen este estä ylläpitäjää muuttamasta lukua ennen kuin se saapuu laudallesi. Tulokset yksin eivät koskaan todista mitään suuntaan tai toiseen, joten rehellinen kysymys ei ole se, onko virittäminen mahdollista. Se on se, voiko peli todistaa, ettei sitä tapahtunut.

Teemme itse backgammonpeliä, joten emme ole tässä puolueettomia. Juuri siksi haluamme vastata kunnolla, myös epämukavilta osin.

Miksi nopat tuntuvat viritetyiltä joka ainoalla sivustolla?

Koska backgammonin varianssi on armoton ja ihmisen muisti on vinossa. Kaksi noppaa voi asettua kolmellakymmenelläkuudella tavalla; putket eivät ole vika, ne ovat takuu, ja jossain tänä iltana rehellinen palvelin heittää neljä tuplaa peräkkäin jotakuta vastaan, joka pelasi jokaisen kiekon oikein. Muistat sen 5-5:n, joka osui yksinäiseen kiekkoosi. Et muista ihmeheittoa, joka pelasti sinut viime tiistaina. Tappiot jäävät, pelastukset haihtuvat, ja kolmen huonon pelin jälkeen nopista tulee henkilökohtaisia. Ne muuttuvat henkilökohtaisiksi myös oikealla laudalla oikeassa kahvilassa. Kysy keneltä tahansa, joka on työntänyt puisia kiekkoja neljäkymmentä vuotta.

Ja tässä on ansa. Viritetty peli tuntuisi täsmälleen samalta. Putket eivät todista mitään suuntaan tai toiseen, joten jos todisteesi on se, miltä nopat tuntuivat, et voi erottaa rehellistä palvelinta epärehellisestä. Emme voi mekään. Se ei ole verkkonoppien puolustus. Se on juuri niiden ongelma.

Voisiko sivusto oikeasti ohjata noppiaan?

Teknisesti voisi, eikä se olisi edes vaikeaa. Palvelin näkee koko laudan ennen kuin se heittää. Ylläpitäjä, joka haluaisi huijata, voisi:

  • Kallistaa muutamaa heittoa sadasta juuri niissä hetkissä, jotka painavat eniten: osuvaa heittoa, epäonnistuvaa tuloa palkilta, tuplaa joka kääntää hävityn pelin.
  • Pitää ottelut keinotekoisen tasaisina, jolloin istunnot venyvät ja tappiot tuntuvat läheltä piti -voitoilta.
  • Suosia hiljaisesti sitä puolta, jossa ylläpitäjällä on etu.
  • Tehdä sen niin harvoin, että nopat läpäisevät silti minkä tahansa tilastollisen testin, jonka pelaaja voi koskaan ajaa.

Emme väitä minkään tietyn sivuston tekevän näin. Sanomme, että arkkitehtuuri sallii sen. Suljettu palvelin on lukittu huone: ylläpitäjä heittää yksin, ilmoittaa luvun ja pyytää sinua uskomaan. Oven ulkopuolelta rehelliset ja epärehelliset ylläpitäjät näyttävät samanlaisilta.

Eikö sertifioitu generaattori todista noppien reiluutta?

Lue mitä sertifikaatti oikeasti kattaa. Laboratorio testaa generaattoria: algoritmia penkissä, joka tuottaa miljoonia lukuja, jotka läpäisevät tilastolliset kokeet. Se sertifioi osan. Se ei sano mitään toimituksesta, eli siitä, tuliko laudallesi saapunut luku siitä generaattorista, sillä hetkellä, muuttumattomana matkalla. Varastolla kalibroitu vaaka ei todista, että leipäsi punnittiin sillä.

Sertifiointi on lisäksi tilannekuva. Tuotantopalvelimia julkaistaan uudelleen jatkuvasti, ja koodipolku generaattorin ja pelisi välillä jatkaa muuttumistaan pitkään sen jälkeen, kun laboratorio on lähtenyt kotiin. Sertifioitu generaattori vastaa siis kysymykseen, jota kukaan ei oikeastaan esittänyt. Merkitystä ei ole sillä, onko rakennuksessa jossain hyviä noppia. Merkitystä on sillä, saiko pelisi ne, joka ainoalla heitolla, tänä iltana.

Mitä commit-reveal oikeasti muuttaa?

Se siirtää reiluuden lupauksesta todisteeksi. Ennen pelin alkua palvelin arpoo salaisen siemenen ja julkaisee sen sormenjäljen, SHA-256-tiivisteen, jota kutsutaan sitoumukseksi. Jokainen pelin heitto johdetaan sitten siitä siemenestä, yksi HMAC-SHA256-laskenta heittoa kohti, järjestyksessä. Kun peli päättyy, palvelin paljastaa siemenen.

Nyt kuka tahansa voi tarkistaa kaksi asiaa. Tiivistä paljastettu siemen: sen on täsmättävä sitoumukseen, joka julkaistiin ennen ensimmäistä siirtoa. Laske heitot uudelleen: niiden on täsmättävä joka ainoaan lukuun, joka laudalla näkyi. Jos palvelin olisi muuttanut edes yhtä noppaa nähtyään asemasi, laskelma ei täsmäisi. Virittäminen lakkaa olemasta epäilys, jota et voi koetella, ja muuttuu valheeksi, jonka voit ottaa kiinni itse teossa.

Nopat, jotka lukittiin ennen peliä, eivät voi reagoida siihen.

Se on ydin. Hyödyllinen virittämisen laji on reaktiivista: näe yksinäinen kiekko, heitä osuma. Commit-reveal ottaa palvelimelta silmät, koska koko sarja oli lyöty lukkoon ennen avaussiirtoa, ja mikä tahansa puuttuminen sitoumuksen jälkeen on matemaattisesti havaittavissa. Se ei tee nopista ystävällisiä. Sarja oli rehellinen, ei armelias. Joudut yhä palkille pahimmalla mahdollisella hetkellä, ja nyt pystyt todistamaan, että se oli reilua.

Miten peli varmennetaan käytännössä?

Näin rakensimme sen Orioniin. Jokainen palvelimillamme pelattu peli kantaa sitoumusta, joka annettiin ennen ensimmäistä heittoa, palvelin tarkistaa jokaisen siirron lähteellä, ja päättyneen pelin tarkistaminen vie noin minuutin:

Avaa varmennus. Mene osoitteeseen orion.arthea.ai/verify millä tahansa selaimella. Mitään ei asenneta, tiliä ei tarvita.

Syötä pelin tunnus. Jokaisella Orionin palvelinpelillä on sellainen. Liitä se kenttään.

Anna selaimen laskea. Sivu laskee sitoumuksen ja jokaisen heiton uudelleen Web Cryptolla, paikallisesti, sinun selaimessasi. Meidän sanamme ei ole osa tarkistusta. Jos yhtäkin lukua olisi muutettu, uudelleenlaskenta kertoisi sen.

Varmennus on käytössä jo tänään. Peli itsessään on valmis, ja ovi osoitteessa orion.arthea.ai/go kantaa App Storen ja Google Playn linkit ja näyttää aina, mikä on juuri nyt saatavilla. Joka tapauksessa rehellinen vastaus pysyy. Kyllä, verkkobackgammon voi olla viritetty. Lääke ei ole kauniimpi lupaus. Se ovat nopat, jotka näyttävät laskutoimituksensa.