Одобрение WETH - это вызов approve() на контракте WETH9, который позволяет другому адресу - роутеру DEX, пулу кредитования, маркетплейсу NFT - перемещать до установленной суммы вашего WETH с помощью transferFrom(). Обёртывание и развёртывание не требуют одобрения, любое действие стороннего контракта с вашим WETH требует. Из последних 100 транзакций, отправленных на WETH9 в Ethereum 2 октября 2026 года, 24 были одобрениями, и 20 из них использовали около 46,000 газа, потому что создавали разрешение с нуля (Etherscan). Правило: одобряйте контракт, который собираетесь использовать, для того, что собираетесь использовать, и отзывайте то, что больше не используете.
- Одобрение для третьих сторон: deposit(), withdraw() и transfer() действуют на ваш собственный баланс и не требуют одобрения, transferFrom() роутером, пулом или маркетплейсом требует.
- Доля трафика: одобрения составили 24 из 100 транзакций, отправленных на WETH9 в блоках 26,105,189-26,105,250 2 октября 2026 года, рядом с 46 депозитами и 26 выводами (Etherscan).
- Первое одобрение стоит вдвое больше: 20 из тех 24 использовали 46,000-46,400 газа для создания нового разрешения против 24,000-29,000 газа для изменения существующего - 46,000 / 24,000 = в 1.9 раза больше.
- Безлимитное означает безлимитное: WETH9 обрабатывает разрешение 2^256-1 как бесконечное и никогда не уменьшает его - около 1.16 x 10^59 WETH против 2,031,131 WETH в обращении на блоке 26,105,247 (Ethereum RPC).
Что такое одобрение WETH
Одобрение WETH - это запись в таблице разрешений контракта WETH9: владелец, расходователь, сумма. approve(spender, amount) записывает её и создаёт событие Approval, transferFrom(owner, recipient, amount), вызванный расходователем, проверяет запись, перемещает WETH и снижает разрешение на перемещённую сумму. Само одобрение не перемещает WETH и не блокирует его, WETH остаётся на вашем адресе до тех пор, пока расходователь не использует своё разрешение.
Токены ERC-20 работают таким образом, потому что контракт не может забрать токены, на которые он никогда не был уполномочен, а WETH существует именно для того, чтобы ETH мог участвовать в этом потоке (что такое WETH). У нативного ETH нет таблицы разрешений: он отправляется, а не забирается, именно поэтому контракты DeFi запрашивают WETH вместо него (зачем существует WETH).
Когда нужно одобрять WETH, а когда нет
Вопрос всегда в том, кто перемещает WETH: вы или контракт от вашего имени.
| Действие | Одобрение требуется | Почему |
|---|---|---|
| Обернуть ETH в WETH (deposit) | Нет | контракт WETH9 выпускает вызывающему |
| Развернуть WETH в ETH (withdraw) | Нет | вызывающий сжигает свой собственный баланс |
| Отправить WETH на адрес (transfer) | Нет | владелец перемещает свой собственный баланс |
| Обменять WETH на DEX | Да, для роутера | роутер забирает WETH через transferFrom() |
| Предоставить WETH рынку кредитования | Да, для пула | пул забирает депозит |
| Сделать ставку WETH на маркетплейсе NFT | Да, для контракта маркетплейса | продажа завершается забором WETH у участника торгов |
| Перевести WETH через контракт моста | Да, для моста или шлюза | мост забирает WETH перед отправкой |
Первые три строки - это те, что описаны в Как развернуть WETH и ETH в WETH: в них не появляется шаг одобрения, потому что его не существует. Интерфейс, который запрашивает одобрение перед обёртыванием или развёртыванием, направляет через другой контракт, а не вызывает WETH9 напрямую.
Ограниченные против безлимитных разрешений
Разрешение может быть точной суммой следующего действия или максимальным значением, которое принимает контракт. В WETH9 максимум, 2^256-1, особенный: transferFrom() пропускает вычитание, когда разрешение равно ему, так что одно одобрение покрывает каждую будущую передачу этим расходователем (проверенный исходный код WETH9, Etherscan).
- Точная сумма: каждый обмен или депозит требует своего approve() сначала, расходователь никогда не может забрать больше одобренной суммы.
- Безлимитное: один approve() для всего будущего использования, расходователь может перемещать любой WETH, который держит адрес, до отзыва одобрения.
Компромисс - газ против воздействия. Безлимитное одобрение экономит один approve() на использование, около 24,000-46,000 газа каждый раз, оно также оставляет постоянное разрешение контракту, который может позже быть обновлён, скомпрометирован или заброшен.
Сколько стоит одобрение WETH
Одобрение стоит одну сетевую комиссию в ETH и ничего больше. Газ зависит от того, существует ли разрешение уже:
| Тип одобрения | Использовано газа (Etherscan, 2 октября 2026) | Комиссия на мейннете при 5.6 gwei, ETH $2,690.75 |
|---|---|---|
| Новое разрешение с нуля | 46,000-46,400 | около $0.70 |
| Изменение существующего разрешения | 24,000-29,000 | около $0.36-$0.44 |
Единицы газа получены из комиссии и цены газа отдельных одобрений, столбец USD использует среднюю цену газа Etherscan от 28 сентября 2026 года и цену ETH. На L2 единицы газа схожи, а цена газа в сотни раз ниже, так же как для обёртываний и развёртываний (расходы на газ WETH). В любом случае комиссия оплачивается в ETH, поэтому адрес, держащий только WETH, не может ничего одобрить.
Почему у WETH нет функции Permit
WETH9 был развёрнут в декабре 2017 года, до того как EIP-2612 определил permit(), функцию, которая позволяет держателю токена предоставить разрешение с помощью оффчейн-подписи вместо транзакции. У WETH9 есть только deposit, withdraw, totalSupply, approve, transfer и transferFrom, и его код не может быть изменён, так что каждое одобрение WETH на Ethereum - это транзакция в сети, оплаченная в ETH.
Существуют два обходных пути. Контракт Permit2 от Uniswap принимает одно обычное одобрение WETH, а затем позволяет последующие траты авторизовываться подписью. Новые завёрнутые токены встраивают permit: wstETH от Lido реализует EIP-2612 (wstETH против WETH). Для самого WETH9 первое одобрение всегда транзакция.
Как проверить и отозвать одобрения WETH
- Перечислите разрешения: откройте проверку одобрений токенов обозревателя сети (Etherscan, Basescan, Arbiscan) или специальный инструмент, такой как revoke.cash, и введите свой адрес.
- Найдите записи WETH: каждая строка показывает контракт расходователя, разрешение (точное или безлимитное) и когда оно было установлено.
- Отзовите то, что больше не используете: отзыв отправляет approve(spender, 0) с вашего адреса, подтвердите в кошельке и оплатите комиссию в ETH.
- Повторите на каждой сети: одобрение WETH на Base отдельно от одобрения WETH на Ethereum, потому что у каждой сети свой контракт WETH (WETH на Base).
Что не может сделать одобрение
- Оно не может перемещать ETH: разрешение покрывает баланс WETH только в этом контракте, никогда нативный ETH на том же адресе.
- Оно не может превысить ваш баланс: transferFrom() не срабатывает, если владелец держит меньше WETH, чем запрошено, каким бы ни было разрешение.
- Оно не может пересекать сети: одобрения живут в контракте WETH каждой сети отдельно.
- Оно не может быть отменено назад: отзыв останавливает будущие заборы, WETH, уже перемещённый расходователем, остаётся перемещённым.