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

# 2026-07-30 — CLMM: 許可制マルチプール及びリミットオーダー凍結アカウントガード

> 2つのCLMMプログラム更新：CreatePermissionedPoolは、ホワイトリスト化された権限者がseed_indexをプールPDAに組み込むことで、1つのペアに対して複数のプールを作成でき、OpenLimitOrderは出力側アカウントを受け取り、入力または出力トークンアカウントが凍結されているオーダーを拒否します。

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

  [英語版を表示 →](/reference/changelog/2026-07-30-clmm-permissioned-pools)
</Info>

このリリースでは、2つのCLMMプログラム変更を記録しています。どちらも追加的で後方互換性があります。既存のプール、ポジション、オープンオーダーは影響を受けず、従来の `CreatePool` / `CreateCustomizablePool` パスは変わりません。

## インテグレーター向けTL;DR

* **プールIDは許可ゲートの背後で非正規化できるようになりました。** 従来は、`(amm_config, token_mint_0, token_mint_1)` ごとに正確に1つのCLMMプールアドレスが存在していました。新しい命令 **`CreatePermissionedPool`** は、クライアント提供の非ゼロ `seed_index: u16` をプールPDAシードに組み込むため、ホワイトリスト化されたオペレーターは **同じペアとフィー層に対して複数のプール** を各自のアドレスで立ち上げることができます。任意のプールアドレスは特権機能であるため、支払者は管理者によって付与された **`Permission`** PDAを保有する必要があります。2つの管理命令 **`CreatePermissionPda`** と **`ClosePermissionPda`** がこれらの付与を管理します。
* **`OpenLimitOrder` は出力側を検証するようになりました。** この命令は3つの追加アカウント — `output_token_account`、`output_vault`、`output_vault_mint` — を受け取り、所有者の **入力または出力** トークンアカウントが凍結されている場合、`NotApproved` でオーダーを拒否します。これにより、最終的なフィルが配信されることを保証し、許可リスト/デフォルト凍結Token-2022ミント（許可制トークン）に重要です。古いシングルサイドアカウントリストに対して構築されたクライアントは、3つの出力アカウントを追加する必要があります。

## プログラムで変更されたもの

### 新命令：`CreatePermissionedPool`

`CreateCustomizablePool` と同じ形状とパラメータ（同じ `CreateCustomizableParams` を受け取るため、シングルサイドフィーと動的フィーオプトインが利用可能）に加えて：

* `seed_index: u16` 引数。**ゼロ以外である必要があります**。プールPDAシードに追加されます（リトルエンディアン）：
  `["pool", amm_config, token_mint_0, token_mint_1, seed_index.to_le_bytes()]`。
* `permission` アカウント：PDA `["permission", payer]`。Anchorは存在しないか、プログラムによって所有されていない場合、呼び出しを拒否します。その存在自体が認可です。
* `pool_state.owner` として記録される `pool_creator` アカウント。手数料を支払う `payer` と異なる場合があります。

`seed_index = 0` はレガシープール用に予約されたままです。これらの場合、シードコンポーネントは空に折りたたまれ、従来の4シードアドレスを再現するため、既存のプールアドレスは変わりません。

[命令 → CreatePermissionedPool](/ja/products/clmm/instructions) を参照してください。

### 新アカウント：`Permission`

その存在 **が** 付与である機能アカウント。作成された `authority` のみを保存します（パディング付き）。PDAシード：`["permission", authority]`。`CreatePermissionedPool` を呼び出す権利を与え、他には何もできません。資金を移動したり、フィーを変更したり、プールを変更することはできません。[アカウント → Permission](/ja/products/clmm/accounts) を参照してください。

### 新管理命令：`CreatePermissionPda` / `ClosePermissionPda`

* `CreatePermissionPda` は、与えられた `permission_authority` に対して `Permission` PDAを初期化します。
* `ClosePermissionPda` はそれを閉じ、呼び出し元に家賃を払い戻し、付与を取り消します。その付与の下で既に作成されたプールは影響を受けません。

どちらもプログラム `admin` 公開鍵 **または** 専用の `permission_pda_admin` キー（メインネットとデブネットで異なる定数）を受け入れます。[管理キーとマルチシグ → CLMM](/ja/security/admin-and-multisig) を参照してください。

### `PoolState`：`seed_index` フィールド

2バイトは既存のパディング領域から取り出されました（`padding: [u8; 6]` → `seed_index: [u8; 2]` + `padding: [u8; 4]`）。`fee_on` の直後です。**総アカウントサイズは変わらず、インデクサーマイグレーションは不要です。** `CreatePool` / `CreateCustomizablePool` で作成されたプールの場合、`seed_index` は `[0, 0]` です。許可制プールの場合、作成者が選択したインデックスを保持し、オフチェーンでプールアドレスを再導出するために必要です。

### `OpenLimitOrder`：出力側アカウントと凍結アカウントガード

`OpenLimitOrder` アカウントリストは `output_token_account`、`output_vault`、`output_vault_mint` を取得します。これらは検証にのみ使用されます。オープン時に出力は引き落とされません。ハンドラーは **入力も出力も** トークンアカウントが凍結されていないことを要求し、そうでない場合は `NotApproved` を返します（同じコードは既にプールがスワップまたはリミットオーダーを無効にしている場合に返されます）。これにより、フィルを受け取ることができないトークンアカウント（例えば、デフォルト凍結Token-2022ミント用のまだ解凍されていないアカウント）に対してオーダーを開くことができるギャップを閉じます。

[命令 → OpenLimitOrder](/ja/products/clmm/instructions) を参照してください。

## エラーコード

新しいエラーコードはありません。既存の `6000 NotApproved` は、`OpenLimitOrder` の凍結入力/出力トークンアカウントとスワップ/リミットオーダー無効ケース、および許可命令の「署名者は `admin` でも `permission_pda_admin` でもない」ケースをカバーするようになりました。エラーコードテーブルと番号付けは、[2026-05-18リリース](/reference/changelog/2026-05-18-clmm-limit-orders) から変わりません。[エラーコード → CLMM](/ja/reference/error-codes) を参照してください。

## マイグレーションノート

* **プールアドレスの読み取り**：`(config, mint0, mint1)` ごとに1つのプールと仮定しないでください。ペアは正規プールに加えて、`seed_index` 導出アドレスで1つ以上の許可制プールを持つことができます。単一のPDAを導出するのではなく、APIまたはインデクサーからプールを列挙し、許可制プールを再導出する必要がある場合は `seed_index` を保存してください。
* **リミットオーダーの配置**：`OpenLimitOrder` トランザクションに3つの出力側アカウントを追加し、凍結アカウントに対して `NotApproved` が返された場合は明確なメッセージを表示してください。
* **アカウントサイズまたはレイアウトの破損なし**：`PoolState` は同じサイズです。廃止されたパディングバイトは `seed_index` を保持するようになりました。

## 更新されたページ

* `products/clmm/overview` — 許可制マルチプールとリミットオーダーガードに関する「新機能」ノート。
* `products/clmm/instructions` — 新しい `CreatePermissionedPool` セクション、命令テーブルと管理ゲートノートの `CreatePermissionPda` / `ClosePermissionPda`、および更新された `OpenLimitOrder` アカウントリスト/前提条件/エラー。
* `products/clmm/accounts` — インベントリの `Permission` とそのセクション、`PoolState.seed_index` フィールド、PDA導出ヘルパー（`derivePermissionedPool`、`derivePermission`）、およびライフサイクルクイックリファレンス。
* `security/admin-and-multisig` — CLMMロールテーブルの新しい `permission_pda_admin` 行と許可スコープ説明。
* `reference/error-codes` — 拡張された `NotApproved` 説明。

**検証対象**：

* `raydium-clmm` ソース（`create_permissioned_pool.rs`、`admin/create_permission_pda.rs`、`admin/close_permission_pda.rs`、`states/permission.rs`、`states/pool.rs`、`limit_order/open_limit_order.rs`、`lib.rs`）。
