Skip to main content
Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Начиная с обновления 2026-07, зависимость AMM v4 от OpenBook / Serum была удалена — ни одна инструкция больше не читает и не записывает состояние OpenBook. Аккаунты маркета ниже сохранены только как позиционные заполнители в старых макетах инструкций v1 (принимаются, но игнорируются) и как справочные поля на AmmInfo. Используйте точки входа V2 для свопов, которые полностью их опускают. На этой странице аккаунты по-прежнему разделены на секции «принадлежащие пулу» и «OpenBook (устаревшие)» для чтения старых транзакций.

Реестр

Пул AMM v4 записывает один привязанный маркет на AmmInfo при создании. Полная картина: Примечание: префикс «serum» сохранён в IDL и названиях полей AMM v4 для обратной совместимости. Эти аккаунты больше не функциональны после удаления OpenBook.

AmmInfo

Корневой аккаунт состояния пула. Большой (≈ 752 байта), так как содержит ссылки на пул и OpenBook встроенными.
Макет структуры не изменился (совместим по байтам), поэтому существующие десериализаторы продолжают работать, но после удаления OpenBook поля, отмеченные как УСТАРЕВШЕЕ выше, больше не записываются — счётчики объёма swap_* заморожены на последнем значении. Для аналитики объёма используйте логи торговли вместо этих полей. Только need_take_pnl_* и pool_open_time активно поддерживаются.
Поля, видимые интеграторам:
  • coin_vault, pc_vault — хранилища SPL Token пула. coin — это token_0 по соглашению Serum/OpenBook (базовый), pc — это token_1 (котировка).
  • coin_decimals, pc_decimals — соответствующие минтам.
  • open_orders, target_orders, market — устаревшие справочные поля. По-прежнему присутствуют на AmmInfo и по-прежнему передаются позиционно в макетах инструкций v1, но программа больше их не читает и не проверяет. Точки входа V2 для свопов их опускают.
  • fees.swap_fee_numerator / swap_fee_denominator — объединённая комиссия торговли. По умолчанию 25 / 10_000 = 0.25%.
  • status — битовая маска, ограничивающая операции. Устанавливается администратором через AdminSetStatus.
  • state_data.need_take_pnl_* — дельта между валовыми накопленными комиссиями и тем, что было снято. TakePnl обнуляет эти значения.

Проводка OpenBook

Удалена. Зависимость OpenBook / Serum была удалена из программы (обновление 2026-07). Аккаунты, описанные в этом разделе, больше не проверяются и не используются. Они остаются справочными полями на AmmInfo и позиционными заполнителями в старых макетах инструкций v1. Используйте точки входа V2 для свопов (SwapBaseInV2 / SwapBaseOutV2), которые полностью пропускают эти аккаунты.
Когда вы вызываете устаревшую инструкцию v1 SwapBaseIn / SwapBaseOut, Deposit или Withdraw, количество аккаунтов должно по-прежнему соответствовать старому макету (аккаунты маркета занимают свои исторические позиции), но их содержимое больше не проверяется — никакой CPI не выполняется против них. Новый код должен использовать варианты V2 для свопов, которые вообще не принимают эти аккаунты.
amm_open_orders пула — это принадлежащий OpenBook аккаунт, содержащий состояние лимитных ордеров пула на этом маркете: активные ордеры, урегулированные балансы, рефереры и т. д. amm_target_orders — со стороны AMM: он содержит предполагаемую сетку AMM (цена/размер для каждого слота ордера), чтобы программа могла дёшево сравнить с тем, что в настоящий момент выставлено, и разместить / отменить разницу.

Authority PDAs

Существует ровно один PDA amm_authority для всей программы AMM v4. Его seed тривиален (["amm authority"]), а его bump хранится на каждом AmmInfo. Эта authority подписывает все перемещения токенов для всех пулов AMM v4.
Существует отдельная authority, ограниченная пулом, полученная для каждого пула для подписания операций OpenBook (amm_authority выше фактически охватывает обе в дизайне этой программы; разные версии использовали разные получения, поэтому проверьте AmmInfo.nonce конкретного пула в коде).

Хранилища

Хранилища SPL Token пула — это стандартные аккаунты токенов, чей owner — это amm_authority. Не ATAs — их адреса — это специфичные PDAs, полученные при Initialize с seeds ["amm_associated_seed", coin_mint_or_pc_mint, market, amm_id]. Адреса хранятся на AmmInfo; получение — это одноразовая любопытство. Token-2022 не поддерживается. Программа жёстко кодирует ID программы SPL Token для всех перемещений хранилищ. Попытка привязать пул AMM v4 к минту Token-2022 не удаётся при Initialize.

LP mint

Классический SPL Token mint, чья authority — это amm_authority. Общее предложение отслеживает владение LP пулом; сжигание LP возвращает токены из обоих хранилищ пропорционально. Поскольку AMM v4 предшествует CPMM, в состоянии пула нет зеркала lp_supply — читайте предложение минта в цепи напрямую.

Битовая маска статуса

AmmInfo.status ограничивает операции. Биты (позиция может отличаться в разных версиях программы — подтвердите через исходный код): Multisig Raydium устанавливает эти значения через SetParamsparam = Status). (AdminCancelOrders был удалён.)

Наблюдение / оракул

AMM v4 не имеет выделенного аккаунта наблюдения. Другие протоколы, которым нужен TWAP в цепи, обычно потребляют пересечения книги OpenBook косвенно или читают вне цепи. Если вам нужен TWAP Raydium с поддержкой программы, используйте CPMM или CLMM.

Получение аккаунтов пула с нуля

Поскольку AMM v4 не был разработан для детерминированных PDAs для каждой пары (это предшествует этому соглашению Solana), канонический amm_id — это seeded keypair, полученный с:
Тот же паттерн seeded-key применяется к 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. Ручное получение редко требуется.

Краткая справка по жизненному циклу

Пулы и их аккаунты сохраняются неопределённо долго. Даже если ликвидность полностью выведена, AmmInfo остаётся.

Что читать где

Источники: