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 →

Değişmez

Sabit-çarpım pazar yapıcısı (CPMM) iki rezerv x ve y tutar ve aşağıdakini zorlar:
x · y ≥ k       (her işlemden sonra)
Burada k, işlemden önceki rezervlerin çarpımıdır. Ücretsiz bir pazar için x · y = k tam olarak eşittir. Ücretler söz konusu olduğunda, k kesin olarak büyür (LP’nin ücret payı rezervlerde kalır). Değişmez kasıtlı olarak geometriktir: bir rezerv ne kadar küçük olursa olsun, diğeri sınırsızca büyüyüp eşleşmesini garantileyen bir yapıya sahiptir — yani havuz hiçbir taraftan sıfıra kadar drene edilemez.

Fiyatlandırma

Spot fiyatı

Herhangi bir anda x cinsinden y’nin marjinal fiyatı eğrinin tanjantıdır:
p = y / x
(Türetim: x · y = k’nin örtülü türevi dy/dx = −y/x verir; işareti göz ardı ederek |dy/dx| = y/x). Bu, havuzun sonsuz küçük bir işlem için belirttiği fiyattır. Sonlu herhangi bir işlem için, gerçekleşen fiyat eğri boyunca slipaj nedeniyle daha kötüdür.

Tam-giriş takas (Δx verin, Δy alın)

Ücretler söz konusu olduğunda, f ücret oranı olsun (örn. 25 bps için f = 0.0025). Ücreti girdiye uygulayın, sonra çıktıyı çözmek için değişmezi kullanın:
Δx_after_fee = Δx · (1 − f)
Δy           = y · Δx_after_fee / (x + Δx_after_fee)
İşlem sonrası rezervler:
x' = x + Δx
y' = y − Δy
Tam Δx rezervlere girer. Ücretin LP payı x'’de kalır; protokol payı ayrı bir muhasebe adımı vasıtasıyla eğriden hariç tutulur (aşağıdaki Ücret muhasebesi varyantları bölümüne bakın).

Tam-çıkış takas (Δy alın, minimum Δx ödeyin)

Δx_after_fee = x · Δy / (y − Δy)
Δx           = Δx_after_fee / (1 − f)
Havuzun yetersiz ücret almadığından emin olmak için Δx yukarı yuvarlanır.

Slipaj ve fiyat etkisi

Fiyat etkisi, işlemin sonucu olarak havuzun spot fiyatının ne kadar hareket ettiğini ölçer:
p_before = y / x
p_after  = y' / x' = (y − Δy) / (x + Δx)
impact   = (p_before − p_after) / p_before
Küçük Δx / x için, birinci dereceden genişleme şunu verir:
impact ≈ 2 · Δx / x      (ücretler göz ardı edilerek)
Sezgi: %1 swap yaklaşık %2 fiyat etkisine neden olur. Bu 2 faktörü, CPMM havuzlarının orta ölçekli işlemler için sipariş defteri piyasalarına kıyasla “ince” görünmesinin nedenidir — sadece mevcut en iyi teklifi karşısında satın almıyorsunuz, aynı zamanda kendi marjinal fiyatınızda yürüyüp gidiyorsunuz. Efektif fiyat takas yapan tarafından ödenen:
effective = Δx / Δy
p_before ve effective arasındaki fark slipaj’dır. Zincir üstü slippage arayüzü genellikle (effective − p_before) / p_before olarak ifade edilir; SDK’nın computeAmountOut bu nedenle hem amountOut hem de priceImpact döndürür.

Koddaki değişmez kontrol

Bir swap sonrasında, protokoller yeniden doğrularlar:
k' = x' · y'  ≥  k  =  x · y
Herhangi bir ihlal, program hatası veya aritmetik taşmadır. Raydium’un swap talimatları bu kontrolü bir son koşul olarak açıkça gerçekleştirir:
let k_before = coin_reserve_before as u128 * pc_reserve_before as u128;
let k_after  = coin_reserve_after  as u128 * pc_reserve_after  as u128;
require!(k_after >= k_before, ErrorCode::InvariantViolation);

Ücret muhasebesi varyantları

Değişmez kontrol, LP ücretinin rezervlerde kaldığını varsayar. Farklı Raydium ürünleri protokol / fon / yaratıcı bileşenlerini farklı şekilde işler:

CPMM konvansiyonu

Ücretler, 1_000_000 paydası üzerinde u64 temel puan benzeri oranlarıdır. İşlem ücreti trade_fee_rate (toplam) olarak bölünür, sonra protocol_fee_rate, fund_fee_rate, creator_fee_rate aracılığıyla alt bölümlere ayrılır. Her swap’ta:
trade_fee     = ceil(Δx · trade_fee_rate / 1_000_000)
protocol_fee  = trade_fee · protocol_fee_rate / 1_000_000
fund_fee      = trade_fee · fund_fee_rate     / 1_000_000
creator_fee   = trade_fee · creator_fee_rate  / 1_000_000
lp_fee        = trade_fee − protocol_fee − fund_fee − creator_fee
Üç LP olmayan pay ayrı sayaçlara (protocol_fees_*, fund_fees_*, creator_fees_*) birikir ve değişmezde kullanılan rezervlerden hariç tutulur. Bu, ücretlerin eğriyi hareket ettirmeden nasıl toplanabileceğidir. products/cpmm/fees sayfasına bakın.

AMM v4 konvansiyonu

Ücretler, 10_000 paydası üzerinde numerator / denominator oranlarıdır. Bölme, havuz oluşturulurken sabitlenir ve AmmInfo.fees’de depolanır:
swap_fee  = ceil(Δx · swap_fee_numerator / swap_fee_denominator)    // örn. 0.25%
pnl_share = swap_fee · pnl_numerator / swap_fee_numerator            // örn. 0.03 / 0.25 = 12%
lp_share  = swap_fee − pnl_share                                     // hacim'in 0.22%'si
pnl_share state_data.need_take_pnl_* içine birikir ve rezervlerden hariç tutulur; lp_share vaultta kalır. products/amm-v4/fees sayfasına bakın. Her iki konvansiyonu da aynı şekilde değişmezi korur — fark kozmetiktir (payda + alt kategori sayısı).

Yuvarlama kuralları

  • Ücret hesaplaması yukarı yuvarlanır. Havuzun ücret konusunda hiçbir zaman yetersiz olmasını sağlar.
  • Çıkış miktarı aşağı yuvarlanır. Değişmezin kesin olarak tutmasını sağlar (k' > k ücret eklenmeden önce bile).
  • Tam-çıkış giriş miktarı yukarı yuvarlanır. Kullanıcının yetersiz ödeme yapmamasını sağlar.
Tüm aritmetik, büyük rezervlerde taşmayı önlemek için ara x · Δx ürünleri için u128 kullanır. Son sonuçlar doyum kontrolü ile u64’e geri dönüştürülür.

Sınır durumlar

Boş havuz

İlk Deposit’ten önce, x = y = 0. Swap talimatları öncesi deposu reddeder.

Sıfır çıkış

Δx yeterince küçükse, aşağı yuvarlanmış Δy 0 ise, talimat ZeroTradingTokens ile geri döner. Bu, ödeme olmadan değer çıkarılmasını önler; ayrıca son derece dengesiz havuzlarda toz swaplarının başarısız olması anlamına gelir.

Toz LP’si

İlk Deposit’in özel bir işlemesi vardır: ilk LP arzını sqrt(x · y) olarak hesaplar ve bir saldırganın vault’a bağış yaptığı ve LP token değerini şişirdiği “ilk mevduat enflasyon saldırısı”nı önlemek için küçük bir “init burn” miktarını (genellikle 100 LP birimi) yakar. Sonraki mevduatlar pro-rata matematiğini kullanır.

Arbitrajla ilişki

CPMM havuzunun fiyatı yalnızca aşağıdakiler aracılığıyla değişir:
  1. Havuzun kendisi aracılığıyla işlemler (kullanıcılar eğride yürüyüşler).
  2. Bağışlar (vault’a swap yapmadan token gönderme).
İşlemler fiyatı eğri ile deterministik olarak hareket ettirdiğinden, fiyatı daha geniş pazardan farklı olan herhangi bir havuz bir arbitraj fırsatı yaratır. Arbitrajcılar havuz fiyatını beklenti içinde pazar fiyatına doğru geri getirir. CPMM havuzlarının “oraküllü olmadan fiyat belirttiği” söylenmesinin nedeni budur: pazar arbitraj aracılığıyla havuzun harici olarak okuma yapması yerine fiyatı bulur. Ters taraf: havuzun kendisi arbitrajcının karşı tarafı olduğundan, herhangi bir arbitraj kârı LP kalıcı olmayan kaybıdır (LP’ler tarafından yakalanan ücret eksi).

Çalışılan örnekler

Örnek 1 — küçük işlem, ihmal edilebilir slipaj

Havuz: x = 1_000_000, y = 2_000_000, k = 2·10^12. Ücret f = 0.0025. İşlem Δx = 1_000:
Δx_after_fee = 1000 · 0.9975  = 997.5
Δy           = 2_000_000 · 997.5 / (1_000_000 + 997.5)
             = 1_995_000_000 / 1_000_997.5
             ≈ 1_993.01
Efektif fiyat: 1000 / 1993.01 ≈ 0.5018. Öncesi spot: 0.5. Etki: ~%0.36.

Örnek 2 — orta ölçekli işlem, görülür slipaj

Aynı havuz, Δx = 100_000 (x’in %10’u):
Δx_after_fee = 100_000 · 0.9975 = 99_750
Δy           = 2_000_000 · 99_750 / (1_000_000 + 99_750)
             = 199_500_000_000 / 1_099_750
             ≈ 181_405
Efektif: 100_000 / 181_405 ≈ 0.5513. Etki: ~%10.3 — kabaca 2 · 10% = 20% nın (kural, ücretsiz sabit-çarpım eğrisinin en kötü durum tavanıdır; işlem ücreti artı formüldeki inversiyon bunu aşağı getirir).

İşaretçiler

Kaynaklar:
  • Uniswap v2 beyaz kitabı — x · y = k’nin kanonik ifadesi.
  • Raydium CPMM program kaynağı.
  • Raydium AMM v4 program kaynağı.