> ## 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-10-30 — CPMM : InitializeV2 ouvre les frais de créateur à tout créateur de pool

> CPMM ajoute InitializeV2, une instruction de création de pool sans permission qui prend un argument optionnel creator_fee_on. N'importe quel créateur peut désormais activer les frais de créateur et en choisir le côté sans PDA Permission. Initialize, InitializeWithPermission et toutes les autres instructions sont inchangées. Additif : aucune disposition de compte, aucun code d'erreur ni aucune liste de comptes existante n'a changé.

> [!NOTE]
>
> **Cette page est traduite automatiquement par IA. La version anglaise fait foi.**
>
> [Voir la version anglaise →](https://docs.raydium.io/reference/changelog/2026-10-30-cpmm-initialize-v2.md)

> [!NOTE]
>
> Cette entrée couvre une mise à niveau du programme CPMM prévue pour le **2026-10-30**. Elle a été vérifiée par rapport à la branche `feat/initialize-v2` de `raydium-cp-swap` (head `40cbd81`) avant le déploiement. Confirmez le programme déployé avant de vous fier à la nouvelle instruction.

Chaque pool CPMM possède un indicateur `enable_creator_fee` et un côté `creator_fee_on`, tous deux fixés à la création. Jusqu'à présent, un créateur ne pouvait les définir que via `InitializeWithPermission`, qui nécessite un PDA `Permission` émis par l'admin. L'instruction publique `Initialize` stockait toujours les frais comme désactivés. En pratique, seuls les flux contrôlés comme les graduations LaunchLab pouvaient créer un pool qui facture des frais de créateur.

Cette version ajoute **`InitializeV2`**. C'est `Initialize` avec un argument supplémentaire, `creator_fee_on: Option<CreatorFeeOn>`, et n'importe qui peut l'appeler. Les mathématiques du pool, le swap, la liquidité, la collecte des frais et la part du protocole sur les frais de créateur ne sont pas modifiés.

## TL;DR pour les intégrateurs

* **Nouvelle instruction : `InitializeV2`.** Sans permission. Les arguments sont `init_amount_0`, `init_amount_1`, `open_time` et `creator_fee_on: Option<CreatorFeeOn>`. Discriminateur `[67, 153, 175, 39, 218, 16, 38, 32]`.
* **`Some(side)` active les frais de créateur de ce côté ; `None` les laisse désactivés.** `None` stocke exactement ce que stocke `Initialize`.
* **Mêmes comptes que `Initialize`, sans `rent`.** Les 19 premiers comptes sont identiques et dans le même ordre. Voir [la liste des comptes](https://docs.raydium.io/fr/products/cpmm/instructions.md#initializev2).
* **Le créateur est le signataire.** `pool_state.pool_creator` est le `creator` signataire. Contrairement à `InitializeWithPermission`, le bénéficiaire ne peut pas être défini sur une autre adresse.
* **Le créateur choisit l'activation et le côté, pas le taux.** Le pool facture l'`AmmConfig.creator_fee_rate` de son niveau de frais. Ce taux vaut `0` par défaut, donc un pool activé sur un tel niveau n'accumule rien.
* **Rien d'existant n'a changé.** `Initialize` et `InitializeWithPermission` conservent leurs discriminateurs, comptes, arguments et comportement. Aucune disposition de compte ni code d'erreur n'a changé.
* **Rafraîchissez votre IDL** pour obtenir la nouvelle instruction. Les clients qui ne l'appellent jamais n'ont besoin d'aucun changement.

## Ce qui a changé dans le programme

### Nouvelle instruction : `InitializeV2`

`InitializeV2` exécute le même code de création que `Initialize`. Elle :

* accepte comme `pool_state` soit le PDA canonique du pool, soit une keypair aléatoire signée ;
* applique les mêmes vérifications de la liste blanche Token-2022 et de `SupportMintAssociated`, via `remaining_accounts` ;
* rejette la création quand `amm_config.disable_create_pool` est activé ;
* porte `open_time` à `block_timestamp + 1` quand il n'est pas dans le futur ;
* verrouille 100 unités de base de LP et mint le reste au créateur ;
* facture `amm_config.create_pool_fee`.

La seule différence est ce qu'elle écrit dans le nouveau `PoolState` :

| Argument `creator_fee_on` | Octets Borsh | `enable_creator_fee` | `creator_fee_on` |
| - | - | - | - |
| `None` | `00` | `false` | `0` (`BothToken`) |
| `Some(BothToken)` | `01 00` | `true` | `0` |
| `Some(OnlyToken0)` | `01 01` | `true` | `1` |
| `Some(OnlyToken1)` | `01 02` | `true` | `2` |

Un octet de tag ou de variante invalide échoue à la désérialisation des arguments par Anchor. Aucun nouveau code d'erreur n'intervient.

| | Discriminateur |
| - | - |
| `initialize` (inchangé) | `[175, 175, 109, 31, 13, 152, 155, 237]` |
| `initialize_with_permission` (inchangé) | `[63, 55, 254, 65, 49, 178, 89, 121]` |
| `initialize_v2` (nouveau) | `[67, 153, 175, 39, 218, 16, 38, 32]` |

### Comparaison des trois chemins de création

| | `Initialize` | `InitializeV2` | `InitializeWithPermission` |
| - | - | - | - |
| Qui peut l'appeler | N'importe qui | N'importe qui | Détenteur d'un PDA `Permission` |
| Frais de créateur | Toujours désactivés | Choix du créateur | Toujours activés |
| Côté (`creator_fee_on`) | `BothToken` (inutilisé) | Choix du créateur | Choix de l'appelant |
| `pool_creator` enregistré | `creator` signataire | `creator` signataire | Compte `creator` séparé, non signataire |
| Payeur | `creator` | `creator` | `payer` séparé |
| Sysvar `rent` final | Oui | Non | Non |

### Refactorisation interne

Les trois handlers partagent désormais une seule routine `initialize_pool`. La refactorisation ne modifie ni les comptes, ni les arguments, ni les vérifications, ni les valeurs stockées de `Initialize` ou `InitializeWithPermission`. Les nouveaux tests vérifient aussi qu'un simple `Initialize` sur la même configuration stocke toujours les frais de créateur comme désactivés.

## Ce que les créateurs doivent savoir

* **Vérifiez d'abord le niveau de frais.** Le taux des frais de créateur appartient à l'`AmmConfig`, pas au pool. Choisissez un niveau dont le `creator_fee_rate` correspond à ce que vous voulez facturer. Les taux sont listés dans [`products/cpmm/fees`](https://docs.raydium.io/fr/products/cpmm/fees).
* **Le choix est permanent.** Aucune instruction ne modifie `enable_creator_fee` ni `creator_fee_on` après la création. Pour le changer, vous devez créer un nouveau pool.
* **Les traders les paient en plus des frais de trading.** Les frais de créateur sont un taux séparé ajouté au swap. Ils ne réduisent pas les parts LP, protocole ou fonds, mais ils rendent le pool plus cher à trader qu'un pool du même niveau avec les frais désactivés.
* **La collecte est inchangée.** Utilisez `CollectCreatorFee` ou `CollectCreatorFeePermissionless`. La part du protocole issue de la [version du 2026-09-19](https://docs.raydium.io/fr/reference/changelog/2026-09-19-cpmm-creator-fee-protocol-share.md) s'applique, et vous ne pouvez pas vous y soustraire à la création.

## Notes de migration

* **Créateurs de pools.** Passez de `Initialize` à `InitializeV2` uniquement si vous voulez activer les frais de créateur. Passez `Some(side)` et supprimez le compte `rent`. `Initialize` continue de fonctionner.
* **Utilisateurs du SDK.** `raydium.cpmm.createPool` dans `@raydium-io/raydium-sdk-v2@0.2.64-alpha` construit `Initialize`. Tant qu'aucune version ne fournit de builder `InitializeV2`, encodez-la à partir de l'IDL rafraîchi.
* **Indexeurs et routeurs.** Attendez-vous à davantage de pools avec `enable_creator_fee = true`, créés par des wallets ordinaires plutôt que par LaunchLab. Cotez à partir des propres `enable_creator_fee` et `creator_fee_on` de chaque pool, jamais à partir du seul chemin de création ou du seul niveau. Décodez la nouvelle instruction si vous suivez la création de pools à partir des instructions. Le suivi à partir des comptes `PoolState` ne nécessite aucun changement.
* **Interfaces.** Indiquez si un pool facture des frais de créateur et à quel taux, car deux pools du même niveau peuvent désormais différer.
* **LaunchLab et autres flux avec permission.** Aucun changement. `InitializeWithPermission` reste le chemin à utiliser quand le payeur et le créateur enregistré doivent être différents.

## Ce qui n'a pas changé

* **Toutes les dispositions de compte**, y compris `PoolState` et `AmmConfig`.
* **`Initialize` et `InitializeWithPermission`** : discriminateurs, comptes, arguments et valeurs stockées.
* **`Permission`, `CreatePermissionPda` et `ClosePermissionPda`.**
* **Les mathématiques de swap, de dépôt et de retrait**, la facturation des frais de créateur et la part du protocole sur les frais de créateur.
* **Codes d'erreur.** `6000`–`6015` sont inchangés ; rien n'a été ajouté.
* **ID du programme.**

## Pages mises à jour

* `products/cpmm/instructions` : bannière de mise à niveau ; lignes du résumé et de la matrice de changement d'état ; nouvelle section `InitializeV2` avec arguments, encodage et liste des comptes ; la postcondition de `Initialize` renvoie désormais vers `InitializeV2`.
* `products/cpmm/fees` : la section « Frais de créateur » liste les trois chemins de création et précise qu'activer les frais ne fixe pas leur taux.
* `products/cpmm/accounts` : notes sur `poolState` et l'ID du pool ; notes des champs `creator_fee_on` / `enable_creator_fee` ; note sur `Permission` ; ligne du cycle de vie des comptes.
* `products/cpmm/overview` : l'encadré « Nouveautés » et la puce « Frais prévisibles ».
* `products/cpmm/code-demos` : note indiquant que `createPool` construit `Initialize` et comment accéder à `InitializeV2`.
* `protocol-overview/shared-infrastructure` : les frais de créateur ne sont plus limités aux pools diplômés de LaunchLab.
* `reference/token-2022-support` : chemins de création de pools CPMM.

**Vérifié par rapport à** : branche `feat/initialize-v2` de `raydium-cp-swap` (`40cbd81`) : `programs/cp-swap/src/lib.rs`, `instructions/initialize_v2.rs`, `instructions/initialize.rs`, `instructions/initialize_with_permission.rs`, `instructions/mod.rs`, `states/pool.rs` et `tests/initialize_v2.test.ts`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.