Чтобы вывести внутриигровые активы за пределы игры и сверить адрес получателя, задайте строке четыре вопроса: та ли это сеть, есть ли по адресу код, умеет ли этот код принимать предметы и кто им управляет. Для монеты хватило бы одного вопроса. Предмету нужны все четыре. Адрес, который спокойно примет перевод денег, способен навсегда запереть игровой предмет, и ошибка здесь не лечится.

Сверка получателя для предмета — это проверка адреса не на правильность написания, а на пригодность: убедиться, что по адресу находится либо обычный кошелёк с ключом, либо контракт, объявивший функцию приёма токенов такого типа.

Почему адрес для предмета проверяется строже, чем для монеты

Монета попадает на любой адрес и остаётся там доступной тому, у кого есть ключ. Предмет ведёт себя иначе. Он числится за адресом в учёте контракта коллекции, и чтобы сдвинуть его дальше, кто-то должен вызвать функцию перевода от имени этого адреса.

Отсюда и разница в требованиях. Обычный адрес с ключом вызовет функцию по подписи владельца. Контракт вызовет её только если такая возможность заложена в его код. А если не заложена, запись о владельце остаётся верной навечно и бесполезной одновременно.

Стандарт ERC-721 от 24 января 2018 года разделяет два способа перевода. Безопасный проверяет, является ли получатель контрактом по размеру кода больше нуля, и вызывает у него функцию приёма; при неверном ответе операция срывается. У небезопасного в тексте спецификации стоит предупреждение заглавными буквами: вызывающая сторона обязана убедиться, что получатель способен принимать такие токены, иначе они могут быть потеряны навсегда.

Эта пара функций и объясняет, почему в одних интерфейсах ошибочный перевод не проходит, а в других проходит без предупреждения. Выбор делает не игрок. Выбор делает код, который подписывает игрок.

Как вывести внутриигровые активы за пределы игры и сверить адрес получателя: четыре вопроса

Порядок вопросов важен: каждый следующий имеет смысл только при положительном ответе на предыдущий.

Первый вопрос — о сети. Один и тот же адрес существует во всех совместимых цепочках, поэтому сверка начинается с номера сети, а не с символов строки.

Второй — о коде. Страница адреса в обозревателе показывает, есть ли по нему развёрнутый контракт. Пустая вкладка кода означает обычный адрес, управляемый ключом.

Третий — о приёмнике. Если код есть, контракт должен объявлять функцию приёма токенов нужного типа. Для предметов это функция, возвращающая особое значение-подтверждение; стандарт ERC-1155 от 17 июня 2018 года называет для неё конкретные значения — 0xf23a6e61 для одиночного перевода и 0xbc197c81 для партии.

Четвёртый — об управлении. Даже контракт с приёмником бесполезен, если распоряжаться предметом внутри него не может никто из доступных вам лиц.

Схема из четырёх вопросов к адресу получателя: сеть, наличие кода, объявленный приёмник предметов, управление адресом
Схема из четырёх вопросов к адресу получателя: сеть, наличие кода, объявленный приёмник предметов, управление адресом

Шесть типов получателей и судьба предмета

Адреса различаются не внешне, а по поведению. Таблица ниже сводит типичные варианты, которые встречаются при выводе из игры.

Тип получателя Что произойдёт с предметом Можно ли двинуть его дальше
Обычный кошелёк с ключом Придёт и будет виден как ваш Да, по подписи владельца ключа
Смарт-контрактный кошелёк с приёмником Придёт, приёмник подтвердит получение Да, через интерфейс самого кошелька
Адрес контракта коллекции Безопасный перевод сорвётся, небезопасный запишет владельцем контракт Нет, если в коде не заложена спасательная функция
Контракт площадки или игрового стейкинга Придёт, если приёмник объявлен для этого типа токенов Только по правилам этого контракта и его сроков
Депозитный адрес сервиса для монет Запись о владельце изменится, предмет в учёте сервиса не появится Чаще нет: сервис не ждёт токены такого вида
Нулевой адрес Безопасный перевод сорвётся: стандарты требуют отказа Нет. Небезопасный вызов означает уничтожение предмета

Третья и пятая строки дают большинство потерь. Объединяет их одно: адрес взят оттуда, где он выглядел официально.

Почему отправка на адрес контракта коллекции губит предмет

Адрес коллекции — самая правдоподобная ошибка в сегменте. Он есть на странице коллекции, он есть в обозревателе, он подписан названием игры. Выглядит как адрес, где предметам и место.

Внутренняя логика ровно обратная. Контракт коллекции ведёт список владельцев, но сам владельцем быть не рассчитан: функции приёма у него обычно нет, а функции вывода чужих токенов — почти никогда. Получается запись «владелец — контракт» и ни одной строки кода, способной эту запись изменить.

Безопасный перевод в такой ситуации откатывается, и это защита, а не поломка. Опасен небезопасный вариант: он проходит без проверки получателя, предмет закрепляется за контрактом, и дальше остаётся надеяться лишь на административную функцию извлечения, если разработчик её предусмотрел. В большинстве игровых контрактов её нет.

Издержки: комиссии, роялти, газ при промахе адресом

Ошибка адресом не бесплатна даже в удачном сценарии.

  • Комиссия за сорвавшийся безопасный перевод списывается частично: сеть берёт плату за выполненную работу до отката.
  • Комиссия за небезопасный перевод списывается полностью, потому что операция прошла успешно.
  • Возврат от живого получателя требует второй комиссии, которую обычно платит он, а не вы.
  • Продажа возвращённого предмета снова включает тарифы сервиса и роялти коллекции: стандарт ERC-2981 от 15 сентября 2020 года оставляет выплату роялти на усмотрение площадки, поэтому её размер зависит от места продажи.
  • Время простоя предмета, пока он недоступен для игры и для торговли.

Расчёт ниже условный и приведён для понимания соотношения. Ставки смотрите в кошельке в момент подписи.

Условный пример: перевод стоит одну единицу комиссии, сорвавшаяся попытка — около трети единицы, возврат от получателя — ещё одну. Три попытки с промахом и возвратом обходятся примерно в две с половиной единицы против одной при точной отправке. По стандарту ERC-55 от 14 января 2016 года вероятность того, что опечатка в адресе случайно пройдёт проверку контрольной суммы, составляет 0,0247 процента — то есть сама строка почти всегда защищена, а выбор получателя не защищён ничем.

Структура чека за перевод разобрана отдельно: материал о том, как перевести предмет между кошельками и понять структуру комиссий, показывает, из чего он складывается. Тарифы торгового сервиса и роялти описаны в тексте о том, как разобраться в комиссиях площадки.

Пошаговый сценарий сверки адреса

  1. Возьмите адрес из того кошелька, куда выводите, через кнопку копирования. Переписанный вручную или присланный в переписке адрес не считается источником.
  2. Вставьте адрес в поле и сверьте середину строки, а не первые и последние четыре знака. Подмена всегда сохраняет края.
  3. Откройте адрес в обозревателе нужной сети и посмотрите вкладку кода. Пусто — обычный кошелёк, есть код — идите к следующему пункту.
  4. Для контракта проверьте, объявлена ли поддержка приёма предметов, и выясните, кто вправе распоряжаться токенами внутри него.
  5. Отправьте сначала самый дешёвый предмет коллекции и дождитесь появления владельца в обозревателе.
  6. Убедитесь, что интерфейс кошелька показывает предмет и позволяет открыть форму перевода. Если форма доступна, адрес пригоден.
  • Адрес скопирован из кошелька-получателя, а не из переписки.
  • Сверена середина строки адреса, не только края.
  • Номер сети в кошельке совпадает с сетью игрового контракта.
  • У адреса нет кода либо код объявляет приём предметов.
  • Пробный перевод дешёвым предметом выполнен и проверен в обозревателе.

Риски и мошеннические схемы сегмента

Схемы здесь построены на подмене источника адреса, а не на взломе кошелька.

  • Перехват буфера обмена: вставленный адрес отличается от скопированного, совпадают только края.
  • «Адрес склада предметов» от фальшивой поддержки — обычно это адрес контракта коллекции или чужой кошелёк.
  • Пыльные переводы: на ваш адрес приходит мелочь с похожего адреса, чтобы вы потом скопировали его из истории операций.
  • Поддельные страницы вывода, подставляющие свой адрес в поле получателя при подтверждении.
  • Советы отправить предмет «на адрес коллекции для верификации подлинности».

Третий приём опирается на привычку брать адрес из истории. Привычка удобная и опасная. Как устроены условия в бесплатных акциях, где тоже просят подпись и адрес, разобрано в материале о том, как участвовать в бесплатной раздаче предметов. Почему запись о владельце вообще становится носителем права, показывает разбор NFT-билетов и ликвидации чёрного рынка.

Материалы по теме:

Итог

Правильно написанный адрес и пригодный адрес — разные вещи. Контрольная сумма ловит опечатки почти наверняка, но она ничего не знает о том, умеет ли получатель принимать предметы и сможет ли кто-нибудь двинуть их дальше. Эти два вопроса остаются на игроке.

Проверьте первоисточники сами. Поведение безопасного и небезопасного переводов описано в тексте стандарта ERC-721, механика контрольной суммы адреса — в спецификации ERC-55. Данные сверены на 16 октября 2026 года; правила проекта и адреса контрактов уточняйте на дату операции.

Частые вопросы

Я отправил предмет на адрес контракта коллекции. Что делать?

Напишите разработчику проекта и спросите, есть ли в контракте функция извлечения чужих токенов. Если она есть, вызвать её сможет держатель административного ключа. Если нет, предмет останется закреплённым за контрактом навсегда: кода, который подписал бы перевод от его имени, не существует. Сторонним «спасателям» платить не нужно.

Как отличить обычный кошелёк от контракта по виду адреса?

По виду — никак, формат у них одинаковый. Различие видно только в обозревателе: у контракта заполнена вкладка с кодом, у обычного адреса она пуста. Это проверка на одну минуту, и делать её стоит для каждого нового получателя, особенно если адрес вы получили не из своего кошелька.

Можно ли выводить игровые предметы на депозитный адрес биржи?

Только если сервис прямо заявляет, что принимает токены такого типа и такой коллекции. Депозитные адреса рассчитаны на монеты, и предмет, пришедший на них, в учёте сервиса не появится. Запись о владельце при этом изменится. Проверяйте требования сервиса до перевода, а не после.

Почему сверять нужно середину адреса, а не начало и конец?

Потому что подмена делается с сохранением краёв: интерфейсы показывают адрес сокращённо, и мошеннику достаточно совпадения первых и последних знаков. Середина строки — единственная часть, которую подделать трудно. Сверяйте её по символам либо копируйте адрес кнопкой, не доверяя визуальному сходству.

Безопасный перевод всегда надёжнее небезопасного?

Для предметов — да, он проверяет получателя и срывается при неподходящем адресе. Но выбор функции чаще делает интерфейс, а не игрок. Поэтому полагаться только на эту защиту нельзя: сверка адреса до подписи остаётся обязательной, даже когда вы уверены, что приложение использует безопасный вариант.

Вердикт

В обращениях читателей потери на адресе почти никогда не связаны с опечаткой. Опечатку ловит контрольная сумма. Теряют предметы те, кто аккуратно и точно отправил их туда, куда отправлять не следовало: на контракт коллекции, на депозит сервиса для монет, на адрес из истории операций. Проверка пригодности получателя занимает минуту в обозревателе и закрывает почти весь этот класс ошибок. Минута против коллекции — обмен выгодный.

Разборы операций с игровыми предметами и предупреждения о свежих схемах выходят в нашем Telegram-канале Cryptium.