Перейти к основному содержанию

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 единообразно требуют как стороны пула (счета программы AMM v4), так и стороны маркета (счета OpenBook для связанного маркета). Отсутствие или несовпадение любого набора приводит к откату. В списках счетов ниже используются имена полей из Raydium SDK для ясности; базовый IDL иногда использует префиксы serum_*.

Перечень инструкций

ГруппаИнструкцияПримечания
Жизненный цикл пулаInitialize2Текущая инструкция создания пула (по-прежнему функциональна; UI по умолчанию использует CPMM для новых пулов).
ЛиквидностьDepositДобавить ликвидность, получить LP.
ЛиквидностьWithdrawСжечь LP, получить обе стороны пропорционально.
СвопSwapBaseInСвоп с точным входом (полный путь: хранилища + OpenBook).
СвопSwapBaseOutСвоп с точным выходом (полный путь).
СвопSwapBaseInV2Своп с точным входом, обходящий OpenBook — только хранилища, меньше счетов.
СвопSwapBaseOutV2Своп с точным выходом, обходящий OpenBook.
ОбслуживаниеSetParamsАдмин: изменить параметры пула.
ОбслуживаниеWithdrawPnlПеревести накопленный протокольный PnL на счета владельца PnL.
ОбслуживаниеCreateConfigAccountАдмин: инициализировать программный PDA AmmConfig.
ОбслуживаниеUpdateConfigAccountАдмин: изменить параметры конфигурации на уровне программы.
SDK предоставляет построители только для пользовательских инструкций. Инструкции обслуживания обычно вызываются хранителем Raydium.

Initialize2

Инициализировать новый пул AMM v4, связанный с существующим маркетом OpenBook. Аргументы
nonce:        u8
open_time:    u64
init_pc_amount:   u64
init_coin_amount: u64
Счета (записываемые W, подписывающие S)
#ИмяWSПримечания
1token_programSPL Token.
2system_program
3rent
4ammWСчет AmmInfo (ключ с seed).
5amm_authorityPDA программы.
6amm_open_ordersWOpenBook OpenOrders (с seed).
7lp_mintW
8coin_mint
9pc_mint
10pool_coin_token_accountW
11pool_pc_token_accountW
12pool_withdraw_queueW
13pool_target_orders_accountW
14pool_lp_token_accountWATA LP создателя.
15pool_temp_lp_token_accountWВспомогательный счет.
16market_programПрограмма OpenBook.
17marketМаркет OpenBook.
18user_walletWSСоздатель. Оплачивает аренду и финансирует первоначальный депозит.
19user_token_coinW
20user_token_pcW
Постусловия
  • lp_supply = sqrt(init_coin_amount × init_pc_amount) − INIT_BURN, где INIT_BURN ≈ 100 LP-единиц выведены из обращения.
  • Ордера OpenBook еще не размещены; первый MonitorStep размещает начальную сетку.
Частые ошибкиInvalidInput (несовпадающие десятичные разряды, неотсортировано), NotApproved, InvalidMarketState на стороне OpenBook.

Deposit

Добавить ликвидность. Аргументы
max_coin_amount: u64
max_pc_amount:   u64
base_side:       u64    // 0 = базис на coin, 1 = базис на pc
// (некоторые варианты SDK также принимают other_amount_min)
Счета (сокращенно)
#ИмяWS
1token_program
2ammW
3amm_authority
4amm_open_orders
5amm_target_ordersW
6lp_mintW
7pool_coin_token_accountW
8pool_pc_token_accountW
9market
10user_coin_token_accountW
11user_pc_token_accountW
12user_lp_token_accountW
13user_ownerS
Математика — стандартная пропорциональная. Используя эффективные резервы пула (хранилища + на маркете), SDK вычисляет пару coin/pc, которая дает требуемое количество LP, и проверяет ее против max_*. Откатывается с ExceededSlippage, если какая-либо сторона превышает лимит.

Withdraw

Сжечь LP, получить обе стороны. Аргументы
amount: u64    // LP для сжигания
Счета — как Deposit с обратным направлением; lp_mint записываемый для сжигания, пользовательские ATA — получатели. На внутреннем уровне происходит шаг, похожий на MonitorStep, для урегулирования от OpenBook, чтобы погашение использовало свежие резервы.

SwapBaseIn

Своп с точным входом. Всегда путь через AMM (не маршрутизируется через сопоставление OpenBook).
Используйте варианты V2 для нового кода. Поскольку AMM v4 больше не делится ликвидностью с OpenBook, точки входа V1 (SwapBaseIn, SwapBaseOut) — которые по-прежнему требуют полного набора счетов OpenBook для проверки — функционально избыточны. Новые интеграции должны использовать SwapBaseInV2 / SwapBaseOutV2, которые требуют гораздо меньший список счетов и представляют канонический путь выполнения сегодня. Формы V1 задокументированы здесь для полноты и для чтения существующих транзакций в цепи.
Аргументы
amount_in:            u64
minimum_amount_out:   u64
Счета (сокращенно)
#ИмяWS
1token_program
2ammW
3amm_authority
4amm_open_ordersW
5amm_target_ordersW
6pool_coin_token_accountW
7pool_pc_token_accountW
8market_program
9marketW
10market_bidsW
11market_asksW
12market_event_queueW
13market_coin_vaultW
14market_pc_vaultW
15market_vault_signer
16user_source_token_accountW
17user_dest_token_accountW
18user_ownerS
Математика — см. 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 целевого токена.
  • state_data.swap_*_in_amount и swap_*_out_amount увеличены (для аналитики).
  • need_take_pnl_* увеличены на долю комиссии протокола.
Частые ошибкиExceededSlippage, InvalidInput, InvalidStatus, InvalidMarket.

SwapBaseOut

Своп с точным выходом, обратный SwapBaseIn. Те же счета. Аргументы
max_amount_in: u64
amount_out:    u64

SwapBaseInV2 / SwapBaseOutV2

Варианты точек входа для свопа, которые полностью пропускают счета OpenBook. Математика идентична пути V1, но список счетов сокращается до только стороны AMM:
#ИмяWS
1token_program
2ammW
3amm_authority
4amm_open_orders
5pool_coin_token_accountW
6pool_pc_token_accountW
7user_source_token_accountW
8user_dest_token_accountW
9user_ownerS
Эффективные резервы пула по-прежнему учитывают токены, размещенные на OpenBook, поэтому математика котировок не изменяется. Используйте V2, чтобы сэкономить вычисления и избежать передачи счетов маркета, когда вам не нужно срабатывание OpenBook в той же транзакции. Маршрутизатор Raydium всегда использует форму V2 при маршрутизации через AMM v4. Аргументы те же, что и в формах V1 (amount_in / minimum_amount_out для SwapBaseInV2; max_amount_in / amount_out для SwapBaseOutV2).

MonitorStep (устаревший / неактивный)

Больше не срабатывает. AMM v4 больше не делится ликвидностью с OpenBook, поэтому MonitorStep нечего делать — пул не имеет ордеров, размещенных на урегулирование, отмену или замену. Инструкция остается в программе в цепи для обратной совместимости, но хранитель Raydium больше ее не вызывает. Ручной вызов по существу является no-op (кроме обновления нулевого состояния) и не должен быть необходим интеграторам.
Первоначально эта инструкция управляла взаимодействием пула с OpenBook. Аргументы
plan_order_limit:   u16
place_order_limit:  u16
cancel_order_limit: u16
Счета — все вышеперечисленное для свопа плюс административные счета OpenBook. Первоначальный эффект (больше не актуален на практике):
  • Урегулировал любые заполненные ордера (их выручка переместилась из market_coin_vault/market_pc_vault в хранилища пула через CPI OpenBook).
  • Отменял устаревшие ордера, цены или размеры которых больше не совпадали с target_orders.
  • Размещал новые ордера для закрытия разрыва между target_orders и amm_open_orders.
Без разрешений. Любой счет мог его вызвать; исторически хранитель Raydium делал это регулярно.

WithdrawPnl / TakePnl

Административное изъятие накопленных комиссий протокола. Аргументы
  • WithdrawPnl не требует аргументов; он читает need_take_pnl_* и перемещает ровно эти суммы.
Счета (сокращенно)
#ИмяWS
1token_program
2ammW
3amm_authority
4amm_config
5amm_open_ordersW
6pool_coin_token_accountW
7pool_pc_token_accountW
8pnl_coin_token_accountWПолучатель, хранится на AmmConfig.
9pnl_pc_token_accountW
10pnl_ownerSАдминистративный мультиподпис.
11market_program
12marketW
13market_event_queueW
14market_coin_vaultW
15market_pc_vaultW
16market_vault_signer
Эффект
  • Переводит need_take_pnl_coin из pool_coin_token_account в pnl_coin_token_account.
  • То же для pc.
  • Обнуляет need_take_pnl_coin и need_take_pnl_pc.
Резервы не меняются, так как накопленный PnL уже был исключен из инварианта.

SetParams

Административные изменения параметров: маска состояния, глубина сетки сортировки, волны количества, комиссии (редко) и т. д. Вызывается мультиподписью Raydium. Аргументы — это тег param: u8 + полезная нагрузка, аналогично UpdateAmmConfig в CPMM.

Матрица изменения состояния

ИнструкцияПредложение lp_mintХранилищаСчетчики PnLOpenBook
Initialize2начальное предложение отчеканено создателю+ init_coin_amount, + init_pc_amount0Создан OpenOrders
Deposit++ обе стороныурегулирование заполнений
Withdraw− обе стороныурегулирование заполнений
SwapBaseIn+ in, − out+ доля pnlможет пересоздать сетку
SwapBaseOut+ in, − out+ доля pnlможет пересоздать сетку
MonitorStepурегулирование заполненийотмена / размещение
WithdrawPnl− (pnl изъята)0
SetParams

Куда дальше

  • products/amm-v4/code-demos — примеры на TypeScript для потоков свопа и LP.
  • products/amm-v4/fees — детали WithdrawPnl и распределение комиссий.
  • reference/error-codes — таблица справочных кодов ошибок (ошибки AMM v4 перечислены на этой странице).
Источники: