Что такое ERC-721?
ERC-721 — это стандарт токенов Ethereum для создания и управления невзаимозаменяемыми токенами, или NFT.У каждого токена ERC-721 есть уникальный идентификатор (token ID), который отличает его от всех остальных токенов, управляемых тем же смарт-контрактом.Официальная спецификация ERC-721 устанавливает стандартизированные правила учета прав собственности, передачи токенов и предоставления другим адресам разрешения на управление NFT.
ERC-721 относится к категории окончательных стандартов Ethereum Request for Comments.Этот стандарт был создан, поскольку стандарты взаимозаменяемых токенов не позволяют корректно представлять активы, которые необходимо идентифицировать и отслеживать по отдельности.Токен ERC-721 может представлять цифровой коллекционный предмет, игровой объект, удостоверение участника, виртуальную недвижимость, билет на мероприятие, финансовую позицию, актив, аналогичный доменному имени, или запись, связанную с физическим предметом.Стандарт определяет правила владения и передачи в блокчейне, но сам по себе не устанавливает авторские права, юридическое право собственности, подлинность, финансовую ценность или права на внешний актив.Что означает ERC?
ERC — это сокращение от Ethereum Request for Comments.ERC описывает технический стандарт, которому могут следовать приложения и смарт-контракты для повышения совместимости в экосистеме Ethereum.ERC-721 — это идентификационный номер стандарта невзаимозаменяемых токенов.Этот номер не описывает предложение токена, его цену, адрес блокчейна или дату выпуска.Контракт, реализующий ERC-721, может включать дополнительные расширения и пользовательские функции, если его обязательное поведение остается совместимым со стандартом.Зачем был создан ERC-721?
Взаимозаменяемые активы можно обменивать друг на друга, поскольку одна единица обычно выполняет ту же функцию, что и другая единица того же актива.Невзаимозаменяемые активы необходимо учитывать отдельно, поскольку у каждой единицы могут быть свои характеристики, история, редкость, права или стоимость.ERC-721 предоставляет кошелькам и приложениям общий способ определения владельца каждого уникального токена.Он также стандартизирует переводы, разрешения, права операторов и журналы событий, связанных с владением.Без общего стандарта для каждого NFT-контракта могла бы потребоваться отдельная интеграция.Общие функции позволяют универсальным кошелькам, обозревателям блокчейна, индексаторам, играм, протоколам кредитования и другим криптоприложениям взаимодействовать со множеством NFT-коллекций.Как работает ERC-721
Смарт-контракт ERC-721 хранит или рассчитывает владельца, связанного с каждым действительным token ID.Контракт также отслеживает, сколько NFT из данной коллекции принадлежит каждому адресу.При авторизованной передаче контракт удаляет сведения о владении у отправителя и присваивает токен получателю.Контракт генерирует стандартизированное событие
Что такое token ID?
Token ID — это беззнаковое целое число, которое уникально идентифицирует один NFT в рамках контракта ERC-721.Один и тот же token ID может существовать в нескольких разных контрактах, не обозначая один и тот же актив.Таким образом, NFT идентифицируется сочетанием сети блокчейна, адреса контракта и token ID.Например, token ID 50 в одном контракте никак не связан с token ID 50 в другом контракте.Нумерация token ID не обязательно начинается с нуля или продолжается последовательно.Коллекция может использовать последовательные или случайно назначенные ID, закодированные идентификаторы или другую систему, поддерживаемую контрактом.Приложениям следует запрашивать данные у контракта, а не считать, что каждому номеру в заданном диапазоне соответствует существующий NFT.Почему ERC-721 — стандарт для невзаимозаменяемых токенов?
Каждый токен ERC-721 учитывается как отдельный объект в блокчейне.Два NFT из одной коллекции могут различаться метаданными, историей, свойствами, редкостью и рыночной стоимостью.Владение одним token ID не дает владельцу права собственности на другой token ID.Стандартный токен ERC-721 передается целиком, а не в виде дробного количества.Для дробного экономического владения требуется отдельный смарт-контракт или структура токена за пределами основного стандарта ERC-721.Невзаимозаменяемость двух NFT не гарантирует различия их визуального содержимого: разные token ID могут ссылаться на похожие или идентичные метаданные.Основные функции ERC-721
Основной стандарт включает функции проверки владения, передачи NFT и управления разрешениями на передачу.Обязательные функции:
Функция balanceOf
Функция
Функция ownerOf
Функция
Адрес, возвращаемый функцией
Функция transferFrom
Функция
Если передать NFT несовместимому контракту с помощью
Функции safeTransferFrom
ERC-721 включает две версии
Если получателем является смарт-контракт, контракт NFT вызывает функцию получателя
Что такое получатель ERC-721?
Получатель ERC-721 — это смарт-контракт, реализующий функцию
Совместимый получатель возвращает ожидаемый селектор, обычно представленный как
Актуальная документация по реализации ERC-721 включает интерфейс получателя и базовый вспомогательный контракт для контрактов, которым нужно принимать NFT.
Перед записью депозита или предоставлением преимущества получателю следует проверить NFT-контракт, вызвавший обратный вызов.Разрешения ERC-721
Разрешения ERC-721 позволяют владельцу NFT делегировать право на передачу, не передавая право собственности немедленно.Разрешение для конкретного токена распространяется на один token ID.Разрешение оператору распространяется на все NFT, которыми один адрес владеет в рамках данного контракта.Разрешения записываются в блокчейн и могут использоваться без дополнительной подписи владельца, пока остаются действительными.Пользователям следует считать запросы на разрешение для NFT чувствительными финансовыми полномочиями.Разрешение ненадежному адресу может дать ему возможность передать ценные NFT.Функция approve
Функция
Функция getApproved
Функция
Приложение, проверяющее возможность аккаунта передать NFT, должно также учитывать функцию
Функция setApprovalForAll
Функция
Функция isApprovedForAll
Функция
Функция возвращает значение
События ERC-721
ERC-721 определяет события
Событие Transfer
Событие
События Approval и ApprovalForAll
Событие
Событие
Обнаружение интерфейсов ERC-165
Каждый совместимый с ERC-721 контракт должен поддерживать обнаружение интерфейсов ERC-165.Стандарт ERC-165 определяет функцию
ID основного интерфейса ERC-721 —
Совместимый контракт должен возвращать
Метаданные ERC-721
ERC-721 включает необязательное расширение метаданных.Расширение добавляет функции
ID интерфейса ERC-165 для этого расширения —
Как работает tokenURI
Функция
События обновления метаданных
Сам ERC-721 не предусматривает стандартизированное событие для каждого изменения метаданных.Необязательное расширение ERC-4906 для обновления метаданных добавляет события
ID интерфейса ERC-4906 —
Перечисление токенов ERC-721
Необязательное расширение для перечисления позволяет получать через ончейн-функции сведения о предложении NFT и списках принадлежащих владельцам токенов.ID его интерфейса —
Расширение добавляет функции
Функция
Вместо этого офчейн-приложения могут восстановить данные о владении, индексируя события
Выпуск токенов ERC-721
Выпуск создает новый действительный token ID и назначает ему первого владельца.Основной стандарт ERC-721 не определяет, кто может выпускать токены и как должен запрашиваться выпуск.Коллекция может разрешать публичный выпуск, ограничивать его авторизованными ролями, требовать оплату, использовать списки разрешенных адресов или создавать все NFT при развертывании контракта.При выпуске обычно генерируется событие
Сжигание токенов ERC-721
Сжигание удаляет NFT из действительных записей о владении.Основной интерфейс ERC-721 не требует публичной функции сжигания.Коллекция может разрешить сжигание владельцам, одобренным операторам, администраторам или логике протокола.При сжигании обычно генерируется событие
Роялти ERC-721
Роялти создателям не входят в основной стандарт ERC-721.Необязательный стандарт роялти для NFT ERC-2981 предоставляет метод для указания получателя роялти и рекомендованной суммы исходя из цены продажи.
ERC-2981 передает информацию о роялти, но не обязывает каждую транзакцию или приложение выплачивать их.Если реализация это поддерживает, коллекция может задавать стандартные или индивидуальные для токена параметры роялти.Получателей и ставки роялти можно менять, если контракт наделяет администратора такими полномочиями.Не следует считать, что каждая передача ERC-721 сопровождается обязательной выплатой создателю.ERC-721 и ERC-20
ERC-20 предназначен для балансов взаимозаменяемых токенов, а ERC-721 — для NFT с индивидуальными идентификаторами.Аккаунт ERC-20 может хранить делимое количество одного токена.Аккаунт ERC-721 владеет отдельными token ID.Функция
ERC-721 и ERC-1155
ERC-721 представляет отдельно принадлежащие token ID в рамках одного контракта NFT-коллекции.Мульти-токен-стандарт ERC-1155 позволяет одному контракту управлять множеством token ID с отдельными балансами по количеству.
Token ID ERC-1155 может представлять взаимозаменяемый, полу взаимозаменяемый или уникальный актив.Адрес может владеть несколькими единицами одного token ID ERC-1155.В стандартной модели у каждого действительного token ID ERC-721 один владелец.ERC-1155 также поддерживает стандартизированные пакетные переводы, тогда как переводы ERC-721 обычно выполняются по одному NFT.Выбор стандарта зависит от требований проекта к владению активами и учету инвентаря.Сценарии использования ERC-721
Цифровые арт-коллекции могут использовать токены ERC-721 для фиксации владения отдельными произведениями.Блокчейн-игры могут использовать NFT для персонажей, земли, экипировки и других уникальных предметов.Системы членства могут применять NFT для представления прав доступа или статуса в сообществе.Финансовые приложения могут токенизировать уникальные долговые позиции, страховые полисы, позиции в пулах ликвидности или требования.Системы мероприятий могут выпускать индивидуальные билеты с ограниченными правилами передачи.Проекты могут связывать NFT с физическими товарами, хотя смарт-контракт не способен самостоятельно подтвердить владение или право собственности на физический предмет.Токен ERC-721 также может представлять удостоверение, но конфиденциальные персональные данные не следует хранить в открытом виде в публичном блокчейне.Владение NFT и авторские права
Владение токеном ERC-721 означает, что контракт в блокчейне признает адрес владельцем данного token ID.Оно не приводит автоматически к передаче авторских прав на связанное с токеном произведение или медиафайл.Авторские права и права на коммерческое использование зависят от лицензии создателя, договора купли-продажи и применимого законодательства.Проект может предоставить широкие коммерческие права, ограничить использование личными целями или не предоставлять дополнительных прав интеллектуальной собственности.Метаданные также могут ссылаться на контент, который эмитент токена не имел права использовать.Покупателям следует изучить юридические условия проекта и не считать, что владение токеном дает любые возможные права.Риски разрешений ERC-721
Злоумышленные запросы разрешений представляют серьезную угрозу безопасности для владельцев NFT.Фишинговое приложение может запросить
Безопасная передача и риск повторного входа
При безопасной передаче NFT, если получателем является смарт-контракт, вызывается внешний код.Получатель может обратиться к исходному приложению до полного завершения первой операции.Это может привести к уязвимостям повторного входа в контрактах выпуска, продаж, кредитования, стейкинга, эскроу или вывода средств.В официальных рекомендациях по безопасности Solidity предлагается, когда это допускает логика приложения, завершать проверки и важные изменения состояния до внешних взаимодействий.
Разработчикам также следует учитывать повторный вход через другие функции: злоумышленный получатель может вызвать другую доступную функцию.Обратные вызовы получателя необходимо тестировать с помощью вредоносных контрактов, а не считать простыми уведомлениями.Риски безопасности метаданных
Видимое содержимое NFT может зависеть от данных вне блокчейна.Внешний сервер может стать недоступным, изменить ответ или удалить файл.Изменяемый URI может после покупки указывать на другое содержимое.Метаданные могут включать вводящие в заблуждение описания, скопированные изображения, скрытые внешние ссылки или небезопасные форматы файлов.Децентрализованное хранение может повысить устойчивость данных, однако доступность контента по-прежнему зависит от его постоянного хранения и правильности идентификаторов.Полностью ончейн-метаданные снижают зависимость от внешнего хостинга, но могут увеличить расходы на развертывание и обновление.Риски подлинности контракта
Любой может развернуть контракт ERC-721 с привычным названием, символом, изображением или token ID.Совместимость с интерфейсом не подтверждает подлинность коллекции.Пользователям следует проверять сеть блокчейна и полный адрес контракта по авторитетному источнику проекта.Публикация верифицированного исходного кода подтверждает его соответствие коду контракта, но не гарантирует добросовестность бизнеса или безопасность экономической модели.Также следует проверять историю токена, заявления создателя, права администратора и контроль над метаданными.Обновляемые контракты ERC-721
Контракт ERC-721 может использовать прокси, позволяющий менять его логику после развертывания.Обновления могут устранять ошибки или добавлять функции.Они также могут изменить правила выпуска, передачи, разрешений, метаданных, роялти, приостановки или сжигания.Если полномочия на обновление скомпрометированы, злоумышленник может установить вредоносную логику, затрагивающую владение NFT.Пользователям следует выяснить, кто контролирует обновления, сколько подписей требуется и предусмотрена ли задержка.У коллекции, называемой децентрализованной, все еще могут быть широкие полномочия администратора.Как разработчикам реализовать ERC-721
Если особая архитектура не требуется, разработчикам следует использовать проверенную и активно поддерживаемую реализацию.В актуальном руководстве по разработке ERC-721 описаны основные реализации и необязательные расширения для метаданных, перечисления, сжигания, приостановки, роялти, голосования и других задач.
Права на выпуск должны соответствовать опубликованным правилам предложения коллекции.Передачи и разрешения должны отклонять неавторизованные вызовы и недействительные адреса.Если токен может быть выпущен непосредственно на смарт-контракт, следует использовать безопасный выпуск.Разработчикам следует тестировать взаимодействие с вредоносными получателями, повторный вход, недействительные token ID, сброс разрешений, права операторов, сжигание и обнаружение интерфейсов.Для административных функций необходимы четкий контроль доступа и информативные события.Как оценить NFT ERC-721
Сначала проверьте сеть, адрес контракта и token ID.Затем убедитесь, что контракт поддерживает основной интерфейс ERC-721.После этого проверьте текущего владельца и историю передач.Далее изучите разрешения для конкретных токенов и всей коллекции.Проверьте, как хранятся метаданные и связанные медиафайлы.Определите, кто уполномочен выпускать и сжигать токены, приостанавливать и замораживать операции, а также обновлять контракт.Установите, можно ли проверить в блокчейне заявления о предложении и редкости.Изучите аудиты и исходный код, не считая их гарантиями.Разберитесь, какие юридические или коммерческие права связаны с NFT.Прежде чем рисковать ценными активами, проверьте незнакомые контракты транзакцией с активом небольшой стоимости.Пример передачи ERC-721
Предположим, Алисе принадлежит token ID 101 из коллекции ERC-721.Функция контракта
Ее кошелек вызывает
Контракт обновляет записи о владении и вызывает
Если возвращен правильный селектор, передача завершается, а контракт NFT генерирует событие
Распространенные ошибки при работе с ERC-721
Распространенная ошибка — считать, что название коллекции уникально идентифицирует NFT.Другая ошибка — предоставлять оператору доступ ко всей коллекции, не проверив его адрес.Третья ошибка — думать, что отключение кошелька отменяет разрешения в блокчейне.Четвертая ошибка — использовать
FAQ
Что означает ERC-721?
ERC-721 — это стандарт Ethereum, определяющий правила владения, передачи, разрешений и интерфейсов для невзаимозаменяемых токенов.ERC-721 — это то же самое, что NFT?
ERC-721 — технический стандарт для NFT, а NFT — более широкое понятие, которое включает токены, созданные и по другим стандартам.Является ли ERC-721 взаимозаменяемым?
Нет, каждый действительный token ID ERC-721 учитывается отдельно и может иметь собственные свойства и стоимость.Каков ID интерфейса ERC-721?
ID основного интерфейса ERC-721 —
Что идентифицирует NFT ERC-721?
NFT идентифицируется сочетанием сети блокчейна, адреса смарт-контракта и token ID.Что возвращает balanceOf?
Функция возвращает количество NFT, которыми адрес владеет в рамках одного контракта ERC-721.Что возвращает ownerOf?
Функция возвращает текущий адрес владельца действительного token ID.В чем разница между transferFrom и safeTransferFrom?
Можно ли отправить NFT ERC-721 в смарт-контракт?
Да, но обычно следует использовать безопасную передачу, чтобы получатель должен был подтвердить возможность принять NFT.Что делает approve?
Функция разрешает одному адресу передать конкретный NFT.Что делает setApprovalForAll?
Функция уполномочивает оператора управлять всеми NFT, которыми владелец владеет в рамках данного контракта ERC-721.Истекает ли разрешение оператора автоматически?
Нет, стандартное разрешение оператору остается активным, пока владелец не отзовет его или пользовательская логика контракта не изменит его действие.Сбрасывается ли разрешение на конкретный токен при передаче NFT?
Да, при передаче NFT разрешение на конкретный токен сбрасывается.Обязательны ли метаданные для ERC-721?
Нет, интерфейс метаданных необязателен, хотя его реализует большинство NFT-коллекций.Могут ли изменяться метаданные ERC-721?
Да, метаданные могут изменяться, если контракт и система хранения не обеспечивают проверяемую гарантию неизменности.В каждом ли контракте ERC-721 есть totalSupply?
Нет,
Определяет ли ERC-721 выпуск токенов?
Стандарт учитывает выпуск через события владения, но не требует конкретной публичной функции выпуска или политики предложения.Определяет ли ERC-721 сжигание токенов?
Нет, функция сжигания необязательна и зависит от конкретной реализации.Обеспечивает ли ERC-721 выплату роялти?
Нет, для роялти требуется отдельная логика или стандарты, а информация о них не обеспечивает автоматическую выплату.Дает ли владение токеном ERC-721 авторские права?
Нет, права интеллектуальной собственности зависят от применимой лицензии и юридического соглашения.Можно ли обновлять контракты ERC-721?
Некоторые можно обновлять через прокси-системы, а другие после развертывания неизменяемы.Можно ли разделить NFT ERC-721 на доли?
Для дробного владения требуется отдельный контракт или механизм токенизации, поскольку основной токен ERC-721 принадлежит одному владельцу целиком.Можно ли использовать разрешение ERC-721 для кражи NFT?
Да, злоумышленный одобренный адрес может передать NFT, на которые распространяется его разрешение.Подтверждает ли соответствие ERC-721 подлинность?
Нет, совместимый контракт может развернуть любой пользователь, поэтому адрес коллекции и эмитента необходимо проверять отдельно.В чем главное преимущество ERC-721?
Главное преимущество — стандартизированное поведение при владении и передаче, благодаря которому многие криптоприложения могут взаимодействовать с уникальными токенизированными активами.Заключение
ERC-721 — основной стандарт Ethereum для представления индивидуально идентифицированных невзаимозаменяемых токенов.Он определяет общие правила проверки владения, передачи, разрешений, полномочий операторов, событий и обнаружения интерфейсов.Каждый NFT уникально идентифицируется сетью блокчейна, адресом контракта и token ID.ID основного интерфейса —
Вам также может быть интересно
ZK-Rollup
ZK-Rollup-as-a-Service
zk-SNARK
В тренде
Трендовые криптовалюты, которые в настоящее время привлекают значительное внимание рынка
ТОП по объему
Криптовалюты с наибольшим объемом торгов
Недавно добавленные
Криптовалюты недавно внесенные в листинг и доступные для торговли

