Skip to main content
本页内容由 AI 自动翻译,所有内容以英文版本为准。查看英文版 →
本条目涵盖计划于 2026-10-22 的 CLMM 程序升级。在部署前已针对 raydium-clmm 的 feat/create-customizable-pool-v2 分支(head 18f5db1)进行验证。在依赖新指令名称或账户列表之前,请确认已部署的程序。
2026-07-30 版本引入了 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 开始的每个账户都向上移动一个位置。参见新账户列表。
  • 多池创建现已无需许可。 任何支付者都可以使用非零 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 检查是唯一被移除的行为。

CreateCustomizablePoolV2 账户列表

remaining_accounts 保持不变:当 Token-2022 铸币需要时的支持铸币注册表 PDA,以及当 enable_dynamic_fee = true 时的 DynamicFeeConfig(最后)。
pool_creator 未被认证。任何支付者都可以将任何地址写入 pool_state.owner。该地址获得在池上调用 InitializeReward 的权利,但不能用作谁创建了它的证明。不要根据 V2 池的 owner 字段对其进行排名、标记或信任。

移除: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。