Skip to main content
Esta página fue traducida automáticamente por IA. La versión en inglés es la fuente autorizada.Ver versión en inglés →
Esta entrada cubre una actualización próxima del programa LaunchLab. Fue verificada contra la rama de lanzamiento local antes del despliegue. Confirma el programa desplegado antes de depender del retiro de honorarios retenidos previo a la graduación.
Un mint base de Token-2022 creado por InitializeWithToken2022 puede llevar una TransferFeeConfig. Esta extensión tiene dos autoridades: transfer_fee_config_authority, que cambia la tasa de honorarios y el honorario máximo, y withdraw_withheld_authority, que retira los honorarios que Token-2022 retiene en las cuentas de tokens. Hasta este lanzamiento, el programa colocaba la PDA de authority de lanzamiento en ambas en la creación del mint y entregaba ambas a PlatformConfig.transfer_fee_extension_auth en la graduación. El programa de launchpad no tiene instrucción de retiro de honorarios retenidos ni de cosecha, así que durante toda la fase de curva de vinculación nadie podía retirar el saldo retenido — la única clave que podía hacerlo era una PDA sin instrucción para firmar con ella. Este lanzamiento escribe transfer_fee_extension_auth directamente en withdraw_withheld_authority en la creación del mint, para que la plataforma pueda barrer los honorarios retenidos desde el primer intercambio. MigrateToCpswap gana una protección para que solo reasigne esa autoridad cuando la PDA aún sea la que la retiene, lo que mantiene la graduación funcionando para mints de ambas generaciones. Nada más cambió. Ninguna cuenta creció o se encogió, ninguna instrucción ganó o perdió una cuenta, ningún argumento cambió, y ningún código de error se movió.

TL;DR para integradores

  • Los honorarios de transferencia retenidos son retirables durante el lanzamiento. En un nuevo lanzamiento de Token-2022 cuya plataforma tiene transfer_fee_extension_auth configurado, esa clave es la withdraw_withheld_authority del mint desde la creación. Llama directamente a WithdrawWithheldTokensFromAccounts / WithdrawWithheldTokensFromMint de Token-2022; LaunchLab no tiene instrucción para esto y nunca la tuvo.
  • El tiempo de transfer_fee_config_authority no cambia. Sigue siendo la PDA de authority de lanzamiento hasta la graduación, y sigue moviéndose a transfer_fee_extension_auth en MigrateToCpswap. La tasa de honorarios no puede cambiar a mitad del lanzamiento.
  • Configura transfer_fee_extension_auth antes de lanzar. Cuando es Pubkey::default() en la creación del mint, la autoridad de retiro vuelve a la PDA de authority — el comportamiento antiguo. Configurar el campo después aún recupera la autoridad en la graduación, pero el saldo retenido queda varado hasta entonces.
  • No rotes el campo a mitad del lanzamiento. Las dos autoridades se leen en dos momentos diferentes, así que un valor que cambia entre ellos las deja en claves diferentes. Detalles en La rotación divide las dos autoridades.
  • MigrateToCpswap no cambia para los llamadores. Mismas cuentas, mismos argumentos, mismos errores. La nueva protección es interna; sin ella, la migración de un mint de nueva generación se revertería dentro de Token-2022 porque la PDA ya no puede firmar una autoridad que no retiene.
  • Los lanzamientos existentes no se ven afectados. Los mints ya en cadena mantienen la PDA en ambas autoridades y aún se entregan ambas en la graduación.
  • No se requiere actualización de IDL. Ningún diseño, cuenta, argumento o código de error cambió.

Quién retiene qué, y cuándo

Ambas entregas aún se encuentran detrás de la misma condición externa que siempre tuvieron: el mint base debe llevar TransferFeeConfig y transfer_fee_extension_auth debe ser no predeterminado. Una plataforma que nunca configura el campo mantiene ambas autoridades en la PDA de authority para siempre — la tasa de honorarios nunca puede cambiar y el saldo retenido nunca puede retirarse.

La rotación divide las dos autoridades

transfer_fee_extension_auth se lee dos veces por lanzamiento, en dos momentos que pueden estar separados por días:
  1. En InitializeWithToken2022, para withdraw_withheld_authority.
  2. En MigrateToCpswap, para transfer_fee_config_authority — y para withdraw_withheld_authority solo cuando la PDA aún la retiene.
Rota el campo a través de UpdatePlatformConfig entre ellos y las dos autoridades aterrizan en claves diferentes: el lado de retiro mantiene la clave que fue configurada en la creación, porque la PDA ya no la retiene y la migración omite esa entrega, mientras que el lado de configuración de honorarios va a la nueva clave. Ninguna llamada falla; la división es silenciosa. Rota entre lanzamientos, o reconcilia las claves después a través de Token-2022 directamente con la clave antigua firmando.

Por qué la protección es requerida, no solo defensiva

SetAuthority de Token-2022 requiere que la autoridad actual firme. Bajo la nueva regla de creación, la PDA de authority de lanzamiento no es la autoridad de retiro de honorarios retenidos en un nuevo mint, así que el CPI incondicional que el programa solía hacer fallaría — y porque se encuentra dentro de MigrateToCpswap, ese fallo habría bloqueado la graduación para cada lanzamiento de Token-2022 con una tarifa de transferencia en una plataforma que había configurado el campo. Los dos cambios solo funcionan como un par.

Qué no cambió

  • Matemáticas y contabilidad de tarifa de transferencia. MAX_TRANSFER_FEE_RATE sigue siendo 500 (5%, denominador 10_000), la tarifa sigue siendo precificada en la curva de la misma manera, y el saldo retenido sigue acumulándose en las cuentas de tokens que Token-2022 coloca.
  • La interfaz de MigrateToCpswap. Misma lista de cuentas, mismos índices de remaining_accounts, mismos dos programas de tokens, sin argumentos.
  • La interfaz de InitializeWithToken2022. Mismas cuentas, mismos TransferFeeExtensionParams, mismo rechazo de NoSupportExtension para cualquier cosa fuera de MetadataPointer y TransferFeeConfig.
  • Manejo de Token-2022 del lado de cotización. Sin cambios desde 2026-08-24.
  • Códigos de error. 60006023 no cambian; este lanzamiento no agrega ninguno.
  • Diseños de cuentas e IDL. Sin cambios. PlatformConfig.transfer_fee_extension_auth mantiene su desplazamiento y su tipo; solo cambió cuándo el programa lo lee.

Páginas actualizadas

  • products/launchlab/platform-config — nueva sección “Autoridades de tarifa de transferencia de Token-2022” cubriendo ambas autoridades, ambos puntos de entrega, y la trampa de rotación; comentario de diseño y lista de trampas corregidos.
  • products/launchlab/instructionsMigrateToCpswap gana un bloque “Entrega de autoridad de tarifa de transferencia de Token-2022”; las postcondiciones de Initialize registran las nuevas autoridades de creación de mint.
  • products/launchlab/accounts — lista de roles de PDA de autoridad y la sección de mint base notan qué autoridades de tarifa de transferencia la PDA realmente retiene.
  • reference/token-2022-support — entrada de mint base de LaunchLab establece quién retiene las autoridades de tarifa de transferencia y cuándo.