メインコンテンツへスキップ

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 とほぼ同じインストラクションセットを共有しています。独自のインストラクションは InitModelDataUpdateModelData で、ルックアップテーブルを生成および更新します。スワップ、デポジット、ウィズドロー、クランク(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 プールをブートストラップします。 引数
nonce: u8
open_time: u64
アカウント(書き込み可能 W、署名者 S
#名前WS説明
1token_programSPL Token。
2system_program
3rent
4ammWプールの AmmInfo アカウント。
5amm_authorityプログラム全体の PDA。
6amm_open_ordersWOpenBook OpenOrders
7lp_mintWファンジブル LP トークンミント。
8coin_mint
9pc_mint
10pool_coin_token_accountWプールのコイン金庫。
11pool_pc_token_accountWプールの pc 金庫。
12amm_target_ordersWOpenBook オーダー用グリッド。
13model_data_accountルックアップテーブルアカウント。
14serum_programOpenBook プログラム。
15serum_marketOpenBook マーケット。
16user_dest_lp_tokenW作成者の LP ATA(初期 LP を受け取る)。
17user_walletWS作成者。レント料金を支払い、初期デポジットに資金提供。
(オプション)srm_tokenW手数料割引用 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
#名前WS説明
1model_data_accountW50k 要素テーブルアカウント。
2amm_adminSプール管理者(権限を証明するために署名する必要があります)。
前提条件
  • 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
#名前WS説明
1amm_adminS署名者(プール管理者である必要があります)。
2model_data_accountWテーブルアカウント。
前提条件
  • amm_adminAmmInfo.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 個)
#名前WS説明
1token_program
2ammW
3amm_authority
4amm_open_ordersW
5amm_target_ordersW
6pool_coin_token_accountW
7pool_pc_token_accountW
8model_data_account読み取り専用ルックアップテーブル。
9serum_program
10serum_marketW
11serum_bidsW
12serum_asksW
13serum_event_queueW
14serum_coin_vaultW
15serum_pc_vaultW
16serum_vault_signer
17user_source_tokenWユーザーの入力トークンアカウント。
18user_dest_tokenWユーザーの出力トークンアカウント。
19user_ownerSユーザー(トランザクション署名者)。
前提条件
  • 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 個)
#名前WS説明
1token_program
2ammW
3amm_authority
4amm_open_ordersW
5pool_coin_token_accountW
6pool_pc_token_accountW
7coin_pnl_destW管理者のコインアカウント(手数料を受け取る)。
8pc_pnl_destW管理者の pc アカウント(手数料を受け取る)。
9pnl_adminS署名者(プール所有権と一致する必要があります)。
10+OpenBook アカウント(約 4 個)最初に保留中の充填を決済。
前提条件
  • pnl_admin は認可されている必要があります。
事後条件
  • need_take_pnl_coinneed_take_pnl_pc が管理者のアカウントに転送されます。
  • カウンターがゼロ化されます。

WithdrawSrm

レガシー新しいプールでは使用しないでください)。初期の Serum 時代のプールから SRM 手数料割引トークンリベートを回収します。 引数
amount: u64

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(実行ロジック)