このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
Cargo の依存関係
cpi フィーチャーフラグを使用することで、プログラム全体ではなく CPI サーフェス(アカウント構造体とインボーカー)のみをコンパイルして、バイナリサイズを抑えることができます。
アカウント構造体を端から端まで結線した実動作 CPI 例は、raydium-io/raydium-cpi-example(AMM v4、CPMM、CLMM をカバー)を参照してください。
アカウントリストの構築
すべての Raydium CPI は、呼び出し元プログラム内のAccounts 構造体が必要です。フィールドはプログラムの命令アカウント順序に 1 対 1 で対応し、フィールドレベルのバリデーターを備えています。
UncheckedAccount なのは、被呼び出し側(Raydium)がバリデーションを行うためです。呼び出し元プログラムは、あなたが所有するアカウント(ユーザー ATA、自分の PDA)だけを厳密にバリデーションします。/// CHECK: ドックコメントは、チェック不足についての Anchor の警告を抑制します。
CPI 呼び出しの構築
Anchor は命令ごとに 1 つのヘルパーを生成します。cpi::swap_base_input は IDL から生成されます。引数リストは Anchor 命令の引数リストを反映しています。
署名者シード(PDA 署名付き CPI)
プログラムが PDA に代わって CPI に署名する場合(ボルト、エスクロー等で一般的)は、CpiContext::new_with_signer を使用します。
authority(または類似の署名者ロール)として渡されるすべてのアカウントについて、Solana ランタイムは PDA がこれらのシードを通じて署名することを確認します。
残りのアカウント
一部の Raydium 命令は、固定されたアカウントの後に追加される可変長リストである残りのアカウントを取ります。標準的な例は以下の通りです。- CLMM
SwapV2: スワップが横断する可能性があるティック配列に対応する 1 ~ 8 個のTickArrayStateアカウントを追加します。 - Farm v6
Deposit: 各ライブ報酬ストリームの(reward_vault, user_reward_ata)ペアを追加します。
.with_remaining_accounts(...) で渡します。
エラー伝播
Raydium のプログラムは独自のエラー列挙型を返します。Anchor がそれをラップし、呼び出し元プログラムはErr(ProgramError::Custom(code)) として見ます。特定のエラーを処理するには:
sdk-api/anchor-idl)に従って安定しています。数値と比較して特定のコードをテストできます。
構成された CPI のコンピュートバジェット
各 CPI フレームはオーバーヘッド(呼び出し自体で約 1,500 CU)を持ち、被呼び出し側の CU 消費がその上に積み重なります。プログラム内から CPMM スワップを呼び出すトランザクションは以下を消費します。ComputeBudgetProgram::set_compute_unit_limit(...) 命令を設定してください。デフォルトの 200k CU リミットは静かに枯渇します。
AMM v4 — 手動 Instruction 構築
AMM v4 には Anchor クレートがありません。Instruction を手動で構築します。
products/amm-v4/code-demos を参照してください。
Farm v6 — 報酬ペアの残りのアカウント
Farm v6 のDeposit / Withdraw / Harvest は、残りのアカウント内で (reward_vault_i, user_reward_ata_i) ペアパターンを使用します。正確なシーケンスは以下の通りです。
farm_state.reward_infos[i].reward_state から分派します。
CPI フローのテスト
ローカル開発では、テストバリデーターで Raydium プログラムが利用可能である必要があります。オプションは以下の通りです。-
プログラムクローンを使用した
anchor test—Anchor.toml内:これはメインネットから展開されたバイトコードをローカルバリデーターに取得します。 -
Devnet — Raydium はすべてのプログラムをメインネットと同じプログラム ID で devnet に展開します。
anchor test --provider.cluster devnetを実行してライブコードを操作します。 -
ローカル展開 — Raydium リポジトリをクローンしてローカルバリデーターに
anchor deployします。テストサイクルのオーバーヘッドを追加しますが、デバッグのため被呼び出し側を変更できます。
ポインター
products/cpmm/code-demos、products/clmm/code-demos、products/amm-v4/code-demos、products/farm-staking/code-demos— 製品別 CPI 例。sdk-api/anchor-idl— IDL 取得およびクライアント再生成。integration-guides/cpi-integration— 高レベルパターン:エスクロー、ボルト、アグリゲーター構成。

