Вернуться в блог
Solana

Как отозвать разрешения на токены в Solana

S
Sol Slugs Team
Sol Incinerator

Обновление данных о ренте проверено 3 сентября 2026 года: Все фиксированные суммы ренты или выплаты на аккаунт в этой старой статье являются историческими примерами для прежней настройки 6,960 лампортов на байт, а не актуальным расчётом. Размер аккаунта, активный этап снижения ренты, предыдущие выводы, комиссии операции и сетевые расходы могут изменить результат. Прочитайте Снижение ренты Solana в 2026 году и используйте актуальный предпросмотр транзакции для своего кошелька.

Отзыв разрешений хорошо знаком пользователям Ethereum, где неограниченные разрешения ERC-20 привели к опустошению множества кошельков. В Solana есть аналогичный механизм, но он работает иначе, и стоит понимать, что он может и чего не может с вами сделать.

Как отозвать разрешения на токены в Solana?

Подключитесь к инструменту отзыва. Он сканирует все принадлежащие вам токен-аккаунты, показывает адреса, которым вы разрешили выводить из них токены, и удаляет эти разрешения одним пакетом. За это не взимается комиссия — отзыв не возвращает ренту, поэтому вы оплачиваете только сетевую комиссию. Через CLI это делается так: spl-token revoke <TOKEN_ACCOUNT_ADDRESS>.

Что на самом деле представляет собой делегат в Solana

Когда вы одобряете что-то в Solana, вы назначаете делегата для одного конкретного токен-аккаунта. Инструкция Approve записывает в этом аккаунте две вещи: адрес делегата и делегированную сумму.

После этого делегат может переводить или сжигать токены в пределах этой суммы с этого конкретного аккаунта, не спрашивая вас снова. Он не может трогать другие ваши токен-аккаунты, не может превышать делегированную сумму и не может перемещать ваши SOL.

Это реальные полномочия, к которым стоит относиться серьезно: делегат с разрешением для вашего токен-аккаунта может перемещать эти токены. Но радиус поражения значительно меньше, чем у аналога в Ethereum, по трем структурным причинам.

Почему разрешения в Solana имеют более узкую область действия, чем в Ethereum

Разрешение EthereumДелегат Solana
Область действияВсе токены этого контракта, которыми вы владеетеОдин токен-аккаунт
СуммаЧасто без ограниченийУстановленный вами фиксированный лимит
Несколько одновременноДа, они накапливаются для каждого получателяНет — один делегат на аккаунт
Удаляется с помощьюЯвная транзакция отзываОтзыв или закрытие аккаунта

Третья строка — самая важная. В Ethereum разрешения накапливаются: вы можете выдать лимиты десятку контрактов на один и тот же токен, и каждый из них будет незаметно действовать до отзыва. Годы использования DeFi оставляют длинный шлейф забытых неограниченных разрешений, именно поэтому инструменты отзыва стали там необходимы.

В Solana каждый токен-аккаунт имеет не более одного делегата. Назначение нового делегата перезаписывает предыдущего. Нет никакого накапливающегося списка — у токен-аккаунта либо есть один делегат прямо сейчас, либо его нет.

Именно поэтому в Solana так и не сформировалась культура инструментов отзыва, как в Ethereum. Риск реален, но ограничен, и он устраняется сам по себе в ходе обычного использования вашего кошелька.

Откуда появляются делегаты

Большинство делегатов на ваших аккаунтах не представляют угрозы — именно так работают обычные функции Solana:

  • Листинги на NFT-маркетплейсах. Выставление NFT на продажу обычно делегирует его программе маркетплейса, чтобы продажа могла состояться при появлении покупателя. По этой же причине выставленный NFT нельзя сжечь, пока вы не снимете его с продажи: ваш кошелек больше не обладает единоличными полномочиями над ним.
  • Программы стейкинга и хранилищ. Внесение средств в протокол часто использует делегата, а не передачу хранения.
  • Программируемые NFT. pNFT хранятся замороженными с делегированными полномочиями в рамках принудительного взыскания роялти.
  • Вредоносные разрешения. То, о чем действительно стоит беспокоиться: фишинговый сайт показывает транзакцию, похожую на клейм (получение актива), а на самом деле вы подписываете Approve, передавая делегату полномочия над вашими токенами.

Единственная вещь, которую нельзя удалить отзывом

Всё сказанное выше относится к делегату на уровне аккаунта — полю в вашем собственном токен-аккаунте, которым вы владеете и которое поэтому можете очистить.

Стандарт Token-2022 ввел отдельные, более сильные полномочия: постоянный делегат, устанавливаемый на минте, а не на вашем аккаунте. Минт с таким делегатом дает этому адресу право переводить и сжигать токены на каждом аккаунте, где хранится этот токен, без ограничений, и держатель ничего не может с этим сделать. Это свойство самого токена, а не выданное вами разрешение, поэтому инструкция Revoke его не затрагивает, как и любой другой инструмент.

Некоторые легитимные токены используют это намеренно — например, регулируемые стейблкоины, которым необходим механизм возврата средств. Но это означает, что честная область действия любого инструмента отзыва в Solana, включая наш, — это разрешения, выданные вами на ваших собственных аккаунтах.

Если у минта токена есть постоянный делегат, единственный способ устранить этот риск — перестать владеть токеном. Проверьте минт в обозревателе, прежде чем предполагать, что чистый отзыв означает, что никто не сможет переместить данный баланс.

Как проверить, у чего есть делегат

Кошельки не показывают эту информацию. Phantom и Solflare отображают балансы, а не поле делегата в каждом токен-аккаунте, поэтому разрешение, выданное вами два года назад, невидимо в интерфейсе, который вы используете каждый день.

Три способа увидеть это:

  • Инструмент отзыва. Подключите свой кошелек, и он просканирует каждый токен-аккаунт в программах SPL Token и Token-2022, показав каждого делегата, минт, к которому он относится, и размер лимита. Сканирование выполняется только для чтения — никаких подписей, ничего не нужно одобрять просто для просмотра.
  • Обозреватель блоков. Найдите адрес своего кошелька, откройте отдельные токен-аккаунты и проверьте поле делегата. Оно отображается, если делегат установлен. Это выполнимо для одного аккаунта, но утомительно для сотни.
  • CLI-утилита spl-token. Команда spl-token account-info <TOKEN_ACCOUNT_ADDRESS> сообщает о делегате и делегированной сумме.

Если делегатом является знакомый вам маркетплейс, а NFT в данный момент выставлен на продажу, это ожидаемо — снимите его с продажи, и делегат будет удален.

Следите за столбцом лимита. При выдаче разрешений часто устанавливается максимально возможное значение, а не фактически необходимая сумма, что инструмент отображает как Без ограничений (Unlimited). Легитимный листинг обычно делегирует ровно один NFT; неограниченный лимит на токен, которого у вас много, заслуживает более внимательного изучения.

Как отозвать

Через инструмент: подключитесь на странице sol-incinerator.com/revoke, просмотрите список и подпишите. Всё выбранное объединяется в минимально возможное количество транзакций, поэтому кошелек с тридцатью устаревшими делегатами не потребует тридцати подписей.

За это не взимается комиссия. Отзыв не высвобождает ренту, поэтому комиссии не из чего вычитаться — вы платите только сетевую комиссию за транзакцию и ничего больше.

Через CLI, для конкретного токен-аккаунта:

spl-token revoke <TOKEN_ACCOUNT_ADDRESS>

Это вызывает инструкцию Revoke программы SPL Token, для которой требуются только токен-аккаунт и ваша подпись как его владельца. Она полностью очищает поле делегата. Она не может завершиться частичным сбоем и не влияет на ваш баланс.

Через UI кошелька, обычный путь — косвенный: отмените или снимите с продажи то, что изначально создало делегата. Снятие NFT с продажи на маркетплейсе, где вы его выставили, удаляет делегата этого маркетплейса в рамках инструкции отмены.

Отзыв делегата маркетплейса для выставленного NFT фактически снимает его с продажи — маркетплейс больше не сможет завершить сделку. Это правильное поведение, но если вы намерены оставить актив в продаже, не трогайте его делегата.

Почему нельзя отозвать делегата у замороженного аккаунта?

Потому что Solana не позволит вам этого сделать. Программа SPL Token категорически отклоняет отзыв для замороженного токен-аккаунта, возвращая AccountFrozen — заморозка аккаунта блокирует изменение полномочий, а не только переводы.

Это важнее, чем кажется, поскольку заморозка и делегирование часто идут рука об руку. Программируемые NFT хранятся замороженными с делегатом в рамках принудительного взыскания роялти, и многие программы стейкинга замораживают то, что они хранят. Поэтому делегаты, которых вы, скорее всего, найдете, часто оказываются именно теми, кого нельзя удалить напрямую.

Инструмент исключает их из списка, поскольку на практике замороженный аккаунт с делегатом обычно работает так, как задумано — pNFT, взыскивающий роялти, или актив, который вы намеренно отправили в стейкинг, — а не то, на что вам нужно реагировать.

Если вы всё же хотите удалить такого делегата, аккаунт необходимо сначала разморозить. Отмените стейкинг, снимите с продажи или завершите действие, которое его заморозило; после разморозки делегат отзывается обычным образом.

Сжигание не является обходным путем. Замороженный аккаунт отклоняет сжигание по той же причине, что и отзывы — заморозка блокирует операцию, а не только переводы, — поэтому вы не можете уничтожить актив, чтобы избавиться от замороженного делегата, пока актив всё еще находится там. Разморозить его может только орган, обладающий полномочиями на заморозку (freeze authority).

Есть практическая причина, по которой инструмент не будет просто пытаться сделать это в любом случае: отзывы объединяются в минимально возможное количество транзакций, поэтому замороженный аккаунт привел бы к сбою для всех остальных делегатов, делящих с ним транзакцию. Исключение его из списка позволяет остальным завершиться успешно.

Полный вариант: закрыть аккаунт

Вот часть, которую часто упускают из виду. Делегат — это поле, хранящееся в токен-аккаунте. Нет аккаунта — нет делегата.

Поэтому, если рассматриваемый токен — это то, что вам в любом случае не нужно (спам-токен, мертвый мемкоин, мошеннический аирдроп, который уговорил вас что-то подписать), сжигание его и закрытие его аккаунта навсегда удаляет делегата как побочный эффект. Вы не столько отзываете разрешение, сколько удаляете то, к чему это разрешение применялось. И в отличие от простого отзыва, закрытие аккаунта возвращает депозит за аренду в размере ~0.00204 SOL, который на нем хранился.

Это делает очистку более тщательным решением для любого токена, который вы не собираетесь хранить:

ДействиеДелегат удаленТокен сохраненSOL возвращен
ОтзывДаДаНет
Сжигание + закрытие аккаунтаДаНет0.002 SOL

Отзывайте, когда хотите сохранить токен. Сжигайте и закрывайте, когда не хотите.

Если вы считаете, что подписали вредоносную транзакцию, одного отзыва недостаточно. Делегат — это лишь одна из нескольких вещей, которые мог получить злоумышленник, и если ваша сид-фраза была скомпрометирована, никакие действия в сети не помогут. Сначала переведите свои ценные активы на новый кошелек, а затем разбирайтесь со скомпрометированным.

Реалистичная модель угроз

Для большинства людей честное резюме звучит так: проверьте своих делегатов, если вы подписали что-то, о чем сожалеете, снимите с продажи всё, что вы больше не хотите продавать, и избавьтесь от мусорных токенов, к которым часто привязываются вредоносные разрешения.

Архитектура Solana означает, что вы не носите с собой накопленные за годы неограниченные разрешения, как это делает кошелек Ethereum. Что вы, вероятно, действительно носите с собой, так это несколько сотен заброшенных токен-аккаунтов, каждый из которых хранит возвратный депозит — это реальные деньги, и на их возврат уходит около минуты.

Отозвать делегатов

Отозвать делегатов

Просканируйте свой кошелек на наличие делегатов на уровне аккаунта, которых вы одобрили, и очистите их. Без комиссий — вы платите только комиссию сети.

Попробовать

Материалы по теме

Часто задаваемые вопросы

Как отозвать разрешения на токены в Solana?

Используйте инструкцию Revoke программы SPL Token для токен-аккаунта, в котором назначен делегат. Для этого требуются только сам токен-аккаунт и ваша подпись как владельца. В командной строке это spl-token revoke, за которым следует адрес токен-аккаунта.

Что такое делегат в токен-аккаунте Solana?

Делегат — это адрес, которому вы разрешили переводить или сжигать до заданного количества токенов с одного конкретного токен-аккаунта. Маркетплейсы используют делегатов для листинга NFT, а программы стейкинга — для депозитов. У каждого токен-аккаунта может быть только один делегат одновременно.

Так ли опасны разрешения в Solana, как в Ethereum?

Они имеют более узкую область действия. Делегат в Solana привязан к одному токен-аккаунту и ограничен фиксированной суммой, а назначение нового делегата заменяет старого, а не суммируется с ним. В Ethereum разрешения действуют на уровне смарт-контракта токена, часто не имеют лимита и накапливаются бесконечно.

Удаляется ли делегат при закрытии токен-аккаунта?

Да, полностью. Делегат — это поле, хранящееся в самом токен-аккаунте, поэтому при закрытии аккаунта делегат перестает существовать вместе с ним. Сжигание ненужного токена и закрытие его аккаунта удаляет любого делегата как побочный эффект.

Как узнать, назначен ли делегат для токен-аккаунта?

Найдите свой адрес в обозревателе блоков и проверьте отдельные токен-аккаунты: если делегат назначен, он будет указан в соответствующем поле. CLI-утилита spl-token также сообщает об этом, как и любой кошелек, отображающий необработанные данные аккаунта.

Почему нельзя отозвать делегата у замороженного токен-аккаунта?

Программа SPL Token отклоняет отзыв для замороженного аккаунта и возвращает ошибку AccountFrozen, поскольку заморозка блокирует изменение полномочий, а не только переводы. Программируемые NFT и активы в стейкинге часто замораживаются. Аккаунт необходимо разморозить, прежде чем можно будет удалить его делегата, и сжигание не поможет обойти это ограничение, поскольку замороженный аккаунт отклоняет и сжигание.

Можно ли с помощью отзыва удалить постоянного делегата Token-2022?

Нет. Постоянный делегат устанавливается на уровне минта, а не вашего токен-аккаунта, и он дает право переводить и сжигать токены на всех аккаунтах, где хранится этот токен. Это свойство самого токена, поэтому никакая инструкция отзыва не может его удалить. Единственный способ устранить этот риск — перестать владеть токеном.

Как отозвать разрешения на токены в Solana | Sol Incinerator