♠ The poker blockchain

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

♠
Its own blockchainBuilt on Cosmos SDK
♥
Balances in USDCWithdraw to Ethereum
♦
Every hand replayableShareable links
♣
Open sourceRead the code
Showdown

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.

Block52 replay of hand 14 from a nine-player tournament: seat 2 holds three of diamonds and three of spades and wins 1,990 chips with a full house, threes over nines, on a board of 7 of clubs, 9 of hearts, 4 of clubs, 3 of hearts, 9 of spades, against ace-king of clubs.
Real handHand #14 of a nine-player tournament, 31 Oct 2026: 3♦3♠ all in, A♣K♣ calls, the river 9♠ makes threes full. Replay it on chain →
The protocol

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/poker module 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.
pokerchain/go.mod
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
)
poker-scene-dsl · rules as readable tests
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")
query any table, from any node
$ curl -s $NODE/block52/pokerchain/poker/v1/game/0x43a2…2920 \
    | jq '.game | fromjson | .gameState.results[-1]'
{ "place": 1, "playerId": "b521evpl…", "payout": "7200000" }
10,000 / 10,000

Real hands from the Pluribus dataset replayed through the engine, every finishing stack reproduced to the chip.

10.5M calls

Engine actions recorded and replayed old-against-new before the latest engine release. 0 regressions.

1 clock

Block execution reads the block's time, never a validator's own time.Now(). Same input, same block, same bytes on every validator.

Hand distribution

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.

Card distribution on Block52 mainnet How often each of the 52 cards has been dealt across 6,723 cards. Every card falls between 101 and 160 appearances around an expected 129.3. 0 40 80 120 160 2♠: 124 2♥: 130 2♦: 122 2♣: 139 3♠: 141 3♥: 118 3♦: 131 3♣: 134 4♠: 139 4♥: 125 4♦: 128 4♣: 131 5♠: 104 5♥: 121 5♦: 149 5♣: 134 6♠: 123 6♥: 143 6♦: 126 6♣: 122 7♠: 109 7♥: 133 7♦: 114 7♣: 132 8♠: 119 8♥: 127 8♦: 143 8♣: 148 9♠: 128 9♥: 146 9♦: 137 9♣: 129 10♠: 135 10♥: 160 10♦: 139 10♣: 120 J♠: 130 J♥: 112 J♦: 134 J♣: 120 Q♠: 113 Q♥: 143 Q♦: 118 Q♣: 140 K♠: 128 K♥: 158 K♦: 132 K♣: 127 A♠: 101 A♥: 126 A♦: 124 A♣: 114 2 3 4 5 6 7 8 9 10 J Q K A expected 129.3
♠ ♣ ♥ ♦ Bars grouped by rank, ♠ ♥ ♦ ♣ within each. Dashed line: expected count, 6,723 ÷ 52.
PASSCardsχ² = 60.5 · df 51 · p = 0.17
PASSSuitsχ² = 6.9 · df 3 · p = 0.08
PASSRanksχ² = 14.0 · df 12 · p = 0.30

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.

How it works

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.

Why on chain

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.

Games

Pick your table.

Live

Cash games

No-limit Texas Hold'em. Buy in, top up, and leave whenever you like.

Live

Sit & Go

Fixed buy-in, starts when the table fills, blinds rise on a clock. The top finishers are paid automatically.

Live

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.

Run a node

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.