Provably Fair

Provably Fair Verification

Verify game outcomes with cryptographic proof instead of trust. Every roll is reproducible from disclosed seeds and nonce values.

Server Commit

The server publishes a seed hash before bets, committing to a future reveal.

Client Seed

Player input is mixed into the outcome so the round is jointly constructed.

HMAC Compute

HMAC-SHA256 combines both seeds plus nonce to compute the roll deterministically.

Independent Verify

Anyone can recompute and confirm the exact result outside the game client.

Why this matters

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

Verify a round with real inputs

Paste seeds and nonce from a game round to reproduce the exact roll.

Verification Code

// 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('==================================');