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 hedeflemektedir; 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 iskeleti raydium-cp-swap üzerinde master dalında, Anchor 1.0.2 hedeflemektedir. Program ID’leri reference/program-addresses içindeki sabitlerden alınmaktadır.

Ön koşullar

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

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ıralamak.
  • Tek seferlik create_pool_fee ödemesini poolFeeAccount’a yapmak.
  • Çağıranın ilişkili token hesaplarını eksikse oluşturmak.
  • Her bir taraf için doğru token programını (SPL Token vs Token-2022) seçmek.
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 olan 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, talimatın maximum_* bağımsız değişkenleri için her iki tarafı slippage tarafından şişirir ve gerekirse ATA oluşturmalarını oluşturur. raydium.cpmm.computePairAmount({ ... }) bir UI önizlemesi için istiyorsanız aynı sayıları döndürür.

Likidite çekme

Kaynak: src/cpmm/withdraw.ts

Protokol/fon/yaratıcı ücretlerini tahsil etme

Kaynak: src/cpmm/collectCreatorFee.ts, src/cpmm/collectAllCreatorFee.ts Protokol ve fon tahsili yetki ile sınırlıdır. Yaratıcı ücretlerinin iki yolu vardır: yaratıcı tarafından imzalanan CollectCreatorFee ve herhangi bir ödeyicinin çağırabileceği ancak yalnızca yaratıcının kanonik ATA’larına transfer yapabilen CollectCreatorFeePermissionless. 0.2.64-alpha her iki yaratıcı yolu için modül düzeyinde oluşturucular içerir:
Her iki yaratıcı talimatı da 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’i de alır — her ikisi de system_program’dan sonra eklenir yerine eklenirse, 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. Bu yardımcıları yükseltilmiş programa karşı kullanmadan önce yüklediğiniz sürümün yeni hesapları içerdiğini kontrol edin ve ondan istemciler oluşturursanız IDL’yi yenileyin.PDA’yı hiç oluşturulmamış olsa bile geçmek zorunludur — türetin ve geçin; program hesap boş olduğunda AmmConfig.creator_fee_share_rate’e 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. Mevcut olan düşük düzey talimat oluşturucuları collectCpFeeInstruction, makeCollectCreatorFeeInstruction ve collectCreatorFeePermissionlessInInstruction’dır.
Zincir dışında, tahakkuk eden ücretleri doğrudan PoolState’den okuyabilirsiniz:

Rust CPI iskeletı

CPMM’yi kendi Anchor programınızdan ç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’ı izler.
CPI’niz bir PDA olarak imzalıyorsa (örneğin, mevduat sahipleri adına bir kasa yönetiyorsanız), CpiContext::new’i CpiContext::new_with_signer ile değiştirin ve tohumlarınızı geçin.

Yaygın tuzaklar

Bir destek talebini açmadan önce kısa bir kontrol listesi:
  • Sıralanmış mintler. Türetilmiş poolState PDA’nız zincir üstü havuzla eşleşmiyorsa, muhtemelen mintleri sıralamayı unuttunuz.
  • Eski API teklifi. Hiçbir zaman api-v3.raydium.io’dan bir rezerv değerini CurveCalculator.swap’a geçirmeyin. Bir 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 mintleri için yetersiz slippage. Havuzun her iki tarafı da Token-2022 transfer ücreti mint’i ise, minimum_amount_out’unuz kasanın gönderdiği şey değil, kullanıcının gerçekten aldığı şey cinsinden olmalıdır.
  • Bir swap’ta NotApproved. PoolState.status’u kontrol edin — yönetici o havuzda swapleri duraklatmış olabilir. Durum bitmaski için products/cpmm/instructions’a bakın.

Sonraki adımlar

Kaynaklar: