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. Bu sayfa @raydium-io/raydium-sdk-v2@0.2.64-alpha sürümünü belgeler; bu, bu sitedeki tüm kod örneklerinin kullandığı sürümdür. SDK henüz 1.0’dan öncedir ve tür yüzeyi sürümler arasında değişmiştir — sürümünüzü sabitleyin.Sürüm 0.2.42-alpha’dan 2026-09-09 tarihinde program yükseltmeleriyle birlikte 0.2.64-alpha’ya yükseltilmiştir; bu SDK’nın mevcut sürümüdür. Kod-demo sayfalarının bağlantı verdiği raydium-sdk-V2-demo deposu 0.2.62-alpha sürümünü kurar; bir demoyu kelimesi kelimesine takip ediyorsanız her iki sürümü de sabitleyin. Bu sayfadaki demolar son olarak 0.2.42-alpha sürümüne karşı çalıştırılmıştır (2026-04); çağrı imzaları 2026-09-09 tarihinde 0.2.64-alpha kaynağına karşı yeniden kontrol edilmiştir, ancak herhangi bir uyuşmazlığı bir belgeleme hatası olarak değerlendirin ve bir sorun açın.

Kurulum

SDK TypeScript’te yazılmıştır ve JS yapıtının yanında .d.ts dosyalarını içerir. Minimum araç zinciri: Node 18+, TypeScript 5.0+, moduleResolution: "bundler" veya "node16".

Başlatma

Giriş noktası Raydium.load fonksiyonudur:
Raydium.load asenkrondur, çünkü varsayılan olarak token listesini (raydium.token.load()) api-v3.raydium.io üzerinden yükler. Bu isteği atlamak için disableLoadToken: true geçirin. Kullanılabilirlik özellik kontrolü /v3/main/AvailabilityCheckAPI adresine yapılan ayrı bir çağrıdır ve açıkça disableFeatureCheck: false geçirmediğiniz sürece zaten atlanır. Ücret yapılandırmaları yükleme sırasında hiç getirilmez — ilk kullanımda raydium.api.getCpmmConfigs() / getClmmConfigs() üzerinden tembel biçimde gelirler.

Modül arayüzleri

Yüklendikten sonra, raydium nesnesi bir API istemcisinin yanı sıra on modül arayüzü ortaya çıkarır:

İşlem oluşturucuları

Her değiştirici fonksiyon hemen yürütmek yerine bir oluşturucu döndürür:
Döndürülen alanlar:
  • execute — imzalayan ve gönderen bir kolaylık fonksiyonu. builder.execute ile eşdeğerdir.
  • builder — tüm talimatlar ve imzalayanlar biriktirilmiş TxBuilder örneği. builder.build(), transaction alanı tek bir eski Transaction olan bir TxBuildData döndürür; builder.buildV0() ise tek bir VersionedTransaction içeren bir TxV0BuildData döndürür. Yalnızca buildMultiTx / buildMultiTxV0 bir dizi üretir.
  • transaction — oluşturulmuş Transaction / VersionedTransaction.
  • instructionTypes / signers — biriktirilmiş talimat etiketleri ve imzalayan kümesi.
  • extInfo — ürüne özgü ekstralar. Örneğin cpmm.createPool, extInfo.address.{poolId, lpMint, vaultA, vaultB} döndürür; launchpad.createLaunchpad ise extInfo.address döndürür (bir LaunchpadPoolInfo artı poolId).
Dönüş tipinde innerTransactions diye bir alan yoktur — onu destructuring ile almak bir TypeScript hatasıdır. Dönüş tipi MakeMultiTxData olan oluşturucular (örneğin clmm.harvestAllRewards, farm.harvestAllRewards, tradeV2.swap, launchpad.createLaunchpad) bunun yerine transactions sunar; bunların execute çağrısı { sequentially: boolean } gerektirir ve { txId } değil { txIds } ile sonuçlanır.
txVersion eski ve V0 işlem biçimi arasında kontrol eder. V0 (adres arama tabloları) varsayılan tavsiyedir — daha büyük swapların tek bir işlemde sığmasını sağlar.

Neden asenkron oluşturucular?

Neredeyse her oluşturucu dahili olarak zincir üstü durumu getirir: havuz bilgisi (teklifler için), token programı sahipliği (Token-2022 vs SPL yönlendirmesi için), hesap kira muafiyeti (ATA oluşturma için), vb. SDK agresif bir şekilde önbelleğe alır ancak yeni bir havuz için ilk çağrı RPC gidiş-dönüşleri içerir. Yeniden getirmeyi önlemek için uzun ömürlü bir raydium örneği tutun.

CLMM modülü eklemeleri (en son sürüm)

CLMM arayüzü yeni dinamik ücret, tek taraflı ücret ve limit sipariş özellikleri için yüzeyler kazandı:
  • raydium.clmm.createCustomizablePool — collectFeeOn ve dynamicFeeConfig (yapılandırma hesabının PublicKey değeri) kabul eden createPool üst kümesi. Dinamik ücretleri etkinleştiren şey dynamicFeeConfig sağlamaktır; ayrı bir enableDynamicFee bayrağı ve dynamicFeeConfigId yoktur. Klasik createPool, varsayılan ücretli havuzlar için çalışmaya devam eder.
  • raydium.clmm.openLimitOrder — tek tick’lik bir limit emri açar. poolInfo, baseIn (yön), orderTick, amount ve isteğe bağlı olarak tickArrayBitmap, noneIndex, ownerInfo alır. Tick’i nicelemek için dışa aktarılan getOrderTick({ baseIn, mintADecimal, mintBDecimal, tickSpacing, price }) yardımcısını kullanın.
  • raydium.clmm.increaseLimitOrder / decreaseLimitOrder — mevcut bir emrin doldurulmamış kısmını ayarlar. Her ikisi de { poolInfo, limitOrder, amount } alır; decreaseLimitOrder isteğe bağlı bir slippage ekler. Azaltma, tamamen doldurulmuş bir emirde InvalidOrderPhase ile geri döner.
  • raydium.clmm.settleLimitOrder / settleAllLimitOrder — doldurulmuş çıktıyı sahibinin ATA’sına süpürür. settleLimitOrder yalnızca { limitOrder } alır — poolInfo almaz. Emrin sahibi veya programın limit_order_admin keeper’ı bunu çağırabilir.
  • raydium.clmm.closeLimitOrder / closeAllLimitOrder — kirayı geri almak için tamamen kapatılmış emirleri kapatır.
  • raydium.api.getClmmDynamicConfigs() — yeni /main/clmm-dynamic-config uç noktasına isabet eden REST yardımcısı. (Limit emri yapılandırma yardımcısı veya uç noktası yoktur: limit emirleri havuz başına bir yapılandırma hesabıyla değil, tick ile anahtarlanır.)
Paket hiçbir alt yol dışa aktarımı bildirmez; dolayısıyla @raydium-io/raydium-sdk-v2/<anything> hiçbir yazımıyla çözümlenmez — her şeyi üst düzey barrel’dan içe aktarın. (Dahili olarak src/raydium/clmm/utils/ dizini src/raydium/clmm/libraries/ olarak yeniden adlandırıldı, ancak bu hiçbir zaman herkese açık bir giriş noktası değildi.) Uçtan uca TypeScript kılavuzları products/clmm/code-demos içinde bulunur.

Yaygın tuzaklar

1. Küme uyuşmazlığı

SDK’nın başlangıç yapılandırması kümeye özgüdür. cluster: "mainnet" öğesini devnet Connection öğesiyle karıştırmak sessiz yanlış yönlendirmeye neden olur: SDK mainnet AmmConfig öğesine karşı teklif verir ancak devnet’e gönderir. Her zaman her ikisini de geçin.

2. ATA’ları önceden oluşturmayı unutmak

Bir mint ile ilk etkileşimde, kullanıcının İlişkili Token Hesabı mevcut olmayabilir. SDK, eksik bir ATA’yı algıladığında bir AssociatedTokenAccount::create talimatını otomatik olarak önceden ekler; bu küçük bir kira miktarına mal olur. Cüzdanınızda SOL azsa bu sessizce başarısız olur. Yeniden denemeden önce kontrol edin ve fon sağlayın.

3. Eski poolInfo

poolInfo önbelleğe alınmış bir anlık görüntüdür. Havuz durumu onu getirdikten sonra değişmişse (büyük bir işlem fiyatı hareket ettirdiyse, örneğin), swap’ın minAmountOut eski duruma karşı hesaplanabilir ve zincir üstü çıktı miktarının altında kalabilir, geri döner. Yüksek değerli işlemler oluşturmadan hemen önce poolInfo öğesini yeniden getirin veya zincir üstü rezervleri yeniden sorgulayan SDK’nın computeAmountOut öğesini kullanın.

4. Öncelik ücretleri

SDK varsayılan olarak işlem birimi fiyatları eklemez. Yüksek hacimli pencereler sırasında (yeni havuz başlatmaları, meme-coin olayları) bu, işleminizin diğerleriyle rekabet ettiği ve iniş yapmayabileceği anlamına gelir. Açık bir computeBudgetConfig sağlayın:
Boyutlandırma rehberi için integration-guides/priority-fee-tuning öğesine bakın.

5. Slippage toleransı havuz türüyle eşleşmelidir

CPMM ve AMM v4 CPMM matematiğidir (normal işlemlerde düşük etki). CLMM parçalıdır (etki tick geçişlerinde atlar). CPMM örneğinden 0,5% slippage toleransını birkaç tick’i geçen bir CLMM swap’ına kopyalarsanız, işlem muhtemelen geri döner. SDK’nın computeAmountOut priceImpact döndürür; toleransınızı bunun üzerine boyutlandırın.

6. BN vs number

SDK’daki tüm miktar alanları bn.js BN örnekleridir — asla JavaScript number değil. Miktar değerlerini .toNumber() aracılığıyla dönüştürmek 2^53 konumunda sessizce kesilir; ~9 katrilyon üzerindeki herhangi bir değer için (9 ondalık mint’lerde nadir değildir), bu yanlış sonuç üretir. Son UI oluşturmaya kadar her şeyi BN içinde tutun.

Sürüm oluşturma ilkesi

  • @raydium-io/raydium-sdk-v2 Raydium’un koruduğu tek SDK’dır. Tüm belgeler, demolar ve entegrasyon rehberleri bunu hedefler.
  • Eski bir v1 paketi (@raydium-io/raydium-sdk) tarihsel nedenlerle npm’de bulunur. Bakım CPMM ve LaunchLab sevk edildikten sonra sona erdi (v1 hiçbir zaman her ikisini de desteklemedi) ve 2024’ten sonra v1 sürümü yayınlanmamıştır. v1’i yaşam sonu olarak değerlendirin: yeni kod için kullanmayın ve kalan v1 entegrasyonlarını v2’ye geçirin.
  • SDK v2 ön-1.0’dır. 0.x küçük sürümleri arasında kırıcı değişiklikler mümkündür; doğruladığınız sürümü sabitleyin ve yükseltirken GitHub sürüm notlarını kontrol edin.

Yükseltme

SDK küçük sürümleri arasında yükseltirken:
  1. Her değiştirici çağrının dönüş türünü yeniden kontrol edin — şekil değişiklikleri (örn. extInfo) sık sık iniş yapar.
  2. poolInfo getirme imzalarını yeniden oluşturun — bir alan yeniden adlandırılmış olabilir.
  3. Slippage işlemenizi yeniden doğrulayın; SDK sürümler arasında otomatik sınırlı ve tercih edilen sınırlı davranışlar arasında kaymıştır.
  4. raydium.tradeV2 (yönlendirme) kullanıyorsanız, rota şeklini yeniden doğrulayın — yüzeyin en kararsız kısmıdır. Arayüzün trade’den tradeV2’ye yeniden adlandırıldığını unutmayın; eski ad artık mevcut değildir.

Yardım almak

SDK ve API soruları için:
  • GitHub sorunları — hatalar ve özellik istekleri için github.com/raydium-io/raydium-sdk-V2/issues adresinde dosya açın. Raydium ekibi aktif olarak izler.
  • Discord — senkron yardım için discord.gg/raydium adresindeki #dev-support kanalı.
  • Telegram — raydium.io adresinden bağlantılı geliştirici sohbeti (doğrulanmamış Telegram gruplarından kaçının).
Güvenlik sorunları için, herkese açık kanallarda yayınlamayın — security/disclosure öğesine bakın.

İşaretçiler

Kaynaklar: