Provably Fair CS2
Fiecare rezultat este verificabil criptografic. Nici jucătorii, nici casa nu pot manipula tragerea — poți dovedi tu însuți.
Cum funcționează
Commit
Înainte să joci, generăm un server seed aleatoriu și îți arătăm SHA-256 hash-ul lui. Angajamentul nostru e blocat — nu îl mai putem schimba.
SHA256(server_seed) → a3f8c1d…Joacă
client seed-ul tău și un nonce care crește se combină cu server seed prin HMAC-SHA256 pentru a produce rezultatul.
HMAC(server, client:nonce:0) → resultVerifică
Când rotești seed-urile, server seed-ul anterior este dezvăluit. Verifică că hash-ul corespunde angajamentului original, apoi reproduci rezultatul tu însuți.
✓ Hash matches → outcome is authenticVerificarea jocurilor
La fiecare deschidere de case, HMAC-SHA256 derivează un float aleatoriu din server seed (cheie) și mesajul .
Float-ul devine un ticket între 1 și 100.000. Fiecare item din case are un interval continuu de ticket-uri — toate însumează exact 100.000. Itemul al cărui interval conține ticket-ul tău este rezultatul.
1const crypto = require('crypto');
2
3function verifyCaseRoll(serverSeed, clientSeed, nonce) {
4 const hmac = crypto.createHmac('sha256', serverSeed);
5 hmac.update(`${clientSeed}:${nonce}:0`);
6 const buf = hmac.digest();
7
8 const float =
9 buf[0] / 256 +
10 buf[1] / 65536 +
11 buf[2] / 16777216 +
12 buf[3] / 4294967296;
13
14 const ticket = Math.floor(float * 100000) + 1;
15 return { ticket, float };
16}
17
18// Verify the server seed commitment
19function verifyHash(serverSeed, expectedHash) {
20 const hash = crypto.createHash('sha256')
21 .update(serverSeed).digest('hex');
22 return hash === expectedHash;
23}
24
25// Each case item owns a ticket range.
26// All ranges sum to 100,000.
27// The item whose range contains your ticket wins.
Verifică un roll de case
Seed-urile tale
Vezi perechea activă de seed-uri, schimbă client seed-ul sau rotește ca să dezvălui server seed-ul curent.
Istoric seed-uri
Perechi de seed-uri anterioare cu server seed-uri dezvăluite. Folosește-le ca să verifici orice joc anterior.
About this page
Poate casa să manipuleze rezultatele?
Nu. Înainte de orice rundă publicăm un hash SHA-256 al server seed-ului activ. Seed-ul real rămâne secret cât joci, dar hash-ul e fix — dacă am schimba vreodată seed-ul ca să forțăm alt rezultat, noul seed ar produce alt hash și l-ai prinde în momentul rotației. Combinat cu client seed-ul tău și nonce-ul per joc, fiecare roll e angajat dinainte și reproductibil după fapt, fără spațiu ca serverul să „reia” un rezultat care nu i-a plăcut.
Ce este un server seed, un client seed și un nonce?
Server seed-ul e o valoare lungă aleatoare aleasă de backend și ținută secretă cât e în uz; doar hash-ul SHA-256 e public. Client seed-ul e valoarea ta aleatoare — generată implicit pentru tine sau una pe care o alegi tu în Setări. Nonce-ul e un contor care crește cu unu la fiecare joc pe perechea activă de seed-uri. Cele trei alimentează împreună o funcție HMAC-SHA256: aceleași input-uri produc mereu același rezultat, deci orice spin poate fi reprodus octet cu octet.
De ce trebuie să rotesc seed-urile ca să verific?
Verificarea cere server seed-ul în clar, dar dezvăluirea lui în timpul jocului ar lăsa pe oricine să prezică următoarele rezultate — anulând tot punctul. Rotația rezolvă asta: când rotești, server seed-ul curent e retras și ți se dezvăluie, unul nou (cu hash nou) e angajat pentru jocul viitor, iar nonce-ul se resetează. Din acel moment poți verifica fiecare joc jucat pe seed-ul retras, iar jocurile următoare sunt angajate sub cel nou.
Pot să-mi setez propriul client seed și ar trebui?
Da. Deschide Setări → Provably Fair (sau derulează la „Seed-urile tale” pe această pagină), tastează orice client seed vrei — un cuvânt, un număr, orice — și apasă Rotire. Din acel moment fiecare rezultat e amestecat cu seed-ul tău, deci casa nu putea să-l fi prezis dinainte. Lasă câmpul gol și generăm noi unul puternic aleator. Oricare e Provably Fair; un client seed custom îți dă mai ales liniște în plus și o poveste de audit mai clară când explici rezultatele prietenilor.
Cum îmi rotesc seed-urile?
Du-te la Setări → Provably Fair (sau panoul „Seed-urile tale” de pe această pagină) și click pe „Rotește seed-urile”. Rotația dezvăluie imediat server seed-ul curent ca să poți verifica fiecare joc trecut pe el, generează un server seed nou și îi publică hash-ul, aplică client seed-ul pe care l-ai ales (sau unul nou aleator dacă e gol) și resetează nonce-ul la zero pentru runda următoare. Fără cooldown — poți roti oricât de des vrei, inclusiv chiar înainte de o sesiune pe care vrei să o auditezi curat.
Ce este nonce și de ce contează?
Nonce-ul e un contor per-joc care crește cu unu la fiecare rundă jucată pe perechea actuală server seed / client seed. El face jocurile consecutive unice chiar dacă perechea de seed-uri e aceeași — fiecare nonce produce alt output HMAC și deci alt rezultat. Când verifici o rundă trebuie să dai exact nonce-ul folosit, altfel verificatorul reproduce un rezultat diferit (și greșit).
Cum e tratat fairness diferit în Case Battles?
Case Battles partajează un singur server seed angajat pe fiecare loc din lobby, dar fiecare loc are nevoie de un roll independent pe același case. Ca să meargă fără client seed personal pe loc, input-ul HMAC amestecă server seed-ul partajat, nonce-ul rundei și user ID-ul jucătorului. Roll-urile fiecărui loc sunt unice și verificabile, iar server seed-ul partajat e dezvăluit când se termină battle-ul, ca oricine să poată reface orice spin din battle.
Cum verific o rundă de ruletă, Mines, blackjack sau case?
Deschide verificatorul de pe această pagină și alege jocul potrivit. Fiecare verificator are nevoie de server seed-ul dezvăluit (rotește mai întâi dacă e nevoie), client seed-ul tău din momentul rundei și nonce-ul rundei — plus un input specific jocului, cum ar fi numărul de mine pentru Mines, ID-ul case-ului pentru cases sau user ID-ul locului pentru Battles. Verificatorul reproduce exact rezultatul generat de server. Dacă diferă de ce a arătat jocul pe ecran, salvează-ți seed-urile și contactează imediat support-ul.
Ce se întâmplă dacă îmi pierd client seed-ul sau nu îmi salvez nonce-urile?
Perechea ta activă de seed-uri și nonce-ul fiecărei runde decontate sunt stocate în cont, deci le poți prelua ulterior din Setări → Provably Fair și din istoricul in-game (deschideri de cases, istoric mâini, istoric Mines etc.). Dacă rotești seed-urile fără să notezi valorile, nu contează — perechea anterioară rămâne arhivată și vizibilă pentru tine, ca să poți verifica oricare din rundele ei oricând.
Este Provably Fair același lucru cu un audit de regulator?
Nu, și asta contează. Provably Fair garantează că fiecare rundă individuală a fost generată din input-urile pe care serverul le-a angajat dinainte, deci casa nu poate alege rezultate după fapt. Nu certifică, de unul singur, house edge-ul pe termen lung al fiecărui joc, integritatea plăților sau conformitatea cu o jurisdicție anume. CSRAGE combină Provably Fair cu controale interne și, unde e nevoie, cu scrutin terț — tratează-le ca fiind complementare, nu interschimbabile.
Pot să-mi scriu propriul verificator în loc să îl folosesc pe al tău?
Da. Algoritmul exact pentru fiecare joc e documentat pe această pagină în JavaScript clar. Primitivele criptografice (SHA-256 pentru hash-ul de angajament, HMAC-SHA256 pentru extragerea pe rundă) sunt funcții standard de bibliotecă în orice limbaj major, deci poți porta snippet-urile în Python, Go, Rust sau altceva. Verificatorii independenți ajută toată comunitatea: dacă scriptul tău nu e de acord cu rezultatul nostru de pe ecran, salvează input-urile și contactează-ne ca să comparăm implementările de referință.
Jocul mai mult schimbă șansele în favoarea mea sau împotriva mea?
Nu. Rezultatul fiecărei runde depinde doar de perechea de seed-uri și de nonce-ul acelei runde; nimic din istoricul tău, nivel, win streak sau sold nu intră în RNG. Sesiunile lungi se simt altfel pentru că varianța se netezește pe multe runde, nu pentru că probabilitățile de bază se schimbă. Verificatorul o confirmă: poți reface o singură rundă izolat, iar rezultatul nu depinde de nimic în afara input-urilor acelei runde.
