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. Setiap program mengakui mint individual melalui satu mekanisme — PDA registri per-mint yang dikelola admin. Kedua program juga memiliki bypass yang dikodekan keras di berbagai titik; semua itu telah dihapus. Halaman ini adalah referensi satu halaman untuk apa yang diterapkan dan di mana, dengan kutipan 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 freeze_authority mint vault saat ini muncul dalam daftar frozen_position_nft_authorities::IDS yang dikodekan keras. Daftar itu adalah apa yang menggantikan deteksi token Superstate CLMM sebelumnya, dan membawa otoritas penerbit yang sama dengan heuristik lama yang cocok. Menetapkan pool PDA sebagai freeze_authority mint NFT posisi bukan pembekuan itu sendiri. Ini adalah aturan penjagaan posisi, bukan daftar izin pembuatan pool:
  • 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 terbatas Token-2022 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 pertama yang tersisa. Lihat products/clmm/ticks-and-positions.

Mint quote LaunchLab

Dua mint LaunchLab dibatasi sangat berbeda, dan asimetrinya mudah terlewatkan.
  • Mint base — LaunchLab membuatnya. Mint base Token-2022 hanya dapat dicapai melalui initialize_with_token_2022, dan program hanya akan melampirkan MetadataPointer dan (opsional) TransferFeeConfig. Apa pun yang lain mengembalikan NoSupportExtension. Mint Token-2022 yang sudah ada tidak dapat disuplai sebagai base sama sekali. Ketika TransferFeeConfig dilampirkan, transfer_fee_config_authority mint adalah PDA otoritas peluncuran hingga kelulusan, sementara withdraw_withheld_authority-nya adalah transfer_fee_extension_auth yang dikonfigurasi platform dari pembuatan mint ke depan — program launchpad itu sendiri tidak memiliki instruksi withdraw-withheld. Lihat products/launchlab/platform-config.
  • Mint quote — LaunchLab tidak membuatnya dan tidak menyaringnya. CreateConfig menerima akun mint sebagaimana diberikan, jadi tidak ada setara is_supported_mint di sisi quote. Satu-satunya gating adalah mint mana yang dipilih admin untuk diikat ke GlobalConfig.
Itu membuat pengikatan mint quote Token-2022 menjadi tindakan kepercayaan tinggi, untuk alasan yang sama dengan mendaftarkan mint di bawah: mint quote TransferHook akan menjalankan hook-nya pada setiap pembelian, penjualan, dan klaim biaya di setiap pool yang dikutip di dalamnya, dan mint quote PermanentDelegate akan membiarkan delegasi menyapu vault quote pool tersebut. Tidak satupun yang diblokir oleh program. Apa yang LaunchLab tangani dengan benar setelah mint quote terikat:
  • Vault quote, kedua vault biaya, dan akun token penerima biaya-share dibuat pada program mint quote itu sendiri.
  • TransferFeeConfig di sisi quote diperhitungkan dalam keempat instruksi perdagangan, dan batas slippage diperiksa terhadap jumlah bersih pembayar daripada pergerakan vault kotor. Lihat products/launchlab/instructions.
  • PoolState.token_program_flag mencatat program kedua mint — bit0 untuk mint base, bit1 untuk mint quote. Dekode per bit; byte bukan boolean. Lihat products/launchlab/accounts.
Instruksi Initialize yang sudah usang masih mengambil program quote warisan saja, jadi config dengan mint quote Token-2022 hanya dapat dicapai melalui InitializeV2 dan InitializeWithToken2022.

Daftar izin ekstensi CPMM dan CLMM

Setelah dua shortcut yang 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

Jalur bypass

Mint Token-2022 yang tidak sesuai dengan daftar izin masih dapat diterima, melalui satu mekanisme di setiap program. Kedua program juga membawa bypass yang dikodekan keras di masa lalu; tidak satupun yang bertahan. is_supported_mint sekarang byte-for-byte fungsi yang sama di kedua program: mint SPL Token warisan lolos, mint dengan PDA registri lolos, dan semuanya harus membawa hanya ekstensi yang diizinkan.

Satu-satunya bypass: registri per-mint

Kedua program berkonsultasi dengan PDA SupportMintAssociated pada seed [b"support_mint", mint]. Jika PDA itu ada untuk mint, mint diterima terlepas dari set ekstensinya. Setiap program memiliki salinannya sendiri dari PDA (mereka berasal di bawah ID program yang berbeda), pasangan CreateSupportMintAssociated / CloseSupportMintAssociated sendiri, dan otoritas khusus sendiri bersama admin bersama: Di kedua program instruksi menerima baik crate::admin::ID atau otoritas khusus program itu, dan memerlukan mint dimiliki oleh Token-2022. Efek: mint Token-2022 tertentu dapat dipilih ke pembuatan pool tanpa upgrade program — itulah mengapa daftar yang dikodekan keras bisa hilang. Setiap program berkonsultasi dengan registri dari setiap jalur pembuatan pool yang dimilikinya: CPMM dari Initialize dan InitializeWithPermission (yang terakhir adalah apa yang digunakan kelulusan LaunchLab, jadi mint terdaftar lulus sekaligus membuat), CLMM dari CreatePool, CreateCustomizablePool dan CreatePermissionedPool.

Bypass yang dihapus

Kedua mekanisme yang dikodekan keras hilang dari program yang digunakan. Mereka didokumentasikan di sini hanya karena integrasi yang ditulis terhadap perilaku yang lebih lama mungkin masih menganggapnya.

MINT_WHITELIST statis — dihapus

Array konstan dari alamat mint base58 yang digunakan untuk shortcut is_supported_mint sebelum iterasi ekstensi. CLMM memiliki enam alamat dan dihapus pada 2026-07-24; CPMM memiliki empat pertama dari set yang sama dan dihapus dalam upgrade 2026-09-09. Pool yang sudah ada untuk salah satu mint ini terus berdagang — pemeriksaan mint hanya berjalan saat pembuatan pool. Membuat pool baru untuk salah satu sekarang memerlukan PDA registri untuk itu.

Deteksi bentuk otoritas Superstate — dihapus

CLMM secara singkat mengidentifikasi aset tokenisasi Superstate berdasarkan bentuk otoritas mereka daripada alamat: mint Token-2022 yang freeze_authority dan delegasi permanen keduanya sama dengan superstate_allowlist::ID, dengan DefaultAccountState diatur ke Frozen, diterima. Itu adalah heuristik, jadi mint apa pun di masa depan dengan bentuk yang sama akan diterima secara otomatis. Itu dihapus pada 2026-07-31, bersama dengan modul superstate_allowlist. Apa yang menggantikannya lebih sempit dan melayani tujuan yang berbeda: frozen_position_nft_authorities::IDS, yang tidak mengakui apa pun — itu memutuskan apakah NFT posisi membeku, dan dijelaskan di atas. Satu-satunya otoritas penerbit yang cocok dengan heuristik lama adalah satu entri dalam daftar itu.

Apa yang bypass tidak mengesampingkan

Bypass melewati daftar izin ekstensi, tetapi program masih menerapkan:
  • Mint dimiliki oleh baik 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 akan berjalan pada setiap transfer dan dapat membatu swap. Mendaftarkan mint 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 — menjalankan 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. Dapat diterima hanya dengan mendaftarkan mint, yang merupakan cara penerbit terpercaya (misalnya stablecoin yang diatur) diintegrasikan kasus per kasus.
  • MintCloseAuthority — mint dapat ditutup; pool yang ada menjadi tidak dapat digunakan. Dilarang secara default.
  • DefaultAccountState (Frozen) — ATA pool akan mendarat dalam status Frozen dan memerlukan pencairan per akun. Dapat diterima hanya dengan mendaftarkan mint, 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 withdraw memindahkan lebih sedikit dari jumlah nominal. Dua angka terpisah terlibat, dan SDK menjaganya terpisah:
  • Biaya pool (LP + protokol + dana + kreator) berasal dari kurva. raydium.cpmm.computeSwapAmount({ ... }) mengembalikannya sebagai fee, bersama dengan amountIn, amountOut, minAmountOut, executionPrice, priceImpact dan swapResult mentah.
  • Biaya transfer Token-2022 berasal dari mint, bukan pool. Itu dihitung oleh pembantu getTransferAmountFee dalam @raydium-io/raydium-sdk-v2, yang mengembalikan GetTransferAmountFee:
Deposit dan withdraw mempermukaannya secara langsung: computePairAmount mengembalikan inputAmountFee dan anotherAmount sebagai nilai GetTransferAmountFee. UI yang benar menunjukkan:
  • jumlah input plus transfer fee-nya sebagai “Anda kirim”
  • jumlah output minus transfer fee-nya sebagai “Anda terima”
  • pool fee sebagai baris terpisah — itu bukan biaya Token-2022
UI naif yang hanya menunjukkan amountIn → amountOut meremehkan biaya. Lewatkan epochInfo dari cluster ke pembantu ini daripada menyimpannya; epoch adalah apa yang memilih antara konfigurasi biaya older dan newer mint.

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 mereplikanya.

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 dalam 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 mempermukaannya:
Gunakan programId untuk dispatch, dan hasTransferFee untuk permukaan peringatan UI.

Pembantu SDK

Kesalahan integrasi umum

  • Pre-flighting hanya ID program. Mint dapat berupa Token-2022 dan tidak didukung. Jalan daftar ekstensi terhadap daftar izin, dan periksa PDA registri mint, sebelum mengizinkan pembuatan pool.
  • Mempercayai kutipan SDK ketika mint tidak diterima sama sekali. API kutipan tidak menolak untuk mengutip — pembuatan pool adalah apa yang kembali. Konfirmkan 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 hitung 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.
  • Auto-listing mint Token-2022 baru. Dompet dan agregator harus memeriksa TransferHook dan NonTransferable sebelum mempermukaakan mint kepada pengguna; keduanya tidak ramah Raydium.

Pekerjaan di 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).
  • Jalur baca publik untuk registri, sehingga UI dapat membedakan “tidak didukung” dari “tidak didukung tetapi terdaftar” tanpa menurunkan PDA itu sendiri.
Halaman ini akan diperbarui ketika ada yang mendarat.

Penunjuk

Sumber:
  • raydium-cp-swap/programs/cp-swap/src/utils/token.rsis_supported_mint, support_mint_associated_is_initialized.
  • raydium-clmm/programs/amm/src/util/token.rsis_supported_mint, support_mint_associated_is_initialized, frozen_position_nft_authorities, position_nft_must_freeze.
  • 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.
  • raydium-launchpad/programs/launchpad/src/instructions/admin/create_config.rs — pengikatan mint quote LaunchLab (tidak ada pemeriksaan ekstensi).