Skip to main content
このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
バージョン情報。 すべての TypeScript デモは、Solana mainnet-beta に対して @raydium-io/raydium-sdk-v2@0.2.42-alpha を対象としており、2026年4月時点で検証済みです。Rust CPI スケルトンは master ブランチの raydium-cp-swap を対象とし、Anchor 0.30.x に対応しています。プログラム ID は reference/program-addresses の定数から取得されます。

前提条件

このページのすべてのデモは raydium-sdk-V2-demo/src/cpmm 内のファイルと対応しており、各セクションの横に GitHub リンクがあります。初期化はデモリポジトリの config.ts.template に従っています(ソース):
Raydium インスタンスは SDK のファサードであり、以下のすべてのデモで使用されます。api-v3.raydium.io からトークンリストと手数料設定を遅延フェッチします。オフライン環境では独自データでシードすることができます。

CPMM プールの作成

ソース:src/cpmm/createCpmmPool.ts
SDK が自動的に処理することがいくつかあります:
  • PDA を導出する前に、ミントを token0/token1 順にソートします。
  • ワンタイム create_pool_feepoolFeeAccount に支払います。
  • 呼び出し元の関連付けられたトークン アカウントがない場合は作成します。
  • 各側に対して正しいトークン プログラム(SPL Token または Token-2022)を選択します。
確認後、以下で ライブプール状態を取得できます:

スワップ(ベース入力)

ソース:src/cpmm/swap.ts
注意:SDK は getPoolInfoFromRpc の内部で常に RPC からプール状態を再フェッチします。署名しようとするトランザクションに対して api-v3.raydium.io から見積もりを取得しないでください。1ブロック古い見積もりはランド時に ExceededSlippage にスリップできます。

スワップ(ベース出力)

ソース:src/cpmm/swapBaseOut.ts

流動性供給

ソース:src/cpmm/deposit.ts
SDK は lpAmount をプールの現在のリザーブを使用して needed_token_0needed_token_1 に変換し、各インストラクションの maximum_* 引数用に 1 + slippage を乗じ、必要に応じて ATA 作成をビルドします。

流動性撤回

ソース:src/cpmm/withdraw.ts

プロトコル手数料・ファンド手数料・クリエーター手数料の収集

ソース:src/cpmm/collectCreatorFee.tssrc/cpmm/collectAllCreatorFee.ts これらのインストラクションは管理者またはクリエーター権限があり、通常は Raydium マルチシグまたはプール クリエーターが保有する署名者から呼び出されます。SDK はそれらをローレベルビルダーとして公開します:
オフチェーンでは PoolState から直接蓄積手数料を読み取ることができます:

Rust CPI スケルトン

独自の Anchor プログラムから CPMM を呼び出したい場合(例えば、預金者に代わってスワップを行うボールト)、CPI コンテキストは次のようになります。アカウント順は products/cpmm/instructions に従います。
CPI が PDA として署名する場合(例えば、預金者に代わってボールトを管理している場合)、CpiContext::newCpiContext::new_with_signer に置き換え、シードを渡してください。

よくあるミス

サポート チケットを開く前の簡単なチェックリスト:
  • ソート済みミント。 導出した poolState PDA がオンチェーン プールと一致しない場合は、ミントをソートするのを忘れた可能性があります。
  • 古い API 見積もり。 api-v3.raydium.io からのリザーブ値を CurveCalculator.swap に渡さないようにしてください。RPC からフェッチしてください。
  • 間違ったトークン プログラム。 Token-2022 ミントのボールトは SPL Token ではなく Token-2022 プログラムで管理されています。常にプールの token_0_program / token_1_program フィールドを使用してください。
  • 転送手数料ミント用の不十分なスリッページ。 プールのどちらかが Token-2022 転送手数料ミントの場合、minimum_amount_out はボールトが送信するもの(金額)ではなく、ユーザーが実際に受け取るもの(金額)を単位として表す必要があります。
  • スワップで NotApproved PoolState.status を確認してください。管理者がそのプールでスワップを一時停止している可能性があります。ステータス ビットマスクについては products/cpmm/instructions を参照してください。

次のステップ

ソース: