Skip to content

Verify any game

How it's fair

  1. The seed is sealed firstBefore a game starts, the game server picks a secret seed and publishes its fingerprint (the commit). It can't change the seed afterwards.
  2. A future block decidesOnce a duel is accepted, or a jackpot round closes, the stakes are locked in the escrow contract. The result mixes the seed with the hash of the next block, which nobody knows yet.
  3. Anyone can checkAfter the game the seed is revealed. This page checks it against the commit, redoes the math in your browser and compares it with what was paid out.

You always play against other people, never against us. We take a small fee from each game (2% on duels, 3% on the jackpot) and that's all we earn, so we have no reason to care who wins.

Poker A server deals the cards, so it sees them, but it can't choose them: it commits to its secret seed before dealing, and a block hash mined after the seats are set goes into every deck. Once the seed is revealed (daily), paste any hand id above to check every card.

For developers: the exact math

Coinflip, jackpot and the horse race run on our game server and settle on the RoomEscrow contract. Before a game opens, the server picks a secret serverSeed and publishes commit = keccak256(serverSeed). When a duel is accepted (or a round closes) the escrow records that L2 block, the lock block, with every stake in it. From two blocks later the server reveals the seed, and the escrow recomputes:

seed = keccak256(abi.encode(escrow, roomId, serverSeed, hash(lock+1)))
duel: roll = seed mod 10,000, creator wins if roll < 5,000
jackpot: ticket = seed mod pot, the entry whose running total first exceeds it wins

The escrow only settles with the seed that matches the commit, inside its reveal window (about an hour); after that anyone can void the game for a full refund. The verify page checks the revealed seed against the commit and recomputes the result in your browser with the same math the escrow uses (packages/core).

The only party who could influence a result is the chain's sequencer (Robinhood), which already orders every transaction. Poker runs on our game server, which publishes keccak256(serverSeed) before dealing with that seed. For each hand the seats and button are fixed first, then the next L2 block is recorded and entropy = keccak256(serverSeed, client seeds, hand id, blockhash); the deck positions come from it with the same 6-max shuffle as packages/core. The seed is revealed when it rotates (daily, 00:00 UTC), and /verify/hand/<id> recomputes the hand in your browser: the commit, then every hole card and board card.