> ## 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-09-09 — AMM v4: Solana 3.0 bağımlılıkları ve fazla lamport kurtarma

> AMM v4, solana-program 3.0, spl-token 9.0 ve yeni solana-system-interface crate'ine karşı yeniden derlenmiş; SIMD-0437 tarafından serbest bırakılan kirayı döndüren yalnızca yönetici tarafından kullanılabilen WithdrawExcessLamports talimatını (tag 18) ekler. CreateConfigAccount, sondaki kirasysvar'ı okumayı durdurur, uyumlu şekilde. Hiçbir şey kırılmaz ve hesap düzeni değişmez.

<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-09-09-amm-v4-solana-3-and-excess-lamports)
</Info>

<Info>
  Bu giriş, yaklaşan bir AMM v4 program güncellemesini kapsamaktadır. Dağıtımdan önce yerel yayın dalına karşı doğrulanmıştır. Yeni talimata güvenmeden önce dağıtılan programı doğrulayın.
</Info>

İki ilişkisiz şey bir yeniden derlemede birlikte gelir.

Birincisi, bakım işleridir: AMM v4, 2.1 yükseltmesinden bu yana `solana-program` `=2.1.0` sürümüne sabitlenmişti ve bu sabitleme engel oluşturuyordu. Sistem programı yardımcıları Solana 3.0'da kendi `solana-system-interface` crate'ine taşındı, `spl-token` 9.0'a ulaştı ve `spl-associated-token-account` 8.0'a ulaştı. Bu yayın üçünü de içerir.

İkincisi, protokolün borçlu olduğu paradır. [SIMD-0437](/tr/solana-fundamentals/rent-and-reclaimable-rent) kira-muaf minimum değerini beş adımda %90 oranında azaltıyor ve adım 1, 3 Eylül 2026'da mainnet'e indi. AMM v4'ün o tarihten önce oluşturduğu her hesap — yüzlerce havuz kasası, LP mint'i, `AmmInfo` ve `TargetOrders` hesapları — artık aşırı finanse edilmiş durumda ve programa ait bir hesaptaki lamportlar yalnızca o program tarafından taşınabilir. Dolayısıyla yeni bir talimat.

## Entegratörler için TL;DR

* **Bir tüccar veya LP'nin çağırdığı hiçbir şey değişmedi.** `Initialize2`, `Deposit`, `Withdraw`, `SwapBaseIn`, `SwapBaseOut`, `SwapBaseInV2`, `SwapBaseOutV2`, `WithdrawPnl` ve `SetParams` hesap listelerini, argüman düzenlerini ve matematiklerini korur. Hiçbir hesap düzeni değişmedi. Hiçbir mevcut hata kodu taşınmadı.
* **Bir talimat eklenir: `WithdrawExcessLamports`, tag `18`.** Yalnızca yönetici, argüman yok, değişken hesap listesi. AMM v4 tarafından kontrol edilen hesaplardan kira-muaf minimum değerin üzerindeki lamportları döndürür ve başka hiçbir şeye dokunmaz. Bkz. [`products/amm-v4/instructions`](/tr/products/amm-v4/instructions#withdrawexcesslamports).
* **Bir hata kodu eklenir: `60` `LamportsCalculateError`.** `AmmError` Anchor numaralı değildir — `0`'dan başlar — bu nedenle bu `custom program error: 0x3c` şeklindedir. Kodlar `0`–`59` değişmemiştir.
* **`CreateConfigAccount` (tag 14) kira sysvar'ı okumayı durdurdu** ve artık 4 hesaplı bir talimat olarak belgelenmiştir. **Bu yayındaki hiçbir şey kırıcı değildir**, buna dahil: hesap listenin sonundaydı ve işleyici konumsal olarak hiçbir uzunluk kontrolü olmadan okur, bu nedenle hala onu geçen yönetici araçları çalışmaya devam eder.
* **Bir IDL yenilemesi gereklidir** eğer istemcileri birinden oluşturursanız. Bir yeni talimat, bir yeni hata varyantı, bir değiştirilmiş hesap listesi.

## `WithdrawExcessLamports`

Talimat, lamport toplama cüzdanını tek imzalayan ve hedef olarak alır, AMM v4 yetki PDA'sını, SPL Token programını ve ardından herhangi sayıda kaynak hesabı. Her kaynak hesabın sahibine göre gönderir:

| Kaynak hesap sahibi                       | İşleme                                                                                                                                                                              |
| ----------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| SPL Token, 165 bayt, yerel olmayan        | Token programının `WithdrawExcessLamports` (discriminant `38`) CPI'sini, yetki PDA'sı tarafından imzalanmış şekilde                                                                 |
| SPL Token, 165 bayt, yerel (wSOL)         | `SyncNative`, sarılı `amount`'ın ne kadar büyüdüğünü ölçün, tam olarak bu delta için `UnwrapLamports` (discriminant `45`) yapın, ardından sarılı bakiyenin değişmediğini doğrulayın |
| SPL Token, diğer boyutlar (bir LP mint'i) | `WithdrawExcessLamports` CPI'sini yapın                                                                                                                                             |
| AMM v4 programının kendisi                | Hesabı doğrudan `rent.minimum_balance(data_len)` değerine borçlandırın                                                                                                              |
| Başka herhangi bir şey                    | Sessizce atlanır                                                                                                                                                                    |

wSOL dalı ilginç olandır. Sarılı-SOL hesabının lamport bakiyesi *onun* token bakiyesidir, bu nedenle token programı `WithdrawExcessLamports`'u tamamen reddeder. `SyncNative` ve delta boyutlu `UnwrapLamports` aracılığıyla gidiş-dönüş, yalnızca bağışlanan fazlalığı çıkarır ve sarılı bakiyeyi tam olarak başladığı yerde bırakır — bu, aritmetik anlaşmazlığı durumunda `LamportsCalculateError` ile doğrulanır. **Bir SOL tarafı havuz kasası bu nedenle bir tarama aracılığıyla tam likiditeyi korur** ve hiçbir LP bir tarama arasında fiyat değişikliği görmez.

İmzalayan, küme başına adanmış bir anahtardır, mevcut AMM sahibi ve havuz oluşturma ücreti adresleriyle aynı `config_feature` modülü altında sabitlenmiştir. CPMM ve LaunchLab'ın aksine, AMM v4 **yalnızca** o cüzdanı kabul eder — yönetici geri dönüşü yoktur. Adresler [`reference/program-addresses`](/tr/reference/program-addresses#excess-lamports-collection-wallets) içindedir.

## `CreateConfigAccount` kira sysvar'ı okumayı durdurdu

Solana 3.0, `Rent::get()` öğesinin kira parametrelerini okumanın doğal yolu olmasını sağlayan şeydir, bu nedenle yayın programdaki dört `Rent::from_account_info(...)` çağrısının tümünü değiştirmiştir. Üçünde — `Initialize2` sırasında bir havuzun token hesaplarını, LP mint'ini ve PDA hesaplarını oluşturan yardımcılar — sysvar hesabı hala geçirilir ve hala token programı CPI'lerine iletilir, bu nedenle bu hesap listesi hakkında hiçbir şey değişmez. `CreateConfigAccount`'ta sysvar'ın başka bir amacı yoktu ve listenin son hesabıydı, bu nedenle belgelenen listeden çıkarıldı:

|   | Önce (5 hesap)   | Sonra (4 hesap)  |
| - | ---------------- | ---------------- |
| 1 | `admin` (W, S)   | `admin` (W, S)   |
| 2 | `amm_config` (W) | `amm_config` (W) |
| 3 | `pnl_owner`      | `pnl_owner`      |
| 4 | `system_program` | `system_program` |
| 5 | `rent`           | —                |

**Eski beş hesaplı listeyi göndermek hala çalışır.** Kaldırılan hesap sonuncuydu ve `process_create_config` dört hesabını konumsal olarak `next_account_info` aracılığıyla okur ve toplam sayıyı kontrol eden hiçbir şey yoktur, bu nedenle sondaki kira hesabı asla bakılmaz. Yönetici araçları netlik için güncellenmelidir, aciliyet için değil. Hiçbir kullanıcı tarafından karşılaşılan oluşturucu bu talimata hiç yapı koymaz.

`Initialize2`, aşırı okumama durumudur: ayrıca `Rent::from_account_info` çağrısını durdurdu, ancak kira hesabı **kalır** 3. konumda ve hala gerçekten kullanılır — program bunu havuzun kasalarını ve LP mint'ini oluşturan `spl_token::initialize_account` ve `initialize_mint` CPI'lerine iletir. Bunu bu hesap listesinden düşürmek havuz oluşturmayı kıracaktır.

## Bağımlılık değişiklikleri

| Crate                          | Önce     | Sonra                        |
| ------------------------------ | -------- | ---------------------------- |
| `solana-program`               | `=2.1.0` | `=3.0.0`                     |
| `solana-system-interface`      | —        | `=3.0.0`, `bincode` özelliği |
| `spl-token`                    | `=7.0.0` | `9.0.0`                      |
| `spl-associated-token-account` | `6.0.0`  | `8.0.0`                      |

Programın kullandığı sistem programı parçaları — `system_instruction::create_account`, `transfer`, `allocate`, `assign` ve program kimliğinin kendisi — artık `solana_program::system_program` ve `solana_program::system_instruction` yerine `solana-system-interface` öğesinden gelir. Program kimliği bayt-özdeştir, bu nedenle bu, zincir üzerinde hiçbir sonucu olmayan derleme zamanı taşımasıdır; buna karşı karşılaştıran `InvalidSysProgramAddress` kontrolleri dahil.

İki ölü modül de silindi: `srm_token` ve `msrm_token`, [OpenBook kaldırılmasından](/tr/reference/changelog/2026-07-22-amm-v4-openbook-removal) kalan Serum/MSRM mint bildirimleri. Hiçbir şey onlara başvurmadı.

## Değişmeyen şeyler

* **Her hesap düzeni.** `AmmInfo`, `StateData`, `TargetOrders`, `AmmConfig` — aynı boyutlar, aynı alan ofsetleri. Hiçbir dizinleyici veya kod çözücü değişikliği.
* **Hata kodları `0`–`59`.** `LamportsCalculateError` `60`'ta eklenir, bu nedenle hiçbir şey kaymaz.
* **AMM yetki PDA'sı.** Hala tüm program için bir PDA, tohum `["amm authority"]`, nonce `254`.
* **Ücretler, PnL muhasebesi ve eğri.** Dokunulmamış. `WithdrawExcessLamports` hiçbir havuzun rezervlerinin parçası olmayan lamportları taşır.
* **Token-2022.** Hala desteklenmiyor. Yeni talimat yalnızca eski SPL Token programı ile konuşur.
* **Program kimliği.** Değişmedi — bkz. [`reference/program-addresses`](/tr/reference/program-addresses).

## Güncellenen sayfalar

* `products/amm-v4/instructions` — `WithdrawExcessLamports` hesap listesi ve sahip başına gönderme tablosu ile eklendi; kira-sysvar kaldırılmasını kapsayan yeni `CreateConfigAccount` / `UpdateConfigAccount` bölümü; envanter tablosu ve durum değişikliği matris satırları eklendi.
* `products/amm-v4/overview` — yayın başlığı.
* `reference/error-codes` — yeni "AMM v4: `AmmError` Anchor numaralı değildir" bölümü kod `60` ve `0` tabanlı numaralandırmayı belgeleme.
* `reference/program-addresses` — yeni "Fazla lamport toplama cüzdanları" bölümü.
* `solana-fundamentals/rent-and-reclaimable-rent` — yeni "Raydium programlarının kendi tarafında taradığı şeyler" bölümü; sarılı-SOL notu her iki token programının `UnwrapLamports` ortaya çıkardığını söylemek için düzeltildi.
* `solana-fundamentals/toolchain` — Agave 3.1.10, `release.anza.xyz`, Rust 1.91.0.
