> ## 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-Abhängigkeit entfernen

> AMM v4 entfernt seine inaktive OpenBook-/Serum-Abhängigkeit, CPIs und Market-Making-Instruktionen: v1 Swap/Deposit/Withdraw bleiben kompatibel, WithdrawPnl und SetParams sind hart-brechend, und mehrere Instruktionen sind nicht mehr aufrufbar.

<Info>
  **Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.**

  [Englische Version ansehen →](/reference/changelog/2026-07-22-amm-v4-openbook-removal)
</Info>

AMM v4 **teilt Liquidität schon lange nicht mehr mit OpenBook (ehemals Serum)**; der Hybrid-Orderbuch-Market-Making-Pfad ist seit Jahren inaktiv. Dieses Upgrade ist die Bereinigung: Es **entfernt die Serum-Abhängigkeit, alle Orderbuch-CPIs und die toten Market-Making-Instruktionen** aus dem Programm und hinterlässt AMM v4 als reines Constant-Product-AMM (`x·y=k`). Es **ändert nicht** das aktuelle Trading-Verhalten — es gab keine OpenBook-Orders mehr zu stoppen.

## TL;DR für Integratoren

* **Swap / Deposit / Withdraw funktionieren ohne Änderungen weiter.** Transaktionen, die mit den alten Account-Layouts erstellt wurden, führen weiterhin aus — die entfernten Serum-/Market-Accounts werden einfach ignoriert (keine Validierung, kein CPI). `SwapBaseIn` / `SwapBaseOut` erwarten weiterhin **17 (+1 optional)** Accounts; `Deposit`- und `Withdraw`-Layouts sind unverändert. Sie **müssen nicht** ein Client-Update ausliefern, um bestehende Flows am Leben zu erhalten.

* **Migrieren Sie zu den V2-Swap-Entrypoints.** `SwapBaseInV2` / `SwapBaseOutV2` enthalten keine Market-Accounts und kein `amm_open_orders` (8 Accounts insgesamt), sodass Transaktionen kleiner und günstiger sind. Router/Aggregatoren sollten über V2 routen.

* **`WithdrawPnl` ist eine hart-brechende Änderung (nur Admin).** Sie geht von **17 (+1 optional) → 10** Accounts mit **keiner Kompatibilitäts-Parsing**; das alte Layout ist nicht ausgerichtet (altes #5 war `amm_open_orders`) und schlägt bei der Validierung fehl. Admin-Tools müssen aktualisiert werden.

* **`SetParams` ist eine hart-brechende Änderung (nur Admin).** Accounts schrumpfen auf `[amm, admin]`, und das `param`-Enum wird **neu nummeriert** (`Fees` 9 → 2, `SetOpenTime` 11 → 3); `AmmOwner`, `LastOrderDistance`, `UpdateOpenOrder` und die Grid-Parameter werden entfernt.

* **Mehrere Instruktionen sind nicht mehr aufrufbar.** `Initialize`, `PreInitialize`, `MonitorStep`, `MigrateToOpenBook`, `WithdrawSrm`, `SimulateInfo` und `AdminCancelOrders` werden jetzt zurückgewiesen. Verwenden Sie `Initialize2` zum Erstellen von Pools.

* **On-Chain-Account-Layouts sind byte-stabil, und Fehlercodes sind unverändert.** `AmmInfo` / `StateData` behalten ihr Layout (alte OpenBook-Felder bleiben erhalten, aber veraltet/eingefroren); die `AmmError`-Nummerierung wird beibehalten, mit nur einem neuen `NotAllowed` am Ende.

## Warum das wichtig ist (für Trader, LPs und Integratoren)

* **Trader** sehen keine Änderung im Swap-Verhalten oder der Preisgestaltung — die Constant-Product-Kurve ist unverändert. V2-Layout-Swaps sind günstiger zu landen, da sie \~8 weniger Accounts enthalten.

* **LPs** behalten die gleiche Deposit-/Withdraw-Ökonomie. Liquidität sitzt schon lange vollständig in den Pool-Vaults, daher ist der Pool-Wert vollständig im Pool; dieses Upgrade löscht nur die veraltete Market-Infrastruktur.

* **Integratoren** erhalten kleinere, einfachere Transaktionen und ein Quoting-Modell, das direkt aus den Vaults liest. Bestehende Integrationen brechen nicht (außer Admin `WithdrawPnl` / `SetParams`), aber der v1-Swap-Kompatibilitäts-Shim ist temporär — migrieren Sie zu V2 in Ihrem eigenen Tempo.

## Instruktions-Level-Änderungen

### Noch aufrufbar, Layout unverändert (rückwärts kompatibel)

`Initialize2`, `Deposit`, `Withdraw`, `SwapBaseIn`, `SwapBaseOut`, `CreateConfigAccount` und `UpdateConfigAccount` behalten ihre bestehenden Account-Listen. Bei `SwapBaseIn` / `SwapBaseOut`, `Deposit` und `Withdraw` werden die OpenBook-/Market-Accounts weiterhin positionell akzeptiert, aber **nicht mehr validiert oder verwendet** — kein CPI wird ausgegeben und Pool-Reserven werden nur aus Vaults berechnet. Die Account-**Anzahl** muss weiterhin übereinstimmen, sodass bestehende Transaktionen unverändert ausgeführt werden.

### `SwapBaseInV2` / `SwapBaseOutV2` — empfohlener Pfad

Lassen Sie die Market-Accounts und `amm_open_orders` vollständig weg (8 Accounts; Tags 16 / 17). Die Quote-Mathematik ist identisch mit v1. Neue Integrationen und Router sollten V2 verwenden.

### `WithdrawPnl` — 17 (+1 optional) → 10 Accounts (⚠️ hart-brechend, kein Kompatibilitätspfad)

`amm_open_orders` und alle sechs Market-Accounts werden entfernt. Das neue feste 10-Account-, nur-Admin-Layout hat **keine** Kompatibilitäts-Parsing; das alte Layout ist nicht ausgerichtet und schlägt mit Fehlern wie `InvalidCoinVault` fehl.

### `SetParams` — reduziert auf `[amm, admin]` (⚠️ hart-brechend) + neu nummerierte Parameter

Die Authority, Open-Orders, Target-Orders, Vault und alle Market-Accounts werden entfernt. Das `param`-Enum wird neu nummeriert und gekürzt:

| Parameter     | Alter Wert | Neuer Wert |
| ------------- | ---------- | ---------- |
| `Status`      | 0          | 0          |
| `State`       | 1          | 1          |
| `Fees`        | 9          | **2**      |
| `SetOpenTime` | 11         | **3**      |

Alle Orderbuch-Grid-Parameter (`OrderNum`, `Depth`, `AmountWave`, `MinPriceMultiplier`, `MaxPriceMultiplier`, `MinSize`, `VolMaxCutRatio`, `InitOrderDepth`, `SetSwitchTime`, `ClearOpenTime`, `Seperate`) sowie `AmmOwner`, `LastOrderDistance` und `UpdateOpenOrder` werden entfernt. Das `SetParamsInstruction`-Struct lässt `new_pubkey` und `last_order_distance` fallen.

### Nicht mehr aufrufbar (Rückweisung zur Laufzeit; Builder entfernt)

| Instruktion         | Tag | Ersatz                                  |
| ------------------- | --- | --------------------------------------- |
| `Initialize`        | 0   | `Initialize2`                           |
| `MonitorStep`       | 2   | keine (Orderbuch-Crank, eingestellt)    |
| `MigrateToOpenBook` | 5   | keine                                   |
| `WithdrawSrm`       | 8   | keine (SRM-Gebührenrabatt, eingestellt) |
| `PreInitialize`     | 10  | `Initialize2`                           |
| `SimulateInfo`      | 12  | Off-Chain / SDK-Quoting                 |
| `AdminCancelOrders` | 13  | keine                                   |

## Reserve-/State-Änderungen

* **Pool-Asset-Formel.** Gesamte Pool-Assets sind jetzt `Vault-Guthaben − ausstehende PnL (need_take_pnl)`; der OpenBook-Open-Order-Term — in der Praxis bereits null — wird gelöscht. Quoting-Code kann direkt aus den Vault-Guthaben lesen.

* **Veraltete State-Felder.** `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` und `swap_acc_coin_fee` werden aus Layout-Kompatibilitätsgründen beibehalten, aber **nicht mehr aktualisiert**. Consumer, die auf die `swap_*`-Volumen-Counter angewiesen sind, sollten zu Trade-Logs wechseln.

* **`AmmInfo`-Initialisierung.** `coin_lot_size`, `pc_lot_size` und `min_size` werden jetzt auf `0` initialisiert.

* **Entfernte Abhängigkeit und CPIs.** Die `serum_dex`-Crate wird aus `Cargo.toml` entfernt; alle Serum-DEX-CPIs (`invoke_dex_new_order_v3`, `invoke_dex_cancel_order_v2`, `invoke_dex_settle_funds`, `invoke_dex_init_open_orders`, …) werden aus `invokers.rs` entfernt. Entfernte Datenstrukturen: `LastOrderDistance`, `SimulateParams`, `RunCrankData`, `GetPoolData`, `GetSwapBaseInData`, `GetSwapBaseOutData`.
