Skip to main content
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 →
2026-07 program güncellemesi itibarıyla, AMM v4’ün OpenBook / Serum bağımlılığı kaldırılmıştır. Eski v1 SwapBaseIn / SwapBaseOut, Deposit ve Withdraw talimatları eski hesap düzenlerini korur geriye dönük uyumluluk için: market hesapları eski konumlarında kabul edilir, ancak artık doğrulanmaz veya kullanılmaz (CPI yayınlanmaz). Yeni entegrasyonlar, market hesaplarını tamamen atlayan V2 swap giriş noktalarını kullanmalıdır. Birkaç talimat kaldırılmış ve şimdi geri döner — changelog girişine bakın. Aşağıdaki hesap listeleri Raydium SDK’daki alan adlarını kullanır; temel IDL bazen serum_* önekleri kullanır.2026-09 program güncellemesi bir yönetici talimatı WithdrawExcessLamports (tag 18) ekler ve CreateConfigAccount’tan rent sysvar’ı kaldırır. Bir tüccar veya LP’nin çağırdığı her şey değişmez. 2026-09-09 changelog girişine bakın.

Talimat envanteri

SDK, yalnızca kullanıcı tarafından erişilebilen talimatlar için oluşturucuları ortaya çıkarır. Bakım talimatları tipik olarak Raydium keeper tarafından çağrılır. Kaldırıldı / artık çağrılamaz (istemci oluşturucuları silindi): Initialize (tag 0, Initialize2 kullanın), MonitorStep (2), MigrateToOpenBook (5), WithdrawSrm (8), PreInitialize (10, Initialize2 kullanın), SimulateInfo (12), AdminCancelOrders (13). Bu etiketlerden birini taşıyan bir işlem başarısız olur; program talimatı asla yürütmez. Hepsi yedisini hata yolları olarak işlemek yerine gitmiş olarak değerlendirin.

Initialize2

Mevcut bir OpenBook market’e bağlı yeni bir AMM v4 pool’u başlat. Argümanlar
Hesaplar (yazılabilir W, imzalayan S)
Kabul edilen iki düzen. Yukarıdaki 19 hesaplı liste önerilen olandır. Geriye dönük uyumluluk için program ayrıca 21 hesaplı eski bir düzeni de okur; bu düzen 7. konuma yoksayılan bir amm_open_orders, 16. konuma ise yoksayılan bir market_program ekler — depo içindeki initialize2 komut oluşturucusunun hâlâ ürettiği düzen budur. Başka herhangi bir uzunluk eski düzene göre konumsal olarak ayrıştırılır ve başarısız olur.
Son koşullar
  • Yaratıcıya mint’lenen LP = sqrt(init_coin_amount × init_pc_amount) − 10^coin_mint.decimals. LP ondalıkları coin_mint.decimals ile eşittir, dolayısıyla çıkarılan miktar tam olarak bir bütün LP token’ıdır; hiçbir zaman mint’lenmez ve kalıcı olarak dolaşım dışıdır. sqrt(...) bunun altındaysa komut InitLpAmountTooLess ile geri döner.
  • AmmInfo.lp_amount, mint’lenen miktarı değil, tam sqrt(...) değerini saklar — bu nedenle lp_mint.supply, amm.lp_amount’tan kalıcı olarak bir bütün LP token’ı kadar daha düşüktür. Tüm orantısal matematik amm.lp_amount kullanır.
  • OpenBook emirleri yayınlanmaz (emir defteri ızgarası kaldırılmıştır). AmmInfo.market, 15. yuvada geçirilen hesabı kaydeder; ancak AmmInfo.open_orders ve AmmInfo.market_program ikisi de Pubkey::default() olarak yazılır ve coin_lot_size / pc_lot_size / min_size 0 olarak başlatılır. 21 hesaplı eski düzende fazladan gelen amm_open_orders ve market_program hesapları okunur ve atılır.
Yaygın hatalar — InvalidCoinMint (coin ve pc mint aynı), InvalidConfigAccount (yanlış amm_config PDA’sı), InvalidFee (yanlış havuz oluşturma ücreti hedefi), InvalidProgramAddress (yanlış amm_authority veya yanlış nonce), RepeatCreateAmm (bu market için bir havuz zaten mevcut), InitLpAmountTooLess, InvalidSupply (init miktarlarından biri 0 ya da LP mint’inin zaten arzı var), AlreadyInUse.

Deposit

Likidite ekle. Argümanlar
Hesaplar (kısaltılmış)
Kabul edilen hesap sayıları 11, 14 veya 15’tir — başka hiçbir sayı değil. Eski düzen 14 hesaplıdır (veya sonuna yoksayılan bir hesap eklenmiş hâliyle 15): aynı listeye 4. konumda yoksayılan bir amm_open_orders, 9. konumda yoksayılan bir market ve 14. konuma eklenmiş yoksayılan bir market_event_queue girer. Başka herhangi bir sayı WrongAccountsNumber ile geri döner.
Matematik — standart orantılı. Pool’un etkili rezervlerini (vault’lar + kitapta) kullanarak, SDK verilen LP miktarını veren coin/pc çiftini hesaplar ve max_* karşısında kontrol eder. Her iki taraf da sınırı aşarsa ExceededSlippage ile geri döner.

Withdraw

LP yak, her iki tarafı al. Argümanlar
Hesaplar — önerilen 11 hesaplı düzen
Withdraw, tersine çevrilmiş bir Deposit değildir. Kabul edilen hesap sayıları 11 ya da 20 ile 23 arasıdır. Eski 20 hesaplı düzen, kullanıcının LP hesabını iki alıcı ATA’dan önce koyar ve yoksayılan beş market hesabını araya serpiştirir: token_program, amm(W), amm_authority, amm_open_orders(W), amm_target_orders(W), lp_mint(W), pool_coin_token_account(W), pool_pc_token_account(W), market_program, market(W), market_coin_vault(W), market_pc_vault(W), market_vault_signer, user_lp_token_account(W), user_coin_token_account(W), user_pc_token_account(W), user_owner(S), market_event_queue(W), market_bids(W), market_asks(W). 22 ve 23 hesaplı biçimler, 8. konumdan sonra yoksayılan iki dolgu hesabı ekler. Başka herhangi bir sayı WrongAccountsNumber ile geri döner.
OpenBook’tan yerleşme adımı artık yoktur — orantılı matematik vault bakiyelerini doğrudan kullanır.

SwapBaseIn

Tam giriş swap’ı. Her zaman bir AMM yolu swap’ıdır (OpenBook eşleştirmesi aracılığıyla yönlendirilmez).
Yeni kod için V2 varyantlarını kullanın. AMM v4’ün OpenBook bağımlılığı kaldırıldığından, V1 giriş noktaları (SwapBaseIn, SwapBaseOut) hala tam 17 hesap listesini (veya isteğe bağlı target-orders hesabı ile 18) bekler, ancak OpenBook/market hesapları şimdi konumsal olarak kabul edilir ve yoksayılır — doğrulanmaz ve CPI yayınlanmaz. Yanlış hesap sayısı geçirmek hala WrongAccountsNumber ile geri döner, ancak market hesabı içeriği artık kontrol edilmez. Yeni entegrasyonlar SwapBaseInV2 / SwapBaseOutV2 kullanmalıdır, bunlar çok daha küçük bir hesap listesi alır ve bugün kanonik yürütme yolunu temsil eder. V1 formları burada bütünlük için ve mevcut zincir üstü işlemleri okumak için belgelenmiştir.
Argümanlar
Hesaplar (kısaltılmış) Matematik — products/amm-v4/math bölümüne bakın. Ön koşullar
  • AmmStatus::from_u64(amm.status).swap_permission() doğrudur — yani status değeri 1 (Initialized), 6 (SwapOnly) veya 7 (WaitingTrade)‘tür. status bir enum değeridir, bitmask değildir; bkz. products/amm-v4/accounts.
  • amm.state_data.pool_open_time <= now.
  • amount_in > 0.
  • user_source_token_account en az amount_in tutar.
Son koşullar
  • Kullanıcı kaynak token’ın amount_in’ini kaybeder, hedef token’ın amount_out ≥ minimum_amount_out’unu kazanır.
  • Swap ücreti vault’larda kalır ve k değişmezini yükseltir. need_take_pnl_* sayaçlarına swap’lar tarafından dokunulmaz — protokol PnL’si, bir sonraki Deposit, Withdraw veya WithdrawPnl işleminde k deltasından yeniden hesaplanır (Processor::calc_take_pnl).
  • Not: state_data.swap_*_in_amount / swap_*_out_amount analitik sayaçları artık güncellenmez — değerleri dondurulmuştur. Hacim analitikleri için işlem günlüklerini kullanın.
Yaygın hatalar — ExceededSlippage, InvalidInput, InvalidStatus, NotAllowed (coin/pc mint özdeş).

SwapBaseOut

Tam çıkış, SwapBaseIn’in tersi. Aynı hesaplar. Argümanlar

SwapBaseInV2 / SwapBaseOutV2

Varyant swap giriş noktaları (etiketler 16 / 17) OpenBook hesaplarını tamamen atlar. Matematik V1 yolu ile özdeştir, ancak hesap listesi sadece AMM tarafı ve kullanıcıya küçülür — 8 hesap, ve amm_open_orders geçirilmez: Pool rezervleri şimdi vault bakiyeleridir (bekleyen PnL eksi), bu nedenle fiyat teklifi matematik basittir ve v1 yolu ile özdeştir. Hesaplama tasarrufu yapmak ve (şimdi yoksayılan) market hesaplarını geçmekten kaçınmak için V2 kullanın. Raydium yönlendiricisi AMM v4 aracılığıyla yönlendirirken her zaman V2 formunu kullanır. Argümanlar V1 formları ile aynıdır (SwapBaseInV2 için amount_in / minimum_amount_out; SwapBaseOutV2 için max_amount_in / amount_out).

MonitorStep ve diğer kaldırılan talimatlar

Kaldırıldı — artık çağrılamaz. 2026-07 güncellemesi itibarıyla, MonitorStep (tag 2) programdan kaldırılmış ve şimdi çağrılırsa geri döner (unimplemented!). İstemci oluşturucusu da silindi. Aynı durum MigrateToOpenBook (5), WithdrawSrm (8), SimulateInfo (12), AdminCancelOrders (13) ve eski Initialize (0) / PreInitialize (10) pool oluşturma giriş noktaları için geçerlidir — bunun yerine Initialize2 kullanın.
Tarihsel olarak, MonitorStep pool’un OpenBook etkileşimini çalıştırdı: doldurulmuş siparişleri yerleştirdi (OpenBook CPI aracılığıyla market vault’larından pool vault’larına gelirleri taşıdı), eski siparişleri iptal etti ve target_orders ile amm_open_orders arasındaki boşluğu kapatmak için yeni siparişler yayınladı. OpenBook bağımlılığı kaldırıldığında, çalıştırılacak bir şey yoktur ve talimat gitmiştir. Hala çağıran herhangi bir keeper veya entegrasyon çağrıyı kaldırmalıdır.

WithdrawPnl / TakePnl

Birikmiş protokol ücretlerinin yönetici tarafından temizlenmesi. Argümanlar
  • WithdrawPnl argüman almaz; need_take_pnl_* okur ve tam bu miktarları taşır.
Kırıcı değişiklik (yalnızca yönetici). Hesap listesi 17’den (+1 isteğe bağlı) 10’a düştü — amm_open_orders ve altı market hesabı kaldırıldı — uyumluluk ayrıştırması olmadan. Eski düzen yanlış hizalanır (eski #5 amm_open_orders idi, şimdi pool_coin_token_account) ve InvalidCoinVault gibi hatalarla başarısız olur. Yönetici araçları güncellenmeli.
Hesaplar (yeni 10 hesap düzeni) Etki
  • need_take_pnl_coin’i pool_coin_token_account’tan pnl_coin_token_account’a aktarır.
  • PC için aynı.
  • need_take_pnl_coin ve need_take_pnl_pc’yi sıfırlar.
  • Mantık değişikliği: vault bakiyesi birikmiş PnL’yi karşılamaya yetmezse, talimat doğrudan TakePnlError döndürür (artık sipariş defteri durumunu manipüle etmez).
Birikmiş PnL zaten değişmezlikten hariç tutulduğundan rezervlerde değişiklik yoktur.

SetParams

Raydium multisig tarafından çağrılan yönetici param değişiklikleri. Argümanlar bir param: u8 etiketi + yüküdür.
Kırıcı değişiklik (yalnızca yönetici). Hesap listesi sadece [amm (W), admin (S)]’ye indirildi (otorite, açık siparişler, hedef siparişler, vault ve tüm market hesapları kaldırıldı). param enum’u yeniden numaralandırıldı ve kırpıldı: Status = 0, State = 1, Fees = 2 (9 idi), SetOpenTime = 3 (11 idi). Tüm sipariş defteri ızgarası parametreleri ve AmmOwner, LastOrderDistance, UpdateOpenOrder kaldırıldı ve SetParamsInstruction yapısı new_pubkey ve last_order_distance’ı bıraktı. Yönetici araçları güncellenmeli.

CreateConfigAccount / UpdateConfigAccount

Program düzeyindeki AmmConfig PDA’sının (tohum ["amm_config_account_seed"]) yönetici yönetimi. Hesap tam olarak üç anlamlı alan tutar — pnl_owner, cancel_owner ve create_pool_fee — ve buna ek olarak iki ayrılmış dolgu bölgesi; havuz oluşturma bayrağı yoktur. UpdateConfigAccount, param = 0 ile pnl_owner’ı, param = 1 ile cancel_owner’ı ve param = 2 ile create_pool_fee’yi ayarlar.
2026-09’da değişti ve geriye dönük uyumlu. CreateConfigAccount artık rent sysvar’ı okumaz. Hesap listesi şimdi 4 hesap, 5’ten aşağı:Program, geçirilen sysvar hesabını deserialize etmek yerine Rent::get() öğesinden rent parametrelerini okur — Solana 3.0 bağımlılığı bump’ının doğal kıldığı şey.Kaldırılan hesap listenin sonunda idi ve işleyici hesaplarını next_account_info aracılığıyla konumsal olarak uzunluk kontrolü olmadan okur. Eski 5 hesap listesini hala geçiren mevcut bir yönetici aracı bu nedenle çalışmaya devam eder: sondaki rent hesabı basitçe asla okunmaz. Acele etmeden uygun olduğunda güncelleyin. UpdateConfigAccount değişmez.
Initialize2 rent sysvar’ı 3. konumda tutar ve hala kullanır: program Rent::from_account_info öğesini çağırmayı bıraktı, ancak pool’un vault’larını ve LP mint’ini oluşturan spl_token::initialize_account ve initialize_mint CPI’lerine iletilir. Hesap listesinden bırakmayın.

WithdrawExcessLamports

Program kontrollü hesaplardan rent-exempt minimumunun üzerinde oturan lamportların yönetici tarafından temizlenmesi. SIMD-0437 rent azaltması her adımdan sonra hesaplar oluşturulduğunda bıraktığı aşırı finansmanı kurtarmak için 2026-09 güncellemesinde eklendi. Yalnızca fazlalığı taşır. Token bakiyeleri, hesap verileri, sahipleri ve pool durumu dokunulmaz ve talimat zaten minimumda olan bir hesapta no-op’tır — bu nedenle tekrar tekrar ve her rollout adımından sonra tekrar ateşlemek güvenlidir. Argümanlar — hiçbiri. Yük tek tag baytı 18’dir. Hesaplar Her kaynak hesabı nasıl işlenir Program kaynak hesabının owner öğesine göre gönderir: Yaygın hatalar — InvalidSignAccount (yanlış imzalayan), InvalidSplTokenProgram (slot 3’te yanlış program), InvalidProgramAddress (yanlış amm_authority), LamportsCalculateError (özel kod 60; wSOL gidiş-dönüş sıfıra net olmadı) ve program sahibi yolundan InsufficientFunds bir hesap kendi rent minimumundan daha az tuttuğunda. SDK oluşturucusu yok. @raydium-io/raydium-sdk-v2 bu talimat için bir oluşturucu göndermez ve raydium-sdk-V2-demo repo da göndermez — bu bir yönetici yoludur. Elle kodlayın, solana-fundamentals/rent-and-reclaimable-rent içindeki cüzdan tarafı süpürmenin yaptığı şekilde token programı talimatı için.

Durum değişikliği matrisi

OpenBook sütunu gitmiştir — hiçbir talimat artık bir sipariş defterine dokunmaz.

Sonraki adım

Kaynaklar: