Ana içeriğe atla
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.42-alpha sürümünü hedefler ve Solana mainnet-beta’ya karşı doğrulanmıştır (2026-04). Rust CPI iskeleti raydium-cp-swap’ın master dalında (Anchor 0.30.x) 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 deposundaki bir dosyayı yansıtır; GitHub bağlantısı her bölümün yanında yer alır. Önyükleme, demo deposunun config.ts.template dosyasını takip eder (kaynak):
Raydium örneği SDK’nın temel arayüzüdür — aşağıdaki tüm örnekler bunu kullanır. Token listelerini ve ücret konfigürasyonlarını api-v3.raydium.io adresinden tembel olarak getirir; çevrimdışı ortamlarda kendi verilerinizle tohumlandırabilirsiniz.

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’yi poolFeeAccount’a ödeme.
  • Çağıranın ilişkili token hesaplarını eksikse oluşturma.
  • Her bir taraf için doğru token programını seçme (SPL Token vs Token-2022).
Onaylandıktan sonra canlı havuz durumunu şu şekilde getirebilirsiniz:

Swap (base-input)

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’dan fiyat almayın — bir blok eski bir fiyat, zincire konduğunda ExceededSlippage ile kayabilir.

Swap (base-output)

Kaynak: src/cpmm/swapBaseOut.ts

Likidite yatırma

Kaynak: src/cpmm/deposit.ts
SDK, lpAmount’u havuzun güncel rezervlerine göre needed_token_0 ve needed_token_1’e dönüştürür, her birini talimatın maximum_* argümanları için 1 + slippage ile şişirir ve gerekli ATA oluşturmalarını yapar.

Likidite çekme

Kaynak: src/cpmm/withdraw.ts

Protokol/fon/yaratıcı ücretlerini toplama

Kaynak: src/cpmm/collectCreatorFee.ts, src/cpmm/collectAllCreatorFee.ts Bu talimatlar yönetici veya yaratıcı tarafından kısıtlı ve tipik olarak Raydium çoklu imzasından veya havuz yaratıcısından tutulan bir imzacı tarafından çağrılır. SDK bunları ham derleyiciler olarak yüzeylendirir:
Zincir dışında biriken ücretleri doğrudan PoolState’ten okuyabilirsiniz:

Rust CPI iskeleti

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 (örneğin, mevduat sahipleri adına bir kasayı yönetiyorsanız), CpiContext::new yerine CpiContext::new_with_signer kullanın ve seed’lerinizi geçin.

Yaygın tuzaklar

Bir destek talebinde açmadan önce kısa bir kontrol listesi:
  • Sıralanmış mint’ler. Türetilen poolState PDA’nız zincir üstü havuzla eşleşmiyorsa, muhtemelen mint’leri sıralamayı unuttunuz.
  • Eski API fiyatı. Asla api-v3.raydium.io’dan bir rezerv değerini CurveCalculator.swap içine geçmeyin. 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-fee mint’leri için eksik slippage. Havuzun her iki tarafı da Token-2022 transfer-fee mint’iyse, minimum_amount_out’unuz kasanın gönderdiği şeyde değil, kullanıcının aldığında yer almalıdır.
  • Swap’ta NotApproved. PoolState.status’u kontrol edin — yönetici o havuzdaki swap’ları duraklatmış olabilir. Durum bitmask’ı için products/cpmm/instructions bölümüne bakın.

Sonraki adımlar

Kaynaklar: