> ## 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 bağımlılığını kaldırma

> AMM v4, hareketsiz kalan OpenBook/Serum bağımlılığını, CPI'ları ve pazar yapıcılık talimatlarını kaldırır: v1 Swap/Deposit/Withdraw uyumlu kalır, WithdrawPnl ve SetParams kırıcı değişikliklerdir ve birkaç talimat artık çağrılamaz.

<Info>
  **Bu sayfa yapay zekâ tarafından otomatik olarak çevrilmiştir. İngilizce sürüm esas alınır.**

  [İngilizce sürümü görüntüle →](/reference/changelog/2026-07-22-amm-v4-openbook-removal)
</Info>

AMM v4, **uzun zaman önce OpenBook'a (eski adıyla Serum) likidite paylaşmayı durdurmuştur**; hibrit order-book pazar yapıcılığı yolu yıllardır hareketsiz kalmıştır. Bu yükseltme temizliktir: **Serum bağımlılığını, tüm order-book CPI'larını ve ölü pazar yapıcılık talimatlarını programdan kaldırır**, AMM v4'ü saf bir sabit-çarpım (`x·y=k`) AMM olarak bırakır. Canlı ticaret davranışını **değiştirmez** — yerleştirilecek OpenBook siparişi kalmamıştır.

## Entegratörler için TL;DR

* **Swap / Deposit / Withdraw değişiklik olmadan çalışmaya devam eder.** Eski hesap düzenleriyle oluşturulan işlemler yürütülür — kaldırılan Serum/pazar hesapları basitçe yoksayılır (doğrulama yok, CPI yok). `SwapBaseIn` / `SwapBaseOut` hala **17 (+1 isteğe bağlı)** hesap bekler; `Deposit` ve `Withdraw` düzenleri değişmez. Mevcut akışları canlı tutmak için istemci güncellemesi göndermeniz **gerekmez**.
* **V2 swap giriş noktalarına geçin.** `SwapBaseInV2` / `SwapBaseOutV2` pazar hesapları ve `amm_open_orders` taşımaz (toplam 8 hesap), bu nedenle işlemler daha küçük ve daha ucuzdur. Yönlendiriciler/toplayıcılar V2 üzerinden yönlendirmelidir.
* **`WithdrawPnl` kırıcı bir değişikliktir (yalnızca yönetici).** **17 (+1 isteğe bağlı) → 10** hesaba gider ve **uyumluluk ayrıştırması yoktur**; eski düzen hizalanmaz (eski #5 `amm_open_orders` idi) ve doğrulama başarısız olur. Yönetici araçları güncellenmelidir.
* **`SetParams` kırıcı bir değişikliktir (yalnızca yönetici).** Hesaplar `[amm, admin]` olarak küçülür ve `param` numaralandırması **yeniden numaralandırılır** (`Fees` 9 → 2, `SetOpenTime` 11 → 3); `AmmOwner`, `LastOrderDistance`, `UpdateOpenOrder` ve ızgara parametreleri kaldırılır.
* **Birkaç talimat artık çağrılamaz.** `Initialize`, `PreInitialize`, `MonitorStep`, `MigrateToOpenBook`, `WithdrawSrm`, `SimulateInfo` ve `AdminCancelOrders` artık geri döner. Havuzlar oluşturmak için `Initialize2` kullanın.
* **Zincir üstü hesap düzenleri bayt olarak kararlı ve hata kodları değişmez.** `AmmInfo` / `StateData` düzenlerini korur (eski OpenBook alanları korunur ancak kullanımdan kaldırılmış/dondurulmuş); `AmmError` numaralandırması korunur, yalnızca yeni `NotAllowed` eklenir.

## Bunun neden önemli olduğu (tüccarlar, LP'ler ve entegratörler için)

* **Tüccarlar** swap davranışında veya fiyatlandırmada değişiklik görmez — sabit-çarpım eğrisi değişmez. V2 düzeni swapları, \~8 daha az hesap taşıdığı için iniş açısından daha ucuzdur.
* **LP'ler** aynı yatırma/çekme ekonomisini korur. Likidite uzun süredir tamamen havuz kasalarında oturmuştur, bu nedenle havuz değeri tamamen havuzda; bu yükseltme yalnızca eski pazar tesisatını siler.
* **Entegratörler** daha küçük, daha basit işlemler ve doğrudan kasalardan okuyan bir alıntı modeli alır. Mevcut entegrasyonlar kırılmaz (yönetici `WithdrawPnl` / `SetParams` hariç), ancak v1-swap uyumluluk parçası geçicidir — uygun gördüğünüzde V2'ye geçin.

## Talimat düzeyinde değişiklikler

### Hala çağrılabilir, düzen değişmez (geriye dönük uyumlu)

`Initialize2`, `Deposit`, `Withdraw`, `SwapBaseIn`, `SwapBaseOut`, `CreateConfigAccount` ve `UpdateConfigAccount` mevcut hesap listelerini korur. `SwapBaseIn` / `SwapBaseOut`, `Deposit` ve `Withdraw` üzerinde OpenBook/pazar hesapları hala konumsal olarak kabul edilir ancak **artık doğrulanmaz veya kullanılmaz** — CPI verilmez ve havuz rezervleri yalnızca kasa olarak hesaplanır. Hesap **sayısı** hala eşleşmelidir, bu nedenle mevcut işlemler değişmeden yürütülür.

### `SwapBaseInV2` / `SwapBaseOutV2` — önerilen yol

Pazar hesaplarını ve `amm_open_orders`'ı tamamen atlayın (8 hesap; etiketler 16 / 17). Alıntı matematiği v1 ile aynıdır. Yeni entegrasyonlar ve yönlendiriciler V2 kullanmalıdır.

### `WithdrawPnl` — 17 (+1 isteğe bağlı) → 10 hesap (⚠️ kırıcı, uyumluluk yolu yok)

`amm_open_orders` ve altı pazar hesabının tümü kaldırılır. Yeni sabit 10 hesaplı, yalnızca yönetici düzeni **hiçbir** uyumluluk ayrıştırması içermez; eski düzen hizalanmaz ve `InvalidCoinVault` gibi hatalarla başarısız olur.

### `SetParams` — `[amm, admin]` olarak azaltılmış (⚠️ kırıcı) + yeniden numaralandırılan parametreler

Yetki, açık siparişler, hedef siparişler, kasa ve tüm pazar hesapları kaldırılır. `param` numaralandırması yeniden numaralandırılır ve kırpılır:

| Parametre     | Eski değer | Yeni değer |
| ------------- | ---------- | ---------- |
| `Status`      | 0          | 0          |
| `State`       | 1          | 1          |
| `Fees`        | 9          | **2**      |
| `SetOpenTime` | 11         | **3**      |

Tüm order-book-ızgara parametreleri (`OrderNum`, `Depth`, `AmountWave`, `MinPriceMultiplier`, `MaxPriceMultiplier`, `MinSize`, `VolMaxCutRatio`, `InitOrderDepth`, `SetSwitchTime`, `ClearOpenTime`, `Seperate`) artı `AmmOwner`, `LastOrderDistance` ve `UpdateOpenOrder` kaldırılır. `SetParamsInstruction` yapısı `new_pubkey` ve `last_order_distance`'ı bırakır.

### Artık çağrılamaz (çalışma zamanında geri döner; oluşturucular kaldırılır)

| Talimat             | etiket | Değiştirme                           |
| ------------------- | ------ | ------------------------------------ |
| `Initialize`        | 0      | `Initialize2`                        |
| `MonitorStep`       | 2      | hiçbiri (order-book krank, emekli)   |
| `MigrateToOpenBook` | 5      | hiçbiri                              |
| `WithdrawSrm`       | 8      | hiçbiri (SRM ücret indirimi, emekli) |
| `PreInitialize`     | 10     | `Initialize2`                        |
| `SimulateInfo`      | 12     | zincir dışı / SDK alıntısı           |
| `AdminCancelOrders` | 13     | hiçbiri                              |

## Rezerv / durum değişiklikleri

* **Havuz varlığı formülü.** Toplam havuz varlıkları artık `kasa bakiyeleri − beklemede olan PnL (need_take_pnl)`; OpenBook açık sipariş terimi — pratikte zaten sıfır — bırakılır. Alıntı kodu doğrudan kasa bakiyelerinden okuyabilir.
* **Kullanımdan kaldırılan durum alanları.** `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` ve `swap_acc_coin_fee` düzen uyumluluğu için korunur ancak **artık güncellenmez**. `swap_*` hacim sayaçlarına güvenen tüketiciler ticaret günlüklerine geçmelidir.
* **`AmmInfo` başlatma.** `coin_lot_size`, `pc_lot_size` ve `min_size` artık `0` olarak başlatılır.
* **Kaldırılan bağımlılık ve CPI'lar.** `serum_dex` sandığı `Cargo.toml`'den bırakılır; tüm Serum DEX CPI'ları (`invoke_dex_new_order_v3`, `invoke_dex_cancel_order_v2`, `invoke_dex_settle_funds`, `invoke_dex_init_open_orders`, …) `invokers.rs`'den kaldırılır. Kaldırılan veri yapıları: `LastOrderDistance`, `SimulateParams`, `RunCrankData`, `GetPoolData`, `GetSwapBaseInData`, `GetSwapBaseOutData`.
