Перейти к основному содержанию
Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Stable AMM — это независимая программа (собственный program ID, не торгуется через AMM v4). Она давно перестала размещать ордера в OpenBook; путь маркет-мейкинга через OpenBook неактивен уже много лет. Это обновление — очистка: удаляет теперь мёртвые счета и код, связанные с маркетом, из макетов инструкций. Оно не меняет поведение живой торговли — ордеров OpenBook давно не осталось.

TL;DR для интеграторов

  • Swap / Deposit / Withdraw продолжают работать без изменений. Транзакции, собранные со старыми макетами аккаунтов, всё ещё выполняются — удалённые счета Serum/маркета просто игнорируются. Вам не нужно обновлять клиент, чтобы сохранить существующие потоки.
  • Но вам стоит перейти на новые, более компактные макеты в ближайшее время. Новые макеты убирают мёртвые счета маркета, сокращая размер транзакции: SwapBaseIn / SwapBaseOut идут 18 → 9 аккаунтов, Deposit 14 → 12, Withdraw 21 (+1 опциональный) → 12. Путь совместимости будет удалён в будущем релизе.
  • WithdrawPnl — критическое изменение (только для администраторов). Идёт 16 (+1 опциональный) → 10 аккаунтов без парсинга совместимости. Отправка старого макета приводит к ошибкам валидации, таким как InvalidTokenCoin, из-за смещения аккаунтов (старый #3 был open_orders). Любой инструмент администратора, вызывающий WithdrawPnl, должен быть обновлён.
  • Реферальный сбор удалён из Withdraw и WithdrawPnl. Опциональный аккаунт referrer_pc_wallet всё ещё можно передать для обратной совместимости в старом макете Withdraw, но он больше не действует.
  • Учёт активов пула упрощён. Общие активы пула теперь — это остатки в хранилище − ожидающий PnL; термин OpenBook open-order — уже нулевой на практике — удалён из формулы. Индексеры и код котировок, которые всё ещё добавляли термин OpenOrders, должны его удалить.
  • Большинство инструкций удалены. Остаются вызываемыми только SwapBaseIn, SwapBaseOut, Deposit, Withdraw и WithdrawPnl. Initialize, PreInitialize, InitModelData, UpdateModelData, MonitorStep, SetParams, WithdrawSrm и SimulateInfo больше не вызываются.

Почему это важно (для трейдеров, LP и интеграторов)

  • Трейдеры не видят изменений в поведении свопа или форме цены — таблица поиска кривой не изменилась. Свопы с новым макетом дешевле размещать, потому что транзакция содержит на девять аккаунтов меньше.
  • LP сохраняют ту же экономику депозита/вывода. Ликвидность давно полностью находится в хранилищах пула, поэтому стоимость пула полностью на пуле; это обновление только удаляет устаревшую сантехнику маркета.
  • Интеграторы получают меньше, проще транзакции и модель котировок с одним термином меньше (уже рудиментарным). Существующие интеграции не ломаются (кроме администраторского WithdrawPnl), но прослойка совместимости временна — мигрируйте в удобное время, прежде чем она будет удалена.

Изменения на уровне инструкций

SwapBaseIn / SwapBaseOut — 18 → 9 аккаунтов (старый макет всё ещё совместим)

Девять аккаунтов 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 должны всё ещё занимать свои позиции, но их содержимое больше не валидируется и не используется.

Deposit — 14 → 12 аккаунтов (старый макет всё ещё совместим)

amm_open_orders (старый #3) и serum_market (старый #9) удалены. Когда передаются 14 аккаунтов, старый макет парсится для совместимости.

Withdraw — 21 (+1 опциональный) → 12 аккаунтов (старый макет всё ещё совместим)

Девять аккаунтов Serum удалены. Старые макеты из 21 или 22 аккаунтов всё ещё принимаются, но логика реферального сбора для 22-го опционального referrer_pc_wallet удалена — аккаунт всё ещё можно передать, но он больше не действует.

WithdrawPnl — 16 (+1 опциональный) → 10 аккаунтов (⚠️ без пути совместимости, критическое изменение)

Фиксированный макет из 10 аккаунтов, только для администраторов. Нет парсинга совместимости для старого макета; его отправка приводит к ошибкам, таким как InvalidTokenCoin, из-за смещения аккаунтов. Изменение логики: когда доступных средств пула недостаточно для вывода накопленного PnL, пул больше не переводится в CancelAllOrdersState / Disabled; инструкция возвращает TakePnlError напрямую. Опциональный referrer_pc_wallet также удалён.

Изменение расчёта активов пула

Исторически формула добавляла средства, которые пул держал как открытые ордера в своём аккаунте OpenOrders в OpenBook. Этот термин был нулевым на практике с тех пор, как пул перестал размещать ордера; это обновление полностью удаляет его из формулы, оставляя только расчёт на основе хранилища:
Формула
Стараяостатки в хранилище + средства в открытых ордерах (native_coin_total / native_pc_total) − ожидающий PnL (need_take_pnl)
Новаяостатки в хранилище − ожидающий PnL (need_take_pnl)

Обновлённые страницы

  • products/stable/overview — модель чистого AMM, удалена зависимость от OpenBook, обновлены таблицы сравнения и количества аккаунтов.
  • products/stable/index — “Что это такое” и таблица ключевых фактов больше не упоминают зависимость от OpenBook.
  • products/stable/accounts — аккаунты OpenBook удалены из инвентаря; поля Serum/open-orders в AmmInfo отмечены как устаревшие/неиспользуемые; добавлена заметка об активах пула.
  • products/stable/instructions — новые таблицы аккаунтов для Swap / Deposit / Withdraw / WithdrawPnl с примечаниями о совместимости; все остальные инструкции (Initialize, PreInitialize, InitModelData, UpdateModelData, MonitorStep, SetParams, WithdrawSrm, SimulateInfo) отмечены как удалённые / больше не вызываются.
  • products/stable/math — обновление формулы активов пула; раздел MonitorStep / OpenBook переформулирован как давно устаревший.
  • products/stable/fees — раздел “PnL из OpenBook” удалён; поток сбора больше не урегулирует заполнения OpenBook.
  • products/stable/code-demos — обновлено руководство по количеству аккаунтов; SDK всё ещё абстрагирует выбор макета.
Проверено на:
  • исходном коде программы raydium-stable (post-upgrade instruction.rs / processor.rs).
  • развёрнутой программе Stable AMM на Solana mainnet-beta.