Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.raydium.io/llms.txt

Use this file to discover all available pages before exploring further.

Source of truth. This page is the only place in the docs that lists program addresses verbatim. Other pages link here. If an ID changes, update it only here and every reference in the site stays consistent.Always cross-check values against the live API (https://api-v3.raydium.io/main/info) before signing real transactions.

Mainnet-beta

Rule of thumb: if a program ID in the wild does not match the table below, do not sign the transaction. A mismatched program ID is the single easiest way to lose funds on Solana.

On-chain programs

ProgramProgram IDSource
AMM v4 (Hybrid AMM + OpenBook)675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8raydium-amm
CPMM (Standard AMM)CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1Craydium-cp-swap
CLMM (Concentrated Liquidity)CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqKraydium-clmm
Stable AMM (StableSwap-style curve)5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3hsource not publicly available
Farm v3 (legacy RAY staking)EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Qsource not publicly available
Farm v5 (legacy ecosystem farms)9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4zsource not publicly available
Farm v6 (current ecosystem farms)FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhGsource not publicly available
LaunchLabLanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3ujsource not publicly available
AMM Routing (Raydium’s on-chain router)routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xSsource not publicly available
Burn & Earn / LP LockLockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwEsource not publicly available
Notes:
  • AMM v4 and Farm v3/v5 are retained for existing pools and positions. The Raydium UI and SDK route new pool creation and new ecosystem farms to CPMM, CLMM, and Farm v6 respectively — see protocol-overview/versions-and-migration.
  • The Farm v3 ID above doubles as the $RAY single-asset staking program. Behavior is identical to Farm v3 for LP staking.
  • Stable AMM is a separate program that the AMM Routing program can target alongside AMM v4, CPMM, and CLMM. Liquidity is thin compared to the other three programs and the SDK does not expose a first-class API for it; integrators that route through it generally do so via the router.
  • Source-code availability. Of the on-chain programs above, only raydium-amm (AMM v4), raydium-cp-swap (CPMM), and raydium-clmm (CLMM) ship with public source repositories under github.com/raydium-io. Stable AMM, LaunchLab, AMM Routing, Burn & Earn / LP Lock, and the Farm programs are not publicly available — verify them against the live API, the on-chain bytecode, and the published IDLs in raydium-io/raydium-idl instead.

Shared admin authority

All Anchor-based programs (CLMM, CPMM, LaunchLab, Lock) share a single hardcoded admin Pubkey for instruction-level access control to admin paths (such as CreateAmmConfig or UpdatePoolStatus):
ClusterAdmin
mainnet-betaGThUX1Atko4tqhN2NaiTazWSeFWMuiUvfFnyJyUghFMJ
devnetDRayqG9RXYi8WHgWEmRQGrUWRWbhjYWYkCRJDd6JBBak
Account-level operational authorities (e.g. protocol_owner, fund_owner on CPMM/CLMM AmmConfig, or the migration wallets on LaunchLab GlobalConfig) are stored on-chain and may differ from the program admin. Read them directly from the relevant config account before sending high-stakes transactions.

Shared config / PDA conventions

Several Raydium programs expose config accounts whose public keys are stable and listed on the public API. Prefer the API lookup over hardcoding:
# CPMM fee configs (returns an array of {id, index, tradeFeeRate, ...})
GET https://api-v3.raydium.io/main/cpmm-config

# CLMM fee configs
GET https://api-v3.raydium.io/main/clmm-config
Default CPMM AmmConfig index 0 (standard 0.25% pool) fee parameters, for reference:
FieldValueMeaning
trade_fee_rate25000.25% of trade volume
protocol_fee_rate12000012% of the trade fee (not volume) routed to protocol
fund_fee_rate400004% of the trade fee routed to the fund multisig
creator_fee_rate5000.05% of trade volume to the pool creator (optional)
See products/cpmm/fees for how the splits compose, and reference/fee-comparison for the cross-product matrix.

PDA seeds

The seeds below are canonical and used by both the SDK and on-chain CPIs. Always compute PDAs; do not hardcode derived addresses.
// CPMM — all seeds are static ASCII strings unless noted.
const [ammConfig]   = PublicKey.findProgramAddressSync(
  [Buffer.from("amm_config"), u16ToBytes(index)],
  CPMM_PROGRAM_ID,
);
const [authority]   = PublicKey.findProgramAddressSync(
  [Buffer.from("vault_and_lp_mint_auth_seed")],
  CPMM_PROGRAM_ID,
);
const [poolState]   = PublicKey.findProgramAddressSync(
  [Buffer.from("pool"), ammConfig.toBuffer(), token0Mint.toBuffer(), token1Mint.toBuffer()],
  CPMM_PROGRAM_ID,
);
const [lpMint]      = PublicKey.findProgramAddressSync(
  [Buffer.from("pool_lp_mint"), poolState.toBuffer()],
  CPMM_PROGRAM_ID,
);
const [vault0]      = PublicKey.findProgramAddressSync(
  [Buffer.from("pool_vault"), poolState.toBuffer(), token0Mint.toBuffer()],
  CPMM_PROGRAM_ID,
);
const [vault1]      = PublicKey.findProgramAddressSync(
  [Buffer.from("pool_vault"), poolState.toBuffer(), token1Mint.toBuffer()],
  CPMM_PROGRAM_ID,
);
const [observation] = PublicKey.findProgramAddressSync(
  [Buffer.from("observation"), poolState.toBuffer()],
  CPMM_PROGRAM_ID,
);
token0Mint / token1Mint are sorted by public-key byte order (token0 < token1) before hashing. Getting this wrong yields a valid PDA for a non-existent pool. The equivalent CLMM seeds follow the same style; see products/clmm/accounts.

Devnet

ProgramProgram ID
AMM v4DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav
CPMMDRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb
CLMMDRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH
Stable AMMDRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m
LaunchLabDRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6
AMM RoutingDRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd
Burn & Earn / LP LockDLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC
Farm v3 / v5 / v6Not reliably published for devnet — confirm via the live API (https://api-v3-devnet.raydium.io/main/info) before use.
Devnet REST API base: https://api-v3-devnet.raydium.io/ (same route shape as mainnet).

How to verify an address on-chain

  1. Solana Explorer. Paste the address into explorer.solana.com and confirm it’s marked Program with a current upgrade authority. Mainnet-beta should show deploys signed by Raydium’s upgrade authority.
  2. CLI. Use solana program show <PROGRAM_ID> -u mainnet-beta to inspect deploy slot, BPF loader, upgrade authority, and data length. Record these in your runbook.
  3. IDL attachment. Query the on-chain IDL with anchor idl fetch <PROGRAM_ID> --provider.cluster mainnet. The IDL’s address field should match. The same IDLs are mirrored at github.com/raydium-io/raydium-idl — diff the on-chain IDL against the repo before trusting it.
  4. Config/admin authorities. For CPMM/CLMM config accounts, read the owner/protocol_owner field and confirm it matches the current Raydium multisig published in security/admin-and-multisig.
If any of the four checks above disagrees with this page, treat this page as wrong and open an issue before writing new code against the addresses.

Updating this page

  • Changes to program IDs are safety-critical. Do not ship a program-ID change without (a) linking to the Raydium announcement, (b) adding an entry in reference/changelog, and (c) running a link-check over the docs to confirm no page still references the old value.
  • Deprecations stay in the table with a status note rather than being deleted — existing pools still resolve via the old program.
Sources: