> ## 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: hapus dependensi OpenBook / Serum

> AMM v4 menghapus dependensi OpenBook/Serum yang sudah tidak aktif, semua CPI order-book, dan instruksi market-making yang sudah mati: v1 Swap/Deposit/Withdraw tetap kompatibel, WithdrawPnl dan SetParams adalah perubahan yang sangat memecah, dan beberapa instruksi tidak lagi dapat dipanggil.

<Info>
  **Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.**

  [Lihat versi bahasa Inggris →](/reference/changelog/2026-07-22-amm-v4-openbook-removal)
</Info>

AMM v4 **berhenti berbagi likuiditas ke OpenBook (dulunya Serum) sejak lama**; jalur market-making hybrid order-book telah tidak aktif selama bertahun-tahun. Upgrade ini adalah pembersihan: **menghapus dependensi Serum, semua CPI order-book, dan instruksi market-making yang sudah mati** dari program, meninggalkan AMM v4 sebagai AMM constant-product (`x·y=k`) murni. Ini **tidak** mengubah perilaku trading langsung apa pun — tidak ada pesanan OpenBook yang tersisa untuk dihentikan.

## TL;DR untuk integrator

* **Swap / Deposit / Withdraw tetap bekerja tanpa perubahan.** Transaksi yang dibangun dengan tata letak akun lama masih dieksekusi — akun Serum/market yang dihapus cukup diabaikan (tanpa validasi, tanpa CPI). `SwapBaseIn` / `SwapBaseOut` masih mengharapkan **17 (+1 opsional)** akun; tata letak `Deposit` dan `Withdraw` tidak berubah. Anda **tidak** perlu mengirimkan update klien untuk menjaga alur yang sudah ada tetap hidup.
* **Migrasi ke entrypoint swap V2.** `SwapBaseInV2` / `SwapBaseOutV2` tidak membawa akun market dan tidak ada `amm_open_orders` (8 akun total), jadi transaksi lebih kecil dan lebih murah. Router/agregator harus merutekan melalui V2.
* **`WithdrawPnl` adalah perubahan yang sangat memecah (admin saja).** Berkurang dari **17 (+1 opsional) → 10** akun dengan **tanpa parsing kompatibilitas**; tata letak lama tidak selaras (lama #5 adalah `amm_open_orders`) dan gagal validasi. Tooling admin harus diperbarui.
* **`SetParams` adalah perubahan yang sangat memecah (admin saja).** Akun menyusut menjadi `[amm, admin]`, dan enum `param` **dinomori ulang** (`Fees` 9 → 2, `SetOpenTime` 11 → 3); `AmmOwner`, `LastOrderDistance`, `UpdateOpenOrder` dan parameter grid dihapus.
* **Beberapa instruksi tidak lagi dapat dipanggil.** `Initialize`, `PreInitialize`, `MonitorStep`, `MigrateToOpenBook`, `WithdrawSrm`, `SimulateInfo`, dan `AdminCancelOrders` sekarang kembali. Gunakan `Initialize2` untuk membuat pool.
* **Tata letak akun on-chain stabil byte, dan kode kesalahan tidak berubah.** `AmmInfo` / `StateData` mempertahankan tata letak mereka (bidang OpenBook lama dipertahankan tetapi sudah usang/beku); penomoran `AmmError` dipertahankan, dengan hanya `NotAllowed` baru yang ditambahkan.

## Mengapa ini penting (untuk trader, LP, dan integrator)

* **Trader** tidak melihat perubahan dalam perilaku swap atau harga — kurva constant-product tidak berubah. Swap tata letak V2 lebih murah untuk mendarat karena membawa \~8 akun lebih sedikit.
* **LP** mempertahankan ekonomi deposit/withdraw yang sama. Likuiditas telah lama duduk sepenuhnya di vault pool, jadi nilai pool sepenuhnya on-pool; upgrade ini hanya menghapus pipa pasar yang sudah usang.
* **Integrator** mendapatkan transaksi yang lebih kecil dan sederhana serta model quoting yang membaca langsung dari vault. Integrasi yang sudah ada tidak rusak (kecuali admin `WithdrawPnl` / `SetParams`), tetapi shim kompatibilitas v1-swap bersifat sementara — migrasi ke V2 sesuai kenyamanan Anda.

## Perubahan tingkat instruksi

### Masih dapat dipanggil, tata letak tidak berubah (kompatibel ke belakang)

`Initialize2`, `Deposit`, `Withdraw`, `SwapBaseIn`, `SwapBaseOut`, `CreateConfigAccount`, dan `UpdateConfigAccount` mempertahankan daftar akun yang sudah ada. Pada `SwapBaseIn` / `SwapBaseOut`, `Deposit`, dan `Withdraw`, akun OpenBook/market masih diterima secara posisional tetapi **tidak lagi divalidasi atau digunakan** — tidak ada CPI yang dikeluarkan dan cadangan pool dihitung hanya vault. Jumlah akun **masih** harus cocok, jadi transaksi yang sudah ada terus dieksekusi tanpa perubahan.

### `SwapBaseInV2` / `SwapBaseOutV2` — jalur yang direkomendasikan

Hilangkan akun market dan `amm_open_orders` sepenuhnya (8 akun; tag 16 / 17). Matematika quote identik dengan v1. Integrasi baru dan router harus menggunakan V2.

### `WithdrawPnl` — 17 (+1 opsional) → 10 akun (⚠️ sangat memecah, tidak ada jalur kompatibilitas)

`amm_open_orders` dan keenam akun market dihapus. Tata letak 10-akun tetap baru, admin-only, memiliki **tanpa** parsing kompatibilitas; tata letak lama tidak selaras dan gagal dengan kesalahan seperti `InvalidCoinVault`.

### `SetParams` — berkurang menjadi `[amm, admin]` (⚠️ sangat memecah) + parameter dinomori ulang

Otoritas, open-orders, target-orders, vault, dan semua akun market dihapus. Enum `param` dinomori ulang dan dipangkas:

| Param         | Nilai lama | Nilai baru |
| ------------- | ---------- | ---------- |
| `Status`      | 0          | 0          |
| `State`       | 1          | 1          |
| `Fees`        | 9          | **2**      |
| `SetOpenTime` | 11         | **3**      |

Semua parameter grid order-book (`OrderNum`, `Depth`, `AmountWave`, `MinPriceMultiplier`, `MaxPriceMultiplier`, `MinSize`, `VolMaxCutRatio`, `InitOrderDepth`, `SetSwitchTime`, `ClearOpenTime`, `Seperate`) ditambah `AmmOwner`, `LastOrderDistance`, dan `UpdateOpenOrder` dihapus. Struct `SetParamsInstruction` menghapus `new_pubkey` dan `last_order_distance`.

### Tidak lagi dapat dipanggil (kembali saat runtime; builder dihapus)

| Instruksi           | tag | Pengganti                             |
| ------------------- | --- | ------------------------------------- |
| `Initialize`        | 0   | `Initialize2`                         |
| `MonitorStep`       | 2   | tidak ada (order-book crank, pensiun) |
| `MigrateToOpenBook` | 5   | tidak ada                             |
| `WithdrawSrm`       | 8   | tidak ada (diskon biaya SRM, pensiun) |
| `PreInitialize`     | 10  | `Initialize2`                         |
| `SimulateInfo`      | 12  | quoting off-chain / SDK               |
| `AdminCancelOrders` | 13  | tidak ada                             |

## Perubahan cadangan / state

* **Formula aset pool.** Total aset pool sekarang `saldo vault − PnL tertunda (need_take_pnl)`; istilah open-order OpenBook — sudah nol dalam praktik — dihapus. Kode quoting dapat membaca langsung dari saldo vault.
* **Bidang state yang sudah usang.** `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`, dan `swap_acc_coin_fee` dipertahankan untuk kompatibilitas tata letak tetapi **tidak lagi diperbarui**. Konsumen yang mengandalkan penghitung volume `swap_*` harus beralih ke trade logs.
* **Inisialisasi `AmmInfo`.** `coin_lot_size`, `pc_lot_size`, dan `min_size` sekarang diinisialisasi ke `0`.
* **Dependensi dan CPI yang dihapus.** Crate `serum_dex` dihapus dari `Cargo.toml`; semua Serum DEX CPI (`invoke_dex_new_order_v3`, `invoke_dex_cancel_order_v2`, `invoke_dex_settle_funds`, `invoke_dex_init_open_orders`, …) dihapus dari `invokers.rs`. Struct data yang dihapus: `LastOrderDistance`, `SimulateParams`, `RunCrankData`, `GetPoolData`, `GetSwapBaseInData`, `GetSwapBaseOutData`.
