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

セットアップ

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

スクリプト

swap.mjs として保存します:
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 残高を確認して再試行してください。

次のステップ