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 →
Bu sayfa CLMM’nin arkasındaki türetmeleri bir araya getirir. Zincir üzerindeki uygulama için, bkz.
products/clmm/math (bu sayfaya atıfta bulunur) ve products/clmm/ticks-and-positions (tick ızgarasını motive eder).Neden sqrt-fiyat, sadece fiyat değil
Uniswap-v3-benzeri CLMM’ler fiyatı karekök olarak gösterir ve sabit noktaQ64.64 içinde depolar:
- Doğrusal likidite matematiği. Bir fiyat aralığındaki token0 veya token1 miktarı,
pricedeğilsqrt_pricedoğrusal bir fonksiyonudur.sqrt_pricedepolamak, swap adımının karekök hesaplamadan bu doğrusal formülleri değerlendirmesine izin verir. - Taşma kontrolü.
sqrt_price · Ltüm makul parametreler içinu256içine sığar;price · Lçok daha erken taşabilir. - Tick matematiği tekdüze. Tick’ler
1.0001^iolarak tanımlandığından,sqrt(price) = 1.00005^ide tam bir1.00005kuvvetleridir. Her tick-geçişisqrt_price_x64uzayında küçük bir çarpmaya çevirisi.
price = (sqrt_price_x64 / 2^64)^2.
Tick ızgarası
Fiyatlar bir ızgaraya ayrıştırılır:tick_i bir i32. Canlı aralık [MIN_TICK, MAX_TICK] = [−443636, 443636] olup kabaca [2^−128, 2^128] fiyat aralığı verir. Her havuzun tick_spacing’i, ücret katmanı tarafından ayarlanır: sıkı çiftler için daha küçük aralıklar (örn. stablecoin %0.01 katmanı aralık 1 kullanır), değişken çiftler için daha büyük aralıklar (%0.25 katmanı 60 kullanır, %1 katmanı 120).
Pozisyonlar tick_lower ve tick_upper değerlerinin tick_spacing ile hizalı olması gerekir. Havuzun aktif tick’leri (likiditenin başladığı veya bittiği yerler) swap adımının önem verdiği tek tick’lerdir.
Likidite-miktar
LikiditeL ve fiyat aralığı [sqrt_lo, sqrt_hi] (tüm sqrt_price değerleri) içeren bir pozisyon için:
| Havuz durumu | Token0 miktarı | Token1 miktarı |
|---|---|---|
Fiyat aralığın üzerinde (sqrt_p ≥ sqrt_hi) | 0 | L · (sqrt_hi − sqrt_lo) |
| Fiyat aralık içinde | L · (sqrt_hi − sqrt_p) / (sqrt_p · sqrt_hi) | L · (sqrt_p − sqrt_lo) |
Fiyat aralığın altında (sqrt_p ≤ sqrt_lo) | L · (sqrt_hi − sqrt_lo) / (sqrt_lo · sqrt_hi) | 0 |
(x_v, y_v) ile CPMM olarak davranır ve havuzun geçerli (sqrt_p, L) ile L = sqrt(x_v · y_v) tutarlı olacak şekilde seçilir. sqrt_p’den aralık sınırına integre etmek yukarıdaki miktarları verir.
Ters formüller (verilen amount0 veya amount1 için pozisyon mint ederken kullanılır):
Tek-tick swap adımı
Tek bir tick aralığı içinde havuz CPMM gibi davranır. Mevcutsqrt_p ve hedef sqrt_target verildiğinde:
Tam-giriş adımı
Δin_remaining verildiğinde:
0→1 swap sqrt_p’yi düşürür (fiyat token0 satarken düşer). 1→0 swap bunu yükseltir. Formüller sqrt_p ve sqrt_target yer değişmişken simetriktir.
Tam-çıkış adımı
Aynı yapı, bunun yerineΔin için çözer.
Çok-tick swap döngüsü
Bir swap giriş tükenene veya fiyat sınırına çarpılana kadar tick’ler üzerinde yinelenir:single_step havuzun mevcut L’sini kullanır. L sadece başlatılmış bir tick geçildiğinde değişir. Tick’ler arasındaki likidite sabittir, bu da adım matematik kapalı-formunu mümkün kılar.
Bir tick’teki liquidity_net o tick’te başlayan pozisyon likiditeleri eksi orada biten likiditelerin imzalı toplamıdır. Yukarı doğru geçiş liquidity_net ekler; aşağı doğru geçiş çıkarır.
Havuzda bir tick’te limit emirleri açık olduğunda, geçiş-tick adımı aynı zamanda swap girişinin bir kısmını faydalı olarak bu emirleri doldurmak için tüketir (kohortlar arasında FIFO). Eşleştirme algoritması ve tabanfiyat adımının üstüne uygulanabilen dinamik-ücret artışı products/clmm/math içinde belgelenmiştir; yukarıdaki kapalı-formül tek-adım formüllerini değiştirmezler.
Ücret-büyüme biriktiriciler
CLMM, aktif likidite başına ücretleri, her tarafı, global ve tick başına izler:single_step üzerinde:
fee_growth_global bu adımda hareket etmez, çünkü o tarafta hiçbir token giriş olarak ödenmedi.)
Bir tick geçildiğinde, program fee_growth_outside’ı çevirir:
tick_current’e göreldir. tick_current tick’in üzerinde olduğunda, dışarı “aşağı” anlamına gelir. tick_current aşağında olduğunda, dışarı “yukarı” anlamına gelir. Çevirme yorumu değiştirir.
Bir pozisyon için fee_growth_inside
Pozisyon [tick_lower, tick_upper] ve mevcut tick_current verildiğinde:
s için toplanmayan ücretleri:
IncreaseLiquidity, DecreaseLiquidity, CollectFees).
İşlenmiş örnek — bir tick’i geçme
Havuz (basitleştirilmiş):sqrt_p_x64 = 2^64 · 1.0 = 2^64(fiyat = 1.0)L = 1_000_000tick_current = 0- Altta sonraki başlatılmış tick:
tick = −60,sqrt_price = 1.0001^(−30) ≈ 0.99700,liquidity_net = −400_000(bu tick bir pozisyonu sonlandırır, bu nedenle aşağı doğru geçiş 400k çıkarır) - Ücret oranı: %0.25
Δin = 10_000 token0, yön = 0→1.
Adım 1 — sqrt_target = 0.99700 · 2^64 kadar:
L = 600_000 ile:
Sonraki başlatılmış tick (diyelim tick = −120) sqrt = 0.99402’de. amount_in_to_target’ı yeniden hesaplayınız:
Δin_remaining’ten az. Tekrar geçiniz. Δin_remaining sıfıra ulaşıncaya kadar devam ediniz.
Δout’un tam dizisi nihai swap çıkışına birikir.
Başlatma ve taşma korumaları
MIN_SQRT_PRICE_X64veMAX_SQRT_PRICE_X64tick = ±443636ile karşılık gelir.sqrt_p’yi bu aralığın dışına itecek herhangi bir swap geri döner.- Kullanıcının
sqrt_price_limitparametresi aynı aralıkta bulunmalıdır; program kontrol eder. L · Δsqrtürünleriu256içinde hesaplanır, ardından taşmayı önlemek içinu128ye geri kaydırılır.
Uniswap v3’e karşı farklılıklar
- Oracle. Raydium’un
ObservationStatebir(block_timestamp, tick_cumulative, seconds_per_liquidity_cumulative)halka tamponu depolar; Uniswap’ınkinden biraz farklı tel biçimi ama aynı TWAP matematik. - Token-2022. Raydium CLMM Token-2022 mintlerini destekler; transfer-ücret varyantı ek ön/son-swap miktar ayarlamaları gerektirir. Bkz
algorithms/token-2022-transfer-fees. - Tick bitmap. Raydium başlatılmış-tick bitmap’i hızlı
find_next_initialized_tickiçin havuz başına[u64; 16]içine paketler; Uniswap kelime başına zincir üzerinde bir eşlem kullanır. Tradeoff kira vs arama maliyetidir. - Ödül yuvaları. Raydium havuz başına 3 ayrı ödül akışını ayrı
reward_growth_global_x64sayaçları ile destekler; ücret-büyüme biriktiricisi ile aynı yapı.
İşaretçiler
products/clmm/math— zincir üzerinde uygulama ve gerçek CLMM struct alanları ile işlenmiş örnek.products/clmm/ticks-and-positions— tick ızgarası,liquidity_net/gross, aktif-aralık anlamları.products/clmm/fees— ücret-büyüme biriktiricisi eylemde.
- Uniswap v3 teknik raporu (sqrt-fiyat matematik kanonik türetimi).
- Raydium CLMM program kaynağı.


