How it works
The rules of a round, where the price comes from, and what nobody can do about it.
Bet on the next 15 minutes
A round covers the fifteen minutes that start when it locks, not the fifteen minutes already underway. Betting stays open right up to that lock instant. The moment it locks, the reference price is fixed as a time weighted average. Fifteen minutes later, the end price settles it: UP only if the price finished strictly higher, and DOWN otherwise, so an exact tie resolves DOWN.
Betting closes before the window it decides even opens, and that is on purpose. If the reference price were fixed the moment betting opened instead, a bettor arriving late in that window would already know which way the price had moved since the reference was set, and could bet on a coin flip that had already landed. Fixing the reference only at lock, after betting has closed, means nobody who places a bet has already seen how their own window moved.
The pool is the oracle
Every round settles on a price read from the token's own Uniswap pool, as a time weighted average across the whole window rather than a single snapshot. Anyone, not only a keeper, can call the TwapAccumulator to record a new observation.
Averaging means no single trade decides a round, and time that has already been recorded cannot be repriced after the fact. It does not make a price impossible to push: a pushed price counts until the next observation, and anyone can record one. If observations stop for too long inside a window, the round does not settle on stale data. It voids, and every stake refunds in full.
The trust boundary, in one picture
Price flows down from the pool and the Chainlink feed into settlement. Scheduling flows in separately, from the bottom, on a dashed line that never joins it.
Nobody can decide the outcome
The operators can:
- list a new token for markets
- appoint or replace a keeper
- set the fee on future markets, capped at 5 percent
- pause new bets
Nobody, not even them, can:
- change a market once it has been created
- override which side won
- send a staked USDG anywhere but back to whoever staked it
A round settles on the oracle price or it does not settle at all. When the price cannot be read honestly, it voids instead of guessing, and every stake refunds in full with no fee taken:
- Nobody locked this round in time, so it was cancelled. Your stake is refundable in full.
- Nobody settled this round in time, so it was cancelled. Your stake is refundable in full.
- The price history did not reach back far enough to settle fairly. Your stake is refundable in full.
- Too few price samples in the window to settle fairly. Your stake is refundable in full.
- The ETH price feed went stale, so the round was cancelled. Your stake is refundable in full.
- The token pool ran dry, so there was no honest price to settle on. Your stake is refundable in full.
- The token supply could not be read, so the market cap could not be settled. Your stake is refundable in full.
- The price could not be converted safely, so the round was cancelled. Your stake is refundable in full.