Das Problem mit regulärem RNG
In einem typischen Online-Slot lebt der Zufallszahlengenerator (RNG) auf dem Server des Betreibers. Der Spieler sieht nur das Ergebnis. Selbst ein ehrlicher Betreiber kann einem bestimmten Spieler nicht beweisen, dass dieser konkrete Spin nicht manipuliert wurde – man muss sich auf Zertifikate und Reputation verlassen.
Provably-fair schließt diese Lücke: Der Betreiber „sperrt“ sein Geheimnis im Voraus ein, und nach dem Spiel wird es offengelegt, sodass jeder das Ergebnis unabhängig nachrechnen kann.
Commit-Reveal-Schema
Vor einer Serie von Spins generiert der Server einen serverSeed und veröffentlicht nur dessen Hash — SHA-256(serverSeed). Das ist ein "Commit": Der Server hat sich festgelegt, aber der Seed selbst ist noch nicht offengelegt, sodass er nicht nachträglich geändert werden kann.
Der Spieler fügt seinen eigenen clientSeed hinzu — er kann jederzeit geändert werden. Jeder Spin wird mit einem Nonce-Zähler nummeriert. Das Ergebnis wird deterministisch aus drei Werten berechnet: serverSeed + clientSeed + nonce.
Wenn sich der serverSeed ändert (Rotation), wird der alte serverSeed offengelegt — "reveal". Der Spieler überprüft, ob SHA-256(offengelegter Seed) mit dem zuvor veröffentlichten Hash übereinstimmt, und berechnet alle seine vergangenen Spins neu.
Warum genau HMAC-SHA256
Aus drei Seeds wird über HMAC-SHA256 ein Strom zufälliger Bytes erzeugt — eine kryptografisch sichere Funktion: Kennt man das Ergebnis, ist es unmöglich, den serverSeed zurückzurechnen, und die Änderung eines einzigen Bits des Seeds verändert das Ergebnis vollständig.
Ein wichtiges Detail ist das Fehlen von "Modulo-Bias". Wenn man einfach den Rest der Division einer Zufallszahl durch die Walzengröße nimmt, erhalten häufige Symbole etwas mehr Gewicht. Eine korrekte Implementierung verwendet Rejection Sampling: Werte aus dem "ungleichmäßigen Ende" des Bereichs werden verworfen, und die Verteilung bleibt streng gleichmäßig.
So überprüfst du deinen Spin
In unserer Engine hat jeder Spin ein Fairness-Panel: nonce, clientSeed, hash(serverSeed) vor dem Spiel und der offengelegte serverSeed nach der Runde. Der Endpunkt /api/fair/verify berechnet das Ergebnis unabhängig aus diesen Werten neu – du erhältst dasselbe Ergebnis, das du im Spiel gesehen hast.
Das bedeutet "Provably-Fair": Du nimmst es nicht im Glauben hin — du verifizierst es. Derselbe Mechanismus funktioniert im Megaways-Modus und in Cascade-Themes.