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.64-alpha sürümünü Solana mainnet-beta üzerinde hedefler, 2026-04’te 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 sabitlerinden 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. 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 arayanı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 belirlemeyin — bir blok eski bir fiyat belirleme, iniş zamanında ExceededSlippage içine kayabilir.

Swap (temel çıkış)

Kaynak: src/cpmm/swapBaseOut.ts

Likidite yatırma

Kaynak: src/cpmm/deposit.ts
SDK, lpAmount öğesini havuzun cari rezervlerini kullanarak needed_token_0 ve needed_token_1 öğelerine dönüştürür, talimatın maximum_* argümanları için her birini 1 + slippage ile şişirir 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 kapılı 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 aktarabileceği eklemeli CollectCreatorFeePermissionless. Sabitlenmiş SDK mevcut ham oluşturucuları ortaya koymaktadır:
@raydium-io/raydium-sdk-v2@0.2.64-alpha henüz CollectCreatorFeePermissionless için bir oluşturucu ortaya koymamaktadır. 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, PoolState adresinden birikmiş ücretleri doğrudan 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 imzalıyorsa (örneğin, mevduat sahipleri adına bir kasa yönetiyorsanız), CpiContext::new öğesini 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ış 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 öğesine 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 öğeniz kasanın gönderdiği değil, kullanıcının gerçekten aldığı şey cinsinden belirtilmelidir.
  • Swap’ta NotApproved. PoolState.status öğesini kontrol edin — yönetici bu havuzda swap’ları duraklatmış olabilir. Durum bit maskesi için products/cpmm/instructions adresine bakın.

Sonraki adımlar

Kaynaklar: