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

# AMM v4 talimatları

> Bütün AMM v4 talimatları, argümanları, bağlı pool ve OpenBook hesapları, her birinin ön ve son koşulları.

<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 →](/products/amm-v4/instructions)
</Info>

<Info>
  AMM v4 talimatları düzenli olarak hem **pool tarafı** (AMM v4 program hesapları) hem de **market tarafı** (bağlı market için OpenBook hesapları) bekler. Her iki hesap grubunu da atlamak veya eşleştirmemek işlemi tersine çevirir. Aşağıdaki hesap listeleri açıklık için Raydium SDK'dan alan adlarını kullanır; temel IDL bazen `serum_*` önekleri kullanır.
</Info>

## Talimat envanteri

| Grup               | Talimat               | Notlar                                                                                              |
| ------------------ | --------------------- | --------------------------------------------------------------------------------------------------- |
| Pool yaşam döngüsü | `Initialize2`         | Şu anki pool oluşturma talimatı (hala işlevsel; UI yeni poollar için CPMM'ye varsayılan ayarlanır). |
| Likidite           | `Deposit`             | Likidite ekleyin, LP alın.                                                                          |
| Likidite           | `Withdraw`            | LP yakın, her iki tarafını orantılı olarak alın.                                                    |
| Swap               | `SwapBaseIn`          | Tam giriş swapı (tam yol: vault'lar + OpenBook).                                                    |
| Swap               | `SwapBaseOut`         | Tam çıkış swapı (tam yol).                                                                          |
| Swap               | `SwapBaseInV2`        | OpenBook'u atlayan tam giriş swapı — sadece vault'lar, daha az hesap.                               |
| Swap               | `SwapBaseOutV2`       | OpenBook'u atlayan tam çıkış swapı.                                                                 |
| Bakım              | `SetParams`           | Admin: pool parametrelerini değiştirin.                                                             |
| Bakım              | `WithdrawPnl`         | Birikmiş protokol PnL'sini PnL-sahibi hesaplara taşıyın.                                            |
| Bakım              | `CreateConfigAccount` | Admin: program düzeyinde `AmmConfig` PDA'sını başlatın.                                             |
| Bakım              | `UpdateConfigAccount` | Admin: program düzeyinde yapılandırma parametrelerini değiştirin.                                   |

SDK kullanıcıya dönük talimatlar için derleyicileri ortaya koyar. Bakım talimatları tipik olarak Raydium keeper tarafından çağrılır.

## `Initialize2`

Mevcut bir OpenBook market'ine bağlı yeni bir AMM v4 pool'u başlatın.

**Argümanlar**

```
nonce:        u8
open_time:    u64
init_pc_amount:   u64
init_coin_amount: u64
```

**Hesaplar** (yazılabilir `W`, imzalayanlar `S`)

| #  | Ad                           | W | S | Notlar                                              |
| -- | ---------------------------- | - | - | --------------------------------------------------- |
| 1  | `token_program`              |   |   | SPL Token.                                          |
| 2  | `system_program`             |   |   |                                                     |
| 3  | `rent`                       |   |   |                                                     |
| 4  | `amm`                        | W |   | `AmmInfo` hesabı (seeded anahtar).                  |
| 5  | `amm_authority`              |   |   | Program PDA'sı.                                     |
| 6  | `amm_open_orders`            | W |   | OpenBook `OpenOrders` (seeded).                     |
| 7  | `lp_mint`                    | W |   |                                                     |
| 8  | `coin_mint`                  |   |   |                                                     |
| 9  | `pc_mint`                    |   |   |                                                     |
| 10 | `pool_coin_token_account`    | W |   |                                                     |
| 11 | `pool_pc_token_account`      | W |   |                                                     |
| 12 | `pool_withdraw_queue`        | W |   |                                                     |
| 13 | `pool_target_orders_account` | W |   |                                                     |
| 14 | `pool_lp_token_account`      | W |   | Yaratıcının LP ATA'sı.                              |
| 15 | `pool_temp_lp_token_account` | W |   | Geçici hesap.                                       |
| 16 | `market_program`             |   |   | OpenBook programı.                                  |
| 17 | `market`                     |   |   | OpenBook market'i.                                  |
| 18 | `user_wallet`                | W | S | Yaratıcı. Kira öder ve ilk depozitoyu finanse eder. |
| 19 | `user_token_coin`            | W |   |                                                     |
| 20 | `user_token_pc`              | W |   |                                                     |

**Son koşullar**

* `lp_supply = sqrt(init_coin_amount × init_pc_amount) − INIT_BURN`, burada `INIT_BURN` ≈ 100 LP birimi dolaşımdan çıkarılmış durumda tutulur.
* OpenBook emirleri **henüz** gönderilmemiştir; ilk `MonitorStep` ilk ızgarayı gönderir.

**Yaygın hatalar** — `InvalidInput` (eşleşmeyen ondalıklar, sıralanmamış), `NotApproved`, OpenBook tarafı `InvalidMarketState`.

## `Deposit`

Likidite ekleyin.

**Argümanlar**

```
max_coin_amount: u64
max_pc_amount:   u64
base_side:       u64    // 0 = coin üzerinde base, 1 = pc üzerinde base
// (bazı SDK varyantları other_amount_min'i de kabul eder)
```

**Hesaplar** (kısaltılmış)

| #  | Ad                        | W | S |
| -- | ------------------------- | - | - |
| 1  | `token_program`           |   |   |
| 2  | `amm`                     | W |   |
| 3  | `amm_authority`           |   |   |
| 4  | `amm_open_orders`         |   |   |
| 5  | `amm_target_orders`       | W |   |
| 6  | `lp_mint`                 | W |   |
| 7  | `pool_coin_token_account` | W |   |
| 8  | `pool_pc_token_account`   | W |   |
| 9  | `market`                  |   |   |
| 10 | `user_coin_token_account` | W |   |
| 11 | `user_pc_token_account`   | W |   |
| 12 | `user_lp_token_account`   | W |   |
| 13 | `user_owner`              |   | S |

**Matematik** — standart orantılı. Pool'un *etkili* rezervlerini (vault'lar + kitapta) kullanarak SDK, verilen LP miktarını verecek coin/pc çiftini hesaplar ve bunu `max_*` karşısında kontrol eder. Her iki taraf da sınırı aşarsa `ExceededSlippage` ile geri döner.

## `Withdraw`

LP'yi yakın, her iki tarafını alın.

**Argümanlar**

```
amount: u64    // Yakılacak LP
```

**Hesaplar** — `Deposit` gibi yön ters çevrilmiş; `lp_mint` yakma için yazılabilir, kullanıcı ATA'ları alıcılardır. Pro-rata matematiğinden önce içeride bir `MonitorStep` benzeri OpenBook'tan taşıma adımı gerçekleşir, böylece itfa işlemi taze rezervleri kullanır.

## `SwapBaseIn`

Tam giriş swapı. Her zaman bir **AMM-yolu** swapıdır (OpenBook eşleştirmesi aracılığıyla yönlendirilmez).

<Note>
  **Yeni kod için V2 varyantlarını kullanın.** AMM v4 artık likiditeyi OpenBook'la paylaşmadığından, tam OpenBook hesap setini doğrulama için hala gerektiren V1 giriş noktaları (`SwapBaseIn`, `SwapBaseOut`) işlevsel olarak gereksizdir. Yeni entegrasyonlar çok daha küçük hesap listeleri alan ve bugün kanonik yürütme yolunu temsil eden [`SwapBaseInV2` / `SwapBaseOutV2`](#swapbaseinv2-swapbaseoutv2) kullanmalıdır. V1 formları burada eksiksiz olmak ve mevcut zincir üstü işlemleri okumak için belgelenmiştir.
</Note>

**Argümanlar**

```
amount_in:            u64
minimum_amount_out:   u64
```

**Hesaplar** (kısaltılmış)

| #  | Ad                          | W | S |
| -- | --------------------------- | - | - |
| 1  | `token_program`             |   |   |
| 2  | `amm`                       | W |   |
| 3  | `amm_authority`             |   |   |
| 4  | `amm_open_orders`           | W |   |
| 5  | `amm_target_orders`         | W |   |
| 6  | `pool_coin_token_account`   | W |   |
| 7  | `pool_pc_token_account`     | W |   |
| 8  | `market_program`            |   |   |
| 9  | `market`                    | W |   |
| 10 | `market_bids`               | W |   |
| 11 | `market_asks`               | W |   |
| 12 | `market_event_queue`        | W |   |
| 13 | `market_coin_vault`         | W |   |
| 14 | `market_pc_vault`           | W |   |
| 15 | `market_vault_signer`       |   |   |
| 16 | `user_source_token_account` | W |   |
| 17 | `user_dest_token_account`   | W |   |
| 18 | `user_owner`                |   | S |

**Matematik** — bkz. [`products/amm-v4/math`](/tr/products/amm-v4/math).

**Ön koşullar**

* `amm.status` swapına izin verir (durum bitmaskının bit 0 ayarlanmamış).
* `amm.state_data.pool_open_time <= now`.
* `amount_in > 0`.
* `user_source_token_account` en az `amount_in` tutmaktadır.

**Son koşullar**

* Kullanıcı kaynak token'ın `amount_in`'ini kaybeder, hedef token'ın `amount_out ≥ minimum_amount_out`'unu kazanır.
* `state_data.swap_*_in_amount` ve `swap_*_out_amount` arttırılır (analitik için).
* `need_take_pnl_*` protokol ücreti payı ile arttırılır.

**Yaygın hatalar** — `ExceededSlippage`, `InvalidInput`, `InvalidStatus`, `InvalidMarket`.

## `SwapBaseOut`

Tam çıkış, `SwapBaseIn`'in tersi. Aynı hesaplar.

**Argümanlar**

```
max_amount_in: u64
amount_out:    u64
```

## `SwapBaseInV2` / `SwapBaseOutV2`

OpenBook hesaplarını **tamamen atlayan** varyant swap giriş noktaları. Matematik V1 yoluyla özdeştir, ancak hesap listesi yalnızca AMM tarafına küçülür:

| # | Ad                          | W | S |
| - | --------------------------- | - | - |
| 1 | `token_program`             |   |   |
| 2 | `amm`                       | W |   |
| 3 | `amm_authority`             |   |   |
| 4 | `amm_open_orders`           |   |   |
| 5 | `pool_coin_token_account`   | W |   |
| 6 | `pool_pc_token_account`     | W |   |
| 7 | `user_source_token_account` | W |   |
| 8 | `user_dest_token_account`   | W |   |
| 9 | `user_owner`                |   | S |

Pool'un etkili rezervleri hala OpenBook'a gönderilen token'ları hesaba katmaktadır, bu yüzden teklifin matematği değişmemiştir. İşlem ve hesap listesini küçültmek için V2'yi kullanın ve aynı işlemde OpenBook cranking ihtiyaç duymadığınızda market hesaplarını iletmekten kaçının. Raydium yönlendiricisi AMM v4'ü yönlendirirken her zaman V2 formunu kullanır.

Argümanlar V1 formlarıyla aynıdır (`SwapBaseInV2` için `amount_in / minimum_amount_out`; `SwapBaseOutV2` için `max_amount_in / amount_out`).

## `MonitorStep` (eski / atıl)

<Note>
  **Artık cranked değildir.** AMM v4 artık likiditeyi OpenBook'la paylaşmadığından, `MonitorStep`'in yapacak bir şeyi yoktur — pool'un gönderilecek, iptal edilecek veya değiştirilecek emirleri yoktur. Talimat geriye dönük uyumluluk için zincir üstü programda kalır ancak Raydium keeper artık bunu çağırmaz. Manuel olarak çağırmak etkili olarak bir işlem-uzun (zerolu durum yenileme dışında) ve entegratörler tarafından gerekli olmamalıdır.
</Note>

Başlangıçta bu talimat pool'un OpenBook etkileşimini cranked etti.

**Argümanlar**

```
plan_order_limit:   u16
place_order_limit:  u16
cancel_order_limit: u16
```

**Hesaplar** — bir swap için yukarıdaki her şey plus idari OpenBook hesapları.

**Orijinal etki** (şu anda pratikte artık ilişkili değildir):

* Herhangi bir doldurulan emri taşıdı (bunların gelirleri OpenBook CPI aracılığıyla `market_coin_vault`/`market_pc_vault`'tan pool'un vault'larına taşındı).
* Fiyatları veya boyutları artık `target_orders` ile eşleşmeyen eski emirleri iptal etti.
* `target_orders` ve `amm_open_orders` arasındaki boşluğu kapatmak için yeni emirler gönderdi.

İzinsiz. Herhangi bir hesap bunu çağırabilir; tarihsel olarak Raydium keeper bunu düzenli olarak yaptı.

## `WithdrawPnl` / `TakePnl`

Birikmiş protokol ücretlerinin yönetici taraması.

**Argümanlar**

* `WithdrawPnl` argüman almaz; `need_take_pnl_*` okur ve tam bu miktarları taşır.

**Hesaplar** (kısaltılmış)

| #  | Ad                        | W | S |                                  |
| -- | ------------------------- | - | - | -------------------------------- |
| 1  | `token_program`           |   |   |                                  |
| 2  | `amm`                     | W |   |                                  |
| 3  | `amm_authority`           |   |   |                                  |
| 4  | `amm_config`              |   |   |                                  |
| 5  | `amm_open_orders`         | W |   |                                  |
| 6  | `pool_coin_token_account` | W |   |                                  |
| 7  | `pool_pc_token_account`   | W |   |                                  |
| 8  | `pnl_coin_token_account`  | W |   | Alıcı, `AmmConfig`'de saklanmış. |
| 9  | `pnl_pc_token_account`    | W |   |                                  |
| 10 | `pnl_owner`               |   | S | Admin multisig.                  |
| 11 | `market_program`          |   |   |                                  |
| 12 | `market`                  | W |   |                                  |
| 13 | `market_event_queue`      | W |   |                                  |
| 14 | `market_coin_vault`       | W |   |                                  |
| 15 | `market_pc_vault`         | W |   |                                  |
| 16 | `market_vault_signer`     |   |   |                                  |

**Etki**

* `need_take_pnl_coin`'i `pool_coin_token_account`'tan `pnl_coin_token_account`'a taşır.
* Pc için de aynı.
* `need_take_pnl_coin` ve `need_take_pnl_pc`'yi sıfırlar.

Birikmiş PnL zaten değişmezden çıkarıldığından rezervlerde değişiklik yok.

## `SetParams`

Yönetim parametresi değişiklikleri: durum bitmaskı, sıralama ızgarası derinliği, miktar dalgaları, ücretler (nadiren), vb. Raydium multisig tarafından çağrılır. Argümanlar bir `param: u8` etiketi + payload'dır, CPMM'nin `UpdateAmmConfig`'ine benzerdir.

## Durum değişimi matrisi

| Talimat       | `lp_mint` arzı                     | Vault'lar                                | PnL sayaçları | OpenBook                      |
| ------------- | ---------------------------------- | ---------------------------------------- | ------------- | ----------------------------- |
| `Initialize2` | yaratıcıya başlangıç arzı basılmış | `+ init_coin_amount`, `+ init_pc_amount` | 0             | OpenOrders oluşturulmuş       |
| `Deposit`     | +                                  | + her ikisi                              | —             | taşıma doldurmaları           |
| `Withdraw`    | −                                  | − her ikisi                              | —             | taşıma doldurmaları           |
| `SwapBaseIn`  | —                                  | + giriş, − çıkış                         | + pnl payı    | belki ızgarayı yeniden gönder |
| `SwapBaseOut` | —                                  | + giriş, − çıkış                         | + pnl payı    | belki ızgarayı yeniden gönder |
| `MonitorStep` | —                                  | taşıma doldurmaları                      | —             | iptal / gönder                |
| `WithdrawPnl` | —                                  | − (pnl taşındı)                          | 0             | —                             |
| `SetParams`   | —                                  | —                                        | —             | —                             |

## Bundan sonra nereye gidilir

* [`products/amm-v4/code-demos`](/tr/products/amm-v4/code-demos) — swap ve LP akışları için TypeScript örnekleri.
* [`products/amm-v4/fees`](/tr/products/amm-v4/fees) — `WithdrawPnl` detayları ve ücret bölünmesi.
* [`reference/error-codes`](/tr/reference/error-codes) — ileri-referans tablosu (AMM v4 hataları o sayfada listelenir).

Kaynaklar:

* [Raydium AMM programı — `raydium-io/raydium-amm`](https://github.com/raydium-io/raydium-amm)
* Raydium SDK v2 `Liquidity` modülü
* OpenBook programı — market tarafında hesap doğrulamaları
