Skip to main content
このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
バージョンバナー。 このページは @raydium-io/raydium-sdk-v2@0.2.64-alpha を対象としており、このサイトのすべてのコード例で使用されているバージョンです。SDK は 1.0 未満であり、型サーフェスはリリース間で進化しています — バージョンをピン留めしてください。ピンは 2026-09-09 にプログラムアップグレードと共に 0.2.42-alpha から 0.2.64-alpha に進められました。これが SDK の現在のリリースです。コード例ページがリンクしている raydium-sdk-V2-demo リポジトリは 0.2.62-alpha をインストールするため、デモに従う場合はどちらかをピン留めしてください。これらのページのデモは最後に 0.2.42-alpha(2026-04)に対して実行されました。呼び出しシグネチャは 2026-09-09 に 0.2.64-alpha ソースに対して再確認されていますが、不一致がある場合はドキュメントのバグとして扱い、issue を開いてください。

インストール

SDK は TypeScript で記述されており、JS アーティファクトと共に .d.ts をシップしています。最小ツールチェーン:Node 18+、TypeScript 5.0+、moduleResolution: "bundler" または "node16"。

初期化

エントリーポイントは Raydium.load です:
Raydium.load は非同期です。デフォルトで api-v3.raydium.io からトークンリスト(raydium.token.load())を読み込むためです。そのフェッチをスキップするには disableLoadToken: true を渡してください。可用性のフィーチャーチェックは /v3/main/AvailabilityCheckAPI への別の呼び出しであり、明示的に disableFeatureCheck: false を渡さない限り すでにスキップ されます。手数料設定はロード時にはまったく取得されません — 初回使用時に raydium.api.getCpmmConfigs() / getClmmConfigs() から遅延的に取得されます。

モジュールファサード

ロード後、raydium オブジェクトは 10 個のモジュールファサードと API クライアントを公開します:

トランザクションビルダー

すべてのミューテーション関数は、すぐに実行するのではなくビルダーを返します:
返されるフィールド:
  • execute — 署名 + 送信する便利関数。builder.execute と同等です。
  • builder — すべての命令と署名者が蓄積された TxBuilder インスタンス。builder.build() は transaction が単一のレガシー Transaction である TxBuildData を返します。builder.buildV0() は単一の VersionedTransaction を持つ TxV0BuildData を返します。配列を生成するのは buildMultiTx / buildMultiTxV0 のみです。
  • transaction — 構築された Transaction / VersionedTransaction。
  • instructionTypes / signers — 蓄積された命令ラベルと署名者セット。
  • extInfo — 製品固有の追加情報。例えば、cpmm.createPool は extInfo.address.{poolId, lpMint, vaultA, vaultB} を返し、launchpad.createLaunchpad は extInfo.address(LaunchpadPoolInfo に加えて poolId)を返します。
戻り値の型に innerTransactions フィールドは存在しません — それを分割代入すると TypeScript の エラーになります。戻り値の型が MakeMultiTxData であるビルダー(例えば clmm.harvestAllRewards、farm.harvestAllRewards、tradeV2.swap、 launchpad.createLaunchpad)は代わりに transactions を公開し、その execute は { sequentially: boolean } を 必須 とし、{ txId } ではなく { txIds } に解決されます。
txVersion はレガシーと V0 トランザクション形式を制御します。V0(アドレスルックアップテーブル)がデフォルトの推奨事項です — より大きなスワップを単一トランザクションに収めることができます。

なぜ非同期ビルダーなのか?

ほぼすべてのビルダーは内部的にオンチェーン状態を取得します:プール情報(クォート用)、トークンプログラム所有権(Token-2022 対 SPL ルーティング用)、アカウント家賃免除(ATA 作成用)など。SDK は積極的にキャッシュしますが、新しいプールの最初の呼び出しには RPC ラウンドトリップが含まれます。再取得を避けるために、長寿命の raydium インスタンスを保持してください。

CLMM モジュール追加(最新リリース)

CLMM ファサードは、新しい動的フィー、片側フィー、およびリミットオーダー機能のサーフェスを獲得しました:
  • raydium.clmm.createCustomizablePool — collectFeeOn と dynamicFeeConfig(コンフィグアカウントの PublicKey)を受け入れる createPool のスーパーセット。動的手数料を有効にするのは dynamicFeeConfig を渡すことです。別途の enableDynamicFee フラグも dynamicFeeConfigId もありません。クラシック createPool はデフォルト手数料のプールで機能し続けます。
  • raydium.clmm.openLimitOrder — 単一ティックのリミットオーダーを開きます。poolInfo、baseIn(方向)、orderTick、amount を取り、オプションで tickArrayBitmap、noneIndex、ownerInfo を取ります。ティックの量子化にはエクスポートされた getOrderTick({ baseIn, mintADecimal, mintBDecimal, tickSpacing, price }) ヘルパーを使用してください。
  • raydium.clmm.increaseLimitOrder / decreaseLimitOrder — 既存オーダーの未充足部分を調整します。どちらも { poolInfo, limitOrder, amount } を取り、decreaseLimitOrder はオプションの slippage を追加します。完全に充足されたオーダーで減少すると InvalidOrderPhase で戻ります。
  • raydium.clmm.settleLimitOrder / settleAllLimitOrder — 充足された出力をオーナーの ATA に掃引します。settleLimitOrder は { limitOrder } のみを取ります — poolInfo はありません。オーダーのオーナーまたはプログラムの limit_order_admin キーパーが呼び出すことができます。
  • raydium.clmm.closeLimitOrder / closeAllLimitOrder — 完全に決済されたオーダーを閉じてレントを回収します。
  • raydium.api.getClmmDynamicConfigs() — 新しい /main/clmm-dynamic-config エンドポイントにヒットする REST ヘルパー。(リミットオーダー設定のヘルパーやエンドポイントは存在しません:リミットオーダーはプールごとの設定アカウントではなく、ティックによってキー付けされます。)
このパッケージはサブパスのエクスポートを宣言していないため、@raydium-io/raydium-sdk-v2/<anything> はどのような綴りでも解決されません — すべてをトップレベルのバレルからインポートしてください。(内部的には src/raydium/clmm/utils/ が src/raydium/clmm/libraries/ に名前変更されましたが、それは公開のエントリポイントではありませんでした。) エンドツーエンド TypeScript ウォークスルーは products/clmm/code-demos にあります。

一般的な落とし穴

1. クラスター不一致

SDK のスタートアップ設定はクラスター固有です。cluster: "mainnet" を devnet Connection と混ぜると、サイレント誤ルーティングが発生します:SDK は mainnet AmmConfig に対してクォートしますが、devnet に送信します。常に両方を渡してください。

2. ATA の事前作成を忘れる

ミントとの最初のインタラクションでは、ユーザーの関連トークンアカウントが存在しない場合があります。SDK は欠落している ATA を検出すると、AssociatedTokenAccount::create 命令を自動的に前置します。これは少量の家賃がかかります。ウォレットの SOL が少ない場合、これはサイレントに失敗します。再試行する前に確認して資金を提供してください。

3. 古い poolInfo

poolInfo はキャッシュされたスナップショットです。取得以降にプール状態が変更された場合(大きなトレードが価格を動かした場合など)、スワップの minAmountOut は古い状態に対して計算され、オンチェーン出力額を下回り、戻ります。高額トランザクションを構築する直前に poolInfo を再取得するか、SDK の computeAmountOut を使用してください。これは準備金を再クエリします。

4. プライオリティフィー

SDK はデフォルトでコンピュートユニット価格を追加しません。高ボリュームウィンドウ(新しいプール起動、ミームコインイベント)では、トランザクションは他の多くと競合し、ランドしない可能性があります。明示的な computeBudgetConfig を供給してください:
サイジングガイダンスについては integration-guides/priority-fee-tuning を参照してください。

5. スリッページ許容度はプールタイプと一致する必要があります

CPMM と AMM v4 は CPMM 数学です(通常のトレードへの影響は低い)。CLMM は区分的です(ティック交差で影響がジャンプ)。CPMM の例から 0.5% のスリッページ許容度をコピーして、複数のティックを交差する CLMM スワップに入れると、トランザクションは戻る可能性があります。SDK の computeAmountOut は priceImpact を返します。許容度をそれより上にサイズしてください。

6. BN 対 number

SDK のすべての金額フィールドは bn.js BN インスタンスです — JavaScript number ではありません。.toNumber() 経由で金額値を変換すると、2^53 でサイレント切り詰めが発生します。約 9 クアドリリオン以上の値(9 進数ミントでは珍しくない)の場合、これは間違った結果を生成します。最終 UI レンダリングまですべてを BN に保持してください。

バージョニングポリシー

  • @raydium-io/raydium-sdk-v2 は Raydium が保守する唯一の SDK です。すべてのドキュメント、デモ、および統合ガイダンスはこれをターゲットとしています。
  • 古い v1 パッケージ(@raydium-io/raydium-sdk)は歴史的な理由で npm に存在します。メンテナンスは CPMM と LaunchLab がシップされた後に終了しました(v1 は両方ともサポートを獲得しませんでした)。2024 年以降、v1 リリースはありません。v1 をライフエンドとして扱ってください:新しいコードに使用しないでください。残っている v1 統合を v2 に移行してください。
  • SDK v2 は 1.0 未満です。0.x マイナーリリース間の破壊的変更は可能です。検証したバージョンをピン留めし、アップグレード時に GitHub リリースノートを確認してください。

アップグレード

SDK マイナーバージョン間でアップグレードする場合:
  1. すべてのミューテーション呼び出しの戻り値の型を再確認してください — 形状変更(例:extInfo)は頻繁に発生します。
  2. poolInfo フェッチシグネチャを再生成してください — フィールドが名前変更されている可能性があります。
  3. スリッページ処理を再検証してください。SDK はリリース間で自動バウンドとオプトインバウンド動作の間でシフトしています。
  4. raydium.tradeV2(ルーティング)を使用する場合、ルート形状を再検証してください — これはサーフェスの最も不安定な部分です。ファサードは trade から tradeV2 に名前変更されており、古い名前はもう存在しません。

ヘルプを得る

SDK と API の質問については:
  • GitHub issues — バグと機能リクエストについては github.com/raydium-io/raydium-sdk-V2/issues にファイルしてください。Raydium チームは積極的に監視しています。
  • Discord — 同期ヘルプについては discord.gg/raydium の #dev-support チャネル。
  • Telegram — raydium.io からリンクされた開発者チャット(未検証の Telegram グループは避けてください)。
セキュリティ問題については、公開チャネルに投稿しないでください — security/disclosure を参照してください。

ポインタ

ソース: