> ## 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 : pools multi-permissionnés et garde de compte gelé pour ordres limites

> Deux mises à jour du programme CLMM : CreatePermissionedPool permet à une autorité sur liste blanche de créer plusieurs pools par paire via un seed_index intégré au PDA du pool, et OpenLimitOrder accepte désormais les comptes du côté output pour rejeter les ordres avec un compte de token input ou output gelé.

<Info>
  **Cette page est traduite automatiquement par IA. La version anglaise fait foi.**

  [Voir la version anglaise →](/reference/changelog/2026-07-30-clmm-permissioned-pools)
</Info>

<Info>
  Une entrée du journal des modifications de la documentation. Pour l'index de toutes les mises à jour, consultez [`reference/changelog`](/fr/reference/changelog). Pour la chronologie historique du protocole, consultez [`introduction/history-and-milestones`](/fr/introduction/history-and-milestones).
</Info>

Cette version documente deux changements du programme CLMM. Les deux sont additifs et rétro-compatibles : les pools, positions et ordres ouverts existants ne sont pas affectés, et les chemins classiques `CreatePool` / `CreateCustomizablePool` restent inchangés.

## TL;DR pour les intégrateurs

* **Les ID de pool peuvent désormais être non-canoniques, derrière une porte de permission.** Historiquement, il y avait exactement une adresse de pool CLMM par `(amm_config, token_mint_0, token_mint_1)` — les seeds du PDA la fixaient. Une nouvelle instruction, **`CreatePermissionedPool`**, intègre un `seed_index: u16` non-nul fourni par le client dans les seeds du PDA du pool, permettant à un opérateur sur liste blanche de créer **plusieurs pools pour la même paire et le même tier de frais**, chacun à sa propre adresse. Puisque les adresses de pool arbitraires sont une capacité privilégiée, le payeur doit détenir un PDA **`Permission`** accordé par l'administrateur. Deux instructions administrateur, **`CreatePermissionPda`** et **`ClosePermissionPda`**, gèrent ces autorisations.
* **`OpenLimitOrder` valide désormais le côté output.** L'instruction accepte trois comptes supplémentaires — `output_token_account`, `output_vault`, `output_vault_mint` — et rejette l'ordre avec `NotApproved` si le compte de token **input ou output** du propriétaire est gelé. Cela garantit que le remplissage éventuel peut être livré, ce qui importe pour les mints Token-2022 avec liste d'autorisation / gelés par défaut (tokens permissionnés). Les clients construits contre l'ancienne liste de comptes unilatérale doivent ajouter les trois comptes output.

## Ce qui a changé dans le programme

### Nouvelle instruction : `CreatePermissionedPool`

Même forme et paramètres que `CreateCustomizablePool` (elle accepte les mêmes `CreateCustomizableParams`, donc les frais unilatéraux et l'opt-in de frais dynamiques sont disponibles), plus :

* Un argument `seed_index: u16`, qui **doit être non-nul**. Il est ajouté (little-endian) aux seeds du PDA du pool :
  `["pool", amm_config, token_mint_0, token_mint_1, seed_index.to_le_bytes()]`.
* Un compte `permission` : le PDA `["permission", payer]`. Anchor rejette l'appel s'il n'existe pas ou n'est pas possédé par le programme — sa simple existence est l'autorisation.
* Un compte `pool_creator` enregistré comme `pool_state.owner`, qui peut différer du `payer` payant les frais.

`seed_index = 0` reste réservé aux pools hérités : pour ceux-ci, la composante seed s'effondre à vide, reproduisant l'adresse classique à quatre seeds, donc aucune adresse de pool existante ne change.

Consultez [Instructions → CreatePermissionedPool](/fr/products/clmm/instructions).

### Nouveau compte : `Permission`

Un compte de capacité dont l'existence **est** l'autorisation. Il stocke uniquement l'`authority` pour laquelle il a été créé (plus du remplissage). Seeds du PDA : `["permission", authority]`. Il confère le droit d'appeler `CreatePermissionedPool` et rien d'autre — il ne peut pas déplacer des fonds, modifier les frais ou muter un pool. Consultez [Accounts → Permission](/fr/products/clmm/accounts).

### Nouvelles instructions administrateur : `CreatePermissionPda` / `ClosePermissionPda`

* `CreatePermissionPda` initialise un PDA `Permission` pour une `permission_authority` donnée.
* `ClosePermissionPda` le ferme et rembourse le loyer à l'appelant, révoquant l'autorisation. Les pools déjà créés sous cette autorisation ne sont pas affectés.

Les deux acceptent soit la clé `admin` du programme **soit** une clé `permission_pda_admin` dédiée (une constante distincte sur mainnet par rapport à devnet). Consultez [Admin keys and multisig → CLMM](/fr/security/admin-and-multisig).

### `PoolState` : champ `seed_index`

Deux octets ont été extraits d'une région de remplissage existante (`padding: [u8; 6]` → `seed_index: [u8; 2]` + `padding: [u8; 4]`) directement après `fee_on`. **La taille totale du compte est inchangée, et aucune migration d'indexeur n'est requise.** Pour les pools créés via `CreatePool` / `CreateCustomizablePool`, `seed_index` est `[0, 0]` ; pour les pools permissionnés, il porte l'index choisi par le créateur et est requis pour re-dériver l'adresse du pool hors-chaîne.

### `OpenLimitOrder` : comptes du côté output et garde de compte gelé

La liste de comptes `OpenLimitOrder` gagne `output_token_account`, `output_vault` et `output_vault_mint`. Ils sont utilisés uniquement pour la validation — aucun output n'est débité à l'ouverture. Le gestionnaire exige désormais que **ni** le compte de token input **ni** le compte de token output ne soit gelé, retournant `NotApproved` sinon (le même code déjà retourné quand le pool a le swap ou l'ordre limite désactivé). Cela ferme une lacune où un ordre pouvait être ouvert contre un compte de token qui ne pouvait jamais recevoir le remplissage (par exemple, un compte pas encore dégelé pour un mint Token-2022 gelé par défaut).

Consultez [Instructions → OpenLimitOrder](/fr/products/clmm/instructions).

## Codes d'erreur

Aucun nouveau code d'erreur. Le code `6000 NotApproved` existant couvre désormais également le compte de token input/output gelé et les cas swap/limit-order-disabled sur `OpenLimitOrder`, et le cas « le signataire n'est ni `admin` ni `permission_pda_admin` » sur les instructions de permission. Le tableau des codes d'erreur et la numérotation sont autrement inchangés par rapport à la [version du 2026-05-18](/fr/reference/changelog/2026-05-18-clmm-limit-orders). Consultez [Error codes → CLMM](/fr/reference/error-codes).

## Notes de migration

* **Lecture des adresses de pool** : ne supposez pas un pool par `(config, mint0, mint1)`. Une paire peut désormais avoir un pool canonique plus un ou plusieurs pools permissionnés à des adresses dérivées de `seed_index`. Énumérez les pools à partir de l'API / indexeur plutôt que de dériver un seul PDA, et stockez `seed_index` quand vous avez besoin de re-dériver un pool permissionnée.
* **Placement d'ordres limites** : ajoutez les trois comptes du côté output à votre transaction `OpenLimitOrder`, et affichez un message clair quand `NotApproved` est retourné pour un compte gelé.
* **Aucune rupture de taille de compte ou de disposition** : `PoolState` a la même taille ; les octets de remplissage retraités contiennent désormais `seed_index`.

## Pages mises à jour

* `products/clmm/overview` — note « What's new » sur les pools multi-permissionnés et la garde d'ordre limite.
* `products/clmm/instructions` — nouvelle section `CreatePermissionedPool`, `CreatePermissionPda` / `ClosePermissionPda` dans le tableau des instructions et la note de gating administrateur, et la liste de comptes / préconditions / erreurs `OpenLimitOrder` mise à jour.
* `products/clmm/accounts` — `Permission` dans l'inventaire et sa propre section, le champ `PoolState.seed_index`, les aides de dérivation PDA (`derivePermissionedPool`, `derivePermission`), et la référence rapide du cycle de vie.
* `security/admin-and-multisig` — nouvelle ligne `permission_pda_admin` et expliquant la portée de permission dans le tableau des rôles CLMM.
* `reference/error-codes` — description `NotApproved` élargie.

**Vérifié par rapport à** :

* source `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`).
