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 →
Sürüm notu. Tüm TypeScript örnekleri @raydium-io/raydium-sdk-v2@0.2.64-alpha sürümünü hedefler; son olarak 0.2.42-alpha (2026-04) sürümüne karşı çalıştırılmış ve çağrı imzaları 2026-09-09 tarihinde 0.2.64-alpha kaynağına karşı Solana mainnet-beta üzerinde yeniden kontrol edilmiştir. Rust CPI iskeletinin hedefi raydium-cp-swap üzerinde chore/upgrade-anchor dalı, Anchor 1.0.2 — master hala 0.32.1 sürümünü kullanır. Program kimlikleri reference/program-addresses içindeki sabitlerden alınır.

Ön koşullar

Bu sayfadaki her örnek raydium-sdk-V2-demo/src/cpmm içindeki bir dosyayı yansıtır; GitHub bağlantısı her bölümün yanında yer alır. Başlatma, demo deposunun config.ts.template dosyasını takip eder (kaynak):
Raydium örneği SDK’nın cephesidir — aşağıdaki her örnek bunu kullanır. Raydium.load asenkron olduğu için varsayılan olarak token listesini yükler; bu getirişi atlamak için disableLoadToken: true geçirin. Kullanılabilirlik özelliği kontrolü zaten atlanmıştır; disableFeatureCheck: false geçirmediğiniz sürece. Ücret yapılandırmaları ilk kullanımda raydium.api.getCpmmConfigs() aracılığıyla tembel olarak getirilir.

CPMM havuzu oluşturma

Kaynak: src/cpmm/createCpmmPool.ts
SDK’nın sessizce hallettiği birkaç şey:
  • Mint’leri PDA’yı türetmeden önce token0/token1 sırasına göre sıralama.
  • Tek seferlik create_pool_fee ödemesi poolFeeAccount adresine.
  • Eksikse çağıranın ilişkili token hesaplarını oluşturma.
  • Her taraf için doğru token programını seçme (SPL Token vs Token-2022).
Onaydan sonra canlı havuz durumunu şu şekilde getirebilirsiniz:

Swap (temel giriş)

Kaynak: src/cpmm/swap.ts
Not: SDK her zaman getPoolInfoFromRpc içinde havuz durumunu RPC’den yeniden getirir. İmzalamak üzere olduğunuz bir işlem için api-v3.raydium.io adresinden fiyat belirtmeyin — bir blok eski bir fiyat, iniş zamanında ExceededSlippage içine kayabilir.

Swap (temel çıkış)

Kaynak: src/cpmm/swapBaseOut.ts

Likidite yatırma

Kaynak: src/cpmm/deposit.ts
SDK, eşleştirilmiş tutarı havuzun canlı rezervlerinden türetir, her tarafı talimatın maximum_* argümanları için slippage ile şişirir ve gerekirse ATA oluşturmalarını oluşturur. raydium.cpmm.computePairAmount({ ... }) bir UI önizlemesi için aynı sayıları döndürür.

Likidite çekme

Kaynak: src/cpmm/withdraw.ts

Protokol/fon/yaratıcı ücretlerini toplama

Kaynak: src/cpmm/collectCreatorFee.ts, src/cpmm/collectAllCreatorFee.ts Protokol ve fon toplama yetki kapılı kalır. Yaratıcı ücretlerinin iki yolu vardır: yaratıcı tarafından imzalanan CollectCreatorFee ve katkı CollectCreatorFeePermissionless, herhangi bir ödeyici tarafından çağrılabilir ancak yalnızca yaratıcının kanonik ATA’larına aktarabilir. 0.2.64-alpha her iki yaratıcı yolu için modül düzeyinde oluşturucuları gönderir:
Her iki yaratıcı talimatı 2026-09-19 program yükseltmesinde hesap listelerini değiştirdi. Her biri artık ["creator_fee_share", creator, ammConfig] adresinde bir creator_fee_share PDA’sı alır ve izinsiz olan ayrıca amm_config da alır — her ikisi de system_program sonrasına eklenir yerine eklenir, bu nedenle zaten orada olan hesaplar konumlarını korur. Yükseltmeden önceki bir SDK sürümüne sabitlenmiş bir oluşturucu daha kısa listeyi yayar ve işlem eksik hesaplar için reddedilir. Yükseltilmiş programa karşı bu yardımcıları kullanmadan önce yüklediğiniz sürümün yeni hesapları taşıdığını kontrol edin ve IDL’den istemciler oluşturursanız IDL’yi yenileyin.PDA’yı geçmek, hiçbir zaman oluşturulmamış olsa bile zorunludur — türetin ve geçin; program hesap boş olduğunda AmmConfig.creator_fee_share_rate adresine geri döner.
İki yaratıcı talimatının farklı ayırıcıları ve hesap düzenleri vardır — izinsiz olan yaratıcı imzalayanı ayrı bir payer ve imzalamayan bir creator ile değiştirir. Diğerinin hesaplarını el ile değiştirmek yerine eşleşen oluşturucuyu kullanın.SDK’da protokol veya fon ücreti oluşturucusu yoktur (makeCollectProtocolFeeInstruction ve makeCollectFundFeeInstruction hiçbir ad altında mevcut değildir) — bunlar yönetici yollarıdır ve CreateCreatorFeeShare / CloseCreatorFeeShare de öyledir, bunların da oluşturucusu yoktur. Var olan düşük düzey talimat oluşturucuları collectCpFeeInstruction, makeCollectCreatorFeeInstruction ve collectCreatorFeePermissionlessInInstruction olur.
Zincir dışında birikmiş ücretleri doğrudan PoolState adresinden okuyabilirsiniz:

Rust CPI iskeletini

Kendi Anchor programınızdan CPMM’yi çağırmak istiyorsanız — örneğin, mevduat sahipleri adına swap yapan bir kasa — CPI bağlamı şöyle görünür. Hesap sırası products/cpmm/instructions adresini takip eder.
CPI’niz bir PDA olarak imzalarsa (örneğin, mevduat sahipleri adına bir kasa yönetiyorsanız), CpiContext::new yerine CpiContext::new_with_signer kullanın ve tohumlarınızı geçin.

Yaygın tuzaklar

Bir destek talebini açmadan önce kısa bir kontrol listesi:
  • Sıralanmış mint’ler. Türetilmiş poolState PDA’nız zincir üstü havuzla eşleşmiyorsa, muhtemelen mint’leri sıralamayı unuttunuz.
  • Eski API fiyatı. Hiçbir zaman api-v3.raydium.io adresinden bir rezerv değerini CurveCalculator.swap içine geçirmeyin. RPC’den getirin.
  • Yanlış token programı. Token-2022 mint’inin kasası SPL Token tarafından değil, Token-2022 programı tarafından sahiplenilir. Her zaman havuzun token_0_program / token_1_program alanlarını kullanın.
  • Transfer ücreti mint’leri için yetersiz slippage. Havuzun her iki tarafı da Token-2022 transfer ücreti mint’i ise, minimum_amount_out kasanın gönderdiği şey değil, kullanıcının gerçekten aldığı şey cinsinden ifade edilmelidir.
  • Swap’ta NotApproved. PoolState.status adresini kontrol edin — yönetici bu havuzda swap’ları duraklatmış olabilir. Durum bitmaski için products/cpmm/instructions adresine bakın.

Sonraki adımlar

Kaynaklar: