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

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

アカウントレイアウト:ユーザーATA全体を通じて

有効なすべてのスワップバリアント は、中間トークンをユーザーが管理するATAを通じてルーティングします。ユーザーは入力ATA、すべての中間ATA、および最終出力ATAを所有します。アクティブな表面には、共有またはルーター所有の中間トークンアカウントはありません。 プロパティ:
  • ユーザーは中間トークンごとに1つのATAを所有します。
  • ユーザーはアカウントリスト内のすべてのATAを提供します。
  • 各中間ATAはすでにチェーン上に存在する必要があります(wSOL の場合は CreateSyncNative で初期化するか、他のミントの場合はSPL Associated Token Account プログラムで、ルーティング前に初期化します)。
  • ルーターは各ホップで1つのATAから転送し、次のプールのボルトに転送します。
  • 各中間ATAはルートを終了するときに、開始時と同じバランスで終了します。ルートは前のホップが生成したものを消費します。
ルート USDC → SOL → STEP のフロー例:
Accounts list:
  [
    USDC_input_ata (user, signer),
    SOL_intermediate_ata (user),
    STEP_output_ata (user),
    token_program,

    amm_program_1, *amm1_accounts,    // hop 1: USDC → SOL
    amm_program_2, *amm2_accounts,    // hop 2: SOL → STEP
  ]

Hop 1: USDC_input_ata → AMM1 → SOL_intermediate_ata
Hop 2: SOL_intermediate_ata → AMM2 → STEP_output_ata

ホップごとのアカウントレイアウト

各ホップのアカウントは連続して渡されます。ルーターは各ホップのブロック内の最初のアカウント(プログラムID)を読み取ることで子プログラムを識別し、正しいハンドラーにディスパッチします。 各ホップについて、ルーターは次のようにグループ化されたアカウントを期待します:
[
  program_id,         // Identifies which pool program (AMM v4, CPMM, CLMM, Stable)
  *child_accounts,    // All accounts required by that pool's swap instruction
]
子アカウントはプールのタイプによって異なります:

AMM v4 ホップ

約18個のアカウント:プール、オーソリティ、ボルト、ミント、OpenBook マーケットアカウント(AMM v4 の OpenBook 統合はもはやアクティブではありませんが、後方互換性のためアカウントリストに保持)、トークンプログラム。完全なリストについては products/amm-v4/accounts を参照してください。

CPMM ホップ

約11~13個のアカウント:プール状態、オーソリティ、ボルト(2個)、ミント(2個)、トークンプログラム、システムプログラム、Associated Token プログラム。詳細は products/cpmm/accounts を参照してください。

CLMM ホップ

約15以上のアカウント:プール、ティック配列、ボルト、ミント、観測状態、署名者、トークンプログラム。詳細は products/clmm/accounts を参照してください。

Stable ホップ

AMM v4 に類似。詳細は products/stable/accounts を参照してください。

トークンフロー と ATA 所有権

  • 呼び出し元は user_input_ata で署名します。
  • 呼び出し元は入力、中間、および出力のすべてのATAを所有する必要があります。ルーターは、任意の中間ATAの所有者が署名者でない場合、トランザクションを拒否します。
  • 呼び出し元の user_input_ata バランスは、最初のホップの入力(タグ 0/8 の場合は amount_in、タグ 1/9 の場合は maximum_amount_in)に対して十分である必要があります。
  • 各中間ATAはすでにチェーン上に存在する必要があります。存在しない場合は、事前に作成してください。通常は SPL Associated Token Account プログラム を通じるか、wSOL ATA の場合は CreateSyncNative(タグ 5)を使用します。

CreateSyncNative インストラクション

ラップされたSOLを通じてルーティングする必要があり、wSOL ATA を手動で作成・同期したくない場合は、CreateSyncNative(タグ 5)を使用します:
CreateSyncNative(amount)
これは呼び出し元のウォレット配下に wSOL ATA を作成し、System Program を通じて amount 分のSOLを転送し、1つのインストラクションで同期します。ルーティング前に新しい wSOL ATA を初期化するのに便利です。

CloseTokenAccount インストラクション

ルートが完了した後、中間ATA(最も一般的には wSOL ATA)を閉じてレントを取り戻すことをお勧めします。CloseTokenAccount(タグ 6)を使用します:
CloseTokenAccount
トークンアカウントはクローズ前にゼロトークンバランスを持つ必要があります。ルーターは自動的に空にすることはありません。

次に進む