Passer au contenu principal
Cette page est traduite automatiquement par IA. La version anglaise fait foi.Voir la version anglaise →
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.
  • 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 : Un octet de tag ou de variante invalide échoue à la désérialisation des arguments par Anchor. Aucun nouveau code d’erreur n’intervient.

Comparaison des trois chemins de création

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.
  • 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 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.