このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
2026-10-22で廃止されました。
CreatePermissionedPoolはCreateCustomizablePoolV2に名前が変更され、許可制ではなくなり、CreatePermissionPda / ClosePermissionPdaを持つPermissionアカウントは削除されました。このエントリは2026-07-30時点のプログラムについて説明しています。2026-10-22のエントリを参照してください。CreatePool / CreateCustomizablePoolパスは変わりません。
インテグレーター向けTL;DR
- プールIDは許可ゲートの背後で非正規になることができます。 歴史的には、
(amm_config, token_mint_0, token_mint_1)ごとに正確に1つのCLMMプールアドレスがありました。PDAseedsがそれを固定していました。新しい命令**CreatePermissionedPoolは、クライアント提供の0以外の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引数。0以外である必要があります。プール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を参照してください。
新しいアカウント:Permission
その存在が付与である機能アカウント。作成されたauthorityのみを保存します(パディングを含む)。PDAシード:["permission", authority]。これはCreatePermissionedPoolを呼び出す権利を与え、他には何もできません — 資金を移動したり、手数料を変更したり、プールを変更することはできません。アカウント → Permissionを参照してください。
新しい管理命令:CreatePermissionPda / ClosePermissionPda
CreatePermissionPdaは、与えられたpermission_authorityに対してPermissionPDAを初期化します。ClosePermissionPdaはそれを閉じ、呼び出し元に家賃を払い戻し、付与を取り消します。その付与の下で既に作成されたプールは影響を受けません。
admin公開鍵または専用のpermission_pda_adminキー(メインネットとdevnetで異なる定数)を受け入れます。管理キーとマルチシグ → CLMMを参照してください。
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を参照してください。
エラーコード
新しいエラーコードはありません。既存の6000 NotApprovedは、凍結された入力/出力トークンアカウント、OpenLimitOrderのスワップ/リミットオーダー無効ケース、および許可命令の「署名者はadminでもpermission_pda_adminでもない」ケースをカバーするようになりました。エラーコードテーブルと番号付けは、2026-05-18リリースから変わりません。エラーコード → CLMMを参照してください。
マイグレーションノート
- プールアドレスの読み取り:
(config, mint0, mint1)ごとに1つのプールと仮定しないでください。ペアは正規プールと1つ以上の許可制プール(seed_index導出アドレス)を持つことができます。単一の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)。

