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 biaya independen, empat tujuan
CPMM mengenakan dua biaya dengan tarif terpisah pada setiap swap:- Biaya perdagangan — dikenakan pada
AmmConfig.trade_fee_ratedan dibagi antara tiga tujuan:- Bagian LP — tetap di dalam vault dan menambah
k. Diklaim secara implisit dengan membakar token LP. - Bagian protokol — terakumulasi ke
PoolState.protocol_fees_token*; dikumpulkan olehprotocol_ownermelaluiCollectProtocolFee. - Bagian dana — terakumulasi ke
PoolState.fund_fees_token*; dikumpulkan olehfund_ownermelaluiCollectFundFee.
- Bagian LP — tetap di dalam vault dan menambah
- Biaya kreator (opsional, per-pool) — dikenakan pada
AmmConfig.creator_fee_ratesecara independen dari biaya perdagangan, terakumulasi kePoolState.creator_fees_token*, dikumpulkan olehpool_state.pool_creatormelaluiCollectCreatorFee. Aktif hanya ketika pool dibuat denganenable_creator_fee = true.
trade_fee saja, tidak pernah dari creator_fee. Pool dengan creator_fee_rate = 1000 (0,10%) dan trade_fee_rate = 2500 (0,25%) mengenakan biaya gabungan 0,35% dari input pada swap dengan creator-fee-on-input, yang mana kreator mempertahankan 0,10% dan bucket biaya perdagangan mendapatkan 0,25%.
Tarif biaya perdagangan (trade_fee_rate, protocol_fee_rate, fund_fee_rate) dan creator_fee_rate semuanya berada pada AmmConfig. Flag enable_creator_fee per-pool dan mode creator_fee_on (sisi perdagangan tempat biaya kreator diambil) berada pada PoolState. Lihat products/cpmm/accounts.
Tarif dan satuan
Semua tarif adalahu64 yang dinyatakan dalam satuan 1 / FEE_RATE_DENOMINATOR di mana FEE_RATE_DENOMINATOR = 1_000_000.
trade_fee_rateadalah fraksi dari volume swap.2500⇒ 0,25% dari sisi yang relevan (input atau output, tergantungcreator_fee_on— lihat “Sisi perdagangan tempat biaya diambil” di bawah).creator_fee_rateadalah fraksi dari volume swap, diambil secara terpisah dari biaya perdagangan.1000⇒ 0,10% dari sisi yang relevan.protocol_fee_ratedanfund_fee_rateadalah fraksi dari biaya perdagangan, bukan dari volume.120_000⇒ 12% dari biaya perdagangan.
AmmConfig[index=0] (pool 0,25% “standar”) di mainnet, sebagai referensi:
| Field | Nilai | Persentase Efektif |
|---|---|---|
trade_fee_rate | 2500 | 0,25% dari volume (bucket biaya perdagangan) |
protocol_fee_rate | 120000 | 12% dari biaya perdagangan ≈ 0,030% dari volume |
fund_fee_rate | 40000 | 4% dari biaya perdagangan ≈ 0,010% dari volume |
creator_fee_rate | 0 (default) | 0% (bucket terpisah) |
| → bagian LP efektif | 0,210% dari volume |
AmmConfig[0] dengan enable_creator_fee = false: biaya perdagangan total $2,50, di mana $2,10 tetap bersama LP, $0,30 ke protokol, $0,10 ke dana. Bucket kreator adalah 0 karena biaya kreator dinonaktifkan.
Jika pool yang sama memiliki enable_creator_fee = true dan creator_fee_rate = 1000 (0,10%), pengguna membayar tambahan $1,00 ke bucket kreator — diambil dari sisi perdagangan yang sama yang dikonfigurasi oleh creator_fee_on — untuk total biaya $3,50. Bucket biaya perdagangan dan pembagian protokol/dana-nya tidak berubah.
Konfirmasi nilai mainnet saat ini terhadap GET https://api-v3.raydium.io/main/cpmm-config — tarif dapat diubah admin dan harus dibaca segar daripada dikodekan.
Pembagian, dalam kode
- Biaya total pada input dibulatkan ke atas sehingga pool tidak pernah meremehkan biaya.
- Sub-pembagian dari
trade_fee(protokol, dana) dibulatkan ke bawah sehingga jumlahnya tidak pernah melebihitrade_fee; sisanya adalah bagian LP. lp_share = trade_fee − protocol_fee − fund_fee(creator_fee tidak dikurangkan di sini karena itu adalah bucket-nya sendiri).- Biaya kreator diambil dari input atau output tergantung
PoolState.creator_fee_on(lihat bagian selanjutnya). Tarif tetap sama dalam kedua kasus.
Sisi perdagangan tempat biaya diambil
CPMM memiliki pengaturan per-poolcreator_fee_on (BothToken / OnlyToken0 / OnlyToken1) yang menentukan apakah biaya kreator diambil dari sisi input atau sisi output dari swap tertentu. Helper runtime is_creator_fee_on_input(direction) menyederhanakan hal itu menjadi boolean per swap:
creator_fee_on | Swap 0 → 1 | Swap 1 → 0 |
|---|---|---|
BothToken (0) | sisi input | sisi input |
OnlyToken0 (1) | sisi input | sisi output |
OnlyToken1 (2) | sisi output | sisi input |
amount_in sebelum kurva berjalan. Matemat kutipan: ambil trade_rate + creator_rate gabungan dari input.
Ketika biaya kreator berada di sisi output, hanya biaya perdagangan yang dikurangkan dari amount_in; kurva menghasilkan output tanpa biaya, kemudian biaya kreator dikurangkan dari output itu. Matemat kutipan: ambil trade_rate dari input; ambil creator_rate dari output.
Biaya perdagangan itu sendiri selalu diambil dari sisi input (pola standar Uniswap-V2). Hanya biaya kreator yang dapat mendarat di output.
Cara biaya “terakumulasi” berinteraksi dengan kurva
Subtilitas penting: biaya protokol, dana, dan kreator tetap secara fisik di vault hingga instruksiCollect* masing-masing dipanggil. Tetapi biaya tersebut dikecualikan dari pandangan kurva terhadap saldo vault.
Gambaran konkret setelah satu swap:
curve_x (dan curve_y analog) ketika memberlakukan k' ≥ k. Inilah cara biaya non-LP mencapai tujuan mereka tanpa menambah bagian LP dari pool.
Konsekuensi yang harus Anda desain:
- Mengutip dari saldo mentah adalah salah. Jika Anda membangun kutipan dari
getTokenAccountBalance, Anda akan secara konsisten melebih-lebihkan harga yang akan dihormati pool. Selalu kurangkan biaya terakumulasi, atau simulasikan melaluiSwapBaseInput/ API. CollectProtocolFeetidak menggerakkan harga. Ini memindahkan token keluar dari vault dan menolkan counterprotocol_fees_token*, jadicurve_xdancurve_ytidak berubah.- Biaya LP tidak terakumulasi ke counter. Biaya tersebut implisit dalam saldo vault. Hak LP untuk biaya LP terakumulasi dijalankan dengan membakar token LP (yaitu, melalui
Withdraw) — tidak adaCollectLpFee.
Interaksi dengan biaya transfer Token-2022
Biaya transfer Token-2022 diterapkan oleh mint, bukan oleh CPMM. Mereka bertindak pada setiap transfer token — swap, setoran, penarikan, dan penyapuanCollect*. Matemat biaya perdagangan CPMM dihitung terhadap jumlah yang benar-benar mendarat di vault, yaitu, bersih dari biaya transfer mint input (jika ada).
Jadi dalam kasus terburuk pengguna membayar tiga pajak terpisah pada swap input-exact:
- Biaya transfer mint input pada
amount_in(ke otoritas biaya mint). - Biaya
trade_feepool pada sisa (dibagi per di atas). - Biaya transfer mint output pada
amount_out(ke otoritas biaya mint).
minimum_amount_out dinyatakan dalam apa yang benar-benar diterima pengguna. Jika Anda menulis kutipan Anda sendiri, cerminkan perilaku itu, atau pemeriksaan slippage Anda akan secara sistematis terlalu murah hati.
Lihat algorithms/token-2022-transfer-fees untuk derivasi terperinci.
Biaya kreator
Biaya kreator bersifat opsional dan per-pool. Tarif berada padaAmmConfig.creator_fee_rate; flag aktifkan dan sisi (creator_fee_on) berada pada PoolState:
- Diaktifkan saat pembuatan pool.
Initializemenetapkanenable_creator_fee = falsesecara default; pool yang dibuat melaluiInitializeWithPermission(digunakan oleh kelulusan LaunchLab dan jalur terhubung lainnya) dapat melewatkanenable_creator_fee = truedan memilihcreator_fee_on. - Tarif dibagikan dengan tier biaya. Tarif itu sendiri adalah
AmmConfig.creator_fee_rate, nilai yang sama di seluruh setiap pool yang terikat ke konfigurasi itu. Setiap pool kemudian memutuskan apakah akan mengenakan tarif itu (enable_creator_fee) dan sisi swap mana untuk mengenakan tarif itu (creator_fee_on). Ketikaenable_creator_fee = false, tarif kreator efektif pool adalah nol terlepas dari nilai konfigurasi (lihatPoolState::adjust_creator_fee_ratedalam sumber). - Independen dari biaya perdagangan. Biaya kreator tidak pernah mengurangi bagian LP / protokol / dana — itu adalah tarif-nya sendiri, diterapkan secara terpisah, terakumulasi dalam counter-nya sendiri.
- Dikumpulkan melalui
CollectCreatorFee, ditandatangani olehPoolState.pool_creator. - Tidak dapat diaktifkan kembali atau dialihkan rute setelah pembuatan. Pool yang diinisialisasi dengan
enable_creator_fee = falsetidak akan pernah mengenakan biaya kreator; satu yang diinisialisasi dengancreator_fee_ontertentu tidak dapat berpindah sisi.
CollectCreatorFee tanpa batas.
Alur operasional pengumpulan
| Penanda Tangan | Instruksi | Counter Sumber Dinolkan | Jarak Waktu Tipikal |
|---|---|---|---|
amm_config.protocol_owner | CollectProtocolFee | protocol_fees_token{0,1} | Mingguan atau programatik |
amm_config.fund_owner | CollectFundFee | fund_fees_token{0,1} | Mingguan atau programatik |
pool_state.pool_creator | CollectCreatorFee | creator_fees_token{0,1} | Kapan saja |
security/admin-and-multisig. Penanda tangan kreator adalah akun yang menjalankan Initialize.
Mengubah tier biaya
Tarif biaya dapat diubah oleh admin melaluiUpdateAmmConfig (lihat products/cpmm/instructions). Perubahan berlaku pada swap berikutnya untuk setiap pool yang terikat pada AmmConfig itu — tidak ada migrasi, karena pool memuat konfigurasi setiap swap.
Apa yang tidak dapat dilakukan admin:
- Pindahkan pool dari satu
AmmConfigke yang lain. - Harga kembali biaya yang sudah terakumulasi secara retroaktif.
- Kumpulkan biaya tanpa penanda tangan
protocol_owner/fund_owner.
Membaca biaya dari pool yang berjalan
Perbandingan dengan CLMM dan AMM v4
Lihatreference/fee-comparison untuk matriks berdampingan. Ringkasan:
- AMM v4 menggunakan biaya perdagangan tetap 0,25% dengan pembagian LP/protokol yang berbeda dan tidak ada biaya dana.
- CLMM biaya per-tier tick-spacing, terakumulasi per-posisi (bukan per-pool), dan diklaim melalui
DecreaseLiquidityatauCollectFees.
Ke mana selanjutnya
products/cpmm/math— tempat pengurangan biaya perdagangan terhubung ke dalam kurva.products/cpmm/instructions— daftar akun instruksiCollect*.algorithms/token-2022-transfer-fees— cara menggabungkan biaya perdagangan pool dengan biaya transfer mint dengan benar.


