Хабрахабр

[Из песочницы] Разбираемся с форматами токенов на Ethereum

Со временем блокчейн всё сильнее проникает в нашу жизнь, и появляется необходимость понимать основные его технологии, в том числе работу децентрализованных приложений (dApps). Большинство dApps в данный момент создано на Ethereum, возможности которого гораздо более гибкие, чем выпуск привычных ERC20 токенов.

Зачем нужны стандарты

Внутри смарт-контракта (что это?) можно прописать уникальную механику токена. Он будет работать, но другие разработчики (и смарт-контракты) не смогут обращаться к нему с помощью универсальной логики.

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

На помощь приходят стандарты. Зная способы взаимодействия с ними, создатели других dApps заложили в код всё необходимое для работы с токеном на опредёленном стандарте.

Как появляются стандарты

Ethereum является open-source проектом (кстати, ERC — это Ethereum Request for Comments), поэтому логично, что новый стандарт токена может предложить любой пользователь. Если стандарт решает какую-то важную проблему, то он может стать официальным стандартом Ethereum (то есть попасть в этот список).

Взаимозаменяемые и не взаимозаменяемые токены

Отправной точкой для классификации стандартов токенов является их взаимозаменяемость или её отсутствие. Fungible (взаимозаменяемые) токены равны друг другу, их можно использовать в качестве валюты. Semi-fungible (на половину взамозаменяемые) токены почти неотличимы друг от друга, но всё-таки уникальны (пример: билеты в кинотеатре, стоимость может быть одна, но место у каждого точно уникальное). Non-fungible (не взаимозаменяемые) токены полностью уникальны, токенизированный объект в единственном экземпляре (пример: объекты авторского права).
image
Eсли не узнаёте котёнка, то это одна из первых игр на Ethereum (и стандарте ERC-721), CryptoKitties.

ERC-20

Самым известным стандартом взаимозаменяемых токенов является ERC20, который предложил автор идеи Ethereum Виталик Бутерин ещё в 2015. Этот токен широко используется для проведения разных типов initial offering (первое предложение). Я избегаю терминов ICO и IEO, потому что теперь это далеко не единственные способы провести публичное размещение токенов (но статья не об этом).

Специфика: взаимозаменяемый стандарт, есть тикер для бирж, делимый (количество знаков после запятой определяет создать смарт-контракта), обязательно имеет total supply (количество токенов, больше которого выпустить нельзя).

Про ERC-20 написано уже много (хабр), перехожу к другим стандартам.

ERC-721

Данный стандарт широко применяется для создания уникальных токенов. Земля в Decentraland, Binance Collectibles, вот примеры ERC-721.

ERC-721 был предложен как EIP (предложение по улучшению Ethereum) Дитером Ширли в 2017, стал официальным в 2018.

Специфика: не взаимозаменяемый стандарт, нет тикера, неделимый, обязательно существует только в единственном экземпляре.

ERC-721, как и ERC-20 широко распространен, поэтому не буду останавливаться на нём.

ERC-777

Этот формат является «усовершенствованием» привычного ERC-20. Он обратно совместим с ERC-20, но имеет несколько преимуществ:

  • при обмене токенов использует одну транзакцию вместо двух в ERC-20;
  • автоматически отменяет транзакции на несовместимые контракты;
  • возможность помечать неблагонадёжные адреса;
  • возможность назначать операторов (адреса, имеющие право отправлять токены с другого адреса);
  • ускоренное проведение транзакций.

ERC-223

Также является «усовершенствованием» ERC-20, предотвращая отправку транзакций на случайные контракты. Если смарт-контракт не имеет функций, предусматривающих работу с токенами, то они возвращаются отправителю.

картинка: mywishplatform

ERC-1155

Идею этого стандарта предложили разработчики проекта Enjin в 2018. Enjin — проект, стремящийся к упрощению создания игр на Ethereum. Поэтому предложенный ими стандарт стоит сначала рассмотреть как игровой, хотя его применение этим не ограничивается.

Специфика:

  • позволяет выпускать несколько токенов в одном контракте;
  • токены в одном контракте могут быть fungible и non-fungible одновременно;
  • поддерживает атомарные свопы;
  • поддерживает «batch» транзакции;
  • не для всех транзакций нужно ждать окончания блока.

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

Атомарные свопы

Одной из причин непринятия повсеместно блокчейна является невозможность быстро и эффективно (в плане комиссий) обменивать одни токены на другие (а количество различных токенов все время увеличивается). Решение проблемы уже создано — это атомарные свопы. Обычно под Atomic swaps понимают технологию децентрализованного обмена между криптовалютами разных самостоятельных блокчейнов (об этом неплохо написано на BitcoinWiki). Но также стоит рассматривать атомарные свопы и в контексте обмена токенов внутри смарт-контракта.

Картинка из блога Enjin иллюстрирует своп множественных токенов на стандарте ERC-1155.
Фото из блога Enjin

А batch transactions хоть и не экономят время, зато экономят газ (что это?), записывая в сеть несколько транзакций, как одну.
Фото из блога Enjin

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

ERC-865

Стандарт, аналогичный ERC-20, но использует для комиссий не газ, а сами токены. Из-за сложной системы оплаты комиссии газом (цена газа выбирается самостоятельно), а иногда и непредсказуемости размера комиссии, такое улучшение может быть очень полезно для принятия токенов на Ethereum.

Ссылки

Я рассмотрел далеко не все стандарты, но если говорить о всех ERC, то они по большей части похожи друг на друга, и предлагают или решение проблем ERC-20, или применение в какой-то отдельной нише. Если хотите подробно вчитаться в код: Github EIPs, Github OpenZeppelin. Ethereum.org.

Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»