メインコンテンツへスキップ

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 による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →

命令の概要

タグディスクリミネーター完全バリアント
0SwapBaseInWithUserAccount入力レガシー
1SwapBaseOutWithUserAccount出力レガシー
5CreateSyncNativeユーティリティ
6CloseTokenAccountユーティリティ
8SwapBaseIn入力現在
9SwapBaseOut出力現在
凡例:
  • 完全: 呼び出し元が固定する金額(入力 = 完全入力 amount_in;出力 = 完全出力 amount_out)。
  • バリアント: レガシー命令ではルートに CLMM ホップがない場合でも、空でない limit_prices デックが必要です。現在の命令(8 / 9)は空の limit_prices を「チェックなし」として扱い、これが新しいコードの推奨パスです。
すべてのスワップバリアントは、中間トークンをユーザーが管理する ATA を通じてルーティングします。ユーザーは入力 ATA、すべての中間 ATA、および出力 ATA を所有します。新しい統合では、特定の理由がない限り**タグ 8(SwapBaseInまたはタグ 9(SwapBaseOut)**を使用してください。

現在のスワップ命令(推奨)

これらは新しいコードが使用すべきエントリーポイントです。引数構造はレガシーバリアントと同じですが、limit_prices は空にすることができます。

SwapBaseIn(タグ 8)

完全入力マルチホップスワップ。呼び出し元は amount_in を固定し、ルーターはホップごとに実行して、最終金額が minimum_amount_out 以上になることを確認します。 引数
amount_in:            u64
minimum_amount_out:   u64
limit_prices:         VecDeque<u128>  // optional; empty deque means no per-hop CLMM price check
アカウント
[
  <user_input_ata> W S,         // signer; balance >= amount_in
  <user_intermediate_ata_1> W,  // one per intermediate hop
  ... <user_intermediate_ata_N> W,
  <user_output_ata> W,
  <token_program>,

  <pool_program_hop_1>,         // identifies which AMM family hop 1 is
  <pool_state_hop_1> W,
  ... <other accounts required by hop 1's program>,

  <pool_program_hop_2>,
  <pool_state_hop_2> W,
  ... <hop 2 accounts>,

  ... [repeat per hop]
]
ホップごとの正確なアカウントリストは、基礎となる AMM プログラム(AMM v4 / CPMM / CLMM / Stable)に依存します。ルーターは各プログラムに順番に CPI を実行し、プログラム ID が 4 つのサポート対象プログラムのいずれかと一致することを検証します。 事前条件
  • 呼び出し元は user_input_ata で署名します。
  • user_input_ata.amount >= amount_in
  • すべての中間ユーザー ATA が存在し、呼び出し元が所有しています。
  • CLMM ホップがあり、価格バウンド強制を望む場合は、CLMM ホップごとに 1 つの limit_prices エントリを指定します。
事後条件
  • user_input_ata 残高が amount_in だけ減少します。
  • user_output_ata 残高が ≥ minimum_amount_out 増加します。
  • 各中間 ATA はネット変化ゼロで残されます(ルートは 1 ホップ前に生成したものを消費します)。
一般的なエラー
  • ExceededSlippage — 最終出力 < minimum_amount_out
  • InvalidInput — ルートが空、アカウントが不正形式、または pool_program がサポートされていません。
  • SqrtPriceX64 — CLMM ホップの価格が指定された limit_prices バウンド外に移動しました(limit_prices が空でない場合のみ)。

SwapBaseOut(タグ 9)

完全出力マルチホップスワップ。呼び出し元は amount_out を固定し、ルーターは実際の入力が maximum_amount_in を超えないことを確認します。 引数
maximum_amount_in:   u64
amount_out:          u64
limit_prices:        VecDeque<u128>  // optional; empty deque means no per-hop CLMM price check
アカウント — タグ 8 と同じ構造です。 事前条件
  • 呼び出し元は user_input_ata で署名します;残高 >= maximum_amount_in(最悪の場合)。
  • 各中間および出力 ATA が存在します。
事後条件
  • user_input_ata が必要な実際の金額(≤ maximum_amount_in)だけ減少します。
  • user_output_ata が正確に amount_out だけ増加します。
一般的なエラー
  • ExceededSlippage — 必要な入力が maximum_amount_in を超えています。
  • InvalidInputSqrtPriceX64 — タグ 8 と同様。

レガシースワップ命令

これらの古いバリアントはライブプログラムで呼び出し可能であり、完全性のためここで説明されています。新しいコードではタグ 8 / タグ 9 を優先します;以下の両方のレガシーバリアントでは、CLMM ホップが関係ない場合でも空でない limit_prices デックが必要であり、これは使用を煩雑にします。

SwapBaseInWithUserAccount(タグ 0)

完全入力マルチホップスワップ、タグ 8 と同じ形状ですが、より厳しい limit_prices 要件があります。 引数
amount_in:           u64
minimum_amount_out:  u64
limit_prices:        VecDeque<u128>  // required, non-empty
アカウントSwapBaseIn(タグ 8)と同じ形状です。すべての中間スロットは呼び出し元が所有する ATA である必要があります。 事前条件
  • 呼び出し元は user_input_ata で署名します。
  • user_input_ata.amount >= amount_in
  • すべての中間ユーザー ATA が存在し、呼び出し元が所有しています。
  • limit_prices が空でありません(CLMM ホップごとに 1 エントリ;CLMM ホップが関係ない場合はプレースホルダー値を指定してください)。
事後条件
  • user_input_ata 残高が amount_in だけ減少します。
  • user_output_ata 残高が ≥ minimum_amount_out 増加します。
一般的なエラー
  • ExceededSlippage
  • InvalidInput — 空の limit_prices はこのレガシーバリアントで拒否されます。
  • SqrtPriceX64

SwapBaseOutWithUserAccount(タグ 1)

完全出力スワップ、SwapBaseOut(タグ 9)のレガシー版です。 引数
maximum_amount_in:   u64
amount_out:          u64
limit_prices:        VecDeque<u128>  // required, non-empty
アカウント — タグ 0 / タグ 9 と同じ形状です。 事前条件
  • 呼び出し元は user_input_ata で署名します。
  • user_input_ata.amount >= maximum_amount_in
  • すべての中間ユーザー ATA が存在し、呼び出し元が所有しています。
  • limit_prices が空でありません。
事後条件
  • user_input_ata が必要な実際の金額(≤ maximum_amount_in)だけ減少します。
  • user_output_ata が正確に amount_out だけ増加します。
一般的なエラー
  • ExceededSlippage
  • InvalidInput
  • SqrtPriceX64

ユーティリティ命令

CreateSyncNative(タグ 5)

wSOL ATA を 1 ステップで作成(必要に応じて)および同期します。スワップと並行して SOL をラップする場合に便利です。 引数
amount: u64    // SOL to wrap (lamports)
アカウント
[
  <user_wsol_ata> W,            // ATA for wSOL; created if missing
  <user_native_account> W S,    // signer; SOL is debited from here
  <wsol_mint>,
  <system_program>,
  <token_program>,
  <associated_token_program>,
]
効果
  • user_wsol_ata がまだ存在しない場合、作成します。
  • サイナーのネイティブ SOL 残高から ATA に amount ラムポート転送します。
  • ATA で SyncNative を呼び出して、トークン残高が新しいラムポートを反映するようにします。
一般的なエラー
  • InvalidOwneruser_wsol_ata の所有者がサイナーではありません。

CloseTokenAccount(タグ 6)

トークンアカウントを閉じて、そのレント(保証金)をデスティネーションウォレットに返します。CreateSyncNative とペアになります。wSOL レッグスワップ後、CloseTokenAccount を呼び出して wSOL ATA を支える保証金を回収します。 引数 — なし。 アカウント
[
  <token_account_to_close> W,
  <destination_for_rent> W,
  <owner> S,
  <token_program>,
]
効果
  • token_account_to_close を閉じます。
  • レント相当のラムポート残高(メインネットでバニラ SPL Token アカウントの場合、約 0.00203928 SOL)を destination_for_rent に転送します。
  • トークンアカウントはゼロトークン残高を持つ必要があります。
一般的なエラー
  • InvalidOwner — 呼び出し元が ATA 所有者ではありません。
  • トークンアカウント残高がゼロ以外です。

次のステップ