> ## 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-10-22 — CLMM：CreateCustomizablePoolV2 開放多池創建給所有人

> CreatePermissionedPool 改名為 CreateCustomizablePoolV2，其 Permission PDA 閘門已移除，任何支付者都可以在相同交易對和費用層級的 seed_index 衍生地址上創建額外的 CLMM 池。Permission 帳戶和 CreatePermissionPda / ClosePermissionPda 管理指令已刪除。對呼叫舊指令的客戶端造成破壞性變更；帳戶佈局和錯誤代碼未變。

<Info>
  **本頁內容由 AI 自動翻譯，所有內容以英文版本為準。**

  [查看英文版 →](/reference/changelog/2026-10-22-clmm-customizable-pool-v2)
</Info>

<Info>
  本條目涵蓋排定於 **2026-10-22** 的 CLMM 程式升級。在部署前已針對 `raydium-clmm` 的 `feat/create-customizable-pool-v2` 分支（head `18f5db1`）進行驗證。在依賴新指令名稱或帳戶清單前，請確認已部署的程式。
</Info>

[2026-07-30 版本](/zh-Hant/reference/changelog/2026-07-30-clmm-permissioned-pools)新增了 `CreatePermissionedPool`，允許呼叫者透過將 `seed_index` 折疊到池 PDA 中，為相同的 `(amm_config, token_mint_0, token_mint_1)` 創建多個池。該指令受到閘門限制：支付者必須持有由管理員簽發的 `Permission` PDA。

本版本移除了該閘門。指令改名為 **`CreateCustomizablePoolV2`**，任何人都可以呼叫它，整個權限機制已從程式中刪除。池數學、交換、流動性、限價單、費用和獎勵保持不變。

## 整合者速覽

* **`CreatePermissionedPool` → `CreateCustomizablePoolV2`。** 相同的參數（`CreateCustomizableParams`、`seed_index: u16`）和相同的池地址衍生。Anchor 判別器隨著名稱改變，因此針對舊指令構建的交易在升級後會失敗。請針對新 IDL 重新構建。
* **`permission` 帳戶已從帳戶清單中移除。** 它位於第 3 個位置，因此從 `amm_config` 開始的每個帳戶都向上移動一個位置。請參閱[新帳戶清單](#createcustomizablepoolv2-帳戶清單)。
* **多池創建現在無需許可。** 任何支付者都可以使用非零的 `seed_index` 為交易對和費用層級創建額外的池。將交易對視為每個費用層級可能有許多 CLMM 池，由任何人創建。
* **`Permission`、`CreatePermissionPda` 和 `ClosePermissionPda` 已移除。** 程式和 IDL 不再知道 `Permission` 類型。
* **重新整理你的 IDL。** 它刪除了兩個指令和一個帳戶類型，共 37 個指令和 53 個錯誤。
* **沒有帳戶佈局改變，也沒有新增錯誤代碼。** `PoolState.seed_index` 保持其偏移量；只是其含義從「受許可的池」擴展到「任何 V2 池」。

## 程式中的變更

### `CreatePermissionedPool` 改名為 `CreateCustomizablePoolV2`

處理程式是相同的代碼，只是名稱不同。它仍然：

* 要求 `seed_index > 0`；
* 在 `["pool", amm_config, token_mint_0, token_mint_1, seed_index.to_le_bytes()]` 衍生池；
* 採用與 `CreateCustomizablePool` 相同的 `CreateCustomizableParams`，因此單邊費用（`collect_fee_on`）和動態費用選擇以相同方式運作；
* 應用與 `CreatePool` 相同的 Token-2022 支援鑄幣檢查；
* 將 `pool_creator` 記錄為 `pool_state.owner` 並將 `seed_index` 寫入 `PoolState`；
* 發出 `PoolCreatedEvent`。

`Permission` PDA 檢查是唯一被移除的行為。

| | 舊判別器 | 新判別器 |
| - | - | - |
| 指令 | `create_permissioned_pool` → `[36, 243, 179, 35, 42, 239, 53, 229]` | `create_customizable_pool_v2` → `[29, 172, 106, 188, 103, 45, 70, 100]` |

### `CreateCustomizablePoolV2` 帳戶清單

| # | 帳戶 | W | S | 備註 |
| - | - | - | - | - |
| 1 | `payer` | W | S | 為每個新帳戶支付租金。任何錢包。 |
| 2 | `pool_creator` | | | 寫入 `pool_state.owner`。不是簽署者，不進行檢查。 |
| 3 | `amm_config` | | | 池綁定的費用層級。 |
| 4 | `pool_state` | W | | 在 `seed_index` 衍生的 PDA 上 `init`。 |
| 5 | `token_mint_0` | | | 必須排序在 `token_mint_1` 之前。 |
| 6 | `token_mint_1` | | | |
| 7 | `token_vault_0` | W | | PDA `["pool_vault", pool_state, token_mint_0]`。 |
| 8 | `token_vault_1` | W | | PDA `["pool_vault", pool_state, token_mint_1]`。 |
| 9 | `observation_state` | W | | PDA `["observation", pool_state]`。 |
| 10 | `tick_array_bitmap` | W | | PDA `["pool_tick_array_bitmap_extension", pool_state]`。 |
| 11 | `token_program_0` | | | 擁有 `token_mint_0` 的程式。 |
| 12 | `token_program_1` | | | 擁有 `token_mint_1` 的程式。 |
| 13 | `system_program` | | | |
| 14 | `rent` | | | |

`remaining_accounts` 保持不變：當 Token-2022 鑄幣需要時的支援鑄幣登錄 PDA，以及當 `enable_dynamic_fee = true` 時**最後**的 `DynamicFeeConfig`。

<Warning>
  `pool_creator` 未經驗證。任何支付者都可以將任何地址寫入 `pool_state.owner`。該地址獲得在池上呼叫 `InitializeReward` 的權利，但它不能用作誰創建它的證明。不要根據 V2 池的 `owner` 欄位對其進行排名、標籤或信任。
</Warning>

### 已移除：`Permission`、`CreatePermissionPda`、`ClosePermissionPda`

* `Permission` 帳戶類型（`["permission", authority]`，280 位元組）已從程式中刪除。
* `CreatePermissionPda` 和 `ClosePermissionPda` 已刪除，以及可以簽署它們的專用 `permission_pda_admin` 金鑰也已刪除。
* 升級前創建的 Permission PDA 保留在鏈上。程式不再讀取它們，也沒有指令可以關閉它們。

## 錯誤代碼

無變更。`6000`–`6052` 保持其編號。`NotApproved`（`6000`）不再有「簽署者既不是 `admin` 也不是 `permission_pda_admin`」的情況，因為這些指令已刪除。

## 遷移說明

* **池創建者。** 從 `CreatePermissionedPool` 切換到 `CreateCustomizablePoolV2`，移除 `permission` 帳戶，並將其餘帳戶向上移動一個位置。你不再需要管理員授權。
* **索引器和路由器。** 從 `PoolCreatedEvent` 或透過掃描 `PoolState` 帳戶索引 CLMM 池，而不是衍生四種子 PDA。為任何 `seed_index` 非零的池儲存 `seed_index`，因為你需要它來重新衍生地址。預期現在會有更多非規範池，因為任何人都可以創建它們，不要假設規範池是最深的。
* **UI。** 交易對和費用層級可以有許多具有不同起始價格的池。顯示流動性和池地址，不要因為池的 `owner` 而將其呈現為官方。
* **IDL 消費者。** 移除 `Permission`、`CreatePermissionPda` 和 `ClosePermissionPda` 的任何解碼器或客戶端代碼。

## 未變更的內容

* **每個帳戶佈局**，包括 `PoolState`（`seed_index` 欄位及其偏移量相同）。
* **`CreatePool` 和 `CreateCustomizablePool`。** 它們仍然為每個交易對和層級創建單個規範池，`seed_index = [0, 0]`。
* **升級前透過 `CreatePermissionedPool` 創建的池。** 它們的地址、狀態和 `seed_index` 保持不變。
* **錯誤代碼、交換、流動性、費用、動態費用、獎勵和限價單行為。**
* **程式 ID。**

## 更新的頁面

* `products/clmm/instructions`：升級橫幅；清單和管理員閘門行；帶有新帳戶清單的 `CreateCustomizablePoolV2` 部分。
* `products/clmm/accounts`：`Permission` 從清單中移除並記錄為已停用；`seed_index` 描述；PDA 幫助程式改名為 `deriveCustomizablePoolV2`；生命週期行。
* `products/clmm/overview`：「新增功能」備註。
* `security/admin-and-multisig`：從 CLMM 表中移除 `permission_pda_admin` 角色。
* `reference/error-codes`：`NotApproved` 描述。
* `reference/token-2022-support`：CLMM 池創建路徑。
* `sdk-api/anchor-idl`：CLMM 指令計數。
* `protocol-overview/versions-and-migration`：CLMM 升級歷史項目符號。

**驗證對象**：`raydium-clmm` 分支 `feat/create-customizable-pool-v2`（`18f5db1`）：`instructions/create_customizable_pool_v2.rs`、`instructions/mod.rs`、`instructions/admin/mod.rs`、`states/mod.rs`、`states/pool.rs`、`lib.rs`，以及已刪除的 `admin/create_permission_pda.rs`、`admin/close_permission_pda.rs`、`states/permission.rs`。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.