Купить крипто
Рынки
Спот
ФьючерсыBTC
Сбережения
Центр событий
Хаб наград
Еще
Фестиваль с 0 комиссией
ERC-1155: Что такое ERC-1155?ERC-1155 — это стандарт токенов Ethereum, который позволяет управлять множеством различных типов токенов с помощью одного смарт-контракта.Один контракт ERC-1155 может содержать взаиERC-1155: Что такое ERC-1155?ERC-1155 — это стандарт токенов Ethereum, который позволяет управлять множеством различных типов токенов с помощью одного смарт-контракта.Один контракт ERC-1155 может содержать взаи

ERC-1155

2026/10/13 16:21
#Intermediate
Humanity
H$0.05588-0.62%
PX
PX$0.0129+0.78%
AINFT
NFT$0.0000002379-0.66%
SPACE ID
ID$0.03591-1.88%
TokenFi
TOKEN$0.001996-0.05%

Что такое 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
,
setApprovalForAll
и
isApprovedForAll
.

ERC-1155 также требует поддержки обнаружения интерфейсов ERC-165.

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

Контракты могут добавлять эти функции с помощью необязательных расширений или пользовательской логики.

Функция balanceOf

Функция

balanceOf
возвращает количество токенов одного ID, принадлежащих одному аккаунту.

Для ее вызова нужны адрес аккаунта и ID токена.

Это отличается от ERC-20, поскольку один контракт ERC-20 обычно представляет только один тип токена.

Это также отличается от ERC-721: баланс ERC-721 показывает количество уникальных NFT из коллекции, принадлежащих адресу.

Баланс ERC-1155 для одного ID может равняться нулю, единице или большему целому числу.

Согласно стандарту, запрос баланса нулевого адреса должен завершаться ошибкой.

Функция balanceOfBatch

Функция

balanceOfBatch
получает несколько балансов за один вызов.

Вызывающая сторона передает массив адресов аккаунтов и массив ID токенов.

Каждому аккаунту соответствует ID токена на той же позиции в массиве.

Длины массивов должны совпадать.

Функция может запрашивать несколько ID токенов для одного аккаунта или один ID для нескольких аккаунтов.

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

Функция safeTransferFrom

Функция

safeTransferFrom
переводит определенное количество токенов одного ID с одного адреса на другой.

Вызывающая сторона должна быть держателем токена или одобренным им оператором.

У отправителя должно быть достаточно единиц выбранного ID.

Получателем не может быть нулевой адрес.

Функция также принимает поле bytes, которое может содержать данные приложения.

Успешный одиночный перевод генерирует событие

TransferSingle
.

Если получателем является смарт-контракт, он должен пройти предусмотренную проверку принятия токенов ERC-1155.

Функция safeBatchTransferFrom

Функция

safeBatchTransferFrom
переводит несколько ID токенов и соответствующие им количества в одной транзакции.

Вызывающая сторона передает массив ID токенов и соответствующий ему массив количеств для перевода.

Каждое количество применяется к ID на той же позиции в массиве.

Длины массивов должны совпадать.

У отправителя должно быть достаточно единиц каждого токена, включенного в пакет.

Если один из обязательных переводов не удается выполнить, вся транзакция обычно отменяется.

Успешная операция генерирует одно событие

TransferBatch
.

Преимущества пакетных переводов

Пакетные переводы могут снизить расходы на транзакции, когда требуется одновременно переместить несколько связанных активов.

Игрок может за одну транзакцию перевести валюту, материалы, снаряжение и коллекционные предметы.

Контракт вознаграждений может за одну операцию распределить получателю несколько типов токенов.

Пакетная обработка также может упростить атомарные обмены: либо перемещается вся группа активов, либо транзакция завершается ошибкой.

Объем экономии газа зависит от количества ID, изменений хранилища, логики получателя и состояния сети.

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

Приложениям следует устанавливать практические ограничения на размер пакетов, задаваемых пользователями.

Разрешения операторов ERC-1155

В ERC-1155 используется разрешение оператора на всю коллекцию.

Функция

setApprovalForAll
позволяет держателю токена выдать или отозвать разрешение оператора.

Одобренный оператор может переводить все ID токенов ERC-1155, принадлежащих держателю в рамках этого контракта.

Разрешение может распространяться и на токены, которые держатель позднее получит из того же контракта.

Базовый стандарт не позволяет пользователю одобрить только один ID или ограниченное количество токенов.

Такое широкое разрешение может упростить использование, но создает существенный риск безопасности.

Пока разрешение действует, вредоносный оператор может вывести все затронутые токены.

Функция isApprovedForAll

Функция

isApprovedForAll
показывает, есть ли у оператора полномочия в отношении балансов ERC-1155 владельца.

Она возвращает

true
или
false
.

Разрешение действует только в контракте, где оно было выдано.

Оно автоматически не распространяется на активы другого контракта ERC-1155 или токены, использующие другой стандарт.

Пользователям следует регулярно проверять разрешения операторов и отзывать те, которые больше не нужны.

Отключение кошелька от сайта не удаляет разрешение, записанное в блокчейне.

Расширения для точечных разрешений

Широкая модель разрешений операторов может не подойти держателю, который хочет разрешить операции только с одним ID токена или ограниченным количеством.

Предлагаемое расширение разрешений ERC-5216 определяет более точные разрешения по ID токена и количеству.

Это расширение не входит в базовый стандарт ERC-1155, поэтому нельзя предполагать, что оно присутствует в каждом контракте.

Кошелькам следует четко пояснять, предоставляет ли транзакция полномочия на всю коллекцию или ограниченное разрешение.

Callback-функции получателя ERC-1155

Смарт-контракт, получающий токены ERC-1155 через стандартный безопасный перевод, должен реализовать соответствующую callback-функцию получателя.

Callback-функция для одиночного перевода —

onERC1155Received
.

Callback-функция для пакетного перевода —

onERC1155BatchReceived
.

Получатель может проверить оператора, прежнего держателя, ID токенов, количества и приложенные данные.

Чтобы принять токены, он возвращает требуемое значение.

Если он вернет неправильное значение или отменит выполнение, весь перевод токенов будет отменен.

Такая архитектура снижает риск случайного перевода токенов смарт-контрактам, которые не могут обрабатывать активы ERC-1155.

Идентификаторы интерфейса и возвращаемые значения получателя

ID интерфейса получателя ERC-1155 —

0x4e2312e0
.

Ожидаемое возвращаемое значение для

onERC1155Received
—
0xf23a6e61
.

Ожидаемое возвращаемое значение для

onERC1155BatchReceived
—
0xbc197c81
.

Получающему контракту следует проверять, какой контракт ERC-1155 вызвал callback-функцию.

Если принимать данные callback-функции, не проверяя вызывающую сторону, вредоносный контракт может создавать ложные записи о депозитах.

Успешное прохождение проверки получателя не гарантирует, что в будущем из контракта можно будет безопасно вывести активы.

Callback-функции получателя и повторный вход

Callback-функции получателя ERC-1155 выполняют код внешнего контракта до завершения исходной транзакции.

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

Такое поведение создает возможность повторного входа.

Согласно спецификации ERC-1155, изменения балансов и события переводов должны происходить до callback-вызова получателя.

Приложения, взаимодействующие с токеном, все равно должны защищать собственную логику учета и авторизации.

Разработчикам следует тестировать обе callback-функции с вредоносными контрактами-получателями, пытающимися выполнить повторный вход в ту же или другую функцию.

В актуальной документации по реализации ERC-1155 также указано, что переводы на контракты могут создавать риск повторного входа.

События ERC-1155

Базовый стандарт определяет события

TransferSingle
,
TransferBatch
,
ApprovalForAll
и
URI
.

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

Стандарт ERC-1155 разработан таким образом, чтобы историю предложения и балансов можно было восстановить по корректно сгенерированным событиям переводов.

Каждое событие следует рассматривать вместе с адресом контракта, который его сгенерировал.

Вредоносный контракт может генерировать события с привычными названиями, не представляя подлинный проект.

Событие TransferSingle

Событие

TransferSingle
записывает оператора, отправителя, получателя, ID токена и количество.

При обычном переводе адреса отправителя и получателя не равны нулю.

При выпуске токена в качестве отправителя используется нулевой адрес.

При сжигании токена нулевой адрес используется в качестве получателя.

Согласно стандарту, переводы с нулевым значением также должны генерировать соответствующее событие.

Событие TransferBatch

Событие

TransferBatch
записывает несколько ID токенов и соответствующие количества, переведенные за одну операцию.

ID и значения находятся на соответствующих позициях массивов.

В событии также указаны оператор, отправитель и получатель.

При пакетном выпуске токенов в качестве отправителя используется нулевой адрес.

При пакетном сжигании токенов нулевой адрес используется в качестве получателя.

Для точного расчета балансов и предложения индексаторам необходимо обработать каждый элемент массивов событий.

Событие ApprovalForAll

Событие

ApprovalForAll
записывает, выдал ли владелец разрешение оператору или отключил его.

Оно содержит данные о владельце, операторе и статусе разрешения.

Само событие не переводит токены.

Оно меняет возможность оператора инициировать будущие переводы от имени владельца.

Отзыв разрешения не отменяет переводы, выполненные, пока оно действовало.

Обнаружение интерфейсов ERC-165

ERC-1155 требует обнаружения интерфейсов ERC-165.

ID основного интерфейса ERC-1155 —

0xd9b67a26
.

Совместимый контракт должен возвращать

true
, если функция
supportsInterface
вызывается с этим идентификатором.

Стандарт ERC-165 предоставляет контрактам общий способ объявлять поддерживаемые интерфейсы.

Обнаружение интерфейсов помогает приложениям не вызывать неподдерживаемые функции.

Положительный результат сам по себе не доказывает, что каждая функция реализована корректно или безопасно.

Метаданные ERC-1155

ERC-1155 включает необязательное расширение URI метаданных.

Это расширение добавляет функцию

uri
, возвращающую расположение метаданных для ID токена.

ID интерфейса расширения —

0x0e89341c
.

URI обычно указывает на документ JSON с названием, описанием, изображением, атрибутами и другой информацией о токене.

Базовый стандарт не требует наличия отдельных ончейн-функций

name
,
symbol
или
decimals
для каждого ID токена.

Проекты могут добавлять эти поля через метаданные или пользовательские интерфейсы.

Плейсхолдер {id} в метаданных

URI метаданных ERC-1155 может содержать плейсхолдер

{id}
.

Приложения заменяют его запрошенным ID токена в нижнем регистре шестнадцатеричного формата.

Отформатированное значение должно содержать 64 шестнадцатеричных символа, включая ведущие нули.

Оно не должно включать префикс

0x
.

Этот метод позволяет одному базовому URI указывать на метаданные множества ID токенов.

Если приложение выполнит подстановку неправильно, оно может получить метаданные не того актива.

Риски хранения метаданных

Метаданные ERC-1155 могут храниться на веб-сервере, в сети с адресацией по содержимому или непосредственно ончейн.

Метаданные на сервере могут быть изменены или удалены.

Хранение с адресацией по содержимому может повысить целостность данных, но сами данные должны оставаться доступными.

Хранение ончейн снижает зависимость от внешнего хостинга, но может обходиться дороже при записи и обновлении.

Изменяемый URI позволяет администратору менять названия, изображения, описания и атрибуты после приобретения токенов пользователями.

Пользователям следует выяснить, кто управляет метаданными и можно ли подтвердить какие-либо гарантии их неизменности.

Выпуск токенов ERC-1155

Выпуск создает новые единицы токена с определенным ID ERC-1155.

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

Реализация может ограничить выпуск администратором, смарт-контрактом, процессом управления или другой уполномоченной ролью.

Одиночный выпуск генерирует событие

TransferSingle
с нулевым адресом отправителя.

Пакетный выпуск генерирует событие

TransferBatch
с нулевым адресом отправителя.

При выпуске токенов на смарт-контракт обычно вызывается соответствующая callback-функция получателя.

Пользователям следует проверить полномочия на выпуск, прежде чем полагаться на заявления об ограниченном предложении или дефицитности.

Сжигание токенов ERC-1155

Согласно правилам контракта, сжигание удаляет единицы токенов из обращения.

Базовый стандарт не требует публичной функции сжигания.

Контракт может разрешить сжигание токенов держателям, одобренным операторам, администраторам или логике протокола.

При сжигании генерируется событие перевода, в котором получателем указан нулевой адрес.

Сжигание всех текущих единиц токена с одним ID не обязательно запрещает повторный выпуск токенов с этим ID.

Результат зависит от механизмов выпуска и контроля предложения, предусмотренных реализацией.

Общее предложение и перечисление

Основной интерфейс ERC-1155 не включает функцию

totalSupply
.

Предложение можно восстановить по событиям выпуска и сжигания, если контракт правильно соблюдает требования к событиям.

В реализацию можно добавить необязательное расширение отслеживания предложения, которое сообщает об общем предложении для каждого ID.

В актуальной библиотеке контрактов 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.

Вредоносный сайт может запросить вызов

setApprovalForAll
, выдавая транзакцию за проверку, подключение аккаунта или доступ к вознаграждению.

После одобрения оператор может перевести все токены 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.

Кошелек Алисы вызывает

safeBatchTransferFrom
с массивами из трех ID и соответствующих им количеств.

Контракт проверяет балансы Алисы и подтверждает полномочия вызывающей стороны.

Он уменьшает балансы Алисы и увеличивает балансы Боба для каждого ID.

Контракт генерирует одно событие

TransferBatch
, описывающее перевод.

Если Боб использует смарт-контракт, контракт токена вызывает

onERC1155BatchReceived
.

Если получатель вернет правильное значение, транзакция будет завершена.

Если проверка баланса, разрешений, массивов или получателя не пройдена, вся транзакция будет отменена.

Распространенные ошибки при работе с 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 —

0xd9b67a26
.

Каков ID интерфейса получателя ERC-1155?

ID интерфейса получателя —

0x4e2312e0
.

Можно ли создать взаимозаменяемые токены с помощью 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 интерфейса

0x0e89341c
.

Есть ли у каждого токена 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 предоставляет гибкую инфраструктуру мультитокенов, однако техническая совместимость не гарантирует подлинность, дефицитность, финансовую ценность или безопасность смарт-контракта.
Откат или возможность?
Откат или возможность?Откат или возможность?
Почему BTC ETF привлекли 2,4 млрд $ при ликвидациях

В тренде

Трендовые криптовалюты, которые в настоящее время привлекают значительное внимание рынка

Недавно добавленные

Криптовалюты недавно внесенные в листинг и доступные для торговли