Provably Fair

Every hand is verifiable. Every shuffle is reproducible. Zero trust required.

Why Provably Fair Matters

In traditional online poker, you trust the platform to shuffle fairly. If they cheat, you have no way to know. Provably fair cryptography eliminates this trust requirement by making every shuffle publicly verifiable.

How It Works

Step 1 — Server Commitment

Before each hand, the server generates a random server seed and publishes its SHA-256 hash as a commitment. This commitment is shown to both players before any cards are dealt. The server cannot change the seed after publishing the hash.

Step 2 — Client Seed

Each player contributes a client seed — a random value that the server cannot predict in advance. The combination of server seed + client seed determines the deck order.

Step 3 — Deck Shuffle

The deck is shuffled using a Fisher-Yates algorithm seeded by HMAC-SHA256(server_seed, client_seed + hand_nonce). This is a cryptographically secure pseudorandom number generator that produces a deterministic output — the same inputs always produce the same deck order.

Step 4 — Play the Hand

Cards are dealt from the shuffled deck. Neither player can see the server seed (only its hash), so neither can predict future cards.

Step 5 — Reveal and Verify

After the hand completes, the server reveals the server seed. Anyone can now:

  • Verify that SHA-256(revealed_seed) matches the commitment published before the hand
  • Recompute the exact deck shuffle using the revealed seed + client seed
  • Confirm that the cards dealt match the computed deck order

The Algorithm (Simplified)

// TypeScript — actual code from our engine
async function shuffleDeck(serverSeed, clientSeed, nonce) {
key = HMAC-SHA256(serverSeed, clientSeed + nonce)
deck = [0, 1, 2, ... 51]
// Fisher-Yates shuffle using HMAC bytes
for i = 51 down to 1:
j = uniformRandom(0..i) using HMAC bytes
swap deck[i] and deck[j]
return
deck
}

Verify a Hand

Use our online verifier to check any hand you've played. Paste the hand ID and the tool will reproduce the shuffle independently.

Open Verifier →

Smart Contract

The vault contract is verified on BaseScan. Every deposit, withdrawal, and settlement is recorded on-chain and can be independently audited.

View contract on BaseScan →