本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →
版本標記。 所有示例針對
@raydium-io/raydium-sdk-v2@0.2.64-alpha 在 Solana mainnet-beta 上執行,驗證時間 2026-09-09 — 下方每個建構者名稱、參數名稱和參數類型都已針對該版本的原始碼和 raydium-sdk-V2-demo/src/amm 進行驗證。程式 ID:675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8(見 reference/program-addresses)。最常見的兩個陷阱:computeAmountOut 的 slippage 是純數字(0.005 = 0.5%),不是 Percent;而 liquidity.swap 必須將 inputMint 作為 base58 字串。本處未展示新池建立。 Raydium UI 不再提供 AMM v4 池建立 — 新交易對預設為 CPMM。AMM v4 程式本身仍接受鏈上
Initialize2;只是不再是推薦路徑。下方示例涵蓋每個整合者仍需的即時池操作:交換、存入、提取。設定
按 ID 取得池
poolKeys 是指令建構者使用的結構。它按程式預期的順序攜帶每個 AMM v4 帳戶,加上當前程式按位置接受但不再讀取的舊版市場欄位。
交換(固定輸入)
交換(固定輸出)
新增流動性
fixedSide: "a" 告訴 SDK 你提供了確切的 amountInA,而 amountInB 應最多為 maxAnotherAmount。按比例數學基於金庫餘額減去累積 PnL 執行 — 不再有任何帳面上的組成部分需要先結算。
移除流動性
計算單位 / 優先費用調整
自 OpenBook 移除後,AMM v4 交換不再驗證任何市場狀態,因此 V1SwapBaseIn 比以前便宜得多 — 而 SwapBaseInV2(8 個帳戶,無市場佔位符)更便宜。根據你自己的路徑進行測量,而不是根據歷史數據進行預算,並始終傳遞明確的計算單位限制:
computeBudgetConfig,SDK 仍可能使用自己的預設值;檢查返回的 transaction 以確認。見 integration-guides/priority-fee-tuning。
直接 Rust CPI
如果你必須從自己的 Anchor 程式 CPI 進入 AMM v4,你需要逐字模型化SwapBaseIn 的帳戶列表。最小草圖:
Instruction。
上方 CPI 草圖使用舊版 v1
SwapBaseIn 佈局(標籤 9,17 個帳戶)用於讀取/重現現有交易。自 2026-07 升級後,市場帳戶被接受但被忽略。對於新程式碼,優先使用 SwapBaseInV2 / SwapBaseOutV2(標籤 16 / 17),它們完全移除市場帳戶(和 amm_open_orders)— 僅傳遞 8 個帳戶:token_program、amm、amm_authority、兩個池金庫、兩個使用者代幣帳戶和 user_owner。陷阱
- v1 交換上的帳戶計數錯誤。 舊版
SwapBaseIn/SwapBaseOut仍需要完整的 17 帳戶(或 18 帳戶)列表 — 不匹配的計數會以WrongAccountsNumber回復。市場帳戶的內容不再被驗證,但你仍必須佔據它們的位置。優先使用 V2 進入點以避免此問題。 - 讀取原始金庫餘額。 準備金現在僅限金庫;減去累積 PnL(
need_take_pnl_*)。SDK 報價或api-v3.raydium.io/pools/info/ids為你處理此問題。 - 呼叫已移除的指令。
MonitorStep、MigrateToOpenBook、WithdrawSrm、SimulateInfo、AdminCancelOrders和舊版Initialize/PreInitialize現在會回復。使用Initialize2進行池建立;沒有要呼叫的 crank。 - Token-2022 mint。 不支援。無法針對 Token-2022 mint 建立 AMM v4 池;任何 Token-2022 交易對應在 CPMM 或 CLMM 上。
後續步驟
products/amm-v4/instructions— 這些示例背後的指令級介面。user-flows/migrate-amm-v4-to-cpmm— 如果你是考慮遷移的 LP。integration-guides/priority-fee-tuning— 大量 AMM v4 交換的優先費用調整。

