> ## 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-27 — LaunchLab: la plataforma retiene la autoridad de retiro de honorarios desde la creación del mint

> InitializeWithToken2022 ahora escribe PlatformConfig.transfer_fee_extension_auth en la withdraw_withheld_authority del nuevo mint base en lugar de la PDA de autoridad de lanzamiento, y MigrateToCpswap solo reasigna esa autoridad cuando la PDA aún la retiene. Sin cambios en el diseño de cuentas, instrucciones o errores.

<Info>
  **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 →](/reference/changelog/2026-08-27-launchlab-token2022-withheld-authority)
</Info>

<Info>
  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.
</Info>

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](#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

| Autoridad                       | Titular en la creación del mint                                                              | Titular después de `MigrateToCpswap`                                                          |
| ------------------------------- | -------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| `withdraw_withheld_authority`   | `transfer_fee_extension_auth`; la PDA de `authority` cuando ese campo es `Pubkey::default()` | Sin cambios cuando ya es la clave de la plataforma. Reasignada solo si la PDA aún la retiene. |
| `transfer_fee_config_authority` | La PDA de `authority`, siempre                                                               | `transfer_fee_extension_auth`, cuando ese campo es no predeterminado                          |

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](/es/reference/changelog/2026-08-24-launchlab-token2022-quote-mint).
* **Códigos de error.** `6000`–`6023` 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/instructions` — `MigrateToCpswap` 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.
