> ## 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>
  AMM v4, CPMM veya CLMM'ye kıyasla önemli ölçüde daha ağır bir hesap yapısına sahiptir çünkü her işlem OpenBook durumuna erişir. Bu sayfa hesapları "havuz sahibi" ve "OpenBook sahibi" bölümlerine ayırmıştır; böylece entegratör hangi tarafın ne olduğunu hızlıca görebilir.
</Info>

## Envanter

Bir AMM v4 havuzu oluşturulurken tam olarak bir OpenBook piyasasına bağlanır. Canlı durum şu şekildedir:

| Kategori          | Hesap                                | Sahibi          | Rol                                                                                         |
| ----------------- | ------------------------------------ | --------------- | ------------------------------------------------------------------------------------------- |
| Pool              | `AmmInfo`                            | AMM v4 programı | Havuz durumu: biriken ücretler, durum, vault'lar ve OpenBook piyasasına referanslar.        |
| Pool              | `amm_authority`                      | AMM v4 programı | Vault hareketlerini imzalayan programa ait PDA. Tüm AMM v4 havuzları tarafından paylaşılır. |
| Pool              | `amm_open_orders`                    | OpenBook        | Havuzun bu piyasa için OpenBook `OpenOrders` hesabı.                                        |
| Pool              | `amm_target_orders`                  | AMM v4 programı | OpenBook'a geri yayınlanacak hedef limit emirlerin havuz tarafı ızgarası.                   |
| Pool              | `pool_coin_token_account`            | SPL Token       | Havuzun coin-tarafı vault'ı (`amm_authority` ATA'sı).                                       |
| Pool              | `pool_pc_token_account`              | SPL Token       | Havuzun pc-tarafı vault'ı.                                                                  |
| Pool              | `lp_mint`                            | SPL Token       | Fungible LP mint'i.                                                                         |
| Pool              | `pool_withdraw_queue`                | AMM v4 programı | Gecikmeli çekişler için eski kuyruk; sıfır uzunlukta tutulur.                               |
| Pool              | `pool_temp_lp`                       | AMM v4 programı | `Initialize` sırasında kullanılan yardımcı LP hesabı.                                       |
| Market (OpenBook) | `serum_market`                       | OpenBook        | Piyasanın kendisi (base/quote mint'leri, vault imzalayıcısı, vb.).                          |
| Market            | `serum_bids`, `serum_asks`           | OpenBook        | Teklif ve talep kuyrukları.                                                                 |
| Market            | `serum_event_queue`                  | OpenBook        | Bekleyen olaylar (doldurular, iptaller).                                                    |
| Market            | `serum_coin_vault`, `serum_pc_vault` | SPL Token       | OpenBook'un piyasa düzeyindeki vault'ları.                                                  |
| Market            | `serum_vault_signer`                 | OpenBook        | `serum_*_vault` hareketlerini imzalayan piyasa düzeyindeki PDA.                             |

Not: "serum" ön eki, geriye dönük uyumluluk için AMM v4'ün IDL ve alan adlarında korunmuştur. Günümüzde OpenBook piyasasını ifade eder.

## `AmmInfo`

Havuzun kök durum hesabı. Hem havuz hem de OpenBook referanslarını satır içinde taşıdığı için büyüktür (≈ 752 byte).

```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,    // OpenBook piyasasını yansıtır
    pub pc_lot_size:   u64,
    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 piyasası
    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,          // yönetici (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 = %12 ücretin, = 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,
    pub need_take_pnl_pc:   u64,
    pub total_pnl_pc:   u64,
    pub total_pnl_coin: u64,
    pub pool_open_time: u64,
    pub punish_pc_amount: u64,
    pub punish_coin_amount: u64,
    pub orderbook_to_init_time: u64,
    pub swap_coin_in_amount: u128,
    pub swap_pc_out_amount:  u128,
    pub swap_acc_pc_fee:    u64,
    pub swap_pc_in_amount:  u128,
    pub swap_coin_out_amount: u128,
    pub swap_acc_coin_fee:  u64,
}
```

Entegratör açısından önemli alanlar:

* **`coin_vault`**, **`pc_vault`** — havuzun SPL Token vault'ları. Serum/OpenBook kuralına göre `coin` `token_0`'dır (temel), `pc` `token_1`'dir (fiyat).
* **`coin_decimals`**, **`pc_decimals`** — mint'lerle eşleşir.
* **`open_orders`**, **`target_orders`**, **`market`** — her swap/deposit/withdraw talimatına geçilmelidir.
* **`fees.swap_fee_numerator / swap_fee_denominator`** — birleşik işlem ücreti. Varsayılan `25 / 10_000 = %0,25`.
* **`status`** — işlemleri kontrol eden bitmask. `AdminSetStatus` aracılığıyla yönetici tarafından ayarlanabilir.
* **`state_data.need_take_pnl_*`** — brüt biriken ücretler ile tarama yapılan arasındaki delta. `TakePnl` bunları sıfırlar.

## OpenBook bağlantısı

<Note>
  **Artık aktif değil.** AMM v4 havuzları artık likiditeyi OpenBook'a paylaşmaz — limit emir ızgarası devre dışı bırakılmıştır. Bu bölümde açıklanan OpenBook hesapları, her havuzun `AmmInfo`'sinde kalır ve geriye dönük uyumluluk için V1 swap uç noktaları tarafından (ve `Initialize`, `Deposit`, `Withdraw` tarafından) doğrulanmaya devam eder; ancak onlar tarafından referans verilen defter üzerindeki durum pratik olarak boştur. Aşağıdaki V2 swap uç noktalarını kullanın, kanonik yürütme yolu budur: **V2 swap uç noktaları** ([`SwapBaseInV2` / `SwapBaseOutV2`](/tr/products/amm-v4/instructions)) bu hesapları tamamen atlarlar ve günümüzde kanonik yürütme yolunu temsil ederler.
</Note>

Bir AMM v4 havuzunda herhangi bir **V1** okuma veya yazma talimatı çağırdığınızda, OpenBook hesaplarını geçmelisiniz. Program onları yeniden türetir ve doğrular; bu nedenle uyumsuz bir küme geçirmek geri döner. (V2 swap varyantları bu hesapları hiç gerektirmez.)

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

// OpenBook'un piyasa hesabında gösterdiği 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`'ı OpenBook tarafından sahip olunan hesaptır ve havuzun bu piyasadaki limit emir durumunu tutar: aktif emirler, kapatılmış bakiyeler, yönlendiriciler, vb. `amm_target_orders` AMM tarafı: AMM'nin *amaçlanan* ızgarasını tutar (her emir yuvası için fiyat/boyut); bu nedenle program şu anda ne yayınlandığıyla ucuz bir şekilde karşılaştırabilir ve farkı yer/iptal edebilir.

## Authority PDA'ları

Tüm AMM v4 programı için tam olarak bir `amm_authority` PDA'sı vardır. Tohumu önemsizdir (`["amm authority"]`) ve bump'ı her `AmmInfo`'da 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üretim kullandığından, kodda belirli havuzun `AmmInfo.nonce`'sini kontrol edin).

## Vault'lar

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

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

## LP mint

Otoritesi `amm_authority` olan klasik SPL Token mint'i. Toplam arz, LP'nin havuza sahiplik oranını izler; LP'yi yakarak her iki vault'tan pro-rata token döner. AMM v4 CPMM'den daha eski olduğundan, havuz durumunda `lp_supply` yansıması yoktur — mint'in zincir üzerinde arzını doğrudan okuyun.

## Durum bitmask'ı

`AmmInfo.status`, işlemleri kontrol eder. Bitler (konum program sürümleri arasında farklı olabilir — kaynaktan doğrulayın):

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

Raydium multisig'i bunları `AdminCancelOrders`, `AdminSetParams`, vb. aracılığıyla ayarlar.

## Gözlem / oracle

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

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

AMM v4, deterministik çift başına PDA'lar için tasarlanmadığından (Solana kuralını önceden yayınladığından), kanonik `amm_id` **tohum anahtar** olarak türetilir:

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

Aynı tohum anahtar modeli `amm_open_orders`, `amm_target_orders`, `amm_withdraw_queue`, `pool_temp_lp`, `pool_coin_token_account`, `pool_pc_token_account` ve `lp_mint`'e uygulanır. SDK ve API bunları önceden hesaplar; bkz. `raydium-sdk-v2`'nin `Liquidity.getAssociatedPoolKeys`.

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

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

| Olay                         | Oluşturulan Hesaplar                                                                                            | Silinen 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` | — (kullanıcı ATA'sı oluşturabilir)                                                                              | —                |
| `TakePnl`                    | —                                                                                                               | —                |
| `MonitorStep` (crank)        | —                                                                                                               | —                |

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

## Nerede ne okumak

* **Matematik ve ücret aritmetiği**: [`products/amm-v4/math`](/tr/products/amm-v4/math).
* **Ücret bölünmesi ve CPMM/CLMM'yle nasıl karşılaştırıldığı**: [`products/amm-v4/fees`](/tr/products/amm-v4/fees).
* **Talimat hesap listeleri**: [`products/amm-v4/instructions`](/tr/products/amm-v4/instructions).
* **OpenBook hesap türetimi**: OpenBook program belgeleri ([`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
* Muhatap hesapları için OpenBook / Serum protokolü
