1) Why “Provably Fair” Matters for Dice Games
Provably fair systems give players transparency and trust by allowing them to verify that dice rolls weren’t manipulated. Unlike traditional RNGs, where outcomes are hidden, provably fair systems provide proof of fairness using cryptographic mechanisms.
2) Core Components: Seeds, Hashes & Nonces
Server Seed & Hash
- The server seed is a secret generated by the casino.
- Before gameplay, the casino publishes the hash (e.g., SHA-256) of the server seed. This acts as a “sealed envelope” commitment.
Client Seed & Nonce
- The client seed is supplied by the player (or generated randomly).
- Nonce increases with each game round to ensure unique outcomes even with the same seeds.
Combining Seeds
After the round, the server seed is revealed. The combination of server seed, client seed, and nonce generates the outcome via a deterministic hash function. You, the player, can verify the result independently.
3) Step-by-Step Verification Process
- Before the roll
- Copy the server seed hash shown in the game interface.
- After the roll
- Obtain the revealed server seed, your client seed, and the nonce used.
- Verify the commitment
- Compute
SHA256(server_seed)
and confirm it matches the stored hash. If not, the casino tampered.
- Compute
- Recompute the outcome
- Use HMAC or simple hash, as per game specification, e.g.,
HMAC_SHA256(serverSeed, clientSeed:nonce)
. - If it matches the game result, the roll was fair.
- Use HMAC or simple hash, as per game specification, e.g.,
4) Worked Example (Hypothetical)
- Server seed hash (pre-game):
Hash = SHA256("secret123")
- Client seed:
mySeed
- Nonce:
0
- Revealed server seed post-game:
secret123
Step A: CheckSHA256("secret123")
matches the pre-game hash.
Step B: Calculate outcome viaHMAC_SHA256("secret123", "mySeed:0")
.
Step C: Convert hash to decimal or map to dice face—should match the game result.
5) Why Seeds & Nonce Are Critical
Sharing the server seed upfront allows verification; but you can’t predict the outcome because the server seed remains hidden. The combination with client seed ensures neither party can control the result. A changing nonce guarantees each roll is unique.
6) Real-World Example & Community Insight
A Reddit user simplified the system’s fairness:
“The server sends hash(server_secret) to client… this proves the server can’t change its secret after the fact.”
DiceSites.com explains it clearly:
“You get an encrypted seed (hash); you reveal the seed later and confirm it matches. That guarantees you haven’t been cheated.”
7) Limitations & Caveats
- Operator Malpractice: Provably fair ensures fair outcomes, but does not guarantee payouts or operator honesty beyond randomness.
- Complexity for Players: Many players don’t verify outcomes due to complexity—even with tools available.