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 から小さな /config ペイロードを取得するためです(現在の AmmConfig アカウント、フィーティアなどをリストアップ)。オフライン環境では disableFeatureCheck: true を設定してください。これらの値を手動でいくつかのビルダーに供給する必要があります。

4つのモジュールファサード

ロード後、raydium オブジェクトは 4つのモジュールファサードを公開します。製品サーフェスごとに 1つ:
(実際には 5つのファサードがあります — 「4つ」は Raydium が公開でグループ化する方法で、tradetoken はサポートユーティリティです。)

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

すべてのミューテーション関数は、すぐに実行するのではなくビルダーを返します:
返されるフィールド:
  • execute — 署名 + 送信する便利関数。builder.execute と同等です。
  • builder — すべての命令と署名者が蓄積された TxBuilder インスタンス。.build() を呼び出して VersionedTransaction[] を取得します。独自の命令を注入したり、外部署名者で署名する必要がある場合に便利です。
  • transaction / innerTransactions — 生の命令配列。複合マルチプログラムトランザクションを構築する場合に使用します。
  • extInfo — 製品固有の追加情報。例えば、createPoolextInfo.poolId を返します。createLaunchpad は新しいローンチ状態 PDA を返します。
txVersion はレガシーと V0 トランザクション形式を制御します。V0(アドレスルックアップテーブル)がデフォルトの推奨事項です — より大きなスワップを単一トランザクションに収めることができます。

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

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

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

CLMM ファサードは、新しい動的フィー、片側フィー、およびリミットオーダー機能のサーフェスを獲得しました:
  • raydium.clmm.createCustomizablePoolcollectFeeOnenableDynamicFee、および dynamicFeeConfigId を受け入れる createPool のスーパーセット。新しいノブが必要な新しいプールに使用します。クラシック createPool はデフォルトフィープールで機能し続けます。
  • raydium.clmm.openLimitOrder — リミットオーダーをサポートするプール上で単一ティックリミットオーダーを開きます。poolInfopoolKeyslimitOrderConfig/main/clmm-limit-order-config から)、inputMintinputAmount、およびターゲット tick を取ります。
  • raydium.clmm.increaseLimitOrder / decreaseLimitOrder — 既存オーダーの未充足部分を調整します。完全に充足されたオーダーで減少すると InvalidOrderPhase で戻ります。
  • raydium.clmm.settleLimitOrder / settleAllLimitOrder — 充足された出力をオーナーの ATA に掃引します。オーダーのオーナーまたはプールの limit_order_admin キーパーが呼び出すことができます。
  • raydium.clmm.closeLimitOrder / closeAllLimitOrder — 完全に決済されたオーダーを閉じて家賃を回収します。
  • raydium.api.getClmmDynamicConfigs() / getClmmLimitOrderConfigs() — 新しい /main/clmm-dynamic-config および /main/clmm-limit-order-config エンドポイントにヒットする REST ヘルパー。
小さな再編成により utils/libraries/ に移動しました。@raydium-io/raydium-sdk-v2/utils/... からインポートしたコードは @raydium-io/raydium-sdk-v2/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 の computeAmountOutpriceImpact を返します。許容度をそれより上にサイズしてください。

6. BNnumber

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.trade(ルーティング)を使用する場合、ルート形状を再検証してください — これはサーフェスの最も不安定な部分です。

ヘルプを得る

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

ポインタ

ソース: