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

# AMM v4 命令

> すべての AMM v4 命令、その引数、期待されるプール・OpenBook アカウント、および各命令の前提条件・事後条件。

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

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

<Info>
  2026-07 プログラムアップグレード以降、AMM v4 の OpenBook / Serum 依存関係は**削除されました**。レガシー v1 の `SwapBaseIn` / `SwapBaseOut`、`Deposit`、`Withdraw` 命令は**古いアカウントレイアウトを保持**しており、後方互換性のためにマーケットアカウントは古い位置で受け入れられていますが、**検証または使用されなくなりました**（CPI は発行されません）。新しい統合では V2 スワップエントリポイントを使用してください。これらはマーケットアカウントを完全に省略します。いくつかの命令は削除され、リバートするようになりました。[変更ログエントリ](/ja/reference/changelog/2026-07-22-amm-v4-openbook-removal)を参照してください。以下のアカウントリストは Raydium SDK のフィールド名を使用しています。基礎となる IDL は時々 `serum_*` プレフィックスを使用します。
</Info>

## 命令インベントリ

| グループ       | 命令                    | タグ | 注記                                                       |
| ---------- | --------------------- | -- | -------------------------------------------------------- |
| プールライフサイクル | `Initialize2`         | 1  | 唯一のプール作成命令（UI は新規プールのデフォルトを CPMM に設定）。                   |
| リクイディティ    | `Deposit`             | 3  | リクイディティを追加し、LP を受け取ります。レイアウトは変更なし（マーケットアカウントは無視）。        |
| リクイディティ    | `Withdraw`            | 4  | LP をバーン、両側を按分で受け取ります。レイアウトは変更なし（マーケットアカウントは無視）。          |
| スワップ       | `SwapBaseIn`          | 9  | 正確な入力スワップ。v1 レイアウトは変更なし。マーケットアカウントは受け入れられますが無視されます。      |
| スワップ       | `SwapBaseOut`         | 11 | 正確な出力スワップ。上記と同じ。                                         |
| スワップ       | `SwapBaseInV2`        | 16 | **推奨。** マーケットアカウントなしの正確な入力スワップ。                          |
| スワップ       | `SwapBaseOutV2`       | 17 | **推奨。** マーケットアカウントなしの正確な出力スワップ。                          |
| メンテナンス     | `SetParams`           | 6  | 管理者：プールパラメータを変更します。**レイアウト + `param` 値が変更されました**（破壊的変更）。 |
| メンテナンス     | `WithdrawPnl`         | 7  | 累積プロトコル PnL をスイープします。**アカウントレイアウトが変更されました**（破壊的変更）。      |
| メンテナンス     | `CreateConfigAccount` | 14 | 管理者：プログラムレベルの `AmmConfig` PDA を初期化します。                   |
| メンテナンス     | `UpdateConfigAccount` | 15 | 管理者：プログラムレベルの設定パラメータを変更します。                              |

SDK はユーザー向け命令のビルダーのみを公開しています。メンテナンス命令は通常、Raydium キーパーによって呼び出されます。

**削除済み / 呼び出し不可**（`unimplemented!` でリバートし、クライアントビルダーは削除されました）：`Initialize`（タグ 0、`Initialize2` を使用）、`MonitorStep`（2）、`MigrateToOpenBook`（5）、`WithdrawSrm`（8）、`PreInitialize`（10、`Initialize2` を使用）、`SimulateInfo`（12）、`AdminCancelOrders`（13）。

## `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 オーダーは投稿されません（オーダーブックグリッドは削除されました）。`market_program` / `market` は引き続き渡されますが、参照フィールドとしてのみ保存されます。`coin_lot_size` / `pc_lot_size` / `min_size` は `0` に初期化されます。

**一般的なエラー** — `InvalidInput`（小数点の不一致、ソート順序が正しくない）、`NotAllowed`。

## `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 をバーン、両側を受け取ります。

**引数**

```
amount: u64    // バーンする LP
```

**アカウント** — `Deposit` と同じですが方向が逆です。`lp_mint` はバーン用に書き込み可能で、ユーザー ATA はレシーバーです。アカウントレイアウトは変更されていません（マーケットアカウントは引き続き位置的に渡され、無視されます）。OpenBook からのセットル手順はなくなりました。按分計算はボルト残高を直接使用します。

## `SwapBaseIn`

正確な入力スワップ。常に**AMM パス**スワップです（OpenBook マッチングを経由しません）。

<Note>
  **新しいコードでは V2 バリアントを使用してください。** AMM v4 の OpenBook 依存関係が削除されたため、V1 エントリポイント（`SwapBaseIn`、`SwapBaseOut`）は引き続き完全な 17 アカウントリスト（またはオプションのターゲットオーダーアカウント付きで 18）を期待していますが、OpenBook/マーケットアカウントは**位置的に受け入れられ、無視されます** — 検証されず、CPI は発行されません。間違ったアカウント*数*を渡すと引き続き `WrongAccountsNumber` でリバートしますが、マーケットアカウント*内容*はチェックされなくなりました。新しい統合では [`SwapBaseInV2` / `SwapBaseOutV2`](#swapbaseinv2-swapbaseoutv2) を使用してください。これらはより小さなアカウントリストを取り、今日の正規実行パスを表しています。V1 フォームは完全性のため、および既存のオンチェーントランザクションを読むためにここに記載されています。
</Note>

**引数**

```
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`](/ja/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` を獲得します。
* `need_take_pnl_*` はプロトコル手数料シェアだけ増加します。
* 注記：`state_data.swap_*_in_amount` / `swap_*_out_amount` 分析カウンターは**更新されなくなりました** — それらの値は凍結されています。ボリューム分析にはトレードログを使用してください。

**一般的なエラー** — `ExceededSlippage`、`InvalidInput`、`InvalidStatus`、`NotAllowed`（coin/pc ミント同一）。

## `SwapBaseOut`

正確な出力、`SwapBaseIn` の逆。同じアカウント。

**引数**

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

## `SwapBaseInV2` / `SwapBaseOutV2`

OpenBook アカウントを**完全にスキップ**するバリアントスワップエントリポイント（タグ **16** / **17**）。計算は V1 パスと同じですが、アカウントリストは AMM 側とユーザーだけに縮小します — **8 アカウント、`amm_open_orders` は渡されません**：

| # | 名前                          | W | S |
| - | --------------------------- | - | - |
| 1 | `token_program`             |   |   |
| 2 | `amm`                       | W |   |
| 3 | `amm_authority`             |   |   |
| 4 | `pool_coin_token_account`   | W |   |
| 5 | `pool_pc_token_account`     | W |   |
| 6 | `user_source_token_account` | W |   |
| 7 | `user_dest_token_account`   | W |   |
| 8 | `user_owner`                |   | S |

プールリザーブはボルト残高（保留中の PnL を除く）になるため、クォート計算は簡潔で v1 パスと同じです。V2 を使用してコンピュートを節約し、（現在無視されている）マーケットアカウントの渡却を避けてください。Raydium ルーターは AMM v4 を経由してルーティングする場合、常に V2 フォームを使用します。

引数は V1 フォームと同じです（`SwapBaseInV2` の場合は `amount_in / minimum_amount_out`、`SwapBaseOutV2` の場合は `max_amount_in / amount_out`）。

## `MonitorStep` およびその他の削除された命令

<Warning>
  **削除済み — 呼び出し不可。** 2026-07 アップグレード以降、`MonitorStep`（タグ 2）はプログラムから削除され、呼び出された場合**リバート**します（`unimplemented!`）。クライアントビルダーも削除されました。同じことが `MigrateToOpenBook`（5）、`WithdrawSrm`（8）、`SimulateInfo`（12）、`AdminCancelOrders`（13）、およびレガシー `Initialize`（0）/ `PreInitialize`（10）プール作成エントリポイントに適用されます — 代わりに `Initialize2` を使用してください。
</Warning>

歴史的に、`MonitorStep` はプールの OpenBook インタラクションをクランクしました：満たされたオーダーをセットル（OpenBook CPI を経由してマーケットボルトからプールボルトに収益を移動）、古いオーダーをキャンセル、`target_orders` と `amm_open_orders` の間のギャップを閉じるために新しいオーダーを投稿しました。OpenBook 依存関係が削除されたため、クランクするものはなく、命令は削除されました。引き続き呼び出すキーパーまたは統合は、呼び出しを削除する必要があります。

## `WithdrawPnl` / `TakePnl`

累積プロトコル手数料の管理者スイープ。

**引数**

* `WithdrawPnl` は引数を取りません。`need_take_pnl_*` を読み、正確な金額を移動します。

<Warning>
  **破壊的変更（管理者のみ）。** アカウントリストは 17（+1 オプション）から**10**に削減されました — `amm_open_orders` と 6 つのマーケットアカウントすべてが削除されました — **互換性パースなし**。古いレイアウトはミスアライン（古い #5 は `amm_open_orders`、現在は `pool_coin_token_account`）し、`InvalidCoinVault` などのエラーで失敗します。管理者ツールは更新する必要があります。
</Warning>

**アカウント**（新しい 10 アカウントレイアウト）

| #  | 名前                        | W | S |           |
| -- | ------------------------- | - | - | --------- |
| 1  | `token_program`           |   |   |           |
| 2  | `amm`                     | W |   |           |
| 3  | `amm_config`              |   |   |           |
| 4  | `amm_authority`           |   |   |           |
| 5  | `pool_coin_token_account` | W |   |           |
| 6  | `pool_pc_token_account`   | W |   |           |
| 7  | `pnl_coin_token_account`  | W |   | レシピエント。   |
| 8  | `pnl_pc_token_account`    | W |   |           |
| 9  | `pnl_owner`               |   | S | 管理者マルチシグ。 |
| 10 | `amm_target_orders`       | W |   |           |

**効果**

* `need_take_pnl_coin` を `pool_coin_token_account` から `pnl_coin_token_account` に転送します。
* pc についても同じ。
* `need_take_pnl_coin` と `need_take_pnl_pc` をゼロにします。
* **ロジック変更**：ボルト残高が累積 PnL をカバーするのに不十分な場合、命令は `TakePnlError` を直接返します（オーダーブック状態を操作しなくなりました）。

累積 PnL は既に不変から除外されているため、リザーブに変更はありません。

## `SetParams`

Raydium マルチシグによって呼び出される管理者パラメータ変更。引数は `param: u8` タグ + ペイロードです。

<Warning>
  **破壊的変更（管理者のみ）。** アカウントリストは `[amm (W), admin (S)]` だけに削減されました（権限、オープンオーダー、ターゲットオーダー、ボルト、およびすべてのマーケットアカウントが削除されました）。`param` 列挙型は**番号が付け直され、トリミングされました**：`Status` = 0、`State` = 1、`Fees` = **2**（以前は 9）、`SetOpenTime` = **3**（以前は 11）。すべてのオーダーブックグリッドパラメータと `AmmOwner`、`LastOrderDistance`、`UpdateOpenOrder` が削除され、`SetParamsInstruction` 構造体は `new_pubkey` と `last_order_distance` をドロップしました。管理者ツールは更新する必要があります。
</Warning>

## 状態変更マトリックス

OpenBook 列は削除されました — どの命令もオーダーブックに触れなくなりました。

| 命令                              | `lp_mint` 供給 | ボルト                                     | PnL カウンター |
| ------------------------------- | ------------ | --------------------------------------- | --------- |
| `Initialize2`                   | 初期供給が作成者にミント | `+ init_coin_amount`、`+ init_pc_amount` | 0         |
| `Deposit`                       | +            | + 両側                                    | —         |
| `Withdraw`                      | −            | − 両側                                    | —         |
| `SwapBaseIn` / `SwapBaseInV2`   | —            | + in、− out                              | + pnl シェア |
| `SwapBaseOut` / `SwapBaseOutV2` | —            | + in、− out                              | + pnl シェア |
| `WithdrawPnl`                   | —            | −（pnl スイープ）                             | 0         |
| `SetParams`                     | —            | —                                       | —         |

## 次のステップ

* [`products/amm-v4/code-demos`](/ja/products/amm-v4/code-demos) — スワップと LP フローの TypeScript 例。
* [`products/amm-v4/fees`](/ja/products/amm-v4/fees) — `WithdrawPnl` の詳細と手数料分割。
* [`reference/error-codes`](/ja/reference/error-codes) — 前方参照テーブル（AMM v4 エラーはそのページに記載されています）。

ソース：

* [Raydium AMM プログラム — `raydium-io/raydium-amm`](https://github.com/raydium-io/raydium-amm)
* Raydium SDK v2 `Liquidity` モジュール
* OpenBook プログラム — マーケット側のアカウント検証
