Разрешение на использование токенов — это разрешение смарт-контракта, позволяющее децентрализованному приложению (dapp) получать доступ к определённому типу токенов в кошельке и перемещать их. Без такого разрешения ни одно приложение не может взаимодействовать с токенами в некастодиальном кошельке, даже если кошелёк подключён к интерфейсу приложения. Именно разрешение устраняет разрыв между подключением кошелька и фактическим предоставлением протоколу доступа к хранящимся в нём активам.
Разрешения на использование токенов необходимы практически для каждого взаимодействия в DeFi: обмена токенов на децентрализованной бирже, внесения средств в протокол кредитования, добавления ликвидности в пул или выставления NFT на маркетплейсе. Вместе с тем они являются одним из наиболее часто эксплуатируемых механизмов в сфере криптобезопасности. В ежемесячных отчётах MetaMask по криптобезопасности эти угрозы отслеживаются в деталях. Например, в отчёте по криптобезопасности за февраль 2026 года зафиксирован рост числа эксплойтов типа «signature phishing» (фишинг подписей, или approval phishing) на 207%. Понимание того, как работают разрешения на использование токенов, как долго они действуют и как злоумышленники могут их эксплуатировать, необходимо каждому пользователю некастодиального кошелька.
Отказ от ответственности: данный материал носит исключительно образовательный характер. Это не финансовый совет, не предложение о покупке и не предназначено для аудитории из Великобритании. Криптовалютные кошельки и цифровые активы сопряжены с рисками и подходят не всем пользователям.
Как работают разрешения на использование токенов
Рассмотрим типичный пример разрешения на использование токенов: обмен USDC на ETH на децентрализованной бирже. Смарт-контракту приложения требуется разрешение на получение USDC из кошелька и выполнение сделки. Это разрешение и есть token approval.
На уровне контракта пользователь вызывает функцию approve() в контракте токена USDC. Эта функция принимает два параметра: spender (адрес смарт-контракта, которому предоставляется авторизация) и amount (количество токенов, которые spender вправе перемещать). После подтверждения транзакции с разрешением в блокчейне контракт spender может вызвать transferFrom() для перемещения токенов из кошелька пользователя в пределах одобренной суммы — без каких-либо дополнительных подтверждений со стороны пользователя.
Есть два важных момента, о которых должен знать каждый пользователь, особенно начинающий. Во-первых, разрешение распространяется только на один токен и одного spender. Предоставление децентрализованной бирже (DEX) разрешения на расходование USDC не даёт ей доступа к ETH, BTC или любым другим токенам. Во-вторых, разрешение является транзакцией в блокчейне, за которую взимается комиссия сети — это отдельный шаг, предшествующий самому обмену, именно поэтому взаимодействие с DeFi-протоколами часто требует двух подтверждений: одного для выдачи разрешения и одного для выполнения операции.
Ограниченные и неограниченные разрешения
Поле amount в разрешении определяет, каким количеством токенов может распоряжаться spender.
Ограниченное разрешение авторизует spender на перемещение только определённого количества токенов — например, ровно 500 USDC, необходимых для конкретного обмена. После перевода этих 500 USDC лимит исчерпывается. Следующий обмен потребует нового разрешения, а значит, ещё одной транзакции в блокчейне и ещё одной комиссии сети.
Неограниченное разрешение авторизует spender на перемещение максимально возможного количества токенов (технически — 2^256 − 1, число, значительно превышающее совокупный объём эмиссии любого токена). Это означает, что контракт может получить доступ ко всему балансу пользователя по данному токену — сейчас и в будущем — без необходимости повторного разрешения. Большинство приложений по умолчанию запрашивают неограниченные разрешения, поскольку это снижает нагрузку на пользователя: одно разрешение — и все последующие транзакции с этим токеном уже предварительно авторизованы.
Удобство здесь реально, но и риск тоже. Неограниченное разрешение не имеет срока действия. Если контракт, которому оно было выдано, впоследствии окажется взломан, подвергнется вредоносному обновлению или если пользователь подписал разрешение на фишинговом сайте, имитирующем легитимное приложение, злоумышленник сможет вывести все токены, на которые распространяется разрешение, без какого-либо дополнительного участия пользователя. Жертва может даже не подозревать о существовании разрешения, пока токены не исчезнут.
Параметр | Ограниченное разрешение | Неограниченное разрешение |
Авторизованная сумма | Конкретная (например, 500 USDC) | Максимально возможная (весь баланс, бессрочно) |
Срок действия | Исчерпывается после перевода указанной суммы | Остаётся активным до ручного отзыва |
Нагрузка на пользователя | Новое разрешение для каждой транзакции (дополнительные комиссии сети) | Одно разрешение покрывает все будущие транзакции |
Риск при взломе контракта | Потери ограничены одобренной суммой | Весь баланс токена под угрозой |
Типичное использование | Пользователи, ориентированные на безопасность; крупные транзакции | По умолчанию в большинстве приложений |
Как работают разрешения Permit2
В ноябре 2022 года Uniswap Labs развернула контракт Permit2, призванный устранить неудобства и риски, связанные с традиционными разрешениями на использование токенов. К 2025 году более 3,1 миллиона адресов в основной сети Ethereum авторизовали контракт Permit2, и он стал наиболее широко используемой системой разрешений в DeFi — его применяют Uniswap, 1inch, CowSwap и многие другие протоколы.
Основная идея: вместо того чтобы выдавать отдельное разрешение в блокчейне для смарт-контракта каждого приложения, пользователь предоставляет единое разрешение контракту Permit2. Далее каждое отдельное взаимодействие с приложением авторизуется через офчейн-подпись — сообщение, подписанное в кошельке, в котором указываются токены, их количество, адрес spender и дедлайн, по истечении которого разрешение аннулируется.
Преимущества перед устаревшими разрешениями весьма существенны. Подписи Permit2 включают дедлайны, поэтому устаревшие разрешения автоматически аннулируются, а не сохраняются бессрочно. Nonce-значения исключают повторное использование одной и той же подписи. Кроме того, пользователь подписывает одно разрешение на токен, а не по одному на каждое приложение, что сокращает общее количество транзакций с разрешениями в блокчейне и связанных с ними комиссий сети.
Компромисс заключается в смещении вектора атаки. Устаревшие разрешения эксплуатировались через дремлющие разрешения в блокчейне — контракты, авторизованные месяцы или годы назад и впоследствии скомпрометированные. Подписи Permit2 эксплуатируются через фишинг в момент подписания. Поскольку авторизации Permit2 используют типизированные подписи данных EIP-712, они отображаются в кошельке как запрос на подпись, а не как подтверждение транзакции. Вредоносный сайт может представить то, что выглядит как обычный запрос «подпишите это сообщение», тогда как в действительности это подпись Permit2, авторизующая перевод всего баланса токенов пользователя. Никакой транзакции в блокчейне. Никакой комиссии сети со стороны пользователя. Только подпись — и затем злоумышленник вызывает transferFrom().
Как дрейнеры эксплуатируют разрешения на использование токенов
Wallet drainer — это автоматизированные фишинговые инструменты, предназначенные для извлечения разрешений на использование токенов (как устаревших, так и Permit2) у жертв. Они работают по модели drainer-as-a-service (DaaS): разработчик поддерживает вредоносные смарт-контракты, фишинговую инфраструктуру и канал отмывания средств, а аффилированные лица арендуют сервис за долю от похищенных средств (как правило, оставляя себе 75–95% от выведенного).
Схемы атак wallet drainer часто следуют единой последовательности:
Шаг 1: Приманка. Жертва попадает на фишинговый сайт через рекламный результат поиска, поддельную ссылку на аирдроп, скомпрометированный сервер Discord или клонированный интерфейс приложения. Сайт выглядит как легитимный протокол: тот же брендинг, тот же макет, зачастую почти идентичный URL.
Шаг 2: Запрос подписи. Сайт предлагает кошельку подписать транзакцию или подпись Permit2. Запрос может выглядеть как стандартное подключение к приложению, обмен токенов или получение аирдропа. В действительности подпись авторизует контракт дрейнера на перемещение токенов жертвы.
Шаг 3: Вывод средств. Злоумышленник вызывает transferFrom() из отдельного кошелька, выводя авторизованные токены. Продвинутые наборы дрейнеров объединяют несколько переводов токенов — ERC-20, NFT и авторизации Permit2 — в один multicall, опустошая кошелёк за считанные секунды. Средства направляются через децентрализованные биржи и кросс-чейн мосты для сокрытия следов.
Ключевой момент: с точки зрения блокчейна каждый шаг является действительной, авторизованной транзакцией. Жертва подписала разрешение. Контракт выполнил то, на что был авторизован. Механизма отмены на уровне протокола не существует.
Некоторые кошельки теперь симулируют транзакции и подписи до того, как пользователь их подтверждает, помечая известные контракты дрейнеров и подозрительные суммы разрешений. MetaMask реализует это через интеграцию с Blockaid. Это не устраняет риск полностью — новый контракт дрейнера может ещё не присутствовать ни в одной базе данных обнаружения, — однако добавляет дополнительный уровень защиты между фишинговым запросом и подтверждением пользователя.
Как проверять и отзывать разрешения на использование токенов
Отзыв разрешения на использование токенов означает обнуление лимита для конкретного spender. Это транзакция в блокчейне: она требует оплаты комиссии сети и подтверждения в кошельке, однако навсегда лишает данный контракт возможности перемещать указанный токен.
Важны три аспекта:
Когда отзывать разрешение. После завершения работы с приложением, если вы не планируете к нему возвращаться. После выдачи неограниченного разрешения, которое больше не нужно. После любого взаимодействия, вызвавшего подозрения, — даже если потерь сразу не последовало. В качестве регулярной практики: периодический аудит активных разрешений позволяет выявить разрешения, утратившие свою актуальность.
Сколько стоит отзыв. Каждый отзыв — это отдельная транзакция в блокчейне с собственной комиссией сети. В основной сети Ethereum это обычно несколько долларов; в сетях второго уровня — доли цента. Стоимость невелика по сравнению с потенциальными потерями от скомпрометированного разрешения, однако она накапливается, если за месяцы активности в DeFi накопились десятки разрешений.
Что отзыв не исправляет. Отзыв разрешения предотвращает будущие переводы в рамках этого разрешения. Он не может отменить уже совершённый перевод. Если дрейнер уже вызвал transferFrom(), токены утрачены. Отзыв — это превентивная мера, а не корректирующая.
Пошаговые инструкции по проверке и отзыву разрешений в некастодиальном кошельке см. в руководстве MetaMask как отозвать разрешения смарт-контрактов.
Как снизить риски, связанные с разрешениями на использование токенов
Несколько практик позволяют снизить уязвимость, не жертвуя удобством взаимодействия с DeFi.
Устанавливайте ограниченные разрешения там, где это возможно. Например, расширение MetaMask отображает запрошенную сумму разрешения и позволяет настроить лимит расходования перед подтверждением. Установка лимита, соответствующего фактически необходимой для транзакции сумме, ограничивает возможные потери в случае последующего взлома контракта.
Читайте запрос на подпись. Подписи Permit2 отображают название токена, сумму, адрес spender и дедлайн. Если запрос «подписать сообщение» содержит сведения о токенах, это не вход в систему — это авторизация. Если сумма соответствует полному балансу пользователя, а не ожидаемому размеру транзакции, это тревожный сигнал.
Проверяйте сайт перед подключением. Сайты дрейнеров копируют интерфейсы легитимных приложений. Сохранение доверенных URL в закладках и переход по ним — а не через результаты поиска, ссылки в социальных сетях или личные сообщения — устраняет наиболее распространённый механизм приманки.
Периодически проверяйте разрешения. Активные разрешения накапливаются за месяцы использования DeFi. Ежеквартальный аудит с помощью инструмента проверки разрешений в блокчейн-эксплорере или панели управления лимитами расходования позволяет выявить разрешения, утратившие свою актуальность.
Часто задаваемые вопросы об одобрении токенов
Нет. Подключение кошелька предоставляет публичный адрес и позволяет приложению считывать балансы токенов. Оно не даёт приложению разрешения на перемещение каких-либо токенов. Для одобрения токенов требуется отдельная транзакция в блокчейне (для устаревших approvals) или подписанное сообщение Permit2 — оба варианта отображаются в кошельке в виде явных запросов, которые пользователь должен подтвердить.
Нет. Функция ERC-20 approve() и Permit2 применяются только к токенам, но не к нативной валюте блокчейна. ETH (и другие нативные валюты, такие как MATIC или BNB) можно перевести только путём подписания прямой транзакции перевода. Однако wrapped-версии нативных валют (WETH, WMATIC) являются токенами ERC-20 и могут быть списаны через апрувы.
Permit2 устраняет главный недостаток традиционных разрешений — бессрочные неограниченные права доступа, которые остаются активными навсегда, — добавляя дедлайны и nonce. Однако он создаёт иной риск: офчейн-подписи, выглядящие безобидно, могут авторизовать крупные переводы. Ни одна из систем не является безопаснее в абсолютном смысле. Permit2 лучше защищает от эксплойтов, связанных с устаревшими разрешениями; традиционные разрешения надёжнее против фишинга подписей, поскольку требуют блокчейн-транзакции, которую кошельки отображают более заметно.
Неограниченное одобрение токена предоставляет смарт-контракту разрешение перемещать любое количество определённого токена из кошелька без срока действия. Большинство приложений по умолчанию запрашивают неограниченные одобрения, чтобы сократить количество необходимых транзакций. Риск заключается в следующем: если одобренный контракт будет скомпрометирован, злоумышленник сможет полностью опустошить баланс этого токена в кошельке без какого-либо дополнительного подтверждения. Неограниченные одобрения остаются активными до тех пор, пока пользователь не отзовёт их вручную.