Skip to main content
Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
Raydium tidak menerima mint Token-2022 sembarangan. CPMM dan CLMM keduanya menjalankan mode daftar izin ketat: hanya serangkaian kecil ekstensi yang lolos secara default; semuanya ditolak saat pembuatan pool. Beberapa mint terpercaya diterima melalui alamat yang dikodekan; CLMM juga mendukung registri per-mint yang dikelola admin dan deteksi token Superstate saat runtime. Halaman ini adalah referensi satu halaman untuk apa yang diterapkan dan di mana, dengan kutipan file-dan-baris ke sumber program.

Dukungan tingkat program

Pemeriksaan daftar izin berada di: Tidak ada pemeriksaan mint saat swap pada CPMM atau CLMM — gating hanya terjadi saat pembuatan pool. Setelah pool ada, swap hanya mempercayai bahwa mint tidak berubah, yang benar untuk bagian yang tidak dapat diubah dari status mint Token-2022.

Pembekuan NFT posisi CLMM untuk penerbit terbatas

Akun NFT posisi tetap tidak beku secara default. CLMM membekukan satu hanya ketika posisi menggunakan jalur terbuka V2 dan setidaknya satu mint vault saat ini freeze_authority cocok dengan daftar penerbit terbatas yang dikodekan. Daftar awal berisi otoritas yang sama yang digunakan oleh jalur deteksi Superstate di bawah. Menetapkan pool PDA sebagai freeze_authority mint NFT posisi bukan pembekuan itu sendiri. Ini adalah aturan penjagaan posisi, bukan daftar izin pembuatan pool lain:
  • Pool sudah dapat ada dan tetap dapat ditukar.
  • Mint NFT posisi menggunakan pool PDA CLMM sebagai freeze_authority-nya sendiri; penerbit yang mendasar tidak mengendalikan NFT posisi.
  • OpenPositionV2 mencakup NFT posisi SPL klasik atas aset pool Token-2022. OpenPositionWithToken22Nft mencakup NFT posisi Token-2022.
  • OpenPosition V1 tidak memeriksa mint vault dan tidak dapat melayani aset Token-2022 terbatas yang ditargetkan oleh daftar yang dikirim.
  • Posisi yang ada tidak berubah.
Posisi yang beku tetap dapat dikelola oleh pemiliknya tetapi tidak dapat ditransfer. ClosePosition mencairkan dan membakar secara atomik ketika klien melewatkan pool sebagai akun yang tersisa pertama. Lihat products/clmm/ticks-and-positions.

Daftar izin ekstensi CPMM dan CLMM

Setelah jalan pintas daftar putih statis (tercakup di bawah), program mengulangi ekstensi mint dan menolak mint jika membawa ekstensi apa pun selain lima ini: Apa pun yang tidak dalam daftar ini — TransferHook, NonTransferable, ConfidentialTransferMint, PermanentDelegate, MintCloseAuthority, DefaultAccountState, GroupPointer, GroupMemberPointer, MemberPointer, Pausable, dll. — menyebabkan is_supported_mint mengembalikan false dan pembuatan pool kembali. Baris yang relevan (CPMM, bentuk identik di CLMM):
cp-swap/src/utils/token.rs:190–200

Jalur bypass

Mint Token-2022 yang tidak sesuai dengan daftar izin masih dapat diterima melalui salah satu dari tiga bypass eksplisit. Mereka dicoba secara berurutan, sebelum iterasi ekstensi berjalan.

1. Daftar putih mint statis

Array konstanta MINT_WHITELIST dari string base58 dikodekan dalam setiap program. Jika alamat mint cocok, fungsi mengembalikan true segera dan tidak ada pemeriksaan ekstensi yang dilakukan. Alamat ini dipanggang ke dalam program; memperbarui daftar memerlukan upgrade program melalui multisig upgrade 3/4.

2. Registri per-mint — CLMM saja

CLMM juga berkonsultasi dengan PDA SupportMintAssociated di seed [b"support_mint", mint]. Jika PDA itu ada untuk mint, itu diterima terlepas dari set ekstensinya. PDA dibuat oleh CreateSupportMintAssociated (admin/create_support_mint_associated.rs). Instruksi dibatasi untuk dua penandatangan:
  • crate::admin::ID — otoritas admin Raydium standar.
  • crate::create_support_mint_associated_owner::ID — otoritas khusus untuk tujuan ini: RayVyjyJQz9vAi126A4sGexKnSU1XeZaHTRcM1mZMPY (mainnet), rayf3nEbb3bnfN6RDGFpqPbjc5uUa3tRUzu6UVYrRx5 (devnet).
Efek: tim CLMM dapat memilih mint Token-2022 tertentu untuk pembuatan pool tanpa upgrade program. CPMM tidak memiliki yang setara — daftar izinnya ketat dikodekan sumber.

3. Deteksi Superstate — CLMM saja

CLMM memiliki jalur ketiga khusus untuk aset tokenisasi Superstate, yang menggunakan ekstensi ScaledUiConfig yang versi spl-token-2022 yang ditautkan ke program CLMM tidak dapat membuka. Daripada upgrade dependensi, CLMM mendeteksi token Superstate berdasarkan bentuk otoritasnya:
raydium-clmm/programs/amm/src/util/token.rs:485 Mint melewati cabang ini jika keempat berlaku:
  • Program pemiliknya adalah program Token-2022.
  • freeze_authority-nya sama dengan superstate_allowlist::ID. Lihat reference/program-addresses untuk nilai mainnet-beta dan devnet.
  • Ekstensi DefaultAccountState-nya diatur ke Frozen.
  • Delegasi permanen-nya juga superstate_allowlist::ID.
Ini adalah heuristik, bukan registri — mint apa pun di masa depan yang Superstate keluarkan dengan bentuk otoritas yang sama akan diterima secara otomatis.

Apa yang tidak dibebaskan bypass

Bypass melewati daftar izin ekstensi, tetapi program masih menerapkan:
  • Mint dimiliki oleh Token atau Token-2022. Program token khusus ditolak upstream.
  • Vault pool dibuat dengan ekstensi ATA yang tepat untuk pool Token-2022 (ImmutableOwner, dll.).
  • Semua transfer melalui transfer_checked — mint yang membawa biaya mendarat jumlah yang tepat di vault.
Mint yang diizinkan atau terdaftar PDA yang, misalnya, menambahkan TransferHook nanti tidak mendapatkan pemeriksaan saat swap; hook hanya akan berjalan pada setiap transfer dan dapat membuat swap batu bata. Whitelisting oleh karena itu adalah tindakan kepercayaan tinggi.

Semantik “Diblokir”

Ketika is_supported_mint mengembalikan false, pembuatan pool kembali dengan ErrorCode::NotSupportMint (CPMM) / ErrorCode::NotSupportMint (CLMM). Lihat reference/error-codes untuk kode numerik. Pool yang ada tidak dapat secara retroaktif gagal pemeriksaan ini — gating hanya berjalan saat pembuatan. Ekstensi mint tidak dapat diubah untuk kategori yang Raydium tolak (transfer hook, non-transferable, confidential transfer tidak dapat ditambahkan pasca-pembuatan), jadi pemeriksaan statis sudah cukup.

Mengapa setiap ekstensi yang dikecualikan dikecualikan

  • TransferHook — memanggil program khusus pada setiap transfer, dengan konsumsi CU sembarangan, kondisi kegagalan sembarangan, dan kemampuan untuk memasuki kembali program yang memanggil. Tidak ada sandbox yang aman. Beberapa DEX mempertahankan daftar izin hook; Raydium tidak.
  • NonTransferableTransfer selalu gagal. Pool tidak dapat mengambil alih.
  • ConfidentialTransfer — jumlah transfer dienkripsi; kurva tidak dapat menentukan harga swap.
  • PermanentDelegate — pemegang delegasi dapat menyapu akun token apa pun, termasuk vault pool. Diizinkan hanya melalui daftar putih statis untuk penerbit terpercaya (misalnya, stablecoin yang diatur).
  • MintCloseAuthority — mint dapat ditutup; pool yang ada menjadi tidak dapat digunakan. Dilarang secara default.
  • DefaultAccountState (Frozen) — ATA pool akan mendarat di status Frozen dan memerlukan pencairan per akun. Diizinkan hanya melalui deteksi Superstate, yang mengasumsikan penerbit mencairkan akun institusional saat pendaftaran.
  • Penunjuk Grup/Anggota — tidak secara aktif berbahaya, tetapi tidak ditinjau. Dilarang secara default untuk menjaga permukaan tetap sempit.

Akuntansi biaya transfer

Untuk mint yang membawa TransferFeeConfig, setiap swap, deposit, dan penarikan memindahkan lebih sedikit dari jumlah nominal. SDK menampilkan kedua bagian dari perhitungan:
UI yang benar menunjukkan:
  • amountIn + token2022FeeIn sebagai “Anda mengirim”
  • amountOut - token2022FeeOut sebagai “Anda terima”
  • feeAmount sebagai biaya pool (LP + protokol), yang terpisah dari biaya transfer Token-2022
UI naif yang hanya menunjukkan amountIn → amountOut meremehkan biaya.

Batas maximumFee

Biaya transfer Token-2022 dibatasi per transfer. Untuk mint 1% dengan batas 10.000 token, transfer 100.000.000 token hanya membayar 10.000 dalam biaya. computeSwapAmount SDK menerapkan batas; pemanggil program langsung harus mereplikasi.

Transisi epoch

Otoritas mint dapat menjadwalkan perubahan tingkat biaya yang diaktifkan pada epoch berikutnya. Selama jendela transisi, dua konfigurasi (older, newer) hidup di mint sekaligus dan TransferChecked memilih berdasarkan epoch saat ini. CPMM SwapV2 dan CLMM SwapV2 keduanya melewatkan akun mint lengkap di accounts, jadi program membaca konfigurasi yang tepat tanpa pencarian tambahan. Jika Anda mengutip lebih dari satu epoch sebelumnya melalui Trade API atau SDK, biaya yang dieksekusi dapat berbeda dari biaya yang dikutip — dibatasi oleh maximum_fee_basis_points konfigurasi yang lebih lama.

Bunga-bearing dan ScaledUiAmount

Pool memegang jumlah pokok; “jumlah UI” adalah pokok dikalikan dengan faktor skala yang bergantung waktu atau yang ditetapkan admin. Matematika swap beroperasi pada pokok:
SDK mengonversi secara otomatis. Pembaca RPC langsung harus memperlakukan pool.token0Vault.amount sebagai pokok.

Definisi “pool Token-2022”

Pool adalah pool Token-2022 jika salah satu mint memiliki programId == TokenzQdB.... API menampilkan ini:
Gunakan programId untuk mengirim, dan hasTransferFee untuk menampilkan peringatan UI.

Pembantu SDK

Kesalahan integrasi umum

  • Hanya pre-flighting ID program. Mint dapat berupa Token-2022 dan tidak didukung. Berjalan melalui daftar ekstensi terhadap daftar izin (dan daftar putih statis) sebelum memungkinkan pembuatan pool.
  • Mempercayai kutipan SDK ketika mint tidak diterima sama sekali. API kutipan tidak menolak untuk mengutip — pembuatan pool adalah apa yang kembali. Konfirmasi semantik is_supported_mint off-chain sebelum mengekspos pembuatan pool di UI Anda.
  • Mengutip tanpa potongan biaya transfer. Mint biaya transfer 1% di kedua sisi pool CPMM 0,25% memiliki biaya efektif sekitar 2,25%, bukan 0,25%. Gunakan kutipan SDK atau kutipan Trade API — jangan pernah menghitung biaya secara manual dari tingkat biaya pool saja.
  • Memanggil instruksi Swap warisan pada pool Token-2022. Swap mendahului Token-2022. Gunakan SwapV2 kapan pun salah satu mint adalah Token-2022.
  • Daftar otomatis mint Token-2022 baru. Dompet dan agregator harus memeriksa TransferHook dan NonTransferable sebelum menampilkan mint kepada pengguna; keduanya tidak ramah Raydium.

Pekerjaan masa depan

Item roadmap ekosistem Solana dan protokol yang akan mengubah matriks ini:
  • Program transfer-hook yang diizinkan di tingkat Solana (konvensi ekosistem berkembang).
  • AMM yang kompatibel dengan transfer-rahasia (tahap penelitian).
  • Registri per-mint CPMM yang lebih luas (paritas dengan CLMM).
  • Upgrade dependensi sehingga decoding ScaledUiConfig CLMM berfungsi tanpa heuristik Superstate.
Halaman ini akan diperbarui ketika ada yang mendarat.

Penunjuk

Sumber:
  • raydium-cp-swap/programs/cp-swap/src/utils/token.rsMINT_WHITELIST, is_supported_mint.
  • raydium-clmm/programs/amm/src/util/token.rsMINT_WHITELIST, superstate_allowlist, is_superstate_token, is_supported_mint.
  • raydium-clmm/programs/amm/src/instructions/admin/create_support_mint_associated.rs — instruksi registri per-mint.
  • raydium-launchpad/programs/launchpad/src/instructions/initialize_with_token_2022.rs — pembuatan mint base Token-2022 LaunchLab.