Every hand,
on the record.
Block52 is Texas Hold'em on its own chain. Every bet, call and fold is a transaction, every finished hand can be replayed by anyone, and your balance is held on chain in USDC, not in our database.
Cash games, Sit & Gos and tournaments running now · Open source · Independent validators
Nine seats. One record.
A real hand from a nine-player tournament on mainnet. Who showed, what they held, which five cards played and who took the pot are all written to the chain, so anyone can replay it afterwards.
Poker as a protocol.
Block52 is not a poker site with a blockchain bolted on. It is an application-specific chain built on the Cosmos SDK and written in Go, with a validator model drawn from THORChain: independent operators bond stake to run the network, and the same validators sign every USDC withdrawal back to Ethereum. The poker engine runs inside every validator as a deterministic state machine. A product of Nine High Studios.
- consensus
- CometBFT v0.38: Byzantine fault-tolerant, instant finality. A hand is final the block it lands in.
- framework
- Cosmos SDK v0.53 with a custom
x/pokermodule for tables, actions, payouts and the bridge. - language
- Go 1.25, chain and engine alike. One language from the felt to the state root.
- engine
- Embedded in-process, pinned by Go module version. Every validator executes every action and must reach the same bytes.
- validators
- Bonded, independent operators. Consensus-breaking releases ship through a coordinated halt so every node switches on the same block.
- settlement
- USDC, bridged from Ethereum mainnet. Withdrawals are validator-signed and redeemed on Ethereum.
- clock
- Block time, never wall time. Timeouts are a permissionless action, and the chain sweeps stalled turns itself in
EndBlock.
module github.com/block52/pokerchain go 1.25.0 require ( github.com/cometbft/cometbft v0.38.21 github.com/cosmos/cosmos-sdk v0.53.6 // the poker engine is part of consensus: // every validator runs this exact version github.com/block52/poker-vm/pvm/go/engine v1.0.34 )
sc.Act( "SB posts small blind", "BB posts big blind", "deal", "BTN raises to 3bb", "SB folds", "BB calls", ) sc.AssertPot("650") sc.Rejects("BB checks") // not BB's turn sc.AssertLegal("BB", "check", "bet")
$ curl -s $NODE/block52/pokerchain/poker/v1/game/0x43a2…2920 \ | jq '.game | fromjson | .gameState.results[-1]' { "place": 1, "playerId": "b521evpl…", "payout": "7200000" }
Real hands from the Pluribus dataset replayed through the engine, every finishing stack reproduced to the chip.
Engine actions recorded and replayed old-against-new before the latest engine release. 0 regressions.
Block execution reads the block's time, never a validator's own time.Now(). Same input, same block, same bytes on every validator.
Every card, counted.
Our indexer, a small open-source Go service (MIT), follows the chain block by block and tallies every card dealt on mainnet. Run it against your own node and you get the same counts. In a fair deck each of the 52 should turn up about as often as the others, give or take chance. Here are 6,723 of them.
Snapshot of 31 Oct 2026: 1,910 completed hands across 53 tables. Chi-squared goodness-of-fit against a uniform deck; p > 0.05 means no evidence of bias. Live numbers on the explorer.
From deposit to river, nothing off the books.
The game engine runs inside the chain itself. Validators agree on every action the same way a blockchain agrees on a payment.
Deposit
Send USDC to the bridge. The same amount is credited to your Block52 address on chain.
Sit down
Pick a cash table or a Sit & Go. Your buy-in moves from your balance to the table, on chain.
Play
Each bet, call, check and fold is a signed transaction. The engine on every validator applies it and agrees on the result.
Cash out
Leave the table and withdraw. A validator signs your withdrawal and the bridge pays out USDC on Ethereum.
Trust the record, not the room.
Online poker usually asks you to take the operator's word for it. On Block52 the record is public and anyone can check it.
Shuffles from the chain
Each deck is seeded from on-chain randomness the validators agree on, not from a server you can't see.
Replay any hand
Every finished hand opens read-only at its showdown. Share it with one link: ?hand=N
Open explorer
Blocks, transactions, accounts and hand history are public. Look up any player or table.
Your balance, on chain
Chips are USDC held at your own address. Your balance is chain state, readable by anyone.
Automatic payouts
Sit & Go places and prizes are worked out by the engine and recorded on chain. Finishers claim their prize in one click.
Bring your NFT
Link an NFT you own and it shows as your avatar at the table.
Pick your table.
Cash games
No-limit Texas Hold'em. Buy in, top up, and leave whenever you like.
Sit & Go
Fixed buy-in, starts when the table fills, blinds rise on a clock. The top finishers are paid automatically.
Tournaments
Scheduled tournaments with a set start time, late registration and blinds on a clock. Places are paid automatically. Next: multi-table tournaments with table balancing, run by the chain to the final table.
Don't trust us. Run the chain.
Anyone can run a Block52 node, follow every hand as it's played, and apply to become a validator. The node portal has the genesis, peers and step-by-step setup.
$ pokerchaind init my-node --chain-id pokerchain $ pokerchaind start … INF committed state height=471167 INF indexed block events=hand_completed
"We're not developers who read about poker. We're players who learned to code."
Block52 is built by Nine High Studios, who also build white-label poker platforms for operators and clubs.