Что такое ассоциированный токен-аккаунт Solana (ATA)?
У кошелька Solana есть публичный адрес, но большинство токенов хранятся не прямо в аккаунте с обычным балансом SOL. Они находятся в токен-аккаунтах. Ассоциированный токен-аккаунт, обычно сокращаемый до ATA, — стандартный адрес, который приложения используют для токенов конкретного mint в одном кошельке.
Это разделение объясняет, почему покупка токена может требовать депозит за хранение, а продажа всего баланса — оставлять пустой аккаунт. Оно также объясняет, почему одного символа токена недостаточно для повторного открытия аккаунта.
Что такое ассоциированный токен-аккаунт в Solana?
Ассоциированный токен-аккаунт — стандартный токен-аккаунт, вычисляемый из адреса кошелька, токен-программы и адреса mint. Он хранит токены этого mint под управлением полномочного владельца токен-аккаунта кошелька. Его адрес предсказуем, но создание всё равно требует SOL для покрытия действующего резерва за хранение в блокчейне.
Документация Solana по созданию аккаунтов описывает детерминированный адрес и различие между владельцем токенов и программой-владельцем. Associated Token Program создаёт аккаунт; созданным токен-аккаунтом управляет соответствующая Token Program.
Чем различаются кошелёк, mint и ATA?
При проверке токенов используйте три отдельных обозначения:
| Аккаунт или адрес | На какой вопрос отвечает |
|---|---|
| Адрес кошелька | Какой кошелёк управляет этими токенами? |
| Адрес mint | Какой именно это токен? |
| Адрес токен-аккаунта | Где записано количество единиц этого mint у владельца? |
ATA — конкретный токен-аккаунт, выбранный по стандартному алгоритму вычисления. Кошелёк может управлять и другими токен-аккаунтами. Поэтому простая фраза «один аккаунт на токен» полезна для знакомства, но неполна при проверке реального списка активов.
Для примера представьте два не связанных между собой mint с символом CAT. Это разные токены, хотя символ совпадает. Их ассоциированные аккаунты различаются, потому что адреса mint различны. Всегда сравнивайте mint при выборе аккаунта для закрытия, перевода или повторного создания.
Почему создание ATA блокирует SOL?
Аккаунты занимают место в блокчейне, поэтому для создания нужен минимальный баланс lamports. Для освобождённых от ренты аккаунтов этот баланс служит депозитом за хранение, а не ежедневно списываемой подпиской. Количество токенов и баланс lamports — отдельные проверяемые величины.
У классического токен-аккаунта есть привычная базовая структура, а расширения Token-2022 могут требовать больше места. Сетевые параметры ренты тоже могут меняться. Поэтому сумма из старого руководства — не постоянная цена каждого нового ATA и не точный прогноз возврата из существующего аккаунта.
Используйте текущий предпросмотр транзакции в приложении. Разработчикам следует определить нужный размер аккаунта и запросить актуальный резерв, а не жёстко задавать историческую сумму. RPC-метод расчёта освобождения от ренты принимает длину данных.
Кто оплачивает создание аккаунта?
Транзакция указывает плательщика за создание. Это можете быть вы, отправитель или приложение, готовящее аккаунт получателя. Получение токенов не обязательно означает, что первоначальный депозит оплатил ваш кошелёк.
Это различие важно и при проверке возврата. Разрешённая операция закрытия определяет адрес назначения освобождённых lamports. Это не возмещение по чеку, автоматически отправляемое тому, кто первоначально оплатил создание.
При обычной очистке кошелька проверьте адрес получателя и ожидаемое изменение баланса. Не делайте выводов лишь по первоначальной транзакции покупки. Текущий баланс аккаунта и фактическая инструкция закрытия определяют доступный возврат и его получателя.
Почему пустой ATA остаётся открытым после продажи?
Перемещение токенов и закрытие аккаунта — разные операции. После ухода токенов аккаунт может оставаться доступным для будущих поступлений. Закроет ли его конкретное приложение, зависит от сформированной транзакции.
Поэтому завершённая продажа может сочетаться с пустым аккаунтом. В этом аккаунте с нулевым балансом уже нет токен-позиции, но его lamports всё ещё могут быть выделены под хранение. Сканирование только для чтения выявляет такие аккаунты без требования что-либо уничтожать.
Не путайте нулевой баланс токенов с округлённой долларовой стоимостью. Небольшой остаток или токен без источника цены всё ещё являются токенами во владении. Сжигание и закрытие объясняет, почему это меняет разрешаемое действие.
Можно ли вернуть ренту ATA без сжигания токенов?
Если аккаунт пуст и подходит для закрытия, его можно закрыть без сжигания баланса. Процесс возврата без уничтожения активов в Sol Incinerator помогает проверить такие кандидаты и текущую сумму до подписания.
Для поддерживаемых аккаунтов, которые вы хотите сохранить, разрешённое снятие излишка может вернуть lamports сверх текущего резерва, не меняя данные токенов. Это отдельный путь, отличающийся от возврата оставшегося баланса через закрытие. Он не позволяет снять резерв, всё ещё необходимый для открытого аккаунта.
Прочитайте Возврат излишка SOL без закрытия аккаунтов, если хотите сохранить актив. Владение токеном не даёт разрешения снимать SOL из любого аккаунта, связанного с его mint или метаданными.
Что произойдёт, если вы снова получите токен?
Закрытый аккаунт может потребоваться создать заново. Ассоциированный адрес вычисляется из тех же данных, но существование аккаунта и финансирование хранения всё равно нужно обеспечить. Некоторые приложения готовят аккаунт получателя во время перевода или получения, другие ожидают предварительной подготовки.
Используйте инструмент Reopen Token Account для поддерживаемого mint, когда вам нужен именно этот аккаунт. Проверьте mint и кошелёк, затем стоимость создания. Повторное создание аккаунта не восстанавливает сожжённые или переведённые токены.
Как проверить ATA перед действием?
Запишите адрес кошелька, mint, токен-программу, количество токенов, состояние аккаунта и баланс lamports. Затем простыми словами определите цель: сохранить аккаунт, вернуть поддерживаемый излишек или закрыть пустой аккаунт.
Это небольшое разделение предотвращает распространённые ошибки: выбор другого mint с тем же символом, ожидание, что всё хранение NFT сводится к одному ATA, или предположение, что владелец может снять все SOL, связанные с активом. Соотносите действие с аккаунтом, которым действительно управляете.

Sol Incinerator
Проверьте неиспользуемые токен-аккаунты и доступный возврат SOL в своём кошельке.
По теме
Часто задаваемые вопросы
Что такое ассоциированный токен-аккаунт в Solana?
Ассоциированный токен-аккаунт — стандартный адрес токен-аккаунта, вычисляемый из кошелька, токен-программы и mint токена. Он хранит единицы этого mint для владельца токен-аккаунта. Он отделён от адреса кошелька и аккаунта mint, а его создание требует средств для хранения в блокчейне.
Является ли рента ATA регулярной комиссией Solana?
Нет. Освобождённый от ренты ATA хранит возвратный баланс за хранение, а не оплачивает регулярную подписку. Требуемый минимум зависит от размера аккаунта и сетевой настройки. Закрытие подходящего аккаунта освобождает оставшиеся lamports, а разрешённое снятие излишка возвращает только поддерживаемый баланс сверх необходимого резерва.
Нужен ли каждому токену Solana отдельный ATA?
ATA соответствует одной комбинации кошелька, токен-программы и mint. Поэтому у разных mint разные ассоциированные адреса. Кошелёк может также управлять неассоциированными токен-аккаунтами, а сжатые NFT используют другую модель хранения. Не считайте, что каждому отображаемому активу соответствует один стандартный рентный депозит ATA.