Skip to main content
The registry program is the canonical on-chain index of Continuum markets. It maps each asset symbol to the corresponding mints and per-side pool addresses. Frontends and bots query it (or the bundled market-addresses.json snapshot) to discover live markets.
The registry is informational. Mint-redeem and CLP do not depend on it; they use direct PDA derivation. The registry is for discovery - when you don’t know which markets exist, ask the registry.

Accounts

RegistryState PDA

MarketEntry PDA

Symbol is the asset ticker padded with zero bytes to 16 bytes. So for "QQQ", the seed is b"QQQ\0\0\0\0\0\0\0\0\0\0\0\0\0".

Instructions

All instructions are admin-only.

initialize

Create the RegistryState PDA. One-shot.

register_market(symbol, long_mint, short_mint, long_pool, short_pool, venue)

Add a new entry. Symbol must be ≤ 16 chars.

update_market(...)

Update mints, pools, or venue for an existing entry.

update_positions(symbol, long_position, short_position)

Legacy: mirrored external LP position pubkeys in v1. Unused since the v2 cutover to native books.

set_active(symbol, is_active)

Flip the active flag. Set false to soft-pause a market without modifying anything else.

transfer_authority(new_authority)

Rotate admin. On mainnet, this will be a Squads multisig.

Errors

TypeScript

To enumerate all markets:

Why use the registry vs market-addresses.json

The frontend currently uses market-addresses.json for fast load + the registry as the canonical source it refreshes from.

See also

Live markets

Pre-computed table of every devnet market and its addresses.

Listing flow

How a new market gets added to the registry.