Ana içeriğe atla

Documentation Index

Fetch the complete documentation index at: https://docs.raydium.io/llms.txt

Use this file to discover all available pages before exploring further.

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.42-alpha sürümünü belgelemektedir. Bu sürüm, bu sitedeki tüm kod örnekleri için doğrulanmıştır (2026-04). SDK 1.0’dan öncedir ve tür arayüzü sürümlere göre değişmiştir — sürümünüzü sabitleyin.

Kurulum

npm install @raydium-io/raydium-sdk-v2 @solana/web3.js @solana/spl-token
# veya
pnpm add @raydium-io/raydium-sdk-v2 @solana/web3.js @solana/spl-token
SDK TypeScript ile yazılmıştır ve .d.ts dosyalarını JavaScript yapıtıyla birlikte sunmaktadır. Minimum araç zinciri: Node 18+, TypeScript 5.0+, moduleResolution: "bundler" veya "node16".

Başlatma

Giriş noktası Raydium.load fonksiyonudur:
import { Raydium } from "@raydium-io/raydium-sdk-v2";
import { Connection, Keypair, clusterApiUrl } from "@solana/web3.js";

const connection = new Connection(process.env.RPC_URL ?? clusterApiUrl("mainnet-beta"));
const owner      = Keypair.fromSecretKey(/* ... */);

const raydium = await Raydium.load({
  owner,
  connection,
  cluster: "mainnet",           // "mainnet" | "devnet"
  disableFeatureCheck: true,    // SDK'nin başlangıç özellik tespiti API çağrısını atlayın
  blockhashCommitment: "confirmed",
});
Raydium.load asenkron çalışır çünkü başlangıçta api-v3.raydium.io adresinden küçük bir /config yükü getirir (mevcut AmmConfig hesaplarını, ücret seviyelerini vb. listeleyerek). Çevrimdışı ortamlarda disableFeatureCheck: true değerini ayarlayın; bu değerleri bazı yapıcılara manuel olarak sağlamanız gerekecektir.

Dört modül cephesi

Yüklendikten sonra raydium nesnesi, her ürün yüzeyine bir tane olmak üzere dört modül cephesini ortaya çıkarır:
raydium.cpmm       // CPMM havuzları: createPool, addLiquidity, withdrawLiquidity, swap, ...
raydium.clmm       // CLMM havuzları: createPool, openPositionFromBase, increasePositionFromBase,
                   //                  decreaseLiquidity, harvestAllRewards, swap, ...
raydium.liquidity  // AMM v4 havuzları: computeAmountOut, swap, addLiquidity, removeLiquidity, ...
raydium.farm       // Farm v3/v5/v6: deposit, withdraw, harvestAllRewards, create, setRewards
raydium.launchpad  // LaunchLab: createLaunchpad, buyExactIn, sellExactIn, graduate, ...
raydium.trade      // Çok havuzlu yönlendirme: quotes, route-execution (0.2.41'de beta)
raydium.token      // Yardımcılar: token listesi, meta veri, ATA oluşturma
(Evet, toplamda beş cephe vardır — “dört” Raydium’un bunları herkese açık olarak gruplandırma biçimidir; trade ve token destekleyici yardımcılar olarak tasarlanmıştır.)

İşlem yapıcıları

Her değiştiren fonksiyon hemen yürütmek yerine bir yapıcı döndürür:
const { execute, builder, transaction, innerTransactions, extInfo } =
  await raydium.cpmm.addLiquidity({
    poolInfo,
    amountInA,
    amountInB,
    slippage: 0.005,
    txVersion: TxVersion.V0,
  });
Döndürülen alanlar:
  • execute — imzalayan ve gönderen kolaylık fonksiyonu. builder.execute ile eşdeğer.
  • builder — biriken tüm talimat ve imzacılarla TxBuilder örneği. Bir VersionedTransaction[] almak için .build() öğesini çağırın; kendi talimatlarınızı enjekte etmeniz veya harici imzacılarla imzalamanız gerektiğinde kullanılır.
  • transaction / innerTransactions — ham talimat dizileri. Oluşturulan çok programlı işlemleri oluştururken kullanılır.
  • extInfo — ürüne özgü ekstralar. Örneğin, createPool extInfo.poolId döndürür; createLaunchpad yeni başlama durumu PDA’sını döndürür.
txVersion eski sürüm ve V0 işlem formatını kontrol eder. V0 (adres arama tabloları) varsayılan tavsiyedir — daha büyük swapları tek bir işlemde sığdırmanıza izin verir.

Neden asenkron yapıcılar?

Neredeyse her yapıcı dahili olarak zincir üzerinde durum 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 turlarını içerir. Yeniden getirilmeyi önlemek için uzun süreli bir raydium örneği tutun.

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

CLMM cephesi, yeni dinamik ücret, tek taraflı ücret ve limit emir özelliklerine yönelik yüzeyler kazandı:
  • raydium.clmm.createCustomizablePoolcollectFeeOn, enableDynamicFee ve dynamicFeeConfigId kabul eden createPool üst kümesi. Yeni kontroller gereken herhangi bir yeni havuz için bunu kullanın; klasik createPool varsayılan ücretli havuzlar için çalışmaya devam eder.
  • raydium.clmm.openLimitOrder — bunu destekleyen bir havuzda tek tik limit emri açın. poolInfo, poolKeys, limitOrderConfig (/main/clmm-limit-order-config’ten), inputMint, inputAmount ve hedef tick alır.
  • raydium.clmm.increaseLimitOrder / decreaseLimitOrder — mevcut bir emrin doldurulmamış kısmını ayarlayın. Azalma, tam olarak doldurulmuş bir emri InvalidOrderPhase ile geri çevirir.
  • raydium.clmm.settleLimitOrder / settleAllLimitOrder — doldurulmuş çıktıyı sahibinin ATA’sına tarayın. Emrin sahibi veya havuzun limit_order_admin bekçisi bunları çağırabilir.
  • raydium.clmm.closeLimitOrder / closeAllLimitOrder — kira geri kazanmak için tamamen kapatılmış emirleri kapatın.
  • raydium.api.getClmmDynamicConfigs() / getClmmLimitOrderConfigs() — yeni /main/clmm-dynamic-config ve /main/clmm-limit-order-config uç noktalarına vuran REST yardımcıları.
Küçük bir yeniden yapılandırma ayrıca utils/ öğesini libraries/ olarak taşıdı. @raydium-io/raydium-sdk-v2/utils/... adresinden içe aktaran kod, @raydium-io/raydium-sdk-v2/libraries/... adresine geçmelidir. Üst düzey paket varileri değişmez, bu nedenle çoğu kullanıcı yeniden adlandırmayı hiç görmez. Uçtan uca TypeScript izlenişleri products/clmm/code-demos adresinde yer almaktadır.

Yaygın tuzaklar

1. Küme uyuşmazlığı

SDK’nin başlangıç yapılandırması kümeye özgüdür. cluster: "mainnet" öğesini devnet Connection ile karıştırmak sessiz yönlendirme hatasına neden olur: SDK, mainnet AmmConfig ile karşılaştırma yapar ancak devnet’e gönderir. Her zaman her ikisini de geçin.

2. Önceden oluşturulmuş ATA’ları unutmak

Bir mint ile ilk etkileşimde, kullanıcının İlişkili Token Hesabı bulunmayabilir. SDK, eksik bir ATA’yı algıladığında bir AssociatedTokenAccount::create talimatını otomatik olarak öncüler ve bu da az miktarda kira maliyeti getirir. Cüzdan SOL bakiyesi düşükse, bu sessizce başarısız olacaktır. 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 aldığınızdan sonra değişmişse (büyük bir işlem fiyatı hareket ettirmişse, söyleyelim), swap’ın minAmountOut eski duruma karşı hesaplanabilir ve zincir üzerindeki miktar çıkışının altında iniş yapabilir, geri çevirme yapabilir. Yüksek değerli işlemler oluşturmadan hemen önce poolInfo öğesini yeniden getirin veya zincir üzerinde ayırmaları yeniden sorgulayan SDK’nin computeAmountOut öğesini kullanın.

4. Öncelik ücretleri

SDK varsayılan olarak hesaplama birimi fiyatlarını eklemez. Yüksek hacimli pencerelerde (yeni havuz başlatmaları, meme-coin etkinlikleri) bu, işleminizin birçoğu ile rekabet etmesi ve iniş yapamaması anlamına gelir. Açık bir computeBudgetConfig sağlayın:
const { execute } = await raydium.cpmm.swap({
  poolInfo,
  inputAmount: new BN(...),
  swapResult: ...,
  slippage: 0.005,
  txVersion: TxVersion.V0,
  computeBudgetConfig: {
    units: 250_000,          // CU sınırı
    microLamports: 50_000,   // CU başına öncelik ücreti
  },
});
Boyutlandırma kılavuzu için integration-guides/priority-fee-tuning konusuna bakın.

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

CPMM ve AMM v4, CPMM matematiğidir (normal işlemler üzerinde düşük etki). CLMM parça parçadır (etki tik geçişinde sıçrar). CPMM örneğinden 0.5% kayma toleransını birkaç tik’i kesen CLMM swap’ına kopyalarsanız, işlem muhtemelen geri çevirme yapacaktır. SDK’nin computeAmountOut fonksiyonu priceImpact döndürür; toleransınızı bunun üstünde boyutlandırın.

6. BN ve number

SDK’deki tüm miktar alanları bn.js BN örnekleridir — hiçbir zaman JavaScript number değeri değildir. Miktar değerlerini .toNumber() aracılığıyla dönüştürmek sessizce 2^53 konumunda kesilir; yaklaşık 9 katrilyon gibi daha yüksek herhangi bir değer için (9 ondalık mint’lerde yaygın değildir), bu yanlış sonuç üretir. Final UI render’ına 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 kılavuzu bunu hedefler.
  • Eski bir v1 paketi (@raydium-io/raydium-sdk) tarihsel nedenlerle npm’de mevcuttur. Bakım, CPMM ve LaunchLab gönderildikten sonra sona ermiştir (v1 hiçbir zaman bunlardan herhangi birine destek kazandı) ve 2024 sonrasında v1 sürümü yayınlanmamıştır. v1’i yaşam sonu olarak kabul edin: yeni kod için kullanmayın ve kalan tüm v1 entegrasyonlarını v2’ye geçirin.
  • SDK v2, 1.0’dan öncedir. 0.x küçük sürümleri arasında kırılma değişiklikleri mümkündür; doğruladığınız sürümü sabitleyin ve yükseltme sırasında GitHub yayın notlarını kontrol edin.

Yükseltme

SDK küçük sürümleri arasında yükseltilirken:
  1. Her değiştiren ç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. Kayma işleminizi yeniden doğrulayın; SDK sürümler arasında otomatik bağlanmış ve opt-in bağlanmış davranışlar arasında kaymıştır.
  4. raydium.trade (yönlendirme) kullanırsanız, rota şeklini yeniden doğrulayın — yüzeyin en kararsız kısmıdır.

Yardım almak

SDK ve API soruları için:
  • GitHub sorunları — hata ve özellik istekleri için github.com/raydium-io/raydium-sdk-V2/issues adresinde dosya açın. Raydium ekibi aktif bir şekilde izler.
  • Discord — senkron yardım için discord.gg/raydium adresindeki #dev-support kanalı.
  • Telegramraydium.io adresinden bağlantılı geliştirici sohbeti (doğrulanmamış Telegram gruplarından kaçının).
Güvenlik sorunları için, genel kanalları kullanmayınsecurity/disclosure konusuna bakın.

İşaretçiler

Kaynaklar: