Открыть сервис

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 →