Primitives
- Collateral is USDC (integer micro-USDC on-chain, 1 USDC = 1,000,000; the UI shows cents). Prices are integers 1..99 (¢, the implied probability of the outcome).
- Each market has two complementary SPL outcome tokens, YES and NO.
- Complete-set invariant:
1 YES + 1 NO ⇄ $1, always. Split 1. Prices sum to $1 (a 60¢ YES implies a 40¢ NO).
BUY vs SELL
A side is defined by which asset the maker provides:
Entry-time collateral is enforced with no exceptions: a SELL for tokens you don’t hold
is rejected at the API — there is no naked-short path. To take the bearish side you BUY
NO, which locks USDC.
The three match types
The engine runs a unified ladder with price-time priority across all resting populations. Three pairings settle a trade:
A single taker order may fill against NORMAL makers and MINT makers in one match, but
never MINT and MERGE together. Nobody is ever handed the opposite leg by surprise — you
hold NO only if you explicitly bought NO.
Why the book is provably solvent
Solvency is structural, not a bolted-on guard (ADR 0002):- Every share is prepaid: a YES+NO set exists only because 1 back.
- Collateral is escrowed at mint/fill time; winners
redeemagainst escrow, not against a possibly-insolvent counterparty. - The book is 100% collateralized by construction; payouts cannot bounce. Maximum loss is exactly the price prepaid.
The unified YES ladder
The book is stored per outcome, but the frontend renders one unified YES ladder: a bid for NO at price p is equivalent to an ask for YES at 100 − p. The mapping lives infrontend/lib/api.ts (mapBook) and its mobile port.
Beyond binary: combos and precision
- Combos (RFQ) — a parlay is a binary complete set over the derived condition
C = AND(legs)(ADR 0004). MMs sign contingent quotes off-chain; accepting escrows the full pot. Quotes are single-use (hash-marked salt) and grouped into mutex groups so contradictory legs can’t be combined. - Precision pools — pool-based scalar guesses (no order book): payout
= Pool × (stakeᵢ·scoreᵢ)/Σ(stake·score)with a σ-normalized closeness score1 / (1 + |guess − actual| / s)^k, k=2. Entry locks at kickoff, one entry per wallet, plus a rake — the anti-gaming triad of ADR 0006.