> ## 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: платформа получает withdraw-withheld authority при создании mint

> InitializeWithToken2022 теперь записывает PlatformConfig.transfer_fee_extension_auth в withdraw_withheld_authority нового базового mint вместо PDA launch authority, а MigrateToCpswap переназначает эту authority только если PDA её ещё держит. Изменений в макетах аккаунтов, инструкциях и кодах ошибок нет.

<Info>
  **Эта страница переведена с помощью ИИ. За эталон принимается английская версия.**

  [Открыть английскую версию →](/reference/changelog/2026-08-27-launchlab-token2022-withheld-authority)
</Info>

<Info>
  Эта запись описывает предстоящее обновление программы LaunchLab. Она была проверена на локальной ветке релиза перед развёртыванием. Перед использованием функции вывода withheld-fee убедитесь, что программа развёрнута.
</Info>

Базовый mint Token-2022, созданный `InitializeWithToken2022`, может содержать расширение `TransferFeeConfig`. У этого расширения есть две authority: `transfer_fee_config_authority`, которая изменяет размер комиссии и максимальную комиссию, и `withdraw_withheld_authority`, которая выводит комиссии, удерживаемые Token-2022 на счётах токенов.

До этого релиза программа помещала PDA launch `authority` на обе authority при создании mint и передавала обе в `PlatformConfig.transfer_fee_extension_auth` при выпуске. Программа launchpad не имеет инструкций для вывода withheld или сбора комиссий, поэтому на протяжении всей фазы bonding-curve никто не мог вывести удержанный баланс — единственный ключ, который мог это сделать, был PDA без инструкции для подписания.

Этот релиз записывает `transfer_fee_extension_auth` непосредственно в `withdraw_withheld_authority` при создании mint, так что платформа может собирать удержанные комиссии с первой сделки. `MigrateToCpswap` получает проверку, которая переназначает эту authority только если PDA её ещё держит, что обеспечивает работу выпуска для mint обоих поколений.

Больше ничего не изменилось. Ни один аккаунт не вырос и не сжался, ни одна инструкция не получила или не потеряла аккаунт, ни один аргумент не изменился и ни один код ошибки не переместился.

## TL;DR для интеграторов

* **Удержанные комиссии за передачу доступны для вывода во время запуска.** На новом запуске Token-2022, у платформы которого установлена `transfer_fee_extension_auth`, этот ключ является `withdraw_withheld_authority` mint с момента создания. Вызывайте `WithdrawWithheldTokensFromAccounts` / `WithdrawWithheldTokensFromMint` самого Token-2022 напрямую; LaunchLab не имеет инструкции для этого и никогда не имел.
* **Время `transfer_fee_config_authority` не изменилось.** Это по-прежнему PDA launch `authority` до выпуска и по-прежнему переходит в `transfer_fee_extension_auth` в `MigrateToCpswap`. Размер комиссии не может быть изменён во время запуска.
* **Установите `transfer_fee_extension_auth` перед запуском.** Когда это `Pubkey::default()` при создании mint, withdraw authority возвращается к PDA `authority` — старое поведение. Установка поля позже всё ещё восстанавливает authority при выпуске, но удержанный баланс остаётся заблокированным до этого момента.
* **Не ротируйте поле во время запуска.** Две authority читаются в два разных момента, поэтому значение, которое меняется между ними, оставляет их на разных ключах. Подробности в разделе [Ротация разделяет две authority](#rotation-splits-the-two-authorities).
* **`MigrateToCpswap` не изменился для вызывающих.** Те же аккаунты, те же аргументы, те же ошибки. Новая проверка внутренняя; без неё миграция mint нового поколения вернулась бы ошибкой внутри Token-2022, потому что PDA больше не может подписать authority, которую она не держит.
* **Существующие запуски не затронуты.** Mint, уже находящиеся в цепи, сохраняют PDA на обеих authority и по-прежнему получают обе при выпуске.
* **Обновление IDL не требуется.** Никакие макеты, аккаунты, аргументы или коды ошибок не изменились.

## Кто что держит и когда

| Authority                       | Держатель при создании mint                                                       | Держатель после `MigrateToCpswap`                                                          |
| ------------------------------- | --------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| `withdraw_withheld_authority`   | `transfer_fee_extension_auth`; PDA `authority` когда это поле `Pubkey::default()` | Не изменяется, если это уже ключ платформы. Переназначается только если PDA её ещё держит. |
| `transfer_fee_config_authority` | PDA `authority`, всегда                                                           | `transfer_fee_extension_auth`, когда это поле не default                                   |

Обе передачи по-прежнему находятся за одним и тем же внешним условием, как всегда: базовый mint должен содержать `TransferFeeConfig` **и** `transfer_fee_extension_auth` должна быть не default. Платформа, которая никогда не устанавливает это поле, сохраняет обе authority на PDA `authority` навсегда — размер комиссии никогда не может быть изменён и удержанный баланс никогда не может быть выведен.

## Ротация разделяет две authority

`transfer_fee_extension_auth` читается дважды за запуск, в два момента, которые могут быть разделены днями:

1. В `InitializeWithToken2022`, для `withdraw_withheld_authority`.
2. В `MigrateToCpswap`, для `transfer_fee_config_authority` — и для `withdraw_withheld_authority` только когда PDA её ещё держит.

Ротируйте поле через `UpdatePlatformConfig` между ними и две authority окажутся на разных ключах: сторона вывода сохраняет ключ, который был настроен при создании, потому что PDA больше его не держит и миграция пропускает эту передачу, в то время как сторона конфигурации комиссии переходит на новый ключ. Ни один вызов не завершится ошибкой; разделение молчаливо. Ротируйте между запусками или согласуйте ключи позже непосредственно через Token-2022 со старым ключом, подписывающим.

## Почему проверка требуется, а не просто защитна

`SetAuthority` Token-2022 требует подписи *текущей* authority. По новому правилу создания PDA launch `authority` не является withdraw-withheld authority на новом mint, поэтому безусловный CPI, который программа раньше делала, завершился бы ошибкой — и поскольку он находится внутри `MigrateToCpswap`, эта ошибка заблокировала бы выпуск для каждого запуска Token-2022 с комиссией за передачу на платформе, которая настроила это поле. Два изменения работают только как пара.

## Что не изменилось

* **Математика и учёт комиссии за передачу.** `MAX_TRANSFER_FEE_RATE` по-прежнему `500` (5%, знаменатель `10_000`), комиссия по-прежнему учитывается в кривой так же, и удержанный баланс по-прежнему накапливается на счётах токенов, которые Token-2022 на них помещает.
* **Интерфейс `MigrateToCpswap`.** Тот же список аккаунтов, те же индексы `remaining_accounts`, те же два программы токенов, нет аргументов.
* **Интерфейс `InitializeWithToken2022`.** Те же аккаунты, те же `TransferFeeExtensionParams`, то же отклонение `NoSupportExtension` для всего, кроме `MetadataPointer` и `TransferFeeConfig`.
* **Обработка Token-2022 на стороне quote.** Не изменилась с [2026-08-24](/ru/reference/changelog/2026-08-24-launchlab-token2022-quote-mint).
* **Коды ошибок.** `6000`–`6023` не изменились; этот релиз не добавляет новые.
* **Макеты аккаунтов и IDL.** Не изменились. `PlatformConfig.transfer_fee_extension_auth` сохраняет свой смещение и тип; изменилось только то, как программа его читает.

## Обновлённые страницы

* `products/launchlab/platform-config` — новый раздел "Token-2022 transfer-fee authorities" охватывающий обе authority, обе точки передачи и ловушку ротации; комментарий макета и список подводных камней исправлены.
* `products/launchlab/instructions` — `MigrateToCpswap` получает блок "Token-2022 transfer-fee authority handover"; постусловия `Initialize` записывают новые authority при создании mint.
* `products/launchlab/accounts` — список ролей authority-PDA и раздел базового mint отмечают, какие transfer-fee authority PDA фактически держит.
* `reference/token-2022-support` — запись базового mint LaunchLab указывает, кто держит transfer-fee authority и когда.
