ERC-1155
ERC-1155 — это стандарт смарт-контрактов для блокчейна Ethereum, предназначенный для создания и управления несколькими типами токенов (взаимозаменяемых, невзаимозаменяемых и полувзаимозаменяемых) в рамках одного контракта. Разработанный в 2018 году Энтони Ди Иорио (Enjin), стандарт был принят как окончательный (Ethereum Improvement Proposal 1155, EIP-1155) в июне 2019 года. ERC-1155 является альтернативой более ранним стандартам ERC-20 (для взаимозаменяемых токенов) и ERC-721 (для невзаимозаменяемых токенов, NFT), предлагая повышенную эффективность и снижение затрат на газ.
История
Стандарт ERC-1155 был предложен в 2018 году командой Enjin, платформы для создания игровых экосистем на блокчейне. Основной проблемой, которую решал новый стандарт, была неэффективность существующих решений: для каждого типа токена (например, игровой валюты, оружия, персонажа) требовался отдельный смарт-контракт, что приводило к высоким затратам на газ (комиссии за транзакции) и усложняло управление. В 2019 году EIP-1155 был включён в состав Ethereum, и стандарт получил широкое распространение в игровой индустрии, проектах NFT и децентрализованных финансах (DeFi). К середине 2020-х годов ERC-1155 стал одним из наиболее используемых стандартов на Ethereum, наряду с ERC-20 и ERC-721.
Ключевые особенности
Мультитокенность
Основное отличие ERC-1155 от предшественников — возможность создавать и управлять неограниченным количеством различных типов токенов в одном смарт-контракте. Каждый тип токена идентифицируется уникальным идентификатором (ID). Например, в одной игре контракт ERC-1155 может содержать токены золота (взаимозаменяемые, ID 1), меча (невзаимозаменяемый, ID 2) и зелья (полувзаимозаменяемое, ID 3).
Гибридная природа токенов
Стандарт поддерживает три основных типа токенов:
- Взаимозаменяемые (fungible): все токены одного ID равнозначны (например, игровая валюта).
- Невзаимозаменяемые (non-fungible): каждый токен уникален (например, цифровое произведение искусства).
- Полувзаимозаменяемые (semi-fungible): токены одного ID могут быть взаимозаменяемыми в определённых условиях, но при этом иметь ограниченную эмиссию или временные характеристики (например, билеты на мероприятие).
Пакетные операции
ERC-1155 позволяет выполнять несколько операций с разными типами токенов в одной транзакции. Это включает:
- Пакетную передачу (batch transfer) нескольких токенов разным получателям.
- Пакетную проверку балансов (batch balance) для нескольких адресов и ID.
- Пакетное одобрение (batch approval) для третьих лиц.
Это существенно снижает затраты на газ по сравнению с выполнением аналогичных операций через ERC-20 или ERC-721.
Безопасность и предотвращение повторных атак
Стандарт включает механизмы защиты от повторных атак (reentrancy attacks) и использует функцию safeTransferFrom, которая проверяет, способен ли получатель обрабатывать токены (например, является ли он смарт-контрактом, поддерживающим ERC-1155). Это предотвращает потерю токенов при отправке на неподдерживающие адреса.
Метаданные
Каждый тип токена может иметь метаданные (например, имя, изображение, описание), которые хранятся в децентрализованных системах (IPFS) или централизованных серверах. Стандарт определяет функцию uri, которая возвращает ссылку на метаданные для заданного ID.
Устройство и реализация
Интерфейс
Стандарт ERC-1155 определяет минимальный набор функций, которые должен реализовать смарт-контракт:
balanceOf(account, id)— возвращает количество токенов указанного ID у заданного адреса.balanceOfBatch(accounts, ids)— возвращает балансы для нескольких адресов и ID.setApprovalForAll(operator, approved)— разрешает или запрещает третьему лицу управлять всеми токенами отправителя.isApprovedForAll(account, operator)— проверяет, разрешено ли управление.safeTransferFrom(from, to, id, amount, data)— передаёт указанное количество токенов одного ID.safeBatchTransferFrom(from, to, ids, amounts, data)— передаёт несколько токенов разных ID.
События
Стандарт генерирует события (events) для отслеживания изменений:
TransferSingle— при передаче одного типа токена.TransferBatch— при пакетной передаче.ApprovalForAll— при изменении разрешений.
Расширения
Существуют расширения ERC-1155, такие как:
- ERC-1155Supply: добавляет функцию
totalSupply(id)для отслеживания общего количества токенов каждого типа. - ERC-1155URIStorage: позволяет хранить метаданные на блокчейне для экономии газа.
- ERC-1155Burnable: добавляет возможность сжигать (уничтожать) токены.
Применение
Игровая индустрия
ERC-1155 стал стандартом для блокчейн-игр, таких как The Sandbox и Gods Unchained. Он позволяет создавать игровые предметы (оружие, персонажи, валюта) в одном контракте, что упрощает разработку и снижает затраты. Например, в игре Enjin используется единый контракт для управления всеми игровыми активами.
Цифровое искусство и NFT
Хотя ERC-721 остаётся популярным для уникальных произведений, ERC-1155 используется для коллекций, где требуется выпуск нескольких копий одного NFT (например, ограниченные серии). Платформы вроде OpenSea поддерживают ERC-1155.
Децентрализованные финансы (DeFi)
В DeFi ERC-1155 применяется для создания синтетических активов, токенов ликвидности и мультивалютных пулов. Например, протокол Balancer использует ERC-1155 для управления несколькими токенами в одном контракте.
Билеты и доступ
Полувзаимозаменяемые токены ERC-1155 используются для цифровых билетов на мероприятия, где каждый билет имеет уникальный ID, но все они относятся к одному типу (например, «входной билет»).
Преимущества и недостатки
Преимущества
- Экономия газа: пакетные операции снижают затраты на транзакции.
- Универсальность: один контракт может управлять любыми типами токенов.
- Упрощение разработки: меньше кода и меньше контрактов для аудита.
- Совместимость: стандарт поддерживается большинством кошельков и бирж.
Недостатки
- Сложность: реализация требует большего понимания смарт-контрактов по сравнению с ERC-20.
- Ограниченная поддержка: некоторые старые кошельки и биржи не поддерживают ERC-1155.
- Риски безопасности: ошибки в реализации пакетных операций могут привести к потере средств.
Интересные факты
- Стандарт ERC-1155 был вдохновлён идеей «мультитокенов» из игровой экономики, где один предмет может быть как валютой, так и уникальным артефактом.
- Первым крупным проектом, внедрившим ERC-1155, стала платформа Enjin, которая в 2019 году запустила игровую экосистему на основе этого стандарта.
- В 2021 году стандарт был использован для создания токенов в рамках метавселенных, таких как Decentraland.
Критика
Основная критика ERC-1155 связана с его сложностью и потенциальными уязвимостями. В 2020 году были обнаружены ошибки в некоторых реализациях, которые позволяли злоумышленникам обнулять балансы пользователей. Кроме того, стандарт не полностью решает проблему масштабирования Ethereum, так как высокая загрузка сети всё равно приводит к росту комиссий.
Источники
- Ethereum Improvement Proposal 1155 (EIP-1155), официальная спецификация.
- Документация Enjin по стандарту ERC-1155.
- Статья «ERC-1155: The Multi-Token Standard» на Ethereum.org.
- Анализ безопасности смарт-контрактов ERC-1155, отчёт OpenZeppelin.
- Публикации о применении ERC-1155 в игровой индустрии и DeFi.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →