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、Stable AMM 全体のルート検出。
  • アカウント導出(プール状態、ボルト、オブザベーション アカウント、ATA 事前作成)。
  • ルートがマルチホップの場合はルータープログラム(Router)の命令パッキング、または単一プールで既に最高の価格が得られる場合は直接プール スワップ。
  • getAllRouteComputeAmountOutslippage パラメータを使用したスリッページ強制。
raydium.tradeV2.swap は複数の transaction を返す場合があります。最初のトランザクションは一般的に中間 ATA を初期化し、2 番目のトランザクションはスワップ自体を実行します。常に 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 を転送し、1 つの命令で同期します。

実行前にクォートする

命令を構築する前に必ずプールをクエリし、予想される出力を計算します:

より新しい命令バリアント(8 ~ 9)を使用

タグ 8 と 9(SwapBaseInSwapBaseOut)は limit_prices で より寛容です。CLMM 価格検証が不要な場合は、レガシー バリアントより優先してください。

次のステップ

ソース: