Skip to main content
The registry program maps an asset symbol to its long and short mints, a venue tag and two pool addresses. It is deployed and initialized on devnet, but it holds no markets and nothing reads it. Mint-redeem and CLP derive every address from PDAs. Integrators should take addresses from Addresses.
As of 10 Oct 2026 the RegistryState PDA (ED8joCbjr7hnWPgmiGspQ2LNpUJGfjobZYqEHD1PWyE1) has market_count = 0, and no MarketEntry accounts exist. The only venue type is MeteoraDlmm, so the registry can’t yet describe the native bin books that every market trades on.

Accounts

RegistryState PDA

MarketEntry PDA

symbol_bytes is the symbol in uppercase, zero-padded to 16 bytes. "qqq" and "QQQ" both map to b"QQQ\0\0\0\0\0\0\0\0\0\0\0\0\0".

Instructions

Every instruction except initialize needs the authority stored in RegistryState as signer. Any other signer fails Anchor’s has_one check (2001).

initialize()

Creates RegistryState once and records the signer as authority. The signer must be the program’s upgrade authority. Pass the program account as program and its ProgramData account as program_data. A ProgramData account that doesn’t belong to this program fails with InvalidProgramData; any other signer fails with UnauthorizedInitializer. Accounts: registry, authority, program, program_data, system_program.

register_market(symbol: String, params: MarketParams)

Creates the MarketEntry for symbol, sets is_active = true and increments market_count. MarketParams has seven fields: long_mint, short_mint, venue, long_pool, short_pool, long_position and short_position. The symbol is uppercased and must be at most 16 bytes (SymbolTooLong). Registering a symbol twice fails because its PDA already exists. Accounts: registry, market_entry, authority, system_program.

update_market(symbol: String, params: MarketParams)

Overwrites all seven MarketParams fields of an existing entry, so pass every field, including the unchanged ones. symbol and is_active stay as they are.

update_positions(symbol: String, long_position: Pubkey, short_position: Pubkey)

Overwrites only the two position fields.

set_active(symbol: String, is_active: bool)

Sets the is_active flag. No program checks the flag, so setting it to false pauses nothing.

transfer_authority(new_authority: Pubkey)

Replaces authority. The published IDL carries no PDA seeds and no System Program address for this program, so a client must pass every account explicitly.

Errors

→ Full error catalog

TypeScript

Reading the registry works today and shows that it is empty. provider is set up as in SDK setup, and the IDL is published in continuum-docs/idl.
Output on 10 Oct 2026:

Where to get market addresses

Use Addresses or Live markets for mints, Market PDAs and bin-book pools. You can also derive the Market, Clp and Pool PDAs from their seeds, as shown in IDLs and PDAs.

See also

Live markets

Every devnet market with its addresses.

Addresses

Program IDs, mints, PDAs and vaults.