> ## 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 hesapları

> Bir AMM v4 havuzunun tam hesap envanteri — AmmInfo, TargetOrders, OpenOrders, vault'lar, LP mint, authority — ve havuzun bağlı olduğu OpenBook hesapları.

<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/accounts)
</Info>

<Info>
  2026-07 güncellemesi itibarıyla, AMM v4'ün OpenBook / Serum bağımlılığı **kaldırılmıştır** — hiçbir instruction artık OpenBook durumunu okumaz veya yazmaz. Aşağıdaki market hesapları yalnızca eski v1 instruction düzenlerinde konumsal yer tutucu olarak (kabul edilir ancak yoksayılır) ve `AmmInfo` üzerinde referans alanları olarak tutulur. V2 swap giriş noktalarını kullanın; bunlar bu hesapları tamamen atlar. Bu sayfa, eski işlemleri okumak için hesapları "havuz tarafından sahip olunan" ve "OpenBook (eski)" bölümlerine ayırır.
</Info>

## Envanter

Bir AMM v4 havuzu, oluşturulduğunda `AmmInfo` üzerinde bir bağlı market kaydeder. Tam resim:

| Kategori        | Hesap                                | Sahibi          | Rol                                                                                                                  |
| --------------- | ------------------------------------ | --------------- | -------------------------------------------------------------------------------------------------------------------- |
| Havuz           | `AmmInfo`                            | AMM v4 programı | Havuz durumu: tahakkuk eden ücretler, durum, vault'lara referanslar (ve eski alanlar olarak market).                 |
| Havuz           | `amm_authority`                      | AMM v4 programı | Program tarafından sahip olunan PDA, vault hareketlerini imzalar. Tüm AMM v4 havuzları arasında paylaşılır.          |
| Havuz           | `amm_open_orders`                    | OpenBook        | Eski `OpenOrders` referansı. Program tarafından artık okunmaz/yazılmaz; v1 düzenlerinde konumsal olarak geçirilir.   |
| Havuz           | `amm_target_orders`                  | AMM v4 programı | Eski target-orders hesabı. `WithdrawPnl` tarafından hala referans alınır (hesap #10 olarak) ancak grid oluşturulmaz. |
| Havuz           | `pool_coin_token_account`            | SPL Token       | Havuzun coin tarafı vault'u (`amm_authority`'nin ATA'sı).                                                            |
| Havuz           | `pool_pc_token_account`              | SPL Token       | Havuzun pc tarafı vault'u.                                                                                           |
| Havuz           | `lp_mint`                            | SPL Token       | Fungible LP mint'i.                                                                                                  |
| Havuz           | `pool_withdraw_queue`                | AMM v4 programı | Gecikmeli çekilişler için eski kuyruk; sıfır uzunlukta tutulur.                                                      |
| Havuz           | `pool_temp_lp`                       | AMM v4 programı | Yardımcı LP hesabı.                                                                                                  |
| Eski (OpenBook) | `serum_market`                       | OpenBook        | Bağlı market. v1 düzenlerinde geçirilir ancak artık doğrulanmaz veya kullanılmaz.                                    |
| Eski            | `serum_bids`, `serum_asks`           | OpenBook        | Alış/satış kuyrukları. Yoksayılır.                                                                                   |
| Eski            | `serum_event_queue`                  | OpenBook        | Bekleyen olaylar. Yoksayılır.                                                                                        |
| Eski            | `serum_coin_vault`, `serum_pc_vault` | SPL Token       | Market düzeyinde vault'lar. Yoksayılır.                                                                              |
| Eski            | `serum_vault_signer`                 | OpenBook        | Market düzeyinde PDA. Yoksayılır.                                                                                    |

Not: "serum" ön eki, geriye dönük uyumluluk için AMM v4'ün IDL ve alan adlarında tutulur. Bu hesaplar OpenBook kaldırılmasından sonra artık işlevsel değildir.

## `AmmInfo`

Havuzun kök durum hesabı. Büyüktür (≈ 752 bayt) çünkü hem havuz hem de OpenBook referanslarını satır içinde taşır.

```rust theme={null}
// programs/amm/src/state.rs (kısaltılmış; alan sırası / adları IDL'yi takip eder)
pub struct AmmInfo {
    pub status: u64,           // bitmask: swap/deposit/withdraw/crank etkin
    pub nonce:  u64,           // amm_authority türetmek için kullanılan bump
    pub order_num: u64,
    pub depth: u64,
    pub coin_decimals: u64,
    pub pc_decimals:   u64,
    pub state:         u64,    // iç durum makinesi
    pub reset_flag:    u64,
    pub min_size:      u64,
    pub vol_max_cut_ratio: u64,
    pub amount_wave: u64,
    pub coin_lot_size: u64,    // eski (OpenBook lot boyutu); şimdi 0 olarak başlatılır
    pub pc_lot_size:   u64,    // eski; şimdi 0 olarak başlatılır
    pub min_price_multiplier: u64,
    pub max_price_multiplier: u64,
    pub sys_decimal_value: u64,

    pub fees: Fees,            // işlem/protokol/fon ücret oranları
    pub state_data: StateData,

    // Havuz tarafından sahip olunan hesaplar:
    pub coin_vault: Pubkey,
    pub pc_vault:   Pubkey,
    pub coin_vault_mint: Pubkey,
    pub pc_vault_mint:   Pubkey,
    pub lp_mint:  Pubkey,
    pub open_orders: Pubkey,   // havuzun OpenBook'taki OpenOrders'ı
    pub market: Pubkey,        // OpenBook market'i
    pub market_program: Pubkey, // OpenBook program ID'si
    pub target_orders: Pubkey,
    pub withdraw_queue: Pubkey,
    pub lp_vault:       Pubkey, // = pool_temp_lp
    pub owner: Pubkey,          // admin (multisig)
    pub lp_reserve: u64,
    pub padding: [u64; 3],
}

pub struct Fees {
    pub min_separate_numerator:   u64,     // 5
    pub min_separate_denominator: u64,     // 10_000
    pub trade_fee_numerator:      u64,     // 25  → OpenBook entegrasyonu tarafından kullanılır
    pub trade_fee_denominator:    u64,     // 10_000
    pub pnl_numerator:            u64,     // 12  → protokolün swap ücretinin payı
    pub pnl_denominator:          u64,     // 100 → yani 12/100 = ücretin %12'si, = hacmin %0.03'ü
    pub swap_fee_numerator:       u64,     // 25  → %0.25 brüt swap ücreti
    pub swap_fee_denominator:     u64,     // 10_000
}

pub struct StateData {
    pub need_take_pnl_coin: u64,        // hala güncellenir — tahakkuk eden protokol ücreti (coin tarafı)
    pub need_take_pnl_pc:   u64,        // hala güncellenir — tahakkuk eden protokol ücreti (pc tarafı)
    pub total_pnl_pc:   u64,            // DEPRECATED — artık güncellenmez
    pub total_pnl_coin: u64,            // DEPRECATED — artık güncellenmez
    pub pool_open_time: u64,            // hala kullanılır — havuz açılış zaman damgası
    pub padding: [u64; 2],              // ayrılmış
    pub orderbook_to_init_time: u64,    // DEPRECATED — artık güncellenmez
    pub swap_coin_in_amount: u128,      // DEPRECATED — hacim sayaçları donduruldu
    pub swap_pc_out_amount:  u128,      // DEPRECATED
    pub swap_acc_pc_fee:    u64,        // DEPRECATED
    pub swap_pc_in_amount:  u128,       // DEPRECATED
    pub swap_coin_out_amount: u128,     // DEPRECATED
    pub swap_acc_coin_fee:  u64,        // DEPRECATED
}
```

<Note>
  Struct **düzeni değişmemiştir** (bayt uyumlu) bu nedenle mevcut deserializer'lar çalışmaya devam eder, ancak OpenBook kaldırılmasından sonra yukarıda `DEPRECATED` olarak işaretlenen alanlar **artık yazılmaz** — `swap_*` hacim sayaçları son değerlerinde dondurulur. Hacim analitikleri için bu alanlar yerine işlem günlüklerini kullanın. Yalnızca `need_take_pnl_*` ve `pool_open_time` aktif olarak korunur.
</Note>

Entegratör tarafından görülen alanlar:

* **`coin_vault`**, **`pc_vault`** — havuzun SPL Token vault'ları. `coin`, Serum/OpenBook kuralına göre `token_0`'dır (taban), `pc` ise `token_1`'dir (alıntı).
* **`coin_decimals`**, **`pc_decimals`** — mint'lerle eşleşir.
* **`open_orders`**, **`target_orders`**, **`market`** — eski referans alanları. `AmmInfo` üzerinde hala mevcuttur ve v1 instruction düzenlerinde konumsal olarak hala geçirilir, ancak program artık bunları okumaz veya doğrulamaz. V2 swap giriş noktaları bunları atlar.
* **`fees.swap_fee_numerator / swap_fee_denominator`** — birleştirilmiş işlem ücreti. Varsayılan `25 / 10_000 = %0.25`.
* **`status`** — işlemleri kapı açan bitmask. `AdminSetStatus` aracılığıyla admin tarafından ayarlanabilir.
* **`state_data.need_take_pnl_*`** — brüt tahakkuk eden ücretler ile taranmış olanlar arasındaki delta. `TakePnl` bunları sıfırlar.

## OpenBook bağlantısı

<Note>
  **Kaldırılmıştır.** OpenBook / Serum bağımlılığı programdan silinmiştir (2026-07 güncellemesi). Bu bölümde açıklanan hesaplar artık doğrulanmaz veya kullanılmaz. `AmmInfo` üzerinde referans alanları ve eski v1 instruction düzenlerinde konumsal yer tutucuları olarak kalırlar. **V2 swap giriş noktalarını** ([`SwapBaseInV2` / `SwapBaseOutV2`](/tr/products/amm-v4/instructions)) kullanın; bunlar bu hesapları tamamen atlar.
</Note>

Eski **v1** `SwapBaseIn` / `SwapBaseOut`, `Deposit` veya `Withdraw` instruction'ını çağırdığınızda, hesap **sayısı** eski düzenle eşleşmelidir (market hesapları tarihsel konumlarını işgal eder), ancak **içerikleri artık kontrol edilmez** — bunlara karşı CPI verilmez. Yeni kod, bu hesapları hiç almayan V2 swap varyantlarını kullanmalıdır.

```ts theme={null}
const market = ...;  // OpenBook market PublicKey

// OpenBook'un market hesabında ortaya çıkardığı alanlar:
const marketDecoded = OpenBookMarket.decode(marketAccountData);
const {
  bids:           serumBids,
  asks:           serumAsks,
  eventQueue:     serumEventQueue,
  requestQueue:   serumRequestQueue,
  baseVault:      serumCoinVault,
  quoteVault:     serumPcVault,
  vaultSignerNonce,
} = marketDecoded;

const serumVaultSigner = PublicKey.createProgramAddressSync(
  [market.toBuffer(), u64ToBytes(vaultSignerNonce)],
  OPENBOOK_PROGRAM_ID,
);
```

AMM'nin `amm_open_orders`'ı, bu market'te havuzun limit-order durumunu tutan OpenBook tarafından sahip olunan bir hesaptır: aktif emirler, kapatılan bakiyeler, referrer'lar vb. `amm_target_orders` AMM tarafındandır: AMM'nin *amaçlanan* grid'ini (her order slot'u için fiyat/boyut) tutar, böylece program şu anda ne kadar yayınlandığını ucuza karşılaştırabilir ve farkı yerleştirebilir / iptal edebilir.

## Authority PDA'ları

Tüm AMM v4 programı için tam olarak bir `amm_authority` PDA vardır. Tohumu önemsizdir (`["amm authority"]`) ve bump'ı her `AmmInfo` üzerinde depolanır. Bu authority, tüm AMM v4 havuzları için tüm token hareketlerini imzalar.

```ts theme={null}
const AMM_V4_PROGRAM_ID = new PublicKey(
  "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8",
);
const [ammAuthority] = PublicKey.findProgramAddressSync(
  [Buffer.from("amm authority")],
  AMM_V4_PROGRAM_ID,
);
```

OpenBook işlemlerini imzalamak için havuz başına türetilen ayrı bir **havuz kapsamlı** authority vardır (`amm_authority` yukarıda aslında bu programın tasarımında her ikisini de kapsar; farklı sürümler farklı türetme kullandı, bu nedenle kodda belirli havuzun `AmmInfo.nonce`'ını kontrol edin).

## Vault'lar

Havuzun SPL Token vault'ları, `owner`'ı `amm_authority` olan standart token hesaplarıdır. ATA değil — adresleri `Initialize` sırasında `["amm_associated_seed", coin_mint_or_pc_mint, market, amm_id]` tohumlarıyla türetilen belirli PDA'lardır. Adresler `AmmInfo` üzerinde depolanır; türetme tek seferlik bir merak konusudur.

Token-2022 **desteklenmez**. Program, tüm vault hareketleri için SPL Token'ın program ID'sini hardcode eder. Bir AMM v4 havuzunu Token-2022 mint'ine bağlamaya çalışmak `Initialize` sırasında başarısız olur.

## LP mint

`amm_authority`'nin authority'si olan klasik bir SPL Token mint'i. Toplam arz, havuzun LP sahipliğini izler; LP'yi yakma, her iki vault'tan orantılı olarak token'ları döndürür. AMM v4 CPMM'den önce geldiğinden, havuz durumunda `lp_supply` aynası yoktur — mint'in zincir üzerindeki arzını doğrudan okuyun.

## Durum bitmask'ı

`AmmInfo.status` işlemleri kapı açar. Bitler (konum program sürümleri arasında farklılık gösterebilir — kaynaktan onaylayın):

| Bit | Bayrak              | Etki                                             |
| --- | ------------------- | ------------------------------------------------ |
| 0   | `SWAP_DISABLED`     | `Swap*` reddeder.                                |
| 1   | `DEPOSIT_DISABLED`  | `Deposit` reddeder.                              |
| 2   | `WITHDRAW_DISABLED` | `Withdraw` reddeder.                             |
| 3   | `CLMM_LIKE_MIGRATE` | Ops tarafından kullanılan geçiş kapısı bayrak'ı. |

Raydium multisig'i bunları `SetParams` aracılığıyla ayarlar (`param = Status` ile). (`AdminCancelOrders` kaldırılmıştır.)

## Gözlem / oracle

**AMM v4'ün adanmış gözlem hesabı yoktur.** Zincir üzerinde TWAP'a ihtiyaç duyan diğer protokoller, OpenBook'un kitap geçişlerini dolaylı olarak tüketir veya zincir dışından okur. Raydium TWAP'ına program desteği ile ihtiyacınız varsa, CPMM veya CLMM kullanın.

## Bir havuzun hesaplarını sıfırdan türetme

AMM v4, belirleyici per-pair PDA'lar için tasarlanmadığından (bu Solana kuralından önce gelir), kanonik `amm_id` bir **tohumlanmış keypair**'dir:

```
ammId = createWithSeed(
  owner: ammAuthority,
  seed:  marketPubkey.toBase58().slice(0, 32),
  programId: AMM_V4_PROGRAM_ID,
)
```

Aynı tohumlanmış anahtar deseni `amm_open_orders`, `amm_target_orders`, `amm_withdraw_queue`, `pool_temp_lp`, `pool_coin_token_account`, `pool_pc_token_account` ve `lp_mint` için geçerlidir. SDK ve API bunları önceden hesaplar; `raydium-sdk-v2`'nin `Liquidity.getAssociatedPoolKeys` bölümüne bakın.

Uygulamada, entegratörler havuzun tam hesap setini `GET https://api-v3.raydium.io/pools/info/ids?ids=<POOL_ID>` veya SDK'dan okurlar. El ile türetme nadiren gereklidir.

## Yaşam döngüsü hızlı referansı

| Olay                                   | Oluşturulan Hesaplar                                                                                            | Yok Edilen Hesaplar |
| -------------------------------------- | --------------------------------------------------------------------------------------------------------------- | ------------------- |
| `Initialize2`                          | `amm_info`, `amm_open_orders`, `amm_target_orders`, vault'lar, `lp_mint`, `pool_withdraw_queue`, `pool_temp_lp` | —                   |
| `Deposit`                              | — (kullanıcı LP ATA'sı oluşturabilir)                                                                           | —                   |
| `Withdraw`                             | —                                                                                                               | —                   |
| `SwapBaseIn` / `SwapBaseOut` (v1 / V2) | — (kullanıcı ATA'sı oluşturabilir)                                                                              | —                   |
| `WithdrawPnl`                          | —                                                                                                               | —                   |

Havuzlar ve hesapları süresiz olarak kalır. Likidite tamamen çekilse bile, `AmmInfo` kalır.

## Nerede ne okuyacağınız

* **Matematik ve ücret aritmetiği**: [`products/amm-v4/math`](/tr/products/amm-v4/math).
* **Ücret bölünmesi ve CPMM/CLMM ile nasıl karşılaştırıldığı**: [`products/amm-v4/fees`](/tr/products/amm-v4/fees).
* **Instruction hesap listeleri**: [`products/amm-v4/instructions`](/tr/products/amm-v4/instructions).
* **OpenBook hesap türetmesi**: OpenBook program dokümanları ([`github.com/openbook-dex/program`](https://github.com/openbook-dex/program)).

Kaynaklar:

* [Raydium AMM programı — `raydium-io/raydium-amm`](https://github.com/raydium-io/raydium-amm)
* [`reference/program-addresses`](/tr/reference/program-addresses) kanonik program ID'leri için
* Karşı taraf hesapları için OpenBook / Serum protokolü
