このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
Stable AMM は独立したプログラムであり、独自のプログラム ID を持ちます。AMM v4 プログラムのモードではなく、AMM v4 を通じて取引されるものではなく、別途デプロイ、アップグレード、呼び出しされます。フィーとアカウントレイアウトの規約においてのみ AMM v4 に似ています。
2026-06-22 アップグレード — 不要な OpenBook(マーケット)コードの削除。 Stable AMM は長い間 OpenBook に注文を投稿していません。オーダーブック マーケットメイキング パスは数年間休止状態にありました。このアップグレードは残されたマーケット関連のアカウントとコードを削除します — ライブ取引動作は変更されません。インテグレーターにとって 2 つの結果があります:
- より小さいアカウントレイアウト。
SwapBaseIn / SwapBaseOut(18 → 9)、Deposit(14 → 12)、Withdraw(21/22 → 12)は不要な Serum/マーケット アカウントを削除します。古いレイアウトは後方互換性のため引き続き解析されます。WithdrawPnl(16 → 10)は互換性パスのない厳密な破壊的変更です(管理者のみ)。
- ほとんどの命令が削除されました。
SwapBaseIn、SwapBaseOut、Deposit、Withdraw、WithdrawPnl のみが呼び出し可能です。他のすべての命令は呼び出せなくなりました。
変更ログ:reference/changelog。
命令インベントリ
呼び出し可能
| 命令 | カテゴリ | 注記 |
|---|
Deposit | リクイディティ | リクイディティを追加し、LP を受け取ります。新しい 12 アカウント レイアウト。古い 14 アカウント レイアウトも互換性があります。 |
Withdraw | リクイディティ | LP をバーン、両側を受け取ります。新しい 12 アカウント レイアウト。古い 21/22 アカウント レイアウトも互換性があります。 |
SwapBaseIn | スワップ | 正確な入力スワップ。新しい 9 アカウント レイアウト。古い 18 アカウント レイアウトも互換性があります。 |
SwapBaseOut | スワップ | 正確な出力スワップ。新しい 9 アカウント レイアウト。古い 18 アカウント レイアウトも互換性があります。 |
WithdrawPnl | 管理者 | 蓄積されたプロトコル フィーをスイープします。新しい 10 アカウント レイアウト(厳密な破壊的変更 — 古いレイアウト互換性なし)。 |
削除済み(呼び出し不可)
これらは 2026-06-22 アップグレードで削除され、呼び出せなくなりました。削除された命令を参照してください。
| 命令 | 旧カテゴリ | 旧目的 |
|---|
Initialize | ライフサイクル | プールを作成します。 |
PreInitialize | ライフサイクル | レガシー事前割り当てヘルパー。 |
InitModelData | モデル設定 | ルックアップ テーブルを作成して初期化します。 |
UpdateModelData | モデル設定 | 呼び出しごとに最大 5 つのテーブル要素を入力します。 |
MonitorStep | クランク | OpenBook フィルを決済し、注文を再投稿します。 |
SetParams | 管理者 | プール パラメーターを変更します。 |
WithdrawSrm | レガシー | SRM フィー割引リベートをスイープします。 |
SimulateInfo | 診断 | 読み取り専用クォート ヘルパー。 |
Deposit
リクイディティを追加し、LP トークンを受け取ります。
引数
max_coin_amount: u64
max_pc_amount: u64
base_side: u64 // 0 = base on coin, 1 = base on pc
アカウント — 新しいレイアウト、12 アカウント(書き込み可能 W、署名者 S)
| # | 名前 | W | S | 注記 |
|---|
| 0 | token_program | | | SPL Token。 |
| 1 | amm | W | | プールの AmmInfo。 |
| 2 | amm_authority | | | プログラム全体の PDA。 |
| 3 | amm_target_orders | W | | |
| 4 | amm_lp_mint | W | | LP ミント。 |
| 5 | amm_coin_vault | W | | プール コイン ボールト。 |
| 6 | amm_pc_vault | W | | プール pc ボールト。 |
| 7 | model_data_account | | | 読み取り専用ルックアップ テーブル。 |
| 8 | user_source_coin | W | | ユーザーのコイン入力。 |
| 9 | user_source_pc | W | | ユーザーの pc 入力。 |
| 10 | user_dest_lp | W | | ユーザーの LP ATA。 |
| 11 | user_source_owner | | S | トランザクション署名者。 |
互換性: amm_open_orders(旧 #3)と serum_market(旧 #9)は削除されました。14 アカウントが渡される場合、命令は古い 14 アカウント レイアウトで解析されます。Serum アカウントは無視されます。
数学 — ルックアップ テーブルを使用した標準的なプロラタ計算で比率を計算します。SDK は目的の LP 量に対するコイン/pc ペアを計算し、最大上限に対してチェックします。
Withdraw
LP をバーン、両側をプロラタで受け取ります。
引数
amount: u64 // バーンする LP トークン
アカウント — 新しいレイアウト、12 アカウント(書き込み可能 W、署名者 S)
| # | 名前 | W | S | 注記 |
|---|
| 0 | token_program | | | SPL Token。 |
| 1 | amm | W | | プールの AmmInfo。 |
| 2 | amm_authority | | | プログラム全体の PDA。 |
| 3 | amm_target_orders | W | | |
| 4 | amm_lp_mint | W | | LP ミント。 |
| 5 | amm_coin_vault | W | | プール コイン ボールト。 |
| 6 | amm_pc_vault | W | | プール pc ボールト。 |
| 7 | model_data_account | | | 読み取り専用ルックアップ テーブル。 |
| 8 | user_source_lp | W | | ユーザーの LP ソース。 |
| 9 | user_dest_coin | W | | ユーザーのコイン出力。 |
| 10 | user_dest_pc | W | | ユーザーの pc 出力。 |
| 11 | user_lp_owner | | S | トランザクション署名者。 |
互換性: 9 つの Serum アカウント(amm_open_orders、serum_program、serum_market、serum_coin_vault、serum_pc_vault、serum_vault_signer、serum_event_q、serum_bids、serum_asks)は削除されました。古い 21 または 22 アカウント レイアウトは引き続き受け入れられます。ただし、22 番目のオプション referrer_pc_wallet アカウントのリファラル フィー ロジックは削除されました — 引き続き渡すことはできますが、効果がなくなりました。
前提条件
user_source_lp は少なくとも amount を保有しています。
事後条件
amount LP トークンがバーンされます。
- ユーザーは現在のプロラタに従ったコインと pc の量を受け取ります。蓄積されたフィーで調整されます。
SwapBaseIn
ルックアップ テーブルを使用した価格設定による正確な入力スワップ。
引数
amount_in: u64
minimum_amount_out: u64
アカウント — 新しいレイアウト、9 アカウント(書き込み可能 W、署名者 S)
| # | 名前 | W | S | 注記 |
|---|
| 0 | spl_token program | | | SPL Token。 |
| 1 | amm | W | | プールの AmmInfo。 |
| 2 | amm_authority | | | プログラム全体の PDA。 |
| 3 | amm_coin_vault | W | | プール コイン ボールト。 |
| 4 | amm_pc_vault | W | | プール pc ボールト。 |
| 5 | model_data_account | | | 読み取り専用ルックアップ テーブル。 |
| 6 | user_source_token | W | | ユーザーの入力トークン アカウント。 |
| 7 | user_destination_token | W | | ユーザーの出力トークン アカウント。 |
| 8 | user_source_owner | | S | ユーザー(トランザクション署名者)。 |
互換性: 9 つの OpenBook アカウント(amm_open_orders、serum_program、serum_market、serum_bids、serum_asks、serum_event_queue、serum_coin_vault、serum_pc_vault、serum_vault_signer)は削除されました。渡されるアカウント数が 9 でない 場合、命令は古い 18 アカウント レイアウトで解析されます。Serum アカウントは引き続きそれらの位置を占める必要がありますが、その内容は検証または使用されなくなります。
前提条件
amm.status はスワップを許可します。
user_source_token は amount_in 以上を保有しています。
事後条件
- ユーザーは
amount_in を失い、amount_out ≥ minimum_amount_out を獲得します。
- プール フィーは
need_take_pnl_* カウンターをインクリメントします。
数学 — products/stable/math で説明されているルックアップ テーブル補間。
SwapBaseOut
正確な出力スワップ(SwapBaseIn の逆)。同じ 9 アカウント レイアウト、異なる数学方向。
引数
max_amount_in: u64
amount_out: u64
WithdrawPnl
管理者のみ。need_take_pnl_* から蓄積されたプロトコル フィーを指定された PnL アカウントにスイープします。
厳密な破壊的変更 — 互換性パスなし。 この命令には古いレイアウトの解析がありません。古いレイアウトを送信すると、アカウント位置のずれにより InvalidTokenCoin などの検証エラーで失敗します(旧 #3 は open_orders でした)。WithdrawPnl を呼び出す管理者ツールは新しい 10 アカウント レイアウトに更新する必要があります。
引数 — なし(状態駆動)。
アカウント — 新しいレイアウト、固定 10 アカウント、管理者のみ(書き込み可能 W、署名者 S)
| # | 名前 | W | S | 注記 |
|---|
| 0 | spl_token program | | | SPL Token。 |
| 1 | amm | W | | プールの AmmInfo。 |
| 2 | amm_authority | | | プログラム全体の PDA。 |
| 3 | amm_coin_vault | W | | プール コイン ボールト。 |
| 4 | amm_pc_vault | W | | プール pc ボールト。 |
| 5 | amm_target_orders | W | | |
| 6 | model_data | | | ルックアップ テーブル。 |
| 7 | user_coin | W | | 管理者のコイン アカウント(フィーを受け取ります)。 |
| 8 | user_pc | W | | 管理者の pc アカウント(フィーを受け取ります)。 |
| 9 | amm_admin | | S | プール管理者(署名者)。 |
ロジック変更: プールの利用可能な資金が蓄積された PnL を引き出すのに不十分な場合、プールはもはや CancelAllOrdersState / Disabled に置かれません。命令は直接 TakePnlError を返します。オプションの referrer_pc_wallet も削除されました。
前提条件
amm_admin は認可されている必要があります。
事後条件
need_take_pnl_coin と need_take_pnl_pc は管理者のアカウントに転送されます。
- カウンターはゼロにリセットされます。
削除された命令
以下の命令は 2026-06-22 アップグレードで削除され、呼び出せなくなりました。これらは、インテグレーターが履歴トランザクションと SDK でそれらを認識できるようにするためにのみ、ここで文書化されています。
Initialize — 以前は新しい Stable AMM プールをブートストラップしました。削除されました。
PreInitialize — レガシー事前割り当てヘルパー。削除されました。
InitModelData — 以前は ModelDataInfo ルックアップ テーブルを作成して初期化しました。削除されました。
UpdateModelData — 以前は呼び出しごとに最大 5 つのルックアップ テーブル要素を入力しました。削除されました。
MonitorStep — フィルを決済し、注文グリッドを再投稿した OpenBook クランク。プールが OpenBook への投稿を停止した後、既に長い間休止状態でした。削除されました。
SetParams — 管理者パラメーター変更(ステータス、フィー、所有者、モデル データ キーなど)。削除されました。
WithdrawSrm — 初期の Serum 時代のプールから SRM フィー割引リベートをスイープしました。削除されました。
SimulateInfo — 読み取り専用クォート ヘルパー。削除されました。SDK のオフチェーン安定曲線ヘルパーを使用してクォートしてください(コード デモを参照)。
次のステップ
- アカウント — アカウント フィールド レイアウトとサイズについて。
- 数学 — ルックアップ テーブル補間ロジックについて。
- コード デモ — SDK からこれらを呼び出す方法を確認します。
ソース:
raydium-stable/program/src/instruction.rs(列挙型と pack/unpack)
raydium-stable/program/src/processor.rs(実行ロジック)