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 による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
AMM v4命令は、プール側(AMM v4プログラムアカウント)とマーケット側(バインドされたマーケット用のOpenBookアカウント)の両方を均一に想定しています。いずれかのセットを省略またはミスマッチするとリバートします。以下のアカウントリストは、Raydium SDKのフィールド名を使用して明確にしています。基盤となるIDLでは、serum_*プレフィックスを使用する場合があります。
命令インベントリ
| グループ | 命令 | 注記 |
|---|
| プールのライフサイクル | Initialize2 | 現在のプール作成命令(まだ機能していますが、UIは新しいプールをCPMMにデフォルト設定)。 |
| リクイディティ | Deposit | リクイディティを追加し、LPを受け取ります。 |
| リクイディティ | Withdraw | LPをバーン、両方のサイドを比例配分で受け取ります。 |
| スワップ | SwapBaseIn | 正確な入力スワップ(フルパス:ボールト + OpenBook)。 |
| スワップ | SwapBaseOut | 正確な出力スワップ(フルパス)。 |
| スワップ | SwapBaseInV2 | OpenBookをバイパスする正確な入力スワップ — ボールトのみ、アカウント数が少なくなります。 |
| スワップ | SwapBaseOutV2 | OpenBookをバイパスする正確な出力スワップ。 |
| メンテナンス | SetParams | 管理者:プールのパラメータを変更。 |
| メンテナンス | WithdrawPnl | 発生したプロトコルPnLを所有者アカウントに転送。 |
| メンテナンス | CreateConfigAccount | 管理者:プログラムレベルのAmmConfig PDAを初期化。 |
| メンテナンス | UpdateConfigAccount | 管理者:プログラムレベルの設定パラメータを変更。 |
SDKはユーザーが使用する命令のビルダーのみを公開します。メンテナンス命令は通常、Raydiumキーパーが呼び出します。
Initialize2
既存のOpenBookマーケットにバインドされた新しいAMM v4プールをブートストラップします。
引数
nonce: u8
open_time: u64
init_pc_amount: u64
init_coin_amount: u64
アカウント(書き込み可能 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 | | |
| 8 | coin_mint | | | |
| 9 | pc_mint | | | |
| 10 | pool_coin_token_account | W | | |
| 11 | pool_pc_token_account | W | | |
| 12 | pool_withdraw_queue | W | | |
| 13 | pool_target_orders_account | W | | |
| 14 | pool_lp_token_account | W | | 作成者のLP ATA。 |
| 15 | pool_temp_lp_token_account | W | | スクラッチアカウント。 |
| 16 | market_program | | | OpenBookプログラム。 |
| 17 | market | | | OpenBookマーケット。 |
| 18 | user_wallet | W | S | 作成者。レント代を支払い、初期デポジットを提供。 |
| 19 | user_token_coin | W | | |
| 20 | user_token_pc | W | | |
後続条件
lp_supply = sqrt(init_coin_amount × init_pc_amount) − INIT_BURN。ここでINIT_BURN ≈ 100 LP単位が流通から除外されます。
- OpenBookオーダーはまだ掲示されていません。最初の
MonitorStepが初期グリッドを掲示します。
一般的なエラー — InvalidInput(小数点不一致、ソート未実施)、NotApproved、OpenBook側のInvalidMarketState。
Deposit
リクイディティを追加します。
引数
max_coin_amount: u64
max_pc_amount: u64
base_side: u64 // 0 = coinにベース, 1 = pcにベース
// (SDK のいくつかのバリアントは other_amount_min も受け入れます)
アカウント(省略版)
| # | 名前 | W | S |
|---|
| 1 | token_program | | |
| 2 | amm | W | |
| 3 | amm_authority | | |
| 4 | amm_open_orders | | |
| 5 | amm_target_orders | W | |
| 6 | lp_mint | W | |
| 7 | pool_coin_token_account | W | |
| 8 | pool_pc_token_account | W | |
| 9 | market | | |
| 10 | user_coin_token_account | W | |
| 11 | user_pc_token_account | W | |
| 12 | user_lp_token_account | W | |
| 13 | user_owner | | S |
数学 — 標準的な比例配分。プールの有効リザーブ(ボールト+オンボック)を使用して、SDKは指定されたLP量をもたらすcoin/pcペアを計算し、max_*に照らして検証します。いずれかのサイドが上限を超える場合はExceededSlippageでリバート。
Withdraw
LP をバーン、両方のサイドを受け取ります。
引数
アカウント — Depositと同じですが、方向が逆です。lp_mintはバーン用に書き込み可能で、ユーザーATAは受信者です。MonitorStepに似たOpenBookからのセットルステップが内部で発生するため、返済は新しいリザーブを使用します。
SwapBaseIn
正確な入力スワップ。常にAMMパススワップ(OpenBookマッチングを通じてルーティングされません)。
新しいコードにはV2バリアントを使用してください。 AMM v4は不要になったため、OpenBookと流動性を共有しなくなり、V1エントリーポイント(SwapBaseIn、SwapBaseOut)— マーケット側の検証のためにOpenBookアカウントの完全なセットを必要とするもの — は機能的に冗長です。新しい統合はSwapBaseInV2 / SwapBaseOutV2を使用すべきです。これらは大幅に小さいアカウントリストを取り、今日の標準的な実行パスを表します。V1形式は、完全性のため、および既存のオンチェーン取引を読むためにここに記載されています。
引数
amount_in: u64
minimum_amount_out: u64
アカウント(省略版)
| # | 名前 | 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 | market_program | | |
| 9 | market | W | |
| 10 | market_bids | W | |
| 11 | market_asks | W | |
| 12 | market_event_queue | W | |
| 13 | market_coin_vault | W | |
| 14 | market_pc_vault | W | |
| 15 | market_vault_signer | | |
| 16 | user_source_token_account | W | |
| 17 | user_dest_token_account | W | |
| 18 | user_owner | | S |
数学 — products/amm-v4/mathを参照してください。
前提条件
amm.statusがスワップを許可(ステータスビットマスクのビット0が設定されていない)。
amm.state_data.pool_open_time <= now。
amount_in > 0。
user_source_token_accountは少なくともamount_inを保有。
後続条件
- ユーザーはソーストークンから
amount_inを失い、デストトークンからamount_out ≥ minimum_amount_outを獲得します。
state_data.swap_*_in_amountとswap_*_out_amountがインクリメント(分析用)。
need_take_pnl_*がプロトコル手数料シェアでインクリメント。
一般的なエラー — ExceededSlippage、InvalidInput、InvalidStatus、InvalidMarket。
SwapBaseOut
正確な出力。SwapBaseInの逆数。アカウントは同じ。
引数
max_amount_in: u64
amount_out: u64
SwapBaseInV2 / SwapBaseOutV2
OpenBookアカウント全体をスキップするバリアントスワップエントリーポイント。数学はV1パスと同じですが、アカウントリストはAMM側のみに縮小します。
| # | 名前 | W | S |
|---|
| 1 | token_program | | |
| 2 | amm | W | |
| 3 | amm_authority | | |
| 4 | amm_open_orders | | |
| 5 | pool_coin_token_account | W | |
| 6 | pool_pc_token_account | W | |
| 7 | user_source_token_account | W | |
| 8 | user_dest_token_account | W | |
| 9 | user_owner | | S |
プールの有効リザーブは依然としてOpenBookに掲示されたトークンを考慮しているため、クォート数学は変わりません。計算を節約し、同じトランザクション内でOpenBookクランクが必要ない場合にマーケットアカウントを渡すのを避けるためにV2を使用します。Raydiumルーターは常にAMM v4を通じてルーティングする際にV2形式を使用します。
引数はV1形式と同じです(SwapBaseInV2の場合amount_in / minimum_amount_out、SwapBaseOutV2の場合max_amount_in / amount_out)。
MonitorStep(レガシー / 無効)
クランクされなくなりました。 AMM v4は不要になったため、OpenBookと流動性を共有しなくなり、MonitorStepは何もすることがありません — プールにはOpenBookに掲示されたオーダーがありません。命令は下位互換性のためにオンチェーンプログラムに残っていますが、Raydiumキーパーはもはや呼び出しません。手動で呼び出すことは実質的にノーオプ(ゼロ化されたステート更新以外)であり、統合者には必要ありません。
元々、この命令はプールのOpenBook相互作用をクランクしていました。
引数
plan_order_limit: u16
place_order_limit: u16
cancel_order_limit: u16
アカウント — スワップ上記のすべて、プラス管理OpenBookアカウント。
元の効果(実践ではもはや関連性がありません):
- 満たされたすべてのオーダーを決済(その収益はOpenBook CPIを通じて
market_coin_vault/market_pc_vaultからプールのボールトに移動)。
- 価格またはサイズが
target_ordersに一致しなくなった古いオーダーをキャンセル。
target_ordersとamm_open_ordersの間のギャップを埋めるための新しいオーダーを掲示。
パーミッションレス。任意のアカウントが呼び出すことができました。歴史的にはRaydiumキーパーがそれを定期的に行っていました。
WithdrawPnl / TakePnl
発生したプロトコル手数料の管理者スイープ。
引数
WithdrawPnlは引数を取りません。need_take_pnl_*を読み、その正確な額を移動します。
アカウント(省略版)
| # | 名前 | W | S | |
|---|
| 1 | token_program | | | |
| 2 | amm | W | | |
| 3 | amm_authority | | | |
| 4 | amm_config | | | |
| 5 | amm_open_orders | W | | |
| 6 | pool_coin_token_account | W | | |
| 7 | pool_pc_token_account | W | | |
| 8 | pnl_coin_token_account | W | | 受取人。AmmConfigに保存。 |
| 9 | pnl_pc_token_account | W | | |
| 10 | pnl_owner | | S | 管理マルチシグ。 |
| 11 | market_program | | | |
| 12 | market | W | | |
| 13 | market_event_queue | W | | |
| 14 | market_coin_vault | W | | |
| 15 | market_pc_vault | W | | |
| 16 | market_vault_signer | | | |
効果
need_take_pnl_coinをpool_coin_token_accountからpnl_coin_token_accountに転送します。
- pcの場合も同様。
need_take_pnl_coinとneed_take_pnl_pcをゼロ化。
発生したPnLがすでに不変量から除外されているため、リザーブに変更はありません。
SetParams
管理者パラメータ変更:ステータスビットマスク、オーダーグリッドの深さ、量の波、手数料(稀)など。Raydiumマルチシグによって呼び出されます。引数はCPMMのUpdateAmmConfigに類似した、param: u8タグ+ペイロード。
状態変化マトリックス
| 命令 | lp_mint供給 | ボールト | PnLカウンタ | OpenBook |
|---|
Initialize2 | 初期供給は作成者にミント | + init_coin_amount、+ init_pc_amount | 0 | OpenOrders作成 |
Deposit | + | 両方とも+ | — | 満たされたオーダーの決済 |
Withdraw | − | 両方とも− | — | 満たされたオーダーの決済 |
SwapBaseIn | — | + 入力、− 出力 | + pnl シェア | グリッド再掲示の可能性 |
SwapBaseOut | — | + 入力、− 出力 | + pnl シェア | グリッド再掲示の可能性 |
MonitorStep | — | 満たされたオーダーの決済 | — | キャンセル / 掲示 |
WithdrawPnl | — | −(pnl スイープ) | 0 | — |
SetParams | — | — | — | — |
次のステップ
ソース: