Game01 / 06

Private Texas Hold'em on-chain

snarks.club runs Hold'em Private (mode 3): a full betting game with flop, turn, and river — not a demo duel. There is no game server. The PokerTable contract holds stacks, enforces turns, and verifies every ZK proof. Your wallet is just another player calling the same functions.

Mode
HoldemPrivate (V9)
Network
Base / local Anvil
Backend
none
Seats
up to 6
Shuffle02 / 06

Mental-poker deck shuffle

Before each hand, every seated player with a registered BabyJubjub key submits a ZK proof that they applied a secret permutation to the deck. Shuffles chain in seat order — no single dealer can pick the deck. The final encrypted deck is fixed on-chain before any hole cards are dealt.

Circuit
holdem_shuffle_52
Proof
UltraHonk (Noir)
Randomness
multi-party shuffle
Verify
on-chain verifier
Deal03 / 06

Encrypted hole cards

Cards stay encrypted on-chain (BabyJubjub ElGamal). To deal your holes, you and the other active players each submit decryption shares; the contract combines them threshold-style. Only you run the math locally to see your two cards — everyone else sees ciphertext until showdown.

Curve
BabyJubjub
Circuit
holdem_decrypt_share
Shares
per card, per seat
Storage
on-chain deck state
Streets04 / 06

Betting & community cards

Check, call, raise, and fold are ordinary transactions. Community cards open when enough players submit matching decryption shares (flop can be batched in one tx). At showdown, everyone who still has live cards must ZK-prove and reveal each hole card — the contract verifies before showing the card publicly.

Actions
check · bet · call · raise · fold
Flop
batch share submit
Showdown
ZK hole reveal each card
Winner
Solidity evaluator
Proofs05 / 06

Proofs in your browser

Shuffle, share, and reveal proofs are generated locally (Noir + Barretenberg in a Web Worker). You press a button when you are ready to sign — nothing is auto-submitted. Proofs can be pre-warmed in the background so the wait feels shorter when it is your turn.

Prover
UltraHonk / bb.js
Circuits
compiled Noir JSON
Keys
IndexedDB per table
Txs
you sign each step
Bankroll06 / 06

Stacks & cash-out

ETH sits in a per-table stack while you are seated. Request cash-out anytime: between hands you leave immediately; mid-hand you finish the current hand first, then withdraw.

create a table →

Deposit
sitDown + buy-in
Exit
requestCashOut → withdraw
Bond
held while seated
Payout
on-chain evaluator
scroll to advance →