БезопасностьСредний

Разрешения токенов: что такое approve

Право расходования может действовать после обмена.

В этой статье 01Короткий ответ02Зачем обменнику нужно отдельное разрешение03Что означает большой или неограниченный лимит04Как прекращают действие полномочий05Разрешили 1000, обменяли 10006Что проверить07Источники08Читайте дальше
КОРОТКИЙ ОТВЕТ

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

Зачем обменнику нужно отдельное разрешение

Когда пользователь сам переводит токен получателю, операцию инициирует его аккаунт. В DeFi-приложении контракту нередко требуется забрать токены для обмена или внесения в пул. В модели ERC-20 он использует право расходования через transferFrom. Allowance определяет, какой объём конкретного токена разрешено получить соответствующему spender — адресу, которому выданы полномочия.

Первое подтверждение может установить лимит, а второе — выполнить сам обмен. В интерфейсе оба шага выглядят похожими, но последствия у них разные. Если обмен не состоялся, ранее выданное разрешение не обязано исчезнуть. На другой сети или для другого контракта того же по названию токена действуют отдельные состояния. Общей кнопки «я однажды доверял этому бренду» в протоколе нет.

Что означает большой или неограниченный лимит

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

Перед подписью проверяют адрес spender, сам токен и величину разрешения. У смарт-контракта могут быть обновляемые компоненты и управляющие права, поэтому известное имя интерфейса не описывает всю систему доверия. Для некоторых действий используются разрешения через подпись сообщений, включая варианты permit. Их содержание и срок действия тоже нужно читать; отсутствие отдельной транзакции approve не доказывает отсутствия разрешений.

Как прекращают действие полномочий

В обычной модели ERC-20 отзыв достигается изменением allowance, часто установкой нулевого значения. Это изменение состояния сети и обычно требует gas. Оно должно подтвердиться в правильной сети и для правильного контракта. Если нежелательное списание произошло раньше, последующий отзыв не отменяет уже выполненную операцию. До подтверждения остаётся риск конкурирующих транзакций.

Отключение приложения в кошельке ограничивает связь интерфейса с сайтом, но само по себе не обнуляет on-chain allowance. И наоборот, отзыв allowance не возвращает активы, ранее внесённые в пул или другой протокол: у такой позиции свои правила выхода. Если посторонним известен закрытый ключ или seed-фраза, проверка одного разрешения не восстанавливает исключительный контроль над аккаунтом.

Разрешили 1000, обменяли 100

Пусть пользователь разрешил контракту расходовать 1000 единиц токена, а затем обменял 100. В стандартной модели после расходования может остаться разрешение на 900 единиц. Закрытие сайта не означает, что этот остаток исчез. Для дальнейшей оценки нужно посмотреть фактическое состояние allowance в сети, а не только историю последнего обмена в приложении.

Если следующее действие требует лишь 50 единиц, полезно отдельно решить, нужен ли прежний широкий лимит. Изменение разрешения имеет собственную стоимость и должно выполняться через проверенный интерфейс. Воспользоваться первым попавшимся «сервисом очистки кошелька» по рекламной ссылке — значит снова доверить подпись неизвестному запросу. Смысл отзыва в уменьшении конкретных полномочий, а не в нажатии кнопки с обнадёживающим названием.

Что проверить

  • Сеть, адрес токена, spender и точное содержание запрошенного разрешения.
  • Остаток allowance после расходования и подтверждённый результат отзыва.
  • Отличие разрешения контракту от подключения сайта и от сохранности закрытого ключа.

Источники и документация

Материал носит образовательный характер. Примеры условные. Информация помогает изучить механику, но не гарантирует результат сделки.

Теперь стало понятнее?