> ## 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-30 — CPMM：InitializeV2 向所有池创建者开放创建者费用

> CPMM 新增 InitializeV2，这是一条接受可选 creator_fee_on 参数的无权限池创建指令。任何创建者现在都可以在没有 Permission PDA 的情况下启用创建者费用并选择其收取侧。Initialize、InitializeWithPermission 和所有其他指令均未改变。纯增量变更：没有账户布局、错误代码或现有账户列表改变。

> [!NOTE]
>
> **本页内容由 AI 自动翻译，所有内容以英文版本为准。**
>
> [查看英文版 →](https://docs.raydium.io/reference/changelog/2026-10-30-cpmm-initialize-v2.md)

> [!NOTE]
>
> 本条目涵盖计划于 **2026-10-30** 进行的 CPMM 程序升级。部署前已针对 `raydium-cp-swap` 的 `feat/initialize-v2` 分支（头部 `40cbd81`）进行验证。在依赖新指令之前，请确认已部署的程序。

每个 CPMM 池都有一个 `enable_creator_fee` 标志和一个 `creator_fee_on` 收取侧，两者都在创建时固定。在此之前，创建者只能通过 `InitializeWithPermission` 设置它们，而这需要管理员签发的 `Permission` PDA。公开的 `Initialize` 始终将费用存储为禁用。实际上，只有 LaunchLab 毕业和其他门控流程才能创建收取创建者费用的池。

此版本新增 **`InitializeV2`**。它就是多了一个参数 `creator_fee_on: Option<CreatorFeeOn>` 的 `Initialize`，任何人都可以调用。池数学、交换、流动性、费用收集以及创建者费用的协议份额均未改动。

## 集成者速览

* **新指令：`InitializeV2`。** 无权限。参数为 `init_amount_0`、`init_amount_1`、`open_time` 和 `creator_fee_on: Option<CreatorFeeOn>`。判别器 `[67, 153, 175, 39, 218, 16, 38, 32]`。
* **`Some(side)` 在该侧启用创建者费用；`None` 保持关闭。** `None` 存储的内容与 `Initialize` 完全相同。
* **账户与 `Initialize` 相同，但去掉了 `rent`。** 前 19 个账户完全相同，顺序也相同。见[账户列表](https://docs.raydium.io/zh/products/cpmm/instructions.md#initializev2)。
* **创建者就是签名者。** `pool_state.pool_creator` 是签名的 `creator`。与 `InitializeWithPermission` 不同，受益人不能被设置为其他地址。
* **创建者选择的是开/关和收取侧，而不是费率。** 池收取其费用等级的 `AmmConfig.creator_fee_rate`。该费率默认为 `0`，因此在这样的等级上已启用的池不会累积任何费用。
* **现有内容均未改变。** `Initialize` 和 `InitializeWithPermission` 保留其判别器、账户、参数和行为。没有账户布局或错误代码改变。
* **刷新你的 IDL** 以获取新指令。从不调用它的客户端无需任何更改。

## 程序中的变更

### 新指令：`InitializeV2`

`InitializeV2` 运行与 `Initialize` 相同的创建代码。它：

* 接受规范池 PDA 或已签名的随机密钥对作为 `pool_state`；
* 通过 `remaining_accounts` 应用相同的 Token-2022 允许列表和 `SupportMintAssociated` 检查；
* 当设置了 `amm_config.disable_create_pool` 时拒绝创建；
* 当 `open_time` 不在未来时，将其提升到 `block_timestamp + 1`；
* 锁定 100 个 LP 基础单位，并将其余部分铸造给创建者；
* 收取 `amm_config.create_pool_fee`。

唯一的区别是它写入新 `PoolState` 的内容：

| `creator_fee_on` 参数 | Borsh 字节 | `enable_creator_fee` | `creator_fee_on` |
| - | - | - | - |
| `None` | `00` | `false` | `0`（`BothToken`） |
| `Some(BothToken)` | `01 00` | `true` | `0` |
| `Some(OnlyToken0)` | `01 01` | `true` | `1` |
| `Some(OnlyToken1)` | `01 02` | `true` | `2` |

无效的标签字节或变体字节会在 Anchor 的参数反序列化阶段失败。不涉及新的错误代码。

| | 判别器 |
| - | - |
| `initialize`（未改变） | `[175, 175, 109, 31, 13, 152, 155, 237]` |
| `initialize_with_permission`（未改变） | `[63, 55, 254, 65, 49, 178, 89, 121]` |
| `initialize_v2`（新增） | `[67, 153, 175, 39, 218, 16, 38, 32]` |

### 三条创建路径的比较

| | `Initialize` | `InitializeV2` | `InitializeWithPermission` |
| - | - | - | - |
| 谁可以调用 | 任何人 | 任何人 | `Permission` PDA 持有者 |
| 创建者费用 | 始终关闭 | 由创建者选择 | 始终开启 |
| 收取侧（`creator_fee_on`） | `BothToken`（未使用） | 由创建者选择 | 由调用者选择 |
| 记录的 `pool_creator` | 签名的 `creator` | 签名的 `creator` | 单独的 `creator` 账户，非签名者 |
| 支付者 | `creator` | `creator` | 单独的 `payer` |
| 末尾的 `rent` sysvar | 有 | 无 | 无 |

### 内部重构

三个处理程序现在共享同一个 `initialize_pool` 例程。此重构不会改变 `Initialize` 或 `InitializeWithPermission` 的账户、参数、检查或存储的值。新测试还会检查在同一配置上普通的 `Initialize` 仍将创建者费用存储为禁用。

## 创建者需要了解的内容

* **先检查费用等级。** 创建者费率属于 `AmmConfig`，而不是池。请选择一个 `creator_fee_rate` 正是你想收取的费率的等级。费率列于 [`products/cpmm/fees`](https://docs.raydium.io/zh/products/cpmm/fees)。
* **这一选择是永久性的。** 创建后没有任何指令可以更改 `enable_creator_fee` 或 `creator_fee_on`。如需更改，你必须创建一个新池。
* **交易者在交易费之外支付它。** 创建者费用是添加到交换上的单独费率。它不会减少 LP、协议或基金的份额，但确实会使该池的交易成本高于同一等级上关闭费用的池。
* **收集方式未改变。** 使用 `CollectCreatorFee` 或 `CollectCreatorFeePermissionless`。[2026-09-19 版本](https://docs.raydium.io/zh/reference/changelog/2026-09-19-cpmm-creator-fee-protocol-share.md)的协议份额适用，并且你无法在创建时选择退出。

## 迁移说明

* **池创建者。** 仅当你希望开启创建者费用时，才从 `Initialize` 切换到 `InitializeV2`。传递 `Some(side)` 并去掉 `rent` 账户。`Initialize` 仍然可用。
* **SDK 用户。** `@raydium-io/raydium-sdk-v2@0.2.64-alpha` 中的 `raydium.cpmm.createPool` 构建的是 `Initialize`。在某个版本提供 `InitializeV2` 构建器之前，请根据刷新后的 IDL 对其进行编码。
* **索引器和路由器。** 预计会有更多 `enable_creator_fee = true` 的池，由普通钱包而非 LaunchLab 创建。始终根据每个池自身的 `enable_creator_fee` 和 `creator_fee_on` 报价，而不要仅根据创建路径或等级。如果你通过指令跟踪池创建，请解码新指令。通过 `PoolState` 账户跟踪则无需更改。
* **UI。** 显示池是否收取创建者费用以及费率，因为同一等级上的两个池现在可能不同。
* **LaunchLab 和其他需要权限的流程。** 无变化。当支付者和记录的创建者必须不同时，`InitializeWithPermission` 仍然是应使用的路径。

## 未改变的内容

* **每个账户布局**，包括 `PoolState` 和 `AmmConfig`。
* **`Initialize` 和 `InitializeWithPermission`**：判别器、账户、参数和存储的值。
* **`Permission`、`CreatePermissionPda` 和 `ClosePermissionPda`。**
* **交换、存款和提取数学**、创建者费用的收取，以及创建者费用的协议份额。
* **错误代码。** `6000`–`6015` 未改变；没有追加任何内容。
* **程序 ID。**

## 更新的页面

* `products/cpmm/instructions`：升级横幅；概览和状态变化矩阵行；包含参数、编码和账户列表的新 `InitializeV2` 部分；`Initialize` 后置条件现在指向 `InitializeV2`。
* `products/cpmm/fees`："创建者费"部分列出全部三条创建路径，并注明启用费用不会设置其费率。
* `products/cpmm/accounts`：`poolState` 和池 ID 说明；`creator_fee_on` / `enable_creator_fee` 字段说明；`Permission` 说明；账户生命周期行。
* `products/cpmm/overview`："新功能"提示框和"可预测的费用"要点。
* `products/cpmm/code-demos`：说明 `createPool` 构建的是 `Initialize`，以及如何使用 `InitializeV2`。
* `protocol-overview/shared-infrastructure`：创建者费用不再仅限于 LaunchLab 毕业的池。
* `reference/token-2022-support`：CPMM 池创建路径。

**验证对象**：`raydium-cp-swap` 分支 `feat/initialize-v2`（`40cbd81`）：`programs/cp-swap/src/lib.rs`、`instructions/initialize_v2.rs`、`instructions/initialize.rs`、`instructions/initialize_with_permission.rs`、`instructions/mod.rs`、`states/pool.rs`，以及 `tests/initialize_v2.test.ts`。


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