Il problema con l'RNG tradizionale
In una tipica slot online, il generatore di numeri casuali (RNG) risiede sul server dell'operatore. Il giocatore vede solo il risultato. Nemmeno un operatore onesto può dimostrare a un giocatore specifico che questo particolare giro non è stato truccato — devi affidarti a certificati e reputazione.
Il provably-fair colma questa lacuna: l'operatore "blocca" in anticipo il proprio segreto, e dopo la partita lo rivela, così chiunque può ricalcolare il risultato in modo indipendente.
schema commit-reveal
Prima di una serie di giri, il server genera un serverSeed e ne pubblica solo l'hash — SHA-256(serverSeed). Questo è un "commit": il server si è impegnato, ma il seed stesso non è ancora rivelato, quindi non può essere modificato retroattivamente.
Il giocatore aggiunge il proprio clientSeed — può essere cambiato in qualsiasi momento. Ogni giro è numerato con un contatore nonce. L'esito è calcolato in modo deterministico da tre valori: serverSeed + clientSeed + nonce.
Quando il serverSeed cambia (rotazione), il vecchio serverSeed viene rivelato — "reveal". Il giocatore verifica che SHA-256(seed rivelato) corrisponda all'hash pubblicato in precedenza e ricalcola tutti i suoi giri passati.
Perché proprio HMAC-SHA256
Da tre seed viene generato un flusso di byte casuali tramite HMAC-SHA256 — una funzione crittograficamente sicura: conoscendo il risultato, è impossibile risalire al serverSeed, e cambiare un singolo bit del seed altera completamente il risultato.
Un dettaglio importante è l'assenza di "modulo bias". Se si prende semplicemente il resto della divisione di un numero casuale per la dimensione del rullo, i simboli frequenti ottengono un peso leggermente maggiore. Un'implementazione corretta usa il rejection sampling: i valori della "coda irregolare" dell'intervallo vengono scartati e la distribuzione rimane strettamente uniforme.
Come verificare il tuo giro
Nel nostro motore, ogni giro ha un pannello di equità: nonce, clientSeed, hash(serverSeed) prima della partita e il serverSeed rivelato dopo il round. L'endpoint /api/fair/verify ricalcola indipendentemente l'esito da questi valori — ottieni lo stesso risultato che hai visto nel gioco.
Questo è ciò che significa "provably-fair": non lo prendi per fede — lo verifichi. Lo stesso meccanismo funziona in modalità Megaways e nei temi a cascata.