> ## 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.

# 2026-07-22 — AMM v4: удаление зависимости OpenBook / Serum

> AMM v4 удаляет неиспользуемую зависимость OpenBook/Serum, CPI и инструкции маркет-мейкинга: v1 Swap/Deposit/Withdraw остаются совместимыми, WithdrawPnl и SetParams — критические изменения, несколько инструкций больше не вызываются.

<Info>
  **Эта страница переведена с помощью ИИ. За эталон принимается английская версия.**

  [Открыть английскую версию →](/reference/changelog/2026-07-22-amm-v4-openbook-removal)
</Info>

<Info>
  Запись в журнале изменений документации. Индекс всех обновлений см. в [`reference/changelog`](/ru/reference/changelog). Историческую хронологию протокола см. в [`introduction/history-and-milestones`](/ru/introduction/history-and-milestones).
</Info>

AMM v4 **давно прекратил обмен ликвидностью с OpenBook (ранее Serum)**; гибридный путь маркет-мейкинга на основе order-book был неактивен годами. Это обновление — очистка: оно **удаляет зависимость Serum, все order-book CPI и неработающие инструкции маркет-мейкинга** из программы, оставляя AMM v4 как чистый constant-product (`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]`, и enum `param` **перенумерован** (`Fees` 9 → 2, `SetOpenTime` 11 → 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**          |

Все параметры order-book-grid (`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`.
