Короткий ответ: spender – адрес, которому владелец ERC-20 разрешил вызывать `transferFrom` в пределах allowance. Найдите токеновый контракт и адрес владельца, изучите событие `Approval`, затем запросите текущее значение `allowance(owner, spender)`. История событий показывает изменения разрешения, но не всегда его нынешний остаток: spender мог уже потратить часть лимита.
Проверка помогает определить, какой контракт способен перемещать токены с вашего адреса. Для просмотра не нужно подключать кошелёк или подписывать сообщение. Не вводите seed-фразу и не передавайте приватный ключ сайту, который предлагает проверить approvals. Про отзыв ненужного права рассказано в инструкции о разрешениях токенов.
Что означают owner, spender и allowance
В стандартном ERC-20 интерфейсе владелец – адрес, чьи токены разрешено тратить. Spender – получатель права, обычно контракт dApp или роутер. Allowance – число токенов, которое spender может запросить у владельца вызовом `transferFrom`. Само одобрение не переводит баланс и не говорит, когда контракт воспользуется лимитом.
Функция `approve(spender, value)` задаёт лимит. Повторный вызов для той же пары owner и spender заменяет прежнее значение новым. ERC-20 определяет событие `Approval` с адресами owner и spender и разрешённой суммой. Событие фиксирует успешную установку или изменение параметров, но не обязательно каждое уменьшение остатка во время `transferFrom`.
Результат относится к конкретному токеновому контракту и сети. Один адрес кошелька в двух EVM-сетях – две независимые записи. Важны chain, официальный адрес токена и точная пара owner/spender.
Найдите токен и правильную сеть
Откройте историю кошелька и найдите транзакцию, связанную с выдачей права или обменом. Проверьте, в какой сети она прошла, её статус, адрес контракта-цели и блок. Если операция инициирована через dApp, адрес цели может быть spender, но иногда приложение использует отдельный router, Permit2 или proxy. Не делайте вывод только по названию сайта.
Сверьте адрес токена с официальной документацией или ранее проверенным источником. На странице контракта в обозревателе откройте вкладку событий и транзакций. В интерфейсе ERC-20 ищите `allowance(address owner, address spender)` и событие `Approval(address indexed owner, address indexed spender, uint256 value)`. Если контракт непроверен, обозреватель может показывать только сырые данные и не декодировать функцию.
Некоторые обозреватели предлагают отдельный список token approvals. Это удобная витрина, но она может покрывать не все сети, стандарты и контракты. Если найденное значение кажется странным, перепроверьте исходный контракт и вызов чтения.
Проверьте событие Approval
Откройте вкладку логов или событий транзакции. Выберите событие `Approval` от адреса нужного токенового контракта. В декодированной записи проверьте поля: owner должен совпасть с вашим адресом, spender – с адресом предполагаемого контракта, value – с установленным лимитом. Если обозреватель показывает сырой лог, адреса закодированы в topics, а value находится в data. Используйте декодирование только при корректном ABI.
Затем просмотрите более ранние и поздние `Approval` для этой же пары. Поздний вызов мог уменьшить allowance, заменить его или обнулить. Учитывайте только успешные транзакции из правильной сети и от правильного токенового контракта. Событие другого токена с таким же символом ничего не говорит об искомом разрешении.
Не считайте список событий полным балансом лимита. Стандарт задаёт событие `Approval`, но перевод через `transferFrom` может уменьшить остаток без нового события. Последний value из журнала способен отличаться от текущего allowance.
Запросите текущее значение allowance
Если обозреватель поддерживает чтение контракта, найдите `allowance` и введите адреса. В качестве owner укажите кошелёк, в качестве spender – адрес из события. Правильный вызов read-only, не меняет состояние сети и не требует подписи. Результат часто выражен в минимальных единицах токена, поэтому для отображения суммы его делят на 10 в степени `decimals`, если обозреватель не сделал это автоматически.
Если доступны только ABI и RPC, выберите адрес токена, правильную сеть и вызов функции чтения. Проверьте порядок аргументов: сначала owner, затем spender. При важном результате сверяйте его через независимый обозреватель или доверенный RPC. Нестандартная реализация может менять ожидаемое поведение; проверьте ABI и исходный код.
Очень большое значение обычно называют unlimited approval. Оно не означает, что контракт уже забрал токены, но оставляет ему широкий лимит до изменения разрешения или другого ограничения реализации. Сравните получателя права с тем приложением, которому вы доверяете, и с объёмом предполагаемой операции.
Как проверить, чей это spender
Сопоставьте адрес с официальной документацией приложения и фактическим вызовом. У dApp могут быть разные роутеры в разных сетях. Обновление интерфейса может изменить адрес, а поддельный сайт – отправить approve в пользу постороннего контракта. Проверьте сеть, полный адрес, контрактный код, verified status и объявления проекта. Верифицированный исходник показывает соответствие кода, но не гарантирует отсутствие уязвимостей.
Иногда spender – не торговая площадка, а helper-контракт, которому затем передаются параметры операции. Посмотрите вызов и последующие события, чтобы понять, кто именно получит право и какую функцию сможет вызвать. При разборе последовательности полезен материал о событиях смарт-контрактов.
Когда отзывать разрешение
Если право больше не нужно, его можно сбросить через `approve(spender, 0)` или подходящий интерфейс, проверив точные адреса токена и сети. Изменение потребует транзакции и сетевой комиссии. Оно не отменит уже совершённые переводы и не исключает, что spender воспользуется действующим allowance до подтверждения сброса.
Подпись `permit` иногда устанавливает allowance без отдельного вызова approve, поэтому проверьте и историю подписанных сообщений. Об отличиях permit и Permit2 рассказывает статья о подписных разрешениях. TxID можно перепроверить по руководству о проверке транзакции.
Проверка заканчивается чтением состояния и сопоставлением адресов. Не подключайте кошелёк ради простого просмотра и не подписывайте новую операцию, чтобы узнать уже выданное право. Если сеть или адрес контракта неясны, сначала подтвердите их из надёжного источника.



