Разрешения токенов: как отозвать и не потерять кошелёк | IceAI

Разрешения токенов: как отозвать и не потерять кошелёк

Approve в DeFi: чем опасно бессрочное разрешение, как проверить его список и отозвать лишнее за пару минут дешевле доллара.

Приятель разменял 200 USDT на свежий мемкоин на новом DEX, через неделю про проект забыл. Через полгода с кошелька ушли не только эти токены, но и лежавшие рядом 4000 USDT и эфир. Никто не взламывал пароль и не крал seed-фразу — контракт проекта просто воспользовался правом, которое само же и получило. Перед первым обменом кошелёк предложил approve, приятель нажал «подтвердить», и контракт получил доступ к его монетам бессрочно. На этом разрешении теряют деньги чаще, чем на скам-раздачах, потому что оно тихое: ничего не списывается сразу, просто открывается дверь. Разберём, как посмотреть, что ты уже наразрешал, и как закрыть лишнее за пару минут.

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

С чего начать

Начинать надо не с покупок и не с отзыва, а с ревизии: выясни, сколько контрактов вообще имеют доступ к твоим токенам. Самый быстрый способ — сайт revoke.cash. Он поддерживает Ethereum, BNB Chain, Polygon, Arbitrum, Base, Optimism и ещё десяток сетей: подключаешь кошелёк, выбираешь сеть и видишь список — какой контракт, к какому токену, на какую сумму разрешение. Второй вариант — встроенные инструменты обозревателей: у Etherscan есть Token Approval Checker, у BscScan и Polygonscan то же самое. Для Ethereum и BNB их хватает, для остальных сетей revoke.cash удобнее.

Кошелёк сам такой список обычно не показывает. MetaMask подсказывает про подписи только в момент действия, поэтому задним числом смотреть разрешения приходится через отдельный сервис. Возьми за правило: раз в месяц открыл revoke.cash, глянул список, лишнее убрал. Это занимает 5 минут.

Что именно ты подписываешь при обмене

Смарт-контракт не может просто взять и списать твои монеты с кошелька — по умолчанию он видит только свой токен и ничего не может с чужим USDT. Поэтому перед обменом кошелёк просит разрешение (approve): ты разрешаешь контракту распоряжаться конкретным токеном в конкретном количестве. Это не перевод — в этот момент баланс не меняется. Меняется только право.

Есть два вида разрешения. Точное — «можно списать ровно 200 USDT». И безлимитное (unlimited allowance) — «можно списать сколько угодно и когда угодно», технически это число 2 в 256-й степени. Биржи и DEX по умолчанию ставят именно безлимит: тогда при следующем обмене approve не понадобится, и ты экономишь на газе. Удобно — но именно бессрочное разрешение и становится ключом от кошелька, если контракт окажется дырявым или скамным.

Как отозвать лишнее

  1. Открой revoke.cash и подключи кошелёк. Никаких подписей «на перевод» на этом шаге нет — просмотр бесплатный.
  2. Выбери сеть в верхнем переключателе. Список у каждой сети свой, начни с той, где держишь основные суммы: Ethereum и BNB Chain.
  3. Найди в списке строку с нужным контрактом. Сервис подписывает: безлимитное разрешение помечено как Unlimited.
  4. Нажми Revoke рядом с токеном. Кошелёк попросит подтвердить транзакцию, и ты платишь газ.
  5. Дождись подтверждения. Разрешение станет нулевым, контракт больше не сможет трогать этот токен.

Отзывай только то, чему больше не доверяешь: старые изношенные протоколы, незнакомые DEX, любые контракты из раздач и «клеймов», которые ты уже забрал. Рабочим площадкам, которыми пользуешься каждый день, разрешение можно оставить — но лучше с лимитом, а не с безлимитом.

Сколько стоит отзыв

Отзыв — это обычная транзакция в блокчейне, газ около 46 000 единиц. Цифры по сетям при средней загрузке:

Сеть Газ Примерная цена
Ethereum ~46 000 1,5–4 $
BNB Chain ~46 000 0,03–0,1 $
Polygon ~46 000 меньше 0,01 $
Arbitrum ~46 000 0,05–0,2 $

Посчитаем на Ethereum: 46 000 газа при 20 gwei и цене эфира 3000 $ — это 0,00092 ETH, около 2,7 $. Если под рукой кошелёк с 5000 $ в токенах, отзыв обходится в 0,05% от суммы под риском. Дождись ночи или выходного, когда сеть разгружена и газ падает в 3–5 раз — отзыв тех же разрешений будет стоить меньше доллара.

Ставь лимит вместо безлимита

Все кошельки позволяют вручную вписать сумму разрешения. Когда сайт показывает approve на неограниченное число, открой настройки токена и поставь ровно ту сумму, что меняешь, плюс запас 1–2%. Да, при следующей сделке approve придётся повторить и доплатить газ — зато контракт в любой момент видит только эти 200 USDT, а не весь твой баланс. Для крупных сумм это единственный разумный вариант: экономия на газе в 3 $ не стоит риска потерять 5000 $.

Когда разрешение особенно опасно

Главный канал кражи — сайты, которые просят approve под видом бесплатной раздачи, «проверки кошелька» или «клейма награды». Ты подписываешь разрешение на токен, который у тебя реально лежит, и через час контракт его вытягивает. Второй сценарий — взлом нормального протокола: сам код был чистый, но злоумышленники вывели ключи и дёрнули все накопленные разрешения разом. Жертв тут не спасает даже хорошая репутация площадки. Поэтому приватный ключ и seed-фраза — не единственное, что нужно беречь: список выданных разрешений это тоже твои деньги.

Частые ошибки

  • Подписывать approve на незнакомом сайте «просто посмотреть». Разрешение выдаётся сразу, и отменить его в один клик не получится — только отдельной транзакцией с газом.
  • Держать крупный баланс на кошельке, которым торгуешь на десятках площадок. Разделяй: отдельный кошелёк для экспериментов с мелкими суммами, отдельный холодный — для хранения.
  • Отзывать всё подряд из страха. На отправку отзыва сам тоже платишь газ; чистить 20 разрешений на Ethereum выйдет дороже, чем оно того стоит. Убирай в первую очередь безлимит на крупные токены.
  • Считать, что hardware-кошелёк спасает автоматически. Он требует подтверждения на устройстве — но если ты сам подписал approve, дальше контракт действует без тебя.
  • Забыть про BNB Chain и L2. Многие проверяют только Ethereum, а опасные разрешения висят на Polygon или Base, где газ копеечный и подписывают всё без раздумий.

Коротко

  • Каждый обмен на DEX начинается с approve — это разрешение контракту списывать твои токены, а не перевод.
  • Безлимитное разрешение живёт вечно: пока его не отзовут, контракт может забрать весь баланс этого токена.
  • Проверяй список на revoke.cash или через Token Approval Checker обозревателя; раз в месяц это норма.
  • Отзыв стоит копейки: на Ethereum 1,5–4 $, на BNB Chain и Polygon — центы.
  • Ставь лимит вместо безлимита, особенно если сумма в кошельке превышает 1000 $.
  • Держи суммы для экспериментов отдельно от накоплений; подписывай approve только на сайтах, которым доверяешь.