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 による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
Raydium の新しいプログラム(CPMM、CLMM、Farm v6、LaunchLab)は Anchor で記述されています。Anchor は Solana のネイティブプログラムモデル上に構築された Rust フレームワークで、アカウント検証、エラー処理、IDL(インターフェース説明)を提供します。AMM v4 と古いファーム は Anchor より前の時代のものです。両方のパラダイムを理解することで、コードを読み、IDL からクライアントを生成し、予期しないエラーをデバッグできます。
プログラムのデプロイメントモデル
すべての Solana プログラムはPubkey に存在します。プログラムのバイトコードは BPF Upgradable Loader(BPFLoaderUpgradeab1e11111111111111111111111)が所有する executable アカウントに保存されます。
プログラムのデプロイメントは 3 つのアカウントで構成されます:
- プログラムアカウント:プログラムの ID にある小さなメタデータアカウント。所有者:BPF Upgradable Loader。
- ProgramData アカウント:実際のバイトコードを保持します。
[program_id, "programdata"]として導出されます。 - Buffer アカウント(一時的):アップグレード中に新しいバイトコードを保持します。アップグレード後に破棄されます。
security/admin-and-multisig を参照してください。
デプロイされたプログラムの検証
オンチェーンのプログラムが監査済みのソースと一致することを確認するには:Anchor:Solana 上のフレームワーク
ネイティブ Solana プログラムは次のシグネチャを持つ Rust 関数です:- 各命令と各アカウント型に対して、確定的な 8 バイトの discriminator を自動生成します。
- アカウントの制約(所有者、シード、書き込み可能、署名者、ミント一致、トークンプログラム一致)をコード実行前に検証します。
- クライアントがプログラムを呼び出すために使用する IDL(インターフェース説明ファイル)を生成します。
- Rust、TypeScript、Python のクライアント側ライブラリとともに配布されます。
8 バイトの discriminator
すべての Anchor アカウントとすべての Anchor 命令は 8 バイトの discriminator で始まります。これは固定文字列の SHA-256 の最初の 8 バイトです:getProgramAccounts のようなツールで型のすべてのアカウントを列挙する際に重要です。
エラー
Anchor プログラムはエラーを#[error_code] で定義します:
reference/error-codes にあります。
IDL
Anchor の IDL(インターフェース説明言語)ファイルは、プログラムの JSON 説明です。その命令、アカウント、型、エラー、イベントが含まれます。これは Ethereum ABI と同等です。 Raydium はすべての Anchor プログラムの IDL を公開しています。オンチェーンから取得する場合:src/raydium/*/idl/*.json。
IDL 構造
IDL からクライアントを生成する
Anchor のanchor CLI は TypeScript と Rust 型を生成します:
IDL があなたの味方になる場合
Raydium SDK を通さないカスタム統合を構築したい場合:- IDL を取得します(オンチェーンから取得または SDK ソースから)。
- 必要な命令(例:
swap_base_input)を探します。 - 命令データを構成します:8 バイトの discriminator + エンコードされた引数。
- IDL が指定する順序でアカウントを渡します。
sdk-api/anchor-idl を参照してください。
Anchor より前のプログラム:AMM v4 と Farm v3/v5
これらのプログラムは Anchor より前の時代のものです。以下を使用します:- 手動命令ディスパッチ:
instruction_dataのu8タグとmatchステートメント。 - 手動アカウント検証:
if accounts[0].owner != &expected_program { ... }。 - Borsh シリアライズ命令引数:discriminator なし、単に
instruction_data[1..]。 #[repr(C, packed)]経由のレイアウト:C 構造体バイナリレイアウト。
プログラムアップグレードの仕組み
ProgramData のupgrade_authority のみがアップグレードできます。手順:
- 新しいバイトコードをコンパイルします。
- バッファアカウント(
solana program write-buffer)に書き込みます。 - アップグレード命令を送信します:
BpfLoaderUpgradeable::Upgrade { buffer, program, authority }。 - ランタイムがプログラムのバイトコードをバッファの内容で原子的に置き換えます。
security/admin-and-multisig を参照してください。
プログラムを不変にする
アップグレード権をNone に設定できます。その時点で、プログラムは永久に不変になります。Raydium はいかなる製品もこれを行っていません。チームはセキュリティ修正をプッシュする能力を保持しています。トレードオフ:ユーザーはマルチシグ + タイムロックプロセスを信頼する必要があります。
プログラムと家賃
プログラムをデプロイすると家賃免除ラムポートを消費します:- 50 KB プログラム:約 0.35 SOL のレント。
- 200 KB プログラム:約 1.4 SOL のレント。
solana program close 経由)でラムポートを返却します。Raydium プログラムはアクティブなままで、閉鎖予定ではありません。
Anchor プログラムのデバッグ
ログ出力
Anchor のmsg! マクロはトランザクションのログに書き込みます。トランザクションをシミュレートしてログを確認します:
- プログラム呼び出し(
Program CPMMoo8... invoke [1])。 - プログラムコードからの
msg!呼び出し。 - コンピュートユニット消費(
consumed 137842 of 400000 compute units)。 - プログラム成功またはエラー。
エラーコード
Anchor プログラムがスロー場合、ログは以下を表示します:SlippageExceeded)。IDL の errors 配列を参照してください。
Raydium の完全なエラー表は reference/error-codes を参照してください。
アカウントレイアウトの不一致
間違ったアカウントを間違ったスロットに渡すと、Anchor のアカウント検証マクロは以下のようなエラーを返します:ErrorCode enum を参照)。6000 以上のエラーはプログラムのカスタムコードです。
ポインタ
solana-fundamentals/account-model— プログラムがアカウントを所有する方法。solana-fundamentals/pdas-and-cpis— Anchor が宣言する PDA。sdk-api/anchor-idl— Raydium の IDL を取得および使用します。reference/program-addresses— プログラム ID。reference/error-codes— エラーコード参照。security/admin-and-multisig— アップグレード権のコントロール。
- Anchor book。
- Solana プログラムデプロイ。
- Raydium IDL(SDK
src/raydium/*/idl/*.jsonで公開)。


