Skip to main content
本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →

版本資訊

  • SDK: @raydium-io/raydium-sdk-v2@0.2.42-alpha
  • 網路: mainnet-beta
  • 路由程式 ID: routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS
  • 驗證時間: 2026 年 4 月

範例 1:基於 SDK 的路由

來源:src/trade/routeSwap.ts Raydium SDK 會自動處理路由構建。使用 SDK 的交易函式來組合多跳路由,並自動通過路由器執行。

設定

建構多跳交換

@raydium-io/raydium-sdk-v2 中的路由功能在 raydium.tradeV2 上公開。下面展示完整的流程——獲取流動性池資料、計算路由、按輸出量排名以及建構交換交易——這與 raydium-sdk-V2-demo/src/trade/routeSwap.ts 中的規範範例相符。

預期行為

SDK 會處理:
  • 跨 AMM v4、CPMM、CLMM 和穩定 AMM 的路由探索。
  • 帳戶派生(流動性池狀態、資金庫、觀察帳戶、ATA 預建立)。
  • 路由為多跳時的指令打包(給路由程式 Router 使用),或單一流動性池已提供最佳價格時的直接交換。
  • 透過 getAllRouteComputeAmountOut 上的 slippage 參數實施滑點保護。
raydium.tradeV2.swap 可能會傳回一個以上的 transaction——第一個通常會初始化中間 ATA,第二個會執行交換。務必向 execute() 傳遞 sequentially: true 以確保它們按順序確認。

範例 2:原始指令建構(Rust 式虛擬碼)

如果你需要更細緻的控制,或正在建構一個 CPI 到路由器的程式,可以手動建構指令。下面的範例使用 標籤 8(SwapBaseIn——推薦的當前變體——並通過使用者所有的 ATA 端到端路由。

場景:USDC → SOL(CPMM)→ mSOL(CPMM)

步驟 1:派生使用者的 ATA

步驟 2:為每個跳蒐集帳戶

跳 1 是 CPMM 上的 USDC/SOL。跳 2 是 CPMM 上的 SOL/mSOL。

步驟 3:建構指令

步驟 4:發送交易


範例 3:錯誤處理

常見的錯誤及其恢復方式:

ExceededSlippage

輸出小於 minimum_amount_out。使用更高的滑點容限重試或重新報價路由。

SqrtPriceX64(CLMM)

CLMM 跳的價格偏離了 limit_prices 邊界。更新邊界並重試。

InvalidOwner

中間或輸出 ATA 不由呼叫者擁有。路由器會在每個時段驗證所有權;確保你傳遞的每個 ATA 都是從使用者的錢包派生的(而不是從任何其他授權派生的)。

提示和最佳實踐

預建立中間 ATA

在第一次通過新的中間令牌進行路由前,建立使用者的 ATA,以便路由不會因驗證而失敗:
對於 wSOL 特別地,優先使用 CreateSyncNative(標籤 5)——它建立 ATA、轉移 SOL 並在一個指令中同步。

執行前報價

總是在建構指令前查詢流動性池並計算預期輸出:

使用較新的指令變體(8–9)

標籤 8 和 9(SwapBaseInSwapBaseOut)對 limit_prices 更寬容。如果你不需要 CLMM 價格驗證,優先於舊變體使用它們。

後續步驟

來源: