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 hâlâ 0.32.1 sürümünü kullanır. Program kimlikleri reference/program-addresses sabitlerinden alınır.

Ön koşullar

Bu sayfadaki her örnek raydium-sdk-V2-demo/src/cpmm klasöründeki 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 getiriyi 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 token0/token1 sırasına göre sıralama ve PDA’yı türetme.
  • Tek seferlik create_pool_fee ödemesi poolFeeAccount’a.
  • 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 üzerinden fiyat belirlemeyin — 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 kayma ile şişirir ve gerekirse ATA oluşturmalarını oluşturur. raydium.cpmm.computePairAmount({ ... }) bir UI önizlemesi istiyorsanız 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] konumunda bir creator_fee_share PDA’sı alır ve izinsiz olan amm_config da alır — her ikisi de araya eklenmek yerine system_program sonrasına eklenir, bu nedenle hâlihazırda 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 nedeniyle 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 AmmConfig.creator_fee_share_rate hesabı boş olduğunda 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’den 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 takip eder.
CPI’niz bir PDA olarak imzalarsa (örn., 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ı. CurveCalculator.swap içine api-v3.raydium.io üzerinden bir rezerv değeri hiçbir zaman 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 kayma. Havuzun her iki tarafı da Token-2022 transfer ücreti mint’i ise, minimum_amount_out kasanın gönderdiği değil, kullanıcının gerçekten aldığı şey cinsinden olmalıdır.
  • Swap’ta NotApproved. PoolState.status kontrol edin — yönetici bu havuzda swap’ları duraklatmış olabilir. Durum bitmaski için products/cpmm/instructions bölümüne bakın.

Sonraki adımlar

Kaynaklar: