Доказательством вывода служит не экран игры, а запись в сети. Откройте транзакцию в обозревателе и найдите в её журнале событие передачи: адрес отправителя, ваш адрес и номер предмета. Затем проверьте текущего владельца прямым запросом к контракту коллекции. Совпали оба — предмет ваш. Нет события передачи — значит, из игры ничего не выходило, изменилась лишь внутренняя запись. Разбираем, какие поля смотреть и о чём говорит их отсутствие.
Что происходит в сети в момент вывода
Со стороны сети вывод выглядит одним из двух способов. Первый: контракт передаёт уже существующий токен с адреса-хранилища на ваш адрес. Второй: контракт выпускает новый токен сразу на ваш адрес, а внутриигровая запись при этом гасится.
Различить их легко. В стандарте ERC-721 событие передачи возникает и при создании предмета, и при уничтожении, и спецификация описывает это прямо: при создании поле отправителя равно нулевому адресу, при уничтожении нулю равно поле получателя. Увидели нули в поле отправителя — перед вами выпуск, а не перенос.
Разница не косметическая. При переносе у предмета есть история до вас, и она читается по цепочке событий. При выпуске история начинается с вашей транзакции, а всё, что происходило с предметом в игре, остаётся на серверах разработчика и в сеть не попадает ни в каком виде.
Какие поля смотреть в обозревателе
Обозреватель показывает три слоя: саму транзакцию, журнал её событий и состояние контракта. Путают их постоянно, а выводы из них разные.
| Поле | Где искать | Что подтверждает | Что значит его отсутствие |
|---|---|---|---|
| Статус транзакции | Шапка страницы транзакции | Операция исполнена, а не отклонена сетью | Неуспешный статус: комиссия списана, предмет не двигался |
| Адрес контракта | Строка получателя вызова и заголовок журнала событий | Предмет принадлежит заявленной коллекции, а не одноимённой подделке | Незнакомый адрес: коллекция другая, совпадение названий ничего не значит |
| Событие передачи | Вкладка журнала событий транзакции | Владение перешло: видны отправитель, получатель и номер токена | События нет — предмет из игры не выходил |
| Текущий владелец | Чтение контракта, функция владельца по номеру токена | Состояние на сейчас, а не на момент транзакции | Чужой адрес: после вывода предмет успел уйти дальше |
| Адрес метаданных | Чтение контракта, функция ссылки на описание | Где лежит картинка и описание предмета | Пусто или не отвечает: изображение пропадёт, владение останется |
| Разрешения оператора | Журнал событий одобрения по вашему адресу | Кто вправе распоряжаться предметом помимо вас | Отзыва нет — значит, выданное ранее разрешение действует |
Два поля из таблицы отвечают на разные вопросы, и это главная путаница сегмента. Событие передачи отвечает на вопрос «что произошло тогда». Функция владельца отвечает на вопрос «кому принадлежит сейчас». Проверять нужно оба.
Пошаговая проверка после вывода
- Возьмите идентификатор транзакции из интерфейса игры и откройте его в обозревателе нужной сети. Идентификатора нет — вывода тоже нет, какой бы статус ни показывала игра.
- Убедитесь, что статус транзакции успешный. Неуспешная транзакция остаётся в сети навсегда и выглядит в списке так же, как успешная.
- Откройте журнал событий и найдите передачу с номером вашего предмета. Сверьте адрес получателя со своим посимвольно, а не по первым знакам.
- Сверьте адрес контракта с адресом, опубликованным разработчиком на официальном ресурсе. Это единственная защита от одноимённой коллекции.
- Прочитайте текущего владельца по номеру токена прямо из контракта. Обозреватели дают такую вкладку без подключения кошелька.
- Проверьте выданные разрешения на свой адрес и отзовите те, которыми не пользуетесь.
Отсутствие поля — тоже сведение
Пустое место в обозревателе говорит не меньше, чем заполненное. Три случая встречаются чаще прочих.
Первый: в транзакции нет события передачи предмета. Значит, игра списала предмет у себя, а в сеть ничего не ушло. Такое бывает при очереди на вывод и при ошибке на стороне разработчика. Обращаться тут имеет смысл не к обозревателю, а к самой игре, но исходить при этом стоит из того, что предмета в сети у вас пока нет.
Второй: ссылка на метаданные пуста или не открывается. Картинка и название хранятся вне сети, и расширение метаданных в стандарте помечено как необязательное. Потеря описания неприятна, но владение номером токена от неё не зависит: оно записано в контракте.
Третий: в журнале нет отзыва ранее выданного разрешения. Отсутствие отзыва означает, что разрешение в силе. Площадка или сторонний контракт, которому вы когда-то открыли доступ ко всей коллекции, сохраняет возможность распоряжаться предметом после вывода. Разбор комиссий и механики площадок помогает понять, кому и зачем такие права выдаются: об этом материал о том, как разобраться в комиссиях площадки.

Предметы по стандарту ERC-1155 читаются иначе
Игровые активы часто выпускают не по ERC-721, а по ERC-1155, который рассчитан на партии однотипных предметов. Там нет функции владельца по номеру: вместо неё баланс по паре «адрес и номер типа». Событий тоже два — одиночная передача и пакетная, причём в пакетной номера типов и количества приходят массивами, и читать такую запись приходится построчно.
Практическое следствие здесь такое: для партийного предмета вопрос «мой ли он» превращается в вопрос «сколько единиц этого типа числится за моим адресом на текущий момент». Единица может быть у тысячи адресов одновременно. Уникальности, к которой приучил первый стандарт, здесь нет.
Чего обозреватель не покажет
Границы инструмента стоит знать заранее. Обозреватель читает состояние сети, и за её пределами он бессилен.
Он не скажет, жив ли проект и работает ли игра. Он не подтвердит, что картинка по ссылке метаданных останется на месте через год. Он не оценит, сколько предмет стоит на рынке, и не отличит востребованную коллекцию от заброшенной, потому что ни то ни другое в состоянии сети не записано. Эти вопросы решаются за пределами сети, и для игровых активов они важнее технических: немалая часть проектов сегмента остановлена, а их предметы продолжают существовать в сети как номера без содержания.
Он также не покажет, во что обойдётся следующее движение предмета. Структура сборов при переносе между кошельками разобрана в материале о том, как перевести предмет между кошельками и понять структуру комиссий, и считать её стоит до операции.
- Идентификатор транзакции получен и открыт в обозревателе.
- Статус транзакции успешный.
- В журнале найдено событие передачи с номером предмета.
- Адрес получателя совпал с вашим посимвольно.
- Адрес контракта сверен с официальным адресом коллекции.
- Текущий владелец прочитан из контракта, а не из интерфейса площадки.
- Лишние разрешения на коллекцию отозваны.
Итог
Проверка вывода держится на двух независимых вопросах: что записано в журнале транзакции и что отвечает контракт сейчас. Первый вопрос подтверждает факт события. Второй — факт владения. Пробелы в полях читаются наравне с содержимым: нет события передачи — нет вывода, нет отзыва разрешения — доступ сохраняется. Из обращений читателей видно, что чаще всего подводит доверие к интерфейсу: игра показывает «выведено», а в сети тишина. Отдельная история — предметы, полученные бесплатно: их происхождение стоит проверять тем же способом, о чём говорится в разборе о том, как участвовать в бесплатной раздаче предметов. В сетях вне семейства Ethereum устройство записи иное, и это показывает материал про Bitcoin Ordinals и цифровые артефакты на базовом слое.
Материалы по теме:
- Как перевести предмет между кошельками и понять структуру комиссий — из чего складывается стоимость следующего шага.
- Как разобраться в комиссиях площадки — какие права вы выдаёте площадке и зачем.
- Как участвовать в бесплатной раздаче предметов — проверка происхождения подаренного предмета.
- Bitcoin Ordinals и цифровые артефакты на базовом слое — как запись о владении устроена в другой сети.
Первоисточники: спецификация ERC-721 с описанием события передачи и спецификация ERC-1155 для партийных предметов. Интерфейсы обозревателей меняются, поля стандарта — нет.
Частые вопросы
Игра пишет «выведено», а в обозревателе пусто. Где предмет?
Пока нигде за пределами игры. Отсутствие транзакции означает, что в сеть ничего не отправлялось, а надпись в интерфейсе отражает состояние внутренней очереди. Запросите у разработчика идентификатор транзакции и, пока его нет, считайте вывод незавершённым. Записи в игровой базе доказательством владения не являются и исчезают вместе с сервером.
В поле отправителя стоит адрес из одних нулей. Это нормально?
Да, так выглядит выпуск нового токена. Стандарт ERC-721 прямо указывает: событие передачи возникает при создании предмета, и тогда поле отправителя равно нулевому адресу. Значит, игра не переносила существующий предмет, а выпустила новый на ваш адрес. Истории владения до этой транзакции у предмета нет.
Картинка не отображается. Я потерял предмет?
Нет. Изображение и описание лежат вне сети, по ссылке из контракта, и расширение метаданных помечено в стандарте как необязательное. Если ссылка не отвечает, пропадает только картинка. Владение определяется записью в контракте и проверяется чтением функции владельца по номеру токена, и эта функция ответит независимо от того, в каком состоянии находится хранилище с метаданными.
Как проверить, что коллекция настоящая?
По адресу контракта, и только по нему. Название, картинка и описание повторяются кем угодно, адрес подделать нельзя. Возьмите адрес с официального ресурса разработчика и сверьте с тем, что стоит в журнале вашей транзакции. Совпадения названий, числа держателей или популярности в поиске доказательством не являются.
Вердикт
Обозреватель — единственный арбитр в споре между вашим ожиданием и реальностью игры. Он отвечает на два вопроса: было ли событие и кому предмет принадлежит сейчас. Приучите себя смотреть оба ответа, а не один, и сверять адрес контракта до того, как радоваться выводу. Пустые поля при этом читаются наравне с заполненными — отсутствие отзыва разрешения стоило читателям предметов чаще, чем прямые кражи. Разборы по игровым активам и коллекциям выходят в телеграм-канале Cryptium.
Обсуждение
Добавить комментарий