跳轉到主要內容
本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →
本條目涵蓋計劃於 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 個帳戶完全相同,順序也相同。見帳戶清單。
  • 創作者就是簽署者。 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 的內容: 無效的標籤位元組或變體位元組會在 Anchor 的參數反序列化階段失敗。不涉及新的錯誤代碼。

三條創建路徑的比較

內部重構

三個處理程式現在共用同一個 initialize_pool 常式。此重構不會改變 Initialize 或 InitializeWithPermission 的帳戶、參數、檢查或儲存的值。新測試還會檢查在同一配置上普通的 Initialize 仍將創作者費用儲存為停用。

創作者需要了解的內容

  • 先檢查費用等級。 創作者費率屬於 AmmConfig,而不是池。請選擇一個 creator_fee_rate 正是你想收取的費率的等級。費率列於 products/cpmm/fees。
  • 這一選擇是永久性的。 創建後沒有任何指令可以更改 enable_creator_fee 或 creator_fee_on。如需更改,你必須創建一個新池。
  • 交易者在交易費之外支付它。 創作者費用是加在交換上的單獨費率。它不會減少 LP、協議或基金的份額,但確實會使該池的交易成本高於同一等級上關閉費用的池。
  • 收取方式未改變。 使用 CollectCreatorFee 或 CollectCreatorFeePermissionless。2026-09-19 版本的協議份額適用,並且你無法在創建時選擇退出。

遷移說明

  • 池創作者。 僅當你希望開啟創作者費用時,才從 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。