Skip to main content
This is the canonical lookup table. Bookmark it.
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 global CollateralAuthority 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.
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

One Pool 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 bundled frontend/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.