Skip to main content
Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Эта запись описывает предстоящее обновление программы LaunchLab. Она была проверена на локальной ветке релиза перед развёртыванием. Перед использованием функции вывода withheld-fee убедитесь, что программа развёрнута.
Базовый 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.
  • MigrateToCpswap не изменился для вызывающих. Те же аккаунты, те же аргументы, те же ошибки. Новая проверка внутренняя; без неё миграция mint нового поколения вернулась бы ошибкой внутри Token-2022, потому что PDA больше не может подписать authority, которую она не держит.
  • Существующие запуски не затронуты. Mint, уже находящиеся в цепи, сохраняют PDA на обеих authority и по-прежнему получают обе при выпуске.
  • Обновление IDL не требуется. Никакие макеты, аккаунты, аргументы или коды ошибок не изменились.

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

Обе передачи по-прежнему находятся за одним и тем же внешним условием, как всегда: базовый 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.
  • Коды ошибок. 60006023 не изменились; этот релиз не добавляет новые.
  • Макеты аккаунтов и IDL. Не изменились. PlatformConfig.transfer_fee_extension_auth сохраняет свой смещение и тип; изменилось только то, как программа его читает.

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

  • products/launchlab/platform-config — новый раздел “Token-2022 transfer-fee authorities” охватывающий обе authority, обе точки передачи и ловушку ротации; комментарий макета и список подводных камней исправлены.
  • products/launchlab/instructionsMigrateToCpswap получает блок “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 и когда.