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 →

İki farklı kavram

Fiyat etkisi ve kaymma sıklıkla arayüzlerde karıştırılsa da farklı şeyleri ifade ederler.
  • Fiyat etkisi, belirli bir pool durumuna karşı yapılan işlemin deterministik bir özelliğidir. (Δin, reserves) verildiğinde, fiyat etkisi işlem gönderilmeden önce tam olarak hesaplanabilir.
  • Kaymma, alıntı anındaki beklediğiniz fiyat ile yürütme anında gerçekten elde ettiğiniz fiyat arasındaki gerçekleşen farktır. Bu, gecikme, eş zamanlı işlemler ve blok dahil etme sırasının bir fonksiyonudur — pool matematiğinin değil.
Aksi halde boş bir havuza karşı %1’lik bir alıntı, bir sonraki blokta giriş yapılırsa %0 kaymma’ya sahiptir; %1 fiyat etkisiydi. Başka bir işlem havuzu ilk vurursa, aynı alıntı %0,2 daha kötü giriş yapar — ek %0,2’si kaymma’dır.

Resmi tanımlar

Fiyat etkisi

p_before = pool.spot_price()
p_after  = pool.spot_price_if_trade(Δin) uygulandıktan sonra
impact   = (p_before − p_after) / p_before       // işaretli olabilir
CPMM için: küçük işlemler için impact ≈ 2 · Δin / reserve_in. CLMM için: işlemin kaç tick geçtiğine bağlıdır; genellikle mevcut tick aralığında düz, her tick geçişinde sıçrar.

Gerçekleşen kaymma

quoted_out = alıntı anında hesaplanan çıkış tutarı
actual_out = zincir üstünde gözlemlenen çıkış tutarı
slippage   = (quoted_out − actual_out) / quoted_out
Kaymma her zaman negatif olmayan (veya sıfır), alıntının dürüst olduğu varsayılarak. Negatif bir değer daha fazla çıktı aldığınız anlamına gelir — alıntı ve yürütme arasında havuz durumu sizin lehinize değişirse mümkün.

minAmountOut ve maxAmountIn boyutlandırması

Her Raydium swap’ı kaymma-koruma sınırı alır:
  • SwapBaseInput(amount_in, min_amount_out) — kesin giriş, çıkışın alt sınırı.
  • SwapBaseOutput(max_amount_in, amount_out) — kesin çıkış, girişin üst sınırı.
SDK bunları şöyle hesaplar:
const computed = raydium.<pool_type>.computeAmountOut({
  poolInfo,
  amountIn,
  mintIn,
  mintOut,
  slippage: 0.005,     // %0.5 tolerans
});

// computed.amountOut         — "beklenen" alıntı
// computed.minAmountOut      — amountOut × (1 − slippage), zincir üstü sınır olarak kullanılan
// computed.priceImpact       — deterministik, sadece pool-durum
// computed.fee               — alınan toplam ücret (tüm bileşenlerin toplamı)
Kaymma toleransı, fiyat etkisinin etrafında bir tampondur, fiyat etkisinin kendisi değil. %0.5 toleransı “alıntımdan en fazla %0.5 daha kötü olanı 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-etkili işlem ile %0.5 tolerans için, minAmountOut işlem öncesi spot’ın %2.5 aşağısıdır — temelde etkinin ve toleransın toplamı.

Önerilen kaymma toleransları

Tek bir doğru sayı yoktur; doğru sınır şunlara bağlıdır:
  1. Çift istikrarı. Stablecoin-stablecoin havuzları %0.1’i güvenle kullanabilir. Değişken meme-çifti havuzları güvenilir bir şekilde iniş için genellikle %3–5’e ihtiyaç duyar.
  2. İşlem boyutu. Daha büyük işlemler daha büyük fiyat etkilerine sahiptir, bu nedenle tolerans dönüşü önlemek için bunlarla ölçeklenmelidir. SDK’nın otomatik-kaymma varsayılanları bu nedenle max(0.5%, 2 × price_impact) civarında.
  3. Blok dahil etme gecikmesi. Mempool’da birden fazla blok için oturan işlemler daha fazla eş zamanlı işleme maruz kalır. Jito paketleri ve öncelik ücretleri bunu azaltır.
Deneyim kuralları (Raydium UI varsayılanları):
Çift türüVarsayılan tolerans
İstikrarlı-istikrarlı (USDC-USDT, USDC-USDS)%0.1
İstikrarlı-ana (USDC-SOL, USDC-BTC)%0.5
Ana-ana (SOL-BTC, SOL-ETH)%1
Değişken (meme token’ları, likit olmayan uzun kuyruk)%3–5

AMM türleri arasındaki farklar

CPMM

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

AMM v4

CPMM ile aynı eğri matematik, ancak “etkili rezervler” havuzun OpenBook’ta yayınlanan limit emirlerini içerir. Uygulamada bu şu anlama gelir:
  • Ham vault bakiyeleri üzerinden alıntı almak rezervleri hafife alır ve dolayısıyla etkiyi olduğundan fazla hesaplar.
  • SDK, AmmInfo’yu getirir ve doğru sayıyı almak için vault + on_book.free + on_book.locked’ı toplar.
  • Eski OpenBook durumu (crank engeli) alıntılanmış etkinin zincir üstü gerçeklikten sapmasına neden olabilir. Toplayıcılar rutinli olarak büyük AMM-v4 işleminden önce (izinsiz MonitorStep) önceden crank uygularlar.

CLMM

Fiyat etkisi parçalıdır. Mevcut tick aralığında etkisi yaklaşık Δin / L’de doğrusaldır. Bir tick sınırını geçmek L’yi ayrık olarak değiştirebilir ve marjinal fiyatta aniden sıçramaya neden olabilir. Seyrek doldurulmuş birkaç tick geçen bir işlem 2 · Δin / reserve deneyim kuralından çok daha yüksek etkiye sahip olabilir. SDK’nın CLMM alıntısı swap adımını deterministik olarak yineler ve tam beklenen amountOut döndürür, dolayısıyla 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 ile ilgilenen bir kullanıcı için swap’ın etkili kaymmasından çok daha büyük olabilir.

LaunchLab eğrisi

CPMM’ye benzer ancak asimetrik eğri (ikinci dereceden veya sanal rezervler). Eğri mezuniyete doğru dikleştikçe geç alıcılar için etkisi hızlı artar. Ön alıcı arayüzleri, bir satın almanın tek işlemde eğriyi quote_reserve_target’ın ~%5’inden fazla itecekse uyarmalıdır.

MEV hususları

Solana’da, swap’lara karşı MEV ekstraksiyonu çoğunlukla sandwich saldırıları şeklini alır: bir bot, sizinkinin sonrasında ve önünde (aynı slot’ta) işlem yapan bir geri çalıştırma işlemi ve bir ön çalıştırma işlemi yerleştirir. İşleminiz sandwich olmadan olacağından daha kötü bir fiyatta doldurulur; geri çalıştırma farkı yakalar. Hafifletmeler:
  1. Sıkı minAmountOut. Agresif kaymma sınırları, kurban işleminin ağır kum viçlenmişse geri çekilmesine neden olarak fonları korur (ama gaz boşa harcar). Solana’da bu standart uygulama — reddetme ucuzdur.
  2. Jito paketleri. Jito üzerinden paketlenmiş ipucu ile göndermek ara sunucuları işleminizi yeniden sıralamaktan hariç tutar. Paketler atomik blok olarak iner.
  3. Öncelik ücretleri. Yüksek bir öncelik ücreti, işleminizin bir sandwicher’ın tepki verebilmesinden önce mevcut liderin bloğunda iniş şansını arttırır. Paketlerden daha az güçlü, daha standart.
  4. Özel RPC. Özel bir RPC üzerinden (veya bir doğrulayıcının doğrudan uç noktası üzerinden) göndermek, bir mempool sandwicher’ın işleminizi gözlemleyebileceği pencereyi azaltır.
Raydium SDK paketlemez; integratörler tipik olarak üzerine Jito katmanı ekler. Desenler için integration-guides/routing-and-mev bakın.

Çok atlamalı rotalar için kaymma

Bir swap birden fazla havuz aracılığıyla yönlendirildiğinde (örn. USDC → SOL → RAY), kaymma toleransı sadece uçtan uca değil, her atlama başına uygulanmalıdır:
// Kötü: %0.5 sadece sonda uygulanır, bu nedenle herhangi bir ara atlama ikinci atlamada başarısız olur.
const finalMin = finalAmount * (1 - 0.005);

// Daha iyi: her atlama kendi sınırını uygular.
const hop1Min  = hop1Amount * (1 - 0.005);
const hop2Min  = hop2Amount * (1 - 0.005);
// Uçtan uca bu daha sıkı (bileşik), ama atomiktir — herhangi bir atlama bozulursa, işlem erken geri çekilir.
SDK’nın yönlendiricisi raydium.trade.swap’ı çağırdığınızda otomatik olarak atlama başına sınırlar uygular. Özel yönlendiriciler için deseni kopyalayın.

Kullanıcılara raporlama

İyi bir swap arayüzü için deneyim kuralları:
  • Beklenen fiyat etkisi ve kaymma toleransını ayrı olarak gösterin.
  • Fiyat etkisi ~%2’yi aştığında vurgulayın — “yüksek etkili” uyarı.
  • Fiyat etkisi toleransı aştığında vurgulayın — işlem hemen hemen kesinlikle geri çekilecek.
  • Değişken çiftler için, sınırı gevşeten ve daha güçlü bir uyarı gösteren “yüksek kaymma modu” sunun.

İşaretçiler

Kaynaklar:
  • Raydium SDK v2 kaymma / etkili uygulama.
  • Solana’da Flashbots / Jito MEV.