Provably Fair Gaming
Every hand is determined by math you can verify — not trust you have to give.
How It Works
We Commit First
Before a seed session starts, the server generates a secret seed and publishes its SHA-256 hash. This hash is your receipt — it locks the server into a specific randomness stream before you act.
You Add Randomness
A client seed is generated in your browser. You can customize it at any time. Combined with a nonce (game counter), your input ensures no one — including us — can predict the deck order.
The Deck Is Shuffled Deterministically
The combined seed (server seed + client seed + nonce) is fed into a cryptographic hash function that produces a unique, deterministic shuffle order for the deck. Same inputs always produce the same deck.
After the Game, We Reveal
Legacy games reveal at hand completion. Session-mode games reveal when you rotate seed. You can then verify that the revealed seed hashes to the committed value and reproduces the same outcomes.
Why This Is Fair
- ✓Pre-commitment — The server seed hash is locked before your bet. We cannot change the outcome retroactively.
- ✓Dual-source randomness — Both server and player contribute to the final seed, so neither party controls the outcome alone.
- ✓Deterministic output — Given the same inputs, anyone running the algorithm gets the exact same deck order. No hidden variables.
- ✓Independent verification — You don't need to trust our software. The math is open and can be checked with any SHA-256 tool.
Why Zcash?
Player Privacy
Shielded transactions keep your deposits, withdrawals, and balances private. Nobody can track your gambling activity on-chain.
House Transparency
Seed commitments are recorded on the Zcash blockchain, creating an immutable audit trail that proves the house played fair.
No KYC Required
Play without handing over personal documents. Your identity is yours to keep.
Proof of Reserves
Transparent balances are publicly verifiable, while shielded pools remain private by design. View reserves.
Technical Details
crypto.randomBytes(32).toString('hex')SHA-256(serverSeed)serverSeed:clientSeed:nonceVersioned Fisher-Yates shuffle (hmac_sha256_v1 + legacy replay support)Zcash shielded tx with hash in encrypted memo fieldVerify Any Game
Every completed game gives you the seeds and hash needed to independently verify the outcome.
FAQ
Can the house change the outcome after I bet?+
No. The server seed hash is committed before your bet. Changing the seed would produce a different hash, which wouldn't match the commitment. This is mathematically provable.
What if the server generates a weak seed?+
Server seeds are generated using Node.js crypto.randomBytes (CSPRNG), producing 32 bytes of cryptographically secure randomness. Additionally, your client seed is mixed in, so even a hypothetically weak server seed cannot solely determine the outcome.
Can I change my client seed?+
Yes. You can set a custom client seed before any game. This gives you direct influence over the randomness.
What happens in demo mode?+
The provably fair system works identically in demo mode. The only difference is that blockchain commitments use a local mock instead of on-chain transactions. The cryptographic verification is real.
Where can I see the source code?+
The shuffle algorithm and verification logic are deterministic and based on standard cryptographic primitives (SHA-256, HMAC, Fisher-Yates). You can verify outcomes using any SHA-256 tool.