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。