Источник истины. На этой странице адреса программ указаны только один раз. Все остальные страницы ссылаются на неё. При изменении идентификатора обновляйте его только здесь, и все ссылки на сайте останутся согласованными.Всегда проверяйте значения через live API (https://api-v3.raydium.io/main/info) перед подписанием реальных транзакций.
Mainnet-beta
Основное правило: если программный ID, который вы встретили, не совпадает с таблицей ниже, не подписывайте транзакцию. Несоответствие программного ID — это самый простой способ потерять средства в Solana.
On-chain программы
| Программа | Program ID | Источник |
|---|
| AMM v4 (Hybrid AMM + OpenBook) | 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 | raydium-amm |
| CPMM (Standard AMM) | CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C | raydium-cp-swap |
| CLMM (Concentrated Liquidity) | CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK | raydium-clmm |
| Stable AMM (StableSwap-style curve) | 5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h | исходный код не публичен |
| Farm v3 (legacy RAY staking) | EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q | исходный код не публичен |
| Farm v5 (legacy ecosystem farms) | 9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z | исходный код не публичен |
| Farm v6 (current ecosystem farms) | FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG | исходный код не публичен |
| LaunchLab | LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj | исходный код не публичен |
| AMM Routing (Raydium’s on-chain router) | routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS | исходный код не публичен |
| Burn & Earn / LP Lock | LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE | исходный код не публичен |
Примечания:
- AMM v4 и Farm v3/v5 сохраняются для существующих пулов и позиций. Интерфейс Raydium и SDK направляют создание новых пулов и новых экосистемных ферм на CPMM, CLMM и Farm v6 соответственно — см.
protocol-overview/versions-and-migration.
- ID Farm v3 выше также служит программой одноактивного стейкинга $RAY. Поведение идентично Farm v3 для LP стейкинга.
- Stable AMM — это отдельная программа, на которую может указывать программа AMM Routing наряду с AMM v4, CPMM и CLMM. Ликвидность невелика по сравнению с тремя другими программами, и SDK не предоставляет для неё API первого класса; интеграторы, направляющие трафик через неё, обычно делают это через маршрутизатор.
- Доступность исходного кода. Из on-chain программ выше только
raydium-amm (AMM v4), raydium-cp-swap (CPMM) и raydium-clmm (CLMM) поставляются с публичными репозиториями исходного кода в github.com/raydium-io. Stable AMM, LaunchLab, AMM Routing, Burn & Earn / LP Lock и программы Farm не являются открытыми — проверяйте их через live API, on-chain bytecode и опубликованные IDL в raydium-io/raydium-idl.
Общая админ-авторитет
Все программы на основе Anchor (CLMM, CPMM, LaunchLab, Lock) используют один жёстко закодированный публичный ключ админа для контроля доступа на уровне инструкций к админ-функциям (например CreateAmmConfig или UpdatePoolStatus):
| Кластер | Админ |
|---|
| mainnet-beta | GThUX1Atko4tqhN2NaiTazWSeFWMuiUvfFnyJyUghFMJ |
| devnet | DRayqG9RXYi8WHgWEmRQGrUWRWbhjYWYkCRJDd6JBBak |
Авторитеты на уровне аккаунта (например protocol_owner, fund_owner на AmmConfig CPMM/CLMM или кошельки миграции на GlobalConfig LaunchLab) хранятся on-chain и могут отличаться от админа программы. Читайте их непосредственно из соответствующего конфиг-аккаунта перед отправкой критичных транзакций.
Общие конфиги и PDA соглашения
Несколько программ Raydium предоставляют конфиг-аккаунты, публичные ключи которых стабильны и указаны в публичном API. Предпочитайте поиск через API вместо жёсткого кодирования:
# 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
Параметры комиссии AmmConfig CPMM по умолчанию с индексом 0 (стандартный пул 0.25%) для справки:
| Поле | Значение | Значение |
|---|
trade_fee_rate | 2500 | 0.25% от объёма торговли |
protocol_fee_rate | 120000 | 12% от комиссии за торговлю (не объёма) направляется протоколу |
fund_fee_rate | 40000 | 4% от комиссии за торговлю направляется фонду multisig |
creator_fee_rate | 500 | 0.05% от объёма торговли создателю пула (опционально) |
См. products/cpmm/fees для понимания того, как комиссии распределяются, и reference/fee-comparison для матрицы сравнения продуктов.
PDA seeds
Приведённые ниже seeds являются каноническими и используются как SDK, так и on-chain CPI. Всегда вычисляйте PDA; не жёстко кодируйте полученные адреса.
// 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 должны быть отсортированы в порядке байт публичного ключа (token0 < token1) перед хешированием. Ошибка здесь приведёт к валидному PDA для несуществующего пула.
Эквивалентные CLMM seeds следуют тому же стилю; см. products/clmm/accounts.
Devnet
| Программа | Program ID |
|---|
| AMM v4 | DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav |
| CPMM | DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb |
| CLMM | DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH |
| Stable AMM | DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m |
| LaunchLab | DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6 |
| AMM Routing | DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd |
| Burn & Earn / LP Lock | DLockwT7X7sxtLmGH9g5kmfcjaBtncdbUmi738m5bvQC |
| Farm v3 / v5 / v6 | Не публикуется надежно для devnet — проверьте через live API (https://api-v3-devnet.raydium.io/main/info) перед использованием. |
REST API base для devnet: https://api-v3-devnet.raydium.io/ (та же схема маршрутов, что и на mainnet).
Как проверить адрес on-chain
- Solana Explorer. Вставьте адрес в explorer.solana.com и убедитесь, что он помечен как
Program с текущей авторитетом обновления. На mainnet-beta должны отображаться деплои, подписанные авторитетом обновления Raydium.
- CLI. Используйте
solana program show <PROGRAM_ID> -u mainnet-beta для проверки слота деплоя, BPF loader, авторитета обновления и длины данных. Запишите это в ваш runbook.
- IDL attachment. Запросите on-chain IDL с помощью
anchor idl fetch <PROGRAM_ID> --provider.cluster mainnet. Поле address в IDL должно совпадать. Те же IDL зеркалируются на github.com/raydium-io/raydium-idl — сравните on-chain IDL с репозиторием перед тем как доверять ему.
- Авторитеты конфига/админа. Для конфиг-аккаунтов CPMM/CLMM прочитайте поле
owner/protocol_owner и убедитесь, что оно совпадает с текущим multisig Raydium, опубликованным в security/admin-and-multisig.
Если какая-либо из четырёх проверок выше не согласуется с этой страницей, рассматривайте эту страницу как неправильную и откройте проблему перед написанием нового кода для этих адресов.
Обновление этой страницы
- Изменения в программных ID являются критичными для безопасности. Не выпускайте изменение программного ID без (a) ссылки на объявление Raydium, (b) добавления записи в
reference/changelog и (c) проверки всех ссылок в документации, чтобы убедиться, что ни одна страница всё ещё не ссылается на старое значение.
- Deprecated программы остаются в таблице с примечанием о статусе, а не удаляются — существующие пулы всё ещё разрешаются через старую программу.
Источники: