本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →
版本資訊。
- SDK:
@raydium-io/raydium-sdk-v2@0.2.42-alpha - 叢集:Solana
mainnet-beta - Stable AMM 程式 ID:
5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h(見reference/program-addresses) - 最後驗證:2026-04
liquidity 模組原生支援 Stable AMM 池。Stable 池在 ApiV3PoolInfoStandardItem 上顯示為 version: 5(或 pooltype: "StablePool");相同的 addLiquidity / removeLiquidity / 交換輔助函數適用於它們,就像 AMM v4(version: 4)常數乘積池一樣——SDK 會偵測變體並自動發出正確的指令。鏈下穩定曲線數學位於 src/raydium/liquidity/stable.ts。設定
識別 Stable 池
ApiV3PoolInfoStandardItem 上的兩個等效信號:
version: 4,常數乘積)和 Stable AMM(version: 5)都透過 SDK 上相同的 LiquidityModule API 流動。在內部,模組分派到:
InstructionType.AmmV4AddLiquidity/AmmV4RemoveLiquidity用於 v4 池InstructionType.AmmV5AddLiquidity/AmmV5RemoveLiquidity用於 v5(Stable)池
programId(與池金鑰一起返回)告訴 SDK 要 CPI 進入哪個程式;你不需要硬編碼它。
按代幣對查找池
透過 Stable 池交換
LiquidityModule.swap 流程的形狀與 v4 池相同——只需將 v5 池物件交給它:
programId 並分派到 Stable AMM 程式。不需要特殊的 programId 引數。
新增和移除流動性
addLiquidity 和 removeLiquidity 在 v4 和 v5 池上的工作方式相同:
InstructionType.AmmV5AddLiquidity,因為 pooltype.includes("StablePool") 為真。對應的 removeLiquidity 流程是對稱的——輸入 lpAmount 和你將接受的每一側的最小金額。
鏈下報價輔助函數(stable.ts)
對於伺服器端報價或回測,SDK 公開了底層穩定曲線數學:ModelDataInfo 由 initLayout() 取得一次並快取在 raydium.liquidity.stableLayout 中。傳遞目前儲備量(x、y),輔助函數透過二進位搜尋查詢表並在兩個相鄰 DataElement 列之間線性插值來計算。見 products/stable/math 了解底層演算法。
透過 AMM 路由進行路由(多跳 / 最佳價格)
如果你不想自己選擇場所,AMM 路由 程式將考慮每個 Raydium AMM(v4 / CPMM / CLMM / Stable)並透過最佳組合進行路由:建議
- 對於終端使用者交換,優先使用
tradeV2路由流程。它處理每個 Raydium 池類型,包括 Stable。 - 對於池特定操作(已知 Stable 池上的 LP 新增 / 移除),直接使用
LiquidityModule——它自動偵測 v5 池。 - 對於鏈下報價 / 分析,在
initLayout()後呼叫getStablePrice/getDyByDxBaseIn/getDxByDyBaseIn。模型資料快取後,每個報價無 RPC 流量。 - 不要手動編碼原始
SwapBaseIn指令。 2026-06-22 升級 移除了已棄用的 OpenBook 帳戶,所以新的交換配置採用 9 個帳戶(舊的 18 帳戶配置仍可解析以實現向後相容性)。Deposit現在是 12 個帳戶(舊的 14 個相容),Withdraw12 個(舊的 21/22 個相容),WithdrawPnl10 個,沒有相容性路徑。SDK 的預建輔助函數為你選擇正確的配置和順序;自己編寫容易出錯。見products/stable/instructions了解完整帳戶表。
接下來去哪裡
來源:raydium-sdk-V2/src/raydium/liquidity/liquidity.ts——模組入口點;v4 / v5 分派。raydium-sdk-V2/src/raydium/liquidity/stable.ts——StableLayout、getStablePrice、getDxByDyBaseIn、getDyByDxBaseIn。

