Skip to main content
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 şunları zorunlu kılar:
burada k, işlemden önceki rezervlerin çarpımıdır. Ücretsiz bir pazar için x · y = k tam olarak geçerlidir. Ücretler varsa, k kesin olarak artar (LP’nin ücret payı rezervlerde kalır). Değişmez kasıtlı olarak geometriktir: bir rezerv ne kadar küçük olursa olsun, diğerinin eşleşmesi için sınırsız olarak büyüyeceğini garanti eder — yani havuz hiçbir tarafta sıfıra kadar boşaltılamaz.

Fiyatlandırma

Spot fiyat

Herhangi bir anda x cinsinden y’nin marjinal fiyatı, eğrinin teğetidir:
(türetim: x · y = k’nin örtük türevlemesi 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 verdiği fiyattır. Herhangi bir sonlu işlem için, gerçekleşen fiyat eğri boyunca slipaj nedeniyle daha kötüdür.

Tam giriş swapı (Δx ver, Δy al)

Ücretler varsa, f ücret oranı olsun (örn. f = 0.0025 25 bps için). Ücreti girdiye uygulayın, ardından çıktıyı çözmek için değişmezi kullanın:
İşlem sonrası rezervler:
Tam Δx rezervlere girer. Ücretin LP kısmı x'’de kalır; protokol kısmı ayrı bir muhasebe adımı aracılığıyla eğriden hariç tutulur (aşağıdaki Ücret muhasebesi varyantları bölümüne bakın).

Tam çıkış swapı (Δy al, minimum Δx öde)

Δx, havuzun eksik ücret almamasını sağlamak için yukarı yuvarlanır.

Slipaj ve fiyat etkisi

Fiyat etkisi, işlem sonucunda havuzun spot fiyatının ne kadar hareket ettiğini ölçer:
Küçük Δx / x için, birinci dereceden açılım şunları verir:
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 verdiği fiyatların sipariş defteri piyasalarına kıyasla “ince” görünmesinin nedenidir — sadece mevcut en iyi teklifi karşı almıyorsunuz, kendi marjinal fiyatınızı yükseltiyorsunuz. Etkili fiyat swapçı tarafından ödenen:
p_before ve effective arasındaki fark slipaj’dır. Zincir üstü slipaj UI’ı 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 swaptan sonra, protokoller yeniden doğrularlar:
Herhangi bir ihlal bir program hatası veya aritmetik taşmasıdır. Raydium’un swap talimatları bu kontrolü açık bir son koşul olarak yapar:

Ü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 kuralı

Ücretler, 1_000_000 paydası üzerinde u64 baz puan benzeri oranlarıdır. İşlem ücreti trade_fee_rate (toplam) olarak bölünür ve ardından protocol_fee_rate, fund_fee_rate, creator_fee_rate aracılığıyla alt bölümlere ayrılır. Her swapda:
Üç LP olmayan pay, ayrı sayaçlara (protocol_fees_*, fund_fees_*, creator_fees_*) birikir ve değişmezde kullanılan rezervlerden hariç tutulur. Ücretler eğriyi hareket ettirmeden nasıl temizlenebileceğinin bu yoludur. Bkz. products/cpmm/fees.

AMM v4 kuralı

Ücretler, 10_000 paydası üzerinde numerator / denominator oranlarıdır. Bölünme havuz oluşturma sırasında sabitlenir ve AmmInfo.fees üzerinde depolanır:
pnl_share, state_data.need_take_pnl_* içine birikir ve rezervlerden hariç tutulur; lp_share kasada kalır. Bkz. products/amm-v4/fees. Her iki kural da değişmezi aynı şekilde korur — fark kozmetiktir (payda + alt kategori sayısı).

Yuvarlama kuralları

  • Ücret hesaplaması yukarı yuvarlanır. Havuzun hiçbir zaman ücret konusunda eksik ücret almaması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 eksik ö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.

Kenar durumları

Boş havuz

İlk Deposit’ten önce, x = y = 0. Swap talimatları ön-deposit’i reddeder.

Sıfır çıkış

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

Toz LP

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

Arbitrajla ilişki

Bir CPMM havuzunun fiyatı yalnızca şu yollarla değişir:
  1. Havuzun kendisi aracılığıyla işlemler (kullanıcılar eğriyi yürürler).
  2. Bağışlar (swap olmadan kasaya token gönderme).
İşlemler fiyatı eğri ile deterministik olarak hareket ettirdiğinden, fiyatı geniş pazardan farklı olan herhangi bir havuz bir arbitraj fırsatı yaratır. Arbitrajcılar havuz fiyatını beklentide pazar fiyatına geri getirir. Bu, CPMM havuzlarının “bir oracle olmadan fiyat verdiği” söylenmesinin nedenidir: pazar arbitraj aracılığıyla fiyatı bulur, havuz onu harici olarak okumaz. Ters taraf: havuzun kendisi arbitrajcının karşı tarafıdır, bu nedenle herhangi bir arbitraj kârı LP kalıcı olmayan kaybıdır (LP’ler tarafından yakalanan ücret eksi).

Çalışılmış ö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:
Etkili fiyat: 1000 / 1993.01 ≈ 0.5018. Önceki spot: 0.5. Spot’a karşı slipaj: ~%0.35. Fiyat etkisi — yukarıdaki tanıma göre havuzun spot fiyatının hareketi — ~%0.20’dir.

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

Aynı havuz, Δx = 100_000 (x’in %10’u):
Etkili: 100_000 / 181_405 ≈ 0.5513. Spot’a karşı slipaj: ~%10.3. Fiyat etkisi: ~%17.3 — 2 · 10% = 20% temel kuralına yakın, işlem ücreti ve eğri ters çevirme biraz aşağı çeker. İki sayı sık sık karıştırılır: slipaj, swapçının spot’a göre ödediği şeydir, fiyat etkisi havuzun kendi teklifinin ne kadar hareket ettiğidir.

İşaretçiler

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