Mainnet addresses will be added when mainnet launches. Until then, all addresses on this page are devnet only.
Programs
Tokens
Market PDAs
Derivation:
findProgramAddressSync([Buffer.from("market"), Buffer.from(symbol)], mintRedeemProgram).
Collateral vault (unified)
All markets share one physical cUSDC vault, owned by a globalCollateralAuthority PDA. Per-market accounting is the total_collateral scalar on each Market (the ledger) minus deployed_to_yield; per-market isolation is enforced by a liquid-share gate, not by separate token accounts.
Derivation:
findProgramAddressSync([Buffer.from("collateral_authority")], mintRedeemProgram); the vault is its cUSDC ATA. Every Market.collateral_vault field now points at this one account.
Legacy per-market vaults (pre-unification, drained)
Legacy per-market vaults (pre-unification, drained)
Before the unified-vault migration each market owned its own ATA. These are retained as
collateralVaultLegacy in market-addresses.json but hold no balance:CLP accounts
Oracle configs
Native CLMM book pools
OnePool PDA per (market, side), seeds [b"pool", market, side] on the CLP program:
There is no swap fee on the books - the half-spread (empty inner bins) is the price of immediacy. Geometry is 2-zone: core 15-40bps near NAV, wings 250-600bps.
External program IDs
RPC endpoints
For production, use a private RPC (Helius, Triton, QuickNode, Alchemy).
Programmatic access
Always prefer reading from a registry or the protocol’s bundledfrontend/lib/market-addresses.json over hard-coding addresses. Addresses can change (e.g., on mainnet launch); your code shouldn’t.
See also
Live markets
Per-market detail pages.
Programs overview
Program functionality and IDL sources.

