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 örnekler
@raydium-io/raydium-sdk-v2@0.2.42-alpha sürümünü Solana mainnet-beta’ya karşı hedefler, 2026-04’te doğrulanmıştır. Program ID’leri SDK aracılığıyla reference/program-addresses kaynağından gelir.Kurulum
raydium-sdk-V2-demo/src/clmm 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 repo’sunun config.ts.template dosyasını (kaynak) takip eder — disableFeatureCheck: true herhangi bir önemsiz entegrasyon için önerilen ayardır:
CLMM havuzu oluşturma
Kaynak:src/clmm/createPool.ts
- Türetme öncesinde
mint1/mint2öğelerini bayt sırasına göre sıralar. sqrt_price_x64 = floor(sqrt(initialPrice × 10^(dB−dA)) × 2^64)hesaplar.observationvetick_array_bitmap_extensionhesaplarını oluşturur.ammConfigtarafından tanımlanan havuz oluşturma ücretini öder.
Seçilen aralıkta pozisyon açma
Kaynak:src/clmm/createPosition.ts
InitTickArray talimatlarını paketler.
Mevcut bir pozisyonda likidite artırma
Kaynak:src/clmm/increaseLiquidity.ts
Likidite azaltma (ve aynı anda ücret toplama)
Kaynak:src/clmm/decreaseLiquidity.ts ve src/clmm/closePosition.ts
decreaseLiquidity öğesini liquidity = new BN(0) ile çağırın. Talimatın yan etkisi tokens_fees_owed_{0,1} öğesini kapatmak ve bunları aktarmaktır.
Likiditeyi ve ücretleri sıfırladıktan sonra pozisyonu tamamen kapatmak için, son decreaseLiquidity çağrısında closePosition: true geçirin. SDK ClosePosition ekler ve NFT’yi yakar.
Doğrudan bir Anchor istemcisi için, bildirilen hesapları değişmeden tutun ve havuzu ekleyin:
poolId geçirebilirsiniz. CLMM bunu yalnızca positionNftAccount dondurulduğunda okur, bu da bir istemci yolunu eski ve yeni pozisyonlarla uyumlu tutar.
Ödül(leri) toplama
Kaynak:src/clmm/harvestAllRewards.ts
harvestAllRewards, geçirilen her havuzdaki her pozisyonu yürür, CollectReward (ve herhangi bir UpdateRewardInfos) talimatlarını toplu hale getirir ve gerekirse işlemler arasında böler.
Swap
Kaynak:src/clmm/swap.ts
computeAmountOutFormat, zincir dışında tick haritasını zincir üstü programla aynı mantığı kullanarak yürür ve şunları döndürür:
- beklenen çıkış miktarı,
- kayma sonrası minimum çıkış miktarı,
- gerçek swap’ın dokunacağı tick dizisi hesaplarının listesi (
remainingAccounts).
remainingAccounts öğesini her zaman geçirin: çok az geçirirseniz, swap TickArrayNotFound ile yürüyüş ortasında geri döner; eski olanları geçirirseniz, boşa harcanan işlem.
Özelleştirilebilir CLMM havuzu oluşturma
createCustomizablePool, havuz oluşturma zamanında dinamik ücret ve tek taraflı ücret geçişlerini ortaya koyan yeni giriş noktasıdır. createPool ile aynı şekli alır ve üç ek öğe:
createPool, varsayılan ücret, limit emri yok, dinamik ücret yok yolu için çalışmaya devam eder. Üç yeni düğmeden herhangi birine ihtiyacınız olduğunda createCustomizablePool kullanın. Zincir üstü hesap listesi için products/clmm/instructions bölümüne bakın.
Limit emirleri
Bir limit emri, kullanıcı girdisini tek bir tick’te park eder ve bir swap bu tick’i geçtiğinde FIFO’da doldurulur. Çıktılar, sahibinin ATA’sına kapatma zamanında itilir; sahibinin doldurulması için çevrimiçi olması gerekmez.Limit emri açma
LimitOrderState PDA’sını (pool, owner, tick, nonce) öğesinden türetir, başına LimitOrderNonce öğesini çıkarır ve emri o tick’teki FIFO kohortuna ekler.
Açık bir emri artırma / azaltma
decreaseLimitOrder, emrin yalnızca doldurulmamış kısmından kaldırabilir; doldurulmuş kısım kapatılana kadar kilitlenir. Her iki talimat da emir zaten tamamen doldurulmuşsa InvalidOrderPhase ile geri döner.
Doldurulmuş bir emri kapatma
settleLimitOrder, emrin unfilled_ratio_x64 öğesini kohort izleyicisine karşı okur, doldurulmuş çıktıyı hesaplar ve sahibinin ATA’sına aktarır. Sahibi bunu kendileri çağırabilir; limit_order_admin (çevrimdışı operasyonel bekçi) de sahibinin adına çağırabilir — çıktı yine de sahibine gider.
Tamamen kapatılan emirleri kapat kirasını kurtarmak için closeLimitOrder (tek) veya closeAllLimitOrder (toplu) kullanın. Aynı anda birçoğunu kapatmak için settleAllLimitOrder, v0 tx’e sığan kadar SettleLimitOrder çağrısını paketler.
Bir cüzdanın park edilmiş emirlerini listeleme (çevrimdışı)
totalAmount / filledAmount / pendingSettle aşamaları ayırt eder). Kapalı emir geçmişi için /limit-order/history/order/list-by-user?wallet=… kullanın (cüzdan başına, nextPageId ile sayfalandırılmış); belirli bir emrin tam olay günlüğü için /limit-order/history/event/list-by-pda?pda=… kullanın.
Rust CPI iskelet
SwapV2 için kalan hesap sırası:
Yaygın tuzaklar
- Aralık dışı tick uç noktaları →
InvalidTickIndex. Her zamanTickUtils.getPriceAndTickaracılığıyla yasla. SwapV2içinde sağlanan yeterli tick dizisi yok →TickArrayNotFound. Tam listeyi almak içincomputeAmountOutFormatkullanın.- Bitmap uzantısı olmayan tam aralık pozisyonu → uzantı PDA yazılabilir olmalıdır; SDK bunu otomatik olarak işler.
sqrt_price_x64öğesinipriceile karıştırmak → burada 2 faktörlü bir karışıklık özellikle acı vericidir. Şüphe duyduğunuzda, SDK’nın bunu insan tarafından okunabilir bir fiyattan hesaplamasına izin verin.- Ödülleri çok hevesle toplama → her toplama bir işlem maliyeti.
harvestAllRewardsaracılığıyla birçok pozisyon arasında toplu hale getirin. - NFT hesaplarını kendiniz kapatma →
ClosePositionNFT’yi yakar ve ATA’sını kapatır. Ayrıca Token-2022 NFT mint’ini kapatır; klasik SPL Token mint’i sıfır arzda kalır çünkü bu program mint’leri kapatamaz. Desteklenen hesapları ayrı ayrı kapatmayın veya talimat geri döner. - Limit emrini boşluk dışı tick’te açma →
InvalidTickIndex. Her zamanTickUtils.getPriceAndTickaracılığıyla nicelleştirin. - Tamamen doldurulmuş bir emride
decreaseLimitOrderçağırma →InvalidOrderPhase. Bunun yerinesettleLimitOrderardındancloseLimitOrderkullanın. enableDynamicFee: truegeçerkendynamicFeeConfigIdunutma →CreateCustomizablePoolgeri dönüşüInvalidDynamicFeeConfigParamsolur. Dinamik ücreti kapatın veya/main/clmm-dynamic-configöğesinden bir yapılandırma seçin.
Sonraki adımlar
sdk-api/typescript-sdk— tam SDK yüzeyi.sdk-api/rest-api— alıntı ve havuz meta veri uç noktaları.user-flows/create-clmm-pool— kod olmayan kılavuz.integration-guides/aggregator— CLMM’yi bir yolun parçası olarak yönlendirme.

