Что такое ERC-1155?
ERC-1155 — это стандарт токенов Ethereum, который позволяет управлять множеством различных типов токенов с помощью одного смарт-контракта.Один контракт ERC-1155 может содержать взаимозаменяемые токены, невзаимозаменяемые токены (NFT), полу взаимозаменяемые токены или сочетание этих активов.Официальная спецификация ERC-1155 устанавливает общие правила для балансов, переводов, пакетных операций, разрешений, callback-функций получателя, событий, метаданных и обнаружения интерфейсов.
ERC-1155 часто называют мультитокеновым стандартом.Каждый тип токена обозначается ID и может иметь собственные предложение, метаданные, назначение, дефицитность и экономические характеристики.Такая архитектура уменьшает необходимость развертывать отдельный смарт-контракт для каждого актива в крупном криптоприложении.ERC-1155 особенно полезен для блокчейн-игр, цифровых коллекционных предметов, членства, билетов на мероприятия, систем вознаграждений, токенизированных инвентарей и приложений, управляющих несколькими связанными активами.Соответствие стандарту повышает совместимость, но не гарантирует подлинность, ценность, дефицитность или безопасность токена.Зачем был создан ERC-1155?
Более ранние стандарты токенов Ethereum обычно предназначались для одного взаимозаменяемого актива или одной коллекции уникальных активов.Поэтому проекту с сотнями валют, игровых предметов, билетов и коллекционных объектов могло потребоваться множество отдельных контрактов.Каждый дополнительный контракт увеличивает расходы на развертывание, объем повторяющегося кода, административную нагрузку и сложность интеграции.ERC-1155 позволяет объединить эти типы токенов в одном контракте и использовать общую систему переводов.Стандарт также поддерживает пакетные операции, позволяющие запрашивать или переводить несколько ID токенов за один вызов.Пакетная обработка может уменьшить повторные транзакционные издержки и упростить взаимодействие с множеством активов.Стандарт разработан для масштабных систем токенов, но не ограничивается блокчейн-играми.Как работает ERC-1155
Контракт ERC-1155 хранит отдельный баланс для каждой комбинации адреса аккаунта и ID токена.Например, один кошелек может владеть 500 единицами токена с ID 1, тремя единицами токена с ID 2 и одной единицей токена с ID 3.ID токена 1 может представлять взаимозаменяемую валюту, ID 2 — предмет ограниченного выпуска, а ID 3 — уникальный NFT.Все три баланса могут существовать в одном смарт-контракте.При переводе токенов контракт уменьшает баланс отправителя и увеличивает баланс получателя по выбранным ID токенов.Контракт генерирует стандартизированные события, позволяющие кошелькам и блокчейн-индексаторам отслеживать изменения.Если получателем является смарт-контракт, ERC-1155 выполняет callback-функцию получателя, чтобы проверить, принимает ли тот токены.Что такое ID токена ERC-1155?
ID токена — это беззнаковое целое число, обозначающее один тип токена внутри контракта ERC-1155.Тот же ID токена может встречаться в другом контракте, но не обозначать тот же криптоактив.Поэтому ERC-1155-актив идентифицируется одновременно сетью блокчейна, адресом контракта и ID токена.ID токена 100 в одном контракте может обозначать игровой ресурс, а ID 100 в другом контракте — билет на мероприятие.Стандарт не требует, чтобы ID токенов начинались с нуля или шли по простому порядку.Разработчики могут присваивать ID в соответствии с архитектурой приложения.Пользователям следует проверять полный адрес контракта и ID токена, а не полагаться только на отображаемое название или изображение.Взаимозаменяемые токены ERC-1155
ID токена может представлять взаимозаменяемый актив, если существует множество взаимозаменяемых единиц с этим ID.Например, игра может выпустить миллион единиц токена с ID 10 в качестве внутриигровой валюты.Для каждого держателя будет вестись количественный баланс по ID токена 10.Единицы одного ID обычно имеют одинаковые свойства, заданные контрактом.Базовый интерфейс ERC-1155 не определяет отдельные символ, количество десятичных знаков или название для каждого ID токена.Если такая информация нужна для отображения, проекты должны предоставлять ее в метаданных или через пользовательские функции.Невзаимозаменяемые токены ERC-1155
ID токена может функционировать как NFT, если предложение ограничено одной единицей.Адрес, на котором находится эта единица, фактически владеет уникальным активом, представленным данным ID.Другой ID в том же контракте может обозначать другой уникальный предмет.В отличие от ERC-721, ERC-1155 автоматически не ограничивает предложение каждого ID токена одной единицей.Если токен описывается как невзаимозаменяемый, уникальность должна обеспечиваться логикой выпуска контракта.Прежде чем считать предмет ERC-1155 уникальным, пользователям следует проверить фактические ограничения предложения.Полу взаимозаменяемые токены ERC-1155
На одном этапе жизненного цикла полу взаимозаменяемый токен состоит из нескольких взаимозаменяемых единиц, но позднее может приобрести иное значение или полезную функцию.Распространенный пример — билеты на мероприятие: до события несколько билетов на места в одном секторе могут быть взаимозаменяемыми.После мероприятия каждый использованный билет может стать коллекционным предметом, связанным с конкретным событием.Для игровых предметов ограниченного выпуска также может использоваться полу взаимозаменяемая модель.ERC-1155 формально не обозначает ID токена как взаимозаменяемый, невзаимозаменяемый или полу взаимозаменяемый.Классификация зависит от предложения, метаданных, правил перевода и поведения приложения.Основные функции ERC-1155
Основной интерфейс ERC-1155 содержит функции проверки балансов, перевода токенов и управления разрешениями операторов.К основным функциям относятся
Функция balanceOf
Функция
Функция balanceOfBatch
Функция
Функция safeTransferFrom
Функция
Успешный одиночный перевод генерирует событие
Функция safeBatchTransferFrom
Функция
Успешная операция генерирует одно событие
Преимущества пакетных переводов
Пакетные переводы могут снизить расходы на транзакции, когда требуется одновременно переместить несколько связанных активов.Игрок может за одну транзакцию перевести валюту, материалы, снаряжение и коллекционные предметы.Контракт вознаграждений может за одну операцию распределить получателю несколько типов токенов.Пакетная обработка также может упростить атомарные обмены: либо перемещается вся группа активов, либо транзакция завершается ошибкой.Объем экономии газа зависит от количества ID, изменений хранилища, логики получателя и состояния сети.Очень большие пакеты все равно могут превысить лимит газа транзакции или создать риски отказа в обслуживании.Приложениям следует устанавливать практические ограничения на размер пакетов, задаваемых пользователями.Разрешения операторов ERC-1155
В ERC-1155 используется разрешение оператора на всю коллекцию.Функция
Функция isApprovedForAll
Функция
Она возвращает
Расширения для точечных разрешений
Широкая модель разрешений операторов может не подойти держателю, который хочет разрешить операции только с одним ID токена или ограниченным количеством.Предлагаемое расширение разрешений ERC-5216 определяет более точные разрешения по ID токена и количеству.
Это расширение не входит в базовый стандарт ERC-1155, поэтому нельзя предполагать, что оно присутствует в каждом контракте.Кошелькам следует четко пояснять, предоставляет ли транзакция полномочия на всю коллекцию или ограниченное разрешение.Callback-функции получателя ERC-1155
Смарт-контракт, получающий токены ERC-1155 через стандартный безопасный перевод, должен реализовать соответствующую callback-функцию получателя.Callback-функция для одиночного перевода —
Callback-функция для пакетного перевода —
Идентификаторы интерфейса и возвращаемые значения получателя
ID интерфейса получателя ERC-1155 —
Ожидаемое возвращаемое значение для
Ожидаемое возвращаемое значение для
Callback-функции получателя и повторный вход
Callback-функции получателя ERC-1155 выполняют код внешнего контракта до завершения исходной транзакции.Вредоносный получатель может повторно вызвать другую функцию, пока исходный перевод еще выполняется.Такое поведение создает возможность повторного входа.Согласно спецификации ERC-1155, изменения балансов и события переводов должны происходить до callback-вызова получателя.Приложения, взаимодействующие с токеном, все равно должны защищать собственную логику учета и авторизации.Разработчикам следует тестировать обе callback-функции с вредоносными контрактами-получателями, пытающимися выполнить повторный вход в ту же или другую функцию.В актуальной документации по реализации ERC-1155 также указано, что переводы на контракты могут создавать риск повторного входа.
События ERC-1155
Базовый стандарт определяет события
Событие TransferSingle
Событие
Событие TransferBatch
Событие
Событие ApprovalForAll
Событие
Обнаружение интерфейсов ERC-165
ERC-1155 требует обнаружения интерфейсов ERC-165.ID основного интерфейса ERC-1155 —
Совместимый контракт должен возвращать
Стандарт ERC-165 предоставляет контрактам общий способ объявлять поддерживаемые интерфейсы.
Обнаружение интерфейсов помогает приложениям не вызывать неподдерживаемые функции.Положительный результат сам по себе не доказывает, что каждая функция реализована корректно или безопасно.Метаданные ERC-1155
ERC-1155 включает необязательное расширение URI метаданных.Это расширение добавляет функцию
ID интерфейса расширения —
Базовый стандарт не требует наличия отдельных ончейн-функций
Плейсхолдер {id} в метаданных
URI метаданных ERC-1155 может содержать плейсхолдер
Оно не должно включать префикс
Риски хранения метаданных
Метаданные ERC-1155 могут храниться на веб-сервере, в сети с адресацией по содержимому или непосредственно ончейн.Метаданные на сервере могут быть изменены или удалены.Хранение с адресацией по содержимому может повысить целостность данных, но сами данные должны оставаться доступными.Хранение ончейн снижает зависимость от внешнего хостинга, но может обходиться дороже при записи и обновлении.Изменяемый URI позволяет администратору менять названия, изображения, описания и атрибуты после приобретения токенов пользователями.Пользователям следует выяснить, кто управляет метаданными и можно ли подтвердить какие-либо гарантии их неизменности.Выпуск токенов ERC-1155
Выпуск создает новые единицы токена с определенным ID ERC-1155.Базовый стандарт не определяет публичную функцию выпуска и не устанавливает, кто может создавать токены.Реализация может ограничить выпуск администратором, смарт-контрактом, процессом управления или другой уполномоченной ролью.Одиночный выпуск генерирует событие
Пакетный выпуск генерирует событие
Сжигание токенов ERC-1155
Согласно правилам контракта, сжигание удаляет единицы токенов из обращения.Базовый стандарт не требует публичной функции сжигания.Контракт может разрешить сжигание токенов держателям, одобренным операторам, администраторам или логике протокола.При сжигании генерируется событие перевода, в котором получателем указан нулевой адрес.Сжигание всех текущих единиц токена с одним ID не обязательно запрещает повторный выпуск токенов с этим ID.Результат зависит от механизмов выпуска и контроля предложения, предусмотренных реализацией.Общее предложение и перечисление
Основной интерфейс ERC-1155 не включает функцию
В актуальной библиотеке контрактов ERC-1155 есть расширения для отслеживания предложения, сжигания, приостановки и хранения URI.
В ERC-1155 также нет основной функции, которая перечисляет все существующие ID токенов или всех держателей.Для формирования таких списков приложения обычно используют офчейн-индексацию событий.Роялти ERC-1155
Роялти создателям не входят в базовый стандарт ERC-1155.Необязательный стандарт роялти ERC-2981 позволяет контракту сообщать о получателе роялти и рекомендуемой сумме.
Размер роялти рассчитывается на основе указанной цены продажи.ERC-2981 передает сведения о роялти, но не обеспечивает автоматическую выплату при каждом переводе.Перевод может происходить без продажи, поэтому контракт токена не может считать каждое перемещение активов событием, требующим выплаты роялти.Пользователям следует выяснить, может ли администратор изменять настройки роялти.Стандартизированные ошибки ERC-1155
Исходная спецификация ERC-1155 не определяет пользовательские ошибки современного Solidity.Финальный стандарт ошибок ERC-6093 определяет распространенные названия ошибок для контрактов ERC-1155.
Эти ошибки охватывают недостаточный баланс, недействительного отправителя или получателя, отсутствие разрешения оператора, недействительного оператора и несовпадение длины массивов.Стандартизированные ошибки помогают кошелькам и разработчикам единообразнее объяснять причины неудачных транзакций.Существующие контракты ERC-1155 не обязаны использовать эти ошибки.ERC-1155 и ERC-20
ERC-20 обычно представляет один тип взаимозаменяемого токена в каждом контракте.ERC-1155 может представлять множество типов токенов в одном контракте.В ERC-20 используются числовые разрешения для расходования токенов, а базовый ERC-1155 применяет разрешение оператора на всю коллекцию.ERC-1155 включает пакетные переводы и обязательные callback-функции получателя для смарт-контрактов.В базовом стандарте ERC-20 этих функций нет.ERC-20 может быть проще, если проекту нужен только один взаимозаменяемый криптоактив.ERC-1155 и ERC-721
ERC-721 предназначен для индивидуально принадлежащих ID невзаимозаменяемых токенов.У одного действительного ID токена ERC-721 есть один владелец.ERC-1155 хранит количественный баланс для каждой комбинации аккаунта и ID токена.Это позволяет одному ID иметь множество взаимозаменяемых единиц, а другому ID в том же контракте — предложение в одну единицу.ERC-1155 также поддерживает стандартизированные пакетные переводы, тогда как ERC-721 обычно переводит по одному NFT за раз.Если каждый актив уникален, ERC-721 может обеспечить более простую модель.Распространенные варианты использования ERC-1155
Блокчейн-игры могут управлять валютами, материалами, оружием, персонажами и землей с помощью одного контракта ERC-1155.Системы мероприятий могут выпускать билеты разных категорий и в разных количествах, используя отдельные ID токенов.Проекты членства могут создавать несколько уровней доступа или пакетов преимуществ.Цифровые художники могут выпускать ограниченные серии с несколькими взаимозаменяемыми копиями каждой работы.Финансовые приложения могут использовать ID токенов для обозначения сроков погашения, требований, категорий позиций или групп риска.Системы вознаграждений могут распределять несколько типов баллов или предметов за достижения одной пакетной транзакцией.Стандарт сам по себе не подтверждает, что токен представляет юридически обеспеченное право или реальный актив.Риски разрешений ERC-1155
Фишинг с разрешениями операторов представляет серьезный риск для держателей ERC-1155.Вредоносный сайт может запросить вызов
Риски пакетных операций
Пакетные операции используют массивы, позиции которых должны оставаться согласованными.Несовпадение ID токенов и количеств должно приводить к сбою транзакции.Неверная индексация может привести к переводу неправильного количества актива.Очень большие массивы, задаваемые пользователями, могут потреблять чрезмерное количество газа или сделать функцию непригодной к использованию.Перед принятием пакета получающему контракту следует проверить каждый ID и количество.Разработчикам следует тестировать пустые массивы, повторяющиеся ID, несовпадающую длину, большие пакеты и неподдерживаемые ID активов.Риски предложения и подлинности
ID токена может казаться уникальным, если в данный момент существует только одна единица.При этом у уполномоченного аккаунта может оставаться возможность выпустить дополнительные единицы позднее.Другой контракт может скопировать название токена, ID, изображение или метаданные.Адрес контракта и сеть — важные составляющие идентичности токена ERC-1155.Пользователям следует проверить роли, связанные с выпуском, ограничения предложения, полномочия на обновление и управление метаданными.Совместимость с ERC-1155 не доказывает подлинность, дефицитность, наличие залогового обеспечения или инвестиционную ценность.Риски обновляемых контрактов
Контракт ERC-1155 может работать через обновляемый прокси.Уполномоченный администратор может иметь возможность менять выпуск, переводы, разрешения, метаданные, комиссии или другие функции.Обновления могут устранять уязвимости, но также способны добавлять вредоносную логику.Компрометация ключа обновления может подвергнуть риску каждый ID токена, которым управляет контракт.Пользователям следует проверить полномочия на обновление, временные задержки, средства мультиподписи и аварийные разрешения.Поддержка правильного интерфейса не доказывает, что контракт децентрализован или неизменяем.Как разработчикам реализовать ERC-1155
Если собственная логика балансов не нужна, разработчикам следует начать с активно поддерживаемой и проверенной реализации.Актуальное руководство по разработке ERC-1155 объясняет работу балансов мультитокенов, пакетных операций, проверок получателя и распространенных расширений.
Для функций выпуска токенов и администрирования следует использовать четкий контроль доступа.Ограничения предложения необходимо обеспечивать кодом контракта, а не только описывать в документации проекта.Реализации должны генерировать все обязательные события переводов и разрешений.Тесты должны охватывать одиночные и пакетные переводы, выпуск и сжигание токенов, разрешения операторов, недействительных получателей, несовпадение массивов и вредоносные callback-вызовы.Разработчикам также следует проверять правильность идентификаторов ERC-165 для каждого поддерживаемого расширения.Как пользователям оценить токен ERC-1155
Сначала проверьте сеть блокчейна, адрес контракта и ID токена.Затем выясните, должен ли токен быть взаимозаменяемым, невзаимозаменяемым или полу взаимозаменяемым.Далее проверьте текущее предложение, полномочия на выпуск и наличие ограничения предложения.После этого проверьте действующие разрешения операторов, связанные с кошельком.Затем выясните, как хранятся метаданные и могут ли они измениться.Далее определите полномочия администратора, возможность приостановки или заморозки операций, а также права на роялти и обновление.После этого изучите исходный код, аудиты и историю инцидентов, не считая их гарантиями.Затем выясните, какие полезные функции, право на погашение или юридические требования действительно предоставляет токен.Далее проверьте, предусматривают ли контракты-получатели надежный процесс вывода.Перед переводом ценных активов протестируйте незнакомый контракт с небольшой суммой.Пример пакетного перевода ERC-1155
Предположим, у Алисы есть 100 единиц токена с ID 1, пять единиц токена с ID 2 и одна единица токена с ID 3.Она хочет отправить Бобу десять единиц с ID 1, две единицы с ID 2 и одну единицу с ID 3.Кошелек Алисы вызывает
Контракт генерирует одно событие
Если Боб использует смарт-контракт, контракт токена вызывает
Распространенные ошибки при работе с ERC-1155
Распространенная ошибка — предполагать, что каждый ID токена ERC-1155 представляет NFT.Еще одна ошибка — считать, что у ID с одной текущей единицей навсегда ограничено максимальное предложение в одну единицу.Третья ошибка — выдавать разрешение оператору, не понимая, что оно распространяется на каждый ID токена в контракте.Четвертая ошибка — считать, что отключение кошелька отзывает ончейн-разрешение.Пятая ошибка — использовать доступность метаданных как доказательство выпуска токена.Шестая ошибка — предполагать, что каждый контракт предоставляет функцию общего предложения.Седьмая ошибка — обрабатывать пакетные массивы, не проверяя длину и соответствие элементов по позициям.Восьмая ошибка — игнорировать callback-функции получателя и риск повторного входа.Девятая ошибка — считать, что заявленные роялти исполняются автоматически.Десятая ошибка — принимать соответствие интерфейсу за доказательство подлинности, дефицитности или безопасности.FAQ
Что означает ERC-1155?
ERC-1155 — это мультитокеновый стандарт Ethereum для управления множеством взаимозаменяемых, невзаимозаменяемых и полу взаимозаменяемых типов токенов в одном контракте.Является ли ERC-1155 криптовалютой?
ERC-1155 — это технический стандарт, а реализующие его контракты могут создавать разные типы криптоактивов.Каков ID интерфейса ERC-1155?
ID основного интерфейса ERC-1155 —
Каков ID интерфейса получателя ERC-1155?
ID интерфейса получателя —
Можно ли создать взаимозаменяемые токены с помощью ERC-1155?
Да, один ID токена может представлять множество взаимозаменяемых единиц, распределенных между несколькими аккаунтами.Можно ли создать NFT с помощью ERC-1155?
Да, ID токена может функционировать как NFT, если контракт ограничивает его предложение одной единицей.Что такое полу взаимозаменяемый токен?
Это токен, единицы которого взаимозаменяемы в одном контексте, но позднее приобретают другое значение, статус или полезную функцию.Может ли один контракт ERC-1155 содержать множество активов?
Да, один контракт может управлять множеством ID токенов с разным предложением, метаданными и назначением.Что возвращает balanceOf?
Функция возвращает количество токенов одного указанного ID на аккаунте.Что делает balanceOfBatch?
Функция возвращает балансы для нескольких пар «аккаунт — ID токена» за один вызов.Что такое safeBatchTransferFrom?
Функция переводит несколько ID токенов и соответствующие количества за одну транзакцию и проверяет получателя, если им является смарт-контракт.Что делает setApprovalForAll?
Функция разрешает оператору управлять каждым ID токена, принадлежащим вызывающей стороне в одном контракте ERC-1155.Может ли пользователь одобрить только один ID токена?
Базовая функция разрешений ERC-1155 этого не позволяет, но необязательные расширения могут предоставлять более ограниченные разрешения.Истекает ли разрешение ERC-1155 автоматически?
Нет, стандартное разрешение оператора остается активным, пока владелец не отзовет его или пользовательская логика не изменит его действие.Требует ли ERC-1155 проверки получателя?
Да, стандартные безопасные переводы на смарт-контракты должны соответствовать правилам callback-функции получателя для одиночного или пакетного перевода.Может ли получающий контракт отклонить токены ERC-1155?
Да, он может отменить выполнение или вернуть неверное значение принятия, из-за чего перевод завершится ошибкой.Поддерживает ли ERC-1155 метаданные?
Да, стандарт включает необязательное расширение URI метаданных с ID интерфейса
Есть ли у каждого токена ERC-1155 название и символ?
Нет, базовый стандарт не требует отдельных ончейн-функций названия или символа для каждого ID токена.Определяет ли ERC-1155 количество десятичных знаков?
Нет, при необходимости информацию о номинале нужно получить из метаданных или логики конкретного проекта.Включает ли ERC-1155 функцию totalSupply?
Нет, для определения общего предложения требуется индексировать события или использовать необязательное расширение отслеживания предложения.Могут ли изменяться метаданные ERC-1155?
Да, метаданные могут измениться, если контракт или внешняя система хранения допускают обновления.Обеспечивает ли ERC-1155 выплату роялти?
Нет, для информации о роялти требуется отдельный стандарт, а базовые функции перевода не обеспечивают автоматическую выплату.Позволяют ли пакетные переводы ERC-1155 экономить газ?
Да, объединение нескольких переводов токенов в одной транзакции может сократить повторные транзакционные издержки.Могут ли callback-функции ERC-1155 привести к повторному входу?
Да, callback-функции получателя выполняют внешний код и могут вызывать другие функции контракта до завершения исходной транзакции.Гарантирует ли соответствие ERC-1155 безопасность токена?
Нет, совместимый контракт все еще может содержать небезопасный код, чрезмерные разрешения, изменяемые метаданные, слабые ограничения предложения или мошеннические заявления.Заключение
ERC-1155 — это стандарт Ethereum для управления множеством типов токенов с помощью одного смарт-контракта.Каждый ID токена может представлять взаимозаменяемый актив, уникальный NFT, полу взаимозаменяемый предмет или другой криптоактив с количественным балансом.Стандарт определяет запросы балансов, одиночные и пакетные переводы, разрешения операторов на всю коллекцию, callback-функции получателя, события, правила работы с метаданными и обнаружение интерфейсов.Пакетные операции могут уменьшить транзакционные издержки, если требуется одновременно запросить или перевести несколько активов.Обязательные callback-функции получателя снижают риск случайных переводов несовместимым контрактам, но создают риски внешних вызовов и повторного входа.Базовый стандарт не определяет публичный выпуск и сжигание токенов, общее предложение, количество десятичных знаков, роялти, постоянные метаданные или индивидуальные разрешения для токенов.Эти свойства зависят от необязательных расширений и реализации конкретного контракта.Пользователям следует проверять сеть, адрес контракта, ID токена, механизмы контроля предложения, разрешения операторов, систему метаданных и полномочия администратора.Разработчикам следует использовать поддерживаемые реализации, генерировать все обязательные события, защищать callback-функции получателя, ограничивать сложность пакетных операций и тестировать все варианты авторизации.ERC-1155 предоставляет гибкую инфраструктуру мультитокенов, однако техническая совместимость не гарантирует подлинность, дефицитность, финансовую ценность или безопасность смарт-контракта.Вам также может быть интересно
ZK-Rollup
ZK-Rollup-as-a-Service
zk-SNARK
В тренде
Трендовые криптовалюты, которые в настоящее время привлекают значительное внимание рынка
ТОП по объему
Криптовалюты с наибольшим объемом торгов
Недавно добавленные
Криптовалюты недавно внесенные в листинг и доступные для торговли

