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 による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
Stable AMM は、AMM v4 とほぼ同じインストラクションセットを共有しています。独自のインストラクションは InitModelData と UpdateModelData で、ルックアップテーブルを生成および更新します。スワップ、デポジット、ウィズドロー、クランク(Crank)などの他のすべての操作は、AMM v4 と同じパターンに従います。
インストラクション一覧
| インストラクション | カテゴリ | 説明 |
|---|
Initialize | ライフサイクル | プール作成(事前割り当てされたモデルデータアカウントが必要)。 |
PreInitialize | ライフサイクル | レガシー事前割り当てヘルパー。 |
InitModelData | モデルセットアップ | ルックアップテーブルを作成・初期化。 |
UpdateModelData | モデルセットアップ | 呼び出しごとに最大 5 つのテーブル要素を設定。 |
Deposit | リクイディティ | リクイディティを追加し、LP を受け取る。 |
Withdraw | リクイディティ | LP をバーン、両方のトークンを受け取る。 |
SwapBaseIn | スワップ | 正確な入力スワップ。 |
SwapBaseOut | スワップ | 正確な出力スワップ。 |
MonitorStep | クランク | OpenBook を決済、オーダーを更新。 |
SetParams | 管理者 | プールパラメーターを変更。 |
WithdrawPnl | 管理者 | 累積されたプロトコル手数料を回収。 |
WithdrawSrm | レガシー | SRM リベートを回収(レガシー)。 |
SimulateInfo | 診断 | 読み取り専用クオートヘルパー。 |
Initialize
既存の OpenBook マーケットと事前作成された ModelDataInfo アカウントにバインドされた、新しい Stable AMM プールをブートストラップします。
引数
アカウント(書き込み可能 W、署名者 S)
| # | 名前 | W | S | 説明 |
|---|
| 1 | token_program | | | SPL Token。 |
| 2 | system_program | | | |
| 3 | rent | | | |
| 4 | amm | W | | プールの AmmInfo アカウント。 |
| 5 | amm_authority | | | プログラム全体の PDA。 |
| 6 | amm_open_orders | W | | OpenBook OpenOrders。 |
| 7 | lp_mint | W | | ファンジブル LP トークンミント。 |
| 8 | coin_mint | | | |
| 9 | pc_mint | | | |
| 10 | pool_coin_token_account | W | | プールのコイン金庫。 |
| 11 | pool_pc_token_account | W | | プールの pc 金庫。 |
| 12 | amm_target_orders | W | | OpenBook オーダー用グリッド。 |
| 13 | model_data_account | | | ルックアップテーブルアカウント。 |
| 14 | serum_program | | | OpenBook プログラム。 |
| 15 | serum_market | | | OpenBook マーケット。 |
| 16 | user_dest_lp_token | W | | 作成者の LP ATA(初期 LP を受け取る)。 |
| 17 | user_wallet | W | S | 作成者。レント料金を支払い、初期デポジットに資金提供。 |
| (オプション) | srm_token | W | | 手数料割引用 SRM トークンアカウント(レガシー)。 |
前提条件
model_data_account は既に作成され、事前の InitModelData によって初期化されている必要があります。
lp_mint は空(ゼロサプライ)である必要があります。
- ボールトは存在し、
amm_authority によって所有されている必要があります。
事後条件
AmmInfo はすべての参照で初期化されます。
TargetOrders はゼロ化され、最初の MonitorStep の準備が完了します。
- 初期 LP トークンがミントされ、
user_dest_lp_token に送信されます。
- OpenBook オーダーはまだポストされていません。最初の
MonitorStep がそれらをポストします。
InitModelData
ModelDataInfo アカウントを作成・初期化します。Initialize の前に 1 回呼び出す必要があります。
引数
multiplier: u64 // スケール因子(例:10^6)
アカウント(書き込み可能 W、署名者 S)
| # | 名前 | W | S | 説明 |
|---|
| 1 | model_data_account | W | | 50k 要素テーブルアカウント。 |
| 2 | amm_admin | | S | プール管理者(権限を証明するために署名する必要があります)。 |
前提条件
model_data_account は十分な大きさ(50k × 24 バイトで約 1.2 MB)である必要があります。
model_data_account は Stable プログラムによって所有されている必要があります。
事後条件
status = Initialized。
multiplier が設定されます。
valid_data_count = 0(まだ要素が設定されていません。UpdateModelData を呼び出して追加してください)。
elements 配列はゼロ化されます。
UpdateModelData
単一の呼び出しで最大 5 つのテーブル要素を設定します。InitModelData の後、スワップがテーブルを使用開始する前に呼び出す必要があります。
引数
array_data: [UpdateModelData; 5]
pub struct UpdateModelData {
pub index: u64,
pub data: DataElement,
}
アカウント(書き込み可能 W、署名者 S)
| # | 名前 | W | S | 説明 |
|---|
| 1 | amm_admin | | S | 署名者(プール管理者である必要があります)。 |
| 2 | model_data_account | W | | テーブルアカウント。 |
前提条件
amm_admin は AmmInfo.amm_admin と一致する必要があります。
array_data の各インデックスは有効(50,000 以内)である必要があります。
- エントリはソートされている必要があります(速度のためにオンチェーンで検証されません):x は昇順、y は降順、価格は昇順。
事後条件
- 各入力について、
model_data_account.elements[index] に要素が書き込まれます。
valid_data_count は書き込まれた最大インデックス + 1 に更新されます。
ガバナンスに関する注記: ソート順序または価格の一貫性のオンチェーン強制はありません。悪意または不注意な管理者はテーブルを破損させ、不正確なクオートを引き起こす可能性があります。実際には、Raydium マルチシグがこのアドレスを制御します。
Deposit
リクイディティを追加し、LP トークンを受け取ります。
引数
max_coin_amount: u64
max_pc_amount: u64
base_side: u64 // 0 = base on coin、1 = base on pc
アカウント — AMM v4 と同様、約 13 アカウント。読み取り専用として model_data_account を含める必要があります。
計算 — ルックアップテーブルを使用した標準的なプロラタ計算が比率を計算します。SDK は目的の LP 量に対するコイン/pc ペアを計算し、最大上限に対してチェックします。
Withdraw
LP をバーン、両方のトークンをプロラタで受け取ります。
引数
amount: u64 // バーンする LP トークン
アカウント — AMM v4 と同様、読み取り専用として model_data_account を含みます。
前提条件
user_lp_token_account は少なくとも amount を保有しています。
事後条件
amount LP トークンがバーンされます。
- ユーザーは現在のプロラタに応じたコインと pc 量を受け取り、累積された手数料で調整されます。
SwapBaseIn
ルックアップテーブルを使用した正確な入力スワップです。
引数
amount_in: u64
minimum_amount_out: u64
アカウント(合計約 17 個)
| # | 名前 | W | S | 説明 |
|---|
| 1 | token_program | | | |
| 2 | amm | W | | |
| 3 | amm_authority | | | |
| 4 | amm_open_orders | W | | |
| 5 | amm_target_orders | W | | |
| 6 | pool_coin_token_account | W | | |
| 7 | pool_pc_token_account | W | | |
| 8 | model_data_account | | | 読み取り専用ルックアップテーブル。 |
| 9 | serum_program | | | |
| 10 | serum_market | W | | |
| 11 | serum_bids | W | | |
| 12 | serum_asks | W | | |
| 13 | serum_event_queue | W | | |
| 14 | serum_coin_vault | W | | |
| 15 | serum_pc_vault | W | | |
| 16 | serum_vault_signer | | | |
| 17 | user_source_token | W | | ユーザーの入力トークンアカウント。 |
| 18 | user_dest_token | W | | ユーザーの出力トークンアカウント。 |
| 19 | user_owner | | S | ユーザー(トランザクション署名者)。 |
前提条件
amm.status はスワップを許可します。
user_source_token は ≥ amount_in を保有しています。
事後条件
- ユーザーは
amount_in を失い、amount_out ≥ minimum_amount_out を獲得します。
- プール手数料は
need_take_pnl_* カウンターを増加させます。
- 充填された場合、OpenBook オーダーが決済される可能性があります。
計算 — products/stable/math で説明されているルックアップテーブル補間。
SwapBaseOut
正確な出力スワップ(SwapBaseIn の逆)。同じアカウント、異なる計算方向。
引数
max_amount_in: u64
amount_out: u64
MonitorStep
許可不要なクランク:OpenBook 充填を決済し、リミットオーダーグリッドを更新します。
引数
plan_order_limit: u16
place_order_limit: u16
cancel_order_limit: u16
アカウント(合計約 18 個) — AMM v4 MonitorStep と同じで、読み取り専用として model_data_account を追加します。
前提条件
- OpenBook アカウント参照はプールにバインドされたマーケットと一致する必要があります。
事後条件
- 保留中の OpenBook 充填がプール金庫に決済されます。
- ルックアップテーブルカーブに基づいて新しいリミットオーダーが OpenBook にポストされます。
TargetOrders が更新されます。
SetParams
管理者のみ。プールパラメーター(ステータス、状態、手数料、所有者、モデルデータキーなど)を変更します。
引数
param: u8 // 変更するパラメーター(Status、State、Fees など)
value: Option<u64> // 新しい値(param が数値の場合)
new_pubkey: Option<Pubkey> // 新しいアドレス(param がアカウントキーの場合)
fees: Option<Fees> // 新しい手数料(param が Fees の場合)
アカウント — param によって異なります。常に amm_admin が署名者として必要です。
一般的なパラメーター:
param = 0(Status) — 操作ビットマスクを変更します。
param = 9(Fees) — trade_fee、pnl スプリットなどを変更します。
param = 11(ModelDataKey) — ルックアップテーブルを再バインド(稀、管理者の操作が必要)。
WithdrawPnl
管理者のみ。累積されたプロトコル手数料を need_take_pnl_* から指定された PnL アカウントに回収します。
引数 — なし(状態駆動)。
アカウント(合計約 14 個)
| # | 名前 | W | S | 説明 |
|---|
| 1 | token_program | | | |
| 2 | amm | W | | |
| 3 | amm_authority | | | |
| 4 | amm_open_orders | W | | |
| 5 | pool_coin_token_account | W | | |
| 6 | pool_pc_token_account | W | | |
| 7 | coin_pnl_dest | W | | 管理者のコインアカウント(手数料を受け取る)。 |
| 8 | pc_pnl_dest | W | | 管理者の pc アカウント(手数料を受け取る)。 |
| 9 | pnl_admin | | S | 署名者(プール所有権と一致する必要があります)。 |
| 10+ | OpenBook アカウント(約 4 個) | | | 最初に保留中の充填を決済。 |
前提条件
pnl_admin は認可されている必要があります。
事後条件
need_take_pnl_coin と need_take_pnl_pc が管理者のアカウントに転送されます。
- カウンターがゼロ化されます。
WithdrawSrm
レガシー(新しいプールでは使用しないでください)。初期の Serum 時代のプールから SRM 手数料割引トークンリベートを回収します。
引数
SimulateInfo
クライアントと SDK 用の読み取り専用クオートヘルパー。
引数
param: u8 // PoolInfo、SwapBaseInInfo、SwapBaseOutInfo、RunCrankInfo
swap_base_in_value: Option<SwapInstructionBaseIn>
swap_base_out_value: Option<SwapInstructionBaseOut>
使用方法 — スワップを実行せずにクオートを取得するために simulateTransaction を介して呼び出されます。
次に読むべき内容
- アカウント — アカウントフィールドレイアウトとサイズについて。
- 計算 — ルックアップテーブル補間ロジックについて。
- コードデモ — SDK からこれらを呼び出す方法を確認。
ソース:
raydium-stable/program/src/instruction.rs(enum と pack/unpack)
raydium-stable/program/src/processor.rs(実行ロジック)