ГЛАВНАЯ / ИНСТРУКЦИИ / NFT APPROVAL И OPERATOR: КАК ПРОВЕРИТЬ ПРАВА КОЛЛЕКЦИИ
NFT approval и operator: как проверить права коллекции
Проверка NFT-разрешений начинается с сети, контракта и владельца. В ERC-721 одно approval может относиться к конкретному tokenId, а operator-разрешение – ко всем токенам этого владельца в рамках контракта. Сверьте текущее состояние и историю, затем отзывайте только тот доступ, который точно распознали.
Отличайте approval одного NFT от operator для контракта
В ERC-721 вызов approve назначает разрешённый адрес для конкретного tokenId. setApprovalForAll включает или отключает оператора для всех соответствующих NFT владельца в рамках данного контракта. В ERC-1155 operator permission охватывает токены владельца по правилам этого контракта.
Такое право не распространяется автоматически на все коллекции и сети. Но широкое разрешение на популярный маркетплейс или незнакомый контракт следует оценивать внимательно, особенно если владелец держит в коллекции несколько активов.
- запишите адрес коллекции;
- отделите tokenId от адреса operator;
- не переносите разрешение ERC-721 на другой контракт или сеть.
Проверяйте ownerOf, getApproved и isApprovedForAll
Сначала подтвердите текущего владельца через ownerOf(tokenId). Затем для ERC-721 прочитайте getApproved(tokenId), который возвращает адрес отдельного approval или нулевой адрес. Для оператора запросите isApprovedForAll(owner, operator) именно у контракта коллекции.
В ERC-1155 доступность методов зависит от совместимости контракта, но стандарт включает isApprovedForAll. Используйте обозреватель с вызовами чтения или независимый инструмент, внимательно сверив сеть и адрес. Список стороннего сайта может быть полезен для поиска, но финальное состояние перепроверьте через контракт.
| Проверка | Область | Результат |
|---|---|---|
| ownerOf(tokenId) | Один NFT | Текущий владелец |
| getApproved(tokenId) | Один ERC-721 tokenId | Адрес разрешённого получателя или zero address |
| isApprovedForAll(owner, operator) | Коллекция-контракт | Текущее состояние операторского доступа |
События показывают историю, а состояние – разрешение сейчас
ERC-721 использует события Approval и ApprovalForAll. В ApprovalForAll поле approved указывает, включал ли владелец операторский доступ; сопоставляйте owner и operator в логах именно нужного контракта. Для ERC-1155 также есть ApprovalForAll.
Журнал событий полезен, чтобы понять, кто и когда выдал право, но история не заменяет чтение текущего состояния. Для индивидуального approval после передачи NFT ERC-721 очищает адрес разрешения; проверяйте владельца и текущее значение, а не только старые события.
- фильтр журнала установлен на адрес коллекции;
- owner и operator не перепутаны;
- последнее событие сопоставлено с текущим read-call;
- передача NFT учтена отдельно.
Отключите ненужное разрешение в правильном контракте
Чтобы отозвать индивидуальное ERC-721 approval, владелец или уполномоченный оператор может установить нулевой адрес для нужного tokenId, если контракт следует стандартному поведению. Для operator permission владелец вызывает setApprovalForAll с false. В ERC-1155 стандарт также использует false для отключения оператора.
В кошельке проверьте контракт, сеть, tokenId или operator и calldata транзакции. Подтвердите только ожидаемый вызов. Отключение сайта от кошелька или WalletConnect завершает сессию, но не сбрасывает запись разрешения в контракте. Отзыв является onchain-изменением и требует комиссии сети.
Проверьте транзакцию и повторно прочитайте состояние
Сохраните хэш, дождитесь успешного статуса в нужной сети и повторите getApproved или isApprovedForAll для тех же параметров. Для operator проверьте, что результат false; для tokenId проверьте, что ненужный адрес больше не указан. Если коллекция нестандартная, изучите её реализацию и события.
Пересмотрите список других сетей и контрактов, где использовался кошелёк. Одно действие отзывает разрешение только в затронутом контракте и не удаляет права из других коллекций.
- TXID принадлежит нужной сети;
- транзакция успешна;
- состояние перечитано по тому же адресу;
- другие коллекции и сети проверены;
- необходимые разрешения оставлены осознанно.
Частые вопросы
Disconnect отзывает NFT operator approval?
Нет. Сессия и onchain-разрешение – разные состояния.
setApprovalForAll охватывает все NFT кошелька?
Нет. Оно относится к владельцу и конкретному контракту коллекции в соответствующей сети.
События Approval показывают активные права?
Они показывают историю. Текущее состояние лучше подтвердить чтением getApproved или isApprovedForAll.
Можно ли проверить право только через интерфейс маркетплейса?
Для итоговой проверки сопоставьте данные с контрактом и сетью через независимый обозреватель или инструмент чтения.
Нужна ли комиссия за отзыв?
Изменение onchain-состояния требует транзакции и обычно оплачивается комиссией сети.
Чек-лист: nft approval и operator: как проверить права коллекции
- сеть, владелец и адрес контракта коллекции сверены;
- ownerOf прочитан для нужного tokenId;
- getApproved и operator state различены;
- события сопоставлены с текущим состоянием;
- ненужный доступ отозван через корректный контракт;
- TXID успешен и состояние перечитано;
- другие коллекции и сети проверены;
- disconnect не принят за revoke.
Материал подготовлен редакцией сайта и проверен 22 октября 2026 года. Условия бирж, кошельков и блокчейн-сетей могут меняться. Перед операцией сверяйте данные в интерфейсе выбранного сервиса.