本頁內容由 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 帳戶。
交換(基礎輸入)
交換(基礎輸出)
增加流動性
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 的帳戶列表。最小草圖:
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 mints。 不支援。AMM v4 池無法針對 Token-2022 mint 建立;任何 Token-2022 交易對應在 CPMM 或 CLMM 上。
接下來去哪裡
products/amm-v4/instructions— 這些示例背後的指令級表面。user-flows/migrate-amm-v4-to-cpmm— 如果你是考慮遷移的 LP。integration-guides/priority-fee-tuning— 繁重 AMM v4 交換的優先費用調整。

