fairnessprovably fairdice
Ja, det kan det. Terninger online kastes på en server, du ikke ser, og intet forhindrer fysisk en operatør i at ændre et tal, før det når dit bræt. Resultaterne alene vil aldrig bevise noget i nogen retning, så det ærlige spørgsmål er ikke, om rigning er mulig. Det er, om et spil kan bevise, at den ikke fandt sted.
Vi laver et backgammonspil, så vi er ikke neutrale her. Netop derfor vil vi svare ordentligt, også på de ubehagelige dele.
Hvorfor føles terningerne riggede på hver eneste side?
Fordi variansen i backgammon er ubarmhjertig, og den menneskelige hukommelse er skæv. To terninger kan falde på seksogtredive måder; serier er ikke en fejl, de er en garanti, og et sted i aften slår en ærlig server fire dobbelte i træk mod en, der har spillet hver brik rigtigt. Du husker 5-5, der ramte din blotte. Du husker ikke mirakelkastet, der reddede dig i tirsdags. Nederlag sidder fast, undslip fordamper, og efter tre dårlige partier i træk bliver terningerne personlige. De bliver også personlige ved et rigtigt bræt på en rigtig café. Spørg en, der har skubbet træbrikker i fyrre år.
Og her er fælden. Et rigget spil ville føles nøjagtigt ligesådan. Serier beviser intet i nogen retning, så hvis dit bevis er, hvordan terningerne føltes, kan du ikke skelne en ærlig server fra en uærlig. Det kan vi heller ikke. Det er ikke et forsvar for terninger online. Det er netop deres problem.
Kunne en side virkelig styre sine terninger?
Teknisk ja, og det ville ikke engang være svært. Serveren ser hele brættet, før den kaster. En operatør, der ville snyde, kunne:
- Vippe nogle få kast per hundrede i de øjeblikke, der vejer tungest: kastet der rammer, indgangen fra baren der mislykkes, dobbelten der vender et tabt parti.
- Holde partier kunstigt tætte, så sessioner varer længere og nederlag føles som lige ved og næsten.
- Stille og roligt begunstige den side, operatøren har interesse i.
- Gøre det sjældent nok til, at terningerne stadig består enhver statistisk test, en spiller nogensinde kan køre.
Vi påstår ikke, at nogen bestemt side gør dette. Vi siger, at arkitekturen tillader det. En lukket server er et aflåst rum: operatøren kaster i enrum, melder et tal og beder dig stole på det. Udefra døren ser ærlige og uærlige operatører identiske ud.
Beviser en certificeret generator ikke, at terningerne er fair?
Læs, hvad certifikatet faktisk dækker. Et laboratorium tester en generator: en algoritme på bænken, der producerer millioner af tal, som består statistiske kontroller. Det certificerer komponenten. Det siger intet om leveringen, altså om tallet, der nåede dit bræt, kom fra den generator, i det øjeblik, uændret undervejs. En kalibreret vægt på lageret beviser ikke, at dit brød blev vejet på den.
Certificering er desuden et øjebliksbillede. Kørende servere udrulles på ny hele tiden, og kodestien mellem generatoren og dit parti bliver ved med at ændre sig længe efter, laboratoriet er gået hjem. Certificeret generator svarer altså på et spørgsmål, ingen egentlig stillede. Det, der tæller, er ikke, om der findes gode terninger et sted i bygningen. Det er, om dit parti fik dem, ved hvert eneste kast, i aften.
Hvad ændrer commit-reveal egentlig?
Det flytter fairness fra løfte til bevis. Før et parti begynder, trækker serveren et hemmeligt frø og offentliggør dets fingeraftryk, en SHA-256-hash kaldet tilsagnet. Hvert kast i partiet udledes derefter af det frø, én HMAC-SHA256-beregning per kast, i rækkefølge. Når partiet slutter, afslører serveren frøet.
Nu kan enhver tjekke to ting. Hash det afslørede frø: det skal stemme med tilsagnet, der blev offentliggjort før første træk. Genberegn kastene: de skal stemme med hvert eneste tal, der dukkede op på brættet. Hvis serveren havde ændret bare én terning efter at have set din stilling, ville regnestykket ikke gå op. Rigning holder op med at være en mistanke, du ikke kan afprøve, og bliver en løgn, du kan gribe.
Terninger, der blev låst før partiet, kan ikke reagere på det.
Det er kernen. Den nyttige slags rigning er reaktiv: se blotten, slå rammeren. Commit-reveal tager øjnene fra serveren, fordi hele følgen lå fast før åbningstrækket, og ethvert indgreb efter tilsagnet er matematisk påviseligt. Hvad det ikke gør, er at gøre terningerne venlige. Følgen var ærlig, ikke barmhjertig. Du kommer stadig til at sidde på baren på det værst tænkelige tidspunkt, og nu vil du kunne bevise, at det var fair.
Hvordan verificerer man et parti i praksis?
Sådan byggede vi det i Orion. Hvert parti spillet på vores servere bærer et tilsagn afgivet før første kast, serveren validerer hvert træk ved kilden, og at tjekke et afsluttet parti tager omkring et minut:
Åbn verifikationen. Gå til orion.arthea.ai/verify i en hvilken som helst browser. Intet at installere, ingen konto at oprette.
Indtast partiets id. Hvert serverparti i Orion har et. Sæt det ind.
Lad browseren regne. Siden genberegner tilsagnet og hvert kast med Web Crypto, lokalt, i din browser. Vores ord indgår ikke i kontrollen. Hvis blot ét tal var blevet ændret, ville genberegningen sige det.
Verifikationen kører allerede i dag. Selve spillet er færdigt, og døren på orion.arthea.ai/go bærer links til App Store og Google Play og viser altid, hvad der er tilgængeligt lige nu. Uanset hvad står det ærlige svar fast. Ja, backgammon online kan være rigget. Kuren er ikke et pænere løfte. Det er terninger, der viser deres regnestykke.