本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →
整合者速覽
- 限價單現在是一級 CLMM 原語。流動性提供者可以在支援限價單的流動性池上開設單一 tick 訂單;當交換穿過該 tick 時,訂單按 FIFO 順序成交,離線守護者(
limit_order_admin)可以結算已成交的輸出,無需所有者在線。七個新 SDK 方法(openLimitOrder、increaseLimitOrder、decreaseLimitOrder、settleLimitOrder、closeLimitOrder、closeAllLimitOrder、settleAllLimitOrder)和三個新 Temp API 端點(位於/limit-order/下)涵蓋完整流程。 - **單邊費用(
CollectFeeOn)**讓流動性池可以從輸入側收取交換費用(舊版,模式0)、始終從token_0收取(模式1)、或始終從token_1收取(模式2)。當交易對的一側是規範會計代幣時很有用。 - 動態費用讓流動性池可選加入波動率追蹤附加費,隨著快速 tick 移動而上升,並隨時間衰減,由每層
DynamicFeeConfig和每個流動性池DynamicFeeInfo校準。新的/main/clmm-dynamic-config端點公開層級列表。 - 新指令
CreateCustomizablePool在流動性池建立時公開所有三個旋鈕。經典CreatePool繼續用於預設費用、無限價單流動性池。 - 索引器破壞性變更:
PoolState上的按方向成交量計數器(swap_in_amount_token_{0,1}、swap_out_amount_token_{0,1})和終身費用計數器(total_fees_token_{0,1}、total_fees_claimed_token_{0,1})已退役至填充區,為fee_on和dynamic_fee_info騰出空間。直接讀取這些欄位的索引器必須遷移到鏈上Observation環或 API。
為什麼這很重要(對交易者、流動性提供者和整合者)
- 交易者在長尾和事件驅動交易對上獲得更緊密的報價:動態費用讓流動性池從接收者吸收波動率附加費,無需流動性提供者主動擴大範圍,限價單階梯在特定價格加深鏈上流動性,無需承諾全範圍資本。
- 流動性提供者獲得第三種策略,與集中範圍和全範圍頭寸並列:停泊精確價格訂單,在價格到訪時成交,結算為報價代幣。已成交部分無需主動重新平衡。
- 整合者可以確定性地建模動態費用流動性池——演算法和參數完全在鏈上,校準層級可查詢,交換路徑形狀不變(僅每步費用變化)。
程式中的變更
新帳戶
DynamicFeeConfig——每層校準記錄(篩選週期、衰減週期、縮減因子、動態費用控制、最大波動率累加器)。由CreateDynamicFeeConfig(管理員)建立,在啟用動態費用時由CreateCustomizablePool參考。LimitOrderState——每個訂單帳戶(PDA 種子:[owner, limit_order_nonce, order_nonce])持有流動性池、tick、邊、輸入金額、未成交比率、FIFO 隊列階段和簿記快照。生命週期是隱式的(filled_amountvstotal_amount,加上帳戶存在):Open → Filled → Settled → Closed。LimitOrderNonce——每個(所有者、nonce_index)單調遞增計數器,取得限價單 PDA 種子。nonce_index: u8讓同一所有者將訂單分割為最多 256 個獨立 nonce 流。
PoolState 重構
| 欄位組 | 舊佈局 | 新佈局 |
|---|---|---|
| 按方向成交量計數器 | swap_in_amount_token_0、swap_out_amount_token_0、swap_in_amount_token_1、swap_out_amount_token_1 | 折疊至 padding5: [u128; 4] |
| 終身費用計數器 | total_fees_token_0、total_fees_claimed_token_0、total_fees_token_1、total_fees_claimed_token_1 | 折疊至 padding6: [u64; 4] |
| 單邊費用 | — | fee_on: u8(0 = FromInput、1 = Token0Only、2 = Token1Only) |
| 動態費用 | — | dynamic_fee_info: DynamicFeeInfo(嵌入) |
PoolState 切換至 Observation 環或 API。已退役的計數器在現有流動性池上未清零(它們持有最後碰巧攜帶的任何內容),因此升級後重新讀取它們將返回過時資料。
TickState 新增(無破壞性變更)
四個新欄位添加在 TickState 末尾,替換其部分尾部填充:
order_phase: u64——計數器,消除此 tick 處限價單隊列的歧義。orders_amount: u64——此 tick 處所有開放訂單承諾的總輸入(並非全部完全未成交)。part_filled_orders_remaining: u64——目前被交換消費的隊列中仍未成交的輸入。unfilled_ratio_x64: u128——Q64.64 比率,用於計算每個訂單的成交份額。
新指令
CreateDynamicFeeConfig(管理員)——建立校準的DynamicFeeConfig層級。權限:與CreateAmmConfig相同的財務多簽。UpdateDynamicFeeConfig(管理員)——更新現有層級的參數。CreateCustomizablePool——流動性池建立進入點,公開collect_fee_on、enable_dynamic_fee和dynamic_fee_config。與CreatePool共存;我們建議任何需要新旋鈕的新流動性池使用CreateCustomizablePool。OpenLimitOrder——開設單一 tick 限價單。碰撞LimitOrderNonce,分配LimitOrderState,將訂單插入 tick 處的 FIFO 隊列。IncreaseLimitOrder/DecreaseLimitOrder——調整訂單的未成交部分。在完全成交的訂單上以InvalidOrderPhase還原。SettleLimitOrder——掃除已成交輸出至所有者的 ATA。呼叫者可以是所有者或流動性池的limit_order_admin守護者。CloseLimitOrder——關閉完全結算的訂單以回收租金。
SwapV2 行為變更
交換路徑本身形狀不變,但沿途現在發生三件事:
- 動態費用(啟用時):流動性池的
DynamicFeeInfo在每步更新(衰減 → 累積 → 上限),產生的附加費添加在該步的基本費用之上。 - 限價單匹配(當步驟穿過具有開放訂單的初始化 tick 時):交換輸入的一部分被 FIFO 消費以填充該 tick 處的隊列,
unfilled_ratio_x64原子更新。 - 單邊費用路由(當
fee_on != 0時):費用從token_0或token_1取得,無論交換方向如何,而不是始終從輸入側取得。
新錯誤代碼
此版本中ErrorCode 列舉被重新編號:五個舊版變體(LOK、ZeroMintAmount、InvalidLiquidity、TransactionTooOld、InvalidRewardDesiredAmount)被移除,十一個新變體被附加。因為 Anchor 從 6000 開始按列舉順序編號錯誤,移除位置處或之後的每個錯誤代碼都已移位——硬編碼數字代碼的用戶端需要重新對應。
新代碼為:
6040OrderAlreadyFilled6041InvalidOrderPhase6042InvalidLimitOrderAmount6043OrderPhaseSaturated6044InvalidDynamicFeeConfigParams6045InvalidFeeOn6046ZeroSqrtPrice6047ZeroLiquidity6048MissingBaseFlag6049MissingMintAccount6050MissingTokenProgram2022
SDK 中的變更(@raydium-io/raydium-sdk-v2)
raydium.clmm上的新方法:createCustomizablePool、openLimitOrder、increaseLimitOrder、decreaseLimitOrder、settleLimitOrder、settleAllLimitOrder、closeLimitOrder、closeAllLimitOrder。raydium.api上的新 REST 輔助程式:getClmmDynamicConfigs、getClmmLimitOrderConfigs。- 新型別:
CollectFeeOn列舉、DynamicFeeConfig、DynamicFeeInfo、LimitOrderState、LimitOrderConfig。 - 內部重組:
utils/移至libraries/。套件桶不變;僅@raydium-io/raydium-sdk-v2/utils/...下的深層匯入需更新至…/libraries/...。
products/clmm/code-demos。
API 中的變更
api-v3——/main/下的兩個新端點:GET /main/clmm-dynamic-config——DynamicFeeConfig層級列表。GET /main/clmm-limit-order-config——每個流動性池的限價單設定。
temp-api-v1——/limit-order/下的三個新端點:GET /limit-order/order/list?wallet=…——錢包目前停泊的訂單(開放和部分成交,從索引器的 Redis 快取提供;相同負載透過totalAmount/filledAmount/pendingSettle涵蓋兩個階段)。GET /limit-order/history/order/list-by-user?wallet=…——錢包的歷史限價單。可選篩選:poolId、mint1、mint2、hideCancel。透過nextPageId/size(最多 100)游標分頁。GET /limit-order/history/event/list-by-pda?pda=…——每個 PDA 事件日誌(open/increase/decrease/settle/close),用於一個或多個逗號分隔的限價單 PDA。透過nextPageId/size(最多 100)游標分頁。
權限表面
limit_order_admin 是離線操作守護者,不是多簽。它只能在現有訂單上呼叫 SettleLimitOrder 和 CloseLimitOrder,結算的輸出始終進入所有者的 ATA。它無法變更流動性池欄位、開設或修改訂單,或為任何其他事項簽名。見管理員金鑰和多簽 → CLMM。
更新的頁面
products/clmm/overview——新「最新消息」部分和更新的後續步驟指標。products/clmm/accounts——三個新帳戶、PoolState重構與遷移警告、TickState新增、新 PDA 輔助程式。products/clmm/instructions——七個新指令、SwapV2行為附錄、更新的狀態變更矩陣。products/clmm/fees——單邊費用部分、動態費用部分與參數表。products/clmm/math——限價單匹配虛擬代碼、動態費用推導。products/clmm/code-demos——createCustomizablePool演示、完整限價單逐步解說、新陷阱。algorithms/clmm-math——多 tick 交換迴圈中限價單匹配和動態費用的交叉參考。sdk-api/typescript-sdk——CLMM 模組新增部分、utils/→libraries/遷移注記。api-reference/openapi/api-v3.yaml——兩個新端點與回應架構。api-reference/openapi/temp-api-v1.yaml——三個新限價單端點(/limit-order/order/list、/limit-order/history/order/list-by-user、/limit-order/history/event/list-by-pda)與其請求和回應架構。api-reference/api-v3/overview——新 CLMM 設定端點的注記。api-reference/temp-api-v1/overview——新活躍訂單、按使用者歷史和按 PDA 事件端點的注記。reference/error-codes——十一個新 CLMM 錯誤代碼(6040–6050)加上五個移除的舊版代碼;移除點之後的數字代碼已移位。security/admin-and-multisig——新DynamicFeeConfig管理員列和limit_order_admin守護者列,含有界權限說明。
raydium-clmm原始碼。@raydium-io/raydium-sdk-v2原始碼。api-v3和temp-api-v1原始碼。

