> ## 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-08-17 — CPMM：无权限创建者费用收集

> CPMM 添加了一条目标受限指令，允许任何支付者将创建者费用扫入池创建者的规范 ATA，并委托 Permission PDA 创建而不委托撤销权。

<Info>
  **本页内容由 AI 自动翻译，所有内容以英文版本为准。**

  [查看英文版 →](/reference/changelog/2026-08-17-cpmm-permissionless-creator-fee-collection)
</Info>

<Info>
  这是一份关于即将推出的 CPMM 程序更新的文档变更日志条目。如需查看所有更新的索引，请参阅 [`reference/changelog`](/zh/reference/changelog)。如需了解协议本身的历史时间线，请参阅 [`introduction/history-and-milestones`](/zh/introduction/history-and-milestones)。
</Info>

本版本为创建者费用收集添加了一条无权限的操作路径。任何人都可以支付以触发扫描，但程序将接收者所有者固定为 `PoolState.pool_creator`，并将两个目标都固定为该创建者的规范关联代币账户。现有的创建者签名指令保持不变。

它还允许专门的权限创建 CPMM `Permission` PDA。该委托是有意不对称的：专门的权限可以授予 `InitializeWithPermission` 的访问权限，而只有程序管理员可以通过 `ClosePermissionPda` 撤销授权。

## 集成者速览

* **新增指令：`CollectCreatorFeePermissionless`。** 任何签名者都可以是 `payer`。记录的池创建者不需要签名。
* **调用者无法重定向资金。** `creator` 必须等于 `pool_state.pool_creator`。`creator_token_0` 和 `creator_token_1` 必须是该创建者对应池保险库铸币及其各自代币程序的规范 ATA。
* **支付者覆盖缺失的 ATA。** 两个接收者账户都使用 `init_if_needed`；当任一账户不存在时，支付者为租金提供资金。
* **收集是全有或全无的。** 该指令转移两个完整的应计创建者费用计数器，将两者都清零，并更新 `recent_epoch`。当两个计数器都为零时，它返回现有的 `NoFeeCollect` 错误。
* **现有集成保持兼容。** `CollectCreatorFee` 未被修改或删除。不存在 `PoolState`、`AmmConfig`、`Permission`、事件或错误代码布局的更改。
* **Permission 创建有第二个所有者。** `CreatePermissionPda` 接受程序管理员或专门的创建权限 PDA 所有者。`ClosePermissionPda` 仍然仅限管理员。

## 新指令账户

`CollectCreatorFeePermissionless` 按此顺序接受 14 个账户：

| #     | 账户                                   | 约束或角色                               |
| ----- | ------------------------------------ | ----------------------------------- |
| 1     | `payer`                              | 可写签名者；为缺失的创建者 ATA 提供资金。             |
| 2     | `creator`                            | 必须等于 `pool_state.pool_creator`；不签名。 |
| 3     | `authority`                          | CPMM 全局保险库权限 PDA。                   |
| 4     | `pool_state`                         | 可写；持有创建者费用计数器。                      |
| 5–6   | `token_0_vault`, `token_1_vault`     | 可写；必须与池中存储的保险库匹配。                   |
| 7–8   | `vault_0_mint`, `vault_1_mint`       | 必须与对应的保险库铸币匹配。                      |
| 9–10  | `creator_token_0`, `creator_token_1` | 可写规范创建者 ATA；如需要则初始化。                |
| 11–12 | `token_0_program`, `token_1_program` | 每个铸币的 SPL Token 或 Token-2022。       |
| 13    | `associated_token_program`           | 创建缺失的创建者 ATA。                       |
| 14    | `system_program`                     | 支持支付者资助的账户创建。                       |

与 `CollectCreatorFee` 不同，新布局有单独的 `payer` 和非签名 `creator` 账户，不接受 `amm_config`。因此它需要自己的判别器和构建器。

## SDK 和 IDL 影响

程序源分支不包括已提交的 SDK 或 IDL 更新。集成者必须刷新已部署的 CPMM IDL 或使用明确支持 `CollectCreatorFeePermissionless` 的客户端版本。文档中固定的 `@raydium-io/raydium-sdk-v2@0.2.42-alpha` 构建器集仅涵盖原始创建者签名路径。

## 安全边界

无权限调用并不意味着无权限保管。调用者可以选择何时收集，并可以花费 SOL 来创建缺失的创建者 ATA。调用者无法选择受益人、替换任意代币账户、请求部分金额或更改池的创建者费用配置。

新的权限 PDA 创建者角色可以为任何 `permission_authority` 创建授权，并为新账户支付租金。在此更改下，它无法关闭该 PDA。将其视为委托授权权限，而不是完整的权限管理员。

## 迁移说明

* 保持现有 `CollectCreatorFee` 交易不变。
* 仅在目标 CPMM 部署和客户端 IDL 包含该指令后添加无权限指令。
* 自动化可以扫描具有非零 `creator_fees_token_0` 或 `creator_fees_token_1` 的池，并在不持有创建者密钥的情况下触发收集。
* 当另一个调用者先清空计数器时，将 `NoFeeCollect` 作为良性竞态处理。
* 不要传递任意接收者代币账户；从 `pool_state.pool_creator`、每个保险库铸币和匹配的代币程序派生创建者 ATA。

## 更新的页面

* `products/cpmm/overview` — 创建者费用收集更新和目标安全摘要。
* `products/cpmm/instructions` — 新指令摘要、完整账户列表、效果和状态变化矩阵。
* `products/cpmm/accounts` — 创建者费用计数器收集路径和委托 Permission PDA 创建。
* `products/cpmm/fees` — 无权限收集机制和操作流程。
* `products/cpmm/code-demos` — SDK 可用性警告和客户端迁移边界。
* `products/launchlab/platform-config` — 澄清即使另一个支付者触发收集，记录的 CPMM 创建者仍然是受益人。
* `protocol-overview/shared-infrastructure` — 权限门控和目标受限的收集路径。
* `security/admin-and-multisig` — 委托授权权限和无权限收集器边界。
* `reference/program-addresses` — 规范专门的 `CreatePermissionPda` 所有者地址。
* `reference/error-codes` — 扩展 `NoFeeCollect` 以涵盖创建者费用收集。

**验证于 2026-08-13 对比**：

* [`raydium-cp-swap` 分支 `feat/permissionless-collect-creator-fee`](https://github.com/raydium-io/raydium-cp-swap/tree/feat/permissionless-collect-creator-fee)。
* 提交 [`9585ea1`](https://github.com/raydium-io/raydium-cp-swap/commit/9585ea1efeb27be7be7eab1ebc033449f9c793b4) 和 [`d99d542`](https://github.com/raydium-io/raydium-cp-swap/commit/d99d5420c65b973af05d4efa009a2a9d060461f9)，与 `master` 在 [`78f254e`](https://github.com/raydium-io/raydium-cp-swap/commit/78f254e1023751e706df7dc15c453fc3e046697c) 的对比。

<Warning>
  此验证涵盖源分支，而非 mainnet-beta 部署。在生产环境中启用新路径之前，请确认已部署的程序和已发布的 IDL。
</Warning>
