Skip to main content
Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Stable AMM — это независимая программа с собственным ID программы. Это не режим программы AMM v4, и она не вызывается «через» AMM v4 — она развёрнута, обновляется и вызывается отдельно. Она похожа на AMM v4 только в соглашениях о комиссиях и макетах учётных записей.
Обновление от 2026-06-22 — удаление мёртвого кода OpenBook (market). Stable AMM давно перестала размещать ордера на OpenBook; путь маркет-мейкинга через orderbook был неактивен годами. Это обновление удаляет оставшиеся учётные записи и код, связанные с рынком — оно не изменяет поведение живой торговли.Два следствия для интеграторов:
  1. Меньше учётных записей. SwapBaseIn / SwapBaseOut (18 → 9), Deposit (14 → 12), и Withdraw (21/22 → 12) удаляют мёртвые учётные записи Serum/market. Старые макеты по-прежнему парсятся для обратной совместимости. WithdrawPnl (16 → 10) — это жёсткое критическое изменение без пути совместимости (только администратор).
  2. Большинство инструкций удалены. Остаются вызываемыми только SwapBaseIn, SwapBaseOut, Deposit, Withdraw и WithdrawPnl. Все остальные инструкции больше не могут быть вызваны.
Журнал изменений: reference/changelog.

Инвентарь инструкций

Вызываемые

Удалённые (больше не вызываемые)

Они были удалены в обновлении от 2026-06-22 и больше не могут быть вызваны. См. Удалённые инструкции.

Deposit

Добавить ликвидность, получить токены LP. Аргументы
Учётные записи — новый макет, 12 учётных записей (записываемая W, подписант S) Совместимость: amm_open_orders (старая #3) и serum_market (старая #9) удалены. Когда передаётся 14 учётных записей, инструкция парсится со старым макетом из 14 учётных записей; учётные записи Serum игнорируются. Математика — стандартная пропорциональная с использованием таблицы поиска для вычисления соотношения. SDK вычисляет пару coin/pc для желаемого количества LP и проверяет против максимальных лимитов.

Withdraw

Сжечь LP, получить обе стороны пропорционально. Аргументы
Учётные записи — новый макет, 12 учётных записей (записываемая W, подписант S) Совместимость: девять учётных записей Serum (amm_open_orders, serum_program, serum_market, serum_coin_vault, serum_pc_vault, serum_vault_signer, serum_event_q, serum_bids, serum_asks) удалены. Старые макеты из 21 или 22 учётных записей по-прежнему принимаются. Однако обратите внимание, что логика реферальной комиссии для 22-й опциональной учётной записи referrer_pc_wallet была удалена — она по-прежнему может быть передана, но больше не действует. Предусловия
  • user_source_lp содержит как минимум amount.
Постусловия
  • amount токенов LP сжигаются.
  • Пользователь получает количества coin и pc в соответствии с текущей пропорцией, скорректированной на накопленные комиссии.

SwapBaseIn

Swap с точным входом, использующий таблицу поиска для определения цены. Аргументы
Учётные записи — новый макет, 9 учётных записей (записываемая W, подписант S) Совместимость: девять учётных записей OpenBook (amm_open_orders, serum_program, serum_market, serum_bids, serum_asks, serum_event_queue, serum_coin_vault, serum_pc_vault, serum_vault_signer) удалены. Если количество переданных учётных записей не равно 9, инструкция парсится со старым макетом из 18 учётных записей; учётные записи Serum должны по-прежнему занимать свои позиции, но их содержимое больше не проверяется и не используется. Предусловия
  • amm.status разрешает swap.
  • user_source_token содержит ≥ amount_in.
Постусловия
  • Пользователь теряет amount_in, получает amount_out ≥ minimum_amount_out.
  • Комиссии пула увеличивают счётчики need_take_pnl_*.
Математика — интерполяция таблицы поиска, как описано в products/stable/math.

SwapBaseOut

Swap с точным выходом (обратный SwapBaseIn). Тот же макет из 9 учётных записей, другое направление математики. Аргументы

WithdrawPnl

Только администратор. Снять накопленные комиссии протокола из need_take_pnl_* в назначенные учётные записи PnL.
Жёсткое критическое изменение — без пути совместимости. Эта инструкция не имеет парсинга для старого макета. Отправка старого макета завершается ошибками валидации, такими как InvalidTokenCoin, из-за несоответствия учётных записей (старая #3 была open_orders). Инструментарий администратора, который вызывает WithdrawPnl, должен быть обновлён на новый макет из 10 учётных записей.
Аргументы — нет (управляется состоянием). Учётные записи — новый макет, фиксированные 10 учётных записей, только администратор (записываемая W, подписант S) Изменение логики: когда доступные средства пула недостаточны для вывода накопленного PnL, пул больше не переводится в CancelAllOrdersState / Disabled; инструкция возвращает TakePnlError напрямую. Опциональная referrer_pc_wallet также была удалена. Предусловия
  • amm_admin должен быть авторизован.
Постусловия
  • need_take_pnl_coin и need_take_pnl_pc передаются на учётные записи администратора.
  • Счётчики обнуляются.

Удалённые инструкции

Следующие инструкции были удалены в обновлении от 2026-06-22 и больше не могут быть вызваны. Они документированы здесь только для того, чтобы интеграторы узнавали их в исторических транзакциях и SDK.
  • Initialize — ранее инициализировала новый пул Stable AMM. Удалена.
  • PreInitialize — вспомогательная функция предварительного выделения. Удалена.
  • InitModelData — ранее создавала и инициализировала таблицу поиска ModelDataInfo. Удалена.
  • UpdateModelData — ранее заполняла до 5 элементов таблицы поиска за вызов. Удалена.
  • MonitorStep — crank OpenBook, который урегулировал заполнения и переразмещал сетку ордеров. Уже давно неактивна после того, как пул перестал размещать на OpenBook; теперь удалена.
  • SetParams — изменения параметров администратором (статус, комиссии, владелец, ключ данных модели и т. д.). Удалена.
  • WithdrawSrm — снимала возвраты скидок на комиссии SRM из пулов эпохи Serum. Удалена.
  • SimulateInfo — вспомогательная функция котировки только для чтения. Удалена; используйте вспомогательные функции стабильной кривой SDK для котировок (см. Примеры кода).

Что дальше

Источники:
  • raydium-stable/program/src/instruction.rs (enum и pack/unpack)
  • raydium-stable/program/src/processor.rs (логика выполнения)