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, placeTieredBetter, or placeShuffle 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 claimBet / claimBetWithProof and pick USDG (paid from bankroll cash) or CHANCE (claim fees come off first, then the net remainder buys CHANCE on the V4 pool and lands in your wallet). See Claiming.

Bankroll and staking

The bankroll is staker capital plus protocol-owned bankroll. Everything that limits a bet - max stake, max liability, Kelly, the effective payout multiplier - is derived from availableBankroll(), the pool’s free USDG after reserved liabilities, pending claims, and reserved exits. When the house wins, parallel cuts of the house-win amount (protocol / affiliate / buyback / protocol bankroll; defaults 2.5% / 2.5% / 5% / 4%) come off first and the remainder accrues to stakers as USD earnings; when a player nets a profit, the loss is socialized across underwriting capital. Details in Staking.

What’s in this section