nard.gg
Limbă: Română
Creează cont

Zarurile

Toate cele cinci jocuri de aici merg cu aceleași două zaruri. Pagina aceasta arată de unde vin numerele lor, de ce nimeni nu le poate alege — cu atât mai puțin noi — și cum verifici asta singur.

De ce există pagina aceasta

31–45 % din toate plângerile din recenziile marilor aplicații de table sunt despre zaruri — mai mult decât despre orice alt subiect.

Bănuiala nu e o opinie marginală. Stă în recenziile din fiecare limbă pe care o vorbește site-ul acesta: zarurile sunt aranjate, adversarul primește exact aruncarea de care are nevoie, după o cumpărătură pierzi partida următoare. Oricine joacă online s-a gândit la propoziția asta — și de cele mai multe ori n-a fost nimeni care s-o ia în serios.

Răspunsul obișnuit este un certificat: un auditor confirmă că generatorul de numere aleatorii e în regulă. Asta înseamnă „crede-l pe auditor” — exact în punctul în care nu vrei să crezi pe nimeni. Așa că aici nu există un sigiliu, ci un calcul pe care îl poți reface singur, pentru fiecare partidă încheiată.

De ce nicio aruncare nu e aleasă după aceea

Fiecare partidă își fixează aruncările înainte ca ele să cadă. Serverul publică la început o sumă de control și abia la sfârșit numărul din care a fost calculată fiecare aruncare — dacă cele două nu se potrivesc, se poate dovedi.

  1. Înainte de partidă: plicul sigilat

    Serverul trage o sămânță de 32 de octeți aleatorii și publică doar amprenta ei — o sumă de control din care sămânța nu poate fi calculată înapoi. Din acel moment ea e fixată; nimeni n-o poate schimba fără ca amprenta să nu se mai potrivească.

  2. Ambii jucători adaugă ceva de-al lor

    Fiecare dintre voi contribuie cu un identificator propriu, care intră în fiecare aruncare. Acesta e pasul pe care promisiunile goale cu sume de control îl omit — și fără el tot restul ar fi teatru: un server care îți alege și valorile tale poate încerca sămânță după sămânță până îi plac aruncările, și abia apoi publică amprenta.

  3. O ancoră din afară

    Pe deasupra vine un număr de la drand, un far public de aleatoriu produs în comun de mai mulți operatori independenți. Runda numită este una care încă nu exista în momentul sigilării. Asta închide ultima breșă: chiar dacă serverul și ambii jucători s-ar înțelege, n-ar putea alege aruncările dinainte.

  4. Partida se joacă

    Fiecare aruncare se calculează din acele părți, după numărul ei de ordine. Nimic nu se decide în clipa în care atingi paharul — totul era fixat înainte să înceapă partida.

  5. După partidă: plicul se deschide

    Serverul publică sămânța. Acum ambele jumătăți pot fi verificate: se potrivește cu amprenta de dinainte, și produce exact aruncările care au căzut? Dacă una dintre ele nu stă în picioare, nu mai e o bănuială, ci o dovadă — și una pe care o poate face oricine, fără să ne întrebe.

1 Amprentă 2·3 Legat de 5 Sămânță

Calculul, la vedere

Iat-o, întreagă. Nu există o a doua parte, secretă — ce stă aici este tot ce îi trebuie unei aruncări.

Fiecare aruncare este HMAC-SHA256(sămânță, legătură ‖ număr). Octeții de la 252 în sus sunt aruncați, ca toate cele șase fețe să rămână la fel de probabile; din rest se ia restul împărțirii la șase, plus unu.

Sămânța este cheia, legătura este mesajul: numărul meciului, numărul partidei, identificatorii ambilor jucători și ancora — fiecare bucată cu lungimea ei în față. Lungimile nu sunt decor. Fără ele, identificatorii „ab” și „c” ar da același mesaj ca „a” și „bc”, iar un jucător ar putea face ca două perechi diferite să dea același șir de zaruri.

De ce se aruncă patru valori din 256

256 nu se împarte la șase. Dacă iei pur și simplu restul, fețele de la 1 la 4 ies în 43 din 256 de cazuri, iar 5 și 6 doar în 42 — un surplus de aproximativ două procente și jumătate, ușor de demonstrat pe o sută de mii de aruncări. Exact scandalul pe care pagina aceasta vrea să-l împiedice. De aceea cele patru valori de octet cele mai de sus sunt aruncate și trase din nou, iar toate cele șase fețe rămân la fel de probabile.

252

folosit, împărțit egal pe șase fețe aruncat, se trage alt octet

Trei feluri de a verifica singur

Tot ce trebuie pentru verificare e public — și niciunul dintre cele trei feluri nu trece prin noi.

  • Recalculat în browserul tău

    Fiecare partidă încheiată are propria pagină la „Verifică zarurile”: amprentă, legătură, sămânță și fiecare aruncare. Acolo dispozitivul tău o recalculează cu criptografia propriului browser — verdictul vine atunci de pe mașina ta, nu de pe a noastră.

  • nard.gg — verifică zarurile

    Fișierul acesta recalculează zarurile unei partide din valorile publicate. Nu conține nimic de-al nostru în afară de calculul însuși — nimic încărcat, nimic conectat, nimic numărat.

    Descarcă verificatorul — un fișier, fără rețea, nimic de-al nostru. Salvează-l și rulează-l oricând pe orice înregistrare publicată.

  • De mână, sau cu un instrument al tău

    Formula de mai sus este specificația completă, iar HMAC-SHA256 există în orice limbaj de programare. Oricine vrea poate scrie verificatorul în douăzeci de rânduri și nu are nevoie de la noi decât de cifrele publicate. Exact pentru asta sunt acolo.

Ce nu promitem

Din momentul sigilării, serverul cunoaște dinainte aruncările partidei în desfășurare. Ca să înlături asta, ar trebui ca ambele părți să se angajeze înainte de fiecare aruncare și să dezvăluie după aceea — ceea ce costă un drum dus-întors pe mutare și invită la simplul refuz de a dezvălui. Nu facem asta. Și o scriem aici, în loc să tăcem.

Ce rămâne valabil: fiecare partidă își trage propria sămânță, independentă de toate celelalte — dintr-una nu rezultă nimic despre următoarea. Iar dovada stă deschisă pentru fiecare partidă încheiată, nu la cerere, ci de la sine.

Cele treizeci și șase de aruncări

Și de ce pare totuși că zarurile sunt împotriva ta? Pentru că aleatoriul arată cocoloșit în cantități mici. Două zaruri cad în treizeci și șase de feluri, iar cine are nevoie de un anumit fel așteaptă adesea mult după el. Cele două grile de aici arată asta — prima, câte aruncări ajung la o distanță dată; a doua, cât de neuniform arată aleatoriul adevărat în numere mici.

Două zaruri cad în treizeci și șase de feluri la fel de probabile. Alege o distanță și tabelul arată care dintre ele duc un pul atât de departe — pe un drum liber, fără nimic care să blocheze.

Cât de departe să meargă pulul?

Direct — ajunge un singur zar

Indirect — doar prin mai multe zaruri

11 12 13 14 15 16 21 22 23 24 25 26 31 32 33 34 35 36 41 42 43 44 45 46 51 52 53 54 55 56 61 62 63 64 65 66

Nimic ales — tabelul arată toate cele treizeci și șase de aruncări.

21 aruncări diferite, dintre care 6 duble. Socoteala merge totuși în treizeci și șesimi: fiecare dublă cade o dată, orice altă aruncare de două ori.

Dublele

Când ambele zaruri arată același număr, el se joacă de patru ori în loc de două. O dublă cade în șase din treizeci și șase de aruncări — o mutare din șase.

De aceea o dublă ajunge mai departe decât orice altă aruncare: 6–6 duce douăzeci și patru de căsuțe.

Prima aruncare

La început fiecare jucător aruncă un zar; cel mai mare începe și joacă exact aceste două numere. La egalitate se aruncă din nou. Prima mutare a unei partide nu e deci niciodată o dublă — rămân 30 dintre cele treizeci și șase de aruncări.

Mai departe, la reguli