PROVABLY FAIR
Every deal is verifiable
DuelPoker never decides a hand behind closed doors. The server commits to a shuffled deck before you play and reveals the proof afterward, so you can confirm — cryptographically — that the cards were fixed in advance and dealt honestly.
How it works
01
Commit before the deal
When a game is created, the server generates a random 32-byte seed and immediately publishes only its SHA-256 hash — the seedHash. You see this commitment before any card is decided, so the outcome is locked in and cannot be changed later.
02
Shuffle from the seed
The 52-card deck is shuffled deterministically with a Fisher-Yates pass. Each swap index is driven by HMAC-SHA512(seed, index), so the exact same seed always produces the exact same deal — no hidden randomness.
03
Reveal & verify
After the game is completed, the original seed is revealed. Anyone can hash it with SHA-256 and check it matches the seedHash published up front, then replay the shuffle to reproduce the exact cards that were dealt.
The commitment scheme
- seedHash = SHA-256(seed)
- Published before the game starts. The hash reveals nothing about the seed, yet binds the server to it — a one-way commitment.
- deck = FisherYates(52-card deck, HMAC-SHA512(seed, i))
- The shuffle is fully deterministic in the seed. Cards 1–2 go to the left hand, 3–4 to the right hand, and 5–9 become the five community cards.
- verify: SHA-256(revealed seed) == seedHash
- If the hashes match, the seed is the one committed to before the deal, and replaying the shuffle reproduces the exact same cards. If they differ, the deal was tampered with.