> ## 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: eliminar dependencia de OpenBook / Serum

> AMM v4 elimina su dependencia dormida de OpenBook/Serum, CPIs e instrucciones de creación de mercado: v1 Swap/Deposit/Withdraw siguen siendo compatibles, WithdrawPnl y SetParams son cambios que rompen compatibilidad, y varias instrucciones ya no se pueden llamar.

<Info>
  **Esta página fue traducida automáticamente por IA. La versión en inglés es la fuente autorizada.**

  [Ver versión en inglés →](/reference/changelog/2026-07-22-amm-v4-openbook-removal)
</Info>

AMM v4 **dejó de compartir liquidez con OpenBook (anteriormente Serum) hace mucho tiempo**; la ruta híbrida de creación de mercado con libro de órdenes ha estado inactiva durante años. Esta actualización es la limpieza: **elimina la dependencia de Serum, todos los CPIs del libro de órdenes y las instrucciones de creación de mercado muertas** del programa, dejando AMM v4 como un AMM de producto constante puro (`x·y=k`). **No** cambia ningún comportamiento de trading en vivo — no había órdenes de OpenBook restantes para dejar de colocar.

## Resumen ejecutivo para integradores

* **Swap / Deposit / Withdraw siguen funcionando sin cambios.** Las transacciones construidas con los diseños de cuenta antiguos aún se ejecutan — las cuentas de Serum/mercado eliminadas simplemente se ignoran (sin validación, sin CPI). `SwapBaseIn` / `SwapBaseOut` aún esperan **17 (+1 opcional)** cuentas; los diseños de `Deposit` y `Withdraw` no cambian. **No** tienes que enviar una actualización de cliente para mantener los flujos existentes activos.
* **Migra a los puntos de entrada de swap V2.** `SwapBaseInV2` / `SwapBaseOutV2` no llevan cuentas de mercado ni `amm_open_orders` (8 cuentas en total), por lo que las transacciones son más pequeñas y baratas. Los routers/agregadores deben enrutar a través de V2.
* **`WithdrawPnl` es un cambio que rompe compatibilidad (solo administrador).** Va de **17 (+1 opcional) → 10** cuentas **sin análisis de compatibilidad**; el diseño antiguo se desalinea (el antiguo #5 era `amm_open_orders`) y falla la validación. Las herramientas de administrador deben actualizarse.
* **`SetParams` es un cambio que rompe compatibilidad (solo administrador).** Las cuentas se reducen a `[amm, admin]`, y el enum `param` es **renumerado** (`Fees` 9 → 2, `SetOpenTime` 11 → 3); `AmmOwner`, `LastOrderDistance`, `UpdateOpenOrder` y los parámetros de cuadrícula se eliminan.
* **Varias instrucciones ya no se pueden llamar.** `Initialize`, `PreInitialize`, `MonitorStep`, `MigrateToOpenBook`, `WithdrawSrm`, `SimulateInfo` y `AdminCancelOrders` ahora revierten. Usa `Initialize2` para crear pools.
* **Los diseños de cuenta en cadena son estables en bytes, y los códigos de error no cambian.** `AmmInfo` / `StateData` mantienen su diseño (los campos antiguos de OpenBook se retienen pero están deprecados/congelados); la numeración de `AmmError` se preserva, con solo un nuevo `NotAllowed` añadido.

## Por qué esto importa (para traders, LPs e integradores)

* **Los traders** no ven cambios en el comportamiento del swap o la fijación de precios — la curva de producto constante no cambia. Los swaps con diseño V2 son más baratos de ejecutar porque llevan \~8 cuentas menos.
* **Los LPs** mantienen la misma economía de depósito/retiro. La liquidez ha estado completamente en los vaults del pool durante mucho tiempo, por lo que el valor del pool está completamente en el pool; esta actualización solo elimina la tubería de mercado obsoleta.
* **Los integradores** obtienen transacciones más pequeñas y simples y un modelo de cotización que lee directamente de los vaults. Las integraciones existentes no se rompen (excepto el `WithdrawPnl` / `SetParams` de administrador), pero el shim de compatibilidad de swap v1 es temporal — migra a V2 cuando te convenga.

## Cambios a nivel de instrucción

### Aún se pueden llamar, diseño sin cambios (compatible hacia atrás)

`Initialize2`, `Deposit`, `Withdraw`, `SwapBaseIn`, `SwapBaseOut`, `CreateConfigAccount` y `UpdateConfigAccount` mantienen sus listas de cuentas existentes. En `SwapBaseIn` / `SwapBaseOut`, `Deposit` y `Withdraw`, las cuentas de OpenBook/mercado aún se aceptan posicionalmente pero **ya no se validan ni se usan** — no se emite CPI y las reservas del pool se calculan solo desde los vaults. El **número** de cuentas aún debe coincidir, por lo que las transacciones existentes continúan ejecutándose sin cambios.

### `SwapBaseInV2` / `SwapBaseOutV2` — ruta recomendada

Omite completamente las cuentas de mercado y `amm_open_orders` (8 cuentas; etiquetas 16 / 17). La matemática de cotización es idéntica a v1. Las nuevas integraciones y routers deben usar V2.

### `WithdrawPnl` — 17 (+1 opcional) → 10 cuentas (⚠️ rompe compatibilidad, sin ruta de compatibilidad)

`amm_open_orders` y las seis cuentas de mercado se eliminan. El nuevo diseño fijo de 10 cuentas, solo para administrador, **no** tiene análisis de compatibilidad; el diseño antiguo se desalinea y falla con errores como `InvalidCoinVault`.

### `SetParams` — reducido a `[amm, admin]` (⚠️ rompe compatibilidad) + parámetros renumerados

La autoridad, órdenes abiertas, órdenes objetivo, vault y todas las cuentas de mercado se eliminan. El enum `param` se renumera y se recorta:

| Parámetro     | Valor antiguo | Valor nuevo |
| ------------- | ------------- | ----------- |
| `Status`      | 0             | 0           |
| `State`       | 1             | 1           |
| `Fees`        | 9             | **2**       |
| `SetOpenTime` | 11            | **3**       |

Todos los parámetros de cuadrícula del libro de órdenes (`OrderNum`, `Depth`, `AmountWave`, `MinPriceMultiplier`, `MaxPriceMultiplier`, `MinSize`, `VolMaxCutRatio`, `InitOrderDepth`, `SetSwitchTime`, `ClearOpenTime`, `Seperate`) más `AmmOwner`, `LastOrderDistance` y `UpdateOpenOrder` se eliminan. El struct `SetParamsInstruction` elimina `new_pubkey` y `last_order_distance`.

### Ya no se pueden llamar (revierten en tiempo de ejecución; constructores eliminados)

| Instrucción         | etiqueta | Reemplazo                                      |
| ------------------- | -------- | ---------------------------------------------- |
| `Initialize`        | 0        | `Initialize2`                                  |
| `MonitorStep`       | 2        | ninguno (crank del libro de órdenes, retirado) |
| `MigrateToOpenBook` | 5        | ninguno                                        |
| `WithdrawSrm`       | 8        | ninguno (descuento de tarifa SRM, retirado)    |
| `PreInitialize`     | 10       | `Initialize2`                                  |
| `SimulateInfo`      | 12       | cotización fuera de cadena / SDK               |
| `AdminCancelOrders` | 13       | ninguno                                        |

## Cambios de reserva / estado

* **Fórmula de activos del pool.** Los activos totales del pool ahora son `saldos de vault − PnL pendiente (need_take_pnl)`; el término de orden abierta de OpenBook — ya cero en la práctica — se elimina. El código de cotización puede leer directamente de los saldos de vault.
* **Campos de estado deprecados.** `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` y `swap_acc_coin_fee` se retienen para compatibilidad de diseño pero **ya no se actualizan**. Los consumidores que dependen de los contadores de volumen `swap_*` deben cambiar a registros de transacciones.
* **Inicialización de `AmmInfo`.** `coin_lot_size`, `pc_lot_size` y `min_size` ahora se inicializan a `0`.
* **Dependencia eliminada y CPIs.** El crate `serum_dex` se elimina de `Cargo.toml`; todos los CPIs de Serum DEX (`invoke_dex_new_order_v3`, `invoke_dex_cancel_order_v2`, `invoke_dex_settle_funds`, `invoke_dex_init_open_orders`, …) se eliminan de `invokers.rs`. Structs de datos eliminados: `LastOrderDistance`, `SimulateParams`, `RunCrankData`, `GetPoolData`, `GetSwapBaseInData`, `GetSwapBaseOutData`.
