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 →
Bunun yaptığı şey. Seçtiğiniz ücret katmanında yeni bir CLMM havuzu oluşturur, ardından ilk yoğunlaştırılmış pozisyonu açar. Dört dosya (
config.ts, createPool.ts, createPosition.ts ve utils.ts) arasında iki işlem — npx tsx ile çalıştırılır. Kod, raydium-sdk-V2-demo/src/clmm içindeki resmi demolardan alınmış ve bağımsız olarak çalışacak şekilde uyarlanmıştır.Kurulum
Hızlı başlangıç ön koşullarını okuduğunuzdan veRPC_URL, KEYPAIR ile bağımlılıkların yüklü olduğundan emin olun.
Hızlı başlangıçtaki bağımlılıklara ek olarak şunlara ihtiyacınız vardır:
decimal.js—createPool.tsvecreatePosition.tsiçinde fiyat ve tick matematiği.bs58—KEYPAIR_BS58kullanırsanızconfig.tsiçinde base58 kodlu keypair’i çözer (JSON keyfile yerine).tsx— aşağıdaki.tsdosyalarınınpx tsxaracılığıyla doğrudan çalıştırır; swap ve CPMM scriptlerinden farklı olarak, bu dosyanodeile çalıştırılan düz bir.mjsdosyası değildir.
config.ts içinde cluster değerini "devnet" olarak değiştirmek tek başına yeterli değildir. createPool.ts, sabit bir mainnet sabiti olan programId: CLMM_PROGRAM_ID iletir ve bu cluster değerini takip etmez — bunu hemen üstündeki yorum satırı olan DEVNET_PROGRAM_ID.CLMM_PROGRAM_ID ile değiştirin. createPosition.ts ayrıca mainnet poolId (RAY-USDC havuzu) sabit kodlar; bunu Adım 2’de oluşturduğunuz devnet havuzunun kimliğiyle değiştirin.
Adım 1 — config.ts
config.ts olarak kaydedin. Bu, demo repo’nun src/config.ts.template ile aynı şekildedir — disableFeatureCheck true olarak zorlanır (SDK’nın başlangıç özellik algılama çağrısında engellenmemesi için herhangi bir önemsiz olmayan entegrasyon için önerilir):
config.ts
Adım 2 — createPool.ts
config.ts ile birlikte kaydedin. Kaynak: src/clmm/createPool.ts.
createPool.ts
Adım 3 — createPosition.ts
Kaynak: src/clmm/createPosition.ts.
createPosition.ts
Adım 4 — utils.ts
Kaynak: src/clmm/utils.ts.
utils.ts
Çalıştırın
Ne oldu
İşlem 1 —raydium.clmm.createPool başlatıldı:
- havuz durumu
(mint1, mint2, ammConfig)için kanonik PDA’da, token_0_vaultvetoken_1_vault(mint bayt sırasına göre sıralanmış),observationhalka arabelleği,- satır içi tick-array bitmap,
sqrt_price_x64 değerini initialPrice değerinizden ayarladı.
İşlem 2 — raydium.clmm.openPositionFromBase yoğunlaştırılmış bir pozisyon açtı:
- cüzdanınıza bir pozisyon NFT’si bastı (NFT pozisyondur; onu aktarmak pozisyonu aktarır),
- alt ve üst sınırlarda tick dizileri tahsis etti (bu aralıklardaki ilk pozisyon için bir kerelik kira; tick dizileri program tarafından hiçbir zaman kapatılmaz, bu nedenle aynı dizilerdeki sonraki pozisyonlar ek kira ödemez),
inputAmountkadarınımint1ve eşleşen çift miktarınımint2(tarafından hesaplananPoolUtils.getLiquidityAmountOutFromAmountIn) yatırdı,- pozisyonu aralık genişliğiyle orantılı likidite ile kredilendirdi.
[0.000001, 100000]) etkili olarak tam aralıktır; ücretleri mevcut spot’a yakın yoğunlaştırmak için daraltın.
Ücret katmanı seçme
clmmConfigs[0] en düşük ücret katmanıdır. Tam set GET https://api-v3.raydium.io/main/clmm-config adresinde yayınlanır:
Tam karar matrisi için
user-flows/choosing-a-pool-type bölümüne bakın.
Yaygın hatalar
Pool already exists for this config— Bu(mint1, mint2, ammConfig)üçlüsü için zaten bir CLMM havuzu vardır. Mevcut havuz kimliğini arayın ve Adım 2’yi atlayın.Insufficient funds for amount B— Cüzdanınızda istenenmintAmiktarı vardır ancak eşleşenmintByoktur. Fiyat aralığın içinde olduğunda bir pozisyon açmak her iki tarafta da likidite gerektirir.Tick out of range—lowerPriceveyaupperPricedeğeriniz temsil edilebilir fiyat aralığının dışında kalır. Mevcut fiyata göre daha makul bir aralık kullanın.- Eski fiyat — API’den alınan bir teklif 5–60 saniye eski olabilir.
executePositionslippage’da başarısız olursa, imzalamadan hemen önce canlı fiyatı yeniden getirmek içincreatePosition.tsiçindekigetRpcClmmPoolInfobloğunun açıklamasını kaldırın.
Uyarılar
- Pozisyon NFT’si tek tutamaçtır. NFT’yi kaybederseniz veya aktarırsanız, pozisyona erişimi kaybedersiniz. Bunu bir anahtar gibi ele alın.
- Aralık dışı pozisyonlar ücret kazanmaz. Fiyat
[lowerPrice, upperPrice]dışına çıkarsa, pozisyonunuz tamamen bir varlıkta park edilir ve yeniden dengeleyene kadar hiçbir şey kazanmaz. - Tick array kirasıdır tek yönlüdür. İlk pozisyon hiç başlatılmamış bir tick dizisine dokunduğunda kirasını öder; program tick dizilerini kapatmak için bir yol sunmaz, bu nedenle bu kira kalıcıdır. Aynı dizideki sonraki pozisyonlar ücretsizdir.
Sonraki
products/clmm/overview— tam CLMM mekaniği.products/clmm/ticks-and-positions— tick’lerin arkasındaki matematik.algorithms/impermanent-loss— CLMM IL amplifikasyonunu ölçme.user-flows/create-clmm-pool— Raydium UI aracılığıyla aynı akış.

