本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →
這個流程做什麼。 在你選擇的費用級別建立新的 CLMM 池,然後開啟初始集中頭寸。跨越四個檔案的兩筆交易 —
config.ts、createPool.ts、createPosition.ts 和 utils.ts — 使用 npx tsx 執行。程式碼取自官方示例 raydium-sdk-V2-demo/src/clmm,並改編為獨立執行。設定
確保你已閱讀 快速開始先決條件,並已安裝RPC_URL、KEYPAIR 和相關依賴。
除了快速開始中的依賴外,你還需要:
decimal.js—createPool.ts和createPosition.ts中的價格和 tick 數學運算。bs58— 如果使用KEYPAIR_BS58而非 JSON 金鑰檔案,在config.ts中解碼 base58 編碼的金鑰對。tsx— 直接透過npx tsx執行下面的.ts檔案;不同於交換和 CPMM 指令碼,這個不是用node執行的純.mjs檔案。
config.ts 中將 cluster 改為 "devnet" 本身還不夠。createPool.ts 傳遞明確的 programId: CLMM_PROGRAM_ID,這是不遵循 cluster 的固定主網常數 — 將其替換為上方註解的 DEVNET_PROGRAM_ID.CLMM_PROGRAM_ID 行。createPosition.ts 也硬編碼了主網 poolId(RAY-USDC 池);將其替換為你在步驟 2 建立的 devnet 池的 ID。
步驟 1 — config.ts
另存為 config.ts。這與示例倉庫的 src/config.ts.template 形狀相同 — disableFeatureCheck 被強制設為 true(建議用於任何非平凡的整合,以便 SDK 不會在啟動功能檢測呼叫上阻塞):
config.ts
步驟 2 — createPool.ts
與 config.ts 一起保存。來源:src/clmm/createPool.ts。
createPool.ts
步驟 3 — createPosition.ts
來源:src/clmm/createPosition.ts。
createPosition.ts
步驟 4 — utils.ts
來源:src/clmm/utils.ts。
utils.ts
執行
剛才發生了什麼
交易 1 —raydium.clmm.createPool 初始化:
- 池狀態在
(mint1, mint2, ammConfig)的規範 PDA, token_0_vault和token_1_vault(按 mint 位元組順序排序),observation環形緩衝區,- 內聯 tick 陣列位圖,
initialPrice 設定初始 sqrt_price_x64。
交易 2 — raydium.clmm.openPositionFromBase 開啟集中頭寸:
- 向你的錢包鑄造頭寸 NFT(NFT 就是頭寸;轉移它就轉移了頭寸),
- 在下限和上限分配 tick 陣列(如果是這些範圍內的第一個頭寸,則為一次性租金;tick 陣列永遠不會被程式關閉,所以同一陣列中的後續頭寸不需支付額外租金),
- 存入
inputAmount的mint1和匹配的mint2金額(由PoolUtils.getLiquidityAmountOutFromAmountIn計算), - 根據範圍寬度向頭寸記入流動性。
[0.000001, 100000])實際上是全範圍;縮小它以在當前現貨附近集中費用。
選擇費用級別
clmmConfigs[0] 是最低費用級別。完整集合發佈在 GET https://api-v3.raydium.io/main/clmm-config:
查看
user-flows/choosing-a-pool-type 以獲得完整決策矩陣。
常見錯誤
Pool already exists for this config— 此(mint1, mint2, ammConfig)三元組已存在 CLMM 池。查找現有池 ID 並跳過步驟 2。Insufficient funds for amount B— 你的錢包有請求的mintA金額,但沒有匹配的mintB。當價格位於範圍內時開啟頭寸需要雙邊流動性。Tick out of range— 你的lowerPrice或upperPrice超出可表示的價格範圍。相對於當前價格使用更合理的範圍。- 過時價格 — API 的報價可能延遲 5–60 秒。如果
executePosition因滑點失敗,取消註解createPosition.ts中的getRpcClmmPoolInfo區塊,在簽署前重新獲取即時價格。
注意事項
- 頭寸 NFT 是你唯一的控制權。 丟失 NFT 或轉移它,就失去了對頭寸的訪問權。把它當作鑰匙對待。
- 超出範圍的頭寸不賺取費用。 如果價格移出
[lowerPrice, upperPrice],你的頭寸完全停泊在一項資產中,直到你重新平衡才能賺取任何費用。 - Tick 陣列租金是單向的。 第一個接觸從未初始化的 tick 陣列的頭寸支付其租金;程式不公開關閉 tick 陣列的路徑,所以該租金是永久的。同一陣列中的後續頭寸是免費的。
下一步
products/clmm/overview— 完整 CLMM 機制。products/clmm/ticks-and-positions— tick 背後的數學。algorithms/impermanent-loss— 量化 CLMM IL 放大。user-flows/create-clmm-pool— 透過 Raydium UI 的相同流程。

