Skip to main content
本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →
版本說明。 所有示例針對 @raydium-io/raydium-sdk-v2@0.2.42-alpha,在 Solana mainnet-beta 上驗證,時間為 2026-04。程式 ID:675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8(見 reference/program-addresses)。
本處未展示新池建立。 Raydium UI 不再提供 AMM v4 池建立 — 新交易對預設為 CPMM。AMM v4 程式本身仍接受鏈上 Initialize2;只是不是推薦的路徑。下面的示例涵蓋每個整合者仍需的即時池操作:交換、存入、提取。

設定

按 ID 取得池

poolKeys 是指令建構器使用的結構。它按程式預期的順序包含每個 AMM v4 和 OpenBook 帳戶。

交換(基礎輸入)

SDK 透過 V2 進入點路由 AMM v4 交換,這些進入點不包含 OpenBook 帳戶。(在 2026-07 升級後,市場帳戶即使在舊版 v1 路徑上也不再被驗證。)

交換(基礎輸出)

增加流動性

fixedSide: "a" 告訴 SDK 你提供了確切的 amountInA,而 amountInB 應最多為 maxAnotherAmount。池的帳面流動性在按比例計算前結算,因此存入比率與最新儲備相符。

移除流動性

滑點最小值保護池狀態在你的預報價和著陸時間之間變化。

計算單位 / 優先費用調整

AMM v4 交換在計算上很繁重,因為每條指令都驗證完整的 OpenBook 狀態。典型交換使用 180k–250k CU,取決於需要在過程中結算多少開放訂單。始終傳遞計算單位限制:
如果你省略 computeBudgetConfig,SDK 仍可能使用自己的預設值;檢查 innerTransactions 以確認。見 integration-guides/priority-fee-tuning

直接 Rust CPI

如果你必須從自己的 Anchor 程式 CPI 進入 AMM v4,你需要逐字模擬 SwapBaseIn 的帳戶列表。最小草圖:
AMM v4 不提供用於 CPI 的 Anchor crate。上面的草圖使用手動構造的 Instruction
上面的 CPI 草圖使用舊版 v1 SwapBaseIn 佈局(標籤 9,17 個帳戶)用於讀取/重現現有交易。自 2026-07 升級以來,市場帳戶被接受但被忽略。對於新程式碼,優先使用 SwapBaseInV2 / SwapBaseOutV2(標籤 16 / 17),它們完全刪除市場帳戶(和 amm_open_orders)— 僅傳遞 8 個帳戶:token_programammamm_authority、兩個池保管庫、兩個使用者代幣帳戶和 user_owner

陷阱

  • v1 交換上的帳戶計數錯誤。 舊版 SwapBaseIn / SwapBaseOut 仍需要完整的 17 帳戶(或 18 帳戶)列表 — 不匹配的計數會以 WrongAccountsNumber 回復。市場帳戶的內容不再被驗證,但你仍必須佔據它們的位置。優先使用 V2 進入點以避免這種情況。
  • 讀取原始保管庫餘額。 儲備現在僅限保管庫;減去應計 PnL(need_take_pnl_*)。SDK 報價或 api-v3.raydium.io/pools/info/ids 為你處理此問題。
  • 呼叫已移除的指令。 MonitorStepMigrateToOpenBookWithdrawSrmSimulateInfoAdminCancelOrders 和舊版 Initialize / PreInitialize 現在會回復。使用 Initialize2 進行池建立;沒有要呼叫的 crank。
  • Token-2022 mints。 不支援。AMM v4 池無法針對 Token-2022 mint 建立;任何 Token-2022 交易對應在 CPMM 或 CLMM 上。

接下來去哪裡

來源: