Skip to main content
Cette page est traduite automatiquement par IA. La version anglaise fait foi.Voir la version anglaise →
Cette entrée couvre une mise à jour à venir du programme LaunchLab. Elle a été vérifiée par rapport à la branche de version locale avant le déploiement. Confirmez le programme déployé avant de vous fier au retrait des frais retenus avant la graduation.
Un mint de base Token-2022 créé par InitializeWithToken2022 peut porter une TransferFeeConfig. Cette extension a deux autorités : transfer_fee_config_authority, qui modifie le taux de frais et les frais maximaux, et withdraw_withheld_authority, qui retire les frais que Token-2022 retient sur les comptes de jetons. Jusqu’à cette version, le programme plaçait la PDA d’authority de lancement sur les deux au moment de la création du mint et les remettait toutes les deux à PlatformConfig.transfer_fee_extension_auth à la graduation. Le programme de lancement n’a pas d’instruction de retrait de frais retenus ou de récolte, donc pendant toute la phase de courbe de liaison, personne ne pouvait retirer le solde retenu — la seule clé qui pouvait le faire était une PDA sans instruction pour la signer. Cette version écrit transfer_fee_extension_auth directement dans withdraw_withheld_authority au moment de la création du mint, de sorte que la plateforme peut récupérer les frais retenus dès le premier échange. MigrateToCpswap gagne une garde pour qu’elle ne réassigne cette autorité que si la PDA la détient toujours, ce qui maintient la graduation fonctionnelle pour les mints des deux générations. Rien d’autre n’a changé. Aucun compte n’a grandi ou rétréci, aucune instruction n’a gagné ou perdu un compte, aucun argument n’a changé, et aucun code d’erreur n’a bougé.

TL;DR pour les intégrateurs

  • Les frais de transfert retenus sont retirables pendant le lancement. Sur un nouveau lancement Token-2022 dont la plateforme a transfer_fee_extension_auth défini, cette clé est la withdraw_withheld_authority du mint depuis la création. Appelez directement les propres WithdrawWithheldTokensFromAccounts / WithdrawWithheldTokensFromMint de Token-2022 ; LaunchLab n’a pas d’instruction pour cela et n’en a jamais eu.
  • Le calendrier de transfer_fee_config_authority est inchangé. C’est toujours la PDA d’authority de lancement jusqu’à la graduation, et elle se déplace toujours vers transfer_fee_extension_auth dans MigrateToCpswap. Le taux de frais ne peut pas être modifié en cours de lancement.
  • Définissez transfer_fee_extension_auth avant le lancement. Quand il est Pubkey::default() au moment de la création du mint, l’autorité de retrait revient à la PDA d’authority — l’ancien comportement. Définir le champ après coup récupère toujours l’autorité à la graduation, mais le solde retenu est bloqué jusqu’à ce moment.
  • Ne faites pas pivoter le champ en cours de lancement. Les deux autorités sont lues à deux moments différents, donc une valeur qui change entre les deux les laisse sur des clés différentes. Détails dans La rotation divise les deux autorités.
  • MigrateToCpswap est inchangé pour les appelants. Mêmes comptes, mêmes arguments, mêmes erreurs. La nouvelle garde est interne ; sans elle, la migration d’un mint de nouvelle génération reviendrait à l’intérieur de Token-2022 car la PDA ne peut plus signer une autorité qu’elle ne détient pas.
  • Les lancements existants ne sont pas affectés. Les mints déjà en chaîne gardent la PDA sur les deux autorités et les deux sont toujours remises à la graduation.
  • Aucune actualisation IDL n’est requise. Aucune disposition, compte, argument ou code d’erreur n’a changé.

Qui détient quoi, et quand

Les deux remises sont toujours derrière la même condition externe qu’elles l’ont toujours été : le mint de base doit porter TransferFeeConfig et transfer_fee_extension_auth doit être non-défaut. Une plateforme qui ne définit jamais le champ garde les deux autorités sur la PDA d’authority pour toujours — le taux de frais ne peut jamais être modifié et le solde retenu ne peut jamais être retiré.

La rotation divise les deux autorités

transfer_fee_extension_auth est lu deux fois par lancement, à deux moments qui peuvent être séparés de jours :
  1. À InitializeWithToken2022, pour withdraw_withheld_authority.
  2. À MigrateToCpswap, pour transfer_fee_config_authority — et pour withdraw_withheld_authority uniquement si la PDA la détient toujours.
Faites pivoter le champ via UpdatePlatformConfig entre les deux et les deux autorités atterrissent sur des clés différentes : le côté retrait garde la clé qui a été configurée à la création, car la PDA ne la détient plus et la migration ignore cette remise, tandis que le côté configuration des frais va à la nouvelle clé. Aucun appel n’échoue ; la division est silencieuse. Faites pivoter entre les lancements, ou réconciliez les clés après coup directement via Token-2022 avec l’ancienne clé signant.

Pourquoi la garde est requise, pas seulement défensive

Le SetAuthority de Token-2022 exige que l’autorité actuelle signe. Selon la nouvelle règle de création, la PDA d’authority de lancement n’est pas l’autorité de retrait des frais retenus sur un nouveau mint, donc le CPI inconditionnel que le programme avait l’habitude de faire échouerait — et parce qu’il se trouve à l’intérieur de MigrateToCpswap, cet échec aurait bloqué la graduation pour chaque lancement Token-2022 avec des frais de transfert sur une plateforme qui avait configuré le champ. Les deux changements ne fonctionnent que comme une paire.

Ce qui n’a pas changé

  • Les mathématiques et la comptabilité des frais de transfert. MAX_TRANSFER_FEE_RATE est toujours 500 (5 %, dénominateur 10_000), les frais sont toujours évalués dans la courbe de la même manière, et le solde retenu s’accumule toujours sur les comptes de jetons que Token-2022 y place.
  • L’interface de MigrateToCpswap. Même liste de comptes, mêmes indices remaining_accounts, mêmes deux programmes de jetons, pas d’arguments.
  • L’interface de InitializeWithToken2022. Mêmes comptes, mêmes TransferFeeExtensionParams, même rejet NoSupportExtension pour tout ce qui n’est pas MetadataPointer et TransferFeeConfig.
  • La gestion Token-2022 du côté devis. Inchangée depuis 2026-08-24.
  • Les codes d’erreur. 60006023 sont inchangés ; cette version n’en ajoute aucun.
  • Les dispositions de compte et l’IDL. Inchangés. PlatformConfig.transfer_fee_extension_auth garde son décalage et son type ; seul le moment où le programme le lit a changé.

Pages mises à jour

  • products/launchlab/platform-config — nouvelle section « Autorités de frais de transfert Token-2022 » couvrant les deux autorités, les deux points de remise et le piège de rotation ; commentaire de disposition et liste des pièges corrigés.
  • products/launchlab/instructionsMigrateToCpswap gagne un bloc « Remise d’autorité de frais de transfert Token-2022 » ; les postconditions d’Initialize enregistrent les nouvelles autorités de création de mint.
  • products/launchlab/accounts — liste des rôles de la PDA d’autorité et la section du mint de base notent quelles autorités de frais de transfert la PDA détient réellement.
  • reference/token-2022-support — l’entrée du mint de base LaunchLab indique qui détient les autorités de frais de transfert et quand.