Provably Fair Gaming

Every roll on DiceChain is cryptographically verifiable. Our provably fair system ensures complete transparency, allowing you to verify that each result is random and unmanipulated.

How It Works

1. Server Seed Generation

Before you place any bets, our server generates a random seed and shows you its SHA-256 hash. This commitment ensures the seed cannot be changed after you see the hash.

2. Client Seed Input

You provide your own client seed, which you can change at any time. This seed is combined with the server seed to generate results, ensuring you have influence over the outcome.

3. Nonce Increment

Each bet increments a nonce value, creating a unique combination for every roll. This prevents the same result from occurring twice with identical seeds.

4. Result Verification

After each bet, the original server seed is revealed. You can use our verifier or any third-party tool to confirm the roll was fair using the formula: HMAC_SHA256(serverSeed, clientSeed:nonce) mod 100 + 1

Verify a Roll
Enter the seeds and nonce to verify a specific roll result

The SHA-256 hash of the server seed, revealed after each bet

Your personal seed that you can customize before betting

Increments with each bet to ensure unique results

Transparent Algorithm

Our provably fair algorithm is open source and can be audited by anyone.

Instant Verification

Verify any roll instantly using the tools provided on this page.

Cryptographic Security

SHA-256 hashing ensures results cannot be predicted or manipulated.

User Control

Customize your client seed to have direct influence over roll outcomes.

Technical Specification
// Provably Fair Algorithm

// 1. Generate server seed (kept secret until bet is placed)
serverSeed = crypto.randomBytes(32).toString('hex')

// 2. Show hash commitment to user
serverSeedHash = SHA256(serverSeed)

// 3. User provides client seed
clientSeed = "user_provided_value"

// 4. On each bet, increment nonce
nonce = previousNonce + 1

// 5. Calculate roll result
combined = serverSeed + ":" + clientSeed + ":" + nonce
hash = HMAC_SHA256(combined)
rollResult = (parseInt(hash.slice(0, 8), 16) % 100) + 1

// 6. After bet, reveal serverSeed for verification
// User can independently verify using the same formula

This algorithm ensures that neither the house nor the player can predict or manipulate the outcome. The server seed commitment proves the result was determined before you bet, while your client seed ensures you have influence over the outcome.