Market Economics#
This model is for launch catalog sizing. It does not change the permissionless program: creators can still create markets within the on-chain bounds, but the first-party catalog should avoid cadences that lock rent and crank budget faster than organic volume can pay back.
Per-Market Cost Model#
Each market locks SOL and settlement-token working capital until settlement and close complete:
| Component | Driver | Recovery path |
|---|---|---|
| Market account rent | One market PDA | Reclaimed by CloseMarket after close delay and drain gates |
| Orderbook rent | Selected deep-book capacity tier | Reclaimed by CloseMarket |
| Trader ledger rent | Selected num_seats tier | Reclaimed by CloseMarket |
| Closer reward budget | CLOSER_REWARDS_PER_MARKET × closer_reward_lamports | Paid to lifecycle crank callers when transitions execute; remaining rent-safe lamports stay with the market until close |
| Keeper working capital | Pull-update rent, transaction fees, priority fees | Rent is reclaimed from Receiver update close flows where applicable; fees are spent |
Current defaults reserve 5 × 200,000 = 1,000,000 lamports of closer budget per
market lifecycle. That budget is separate from account rent and can be topped up
permissionlessly with TopUpCloserRewards (0x35) when a market's remaining
rent-safe reward pool is too low to attract keepers.
Cadence vs. Volume#
Rent float and crank cost scale with cadence:
live_markets_per_feed = ceil((duration_seconds + close_latency_seconds) / duration_seconds)
daily_market_count = feeds × durations_per_feed × (86_400 / duration_seconds)
daily_closer_budget = daily_market_count × closer_rewards_per_market × closer_reward_lamports
locked_rent_float = live_markets × (market_rent + orderbook_rent + trader_ledger_rent)
Fee revenue scales with traded notional:
fee_revenue_per_market = traded_notional × effective_taker_fee_bps / 10_000
protocol_revenue = fee_revenue_per_market × protocol_fee_share_bps / 10_000
The launch catalog should therefore treat short-duration markets as an operational cost multiplier, not just a product feature. A 15-minute cadence creates 96 markets per feed per day; a one-hour cadence creates 24; a one-day cadence creates 1. Unless observed volume supports the extra rent float, keeper load, API/indexer rows, and support load, prefer fewer feeds and fewer durations.
Launch Catalog Policy#
For broad beta, first-party market creation should start with a deliberately small catalog:
- supported high-liquidity feeds only;
- one short cadence for active traders, one hourly cadence, and one daily cadence at most;
- deep-book and trader-ledger tiers selected from measured demand, not maximum capacity by default;
- no new feed/duration pair until the previous pair shows enough volume to cover its rent float, closer budget, keeper cost, and support burden.
Review catalog expansion weekly using:
- traded notional and effective fee revenue per market;
- live rent float by feed/duration/capacity tier;
- close latency and unreclaimed-rent backlog;
- closer reward paid vs. withheld near rent floor;
- keeper transaction cost and failed-action rate;
- trader-ledger occupancy and eviction frequency.
Seat-tier expansion should follow the same review. Start experimental markets at
Small, featured recurring markets at Standard, and reserve Large for flagship
markets with staged liquidity or partner traffic. Do not use the 8,193 or
8,321 on-chain seat tiers in first-party launch catalogs until occupancy data
shows Standard/Large are insufficient and the extra rent float is approved.
If a cadence is underused, stop first-party creation for that feed/duration, let existing markets settle and close, and keep the permissionless program unchanged.