> ## 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/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-account-list)。
* **多池创建现已无需许可。** 任何支付者都可以使用非零 `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.