> ## 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 プールの完全なアカウント構成 — AmmInfo、TargetOrders、OpenOrders、ボルト、LP ミント、オーソリティ — およびプールがバインドされている OpenBook アカウント。

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

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

<Info>
  2026-07 アップグレード以降、AMM v4 の OpenBook / Serum 依存関係は **削除されました** — 命令がもう OpenBook の状態を読み書きすることはありません。以下のマーケット アカウントは、レガシー v1 命令レイアウト上の位置プレースホルダーとして（受け入れられるが無視される）、および `AmmInfo` の参照フィールドとしてのみ保持されます。V2 スワップ エントリポイントを使用してください。これらのアカウントを完全に省略します。このページは、古いトランザクションを読むために、アカウントを「プール所有」と「OpenBook（レガシー）」セクションにグループ化しています。
</Info>

## インベントリ

AMM v4 プールは作成時に 1 つのバインドされたマーケットを `AmmInfo` に記録します。全体像は以下の通りです：

| カテゴリ           | アカウント                               | オーナー         | 役割                                                                     |
| -------------- | ----------------------------------- | ------------ | ---------------------------------------------------------------------- |
| プール            | `AmmInfo`                           | AMM v4 プログラム | プール状態：蓄積されたフィー、ステータス、ボルトへの参照（およびレガシー フィールドとしてマーケット）。                   |
| プール            | `amm_authority`                     | AMM v4 プログラム | プログラム所有の PDA。ボルト移動に署名します。すべての AMM v4 プール間で共有されます。                      |
| プール            | `amm_open_orders`                   | OpenBook     | レガシー `OpenOrders` 参照。プログラムによってもう読み書きされません。v1 レイアウトで位置的に渡されます。          |
| プール            | `amm_target_orders`                 | AMM v4 プログラム | レガシー ターゲット オーダー アカウント。`WithdrawPnl`（アカウント #10）で参照されていますが、グリッドは構築されません。 |
| プール            | `pool_coin_token_account`           | SPL Token    | プールのコイン側ボルト（`amm_authority` の ATA）。                                    |
| プール            | `pool_pc_token_account`             | SPL Token    | プールの pc 側ボルト。                                                          |
| プール            | `lp_mint`                           | SPL Token    | ファンジブル LP ミント。                                                         |
| プール            | `pool_withdraw_queue`               | AMM v4 プログラム | レガシー キュー。遅延引き出し用。ゼロ長に保たれます。                                            |
| プール            | `pool_temp_lp`                      | AMM v4 プログラム | 補助 LP アカウント。                                                           |
| レガシー（OpenBook） | `serum_market`                      | OpenBook     | バインドされたマーケット。v1 レイアウトで渡されますが、もう検証または使用されません。                           |
| レガシー           | `serum_bids`、`serum_asks`           | OpenBook     | ビッド/アスク キュー。無視されます。                                                    |
| レガシー           | `serum_event_queue`                 | OpenBook     | 保留中のイベント。無視されます。                                                       |
| レガシー           | `serum_coin_vault`、`serum_pc_vault` | SPL Token    | マーケット レベルのボルト。無視されます。                                                  |
| レガシー           | `serum_vault_signer`                | OpenBook     | マーケット レベルの PDA。無視されます。                                                 |

注：「serum」プレフィックスは、後方互換性のため AMM v4 の IDL とフィールド名に保持されています。これらのアカウントは OpenBook 削除後、もう機能していません。

## `AmmInfo`

プールのルート状態アカウント。プールと OpenBook 参照の両方をインラインで保持するため、大きい（≈ 752 バイト）です。

```rust theme={null}
// programs/amm/src/state.rs (abridged; field order / names follow the IDL)
pub struct AmmInfo {
    pub status: u64,           // bitmask: swap/deposit/withdraw/crank enabled
    pub nonce:  u64,           // bump used to derive amm_authority
    pub order_num: u64,
    pub depth: u64,
    pub coin_decimals: u64,
    pub pc_decimals:   u64,
    pub state:         u64,    // internal state machine
    pub reset_flag:    u64,
    pub min_size:      u64,
    pub vol_max_cut_ratio: u64,
    pub amount_wave: u64,
    pub coin_lot_size: u64,    // legacy (OpenBook lot size); now initialized to 0
    pub pc_lot_size:   u64,    // legacy; now initialized to 0
    pub min_price_multiplier: u64,
    pub max_price_multiplier: u64,
    pub sys_decimal_value: u64,

    pub fees: Fees,            // trade/protocol/fund fee rates
    pub state_data: StateData,

    // Pool-owned accounts:
    pub coin_vault: Pubkey,
    pub pc_vault:   Pubkey,
    pub coin_vault_mint: Pubkey,
    pub pc_vault_mint:   Pubkey,
    pub lp_mint:  Pubkey,
    pub open_orders: Pubkey,   // pool's OpenOrders on OpenBook
    pub market: Pubkey,        // OpenBook market
    pub market_program: Pubkey, // OpenBook program ID
    pub target_orders: Pubkey,
    pub withdraw_queue: Pubkey,
    pub lp_vault:       Pubkey, // = pool_temp_lp
    pub owner: Pubkey,          // admin (multisig)
    pub lp_reserve: u64,
    pub padding: [u64; 3],
}

pub struct Fees {
    pub min_separate_numerator:   u64,     // 5
    pub min_separate_denominator: u64,     // 10_000
    pub trade_fee_numerator:      u64,     // 25  → used by OpenBook integration
    pub trade_fee_denominator:    u64,     // 10_000
    pub pnl_numerator:            u64,     // 12  → protocol's share OF the swap fee
    pub pnl_denominator:          u64,     // 100 → so 12/100 = 12% of fee, = 0.03% of volume
    pub swap_fee_numerator:       u64,     // 25  → 0.25% gross swap fee
    pub swap_fee_denominator:     u64,     // 10_000
}

pub struct StateData {
    pub need_take_pnl_coin: u64,        // still updated — accrued protocol fee (coin side)
    pub need_take_pnl_pc:   u64,        // still updated — accrued protocol fee (pc side)
    pub total_pnl_pc:   u64,            // DEPRECATED — no longer updated
    pub total_pnl_coin: u64,            // DEPRECATED — no longer updated
    pub pool_open_time: u64,            // still used — pool open timestamp
    pub padding: [u64; 2],              // reserved
    pub orderbook_to_init_time: u64,    // DEPRECATED — no longer updated
    pub swap_coin_in_amount: u128,      // DEPRECATED — volume counters frozen
    pub swap_pc_out_amount:  u128,      // DEPRECATED
    pub swap_acc_pc_fee:    u64,        // DEPRECATED
    pub swap_pc_in_amount:  u128,       // DEPRECATED
    pub swap_coin_out_amount: u128,     // DEPRECATED
    pub swap_acc_coin_fee:  u64,        // DEPRECATED
}
```

<Note>
  構造体の **レイアウトは変更されていません**（バイト互換）ため、既存のデシリアライザーは動作し続けますが、OpenBook 削除後、上記の `DEPRECATED` とマークされたフィールドは **もう書き込まれません** — `swap_*` ボリューム カウンターは最後の値で凍結されます。ボリューム分析には、これらのフィールドではなくトレード ログを使用してください。`need_take_pnl_*` と `pool_open_time` のみがアクティブに保持されます。
</Note>

インテグレーター向けフィールド：

* **`coin_vault`**、**`pc_vault`** — プールの SPL Token ボルト。`coin` は Serum/OpenBook 規約により `token_0`（ベース）、`pc` は `token_1`（クォート）です。
* **`coin_decimals`**、**`pc_decimals`** — ミントに対応します。
* **`open_orders`**、**`target_orders`**、**`market`** — レガシー参照フィールド。`AmmInfo` に存在し、v1 命令レイアウトで位置的に渡されますが、プログラムはもう読み取りまたは検証しません。V2 スワップ エントリポイントはこれらを省略します。
* **`fees.swap_fee_numerator / swap_fee_denominator`** — 合計トレード フィー。デフォルト `25 / 10_000 = 0.25%`。
* **`status`** — 操作をゲートするビットマスク。`AdminSetStatus` 経由で管理者が設定可能です。
* **`state_data.need_take_pnl_*`** — 蓄積された総フィーと掃引されたもの間のデルタ。`TakePnl` はこれらをゼロにします。

## OpenBook 配線

<Note>
  **削除されました。** OpenBook / Serum 依存関係はプログラムから削除されました（2026-07 アップグレード）。このセクションで説明されているアカウントはもう検証または使用されません。`AmmInfo` の参照フィールドおよびレガシー v1 命令レイアウトの位置プレースホルダーとして残ります。**V2 スワップ エントリポイント**（[`SwapBaseInV2` / `SwapBaseOutV2`](/ja/products/amm-v4/instructions)）を使用してください。これらのアカウントを完全にスキップします。
</Note>

レガシー **v1** `SwapBaseIn` / `SwapBaseOut`、`Deposit`、または `Withdraw` 命令を呼び出すとき、アカウント **数** は古いレイアウトと一致する必要があります（マーケット アカウントは歴史的位置を占めます）が、その **内容はもう確認されません** — CPI は発行されません。新しいコードは V2 スワップ バリアントを使用する必要があります。これらはこれらのアカウントをまったく取りません。

```ts theme={null}
const market = ...;  // OpenBook market PublicKey

// Fields OpenBook exposes on its market account:
const marketDecoded = OpenBookMarket.decode(marketAccountData);
const {
  bids:           serumBids,
  asks:           serumAsks,
  eventQueue:     serumEventQueue,
  requestQueue:   serumRequestQueue,
  baseVault:      serumCoinVault,
  quoteVault:     serumPcVault,
  vaultSignerNonce,
} = marketDecoded;

const serumVaultSigner = PublicKey.createProgramAddressSync(
  [market.toBuffer(), u64ToBytes(vaultSignerNonce)],
  OPENBOOK_PROGRAM_ID,
);
```

AMM の `amm_open_orders` は OpenBook 所有のアカウント。このマーケット上のプールのリミット オーダー状態を保持します：アクティブなオーダー、決済残高、リファラーなど。`amm_target_orders` は AMM 側：プログラムが現在ポストされているものと安価に比較でき、差分をプレイス / キャンセルできるように、AMM の *意図された* グリッド（各オーダー スロットの価格/サイズ）を保持します。

## オーソリティ PDA

AMM v4 プログラム全体に対して、正確に 1 つの `amm_authority` PDA があります。そのシードは単純です（`["amm authority"]`）。そのバンプはすべての `AmmInfo` に保存されます。このオーソリティはすべての AMM v4 プールのすべてのトークン移動に署名します。

```ts theme={null}
const AMM_V4_PROGRAM_ID = new PublicKey(
  "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8",
);
const [ammAuthority] = PublicKey.findProgramAddressSync(
  [Buffer.from("amm authority")],
  AMM_V4_PROGRAM_ID,
);
```

OpenBook 操作に署名するために、プールごとに導出される別の **プール スコープ** オーソリティがあります（`amm_authority` 上記は実際にこのプログラムの設計ではその両方をカバーします。異なるバージョンは異なる導出を使用したため、コード内の特定のプールの `AmmInfo.nonce` を確認してください）。

## ボルト

プールの SPL Token ボルトは、`owner` が `amm_authority` である標準的なトークン アカウントです。ATA ではありません — それらのアドレスは `Initialize` で `["amm_associated_seed", coin_mint_or_pc_mint, market, amm_id]` シードで導出される特定の PDA です。アドレスは `AmmInfo` に保存されます。導出は 1 回限りの好奇心です。

Token-2022 は **サポートされていません**。プログラムはすべてのボルト移動に対して SPL Token のプログラム ID をハードコードします。AMM v4 プールを Token-2022 ミントにバインドしようとすると、`Initialize` で失敗します。

## LP ミント

オーソリティが `amm_authority` である古典的な SPL Token ミント。総供給はプールの LP 所有権を追跡します。LP を焼却すると、両方のボルトからトークンが比例的に返されます。AMM v4 は CPMM より前のため、プール状態に `lp_supply` ミラーはありません — ミントのオンチェーン供給を直接読み取ってください。

## ステータス ビットマスク

`AmmInfo.status` は操作をゲートします。ビット（位置はプログラム バージョン間で異なる可能性があります — ソースで確認してください）：

| ビット | フラグ                 | 効果                   |
| --- | ------------------- | -------------------- |
| 0   | `SWAP_DISABLED`     | `Swap*` は拒否します。      |
| 1   | `DEPOSIT_DISABLED`  | `Deposit` は拒否します。    |
| 2   | `WITHDRAW_DISABLED` | `Withdraw` は拒否します。   |
| 3   | `CLMM_LIKE_MIGRATE` | ops で使用される移行ゲート フラグ。 |

Raydium マルチシグは `SetParams`（`param = Status` で）経由でこれらを設定します。（`AdminCancelOrders` は削除されました。）

## オブザベーション / オラクル

**AMM v4 には専用のオブザベーション アカウントがありません。** オンチェーン TWAP が必要な他のプロトコルは、通常 OpenBook のブック クロッシングを間接的に消費するか、オフチェーンを読み取ります。Raydium TWAP とプログラム サポートが必要な場合は、CPMM または CLMM を使用してください。

## スクラッチからプールのアカウントを導出する

AMM v4 は決定論的なペアごと PDA 用に設計されていません（Solana 規約より前）。正規の `amm_id` は **シード キーペア** です。以下で導出されます：

```
ammId = createWithSeed(
  owner: ammAuthority,
  seed:  marketPubkey.toBase58().slice(0, 32),
  programId: AMM_V4_PROGRAM_ID,
)
```

同じシード キー パターンは `amm_open_orders`、`amm_target_orders`、`amm_withdraw_queue`、`pool_temp_lp`、`pool_coin_token_account`、`pool_pc_token_account`、および `lp_mint` に適用されます。SDK と API はこれらを事前計算します。`raydium-sdk-v2` の `Liquidity.getAssociatedPoolKeys` を参照してください。

実際には、インテグレーターは `GET https://api-v3.raydium.io/pools/info/ids?ids=<POOL_ID>` または SDK からプールの完全なアカウント セットを読み取ります。手動導出はめったに必要ありません。

## ライフサイクル クイック リファレンス

| イベント                                  | 作成されたアカウント                                                                                          | 破棄されたアカウント |
| ------------------------------------- | --------------------------------------------------------------------------------------------------- | ---------- |
| `Initialize2`                         | `amm_info`、`amm_open_orders`、`amm_target_orders`、ボルト、`lp_mint`、`pool_withdraw_queue`、`pool_temp_lp` | —          |
| `Deposit`                             | —（ユーザー LP ATA を作成する可能性があります）                                                                        | —          |
| `Withdraw`                            | —                                                                                                   | —          |
| `SwapBaseIn` / `SwapBaseOut`（v1 / V2） | —（ユーザー ATA を作成する可能性があります）                                                                           | —          |
| `WithdrawPnl`                         | —                                                                                                   | —          |

プールとそのアカウントは無期限に存続します。流動性が完全に引き出されても、`AmmInfo` は残ります。

## どこで何を読むか

* **数学とフィー計算**：[`products/amm-v4/math`](/ja/products/amm-v4/math)。
* **フィー分割と CPMM/CLMM との比較**：[`products/amm-v4/fees`](/ja/products/amm-v4/fees)。
* **命令アカウント リスト**：[`products/amm-v4/instructions`](/ja/products/amm-v4/instructions)。
* **OpenBook アカウント導出**：OpenBook プログラム ドキュメント（[`github.com/openbook-dex/program`](https://github.com/openbook-dex/program)）。

ソース：

* [Raydium AMM プログラム — `raydium-io/raydium-amm`](https://github.com/raydium-io/raydium-amm)
* [`reference/program-addresses`](/ja/reference/program-addresses)（正規プログラム ID）
* OpenBook / Serum プロトコル（相手方アカウント）
