Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
Entri changelog dokumentasi. Untuk indeks semua pembaruan, lihat
reference/changelog. Untuk garis waktu historis protokol itu sendiri, lihat introduction/history-and-milestones.CreatePool / CreateCustomizablePool klasik tetap tidak berubah.
TL;DR untuk integrator
- ID pool sekarang dapat non-kanonik, di belakang gerbang izin. Secara historis ada tepat satu alamat pool CLMM per
(amm_config, token_mint_0, token_mint_1)— benih PDA mempinnya. Instruksi baru,CreatePermissionedPool, melipatseed_index: u16yang disediakan klien dan bukan nol ke dalam benih pool PDA, sehingga operator terdaftar dapat membuat beberapa pool untuk pasangan dan tier biaya yang sama, masing-masing di alamatnya sendiri. Karena alamat pool arbitrer adalah kemampuan istimewa, pembayar harus memegang PDAPermissionyang diberikan oleh admin. Dua instruksi admin,CreatePermissionPdadanClosePermissionPda, mengelola hibah tersebut. OpenLimitOrdersekarang memvalidasi sisi output. Instruksi mengambil tiga akun tambahan —output_token_account,output_vault,output_vault_mint— dan menolak pesanan denganNotApprovedjika akun token input atau output pemilik frozen. Ini menjamin pengisian akhir dapat dikirimkan, yang penting untuk mint Token-2022 dengan allow-list / default-frozen (token berizin). Klien yang dibangun terhadap daftar akun satu sisi lama harus menambahkan tiga akun output.
Apa yang berubah dalam program
Instruksi baru: CreatePermissionedPool
Bentuk dan parameter yang sama dengan CreateCustomizablePool (mengambil CreateCustomizableParams yang sama, jadi biaya satu sisi dan opt-in biaya dinamis tersedia), ditambah:
- Argumen
seed_index: u16, yang harus bukan nol. Ini ditambahkan (little-endian) ke benih pool PDA:["pool", amm_config, token_mint_0, token_mint_1, seed_index.to_le_bytes()]. - Akun
permission: PDA["permission", payer]. Anchor menolak panggilan jika tidak ada atau tidak dimiliki oleh program — keberadaannya saja adalah otorisasi. - Akun
pool_creatoryang dicatat sebagaipool_state.owner, yang mungkin berbeda daripayerpembayar biaya.
seed_index = 0 tetap dicadangkan untuk pool legacy: untuk itu komponen benih runtuh menjadi kosong, mereproduksi alamat empat-benih klasik, jadi tidak ada alamat pool yang ada berubah.
Lihat Instructions → CreatePermissionedPool.
Akun baru: Permission
Akun kemampuan yang keberadaannya adalah hibah. Ini hanya menyimpan authority yang dibuat untuknya (ditambah padding). Benih PDA: ["permission", authority]. Ini memberikan hak untuk memanggil CreatePermissionedPool dan tidak ada yang lain — tidak dapat memindahkan dana, mengubah biaya, atau mengubah pool apa pun. Lihat Accounts → Permission.
Instruksi admin baru: CreatePermissionPda / ClosePermissionPda
CreatePermissionPdamenginisialisasi PDAPermissionuntukpermission_authorityyang diberikan.ClosePermissionPdamenutupnya dan mengembalikan sewa ke pemanggil, mencabut hibah. Pool yang sudah dibuat di bawah hibah itu tidak terpengaruh.
admin program atau kunci permission_pda_admin khusus (konstanta berbeda di mainnet vs devnet). Lihat Admin keys and multisig → CLMM.
PoolState: field seed_index
Dua byte diukir dari wilayah padding yang ada (padding: [u8; 6] → seed_index: [u8; 2] + padding: [u8; 4]) langsung setelah fee_on. Ukuran akun total tidak berubah, dan tidak ada migrasi indexer yang diperlukan. Untuk pool yang dibuat melalui CreatePool / CreateCustomizablePool, seed_index adalah [0, 0]; untuk pool berizin itu membawa indeks pilihan kreator dan diperlukan untuk menurunkan ulang alamat pool secara offline.
OpenLimitOrder: akun sisi output dan frozen-account guard
Daftar akun OpenLimitOrder mendapatkan output_token_account, output_vault, dan output_vault_mint. Mereka digunakan hanya untuk validasi — tidak ada output yang didebit saat dibuka. Handler sekarang memerlukan bahwa tidak ada akun token input atau output yang frozen, mengembalikan NotApproved sebaliknya (kode yang sama sudah dikembalikan ketika pool memiliki swap atau limit-order dinonaktifkan). Ini menutup celah di mana pesanan dapat dibuka terhadap akun token yang tidak pernah dapat menerima pengisian (misalnya akun yang belum dicairkan untuk mint Token-2022 default-frozen).
Lihat Instructions → OpenLimitOrder.
Kode kesalahan
Tidak ada kode kesalahan baru.6000 NotApproved yang ada sekarang juga mencakup akun token input/output frozen dan kasus swap/limit-order-disabled pada OpenLimitOrder, dan kasus “penandatangan bukan admin atau permission_pda_admin” pada instruksi izin. Tabel kode kesalahan dan penomoran sebaliknya tidak berubah dari rilis 2026-05-18. Lihat Error codes → CLMM.
Catatan migrasi
- Membaca alamat pool: jangan asumsikan satu pool per
(config, mint0, mint1). Pasangan sekarang mungkin memiliki pool kanonik ditambah satu atau lebih pool berizin di alamat yang diturunkanseed_index. Enumerasi pool dari API / indexer daripada menurunkan PDA tunggal, dan simpanseed_indexketika Anda perlu menurunkan ulang pool berizin. - Menempatkan limit order: tambahkan tiga akun sisi output ke transaksi
OpenLimitOrderAnda, dan tampilkan pesan yang jelas ketikaNotApproveddikembalikan untuk akun frozen. - Tidak ada pemecahan ukuran akun atau tata letak:
PoolStatememiliki ukuran yang sama; byte padding yang sudah pensiun sekarang menyimpanseed_index.
Halaman yang diperbarui
products/clmm/overview— catatan “What’s new” tentang multi-pool berizin dan limit-order guard.products/clmm/instructions— bagianCreatePermissionedPoolbaru,CreatePermissionPda/ClosePermissionPdadalam tabel instruksi dan catatan admin-gating, dan daftar akunOpenLimitOrderyang diperbarui / prasyarat / kesalahan.products/clmm/accounts—Permissiondalam inventaris dan bagiannya sendiri, fieldPoolState.seed_index, pembantu derivasi PDA (derivePermissionedPool,derivePermission), dan referensi cepat siklus hidup.security/admin-and-multisig— barispermission_pda_adminbaru dan penjelasan cakupan izin dalam tabel peran CLMM.reference/error-codes— deskripsiNotApprovedyang diperluas.
- Sumber
raydium-clmm(create_permissioned_pool.rs,admin/create_permission_pda.rs,admin/close_permission_pda.rs,states/permission.rs,states/pool.rs,limit_order/open_limit_order.rs,lib.rs).

