ERC-721 и ERC-1155 часто встречаются в одном игровом проекте или на NFT-маркетплейсе, но описывают разные способы представлять активы. Первый стандарт строится вокруг отдельных уникальных токенов. Второй позволяет одному контракту учитывать множество типов активов и их количества. Поэтому вопрос не сводится к тому, какой стандарт «лучше»: многое зависит от того, нужно ли выпускать единичные предметы, большие серии или смешивать оба подхода.
Это сравнение посвящено модели токена и учёту балансов. Разрешению оператору управлять всей коллекцией посвящён отдельный материал о функции approvalForAll. Здесь важно не смешивать полномочия кошелька с тем, как контракт идентифицирует и передаёт сами активы.
Как устроен ERC-721
В ERC-721 каждый токен внутри контракта имеет собственный идентификатор tokenId. Конкретный объект определяется парой «адрес контракта и tokenId». Два контракта могут содержать токен с одинаковым числом, но это будут разные активы. В пределах одного контракта два владельца не могут одновременно владеть одним и тем же уникальным NFT: контракт хранит владельца для каждого идентификатора.
Такая модель подходит для предметов, у которых есть собственная идентичность: билетов с разными местами, цифровых произведений, уникальных игровых персонажей или записей о праве доступа. Сама уникальность не гарантирует художественную ценность, юридическое право на физический объект или неизменность изображения. Эти свойства определяются приложением, договором и тем, где размещены метаданные.
Что меняет ERC-1155
ERC-1155 использует один контракт для множества типов токенов. Баланс владельца хранится отдельно для каждого id, поэтому у одного id может быть несколько одинаковых единиц. Это удобно для игровых ресурсов, расходуемых предметов, серийных билетов или наград. Разработчик может также договориться, что конкретный id с единственным выпуском представляет уникальный предмет. Однако такую семантику задаёт выпуск и логика проекта, а не одно только название стандарта.
Ключевое отличие заметно в переводах. Контракт может обрабатывать несколько id и количеств за один пакетный вызов. В игре это позволяет передать разные материалы одной транзакцией, вместо отдельных обращений для каждого вида. Пакетная операция может сократить число вызовов и упростить взаимодействие приложений, но не делает транзакцию бесплатной: её стоимость зависит от данных, логики контракта и правил конкретной сети.
Идентификатор, баланс и происхождение
В кошельке надпись «одна штука» может скрывать разные модели. Для ERC-721 баланс владельца обычно считает число принадлежащих ему уникальных tokenId. Для ERC-1155 важно смотреть и на id, и на количество единиц по этому id. Если интерфейс показывает изображение, имя и редкость, эти сведения могут загружаться из metadata URI, а не храниться целиком в блокчейне.
Для проверки актива зафиксируйте сеть, адрес контракта и идентификатор токена. У ERC-721 проверьте владельца конкретного tokenId. У ERC-1155 запросите баланс именно для нужного id и убедитесь, что интерфейс не объединил разные классы. История событий помогает восстановить переводы, но индексатор или карточка маркетплейса может отставать или неверно группировать активы. Проверка симуляции транзакции полезна перед действием, однако не подтверждает подлинность коллекции – об ограничениях такой проверки рассказывает руководство по симуляции.
Переводы и совместимость приложений
Оба стандарта определяют безопасные способы передачи токена контракту-получателю. При безопасном переводе контракт-получатель должен подтвердить, что понимает нужный формат, иначе операция отклоняется. У ERC-1155 есть отдельные одиночный и пакетный сценарии, а события контракта передают id и количества для индексаторов. ERC-721 чаще заставляет приложение оперировать каждым отдельным NFT, даже когда пользователь выбирает сразу несколько предметов.
Маркетплейс, кошелёк или игра должны распознавать конкретные интерфейсы и корректно обрабатывать метаданные. Поддержка ERC-721 не означает автоматически полную поддержку ERC-1155. И наоборот, возможность одного ERC-1155-контракта хранить разные виды активов не гарантирует, что любой рынок покажет их как отдельные коллекции. Перед отправкой проверьте требования получателя и не делайте вывод о стандарте только по виду карточки.
Как выбрать стандарт для проекта
Если каждый объект должен иметь индивидуального владельца и отдельную историю, ERC-721 предлагает прямую модель. Если приложению нужно хранить несколько классов взаимозаменяемых или ограниченно уникальных предметов и часто переводить их наборами, ERC-1155 может лучше соответствовать задаче. Выбор затрагивает разработку, индексацию, маркетплейсы, аудит и миграцию, поэтому его нельзя свести к обещанию меньших комиссий.
При оценке контракта проверьте документацию проекта, поддерживаемые сети, функции, события, источник metadata и правила выпуска. Название коллекции и значок в кошельке не подтверждают адрес контракта. Не путайте механизм выпуска с операторскими разрешениями: для оценки широкого доступа полезно прочитать материал о разнице между точным и безлимитным разрешением, а для использования NFT как залога – обзор NFT-займов в DeFi.
Что важно запомнить
ERC-721 обычно представляет отдельные уникальные объекты с собственными tokenId. ERC-1155 позволяет учитывать много классов активов и количество каждой позиции в одном контракте, включая пакетные операции. Ни один стандарт сам по себе не обещает ценность, безопасность метаданных или поддержку во всех приложениях. Надёжная проверка начинается с адреса контракта и сети, а затем учитывает id, баланс и интерфейс, который ожидает получатель.



