ГЛОССАРИЙ · СМАРТ-КОНТРАКТЫ

Approve (токен-апрув)

Approve — разрешение, которое пользователь выдаёт смарт-контракту на управление своими токенами ERC-20. Без этого разрешения протоколы DeFi не могут трогать ваши активы. Проблема в том, что большинство dApp запрашивают неограниченный approve — и этим активно пользуются мошенники.

Что такое approve в криптовалюте

Стандарт ERC-20, по которому работает большинство токенов в сети Ethereum (а также BSC, Polygon и других EVM-совместимых сетях), содержит специальную функцию approve(). Она позволяет владельцу токенов дать разрешение — апрув — другому адресу (как правило, смарт-контракту) расходовать определённое количество токенов от его имени.

Представьте, что вы приходите в банк и подписываете доверенность: «Разрешаю Ивану Ивановичу распоряжаться средствами на моём счёте в размере до 100 000 рублей». Примерно так работает approve в блокчейне, только вместо Ивана Ивановича — адрес смарт-контракта, а вместо рублей — ваши USDT, UNI, WBTC или любые другие ERC-20 токены.

Approve необходим для любого взаимодействия с DeFi-протоколами. Когда вы меняете токены на Uniswap, добавляете ликвидность в пул или стейкаете активы — всё начинается с approve. Без этого разрешения контракт биржи физически не может получить ваши токены и провести операцию.

Как работает функция approve технически

С технической точки зрения вызов approve(spender, amount) записывает в блокчейн два параметра: адрес получателя разрешения (spender) и максимальную сумму, которой он может распоряжаться (amount). Эта запись хранится в состоянии самого токен-контракта в маппинге allowance.

Когда разрешённый контракт хочет перевести токены, он вызывает функцию transferFrom(owner, recipient, amount). Токен-контракт проверяет: есть ли разрешение? Не превышает ли запрашиваемая сумма лимит? Если всё в порядке — перевод выполняется, лимит уменьшается на списанную сумму.

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

Unlimited approve: почему это главная опасность DeFi

Здесь начинается главная проблема. По умолчанию большинство DeFi-интерфейсов предлагают выдать так называемый unlimited approve — разрешение на максимально возможную сумму. В коде это выглядит как число 2^256 - 1, то есть примерно 1.16 × 10^77 токенов — бесконечность с практической точки зрения.

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

Опасность: Unlimited approve означает, что контракт может в любой момент, без вашего участия, списать весь ваш баланс этого токена. Если контракт будет взломан, окажется вредоносным или попадёт под контроль злоумышленников — они получат полный доступ к вашим средствам.

По данным исследований, более 70% пользователей DeFi никогда не проверяли список своих активных approve. У среднего активного DeFi-пользователя накапливается от 20 до 80 активных разрешений, многие из которых они уже не помнят.

Как мошенники используют approve: drainer-атаки

Механизм approve стал основой целой индустрии криптомошенничества. Злоумышленники создают поддельные dApp — клоны известных сервисов или фиктивные протоколы с обещанием высокой доходности — и единственная цель этих сайтов: заставить пользователя подписать вредоносный approve.

Схема работает так. Вы получаете ссылку в Telegram, Discord или Twitter на «эксклюзивный» дроп, «новый» AMM с 500% APY или «срочный» airdrop популярного проекта. Переходите на сайт, он выглядит профессионально. Нажимаете кнопку «Claim» или «Connect & Stake». MetaMask показывает запрос на подпись транзакции. Вы видите что-то вроде «Approve USDT». Соглашаетесь — и в этот момент вредоносный контракт получает unlimited approve на все ваши USDT.

Дальше может произойти одно из двух. Либо средства утекают немедленно (автоматический дрейнер), либо злоумышленники ждут удобного момента — например, когда на кошелёк придёт крупная сумма. Поскольку approve действует бессрочно, торопиться им некуда.

Фишинговые сайты с approve

Особенно распространены фишинговые сайты, имитирующие Uniswap, OpenSea, Blur и другие топ-протоколы. Пользователь видит знакомый интерфейс, не замечает отличий в домене (например, uniswwap.org вместо uniswap.org) и спокойно подписывает approve. Именно поэтому всегда нужно проверять адрес сайта в адресной строке браузера, а не доверять визуальному оформлению.

NFT-минты как вектор атаки

Злоумышленники часто маскируют вредоносный approve под NFT-минт. Вам предлагают «забрать бесплатную NFT» — технически это выглядит как approve на ERC-20 токены с огромным лимитом. Или наоборот: в транзакции минта скрыт второй вызов, разрешающий контракту тратить ваши USDT.

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

Проверить, каким контрактам вы уже выдали approve, можно с помощью нескольких бесплатных инструментов.

  • revoke.cash — наиболее удобный сервис. Поддерживает Ethereum, BSC, Polygon, Arbitrum, Optimism и десятки других EVM-сетей. Показывает все активные approve с суммами и датами. Позволяет отозвать разрешения прямо в интерфейсе, подписав транзакцию.
  • etherscan.io/tokenapprovals — стандартный инструмент Etherscan для сети Ethereum. Менее удобен, но авторитетен как источник данных.
  • approved.zone — альтернативный мультичейн инструмент с удобной фильтрацией по сетям.
  • DeBank — агрегатор DeFi-портфолио, который также показывает активные approve во вкладке «Approval».

Совет: Проверяйте активные approve минимум раз в месяц, если активно пользуетесь DeFi. После каждой крупной операции (обмен, стейкинг) немедленно отзывайте approve, если он больше не нужен.

Пошаговая инструкция: как отозвать approve

  1. Перейдите на revoke.cash и подключите кошелёк (MetaMask, WalletConnect и другие).
  2. Выберите сеть, в которой хотите проверить разрешения (Ethereum, BSC, Polygon и т.д.).
  3. Изучите список: обратите внимание на колонку «Allowance». Записи с «Unlimited» — первые кандидаты на отзыв.
  4. Для каждого подозрительного или неактуального approve нажмите кнопку «Revoke».
  5. Подтвердите транзакцию в MetaMask. Потребуется небольшая комиссия за газ.
  6. Дождитесь подтверждения транзакции — approve отозван.

Отзыв approve — это обычная on-chain транзакция, которая записывает в блокчейн новое значение allowance = 0 для данного контракта. После этого контракт потеряет доступ к вашим токенам.

Approve в популярных кошельках: MetaMask и Trust Wallet

MetaMask

MetaMask показывает запрос approve как отдельное окно с информацией о контракте и запрашиваемом лимите. Начиная с версии 11, MetaMask добавил кнопку «Edit permission» прямо в окне подтверждения — она позволяет вручную ограничить сумму approve вместо unlimited. Это одна из лучших функций безопасности: всегда редактируйте лимит, указывая ровно нужную вам сумму.

Проблема в том, что большинство пользователей просто нажимают «Confirm», не читая детали. Именно на это и рассчитывают злоумышленники.

Trust Wallet

Trust Wallet также отображает запросы approve, но интерфейс менее информативен. Мобильный формат делает проверку деталей транзакции сложнее — экран меньше, информации видно меньше. Это делает мобильные кошельки более уязвимыми к социальной инженерии.

Как безопасно работать с DeFi

Полностью избежать approve в DeFi невозможно — это часть технологии. Но существуют практики, которые значительно снижают риск.

  • Ограниченный approve — всегда редактируйте сумму в MetaMask, устанавливая ровно тот объём, который нужен для текущей операции. Да, при следующей транзакции придётся подписать новый approve, но это в сотни раз безопаснее.
  • Симуляция транзакций — установите расширение Pocket Universe или Fire. Они перехватывают транзакции перед подписанием и показывают, что реально произойдёт с вашими активами.
  • Проверка контракта — перед выдачей approve убедитесь, что адрес контракта совпадает с официальным. Ищите адрес на официальном сайте проекта или в репозитории GitHub, а не в чьём-то посте.
  • Регулярный аудит — раз в месяц заходите на revoke.cash и отзывайте все неиспользуемые approve.
  • Отдельный кошелёк для DeFi — держите основные активы на кошельке, который вы никогда не подключаете к dApp. Для DeFi-операций используйте отдельный адрес с ограниченными средствами.

Реальные случаи потерь через approve

Масштаб потерь через вредоносные approve огромен. По данным Chainalysis, в 2023 году только через Inferno Drainer (один из крупнейших drainer-as-a-service сервисов) было украдено более $80 млн у свыше 30 000 жертв. Pink Drainer к моменту закрытия в 2024 году собрал более $75 млн.

Среди наиболее громких случаев — взлом нескольких NFT-коллекций через фишинговые минт-сайты. В одном из эпизодов пользователи коллекции Azuki потеряли токены на $750 000 за несколько часов после того, как злоумышленники создали поддельный минт-сайт и распространили ссылку через взломанный Discord сервер проекта.

Другой распространённый сценарий: взломанные Twitter-аккаунты знаменитостей публикуют ссылки на «эксклюзивный» дроп. Тысячи подписчиков переходят по ссылке и подписывают approve, считая, что это официальный проект любимого артиста или блогера.

Что делать если уже подписали вредоносный approve

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

  1. Не паникуйте, но действуйте быстро. Перейдите на revoke.cash прямо сейчас.
  2. Отзовите approve — даже если средства уже начали утекать, отзыв остановит дальнейшее списание.
  3. Переведите оставшиеся средства на новый, чистый кошелёк, который никогда не взаимодействовал с подозрительными контрактами.
  4. Зафиксируйте доказательства — сохраните hash транзакции approve, адрес вредоносного контракта, скриншоты сайта.
  5. Обратитесь за помощью — если украдена значительная сумма, криминалистический анализ блокчейна может установить движение средств и помочь в возврате через правовые механизмы.

Важно: Если средства уже были выведены через drainer, отзыв approve не вернёт их автоматически. Но фиксация on-chain данных критически важна для последующего расследования.

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

Можно ли отозвать approve после того как деньги уже украли?
Отозвать approve технически можно в любой момент, но украденные средства это не вернёт. Отзыв только прекращает дальнейший доступ контракта к оставшимся токенам на вашем кошельке. Для возврата уже украденных средств необходим криминалистический анализ блокчейна, установление адресов получателей и юридическое сопровождение. KarCrypto специализируется именно на таких кейсах.
Что значит unlimited approve и чем он опасен?
Unlimited approve — разрешение на максимально возможную сумму (технически 2^256−1 токенов). Это значит, что контракт может списать весь ваш баланс этого токена в любой момент без дополнительных подтверждений. Многие легитимные dApp запрашивают именно unlimited approve по умолчанию для удобства, но этим же пользуются мошенники. Безопасная альтернатива — всегда ограничивать approve нужной суммой.
Как проверить какие контракты имеют доступ к моему кошельку?
Используйте сервис revoke.cash — он поддерживает все основные EVM-сети и показывает полный список активных approve. Введите или подключите адрес кошелька, выберите сеть и просмотрите список. Для Ethereum также работает etherscan.io/tokenapprovals. Рекомендуем проверять регулярно, особенно если активно пользуетесь DeFi-протоколами.
Обязательно ли нужен approve для работы с DeFi?
Да, approve является обязательной частью стандарта ERC-20 и необходим для любого взаимодействия с DEX, протоколами ликвидности и стейкинга. Без него смарт-контракт не может получить ваши токены. Безопасный подход — не отказываться от approve, а выдавать его на строго необходимую сумму и регулярно отзывать неактуальные разрешения.
Как защититься от вредоносного approve?
Ключевые меры: всегда редактируйте сумму approve в MetaMask на конкретную нужную вам цифру; установите расширение Pocket Universe или Fire для симуляции транзакций перед подписанием; проверяйте адрес контракта в официальных источниках; никогда не переходите по ссылкам на dApp из Telegram, Discord или Twitter без проверки; ведите отдельный кошелёк для DeFi; раз в месяц проверяйте и отзывайте неиспользуемые approve через revoke.cash.

Связанные термины

Полезные материалы