メインコンテンツへスキップ
このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
このスクリプトの動作。 RPC から CPMM プールを読み込み、スリッページ 0.5% でスワップを見積もり、トランザクションを構築し、キーペアで署名して送信します。全体で約 30 行です。

セットアップ

クイックスタート前提条件を読み、RPC_URLKEYPAIR、依存関係がインストールされていることを確認してください。

スクリプト

swap.mjs として保存してください:

実行

流動性がある CPMM プールを任意に選びます。標準的な SOL/USDC CPMM プールを使った例:
期待される出力:

動作内容

  1. Raydium.load — SDK を初期化し、グローバル設定を取得してウォレットコンテキストをセットアップします。
  2. getPoolInfoFromRpc — RPC からライブプール状態を直接取得します(API キャッシュからではなく)。高額なスワップの場合は常に最新の状態が必要です。
  3. CurveCalculator.swap — プールのフィーを差し引いた定積型出力を計算します。これはプログラムがオンチェーンで実行する数学と同じなので、オフチェーンとオンチェーンの見積もりを比較できます。
  4. raydium.cpmm.swap — V0 形式(アドレスルックアップテーブル有効)でトランザクションを構築し、明示的なコンピュート予算設定を追加します。コンピュート予算チップは、ネットワークが混雑している期間にトランザクションを送信するのに役立ちます。
  5. execute({ sendAndConfirm: true }) — トランザクションに署名し、送信し、確認を待ちます。

よくあるエラー

  • Pool not foundPOOL_ID が間違っているか、間違ったクラスタを指している(例:mainnet プール ID を devnet RPC で使用)。
  • Insufficient funds for transaction — ウォレットにスワップ入力 + フィー + ATA レント用の SOL が不足している。
  • Slippage tolerance exceeded — 見積もりと実行の間にプールの価格が変動しました。再実行するか、slippage パラメータを引き上げるか、SDK の computeAmountOut を使用して常にリザーブを再取得してください。
  • Token account not initialized — 出力トークンの ATA が存在せず、暗黙的な作成命令は送信されたがなんらかの理由で失敗しました。ウォレットの SOL 残高を確認して再度実行してください。

次へ