> ## 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.

# Stable AMM 命令

> 現在呼び出し可能な命令セット — Deposit、Withdraw、SwapBaseIn、SwapBaseOut、WithdrawPnl — および 2026-06-22 アップグレードで削除された命令。

<Info>
  **このページは AI による自動翻訳です。すべての内容は英語版を正とします。**

  [英語版を表示 →](/products/stable/instructions)
</Info>

<Info>
  Stable AMM は**独立したプログラム**であり、独自のプログラム ID を持ちます。AMM v4 プログラムのモードではなく、AMM v4 を通じて取引されるものではなく、別途デプロイ、アップグレード、呼び出しされます。フィーとアカウントレイアウトの規約においてのみ AMM v4 に似ています。
</Info>

<Warning>
  **2026-06-22 アップグレード — 不要な OpenBook（マーケット）コードの削除。** Stable AMM は**長い間 OpenBook に注文を投稿していません**。オーダーブック マーケットメイキング パスは数年間休止状態にありました。このアップグレードは残されたマーケット関連のアカウントとコードを削除します — ライブ取引動作は**変更されません**。

  インテグレーターにとって 2 つの結果があります：

  1. **より小さいアカウントレイアウト。** `SwapBaseIn` / `SwapBaseOut`（**18 → 9**）、`Deposit`（**14 → 12**）、`Withdraw`（**21/22 → 12**）は不要な Serum/マーケット アカウントを削除します。古いレイアウトは後方互換性のため引き続き解析されます。`WithdrawPnl`（**16 → 10**）は**互換性パスのない厳密な破壊的変更**です（管理者のみ）。
  2. **ほとんどの命令が削除されました。** `SwapBaseIn`、`SwapBaseOut`、`Deposit`、`Withdraw`、`WithdrawPnl` のみが呼び出し可能です。他のすべての命令は呼び出せなくなりました。

  変更ログ：[`reference/changelog`](/ja/reference/changelog)。
</Warning>

## 命令インベントリ

### 呼び出し可能

| 命令            | カテゴリ    | 注記                                                                      |
| ------------- | ------- | ----------------------------------------------------------------------- |
| `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`](/ja/products/stable/math) で説明されているルックアップ テーブル補間。

## `SwapBaseOut`

正確な出力スワップ（`SwapBaseIn` の逆）。同じ 9 アカウント レイアウト、異なる数学方向。

**引数**

```
max_amount_in: u64
amount_out: u64
```

## `WithdrawPnl`

管理者のみ。`need_take_pnl_*` から蓄積されたプロトコル フィーを指定された PnL アカウントにスイープします。

<Warning>
  **厳密な破壊的変更 — 互換性パスなし。** この命令には古いレイアウトの解析が**ありません**。古いレイアウトを送信すると、アカウント位置のずれにより `InvalidTokenCoin` などの検証エラーで失敗します（旧 #3 は `open_orders` でした）。`WithdrawPnl` を呼び出す管理者ツールは**新しい 10 アカウント レイアウトに更新する必要があります**。
</Warning>

**引数** — なし（状態駆動）。

**アカウント** — 新しいレイアウト、固定 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 のオフチェーン安定曲線ヘルパーを使用してクォートしてください（[コード デモ](/ja/products/stable/code-demos)を参照）。

## 次のステップ

* [アカウント](/ja/products/stable/accounts) — アカウント フィールド レイアウトとサイズについて。
* [数学](/ja/products/stable/math) — ルックアップ テーブル補間ロジックについて。
* [コード デモ](/ja/products/stable/code-demos) — SDK からこれらを呼び出す方法を確認します。

ソース：

* `raydium-stable/program/src/instruction.rs`（列挙型と pack/unpack）
* `raydium-stable/program/src/processor.rs`（実行ロジック）
