> ## 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: a plataforma mantém a autoridade de withdraw-withheld desde a criação do mint

> InitializeWithToken2022 agora escreve PlatformConfig.transfer_fee_extension_auth na withdraw_withheld_authority do novo mint base em vez da PDA de autoridade de lançamento, e MigrateToCpswap apenas reatribui essa autoridade quando a PDA ainda a mantém. Sem alterações de layout de conta, instrução ou erro.

<Info>
  **Esta página foi traduzida automaticamente por IA. A versão em inglês é a fonte oficial.**

  [Ver versão em inglês →](/reference/changelog/2026-08-27-launchlab-token2022-withheld-authority)
</Info>

<Info>
  Esta entrada aborda uma atualização futura do programa LaunchLab. Foi verificada contra a branch de lançamento local antes da implantação. Confirme o programa implantado antes de depender da retirada de taxas retidas pré-graduação.
</Info>

Um mint base Token-2022 criado por `InitializeWithToken2022` pode carregar uma `TransferFeeConfig`. Essa extensão tem duas autoridades: `transfer_fee_config_authority`, que altera a taxa de taxa e a taxa máxima, e `withdraw_withheld_authority`, que retira as taxas que Token-2022 retém nas contas de token.

Até este lançamento, o programa colocava a PDA de `authority` de lançamento em ambas na criação do mint e entregava ambas a `PlatformConfig.transfer_fee_extension_auth` na graduação. O programa do launchpad não possui instrução de withdraw-withheld ou harvest, portanto, durante toda a fase de curva de ligação, ninguém poderia retirar o saldo retido — a única chave que poderia era uma PDA sem instrução para assinar com ela.

Este lançamento escreve `transfer_fee_extension_auth` diretamente em `withdraw_withheld_authority` na criação do mint, para que a plataforma possa coletar taxas retidas desde a primeira negociação. `MigrateToCpswap` ganha uma proteção para que apenas reatribua essa autoridade quando a PDA ainda a mantém, o que mantém a graduação funcionando para mints de ambas as gerações.

Nada mais mudou. Nenhuma conta cresceu ou encolheu, nenhuma instrução ganhou ou perdeu uma conta, nenhum argumento mudou e nenhum código de erro se moveu.

## TL;DR para integradores

* **As taxas de transferência retidas são retiráveis durante o lançamento.** Em um novo lançamento Token-2022 cuja plataforma tem `transfer_fee_extension_auth` definido, essa chave é a `withdraw_withheld_authority` do mint desde a criação. Chame diretamente `WithdrawWithheldTokensFromAccounts` / `WithdrawWithheldTokensFromMint` do próprio Token-2022; LaunchLab não possui instrução para isso e nunca teve.
* **O tempo de `transfer_fee_config_authority` não mudou.** Ainda é a PDA de `authority` de lançamento até a graduação e ainda se move para `transfer_fee_extension_auth` em `MigrateToCpswap`. A taxa não pode ser alterada durante o lançamento.
* **Defina `transfer_fee_extension_auth` antes de lançar.** Quando é `Pubkey::default()` na criação do mint, a autoridade de retirada volta para a PDA de `authority` — o comportamento antigo. Definir o campo depois ainda recupera a autoridade na graduação, mas o saldo retido fica preso até então.
* **Não rotacione o campo durante o lançamento.** As duas autoridades são lidas em dois momentos diferentes, portanto um valor que muda entre eles as deixa em chaves diferentes. Detalhes em [A rotação divide as duas autoridades](#rotation-splits-the-two-authorities).
* **`MigrateToCpswap` não mudou para chamadores.** Mesmas contas, mesmos argumentos, mesmos erros. A nova proteção é interna; sem ela, a migração de um mint de nova geração reverteria dentro de Token-2022 porque a PDA não pode mais assinar uma autoridade que não mantém.
* **Lançamentos existentes não são afetados.** Mints já on-chain mantêm a PDA em ambas as autoridades e ainda as recebem na graduação.
* **Nenhuma atualização de IDL é necessária.** Nenhum layout, conta, argumento ou código de erro mudou.

## Quem mantém o quê e quando

| Autoridade                      | Detentor na criação do mint                                                                 | Detentor após `MigrateToCpswap`                                                           |
| ------------------------------- | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| `withdraw_withheld_authority`   | `transfer_fee_extension_auth`; a PDA de `authority` quando esse campo é `Pubkey::default()` | Inalterado quando já é a chave da plataforma. Reatribuído apenas se a PDA ainda o mantém. |
| `transfer_fee_config_authority` | A PDA de `authority`, sempre                                                                | `transfer_fee_extension_auth`, quando esse campo é não-padrão                             |

Ambas as transferências ainda estão atrás da mesma condição externa que sempre estiveram: o mint base deve carregar `TransferFeeConfig` **e** `transfer_fee_extension_auth` deve ser não-padrão. Uma plataforma que nunca define o campo mantém ambas as autoridades na PDA de `authority` para sempre — a taxa nunca pode ser alterada e o saldo retido nunca pode ser retirado.

## A rotação divide as duas autoridades

`transfer_fee_extension_auth` é lido duas vezes por lançamento, em dois momentos que podem estar dias de distância:

1. Em `InitializeWithToken2022`, para `withdraw_withheld_authority`.
2. Em `MigrateToCpswap`, para `transfer_fee_config_authority` — e para `withdraw_withheld_authority` apenas quando a PDA ainda a mantém.

Rotacione o campo através de `UpdatePlatformConfig` entre eles e as duas autoridades acabam em chaves diferentes: o lado de retirada mantém a chave que foi configurada na criação, porque a PDA não a mantém mais e a migração pula essa transferência, enquanto o lado de configuração de taxa vai para a nova chave. Nenhuma chamada falha; a divisão é silenciosa. Rotacione entre lançamentos ou reconcilie as chaves depois através de Token-2022 diretamente com a chave antiga assinando.

## Por que a proteção é necessária, não apenas defensiva

`SetAuthority` do Token-2022 requer que a autoridade *atual* assine. Sob a nova regra de criação, a PDA de `authority` de lançamento não é a autoridade de withdraw-withheld em um novo mint, portanto o CPI incondicional que o programa costumava fazer falharia — e porque fica dentro de `MigrateToCpswap`, essa falha teria bloqueado a graduação para cada lançamento Token-2022 com uma taxa de transferência em uma plataforma que tinha configurado o campo. As duas mudanças funcionam apenas como um par.

## O que não mudou

* **Matemática e contabilidade de taxa de transferência.** `MAX_TRANSFER_FEE_RATE` ainda é `500` (5%, denominador `10_000`), a taxa ainda é precificada na curva da mesma forma, e o saldo retido ainda se acumula nas contas de token que Token-2022 coloca.
* **Interface de `MigrateToCpswap`.** Mesma lista de contas, mesmos índices de `remaining_accounts`, mesmos dois programas de token, sem argumentos.
* **Interface de `InitializeWithToken2022`.** Mesmas contas, mesmos `TransferFeeExtensionParams`, mesma rejeição de `NoSupportExtension` para qualquer coisa fora de `MetadataPointer` e `TransferFeeConfig`.
* **Manipulação de Token-2022 do lado da cotação.** Inalterado desde [2026-08-24](/pt/reference/changelog/2026-08-24-launchlab-token2022-quote-mint).
* **Códigos de erro.** `6000`–`6023` não mudaram; este lançamento não adiciona nenhum.
* **Layouts de conta e o IDL.** Inalterado. `PlatformConfig.transfer_fee_extension_auth` mantém seu deslocamento e seu tipo; apenas quando o programa o lê mudou.

## Páginas atualizadas

* `products/launchlab/platform-config` — nova seção "Autoridades de taxa de transferência Token-2022" cobrindo ambas as autoridades, ambos os pontos de transferência e a armadilha de rotação; comentário de layout e lista de armadilhas corrigidos.
* `products/launchlab/instructions` — `MigrateToCpswap` ganha um bloco "Transferência de autoridade de taxa de transferência Token-2022"; as pós-condições de `Initialize` registram as novas autoridades de criação de mint.
* `products/launchlab/accounts` — lista de funções de PDA de autoridade e a seção de mint base observam quais autoridades de taxa de transferência a PDA realmente mantém.
* `reference/token-2022-support` — entrada de mint base LaunchLab declara quem mantém as autoridades de taxa de transferência e quando.
