本页内容由 AI 自动翻译,所有内容以英文版本为准。查看英文版 →
本条目涵盖计划于 2026-10-22 的 CLMM 程序升级。在部署前已针对
raydium-clmm 的 feat/create-customizable-pool-v2 分支(head 18f5db1)进行验证。在依赖新指令名称或账户列表之前,请确认已部署的程序。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(最后)。
移除: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。
