Langsung ke konten utama

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.

Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →

Dua konsep yang berbeda

Dampak harga dan slippage sering dikacaukan dalam UI tetapi mengacu pada hal yang berbeda.
  • Dampak harga adalah properti deterministik dari perdagangan terhadap kondisi pool tertentu. Mengingat (Δin, reserves), dampak harga dapat sepenuhnya dihitung sebelum perdagangan diajukan.
  • Slippage adalah perbedaan yang terealisasi antara harga yang Anda harapkan saat waktu kutipan dan harga yang Anda dapatkan saat eksekusi. Ini adalah fungsi latensi, transaksi bersamaan, dan urutan inklusi blok — bukan dari matematika pool.
Kutipan 1% terhadap pool yang sehadar kosong memiliki slippage 0% jika mendarat di blok berikutnya; 1% itu adalah dampak harga. Kutipan yang sama mendarat 0,2% lebih buruk jika perdagangan lain mengenai pool terlebih dahulu — 0,2% tambahan itu adalah slippage.

Definisi formal

Dampak harga

p_before = pool.spot_price()
p_after  = pool.spot_price_if_trade(Δin) diterapkan
impact   = (p_before − p_after) / p_before       // dapat bertanda
Untuk CPMM: impact ≈ 2 · Δin / reserve_in untuk perdagangan kecil. Untuk CLMM: tergantung pada berapa banyak tick yang dilintasi perdagangan; sering flat dalam rentang tick saat ini, melompat di setiap persilangan tick.

Slippage yang terealisasi

quoted_out = amount_out dihitung pada waktu kutipan
actual_out = amount_out diamati di on-chain
slippage   = (quoted_out − actual_out) / quoted_out
Slippage selalu non-negatif (atau nol), dengan asumsi kutipan jujur. Nilai negatif akan berarti Anda mendapat lebih dari yang dikutip — mungkin jika kondisi pool bergerak menguntungkan Anda antara kutipan dan eksekusi.

Mengukur minAmountOut dan maxAmountIn

Setiap swap Raydium mengambil batas perlindungan slippage:
  • SwapBaseInput(amount_in, min_amount_out) — input yang tepat, batas bawah output.
  • SwapBaseOutput(max_amount_in, amount_out) — output yang tepat, batas atas input.
SDK menghitung ini sebagai:
const computed = raydium.<pool_type>.computeAmountOut({
  poolInfo,
  amountIn,
  mintIn,
  mintOut,
  slippage: 0.005,     // 0.5% toleransi
});

// computed.amountOut         — kutipan "yang diharapkan"
// computed.minAmountOut      — amountOut × (1 − slippage), digunakan sebagai batas on-chain
// computed.priceImpact       — deterministik, hanya kondisi pool
// computed.fee               — total biaya yang dikenakan (semua komponen dijumlahkan)
Toleransi slippage adalah buffer di sekitar dampak harga, bukan dampak harga itu sendiri. Toleransi 0,5% berarti “terima paling buruk 0,5% dari kutipan saya” — terlepas dari apakah dampak harga itu 0,01% (perdagangan kecil) atau 2% (perdagangan besar). Untuk perdagangan dengan dampak harga 2% dengan toleransi 0,5%, minAmountOut adalah 2,5% di bawah spot pra-perdagangan — pada dasarnya jumlah dampak dan toleransi.

Toleransi slippage yang direkomendasikan

Tidak ada angka yang benar tunggal; batas yang tepat tergantung pada:
  1. Stabilitas pasangan. Pool stablecoin-stablecoin dapat aman menggunakan 0,1%. Pool pasangan meme volatil sering memerlukan 3–5% hanya untuk mendarat dengan andal.
  2. Ukuran perdagangan. Perdagangan yang lebih besar memiliki dampak harga yang lebih besar, sehingga toleransi perlu diskalakan dengannya untuk menghindari pembalikan. Default auto-slippage SDK berkisar pada max(0.5%, 2 × price_impact) karena alasan ini.
  3. Latensi inklusi blok. Transaksi yang tinggal di mempool selama beberapa blok terbuka untuk lebih banyak perdagangan bersamaan. Bundle Jito dan biaya prioritas mengurangi ini.
Aturan praktis (default UI Raydium):
Jenis pasanganToleransi default
Stable-stable (USDC-USDT, USDC-USDS)0,1%
Stable-major (USDC-SOL, USDC-BTC)0,5%
Major-major (SOL-BTC, SOL-ETH)1%
Volatil (token meme, long-tail tidak likuid)3–5%

Perbedaan antar jenis AMM

CPMM

Dampak harga halus dan berkelanjutan (bentuk tertutup 2 · Δin / reserve_in). Toleransi slippage diskalakan secara linear dengan ukuran perdagangan.

AMM v4

Matematika kurva yang sama dengan CPMM, tetapi “reserve efektif” mencakup pesanan limit yang diposting OpenBook pool. Dalam praktiknya ini berarti:
  • Kutipan dari saldo vault mentah meremehkan reserve dan oleh karena itu melebih-lebihkan dampak.
  • SDK mengambil AmmInfo dan menjumlahkan vault + on_book.free + on_book.locked untuk mendapatkan angka yang tepat.
  • Kondisi OpenBook usang (crank terblokir) dapat menyebabkan dampak yang dikutip menyimpang dari kenyataan on-chain. Agregator secara rutin pre-crank (permissionless MonitorStep) sebelum perdagangan AMM-v4 besar.

CLMM

Dampak harga adalah piecewise. Dalam rentang tick saat ini, dampak kira-kira linear dalam Δin / L. Melewati batas tick dapat mengubah L secara diskrit, menyebabkan lompatan mendadak dalam harga marjinal. Perdagangan yang melewati beberapa tick yang jarang dihuni dapat memiliki dampak jauh lebih besar daripada yang disarankan aturan 2 · Δin / reserve. Kutipan CLMM SDK mengulangi langkah swap secara deterministik untuk mengembalikan amountOut yang diharapkan dengan tepat, jadi minAmountOut = amountOut · (1 − slippage) adalah benar. Tetapi nilai pengembalian priceImpact harus ditafsirkan sebagai “spread antara spot pra-perdagangan dan spot pasca-perdagangan”, yang pada CLMM dapat jauh lebih besar daripada slippage efektif swap untuk pengguna yang hanya peduli dengan amount_out.

Kurva LaunchLab

Mirip dengan CPMM tetapi dengan kurva asimetris (kuadratik atau virtual-reserves). Dampak tumbuh lebih cepat untuk pembeli akhir saat kurva menanjak menuju kelulusan. UI pre-buyer harus memperingatkan ketika pembelian diharapkan mendorong kurva lebih dari ~5% dari quote_reserve_target dalam satu transaksi.

Pertimbangan MEV

Di Solana, ekstraksi MEV terhadap swap sebagian besar berbentuk sandwich attacks: bot menempatkan transaksi back-run yang berdagang setelah milik Anda, ditambah front-run yang berdagang sebelumnya, keduanya pada slot yang sama. Perdagangan Anda terisi dengan harga lebih buruk daripada yang terjadi tanpa sandwich; back-run menangkap perbedaannya. Mitigasi:
  1. minAmountOut ketat. Batas slippage agresif menyebabkan transaksi korban untuk pembalikan jika disandwich berat, melindungi dana (tetapi membuang gas). Di Solana ini adalah praktik standar — penolakan murah.
  2. Bundle Jito. Mengirimkan melalui Jito dengan tip bundel menutup perantara dari pengurutan ulang tx Anda. Bundle mendarat sebagai blok atomik.
  3. Biaya prioritas. Biaya prioritas tinggi meningkatkan kemungkinan perdagangan Anda mendarat di blok pemimpin saat ini sebelum sandwicher dapat bereaksi. Kurang robust daripada bundle, lebih standar.
  4. RPC pribadi. Mengirimkan melalui RPC pribadi (atau melalui endpoint langsung validator) mengurangi jendela selama mana mempool sandwicher dapat mengamati transaksi Anda.
SDK Raydium tidak membundel; integrator biasanya melapisi Jito di atas. Lihat integration-guides/routing-and-mev untuk pola.

Slippage untuk rute multi-hop

Ketika swap merutekan melalui beberapa pool (mis. USDC → SOL → RAY), toleransi slippage harus diterapkan per-hop, bukan hanya end-to-end:
// Buruk: 0.5% diterapkan di akhir saja, jadi setiap hop menengah yang meluncur gagal hop berikutnya.
const finalMin = finalAmount * (1 - 0.005);

// Lebih baik: setiap hop memberlakukan batas sendiri.
const hop1Min  = hop1Amount * (1 - 0.005);
const hop2Min  = hop2Amount * (1 - 0.005);
// End-to-end ini lebih ketat (majemuk), tetapi atomik — jika salah satu hop menurun, tx kembali lebih awal.
Router SDK menerapkan batas per-hop secara otomatis saat Anda memanggil raydium.trade.swap. Untuk router khusus, replikasi polanya.

Pelaporan kepada pengguna

Aturan praktis untuk UI swap yang baik:
  • Tampilkan keduanya dampak harga yang diharapkan dan toleransi slippage secara terpisah.
  • Soroti ketika dampak harga melebihi ~2% — peringatan “dampak tinggi”.
  • Soroti ketika dampak harga melebihi toleransi — transaksi hampir pasti akan kembali.
  • Untuk pasangan volatil, tawarkan “mode slippage tinggi” yang melonggarkan batas dan menampilkan peringatan yang lebih kuat.

Penunjuk

Sumber:
  • Implementasi slippage / dampak SDK Raydium v2.
  • Flashbots / Jito pada Solana MEV.