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

# 2026-07-30 — CLMM: permissioned multi-pools dan limit-order frozen-account guard

> Dua pembaruan program CLMM: CreatePermissionedPool memungkinkan otoritas terdaftar membuat beberapa pool per pasangan melalui seed_index yang dilipat ke dalam pool PDA, dan OpenLimitOrder sekarang mengambil akun sisi output untuk menolak pesanan dengan akun token input atau output yang frozen.

<Info>
  **Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.**

  [Lihat versi bahasa Inggris →](/reference/changelog/2026-07-30-clmm-permissioned-pools)
</Info>

<Info>
  Entri changelog dokumentasi. Untuk indeks semua pembaruan, lihat [`reference/changelog`](/id/reference/changelog). Untuk garis waktu historis protokol itu sendiri, lihat [`introduction/history-and-milestones`](/id/introduction/history-and-milestones).
</Info>

Rilis ini mendokumentasikan dua perubahan program CLMM. Keduanya bersifat aditif dan kompatibel ke belakang: pool, posisi, dan open order yang ada tidak terpengaruh, dan jalur `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`**, melipat `seed_index: u16` yang 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 PDA **`Permission`** yang diberikan oleh admin. Dua instruksi admin, **`CreatePermissionPda`** dan **`ClosePermissionPda`**, mengelola hibah tersebut.
* **`OpenLimitOrder` sekarang memvalidasi sisi output.** Instruksi mengambil tiga akun tambahan — `output_token_account`, `output_vault`, `output_vault_mint` — dan menolak pesanan dengan `NotApproved` jika 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_creator` yang dicatat sebagai `pool_state.owner`, yang mungkin berbeda dari `payer` pembayar 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](/id/products/clmm/instructions).

### 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](/id/products/clmm/accounts).

### Instruksi admin baru: `CreatePermissionPda` / `ClosePermissionPda`

* `CreatePermissionPda` menginisialisasi PDA `Permission` untuk `permission_authority` yang diberikan.
* `ClosePermissionPda` menutupnya dan mengembalikan sewa ke pemanggil, mencabut hibah. Pool yang sudah dibuat di bawah hibah itu tidak terpengaruh.

Keduanya menerima pubkey `admin` program **atau** kunci `permission_pda_admin` khusus (konstanta berbeda di mainnet vs devnet). Lihat [Admin keys and multisig → CLMM](/id/security/admin-and-multisig).

### `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](/id/products/clmm/instructions).

## 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](/id/reference/changelog/2026-05-18-clmm-limit-orders). Lihat [Error codes → CLMM](/id/reference/error-codes).

## 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 diturunkan `seed_index`. Enumerasi pool dari API / indexer daripada menurunkan PDA tunggal, dan simpan `seed_index` ketika Anda perlu menurunkan ulang pool berizin.
* **Menempatkan limit order**: tambahkan tiga akun sisi output ke transaksi `OpenLimitOrder` Anda, dan tampilkan pesan yang jelas ketika `NotApproved` dikembalikan untuk akun frozen.
* **Tidak ada pemecahan ukuran akun atau tata letak**: `PoolState` memiliki ukuran yang sama; byte padding yang sudah pensiun sekarang menyimpan `seed_index`.

## Halaman yang diperbarui

* `products/clmm/overview` — catatan "What's new" tentang multi-pool berizin dan limit-order guard.
* `products/clmm/instructions` — bagian `CreatePermissionedPool` baru, `CreatePermissionPda` / `ClosePermissionPda` dalam tabel instruksi dan catatan admin-gating, dan daftar akun `OpenLimitOrder` yang diperbarui / prasyarat / kesalahan.
* `products/clmm/accounts` — `Permission` dalam inventaris dan bagiannya sendiri, field `PoolState.seed_index`, pembantu derivasi PDA (`derivePermissionedPool`, `derivePermission`), dan referensi cepat siklus hidup.
* `security/admin-and-multisig` — baris `permission_pda_admin` baru dan penjelasan cakupan izin dalam tabel peran CLMM.
* `reference/error-codes` — deskripsi `NotApproved` yang diperluas.

**Diverifikasi terhadap**:

* 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`).
