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 →

İki farklı kavram

Fiyat etkisi ve slippage kullanıcı arayüzlerinde sıkça karıştırılsa da farklı şeyleri ifade eder.
  • Fiyat etkisi, belirli bir pool durumuna karşı yapılan bir işlemin deterministik bir özelliğidir. (Δin, reserves) verildiğinde, fiyat etkisi işlem gönderilmeden önce tamamen hesaplanabilir.
  • Slippage, fiyat teklifi sırasında beklediğiniz fiyat ile yürütme sırasında gerçekten aldığınız fiyat arasındaki gerçekleşen farktır. Gecikme, eşzamanlı işlemler ve blok dahil etme sırasının bir fonksiyonudur — pool matematiğinin değil.
Aksi takdirde boş bir pool’a karşı %1’lik bir teklif, sonraki blokta gerçekleşirse %0 slippage’a sahiptir; %1 fiyat etkisiydi. Başka bir işlem pool’u ilk vurursa, aynı teklif %0,2 daha kötü gerçekleşir — ek %0,2 slippage’dır.

Resmi tanımlar

Fiyat etkisi

CPMM için: küçük işlemler için impact ≈ 2 · Δin / reserve_in. CLMM için: işlemin kaç tick’i geçtiğine bağlıdır; genellikle mevcut tick aralığında düz, her tick geçişinde sıçrar.

Gerçekleşen slippage

Slippage her zaman negatif olmayan (veya sıfır), teklif dürüst olduğu varsayılarak. Negatif bir değer, teklif edilenden daha fazla aldığınız anlamına gelir — teklif ile yürütme arasında pool durumu sizin lehinizdeki değişirse mümkündür.

minAmountOut ve maxAmountIn belirleme

Her Raydium swap’ı bir slippage-koruma sınırı alır:
  • SwapBaseInput(amount_in, min_amount_out) — tam giriş, çıkışı alt sınırla.
  • SwapBaseOutput(max_amount_in, amount_out) — tam çıkış, girişi üst sınırla.
SDK bunu ürün başına hesaplar — üçü aynı imzayı paylaşmaz:
Üçünde de minAmountOut amountOut × (1 − slippage) ve zincir üzerinde sınır olarak gider; priceImpact pool durumundan tek başına deterministiktir; fee toplam ücrettir. Slippage toleransı, fiyat etkisinin kendisi değil, fiyat etkisinin etrafında bir tampondır. %0,5 tolerans “teklifimden en fazla %0,5 daha kötü kabul et” anlamına gelir — fiyat etkisinin %0,01 (küçük işlem) veya %2 (büyük işlem) olmasından bağımsız. %2 fiyat etkisine sahip bir işlem için %0,5 tolerans ile, minAmountOut işlem öncesi spot’tan %2,5 aşağıdadır — esasen etki ve toleransın toplamı.

Önerilen slippage toleransları

Tek bir doğru sayı yoktur; doğru sınır şunlara bağlıdır:
  1. Çift istikrarı. Stablecoin-stablecoin pool’ları güvenle %0,1 kullanabilir. Değişken meme-çift pool’ları güvenilir bir şekilde gerçekleşmek için genellikle %3–5 gerektirir.
  2. İşlem boyutu. Daha büyük işlemler daha büyük fiyat etkilerine sahiptir, bu nedenle tolerans geri dönüşü önlemek için onlarla ölçeklenmelidir. SDK’nın otomatik slippage varsayılanları bu nedenle max(0.5%, 2 × price_impact) civarındadır.
  3. Blok dahil etme gecikmesi. Mempool’da birden fazla blok için bekleyen işlemler daha fazla eşzamanlı işleme maruz kalır. Jito bundle’ları ve öncelik ücretleri bunu azaltır.
Temel kurallar (Raydium UI varsayılanları):

AMM türleri arasındaki farklar

CPMM

Fiyat etkisi düzgün ve süreklidir (kapalı form 2 · Δin / reserve_in). Slippage toleransı işlem boyutuyla doğrusal olarak ölçeklenir.

AMM v4

CPMM ile aynı eğri matematiği. OpenBook kaldırılmasından bu yana, “etkili rezervler” sadece iki vault bakiyesidir:
  • Ham vault bakiyeleri üzerinden fiyat teklifi alın. Eklenecek bir zincir üstü bileşen yoktur — Initialize2 her yeni pool’da AmmInfo.open_orders = Pubkey::default() yazar ve hiçbir talimat bir OpenOrders hesabını okumaz.
  • Birikmiş protokol PnL’yi (state_data.need_take_pnl_coin / need_take_pnl_pc) vault bakiyelerinden çıkararak değişmezin gerçekten kullandığı rezervleri alın.
  • Önceden çalıştırılacak bir crank yoktur: MonitorStep şimdi unimplemented! ile panikler ve gönderilmemelidir.

CLMM

Fiyat etkisi parçalıdır. Mevcut tick aralığında, etki yaklaşık olarak Δin / L’de doğrusaldır. Bir tick sınırını geçmek L’yi ayrık olarak değiştirebilir, marjinal fiyatta ani bir sıçrama neden olur. Birkaç seyrek doldurulmuş tick’i geçen bir işlem, 2 · Δin / reserve temel kuralının önerdiğinden çok daha yüksek etkiye sahip olabilir. SDK’nın CLMM teklifi swap adımını deterministik olarak yineler ve tam beklenen amountOut döndürür, bu nedenle minAmountOut = amountOut · (1 − slippage) doğrudur. Ancak priceImpact dönüş değeri “işlem öncesi spot ile işlem sonrası spot arasındaki fark” olarak yorumlanmalıdır; CLMM’de bu, sadece amount_out önemli olan bir kullanıcı için swap’ın etkili slippage’ından çok daha büyük olabilir.

LaunchLab eğrisi

CPMM’ye benzer ancak asimetrik bir eğri (ikinci dereceden veya sanal rezervler) ile. Etki, eğri mezuniyet doğrultusunda dikleştikçe geç alıcılar için daha hızlı büyür. Ön alıcı arayüzleri, bir satın almanın eğriyi bir işlemde quote_reserve_target’ın ~%5’inden fazla itme beklentisi olduğunda uyarmalıdır.

MEV hususları

Solana’da, swap’lara karşı MEV çıkarımı çoğunlukla sandwich saldırıları şeklini alır: bir bot, sizinkinden sonra işlem yapan bir arka çalıştırma işlemi ve aynı slot’ta önce işlem yapan bir ön çalıştırma yerleştirir. İşleminiz sandwich olmadan olacağından daha kötü bir fiyattan doldurulur; arka çalıştırma farkı yakalar. Azaltmalar:
  1. Sıkı minAmountOut. Agresif slippage sınırları, ağır bir şekilde sandwiched olursa kurban işleminin geri dönmesine neden olur, fonları korur (ancak gaz boşa harcar). Solana’da bu standart uygulamadır — reddetme ucuzdur.
  2. Jito bundle’ları. Jito aracılığıyla bundle’lanmış bir ipucu ile gönderme, aracıları işleminizi yeniden sıralamaktan hariç tutar. Bundle’lar atomik bloklar olarak iner.
  3. Öncelik ücretleri. Yüksek bir öncelik ücreti, işleminizin bir sandwicher’ın tepki verebilmesinden önce mevcut lider’in bloğunda yer alma şansını artırır. Bundle’lardan daha az sağlam, daha standarttır.
  4. Özel RPC. Özel bir RPC aracılığıyla gönderme (veya bir doğrulayıcının doğrudan uç noktası aracılığıyla) mempool sandwicher’ının işleminizi gözlemleyebileceği pencereyi azaltır.
Raydium’un SDK’sı bundle yapmaz; entegratörler tipik olarak Jito’yu üzerine katmanlandırır. Desenler için integration-guides/routing-and-mev bölümüne bakın.

Çok atlamalı rotalar için slippage

Bir swap birden fazla pool’dan geçtiğinde (örn. USDC → SOL → RAY), slippage toleransı sadece uçtan uca değil, her atlama başına uygulanmalıdır:
SDK’nın yönlendiricisi raydium.tradeV2.swap çağırdığınızda otomatik olarak atlama başına sınırlar uygular. (Cephe tradeV2’dir — raydium.trade mevcut değildir.) Özel yönlendiriciler için deseni çoğaltın.

Kullanıcılara raporlama

İyi bir swap arayüzü için temel kurallar:
  • Beklenen fiyat etkisini ve slippage toleransını ayrı ayrı görüntüleyin.
  • Fiyat etkisi ~%2’yi aştığında vurgulayın — “yüksek etki” uyarısı.
  • Fiyat etkisi toleransı aştığında vurgulayın — işlem neredeyse kesinlikle geri dönecektir.
  • Değişken çiftler için, sınırı gevşeten ve daha güçlü bir uyarı gösteren “yüksek slippage modu” sunun.

İşaretçiler

Kaynaklar:
  • Raydium SDK v2 slippage / etki uygulaması.
  • Flashbots / Jito on Solana MEV.