> ## 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-08-17 — CPMM : collecte de frais créateur sans permission

> CPMM ajoute une instruction contrainte par destination qui permet à n'importe quel payeur de transférer les frais créateur vers les ATA canoniques du créateur du pool, et délègue la création de PDA Permission sans déléguer la révocation.

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

  [Voir la version anglaise →](/reference/changelog/2026-08-17-cpmm-permissionless-creator-fee-collection)
</Info>

Cette version ajoute un chemin opérationnel sans permission pour la collecte des frais créateur. N'importe qui peut payer pour déclencher le transfert, mais le programme fixe le propriétaire du destinataire à `PoolState.pool_creator` et fixe les deux destinations aux comptes de jetons associés canoniques de ce créateur. L'instruction existante signée par le créateur reste inchangée.

Elle permet également à une autorité dédiée de créer des PDA CPMM `Permission`. Cette délégation est intentionnellement asymétrique : l'autorité dédiée peut accorder l'accès à `InitializeWithPermission`, tandis que seul l'administrateur du programme peut révoquer une autorisation avec `ClosePermissionPda`.

## TL;DR pour les intégrateurs

* **Nouvelle instruction additive : `CollectCreatorFeePermissionless`.** N'importe quel signataire peut être le `payer`. Le créateur du pool enregistré ne signe pas.
* **L'appelant ne peut pas rediriger les fonds.** `creator` doit être égal à `pool_state.pool_creator`. `creator_token_0` et `creator_token_1` doivent être les ATA canoniques de ce créateur pour les mints des coffres du pool et leurs programmes de jetons respectifs.
* **Le payeur couvre les ATA manquants.** Les deux comptes destinataires utilisent `init_if_needed` ; le payeur finance le loyer quand l'un des comptes n'existe pas.
* **La collecte est tout ou rien.** L'instruction transfère les deux compteurs de frais créateur accumulés complets, les met à zéro tous les deux, et met à jour `recent_epoch`. Elle retourne l'erreur `NoFeeCollect` existante quand les deux compteurs sont zéro.
* **Les intégrations existantes restent compatibles.** `CollectCreatorFee` n'est pas modifiée ni supprimée. Aucun changement de disposition `PoolState`, `AmmConfig`, `Permission`, événement ou code d'erreur n'est présent.
* **La création de Permission a un second propriétaire.** `CreatePermissionPda` accepte l'administrateur du programme ou un propriétaire dédié de création de PDA de permission. `ClosePermissionPda` reste réservée à l'administrateur.

## Nouveaux comptes d'instruction

`CollectCreatorFeePermissionless` prend 14 comptes dans cet ordre :

| #     | Compte                               | Contrainte ou rôle                                                     |
| ----- | ------------------------------------ | ---------------------------------------------------------------------- |
| 1     | `payer`                              | Signataire inscriptible ; finance les ATA créateur manquants.          |
| 2     | `creator`                            | Doit être égal à `pool_state.pool_creator` ; ne signe pas.             |
| 3     | `authority`                          | PDA autorité de coffre global CPMM.                                    |
| 4     | `pool_state`                         | Inscriptible ; contient les compteurs de frais créateur.               |
| 5–6   | `token_0_vault`, `token_1_vault`     | Inscriptibles ; doivent correspondre aux coffres stockés dans le pool. |
| 7–8   | `vault_0_mint`, `vault_1_mint`       | Doivent correspondre au mint du coffre correspondant.                  |
| 9–10  | `creator_token_0`, `creator_token_1` | ATA créateur canoniques inscriptibles ; initialisés si nécessaire.     |
| 11–12 | `token_0_program`, `token_1_program` | SPL Token ou Token-2022 pour chaque mint.                              |
| 13    | `associated_token_program`           | Crée un ATA créateur manquant.                                         |
| 14    | `system_program`                     | Supporte la création de compte financée par le payeur.                 |

Contrairement à `CollectCreatorFee`, la nouvelle disposition a des comptes `payer` et `creator` non-signataire séparés et ne prend pas `amm_config`. Elle nécessite donc son propre discriminateur et builder.

## Impact SDK et IDL

La branche source du programme n'inclut pas de mise à jour SDK ou IDL engagée. Les intégrateurs doivent actualiser l'IDL CPMM déployé ou utiliser une version client qui supporte explicitement `CollectCreatorFeePermissionless`. L'ensemble de builders `@raydium-io/raydium-sdk-v2@0.2.42-alpha` épinglé de la documentation couvre uniquement le chemin original signé par le créateur.

## Limite de sécurité

L'invocation sans permission ne signifie pas la garde sans permission. L'appelant peut choisir quand collecter et peut dépenser du SOL pour créer les ATA créateur manquants. L'appelant ne peut pas choisir le bénéficiaire, substituer des comptes de jetons arbitraires, demander un montant partiel, ou modifier la configuration des frais créateur du pool.

Le nouveau rôle créateur de PDA de permission peut créer une autorisation pour n'importe quel `permission_authority`, et il paie le loyer du nouveau compte. Il ne peut pas fermer ce PDA sous ce changement. Traitez-le comme une autorité d'autorisation déléguée, pas un administrateur de permission complet.

## Notes de migration

* Gardez les transactions `CollectCreatorFee` existantes inchangées.
* Ajoutez l'instruction sans permission uniquement après que le déploiement CPMM cible et l'IDL client l'incluent.
* L'automatisation peut analyser les pools avec `creator_fees_token_0` ou `creator_fees_token_1` non-zéro et déclencher la collecte sans garde des clés créateur.
* Traitez `NoFeeCollect` comme une course bénigne quand un autre appelant vide les compteurs en premier.
* Ne passez pas de comptes de jetons destinataires arbitraires ; dérivez les ATA créateur de `pool_state.pool_creator`, de chaque mint de coffre, et du programme de jetons correspondant.

## Pages mises à jour

* `products/cpmm/overview` — mise à jour de la collecte des frais créateur et résumé de la sécurité des destinations.
* `products/cpmm/instructions` — résumé de la nouvelle instruction, liste complète des comptes, effets, et matrice de changement d'état.
* `products/cpmm/accounts` — chemins de collecte des compteurs de frais créateur et création de PDA Permission déléguée.
* `products/cpmm/fees` — mécaniques de collecte sans permission et flux opérationnel.
* `products/cpmm/code-demos` — avertissement de disponibilité SDK et limite de migration client.
* `products/launchlab/platform-config` — clarification que le créateur CPMM enregistré reste le bénéficiaire même quand un autre payeur déclenche la collecte.
* `protocol-overview/shared-infrastructure` — chemins de collecte contrôlés par autorité et contraints par destination.
* `security/admin-and-multisig` — limites d'autorité d'autorisation déléguée et de collecteur sans permission.
* `reference/program-addresses` — adresses de propriétaire dédié `CreatePermissionPda` canoniques.
* `reference/error-codes` — `NoFeeCollect` étendu pour couvrir la collecte des frais créateur.

**Vérifié 2026-08-13 contre** :

* Branche [`raydium-cp-swap` `feat/permissionless-collect-creator-fee`](https://github.com/raydium-io/raydium-cp-swap/tree/feat/permissionless-collect-creator-fee).
* Commits [`9585ea1`](https://github.com/raydium-io/raydium-cp-swap/commit/9585ea1efeb27be7be7eab1ebc033449f9c793b4) et [`d99d542`](https://github.com/raydium-io/raydium-cp-swap/commit/d99d5420c65b973af05d4efa009a2a9d060461f9), comparés avec `master` à [`78f254e`](https://github.com/raydium-io/raydium-cp-swap/commit/78f254e1023751e706df7dc15c453fc3e046697c).

<Warning>
  Cette vérification couvre la branche source, pas un déploiement mainnet-beta. Confirmez le programme déployé et l'IDL publié avant d'activer le nouveau chemin en production.
</Warning>
