Mainnet addresses will be added when mainnet launches. Until then, all addresses on this page are devnet only.
Programs
The IDLs for the six protocol programs are published in the docs repository.
The registry’s state account (
ED8joCbjr7hnWPgmiGspQ2LNpUJGfjobZYqEHD1PWyE1, PDA [b"registry"]) is initialized but holds no markets, and nothing reads it yet. Take addresses from this page instead.
Tokens
Every long and short mint is a classic SPL Token mint with 6 decimals. Its mint authority is the market’s Market PDA, and it has no freeze authority. The token symbols are the market symbol plus
L or S (QQQL, QQQS).
Market and oracle config PDAs
The Market PDA uses seeds[b"market", symbol] on mint-redeem. The OracleConfig PDA uses [b"oracle_config", market] on the oracle program. Mint and redeem take the OracleConfig as their oracle account, and the program checks it against Market.oracle_address. On devnet the keeper doesn’t update OracleConfig, so don’t read prices from it. The live price is Market.user_twap_price (see Oracle).
OIL (withdrawn 30 Aug 2026) and VXX (delisted June 2026) are not on this page. Don’t integrate against their accounts.
Collateral vaults
Every market keeps its collateral in its own vault: the cUSDC associated token account (ATA) of the Market PDA.Market.total_collateral is each market’s own ledger figure, and the solvency checks read it. On 11 Oct 2026 every vault’s token balance equaled its market’s ledger. A plain token transfer into a vault raises its balance without changing the ledger, so read the ledger for solvency.
QQQ, SPY and XAU used to share a unified vault, a PDA with seeds [b"unified_vault"] on mint-redeem whose token-account owner is the CollateralAuthority PDA ([b"collateral_authority"]). They moved to their own vaults on 11 Oct 2026, and the unified vault now holds 0 cUSDC. Both accounts still exist on chain, but since that day’s upgrade mint-redeem has no code that reads or signs for either. redeem_paired and six other instructions keep a collateral_authority slot that the program ignores; pass mint-redeem’s program ID there.
Fee recipient
Mint and redeem take adevTokenAccount, which must be a cUSDC account owned by Market.fee_recipient. It receives the dev tax (10% of each fee). Read fee_recipient from the Market account rather than hard-coding it. Since 12 Oct 2026 every live market pays the dev tax to the treasury:
CLP accounts
pool_swap takes the RevenueAttribution PDA after token_program, followed by the market’s mint-redeem Market account, which comes last.
Every market has its own Clp PDA (seeds [b"clp", market]), including the four markets added in June 2026. Its vault is the cUSDC ATA of the Clp PDA. Each Clp stores oi_cap, the market’s exposure cap in cUSDC atoms (0 means uncapped).
Bin books
Each market has onePool PDA per side, with seeds [b"pool", market, [side]] on the clp program. Side 0 is the long book (L against cUSDC) and side 1 is the short book (S against cUSDC). A pool’s synthVault and usdcVault are the pool PDA’s ATAs for its synth mint and for cUSDC.
The books charge no swap fee. As of 10 Oct 2026 the core steps run from 10 to 50 bps and the wing steps from 200 to 700 bps. Every book has 12 bid bins and 12 ask bins, and the first 3 on each side are core bins. The XAU long book is the exception, with 6 a side. Per-market geometry is on Markets.
Derive addresses from a symbol
Every PDA above comes from the market symbol. The mints aren’t PDAs, so pass them in from the table above or read them from the Market account (longMint, shortMint). The same goes for collateralVault and feeRecipient.
External program IDs
RPC endpoints
For production, use a private RPC (Helius, Triton, QuickNode, Alchemy).
See also
Live markets
Per-market detail, fees and collateral.
Programs overview
What each program does.

