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 bilgisi. Tüm TypeScript örnekleri @raydium-io/raydium-sdk-v2@0.2.42-alpha sürümünü Solana mainnet-beta üzerinde hedefler, 2026-04 tarihinde doğrulanmıştır. Rust CPI iskeletini raydium-cp-swap master dalında, Anchor 0.30.x sürümünde hedefler. Program ID’leri reference/program-addresses dosyasındaki sabitlerden 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. Token listelerini ve ücret yapılandırmalarını api-v3.raydium.io adresinden tembel yükleme yapar; çevrimdışı ortamlarda kendi verilerinizle besleyebilirsiniz.

CPMM havuzu oluşturma

Kaynak: src/cpmm/createCpmmPool.ts
SDK’nın sessizce hallettiği birkaç şey:
  • Mint’leri PDA 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).
Onaylandıktan sonra canlı havuz durumunu şu şekilde alabilirsiniz:

Swap (temel giriş)

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

Swap (temel çıkış)

Kaynak: src/cpmm/swapBaseOut.ts

Likidite yatırma

Kaynak: src/cpmm/deposit.ts
SDK, lpAmount değerini havuzun mevcut rezervleri kullanarak needed_token_0 ve needed_token_1 değerlerine dönüştürür, talimatın maximum_* argümanları için her birini 1 + slippage ile artırır ve gerekirse ATA oluşturmalarını oluşturur.

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 ile sınırlı kalır. Yaratıcı ücretlerinin iki yolu vardır: mevcut 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 edebilen CollectCreatorFeePermissionless. Sabitlenmiş SDK mevcut ham oluşturucuları ortaya çıkarır:
@raydium-io/raydium-sdk-v2@0.2.42-alpha henüz CollectCreatorFeePermissionless için bir oluşturucu ortaya çıkarmaz. Bir SDK sürümü bunu ekleyene kadar, yükseltilmiş CPMM IDL’den oluşturun veya programı doğrudan çağırın. makeCollectCreatorFeeInstruction öğesini yeniden kullanmayın: yeni talimatın farklı bir ayırıcısı vardır ve yaratıcı imzalayan / amm_config konumlarını ayrı payer ve imzalamayan creator hesaplarıyla değiştirir.
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 dosyasını takip eder.
CPI’niz bir PDA olarak imzalıyorsa (ö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

Destek talebinde bulunmadan ö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ı. api-v3.raydium.io adresinden bir rezerv değerini asla CurveCalculator.swap içine geçirmeyin. RPC’den alın.
  • 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 değeriniz kasanın gönderdiği değil, kullanıcının gerçekten aldığı şeye göre belirtilmelidir.
  • Swap’ta NotApproved. PoolState.status değerini kontrol edin — yönetici bu havuzda swap’ları duraklatmış olabilir. Durum bit maskesi için products/cpmm/instructions dosyasına bakın.

Sonraki adımlar

Kaynaklar: