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 →
Matriks dukungan: CPMM mendukung Token-2022 sepenuhnya, termasuk mint dengan transfer fee. CLMM mendukung Token-2022 dengan transfer fee melalui akun
SwapV2 eksplisit. AMM v4 tidak mendukung Token-2022 sama sekali. LaunchLab tidak mendukung Token-2022 untuk base mint (menciptakan mint SPL klasik). Farm v6 mendukung Token-2022 pada mint staking dan reward.Apa itu transfer fee
Token-2022 adalah program SPL Token kedua (TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA → TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb). Di antara extension-nya, extension transfer-fee membuat setiap TransferChecked pada mint token mengurangi fee dari jumlah yang ditransfer. Fee disalurkan ke penerima yang ditunjuk oleh mint authority dan dapat diperbarui oleh authority (dalam batas-batas).
Mint dengan transfer fee memiliki dua parameter relevan:
transfer_fee_basis_points— tingkat fee (contoh: 100 = 1%).maximum_fee— batas absolut per transfer (agar pengguna yang memindahkan jumlah besar tidak membayar fee tanpa batas).
Mengapa ini penting untuk swap
Vault pool menyimpan saldo sebenarnya. Ketika pengguna memanggil swap Raydium:- Pengguna mengirim
amount_inke vault pool. Jika in-mint memiliki transfer fee, vault menerimaamount_in − fee_in, bukanamount_in. - Matematika swap beroperasi pada jumlah yang diterima vault.
- Pool mengirim
amount_outke ATA pengguna. Jika out-mint memiliki transfer fee, pengguna menerimaamount_out − fee_out, bukanamount_out.
amount_in mentah, pemeriksaan invarian gagal karena vault menerima lebih sedikit dari yang dipikirkan program. Sebaliknya, jika compute amount_out tanpa mengurangi transfer fee outbound, pengguna melihat kekurangan dan menyalahkan program.
Raydium CPMM dan CLMM (via SwapV2) menangani ini dengan:
- Pra-swap: menghitung
in_after_fee = amount_in − transfer_fee_on(amount_in, in_mint), dan menggunakanin_after_feedalam matematika kurva. - Pasca-swap: menghitung
out_gross = amount_out_from_curve, mengirimout_grosske pengguna viaTransferCheckedyang program Token-2022 itu sendiri akan kurangi dengan transfer fee.
minAmountOut slippage bound pengguna diperiksa terhadap out_gross (apa yang pool kirim), bukan terhadap apa yang pengguna terima. Ini adalah cara setiap DEX besar di Solana menangani Token-2022, dan penting karena:
- Jika pool memeriksa pasca-fee, update fee antara quote dan execution akan menyebabkan trade revert.
- Memeriksa pre-fee mengikat kegagalan pada kualitas quote itu sendiri, bukan pada perubahan fee out-of-band pengguna.
Menghitung fee Token-2022
Program SPL Token-2022 mengekspos helper deterministik. Dalam Rust:@solana/spl-token):
Formula swap yang disesuaikan (CPMM, exact-input)
Misalkanf_pool adalah tingkat pool fee, f_in tingkat transfer fee in-mint, max_in batas maksnya, f_out tingkat transfer fee out-mint, max_out batas maksnya.
amount_out_gross ≥ min_amount_out (bukan user_receives ≥ min_amount_out). minAmountOut pengguna diatur oleh SDK ke expected_gross · (1 − slippage) — pertahankan bound di sisi “terkirim”, bukan sisi “diterima”.
Formula yang disesuaikan (CPMM, exact-output)
SDK melakukan iterasi untuk menemukanamount_in sehingga user_receives = amount_out_exact:
max_in / max_out membuat komputasi non-linear karena setelah batas tercapai fee berhenti tumbuh. computeAmountIn / computeAmountOut SDK menangani ini dengan melakukan iterasi jika formula naif akan melampaui batas.
Edge case
Fee asimetris (satu sisi memiliki fee, sisi lain tidak)
Umum dalam praktik. Formula di atas sudah menangani ini — jika satu sisi memilikif_in = 0, term relevan akan collapse. Tidak ada kasus khusus dalam program.
Update fee mid-swap
Jika transfer fee mint berubah antara waktu quote dan execution, swap akan mendarat dengan ekonomi sedikit lebih buruk (pengguna menanggung perbedaan dalam toleransi slippage) atau revert (output gross turun di bawahminAmountOut). Batas slippage menyerap ini; tidak ada perlindungan tambahan yang diperlukan.
Batas maximum-fee
Setelah trade cukup besar untuk mencapaimaximum_fee, fee jenuh dan pertumbuhan lebih lanjut adalah nol. Ini membuat tingkat efektif asimtotik ke nol untuk trade sangat besar, yang dapat menyebabkan kurva penetapan harga aneh di pasar sangat iliquida. computeAmountOut SDK memperhitungkan ini.
Extension non-transferable
Beberapa mint Token-2022 menggunakan extensionNonTransferable, yang menolak semua panggilan Transfer kecuali ke dan dari mint authority. Mint seperti itu tidak dapat digunakan dalam pool Raydium sama sekali. CreatePool menolaknya saat init.
Mint interest-bearing
Token-2022 juga mendukung extensionInterestBearingConfig yang membuat saldo tampak tumbuh seiring waktu. Pool Raydium membaca saldo vault mentah (yang mengabaikan akrual bunga), jadi pada pool dengan mint interest-bearing, LP menangkap bunga yang terakrual sebagai hadiah murni kapan pun mereka redeem (saldo vault tumbuh lebih cepat daripada representasi pasokan LP). Integrator harus memperlakukan ini sebagai non-issue tetapi mendokumentasikannya untuk sisi LP.
Transfer hooks
ExtensionTransferHook Token-2022 memungkinkan CPI arbitrer pada setiap transfer. CPMM Raydium mendukung ini — instruksi swap meneruskan akun hook — tetapi menambah overhead CU dan memerlukan hook berperilaku baik. CLMM SwapV2 juga mendukung hooks. AMM v4 tidak mendukung Token-2022 sama sekali, jadi pertanyaan tidak muncul.
Contoh yang dikerjakan
Pool CPMM,x = 1_000_000 USDY, y = 1_000_000 USDC, pool fee 0,25%.
- USDY memiliki transfer fee 1%,
max_fee = 10_000(0,01 USDY dengan 6 desimal). - USDC tidak memiliki transfer fee.
amount_in = 1_000 USDY untuk USDC (exact-input).
Pointer
products/cpmm/overview— dukungan CPMM Token-2022.products/clmm/instructions—SwapV2vsSwapuntuk routing Token-2022.solana-fundamentals/spl-token-and-token-2022— model extension Token-2022 umum.
- Dokumen extension transfer-fee SPL Token-2022
- Kode sumber program CPMM Raydium (penanganan Token-2022
SwapBaseInput/SwapBaseOutput). - Kode sumber program CLMM Raydium (
SwapV2).


