Skip to main content
このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
バージョン情報。 すべての TypeScript デモは @raydium-io/raydium-sdk-v2@0.2.42-alpha を対象とし、Solana mainnet-beta に対して検証済み(2026年4月)。Rust CPI スケルトンは raydium-cp-swapmaster ブランチ、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 の順序にソートします。
  • 1 回限りの create_pool_feepoolFeeAccount に支払います。
  • 呼び出し元の関連トークンアカウントが不足している場合は作成します。
  • 各側に対して正しいトークンプログラム(SPL Token vs 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 に変換し、各々を 1 + slippage で増加させてインストラクションの maximum_* 引数にし、必要に応じて ATA 作成を構築します。

流動性の引き出し

ソース:src/cpmm/withdraw.ts

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

ソース:src/cpmm/collectCreatorFee.tssrc/cpmm/collectAllCreatorFee.ts プロトコルおよびファンド回収は権限ゲート付きのままです。クリエイター手数料には 2 つのパスがあります:既存のクリエイター署名 CollectCreatorFee と、追加の CollectCreatorFeePermissionless で、任意のペイヤーが呼び出せますが、クリエイターの正規 ATA にのみ転送できます。ピン留めされた SDK は既存の生ビルダーを公開します:
@raydium-io/raydium-sdk-v2@0.2.42-alpha はまだ CollectCreatorFeePermissionless のビルダーを公開していません。SDK リリースがそれを追加するまで、アップグレードされた CPMM IDL から構築するか、プログラムを直接呼び出してください。makeCollectCreatorFeeInstruction を再利用しないでください:新しいインストラクションは異なるディスクリミネータを持ち、クリエイター署名者 / amm_config の位置を別の payer と署名しない creator アカウントに置き換えます。
オフチェーンでは 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 を参照してください。

次のステップ

ソース: