Коротко: чтобы проверить делегата в Solana, откройте состояние нужного token account и отдельно найдите owner, delegate и delegated amount. Владелец контролирует аккаунт, а делегат получает ограниченное разрешение на определённые операции с токенами. Это разрешение относится к конкретному token account и не означает, что делегат владеет кошельком или всеми активами пользователя.
Проверка особенно полезна после взаимодействия с DeFi-приложением, неизвестным сайтом или транзакцией, смысл которой был неясен. Сначала убедитесь, что смотрите правильную сеть, mint и token account. Затем сравните состояние аккаунта до и после действия. Не отправляйте приватные ключи или seed-фразу сервисам, обещающим проверить разрешения.
Owner, token account и delegate
В Solana баланс токена хранится не непосредственно в обычном аккаунте кошелька, а в token account, который относится к определённому mint. Один token account содержит баланс одного вида токена и информацию о владельце, полномочиях и настройках. Для стандартного адреса, вычисляемого по владельцу и mint, часто используется Associated Token Account. Подробнее устройство разобрано в материале об ATA в Solana.
Owner – адрес, который управляет соответствующим token account и может подписывать разрешённые для него действия. Delegate – адрес, которому владелец назначил ограниченную возможность распоряжаться частью токенов в аккаунте. Состояние хранит размер делегированного количества. Поэтому проверяйте сразу два поля: наличие адреса делегата и оставшийся лимит. Одно поле без другого может дать неполную картину.
Делегат не получает контроль над исходным кошельком, seed-фразой или другими token accounts. Но если разрешение активно, он может совершить операции с токенами в рамках полномочий, заданных владельцем. Это уже реальный риск: даже ограниченный объём может быть значительным относительно баланса или цены актива. Перед подтверждением транзакции нужно понимать, какой аккаунт и какой лимит она затрагивает.
Как проверить состояние аккаунта
- Определите mint. Найдите полный адрес токена в официальном источнике и сверяйте его с аккаунтом. Тикер может совпадать у нескольких активов. Инструкция по идентификации есть в материале о проверке адреса Solana-токена.
- Найдите token account. Откройте аккаунты токена для нужного кошелька и выберите запись с проверенным mint. Если существует несколько счетов одного актива, проверьте каждый.
- Проверьте owner. Сверьте его с ожидаемым адресом владельца token account. Не путайте поле владельца самого аккаунта в сети с owner внутри данных токена: это разные уровни.
- Найдите delegate. Если поле пусто или равно нулевому значению, активный delegate не указан. Если присутствует адрес, сравните его с ожидаемым приложением и проверьте полный адрес, а не только первые символы.
- Прочитайте delegated amount. Уточните остаток разрешённого объёма и учтите decimals mint, чтобы правильно интерпретировать отображаемое количество.
- Проверьте последние изменения. Изучите историю транзакций, которая могла назначить, заменить или отозвать полномочие. Сверьте результат после подтверждения сети.
Обозреватель может показывать данные в сыром формате или под другим названием. Если он не выводит поле delegate, используйте надёжный инструмент чтения публичных данных и сверяйте результат с официальной документацией программы. Не подключайте кошелёк для чтения открытого состояния, если достаточно публичного адреса аккаунта.
Как выдаётся и ограничивается разрешение
Стандартная модель токена позволяет владельцу token account назначить delegate и указать допустимое количество. Подписание происходит ключом владельца аккаунта, а не ключом mint authority. Delegate может использовать разрешение в рамках заданной операции, например перемещать ограниченное количество токенов или выполнять поддерживаемое программой действие. Разрешение не распространяется автоматически на другие счета того же владельца.
У token account действует одно текущее поле делегата. Новое назначение заменяет прежнее значение и устанавливает новое разрешённое количество, поэтому не следует считать, что разные разрешения всегда накапливаются. Фактическое поведение транзакции нужно проверять по используемой программе и типу операции. В Token-2022 могут существовать дополнительные расширения, которые влияют на правила токена; обзор есть в материале о расширениях Token-2022.
Делегирование – не то же самое, что полномочия выпуска или заморозки mint. Mint authority управляет выпуском новых токенов, а freeze authority – функцией заморозки связанных счетов, если она назначена. Эти полномочия относятся к уровню mint и проверяются отдельно; подробности описаны в статье о mint и freeze authority.
Как отозвать неизвестного делегата
Владелец token account может отправить операцию отзыва delegate. После подтверждения транзакции проверьте состояние аккаунта ещё раз: адрес делегата должен быть очищен, а делегированное количество – стать нулевым или отсутствовать в отображении. Запись в истории показывает, что транзакция состоялась, но именно текущее состояние отвечает на вопрос, действует ли разрешение сейчас.
Перед отзывом убедитесь, что выбрали нужный token account и понимаете последствия для подключённого приложения. Отзыв может остановить автоматическую стратегию или сделать невозможным перевод, который ожидал сторонний сервис. Если разрешение выдано неизвестному адресу, сначала обезопасьте основной кошелёк, проверьте остальные счета и не подписывайте новые запросы с тем же сайтом.
Не пытайтесь отозвать разрешение через случайную веб-страницу, куда нужно ввести seed-фразу. Работайте с кошельком, который контролируете, и проверяйте текст операции перед подписью. После подтверждения обновите данные обозревателя и убедитесь, что изменения попали именно в нужную сеть и token account.
Опасные заблуждения
- «Delegate равен владельцу». Нет, это отдельная роль с ограничением по количеству и конкретным token account.
- «Пустое поле в одном аккаунте означает отсутствие разрешений везде». У другого mint может быть другой token account и отдельный delegate.
- «Небольшой лимит всегда безопасен». Оцените количество токенов, цену и возможность повторно выдать разрешение.
- «Знакомый логотип подтверждает адрес». Проверяйте полный mint и адрес делегата; метаданные можно копировать.
- «Подключение сайта только для чтения». Подключение может сопровождаться запросом подписи, поэтому разделяйте просмотр публичных данных и транзакцию.
- «Отзыв удаляет историю». Он меняет текущие полномочия, но предыдущая транзакция остаётся в публичной истории сети.
Профилактика
Периодически просматривайте token accounts, особенно если взаимодействовали с приложениями, которыми больше не пользуетесь. Подписывайте только ожидаемые операции и сверяйте адрес программы и объём разрешения. Если интерфейс показывает бессрочный или большой лимит, выясните, можно ли задать меньший объём и зачем приложению нужен доступ.
Не делегируйте сумму, которой сервису не требуется управлять. Для крупных остатков можно держать отдельный кошелёк для взаимодействия с приложениями, сохраняя основную сумму вне него. Такая схема не отменяет проверку, но ограничивает возможный ущерб при ошибке или компрометации отдельного аккаунта.
Итог
Проверка delegate сводится к точному выбору mint и token account, сопоставлению owner, адреса delegate и оставшегося количества. Если разрешение неизвестно, отзовите его через контролируемый кошелёк и проверьте итоговое состояние в сети. Всегда рассматривайте полномочия каждого token account отдельно: это помогает увидеть, чему именно разрешил доступ владелец и какой риск ещё сохраняется.



