provably fairdiceguide
Kości w tryktraku weryfikuje się obietnicą złożoną przed partią i sprawdzoną po niej. Orion publikuje zobowiązanie SHA-256 na tajne ziarno przed twoim pierwszym rzutem, ujawnia ziarno, gdy partia się kończy, i pozwala twojej przeglądarce przeliczyć każdy rzut na orion.arthea.ai/verify samym identyfikatorem partii. Jeśli wszystko się zgadza, kości były ustalone przed rozpoczęciem gry i nikt, łącznie z nami, nimi nie sterował.
Każdy gracz online zna to uczucie. Tańczysz na bandzie przez trzy tury. Przeciwnik znajduje jedyną liczbę, która trafia i kryje. Przy drewnianej planszy wzruszyłbyś ramionami, bo widziałeś, jak kości wypadają z kubka. Online prosi się cię o zaufanie liczbie, której powstania nigdy nie widziałeś. Nie chcieliśmy prosić o to zaufanie. Chcieliśmy uczynić je sprawdzalnym.
Co właściwie znaczy commit-reveal?
Wyobraź sobie zapieczętowaną kopertę. Zanim usiądziesz, dom zapisuje w niej wszystkie kości wieczoru, pieczętuje ją i wręcza ci zdjęcie pieczęci. Gdy gra się kończy, koperta zostaje otwarta. Jeśli zawartość zgadza się z pieczęcią, rzuty istniały przed partią i nic nie mogło zostać wybrane w trakcie na twoją niekorzyść. Commit-reveal to właśnie ta koperta, zbudowana z arytmetyki. Pieczęcią jest skrót SHA-256, a nikt nie potrafi wytworzyć innego ziarna, które by mu odpowiadało. Cztery kroki przenoszą dowód z naszego serwera do twojej przeglądarki.
Przed partią. Serwer losuje tajne ziarno i przepuszcza je przez SHA-256. Ten skrót to zobowiązanie, dołączane do twojej partii przed pierwszym rzutem. Od tej chwili kości całej partii są już przesądzone. Serwer opublikował obietnicę, której nie może już edytować.
W trakcie partii. Każdy rzut jest wyprowadzany z ziarna przez HMAC-SHA256: na wejściu ziarno i numer rzutu, na wyjściu dwie kości. Pozycja, wynik, kostka podwojenia, kto zaraz wygra: nic z tego nie wchodzi do obliczenia. Serwer nie wybiera rzutów. Odczytuje listę, do której zobowiązał się, zanim zagrałeś.
Gdy partia się kończy. Ziarno zostaje ujawnione i zapisane wraz z zapisem partii. To moment otwarcia koperty. Każdy może zahaszować ujawnione ziarno i porównać je z zobowiązaniem opublikowanym przed pierwszym ruchem, a oba muszą być identyczne.
Sprawdź sam. Otwórz orion.arthea.ai/verify w dowolnej przeglądarce i wpisz identyfikator partii. Strona przelicza wszystko lokalnie przy użyciu Web Crypto, kryptografii wbudowanej w samą przeglądarkę: najpierw SHA-256 ujawnionego ziarna wobec pierwotnego zobowiązania, potem każdy rzut partii, kość po kości. Bez konta, bez aplikacji, około minuty.
Pełna zgodność ustala trzy fakty naraz:
- Ujawnione ziarno haszuje się dokładnie do zobowiązania opublikowanego przed pierwszym rzutem
- Każdy rzut partii wywodzi się z tego ziarna przez HMAC-SHA256, więc niczego nie przerzucono ani nie podmieniono
- Kości nigdy nie były dostrajane do pozycji, do wyniku ani do gracza
Czego dowiodłaby niezgodność?
Niezgodność nie byłaby błędem wyświetlania. Byłaby dowodem. Jeśli ujawnione ziarno nie haszuje się do zobowiązania, kości zmieniono po rozpoczęciu partii. Jeśli choć jeden rzut nie przechodzi kontroli HMAC, kości, które widziałeś, nie były kośćmi, do których się zobowiązano. Każde z tych niepowodzeń to dowód manipulacji, który każdy może odtworzyć z tego samego zapisu, na dowolnej maszynie, na zawsze.
I właśnie dlatego nigdy nie powinieneś jej zobaczyć. Zobowiązanie publikowane jest najpierw, zanim ruszy się jeden pionek. Dom, który chciałby ustawić tę partię, musiałby z góry opublikować dowód własnego oszustwa, a potem wręczyć każdemu graczowi narzędzia do jego znalezienia. Nie prosimy, żebyś wierzył, że jesteśmy uczciwi. Zbudowaliśmy system tak, żebyś nie musiał.
Nikt nie wyceluje rzutu, który zapieczętowano przed rozpoczęciem partii.
Skoro kości są dowodliwie uczciwe, czemu nadal rzucam źle?
Bo uczciwe kości to nadal kości. Zostaniesz zamknięty na bandzie. Będziesz potrzebował czegokolwiek poza 2-1 i wyrzucisz 2-1. Przez tysiące partii liczby spłaszczają się ku prawdziwemu rozkładowi, ale jeden wieczór nie obiecuje niczego. To, co weryfikacja usuwa, to pytanie leżące pod frustracją. Tamten cudowny rzut był ustalony, zanim któreś z was dotknęło pionka, i nie był wymierzony w ciebie. Wiedza o tym nie złagodzi rzutu. Pozwala jednak przestać przesłuchiwać wszechświat i wrócić do grania pozycji.
Kości są najgłośniejszym podejrzeniem, ale nie jedynym. Ten sam serwer, który zobowiązuje się co do twoich rzutów, weryfikuje też każdy ruch u źródła, więc zmodyfikowany klient nie wsunie pionka tam, gdzie zasady na to nie pozwalają. Uczciwe rzuty i legalne ruchy pochodzą z tej samej władzy.
Czy mogę wypróbować weryfikator już teraz?
Tak. Weryfikator działa już dziś pod orion.arthea.ai/verify i zawiera powtórkę demonstracyjną, więc możesz obejrzeć pełną weryfikację na przykładowej partii, bez instalowania czegokolwiek i bez zakładania konta. Drzwi pod orion.arthea.ai/go niosą odnośniki do App Store i Google Play i zawsze pokazują, co jest dostępne w tej chwili.