Skip to main content
Players bet USDG against ChancePool, a single contract that is the bankroll, the bet escrow, the settlement engine, and a Uniswap V4 hook all at once. Stakers fund the bankroll players play against; winners choose to claim in USDG or in CHANCE.
Expected value is fixed at deploy time and immutable: v1 pools ship at EV = 0.85, meaning a bet with stake B returns 0.85 × B in expectation (a 15% house edge). No owner or operator key can retune the odds of a live pool.

A bet’s life

  1. Place — you call placeStrike, placeRange, or placeLadder with your USDG stake, a clientSeed, and the current epoch’s expectedCommitId. The pool escrows your stake and reserves the maximum payout against the bankroll.
  2. Settle — entropy is derived from the epoch’s committed server seed plus your clientSeed and betId. Settlement is trustless: either a ZK proof of the entropy (settleWithProof) or the revealed seed after the epoch closes. No key can assert an outcome. See Provably fair.
  3. Claim — winners call claim / claimWithProof and pick USDG (paid from bankroll cash) or CHANCE (the full payout is spent buying CHANCE on the V4 pool, delivered to your wallet). See Claiming.

Bankroll and staking

The bankroll is staker capital. Everything that limits a bet — max stake, max liability, the effective payout multiplier — is derived from availableBankroll(), the pool’s free USDG after reserved liabilities and pending claims. When the house wins, proceeds (minus a 1% protocol fee on house-win amounts) flow to stakers; when a player nets a profit, the loss is socialized across staker positions. Details in Staking.

What’s in this section