Documentation Index
Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
Use this file to discover all available pages before exploring further.
このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
IDL とは
Solana 上の Anchor プログラムは IDL(Interface Definition Language)ファイルを公開しており、そこには命令、アカウントレイアウト、エラー列挙型、構造体スキーマが記述されています。IDL はクライアントコード生成の信頼できる情報源です。TS SDK、Rust CPI クレート、サードパーティ製クライアントはすべて、それから生成されるか、または手動で記述されます。 Raydium は CPMM、CLMM、LaunchLab の IDL を公開しています。AMM v4、Stable AMM、Farm(v3 / v5 / v6)は Anchor 以前のものであるか、または Anchor で配布されていないため、アカウント構造は SDK 内で手動管理されています。場所
IDL は専用リポジトリに保存されています:| プログラム | IDL ファイル |
|---|---|
| CPMM | raydium_cpmm/raydium_cp_swap.json |
| CLMM | raydium_clmm/raydium_clmm.json |
| LaunchLab | raydium_launchpad/raydium_launchpad.json |
| AMM v4 | 公式 IDL なし — 手動で記述されたレイアウトについては raydium-sdk-V2/src/raydium/liquidity/layout.ts を参照してください |
| Stable AMM | 公式 IDL なし — SDK 内のレイアウト |
| Farm | 公式 IDL なし — SDK 内のレイアウト |
TypeScript クライアントの再生成
Anchor のコードジェネレータは IDL から型付きクライアントを生成します:raydium.cpmm.swap(...) ヘルパーを使用します。これは Anchor メソッドとすべてのブックキーピング(ATA 作成、転送手数料調整、コンピュート予算、Token-2022 プログラムルーティング)をラップします。SDK の下にあるレイヤーが必要な場合のみ再生成してください。
Rust クライアント(CPI クレート)の再生成
Raydium は IDL を持つプログラムの Anchor クレートを公開しています:cpi フィーチャーは cpi::accounts::<Ix> アカウント構造体と cpi::<ix>() インボーカーを公開します。これらは使用準備ができた CPI ラッパーです。使用パターンについては sdk-api/rust-cpi を参照してください。
新しいバインディングを生成したい場合:
Python クライアントの再生成
公式の Raydium Python SDK はありません。サードパーティジェネレータには以下が含まれます:anchorpy—@coral-xyz/anchorの Python ポート。IDL から型付きメソッドビルダーを生成します。solders— Rust バインディングの低レベル Solana プリミティブ(トランザクション、キーペア、パブキー)。anchorpyの下で使用されます。
sdk-api/python-integration を参照してください。
IDL 変更ポリシー
Raydium は IDL の安定性について以下のルールに従います:- 命令ディスクリミネータは変更されません。 新しい命令を追加すると列挙型の末尾が拡張されます。既存のディスクリミネータは安定したままです。
- アカウント構造体レイアウトは加算型でのみ進化します。 新しいフィールドは末尾に追加され、オンチェーンスキーマのサイズバンプが前に付けられます。既存のフィールドはオフセットを保持します。
- エラー列挙型コードは追加のみです。 既存のエラーコードは常に同じことを意味します。
- 破壊的変更は新しいプログラムで配布されます。 再設計が必要な場合、チームは新しいプログラム ID をデプロイします(例えば、AMM v4 をアップグレードするのではなく、CPMM を新しいプログラムとしてデプロイします)。古いプールは古いプログラムで実行され続けます。新しいプールは新しいプログラムにいきます。
IDL が変更されたときの対応
- SDK を更新します。
npm update @raydium-io/raydium-sdk-v2。 - Anchor コードジェンを直接使用する場合は クライアントコードを再生成します。
- アカウントレイアウトを比較します。 新しいレイアウトの末尾フィールドのみが、コードが見ていないものです。それらが必要かどうかを確認してください。
- 古い命令ディスクリミネータが無効だと仮定しないでください。 ルール 1 により、それらはまだ機能します。
- devnet に対して統合テストを再実行します mainnet にロールアウトする前に。
IDL トラブルシューティング
「無効なディスクリミネータ」エラー
通常、IDL のバージョン N に対して構築されたクライアントが、プログラムのデプロイ前バージョンにのみ存在した命令を呼び出そうとしていることを意味します。ライブプログラムから IDL を再取得します:アカウントデコード失敗
program.account.<Name>.fetch(pubkey) が「無効なアカウントディスクリミネータ」でスローされた場合、アカウントは以前のプログラムバージョンによって作成され、Anchor がその 8 バイトディスクリミネータを拒否しています。修正は SDK の生レイアウトパーサー(PoolInfoLayout.decode(accountData))を使用することです。これは Anchor ディスクリミネータを強制しません。
生成されたクライアントに命令がない
Anchor の TS コードジェンは、IDL エントリに有効な識別子として解析されるname を持つ命令に対してのみメソッドを生成します。Raydium のすべての命令はこれを満たしていますが、不一致がある場合は、IDL ファイルが現在の SDK リリースからのものであるかどうかを確認してください。
ポインタ
sdk-api/rust-cpi— Rust CPI クレートの使用。sdk-api/python-integration—anchorpy経由の Python。sdk-api/typescript-sdk— より高いレベルの TS クライアント。


