Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Запись в журнале изменений документации. Индекс всех обновлений см. в
reference/changelog. Историческую хронологию протокола см. в introduction/history-and-milestones.x·y=k) AMM. Оно не изменяет поведение торговли в реальном времени — не было оставшихся OpenBook ордеров для размещения.
TL;DR для интеграторов
- Swap / Deposit / Withdraw продолжают работать без изменений. Транзакции, построенные со старыми макетами аккаунтов, по-прежнему выполняются — удаленные аккаунты Serum/market просто игнорируются (без валидации, без CPI).
SwapBaseIn/SwapBaseOutпо-прежнему требуют 17 (+1 опциональный) аккаунтов; макетыDepositиWithdrawне изменились. Вам не нужно выпускать обновление клиента, чтобы сохранить существующие потоки. - Перейдите на V2 swap entrypoints.
SwapBaseInV2/SwapBaseOutV2не содержат market аккаунтов иamm_open_orders(всего 8 аккаунтов), поэтому транзакции меньше и дешевле. Роутеры/агрегаторы должны маршрутизировать через V2. WithdrawPnl— критическое изменение (только администратор). Переходит с 17 (+1 опциональный) → 10 аккаунтов без парсинга совместимости; старый макет не совпадает (старый #5 былamm_open_orders) и не проходит валидацию. Инструменты администратора должны быть обновлены.SetParams— критическое изменение (только администратор). Аккаунты сокращаются до[amm, admin], и enumparamперенумерован (Fees9 → 2,SetOpenTime11 → 3);AmmOwner,LastOrderDistance,UpdateOpenOrderи параметры сетки удалены.- Несколько инструкций больше не вызываются.
Initialize,PreInitialize,MonitorStep,MigrateToOpenBook,WithdrawSrm,SimulateInfoиAdminCancelOrdersтеперь возвращают ошибку. ИспользуйтеInitialize2для создания пулов. - Макеты on-chain аккаунтов стабильны по байтам, коды ошибок не изменились.
AmmInfo/StateDataсохраняют свой макет (старые поля OpenBook сохранены, но устарели/заморожены); нумерацияAmmErrorсохранена, добавлен только новыйNotAllowed.
Почему это важно (для трейдеров, LP и интеграторов)
- Трейдеры не видят изменений в поведении swap или ценообразовании — constant-product кривая не изменилась. V2-layout свопы дешевле в размещении, потому что содержат ~8 меньше аккаунтов.
- LP сохраняют ту же экономику депозита/вывода. Ликвидность давно находилась полностью в хранилищах пула, поэтому стоимость пула полностью on-pool; это обновление только удаляет устаревшую сантехнику market.
- Интеграторы получают меньшие, более простые транзакции и модель котирования, которая читает прямо из хранилищ. Существующие интеграции не ломаются (кроме администратора
WithdrawPnl/SetParams), но совместимость v1-swap — временная — переходите на V2 в удобное время.
Изменения на уровне инструкций
По-прежнему вызываемые, макет не изменился (обратно совместимые)
Initialize2, Deposit, Withdraw, SwapBaseIn, SwapBaseOut, CreateConfigAccount и UpdateConfigAccount сохраняют свои существующие списки аккаунтов. На SwapBaseIn / SwapBaseOut, Deposit и Withdraw аккаунты OpenBook/market по-прежнему принимаются позиционно, но больше не валидируются и не используются — CPI не выдается и резервы пула вычисляются только из хранилищ. Количество аккаунтов должно совпадать, поэтому существующие транзакции продолжают выполняться без изменений.
SwapBaseInV2 / SwapBaseOutV2 — рекомендуемый путь
Полностью опустите market аккаунты и amm_open_orders (8 аккаунтов; теги 16 / 17). Математика котирования идентична v1. Новые интеграции и роутеры должны использовать V2.
WithdrawPnl — 17 (+1 опциональный) → 10 аккаунтов (⚠️ критическое изменение, без пути совместимости)
amm_open_orders и все шесть market аккаунтов удалены. Новый фиксированный 10-аккаунтный, только для администратора макет не имеет парсинга совместимости; старый макет не совпадает и не проходит с ошибками типа InvalidCoinVault.
SetParams — сокращено до [amm, admin] (⚠️ критическое изменение) + перенумерованные параметры
Аккаунты authority, open-orders, target-orders, vault и все market аккаунты удалены. Enum param перенумерован и сокращен:
| Параметр | Старое значение | Новое значение |
|---|---|---|
Status | 0 | 0 |
State | 1 | 1 |
Fees | 9 | 2 |
SetOpenTime | 11 | 3 |
OrderNum, Depth, AmountWave, MinPriceMultiplier, MaxPriceMultiplier, MinSize, VolMaxCutRatio, InitOrderDepth, SetSwitchTime, ClearOpenTime, Seperate) плюс AmmOwner, LastOrderDistance и UpdateOpenOrder удалены. Структура SetParamsInstruction теряет new_pubkey и last_order_distance.
Больше не вызываются (возвращают ошибку во время выполнения; builders удалены)
| Инструкция | тег | Замена |
|---|---|---|
Initialize | 0 | Initialize2 |
MonitorStep | 2 | нет (order-book crank, снято с производства) |
MigrateToOpenBook | 5 | нет |
WithdrawSrm | 8 | нет (скидка на комиссию SRM, снято с производства) |
PreInitialize | 10 | Initialize2 |
SimulateInfo | 12 | off-chain / SDK котирование |
AdminCancelOrders | 13 | нет |
Изменения резервов / состояния
- Формула активов пула. Общие активы пула теперь
балансы хранилищ − ожидающий PnL (need_take_pnl); term open-order OpenBook — уже нулевой на практике — удален. Код котирования может читать прямо из балансов хранилищ. - Устаревшие поля состояния.
StateData.total_pnl_pc,total_pnl_coin,orderbook_to_init_time,swap_coin_in_amount,swap_pc_out_amount,swap_acc_pc_fee,swap_pc_in_amount,swap_coin_out_amountиswap_acc_coin_feeсохранены для совместимости макета, но больше не обновляются. Потребители, полагающиеся на счетчики объемаswap_*, должны переключиться на логи торговли. - Инициализация
AmmInfo.coin_lot_size,pc_lot_sizeиmin_sizeтеперь инициализируются как0. - Удаленная зависимость и CPI. Крейт
serum_dexудален изCargo.toml; все Serum DEX CPI (invoke_dex_new_order_v3,invoke_dex_cancel_order_v2,invoke_dex_settle_funds,invoke_dex_init_open_orders, …) удалены изinvokers.rs. Удаленные структуры данных:LastOrderDistance,SimulateParams,RunCrankData,GetPoolData,GetSwapBaseInData,GetSwapBaseOutData.

