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 →
Invariant
Constant-product market maker (CPMM) memegang dua cadanganx dan y dan menjamin:
k adalah produk dari cadangan sebelum trade. Untuk market tanpa fee, x · y = k tepat. Dengan fee, k tumbuh ketat (bagian LP dari fee disimpan dalam cadangan).
Invariant dirancang secara geometris: menjamin bahwa tidak peduli seberapa kecil satu cadangan, cadangan lainnya tumbuh tanpa batas untuk menyamai — artinya pool tidak pernah bisa habis di satu sisi.
Penetapan harga
Harga spot
Harga marginaly yang dinyatakan dalam x pada saat apa pun adalah garis singgung kurva:
x · y = k memberikan dy/dx = −y/x; abaikan tanda, |dy/dx| = y/x).
Ini adalah harga yang dikutip pool untuk trade yang sangat kecil. Untuk trade berdimensi nyata, harga yang terealisasi lebih buruk karena slippage sepanjang kurva.
Swap dengan input tepat (berikan Δx, terima Δy)
Dengan fee, misalkan f adalah tarif fee (contoh f = 0.0025 untuk 25 bps). Terapkan fee pada input, kemudian gunakan invariant untuk menyelesaikan output:
Δx penuh masuk ke dalam cadangan. Bagian LP dari fee tetap dalam x'; bagian protokol dikecualikan dari kurva melalui langkah akuntansi terpisah (lihat Varian akuntansi fee di bawah).
Swap dengan output tepat (terima Δy, bayar minimal Δx)
Δx dibulatkan ke atas untuk memastikan pool tidak mengalami kerugian biaya.
Slippage dan dampak harga
Dampak harga mengukur berapa banyak harga spot pool bergerak sebagai hasil dari trade:Δx / x kecil, ekspansi tingkat pertama memberikan:
p_before dan effective adalah slippage. Slippage UI on-chain biasanya dinyatakan sebagai (effective − p_before) / p_before; SDK computeAmountOut mengembalikan baik amountOut maupun priceImpact karena alasan ini.
Pemeriksaan invariant dalam kode
Setelah swap, protokol memverifikasi ulang:Varian akuntansi fee
Pemeriksaan invariant mengasumsikan fee LP tetap dalam cadangan. Produk Raydium yang berbeda menangani komponen protokol / dana / kreator secara berbeda:Konvensi CPMM
Fee adalah tarif basis-point-likeu64 pada penyebut 1_000_000. Fee trade dibagi menjadi trade_fee_rate (total) kemudian dibagi melalui protocol_fee_rate, fund_fee_rate, creator_fee_rate. Pada setiap swap:
protocol_fees_*, fund_fees_*, creator_fees_*) yang dikecualikan dari cadangan yang digunakan dalam invariant. Ini adalah cara fee dapat disapu tanpa menggerakkan kurva. Lihat products/cpmm/fees.
Konvensi AMM v4
Fee adalah rasionumerator / denominator pada penyebut 10_000. Pembagian ditetapkan pada saat pembuatan pool dan disimpan pada AmmInfo.fees:
pnl_share terakumulasi dalam state_data.need_take_pnl_* dan dikecualikan dari cadangan; lp_share tetap dalam vault. Lihat products/amm-v4/fees.
Kedua konvensi mempertahankan invariant dengan cara yang sama — perbedaannya adalah kosmetik (penyebut + jumlah sub-kategori).
Aturan pembulatan
- Perhitungan fee dibulatkan ke atas. Memastikan pool tidak pernah mengalami kerugian fee.
- Jumlah output dibulatkan ke bawah. Memastikan invariant berlaku ketat (
k' > kbahkan sebelum fee ditambahkan). - Jumlah input output-tepat dibulatkan ke atas. Memastikan pengguna tidak kurang membayar.
u128 untuk produk x · Δx perantara untuk menghindari overflow pada cadangan besar. Hasil akhir dilemparkan kembali ke u64 dengan pemeriksaan saturasi.
Kasus tepi
Pool kosong
SebelumDeposit pertama, x = y = 0. Instruksi swap menolak pra-deposit.
Output nol
JikaΔx cukup kecil sehingga Δy yang dibulatkan ke bawah adalah 0, instruksi berbalik dengan ZeroTradingTokens. Ini mencegah ekstraksi nilai tanpa pembayaran; juga berarti swap dust pada pool yang sangat tidak seimbang gagal.
LP dust
Deposit pertama memiliki penanganan khusus: menghitung pasokan LP awal sebagai sqrt(x · y) dan membakar jumlah “init burn” kecil (biasanya 100 unit LP) untuk mencegah “serangan inflasi depositor pertama” (di mana penyerang menyumbang ke vault dan menginflasi nilai token LP). Deposit berikutnya menggunakan math pro-rata.
Hubungan dengan arbitrase
Harga pool CPMM hanya berubah melalui:- Trade melalui pool itu sendiri (pengguna berjalan di kurva).
- Donasi (mengirim token ke vault tanpa swap).
Contoh kerja
Contoh 1 — trade kecil, slippage yang dapat diabaikan
Pool:x = 1_000_000, y = 2_000_000, k = 2·10^12. Fee f = 0.0025.
Trade Δx = 1_000:
1000 / 1993.01 ≈ 0.5018. Spot sebelumnya: 0.5. Dampak: ~0.36%.
Contoh 2 — trade ukuran sedang, slippage terlihat
Pool yang sama,Δx = 100_000 (10% dari x):
100_000 / 181_405 ≈ 0.5513. Dampak: ~10.3% — kira-kira setengah dari aturan jempol 2 · 10% = 20% (aturan ini adalah batas ceiling kasus terburuk untuk kurva constant-product tanpa fee; fee trade plus inversi dalam rumus menurunkannya).
Penunjuk
products/cpmm/math— pilihan pembulatan dan penyebut fee spesifik CPMM.products/amm-v4/math— bagaimana cadangan yang terintegrasi OpenBook AMM v4 memperluas model ini.algorithms/slippage-and-price-impact— halaman khusus pada sizing toleransi slippage untuk UI.
- Uniswap v2 whitepaper — pernyataan canonical dari
x · y = k. - Kode sumber program Raydium CPMM.
- Kode sumber program Raydium AMM v4.


