Три похожих разрешения меняют разную область

Что читать у точного NFT-контракта
Стандарт и записьОбластьПроверка
ERC-721 getApproved(tokenId)Один существующий token IDКакой адрес сейчас одобрен для этого NFT
ERC-721 isApprovedForAll(owner, operator)Все ERC-721 владельца в одном contracttrue или false для точной пары owner–operator
ERC-1155 isApprovedForAll(account, operator)Все token IDs и amounts аккаунта в одном contracttrue или false для точной пары account–operator
ERC-20 allowance(owner, spender)Количество fungible-токенаОтдельная модель; не переносить на NFT
Что читать у точного NFT-контракта
Стандарт и запись
ERC-721 getApproved(tokenId)
Область
Один существующий token ID
Проверка
Какой адрес сейчас одобрен для этого NFT
Стандарт и запись
ERC-721 isApprovedForAll(owner, operator)
Область
Все ERC-721 владельца в одном contract
Проверка
true или false для точной пары owner–operator
Стандарт и запись
ERC-1155 isApprovedForAll(account, operator)
Область
Все token IDs и amounts аккаунта в одном contract
Проверка
true или false для точной пары account–operator
Стандарт и запись
ERC-20 allowance(owner, spender)
Область
Количество fungible-токена
Проверка
Отдельная модель; не переносить на NFT

В ERC-721 `approve` назначает адрес для конкретного token ID, а `setApprovalForAll` включает или выключает оператора для всех активов владельца в этом контракте. ERC-1155 использует operator-for-all для набора token IDs одного контракта. Здесь нет числового ERC-20 allowance: слово unlimited в интерфейсе обычно описывает ширину коллекции, а не лимит монет. ERC-20 allowance проверяется отдельным процессом.

Инвентаризация начинается с contract, owner и operator

Соберите воспроизводимую карточку approval

  1. 1
    Зафиксируйте сеть

    Один и тот же адрес существует в нескольких EVM-сетях. Сохраните chain ID, explorer и block number чтения.

  2. 2
    Проверьте contract коллекции

    Не доверяйте названию или картинке. Получите collection contract из доверенного источника и проверьте код/стандарт.

  3. 3
    Укажите owner

    Читайте состояние для адреса, который действительно владеет NFT. Кошелёк, сейф и кастодиальный аккаунт — разные границы.

  4. 4
    Перечислите operators

    Для каждой найденной пары сохраните operator address, источник обнаружения, текущее значение и связанные события как подсказку.

  5. 5
    Для ERC-721 проверьте token IDs

    Отдельно вызовите getApproved для важных NFT. Нулевой operator-for-all не исключает approval на один token ID.

Список событий помогает найти кандидатов, но финальное право читают из текущего состояния. Старое событие `ApprovalForAll(true)` могло быть отменено позже; событие отмены мог пропустить индексатор. И наоборот, отсутствие строки в сервисе не доказывает `false`. Для ERC-721 перевод token ID сбрасывает его single-token approval по стандарту, но не снимает operator-for-all владельца для остальных NFT.

Отдельно проверяйте метаданные и права NFT: они отвечают на файл и внешние права. Operator approval отвечает на право вызвать transfer в контракте. Изображение, авторство файла и владение токеном не объясняют, какие operators сейчас разрешены.

Отзывайте только точную запись и проверяйте результат

Decision tool для revoke
НаблюдениеДействиеКритерий завершения
ERC-721 getApproved вернул operatorВызвать approve на zero address для этого token ID через доверенный путьgetApproved того же token ID возвращает zero address
ERC-721 isApprovedForAll=trueВызвать setApprovalForAll(operator, false)isApprovedForAll для той же пары возвращает false
ERC-1155 isApprovedForAll=trueВызвать setApprovalForAll(operator, false) у exact contractПовторное чтение той же пары возвращает false
Operator неизвестен, но нужен маркетплейсуПроверить официальный contract и текущую необходимостьЕсть документированная причина сохранить либо approval отозван
Уже был несанкционированный transferСохранить receipts/events, прекратить новые подписи и проверить ключиRevoke закрывает только будущий путь, не возвращает NFT
Decision tool для revoke
Наблюдение
ERC-721 getApproved вернул operator
Действие
Вызвать approve на zero address для этого token ID через доверенный путь
Критерий завершения
getApproved того же token ID возвращает zero address
Наблюдение
ERC-721 isApprovedForAll=true
Действие
Вызвать setApprovalForAll(operator, false)
Критерий завершения
isApprovedForAll для той же пары возвращает false
Наблюдение
ERC-1155 isApprovedForAll=true
Действие
Вызвать setApprovalForAll(operator, false) у exact contract
Критерий завершения
Повторное чтение той же пары возвращает false
Наблюдение
Operator неизвестен, но нужен маркетплейсу
Действие
Проверить официальный contract и текущую необходимость
Критерий завершения
Есть документированная причина сохранить либо approval отозван
Наблюдение
Уже был несанкционированный transfer
Действие
Сохранить receipts/events, прекратить новые подписи и проверить ключи
Критерий завершения
Revoke закрывает только будущий путь, не возвращает NFT

Безопасная транзакция отмены

  1. 1
    Постройте вызов сами

    Используйте функцию кошелька, официальный explorer или проверенный интерфейс. Seed-фраза, private key и импорт в случайный сайт не нужны.

  2. 2
    Прочитайте запрос

    Проверьте chain, collection contract, method, operator и false либо zero address. Если запрос переводит NFT или включает true, отмените подпись.

  3. 3
    Дождитесь receipt

    Hash подтверждает только отправку. Проверьте успешное исполнение в правильной сети.

  4. 4
    Перечитайте state

    Повторите getApproved или isApprovedForAll с теми же аргументами и сохраните block/time результата.

  5. 5
    Проверьте соседние записи

    Single-token revoke не снимает operator-for-all; revoke одного contract не меняет другой collection contract.

До подтверждения полезно понимать, что именно подписывает кошелёк: обычное сообщение не равно транзакции `setApprovalForAll`, но непонятная транзакция может включить operator. Изучите сценарии криптомошенничества: такое право часто маскируют под mint, claim или проверку коллекции.

Если operator уже использовал право, revoke — только один слой recovery

Сохраните chain, collection, owner, operator, token IDs, transaction hashes и время. Затем определите причину: выдан только лишний approval, подписана неизвестная транзакция, скомпрометирован интерфейс или раскрыт ключ. В первом случае точный revoke может закрыть путь. При компрометации seed/private key злоумышленник способен выдать approval снова или подписать прямой transfer, поэтому оставшиеся активы переводят в новый кошелёк по безопасному плану. Не платите «recovery service» за обещание отменить уже финальный transfer.

Стоп-сигналы

  • интерфейс показывает только имя коллекции без chain и contract address;
  • ERC-20 allowance используют как доказательство отсутствия NFT operator;
  • для revoke предлагают подписать setApprovalForAll с true или transfer;
  • исчезновение сайта из connected apps называют onchain-отменой;
  • один revoke распространяют на все collection contracts и сети;
  • после кражи обещают вернуть NFT одной транзакцией отмены approval.

Источники

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

  1. EIP-721 — Non-Fungible Token Standard Ethereum Improvement Proposals · Проверено 22 августа 2026 г. в 10:59 GMT+5
  2. EIP-1155 — Multi Token Standard Ethereum Improvement Proposals · Проверено 22 августа 2026 г. в 10:59 GMT+5
  3. OpenZeppelin Contracts 5.x — ERC-721 API OpenZeppelin · Проверено 22 августа 2026 г. в 10:59 GMT+5
Материал носит информационный характер и не является индивидуальной рекомендацией. Криптоактивы связаны с риском волатильности, технических сбоев, хищения и полной потери средств.