Server Commit
The server publishes a seed hash before bets, committing to a future reveal.
Provably Fair
Verify game outcomes with cryptographic proof instead of trust. Every roll is reproducible from disclosed seeds and nonce values.
The server publishes a seed hash before bets, committing to a future reveal.
Player input is mixed into the outcome so the round is jointly constructed.
HMAC-SHA256 combines both seeds plus nonce to compute the roll deterministically.
Anyone can recompute and confirm the exact result outside the game client.
Traditional game systems ask players to trust backend randomness. Provably fair systems expose the exact inputs required to recompute each round independently.
That means your players, compliance team, and technical partners can all audit outcomes directly and validate fairness mathematically.
Try It Yourself
Paste seeds and nonce from a game round to reproduce the exact roll.
// Provably Fair Verification Code
// Run this in Node.js to verify your game result
const crypto = require('crypto');
// Your game parameters
const clientSeed = 'DPEgctDJupwwKVQU';
const serverSeed = 'd57db13799b8e32708f8de0e7fbe8889f43f15e668756a8acfd8f470e17fbdd3';
const nonce = 0;
// Calculate HMAC-SHA256
const hmac = crypto.createHmac('sha256', Buffer.from(serverSeed, 'hex'));
hmac.update(`${clientSeed}:${nonce}`);
const hash = hmac.digest('hex');
// Extract roll value (0-9999)
const uint32 = parseInt(hash.slice(0, 8), 16);
const roll = Math.floor((uint32 / Math.pow(2, 32)) * 10000);
// Display results
console.log('=== Provably Fair Verification ===');
console.log('Client Seed:', clientSeed);
console.log('Server Seed:', serverSeed);
console.log('Nonce:', nonce);
console.log('HMAC Hash:', hash);
console.log('Roll Value:', roll, '(' + (roll / 100).toFixed(2) + ')');
console.log('==================================');