Материал проверен 7 ноября 2026?
БК

ГЛАВНАЯ / ИНСТРУКЦИИ / ЗАКРЫТИЕ TOKEN-2022 ACCOUNT В SOLANA: AUTHORITY И ДОПОЛНИТЕЛЬНЫЕ ПРОВЕРКИ

Закрытие Token-2022 account в Solana: authority и дополнительные проверки

Общий порядок закрытия token account и возврата lamports уже разобран отдельно. Для Token-2022 перед CloseAccount нужно дополнительно понять, какой token program владеет аккаунтом, кто указан его внутренним owner и есть ли отдельный close authority. Расширения могут добавлять собственные проверки; поэтому один лишь нулевой баланс в кошельке не всегда объясняет результат операции.

Правильная программа

Runtime owner аккаунта должен совпасть с программой его mint

Для токена сначала установите адрес mint и его runtime owner. Затем получите сам token account и сверьте его runtime owner. Legacy Token Program и Token-2022 – разные program ID; адреса одного формата не доказывают, какой процессор должен получить инструкцию. Неправильная программа или неверный аккаунт часто приводят к отказу ещё до проверки пользовательских полномочий.

Для ATA адрес выводится с учётом token program, поэтому нельзя считать, что одинаковая пара владелец + mint всегда подразумевает одну программу. Сверьте program ID на mint и token account и используйте декодер, который умеет читать Token-2022 extensions.

  • mint и token account используют одну программу
  • Token-2022 не смешан с legacy Token Program
  • runtime owner проверен
Подпись на закрытие

Проверьте внутренние owner и close_authority

Поле owner в account info называет программу, а внутреннее поле owner token account – authority, управляющий токеновым балансом. Для CloseAccount может подписывать владелец аккаунта или отдельная close_authority, если она задана. Если authority является multisig, проверьте состав и порог подписей по правилам соответствующей token program.

Адрес, который оплатил создание ATA, автоматически не становится получателем его lamports или authority закрытия. Destination задаётся инструкцией. Сверяйте его отдельно от signer-а, а также проверяйте, что destination writable и принадлежит ожидаемому адресу.

  • внутренний owner и close_authority декодированы
  • multisig threshold проверен
  • destination не принят за плательщика создания ATA
Поля расширений

Нулевой видимый баланс не раскрывает всё состояние Token-2022

Token-2022 сохраняет базовые правила токенового аккаунта, но отдельные extensions добавляют поля и инструкции. Пример – TransferFeeAmount: удержанная комиссия хранится в дополнительном поле аккаунта и не равна обычному token amount, который показывает кошелёк. Официальная документация описывает отдельные инструкции для снятия удержанной комиссии или её переноса в mint. Не считайте withheld amount обычным переводимым остатком и не предполагайте без документации, что он сам по себе блокирует закрытие.

Получите список расширений из данных аккаунта и mint. Если CloseAccount отклонён, декодируйте точный код ошибки и сверяйте его с требованиями конкретного extension и программой текущей версии. Не переносите выводы из одного mint на все токены Token-2022.

  • обычный amount отделён от withheld extension fields
  • аккаунт и mint extensions просмотрены
  • поведение не угадано без документации
Диагностика ошибки

Разберите отказ по слоям и повторно проверьте результат

Проверяйте по порядку: тот ли аккаунт выбран; совпадают ли token program у mint и account; равен ли обычный token amount нулю; не является ли счёт wrapped SOL; допустимо ли состояние frozen для данного случая; тот ли owner или close authority подписывает; корректно ли перечислены multisig signers; какие extensions активны; какой адрес назначен destination.

После успешной транзакции проверьте signature и ошибку исполнения, наличие аккаунта по прежнему адресу и прирост lamports на назначенном получателе. Не делайте второй close по одному лишь сообщению интерфейса: сначала установите, исполнился ли первый запрос. Размер возврата может включать lamports аккаунта и не является универсальной заранее фиксированной суммой.

  • signer и получатель проверены
  • signature и err получены
  • после транзакции account state сверено
FAQ

Частые вопросы

Token-2022 account принадлежит владельцу кошелька?

На runtime-уровне его owner обычно Token-2022; внутренняя authority аккаунта может указывать адрес пользователя.

Кто может подписать CloseAccount?

Владелец token account или отдельный close authority, если он настроен; multisig требует свои подписи.

Если интерфейс показывает нулевой баланс, счёт точно можно закрыть?

Не обязательно. Нужно проверить program ID, состояние и extensions аккаунта и mint.

Withheld transfer fee – это обычный остаток токена?

Нет. Это отдельное поле расширения с отдельными инструкциями обработки.

Кто получает lamports после закрытия?

Адрес назначения, заданный инструкцией; он не обязан совпадать с плательщиком создания ATA.

Итоговая проверка

Чек-лист: закрытие token-2022 account в solana: authority и дополнительные проверки

  • runtime owner mint и token account прочитаны;
  • выбрана соответствующая Token-2022 программа;
  • внутренний owner и close_authority различены;
  • multisig threshold проверен при необходимости;
  • token amount и wrapped-SOL состояние рассмотрены отдельно;
  • extensions аккаунта и mint декодированы;
  • destination и signer сверены до подписи;
  • после отправки проверены signature, err и фактическое закрытие.

Материал подготовлен редакцией сайта и проверен 7 ноября 2026 года. Условия бирж, кошельков и блокчейн-сетей могут меняться. Перед операцией сверяйте данные в интерфейсе выбранного сервиса.