[Solidity, Децентрализованные сети, Криптовалюты] Разбираемся с форматами токенов на Ethereum

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
26-Июл-2020 00:31

Со временем блокчейн всё сильнее проникает в нашу жизнь, и появляется необходимость понимать основные его технологии, в том числе работу децентрализованных приложений (dApps). Большинство dApps в данный момент создано на Ethereum, возможности которого гораздо более гибкие, чем выпуск привычных ERC20 токенов.
Зачем нужны стандарты
Внутри смарт-контракта (что это?) можно прописать уникальную механику токена. Он будет работать, но другие разработчики (и смарт-контракты) не смогут обращаться к нему с помощью универсальной логики.
Пример: вы создали токен для игрового предмета (децентрализованный гейминг сейчас активно развивается) и хотите, чтобы он мог торговаться на маркетплейсах для игровых предметов (каком-нибудь таком). Но маркетплейсы не знают, как обращаться к функциям внутри вашего контракта, им нужен отдельный смарт-контракт, чтобы поддерживать ваш токен.
На помощь приходят стандарты. Зная способы взаимодействия с ними, создатели других dApps заложили в код всё необходимое для работы с токеном на опредёленном стандарте.
Как появляются стандарты
Ethereum является open-source проектом (кстати, ERC — это Ethereum Request for Comments), поэтому логично, что новый стандарт токена может предложить любой пользователь. Если стандарт решает какую-то важную проблему, то он может стать официальным стандартом Ethereum (то есть попасть в этот список).
Взаимозаменяемые и не взаимозаменяемые токены
Отправной точкой для классификации стандартов токенов является их взаимозаменяемость или её отсутствие. Fungible (взаимозаменяемые) токены равны друг другу, их можно использовать в качестве валюты. Semi-fungible (на половину взамозаменяемые) токены почти неотличимы друг от друга, но всё-таки уникальны (пример: билеты в кинотеатре, стоимость может быть одна, но место у каждого точно уникальное). Non-fungible (не взаимозаменяемые) токены полностью уникальны, токенизированный объект в единственном экземпляре (пример: объекты авторского права).

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, предотвращая отправку транзакций на случайные контракты. Если смарт-контракт не имеет функций, предусматривающих работу с токенами, то они возвращаются отправителю.

ERC-1155
Идею этого стандарта предложили разработчики проекта Enjin в 2018. Enjin — проект, стремящийся к упрощению создания игр на Ethereum. Поэтому предложенный ими стандарт стоит сначала рассмотреть как игровой, хотя его применение этим не ограничивается.
Специфика:
  • позволяет выпускать несколько токенов в одном контракте;
  • токены в одном контракте могут быть fungible и non-fungible одновременно;
  • поддерживает атомарные свопы;
  • поддерживает «batch» транзакции;
  • не для всех транзакций нужно ждать окончания блока.

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

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

Стоит упомянуть, что хоть ERC-1155 получил большее распространение, он многое перенял от ERC875, появившегося несколькими месяцами ранее. ERC-875 предлагал тот же функционал, кроме поддержки fungible токенов.
ERC-865
Стандарт, аналогичный ERC-20, но использует для комиссий не газ, а сами токены. Из-за сложной системы оплаты комиссии газом (цена газа выбирается самостоятельно), а иногда и непредсказуемости размера комиссии, такое улучшение может быть очень полезно для принятия токенов на Ethereum.
Ссылки
Я рассмотрел далеко не все стандарты, но если говорить о всех ERC, то они по большей части похожи друг на друга, и предлагают или решение проблем ERC-20, или применение в какой-то отдельной нише. Если хотите подробно вчитаться в код: Github EIPs, Github OpenZeppelin. Ethereum.org.
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_solidity, #_detsentralizovannye_seti (Децентрализованные сети), #_kriptovaljuty (Криптовалюты), #_ethereum, #_blockchain, #_erc, #_atomic_swap, #_tokens, #_solidity, #_detsentralizovannye_seti (
Децентрализованные сети
)
, #_kriptovaljuty (
Криптовалюты
)
Профиль  ЛС 
Показать сообщения:     

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

Текущее время: 23-Ноя 00:14
Часовой пояс: UTC + 5