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)
| # | Имя | W | S | Примечания |
|---|
| 1 | token_program | | | SPL Token. |
| 2 | system_program | | | |
| 3 | rent | | | |
| 4 | amm | W | | Счет AmmInfo (ключ с seed). |
| 5 | amm_authority | | | PDA программы. |
| 6 | amm_open_orders | W | | OpenBook OpenOrders (с seed). |
| 7 | lp_mint | W | | |
| 8 | coin_mint | | | |
| 9 | pc_mint | | | |
| 10 | pool_coin_token_account | W | | |
| 11 | pool_pc_token_account | W | | |
| 12 | pool_withdraw_queue | W | | |
| 13 | pool_target_orders_account | W | | |
| 14 | pool_lp_token_account | W | | ATA LP создателя. |
| 15 | pool_temp_lp_token_account | W | | Вспомогательный счет. |
| 16 | market_program | | | Программа OpenBook. |
| 17 | market | | | Маркет OpenBook. |
| 18 | user_wallet | W | S | Создатель. Оплачивает аренду и финансирует первоначальный депозит. |
| 19 | user_token_coin | W | | |
| 20 | user_token_pc | W | | |
Постусловия
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)
Счета (сокращенно)
| # | Имя | W | S |
|---|
| 1 | token_program | | |
| 2 | amm | W | |
| 3 | amm_authority | | |
| 4 | amm_open_orders | | |
| 5 | amm_target_orders | W | |
| 6 | lp_mint | W | |
| 7 | pool_coin_token_account | W | |
| 8 | pool_pc_token_account | W | |
| 9 | market | | |
| 10 | user_coin_token_account | W | |
| 11 | user_pc_token_account | W | |
| 12 | user_lp_token_account | W | |
| 13 | user_owner | | S |
Математика — стандартная пропорциональная. Используя эффективные резервы пула (хранилища + на маркете), 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
Счета (сокращенно)
| # | Имя | W | S |
|---|
| 1 | token_program | | |
| 2 | amm | W | |
| 3 | amm_authority | | |
| 4 | amm_open_orders | W | |
| 5 | amm_target_orders | W | |
| 6 | pool_coin_token_account | W | |
| 7 | pool_pc_token_account | W | |
| 8 | market_program | | |
| 9 | market | W | |
| 10 | market_bids | W | |
| 11 | market_asks | W | |
| 12 | market_event_queue | W | |
| 13 | market_coin_vault | W | |
| 14 | market_pc_vault | W | |
| 15 | market_vault_signer | | |
| 16 | user_source_token_account | W | |
| 17 | user_dest_token_account | W | |
| 18 | user_owner | | S |
Математика — см. 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:
| # | Имя | W | S |
|---|
| 1 | token_program | | |
| 2 | amm | W | |
| 3 | amm_authority | | |
| 4 | amm_open_orders | | |
| 5 | pool_coin_token_account | W | |
| 6 | pool_pc_token_account | W | |
| 7 | user_source_token_account | W | |
| 8 | user_dest_token_account | W | |
| 9 | user_owner | | S |
Эффективные резервы пула по-прежнему учитывают токены, размещенные на 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_* и перемещает ровно эти суммы.
Счета (сокращенно)
| # | Имя | W | S | |
|---|
| 1 | token_program | | | |
| 2 | amm | W | | |
| 3 | amm_authority | | | |
| 4 | amm_config | | | |
| 5 | amm_open_orders | W | | |
| 6 | pool_coin_token_account | W | | |
| 7 | pool_pc_token_account | W | | |
| 8 | pnl_coin_token_account | W | | Получатель, хранится на AmmConfig. |
| 9 | pnl_pc_token_account | W | | |
| 10 | pnl_owner | | S | Административный мультиподпис. |
| 11 | market_program | | | |
| 12 | market | W | | |
| 13 | market_event_queue | W | | |
| 14 | market_coin_vault | W | | |
| 15 | market_pc_vault | W | | |
| 16 | market_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 | Хранилища | Счетчики PnL | OpenBook |
|---|
Initialize2 | начальное предложение отчеканено создателю | + init_coin_amount, + init_pc_amount | 0 | Создан OpenOrders |
Deposit | + | + обе стороны | — | урегулирование заполнений |
Withdraw | − | − обе стороны | — | урегулирование заполнений |
SwapBaseIn | — | + in, − out | + доля pnl | может пересоздать сетку |
SwapBaseOut | — | + in, − out | + доля pnl | может пересоздать сетку |
MonitorStep | — | урегулирование заполнений | — | отмена / размещение |
WithdrawPnl | — | − (pnl изъята) | 0 | — |
SetParams | — | — | — | — |
Куда дальше
Источники: