- Two sides that never share a write. Wagers and liquidity-provider flows each have their own state account and token accounts. Only two instructions touch both: the strike, and the request that opens an epoch. A rush of deposits or withdrawals never competes with wagers for the same accounts.
- Constant cost per instruction. No instruction iterates over requests, wagers or apps. The strike costs the same with one request or ten thousand.
- Every unit of work is prepaid to whoever does it. Requesting randomness, settling, expiring, striking and claiming are all paid, so none depends on goodwill or on the party that created the work coming back.
Accounts
Every token account is owned by the data-less
["vault-authority"] PDA. Integers in seeds are little-endian u64. A program app signs as ["fade-integrator"] under its own program id.
Pool
total_assets, total_shares, total_reserved_liability, open_pool_credits; the epoch counters that gate the strike (wagers opened before and after the live close, and a generation number); a copy of the live close time; a ring of hourly share-price maxima for the drawdown breaker; volume_total; and the results of wagers opened after the live close, which the strike leaves out of its price. Identity: the pool USDC account holds at least total_assets.
Queue
The two live epochs (current, waiting for its price, and next, filling), each with its deposits, queued withdrawal shares and request counts; the running indices that let a withdrawal served over several epochs be claimed once; the next epoch id. Its lamports above its rent-exempt minimum are the strike fund.
Wager
status (Open, Requested, PayoutPending), integrator, nonce, payer, beneficiary, stake, pool_credit, payout_max, reserved_liability, the cap that applied, paytable_edge_bps, integrator_fee_bps, pool_edge_bps, open_slot, open_ts, expiry_slot, the bound randomness account, entropy_slot, entropy_hash, seed, bucket, payout, the crank fee still held, and the paytable itself (up to 32 buckets).
Integrator
The authority (the app’s signing address), the fee_account, open liability, open wager count, next_nonce, volume_total, a paused flag and its creation time.
Config
The council, the guardian, the protocol treasury, the USDC mint, the pause flags, the risk parameters, and at most one pending parameter change.
What each instruction writes
Claims never read
Pool: the price is in the epoch record.
Money flows
Throughput
Every open writesPool. At about 65 000 compute units per open and Solana’s per-account write limit per block, Pool allows on the order of 180 opens per block. The liquidity side never contends with it except at the strike.
Composition
open_wager, settle_wager and the other wager instructions can sit in any transaction. request_deposit and request_withdraw inspect the transaction’s top-level instructions and refuse any outside an allowlist (compute budget, system, token, associated token and Fade’s own liquidity instructions). The check sees only top-level instructions, so it is defence in depth; epoch pricing carries the real load.