> ## 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 アカウント

> AmmInfo、ModelDataInfo、DataElement、Fees、およびボルトレイアウト。Stable AMM プール（スタンドアロンの純粋 AMM Raydium プログラム）の完全なアカウント一覧。

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

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

<Info>
  Stable AMM は独立したプログラムです。プール側のアカウント構造は AMM v4（AmmInfo、ボルト、オーソリティ）に似ており、さらにルックアップテーブルを保存する `ModelDataInfo` アカウントを持ちます。このページでは両方をカバーしています。
</Info>

## インベントリ

<Note>
  **純粋 AMM。** Stable AMM はすべてのリクイディティを独自のボルトに保有し、OpenBook に依存しません。初期段階では OpenBook マーケットメイキングパスを持っていましたが、そのパスは長年休止状態にあり、[2026-06-22 アップグレード](/ja/reference/changelog)で残存コードが削除されました。以下の `serum_*` マーケットアカウントと `amm_open_orders` は**レガシー**です。古いレイアウトのトランザクションでは後方互換性のため引き続き表示される可能性がありますが、プログラムはそれらを検証または読み取らず、新しいレイアウトの命令ではそれらを完全に省略します。
</Note>

アクティブなインベントリは現在、完全にプール側です：

| カテゴリ | アカウント                               | オーナー         | 役割                                              |
| ---- | ----------------------------------- | ------------ | ----------------------------------------------- |
| プール  | `AmmInfo`                           | Stable プログラム | プール状態、ボルトとモデルデータアカウントへの参照。                      |
| プール  | `amm_authority`                     | Stable プログラム | ボルト移動に署名するプログラム所有 PDA。すべての Stable AMM プール間で共有。  |
| プール  | `amm_target_orders`                 | Stable プログラム | プール側グリッドアカウント（レイアウトに保持；OpenBook オーダーを駆動しなくなった）。 |
| プール  | `pool_coin_token_account`           | SPL Token    | プールのコイン側ボルト。                                    |
| プール  | `pool_pc_token_account`             | SPL Token    | プールの pc 側ボルト。                                   |
| プール  | `lp_mint`                           | SPL Token    | ファンジブル LP ミント。                                  |
| モデル  | **`model_data_account`**            | Stable プログラム | **ルックアップテーブル：50,000 × DataElement。**            |
| レガシー | `amm_open_orders`                   | OpenBook     | プールの古い OpenBook `OpenOrders` アカウント。**未使用。**     |
| レガシー | `serum_market`                      | OpenBook     | OpenBook マーケット。**未使用。**                         |
| レガシー | `serum_bids`、`serum_asks`           | OpenBook     | ビッド/アスクキュー。**未使用。**                             |
| レガシー | `serum_event_queue`                 | OpenBook     | イベントキュー。**未使用。**                                |
| レガシー | `serum_coin_vault`、`serum_pc_vault` | SPL Token    | OpenBook マーケットレベルボルト。**未使用。**                   |
| レガシー | `serum_vault_signer`                | OpenBook     | マーケットレベルボルト署名者。**未使用。**                         |

## `AmmInfo`

ルート状態アカウント。レイアウトは AMM v4 とほぼ同一です。プールパラメータ、デシマル、フィー、ボルト/ミント参照に加えて、ルックアップテーブルを指す `model_data_key` フィールドが 1 つ追加されています。

```rust theme={null}
// raydium-stable/program/src/state.rs (abridged)
pub struct AmmInfo {
    pub account_type: u64,              // = 0 (AmmAccount)
    pub status: u64,                    // bitmask: swap/deposit/withdraw/crank enabled
    pub nonce: u64,                     // bump for amm_authority
    pub order_num: u64,
    pub depth: u64,
    pub coin_decimals: u64,
    pub pc_decimals: u64,
    pub state: u64,                     // state machine (IdleState, etc.)
    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
    pub pc_lot_size: u64,
    pub min_price_multiplier: u64,
    pub max_price_multiplier: u64,
    pub sys_decimal_value: u64,
    pub abort_trade_factor: u64,
    pub price_tick_multiplier: u64,
    pub price_tick: u64,
    
    pub fees: Fees,                     // see below
    pub out_put: OutPutData,            // PnL, swaps, punish amounts
    
    pub coin_vault: Pubkey,
    pub pc_vault: Pubkey,
    pub coin_mint: Pubkey,
    pub pc_mint: Pubkey,
    pub lp_mint: Pubkey,
    pub model_data_key: Pubkey,         // ← THE LOOKUP TABLE
    pub open_orders: Pubkey,            // legacy: OpenBook OpenOrders (unused post-decoupling)
    pub serum_market: Pubkey,           // legacy: unused post-decoupling
    pub serum_program: Pubkey,          // legacy: unused post-decoupling
    pub target_orders: Pubkey,
    pub amm_admin: Pubkey,              // admin key
    pub client_order_id: u64,
    pub lp_amount: u64,                 // LP supply
    pub lp_net: u64,                    // LP value metric
    pub padding: [u64; 61],
}

pub struct Fees {
    pub min_separate_numerator: u64,
    pub min_separate_denominator: u64,
    pub trade_fee_numerator: u64,       // 25
    pub trade_fee_denominator: u64,     // 10_000 → 0.25%
    pub pnl_numerator: u64,             // 12
    pub pnl_denominator: u64,           // 100 → 12% of fee = 0.03% of volume
    pub swap_fee_numerator: u64,        // 25
    pub swap_fee_denominator: u64,      // 10_000
}

pub struct OutPutData {
    pub need_take_pnl_coin: u64,        // accrued protocol fee (coin)
    pub need_take_pnl_pc: u64,          // accrued protocol fee (pc)
    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_pc_in_amount: u128,
    pub swap_coin_out_amount: u128,
    pub swap_pc_fee: u64,
    pub swap_coin_fee: u64,
}
```

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

* **`model_data_key`** — ルックアップテーブルのアドレス。すべての命令に渡す必要があります。
* **`fees`** — AMM v4 と同じ構造。デフォルトは 0.25% トレードフィー、0.22% LP / 0.03% プロトコル分割。
* **`coin_vault`**、**`pc_vault`** — プールのボルト。
* **`status`** — スワップ/デポジット/ウィズドロー/クランクをゲートするビットマスク。
* **`out_put.need_take_pnl_*`** — `WithdrawPnl` によってスイープされます。

## `ModelDataInfo`

ルックアップテーブル。価格/数量ポイントの大規模なスパース配列。

```rust theme={null}
// raydium-stable/program/src/state.rs
pub const ELEMENT_SIZE: usize = 50000;

pub struct DataElement {
    pub x: u64,         // table X (e.g., coin amount)
    pub y: u64,         // table Y (e.g., pc amount)
    pub price: u64,     // price at (x, y)
}

pub struct ModelDataInfo {
    pub account_type: u64,              // = 2 (ModleDataAccount)
    pub status: u64,                    // Initialized or Uninitialized
    pub multiplier: u64,                // scale factor for x, y (e.g., 10^6)
    pub valid_data_count: u64,          // how many elements are populated
    pub elements: [DataElement; 50000], // the table itself
}
```

**ライフサイクル：**

これらのテーブルを構築した設定命令 — `InitModelData`（アカウントを作成）と `UpdateModelData`（要素を入力し、`valid_data_count` を設定）— は **2026-06-22 アップグレードで削除されました**。既存プール上のテーブルは現在**固定**されています。実行時に、呼び出し可能な残りの命令はそれらを消費します：

* **スワップ/デポジット/ウィズドロー**は、`elements[0..valid_data_count]` 内でバイナリサーチと補間を行うルックアップ関数を呼び出します。

## `DataElement`

テーブル内のアトミックエントリ。バイナリサーチが機能するために、ソート済み（x 昇順、y 降順、価格昇順）である必要があります。

```rust theme={null}
pub struct DataElement {
    pub x: u64,         // X coordinate (e.g., token_a balance, scaled by multiplier)
    pub y: u64,         // Y coordinate (e.g., token_b balance, scaled by multiplier)
    pub price: u64,     // price (x/y in scaled form, scaled by multiplier)
}
```

テーブルを入力する際、管理者はこれらを事前にスケーリングして指定します。プログラムはオンチェーンでソート順序を検証しません（速度のため）。そのため、ソート順序の誤りは不正な見積もりを引き起こします。

## オーソリティとボルト

AMM v4 と同じです：

* **`amm_authority`** は、シード `["amm authority"]` で導出される単一のプログラム全体 PDA です。すべてのプールボルトを所有し、それらの移動に署名します。
* **ボルト**は、SPL Token アカウントで、オーナーは `amm_authority` です。ATA ではありません。

Token-2022 は**サポートされていません**。

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

AMM v4 と同じです。スワップ/デポジット/ウィズドロー/クランクが有効かどうかを制御します。

## フィーと PnL トラッキング

`out_put` 構造体は以下を追跡します：

* **`need_take_pnl_coin`**、**`need_take_pnl_pc`** — 発生したがまだスイープされていないプロトコルフィー。`WithdrawPnl` がこれらを移動します。
* **`swap_coin_in_amount`**、`swap_pc_in_amount` など — 分析カウンター。

**プール資産計算（デカップリング後）。** OpenBook オープンオーダーとしてエスクロー済みの資金がなくなったため、プールの総資産はボルトから完全に計算されます：

```
旧：総資産 = ボルト残高 + オープンオーダー資金（native_coin_total / native_pc_total）− 保留中 PnL（need_take_pnl）
新：総資産 = ボルト残高 − 保留中 PnL（need_take_pnl）
```

OpenOrders 残高からプール価値を再構築したインデクサーと見積もりコードは、その項を削除する必要があります。

## アカウントサイズ

**`ModelDataInfo` は大きいです**（約 1.2 MB、50,000 要素 × 要素あたり 24 バイト）。これが Stable プール作成に明示的なレント割り当てとアカウント事前割り当てが必要な理由です。Raydium SDK とツールはこれを透過的に処理します。インテグレーターが手動で割り当てる必要はほぼありません。

## ゼロからアカウントを導出する

AMM v4 と同様に、Stable AMM は**シード付きキー**（純粋 PDA ではない）を使用します。正規のプール ID は以下を通じて導出されます：

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

ボルト、LP ミント、ターゲットオーダーなども同様です。実際には、SDK または API を使用して事前計算されたアドレスを取得してください。

## どこで何を読むか

* **命令アカウントリスト**：[`products/stable/instructions`](/ja/products/stable/instructions)。
* **補間がテーブルをどのように使用するか**：[`products/stable/math`](/ja/products/stable/math)。
* **フィー構造と WithdrawPnl**：[`products/stable/fees`](/ja/products/stable/fees)。
* **2026-06-22 OpenBook デカップリング**：[`reference/changelog`](/ja/reference/changelog)。

ソース：

* [`reference/program-addresses`](/ja/reference/program-addresses)
