> ## 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>
  AMM v4 は、すべての操作が OpenBook 状態に接触するため、CPMM や CLMM よりも大幅にアカウント数が多くなります。このページではアカウントを「プール所有」と「OpenBook 所有」のセクションに分けており、インテグレータは各側がどちらなのかをすぐに確認できます。
</Info>

## インベントリ

AMM v4 プールは、作成時に正確に 1 つの OpenBook マーケットにバインドされます。現在の全体像は以下の通りです：

| カテゴリ              | アカウント                                | オーナー         | 役割                                          |
| ----------------- | ------------------------------------ | ------------ | ------------------------------------------- |
| Pool              | `AmmInfo`                            | AMM v4 プログラム | プール状態：累積フィー、ステータス、ボルト・OpenBook マーケットへの参照。   |
| Pool              | `amm_authority`                      | AMM v4 プログラム | ボルト移動に署名するプログラム所有 PDA。すべての AMM v4 プール全体で共有。 |
| Pool              | `amm_open_orders`                    | OpenBook     | このマーケット用のプールの OpenBook `OpenOrders` アカウント。  |
| Pool              | `amm_target_orders`                  | AMM v4 プログラム | OpenBook に戻すターゲットリミットオーダーのプール側グリッド。         |
| Pool              | `pool_coin_token_account`            | SPL Token    | プールのコイン側ボルト（`amm_authority` の ATA）。         |
| Pool              | `pool_pc_token_account`              | SPL Token    | プールの pc 側ボルト。                               |
| Pool              | `lp_mint`                            | SPL Token    | Fungible LP ミント。                            |
| Pool              | `pool_withdraw_queue`                | AMM v4 プログラム | 遅延引き出しのレガシーキュー；ゼロ長で保持。                      |
| Pool              | `pool_temp_lp`                       | AMM v4 プログラム | `Initialize` 中に使用される補助 LP アカウント。            |
| Market (OpenBook) | `serum_market`                       | OpenBook     | マーケット自体（ベース/クォート ミント、ボルト署名者など）。             |
| Market            | `serum_bids`, `serum_asks`           | OpenBook     | ビッド・アスク キュー。                                |
| Market            | `serum_event_queue`                  | OpenBook     | 保留中のイベント（約定、キャンセル）。                         |
| Market            | `serum_coin_vault`, `serum_pc_vault` | SPL Token    | OpenBook のマーケット レベル ボルト。                    |
| Market            | `serum_vault_signer`                 | OpenBook     | `serum_*_vault` 移動に署名するマーケット レベル 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,    // mirrors OpenBook market
    pub pc_lot_size:   u64,
    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,
    pub need_take_pnl_pc:   u64,
    pub total_pnl_pc:   u64,
    pub total_pnl_coin: u64,
    pub pool_open_time: u64,
    pub punish_pc_amount: u64,
    pub punish_coin_amount: u64,
    pub orderbook_to_init_time: u64,
    pub swap_coin_in_amount: u128,
    pub swap_pc_out_amount:  u128,
    pub swap_acc_pc_fee:    u64,
    pub swap_pc_in_amount:  u128,
    pub swap_coin_out_amount: u128,
    pub swap_acc_coin_fee:  u64,
}
```

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

* **`coin_vault`**、**`pc_vault`** — プールの SPL Token ボルト。Serum/OpenBook の慣例により、`coin` は `token_0`（ベース）、`pc` は `token_1`（クォート）です。
* **`coin_decimals`**、**`pc_decimals`** — ミントに合致します。
* **`open_orders`**、**`target_orders`**、**`market`** — すべてのスワップ/デポジット/引き出し命令に渡す必要があります。
* **`fees.swap_fee_numerator / swap_fee_denominator`** — 統合トレード フィー。デフォルトは `25 / 10_000 = 0.25%`。
* **`status`** — 操作をゲートするビットマスク。`AdminSetStatus` 経由で管理者が設定可能。
* **`state_data.need_take_pnl_*`** — 総累積フィーとスイープされた額との差分。`TakePnl` がこれらをゼロにします。

## OpenBook 配線

<Note>
  **非アクティブ。** AMM v4 プールは OpenBook にリクイディティを共有しなくなりました—リミット オーダー グリッドは無効化されています。このセクションで説明されている OpenBook アカウントは、各プールの `AmmInfo` に残っており、V1 スワップ エンドポイント（および `Initialize`、`Deposit`、`Withdraw`）で後方互換性のために検証されていますが、実際には参照されるオン ブック状態は空です。**V2 スワップ エンドポイント**（[`SwapBaseInV2` / `SwapBaseOutV2`](/ja/products/amm-v4/instructions)）を使用してください。これらはこれらのアカウントをまったく必要としないため、今日の標準的な実行パスを表します。
</Note>

AMM v4 プール上で **V1** 読み書き命令を呼び出す場合、OpenBook アカウントを渡す必要があります。プログラムがこれらを再導出して検証するため、不正確なセットを渡すと元に戻ります。（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 ボルトは、オーナーが `amm_authority` である標準的なトークン アカウントです。ATA ではありません—それらのアドレスは `["amm_associated_seed", coin_mint_or_pc_mint, market, amm_id]` シードで `Initialize` で導出される特定の PDA です。アドレスは `AmmInfo` に保存されています；導出は 1 回限りの curiosity です。

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

## LP ミント

オーソリティが `amm_authority` である classic SPL Token ミント。総供給はプール内の LP 所有権を追跡します；LP を burn するとトークンを両方のボルトから比率通りに返します。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 マルチシグは `AdminCancelOrders`、`AdminSetParams` などで これらを設定します。

## Observation / オラクル

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

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

AMM v4 は決定的なペアごとの PDA 用に設計されていなかった（Solana の慣例より前）ため、標準的な `amm_id` は以下でシードされた keypair です：

```
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` にも同じ seeded-key パターンが適用されます。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` | —（ユーザー ATA を作成する可能性）                                                                                | —          |
| `TakePnl`                    | —                                                                                                   | —          |
| `MonitorStep`（crank）         | —                                                                                                   | —          |

プールとそのアカウントは無期限に存続します。リクイディティが完全に引き出されても、`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 プロトコル（相手方アカウントの場合）
