Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Начиная с обновления программы 2026-07, зависимость AMM v4 от OpenBook / Serum была удалена. Устаревшие инструкции v1
SwapBaseIn / SwapBaseOut, Deposit и Withdraw сохраняют свои старые макеты учётных записей для обратной совместимости: учётные записи маркета по-прежнему принимаются в своих старых позициях, но они больше не проверяются и не используются (CPI не выполняется). Новые интеграции должны использовать точки входа V2 swap, которые полностью исключают учётные записи маркета. Несколько инструкций были удалены и теперь возвращают ошибку — см. запись в журнале изменений. Списки учётных записей ниже используют имена полей из Raydium SDK; базовый IDL иногда использует префиксы serum_*.Инвентарь инструкций
SDK предоставляет построители только для инструкций, ориентированных на пользователя. Инструкции обслуживания обычно вызываются хранителем Raydium.
Удалены / больше не вызываются (теперь возвращают
unimplemented!, и их построители клиента были удалены): Initialize (тег 0, используйте Initialize2), MonitorStep (2), MigrateToOpenBook (5), WithdrawSrm (8), PreInitialize (10, используйте Initialize2), SimulateInfo (12), AdminCancelOrders (13).
Initialize2
Инициализировать новый пул AMM v4, привязанный к существующему маркету OpenBook.
Аргументы
W, подписант S)
Постусловия
lp_supply = sqrt(init_coin_amount × init_pc_amount) − INIT_BURN, гдеINIT_BURN≈ 100 LP единиц выводятся из обращения.- Никакие заказы OpenBook не размещаются (сетка книги заказов была удалена).
market_program/marketпо-прежнему передаются, но только сохраняются как справочные поля;coin_lot_size/pc_lot_size/min_sizeинициализируются в0.
InvalidInput (несовпадающие десятичные разряды, неотсортированные), NotAllowed.
Deposit
Добавить ликвидность.
Аргументы
Математика — стандартная пропорциональная. Используя эффективные резервы пула (хранилища + в книге), SDK вычисляет пару coin/pc, которая даёт заданное количество LP, и проверяет её против
max_*. Возвращает ExceededSlippage, если одна из сторон превышает лимит.
Withdraw
Сжечь LP, получить обе стороны.
Аргументы
Deposit с обратным направлением; lp_mint записываемый для сжигания, пользовательские ATA являются получателями. Макет учётных записей не изменился (учётные записи маркета по-прежнему передаются позиционно, игнорируются). Больше нет шага settle-from-OpenBook — пропорциональная математика использует балансы хранилища напрямую.
SwapBaseIn
Своп с точным входом. Всегда путь через AMM (не маршрутизируется через сопоставление OpenBook).
Используйте варианты V2 для нового кода. Поскольку зависимость AMM v4 от OpenBook была удалена, точки входа V1 (
SwapBaseIn, SwapBaseOut) по-прежнему ожидают полный список из 17 учётных записей (или 18 с опциональной учётной записью target-orders), но учётные записи OpenBook/маркета теперь принимаются позиционно и игнорируются — они не проверяются и CPI не выполняется. Передача неправильного количества учётных записей по-прежнему возвращает WrongAccountsNumber, но содержимое учётных записей маркета больше не проверяется. Новые интеграции должны использовать SwapBaseInV2 / SwapBaseOutV2, которые принимают гораздо меньший список учётных записей и представляют канонический путь выполнения сегодня. Формы V1 задокументированы здесь для полноты и для чтения существующих транзакций в цепи.
Математика — см.
products/amm-v4/math.
Предусловия
amm.statusпозволяет своп (бит 0 маски статуса не установлен).amm.state_data.pool_open_time <= now.amount_in > 0.user_source_token_accountсодержит как минимумamount_in.
- Пользователь теряет
amount_inисходного токена, получаетamount_out ≥ minimum_amount_outцелевого токена. need_take_pnl_*увеличивается на долю протокольного сбора.- Примечание: счётчики аналитики
state_data.swap_*_in_amount/swap_*_out_amountбольше не обновляются — их значения заморожены. Используйте логи торговли для аналитики объёма.
ExceededSlippage, InvalidInput, InvalidStatus, NotAllowed (идентичные монеты coin/pc).
SwapBaseOut
Своп с точным выходом, обратный SwapBaseIn. Те же учётные записи.
Аргументы
SwapBaseInV2 / SwapBaseOutV2
Варианты точек входа swap (теги 16 / 17), которые полностью пропускают учётные записи OpenBook. Математика идентична пути V1, но список учётных записей сокращается до только AMM и пользователя — 8 учётных записей, и amm_open_orders не передаётся:
Резервы пула теперь являются балансами хранилища (минус ожидающий PnL), поэтому математика котировки прямолинейна и идентична пути v1. Используйте V2 для экономии вычислений и избежания передачи (теперь игнорируемых) учётных записей маркета. Маршрутизатор Raydium всегда использует форму V2 при маршрутизации через AMM v4.
Аргументы те же, что и в формах V1 (
amount_in / minimum_amount_out для SwapBaseInV2; max_amount_in / amount_out для SwapBaseOutV2).
MonitorStep и другие удалённые инструкции
Исторически MonitorStep управлял взаимодействием пула с OpenBook: он урегулировал заполненные заказы (перемещая выручку из хранилищ маркета в хранилища пула через CPI OpenBook), отменял устаревшие заказы и размещал новые заказы для закрытия разрыва между target_orders и amm_open_orders. С удалением зависимости OpenBook нечего управлять и инструкция удалена. Любой хранитель или интеграция, которые по-прежнему её вызывают, должны удалить вызов.
WithdrawPnl / TakePnl
Администраторский сбор накопленных протокольных сборов.
Аргументы
WithdrawPnlне принимает аргументы; он читаетneed_take_pnl_*и перемещает эти точные суммы.
Эффект
- Передаёт
need_take_pnl_coinизpool_coin_token_accountвpnl_coin_token_account. - То же самое для pc.
- Обнуляет
need_take_pnl_coinиneed_take_pnl_pc. - Изменение логики: если баланс хранилища недостаточен для покрытия накопленного PnL, инструкция возвращает
TakePnlErrorнапрямую (она больше не манипулирует состоянием книги заказов).
SetParams
Изменения параметров администратором, вызываемые мультиподписью Raydium. Аргументы — это тег param: u8 + полезная нагрузка.
Матрица изменения состояния
Столбец OpenBook исчез — ни одна инструкция больше не трогает книгу заказов.Что дальше
products/amm-v4/code-demos— примеры TypeScript для потоков swap и LP.products/amm-v4/fees— деталиWithdrawPnlи разделение сборов.reference/error-codes— таблица прямых ссылок (ошибки AMM v4 указаны на этой странице).
- Программа Raydium AMM —
raydium-io/raydium-amm - Модуль Raydium SDK v2
Liquidity - Программа OpenBook — проверки учётных записей на стороне маркета

