Documentation Index
Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
Use this file to discover all available pages before exploring further.
本頁內容由 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,以便路由不會因驗證而失敗:CreateSyncNative(標籤 5)——它建立 ATA、轉移 SOL 並在一個指令中同步。
執行前報價
總是在建構指令前查詢流動性池並計算預期輸出:使用較新的指令變體(8–9)
標籤 8 和 9(SwapBaseIn 和 SwapBaseOut)對 limit_prices 更寬容。如果你不需要 CLMM 價格驗證,優先於舊變體使用它們。
後續步驟
products/routing/instructions——完整的指令參考。products/routing/accounts——帳戶派生詳情。products/cpmm/code-demos——CPMM 交換範例以供比較。reference/program-addresses——規範的程式 ID 和 devnet 位址。
@raydium-io/raydium-sdk-v2on npmraydium-io/raydium-sdk-V2(開源)raydium-io/raydium-sdk-V2-demo——官方端到端範例,包括routeSwap.ts- AMM 路由程式原始碼未公開;根據實時 API 和鏈上位元組碼驗證程式 ID


