このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
CreatePool / CreateCustomizablePool パスは変わりません。
インテグレーター向けTL;DR
- プールIDは許可ゲートの背後で非正規化できるようになりました。 従来は、
(amm_config, token_mint_0, token_mint_1)ごとに正確に1つのCLMMプールアドレスが存在していました。新しい命令CreatePermissionedPoolは、クライアント提供の非ゼロseed_index: u16をプールPDAシードに組み込むため、ホワイトリスト化されたオペレーターは 同じペアとフィー層に対して複数のプール を各自のアドレスで立ち上げることができます。任意のプールアドレスは特権機能であるため、支払者は管理者によって付与されたPermissionPDAを保有する必要があります。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 を参照してください。
新アカウント:Permission
その存在 が 付与である機能アカウント。作成された authority のみを保存します(パディング付き)。PDAシード:["permission", authority]。CreatePermissionedPool を呼び出す権利を与え、他には何もできません。資金を移動したり、フィーを変更したり、プールを変更することはできません。アカウント → Permission を参照してください。
新管理命令:CreatePermissionPda / ClosePermissionPda
CreatePermissionPdaは、与えられたpermission_authorityに対してPermissionPDAを初期化します。ClosePermissionPdaはそれを閉じ、呼び出し元に家賃を払い戻し、付与を取り消します。その付与の下で既に作成されたプールは影響を受けません。
admin 公開鍵 または 専用の permission_pda_admin キー(メインネットとデブネットで異なる定数)を受け入れます。管理キーとマルチシグ → 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つのプールと仮定しないでください。ペアは正規プールに加えて、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)。

