Het probleem met gewone RNG
In een typische online slot staat de random number generator (RNG) op de server van de operator. De speler ziet alleen het resultaat. Zelfs een eerlijke operator kan een specifieke speler niet bewijzen dat deze specifieke spin niet gemanipuleerd was — je moet vertrouwen op certificaten en reputatie.
Provably-fair dicht deze kloof: de operator "legt" zijn geheim vooraf vast, en na het spel onthult hij het, zodat iedereen de uitkomst onafhankelijk kan herberekenen.
commit-reveal-schema
Voor een reeks spins genereert de server een serverSeed en publiceert alleen de hash ervan — SHA-256(serverSeed). Dit is een "commit": de server heeft zich vastgelegd, maar de seed zelf is nog niet onthuld, dus kan die niet achteraf worden gewijzigd.
De speler voegt zijn eigen clientSeed toe — deze kan op elk moment worden gewijzigd. Elke spin wordt genummerd met een nonce-teller. De uitkomst wordt deterministisch berekend uit drie waarden: serverSeed + clientSeed + nonce.
Wanneer de serverSeed verandert (rotatie), wordt de oude serverSeed onthuld — "reveal". De speler verifieert dat SHA-256(onthulde seed) overeenkomt met de eerder gepubliceerde hash en herberekent al zijn eerdere spins.
Waarom precies HMAC-SHA256
Uit drie seeds wordt een stroom willekeurige bytes gegenereerd via HMAC-SHA256 — een cryptografisch veilige functie: met kennis van de uitkomst is het onmogelijk om de serverSeed terug te rekenen, en het wijzigen van één bit van de seed verandert het resultaat volledig.
Een belangrijk detail is de afwezigheid van "modulo bias". Als je simpelweg de rest neemt van de deling van een willekeurig getal door de reelgrootte, krijgen frequente symbolen iets meer gewicht. Een correcte implementatie gebruikt rejection sampling: waarden uit de "ongelijke staart" van het bereik worden verworpen, en de verdeling blijft strikt uniform.
Hoe je je spin verifieert
In onze engine heeft elke spin een fairness-paneel: nonce, clientSeed, hash(serverSeed) vóór het spel en de onthulde serverSeed na de ronde. Het /api/fair/verify-endpoint herberekent de uitkomst onafhankelijk op basis van deze waarden — je krijgt hetzelfde resultaat als wat je in het spel zag.
Dit is wat "provably-fair" betekent: je neemt het niet op vertrouwen aan — je verifieert het. Hetzelfde mechanisme werkt in Megaways-modus en in cascade-thema's.