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.
Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
AMM v4 требует значительно больше учётных записей, чем CPMM или CLMM, поскольку каждая операция касается состояния OpenBook. На этой странице учётные записи разделены на секции “принадлежащие пулу” и “принадлежащие OpenBook”, чтобы интегратор мог быстро ориентироваться.
Перечень
Пул AMM v4 привязывается ровно к одному рынку OpenBook при создании. Полная актуальная картина выглядит так:| Категория | Учётная запись | Владелец | Роль |
|---|---|---|---|
| Pool | AmmInfo | AMM v4 программа | Состояние пула: накопленные сборы, статус, ссылки на хранилища и рынок OpenBook. |
| Pool | amm_authority | AMM v4 программа | Принадлежащий программе PDA, подписывающий переводы из хранилищ. Общий для всех пулов AMM v4. |
| Pool | amm_open_orders | OpenBook | Учётная запись OpenOrders пула на этом рынке OpenBook. |
| Pool | amm_target_orders | AMM v4 программа | Сетка целевых лимитных ордеров пула для размещения на OpenBook. |
| Pool | pool_coin_token_account | SPL Token | Хранилище пула на стороне монеты (ATA amm_authority). |
| Pool | pool_pc_token_account | SPL Token | Хранилище пула на стороне pc. |
| Pool | lp_mint | SPL Token | Взаимозаменяемый LP-минт. |
| Pool | pool_withdraw_queue | AMM v4 программа | Унаследованная очередь для отложенных выводов; сохраняется нулевой длины. |
| Pool | pool_temp_lp | AMM v4 программа | Вспомогательная LP-учётная запись, используемая при Initialize. |
| Market (OpenBook) | serum_market | OpenBook | Сам рынок (минты base/quote, vault signer и т. д.). |
| Market | serum_bids, serum_asks | OpenBook | Очереди заявок на покупку и продажу. |
| Market | serum_event_queue | OpenBook | Очередь событий (заполнения, отмены). |
| Market | serum_coin_vault, serum_pc_vault | SPL Token | Хранилища рынка на уровне OpenBook. |
| Market | serum_vault_signer | OpenBook | PDA уровня рынка, подписывающий переводы из serum_*_vault. |
AmmInfo
Корневая учётная запись состояния пула. Большого размера (≈ 752 байта), так как содержит ссылки на пул и OpenBook встроенными.
coin_vault,pc_vault— хранилища SPL Token пула.coin— этоtoken_0по соглашению Serum/OpenBook (base),pc— этоtoken_1(quote).coin_decimals,pc_decimals— соответствуют минтам.open_orders,target_orders,market— должны передаваться в каждую инструкцию swap/deposit/withdraw.fees.swap_fee_numerator / swap_fee_denominator— объединённая торговая комиссия. По умолчанию25 / 10_000 = 0.25%.status— bitmask, управляющий операциями. Может быть установлен администратором черезAdminSetStatus.state_data.need_take_pnl_*— разница между накопленными брутто-сборами и тем, что уже снято.TakePnlобнуляет эти значения.
Связь с OpenBook
Больше не активно. Пулы AMM v4 больше не делят ликвидность с OpenBook — сетка лимитных ордеров деактивирована. Учётные записи OpenBook, описанные в этом разделе, остаются в
AmmInfo каждого пула и по-прежнему проверяются конечными точками V1 swap (а также Initialize, Deposit, Withdraw) для обратной совместимости, но состояние на книге ордеров остаётся пустым на практике. Используйте конечные точки V2 swap (SwapBaseInV2 / SwapBaseOutV2), которые полностью пропускают эти учётные записи и представляют канонический путь выполнения сегодня.amm_open_orders — это учётная запись, принадлежащая OpenBook, содержащая состояние лимитных ордеров пула на этом рынке: активные ордера, выплаченные балансы, рефереры и т. д. amm_target_orders — сторона AMM: содержит намеченную сетку пула (цена/размер для каждого слота ордера), чтобы программа могла дёшево сравнить с тем, что в данный момент размещено, и разместить / отменить разницу.
PDA Authority
Существует ровно один PDAamm_authority для всей программы AMM v4. Его seed тривиален (["amm authority"]) и его bump сохранён в каждой AmmInfo. Этот authority подписывает все перемещения токенов для всех пулов AMM v4.
amm_authority выше фактически охватывает оба в дизайне этой программы; разные версии использовали разные выводы, поэтому проверьте конкретную AmmInfo.nonce пула в коде).
Хранилища
Хранилища SPL Token пула — это стандартные учётные записи токенов, чейowner — это amm_authority. Не ATA — их адреса — это специфичные PDA, производные при Initialize с seeds ["amm_associated_seed", coin_mint_or_pc_mint, market, amm_id]. Адреса хранятся в AmmInfo; выведение — это одноразовое любопытство.
Token-2022 не поддерживается. Программа жёстко кодирует идентификатор программы SPL Token для всех перемещений хранилищ. Попытка привязать пул AMM v4 к минту Token-2022 откатывается на Initialize.
LP-минт
Классический минт SPL Token, чьим authority являетсяamm_authority. Общий объём предложения отслеживает владение LP пулом; сжигание LP возвращает токены из обоих хранилищ пропорционально. Поскольку AMM v4 предшествует CPMM, в состояние пула нет зеркала lp_supply — читайте предложение минта на цепи напрямую.
Bitmask статуса
AmmInfo.status управляет операциями. Биты (позиция может различаться в разных версиях программы — подтвердите через исходный код):
| Бит | Флаг | Эффект |
|---|---|---|
| 0 | SWAP_DISABLED | Swap* отклоняет. |
| 1 | DEPOSIT_DISABLED | Deposit отклоняет. |
| 2 | WITHDRAW_DISABLED | Withdraw отклоняет. |
| 3 | CLMM_LIKE_MIGRATE | Флаг миграции, используемый операциями. |
AdminCancelOrders, AdminSetParams и т. д.
Observation / oracle
AMM v4 не имеет выделённой учётной записи observation. Другие протоколы, которым нужен on-chain TWAP, обычно косвенно потребляют пересечения книги ордеров OpenBook или читают off-chain. Если вам нужен Raydium TWAP с поддержкой программы, используйте CPMM или CLMM.Выведение учётных записей пула с нуля
Поскольку AMM v4 не был разработан для детерминированных per-pair PDA (он предшествует этому соглашению Solana), каноничныйamm_id — это seeded keypair, производная с:
amm_open_orders, amm_target_orders, amm_withdraw_queue, pool_temp_lp, pool_coin_token_account, pool_pc_token_account и lp_mint. SDK и API предварительно вычисляют эти значения; см. raydium-sdk-v2’s Liquidity.getAssociatedPoolKeys.
На практике интеграторы читают полный набор учётных записей пула из GET https://api-v3.raydium.io/pools/info/ids?ids=<POOL_ID> или из SDK. Ручное выведение редко требуется.
Краткая справка жизненного цикла
| Событие | Созданные учётные записи | Удалённые учётные записи |
|---|---|---|
Initialize2 | amm_info, amm_open_orders, amm_target_orders, хранилища, lp_mint, pool_withdraw_queue, pool_temp_lp | — |
Deposit | — (может создать пользовательскую LP ATA) | — |
Withdraw | — | — |
SwapBaseIn / SwapBaseOut | — (может создать пользовательскую ATA) | — |
TakePnl | — | — |
MonitorStep (crank) | — | — |
AmmInfo остаётся.
Что читать где
- Математика и арифметика сборов:
products/amm-v4/math. - Распределение сборов и сравнение с CPMM/CLMM:
products/amm-v4/fees. - Списки учётных записей инструкций:
products/amm-v4/instructions. - Выведение учётных записей OpenBook: документация программы OpenBook (
github.com/openbook-dex/program).
- Программа Raydium AMM —
raydium-io/raydium-amm reference/program-addressesдля канонических идентификаторов программ- Протокол OpenBook / Serum для учётных записей контрагента


