Вы здесь

Токены ERC-20, ERC-223, ERC-721 — чем отличаются эти стандарты?

Читая описание любого ICO, вы скорее всего наткнетесь на аббревиатуру “ERC-20”. Причём организаторы ICO зачастую упоминают “стандарт ERC-20” в качестве преимущества криптовалютного токена. Иногда можно увидеть и последовательность символов “ERC-223”. Значит ли это, что токен стандарта ERC-223 более чем в 10 раз лучше токена стандарта ERC-20? И что значит ERC? Давайте разбираться!

Токены ERC-20, ERC-223, ERC-721 — чем отличаются эти стандарты?

Криптовалютные токены

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

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

Например, чтобы Алиса перевела эфир Бобу, Алиса создаёт сообщение “Я Алиса, перевожу Бобу 1 эфир, который получила от Чарли”, подписывает его своим приватным ключом и отправляет в сеть. Участники сети проверяют подпись Алисы, проверяют, что полученный от Чарли эфир не был потрачен, и с помощью майнинга записывают транзакцию в блокчейн, подтверждая её.

Чтобы Алисе перевести Бобу, например, токен Golem, Алиса создаёт сообщение “Я Алиса, передаю сообщение смарт-контракту Golem. Golem, переведи с моего счёта один токен на счёт Боба”, подписывает его своим приватным ключом и отправляет в сеть. Это сообщение не является транзакцией, Алиса никому ничего пока не переводит, она “написала письмо” смарт-контракту. И после проверки подписи Алисы просыпается смарт-контракт Golem.

Golem — полноценная программа, хоть и работает на виртуальной машине. У неё своя база данных, где записано, сколько и кому принадлежит токенов, у неё свой алгоритм работы, который написали программисты Golema. В её алгоритме вполне может быть условие не передавать токены Бобу по пятницам или (что чаще используется) не переводить токены со счёта Алисы до наступления 2020-го (заморозка активов). Эти токены, по сути, не существуют в сети Ethereum. Для виртуальной машины, на которой работает смарт-контракт, количество токенов на счетах Алисы и Боба — всего лишь значения переменных одной из тысяч программ.

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

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

Почувствовав возможности, которые дают смарт-контракты, тысячи разработчиков стали разрабатывать свои программы для виртуальной машины эфириума, в том числе и новые “программы управления токенами”. Но из-за гибкости языка каждый писал “программы управления токенами” по-своему. У кого-то функция для получения баланса была “ballance(адрес_счёта)”, у кого-то “money(адрес_счёта)”, кто-то вообще возможность узнать баланс не реализовал. Смарт-контракты — полноценные программы, и код можно писать как угодно. Чем больше становилось токенов, тем яснее было осознание, что для токенов нужен стандарт. Таким стандартом стал ERC-20.

ERC-20

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

Чтобы “смарт-контракт управления токенами” соответствовал стандарту ERC-20, он должен:

  1. При вызове функции totalSupply(), то есть отправке такого сообщения смарт-контракту, сообщать общее количество выпущенных монет.
  2. На balanceOf(address _owner) сообщать количество токенов на адресе _owner (вместо _owner нужно указать адрес).
  3. При вызове transfer(address _to, uint256 _value) отправить с адреса вызывающего сумму _value на адрес _to.
  4. При вызове transferFrom(address _from, address _to, uint256 _value) отправить с адреса _from на адрес _to количество токенов _value. У вызывающего должно быть разрешение на перевод средств от владельца адреса _from, которое устанавливается следующей функцией.
  5. При вызове approve(address _spender, uint256 _value) передать право пользователю с адресом _spender переводить с адреса вызывающего функцию количество токенов _value. Используется для передачи права распоряжаться токенами.
  6. При вызове allowance(address _owner, address _spender) сообщать, сколько монет _owner разрешил переводить со своего счёта пользователю _spender.
  7. Включать в свой смарт-контракт переменные name (полное название токена), symbol (короткое название токена) и decimals (сколько знаков после запятой учитывается в количестве).
  8. Вызывать два события Transfer (при любом перемещении токенов) и Approval (при передачи права перевода чужих токенов).

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

Но стандарт нужен не для людей, а для машин, ведь токены ERC-20 очень легко подключать к биржам, кошелькам, обменникам и другим автоматизированным системам. Не нужно разбираться и объяснять скрипту биржи, как переводить токены со счёта на счёт для каждого нового токена — достаточно объяснить один раз, а потом будут использоваться те же самые методы.

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

ERC-223

Ещё до того как ERC-20 стал стандартом, появился ERC-223. Опять же, цифры здесь только порядковый номер. ERC-223 призван улучшить ERC-20 и стать его наследником. Какое-то время стандарты развивались параллельно и часть доработок от нового стандарта передалась “старшему брату”. На текущий момент различия всего два.

Во-первых, в ERC-20 существует возможность отправить токены на адрес смарт-контракта, а не пользователя. При этом отправленные токены зависают на адресе смарт-контракта, и с ними ничего уже нельзя сделать. Казалось бы, сами виноваты — не смотрят куда отправляют, но на текущий момент “зависло" токенов уже на миллионы долларов. ERC-223 решает эту проблему.

Во-вторых, в ERC-223 немного сокращен расход газа на запросы.

Стандарт ERC-223 обратно совместим с ERC-20 и является, если можно так выразиться, его расширением. Рано или поздно все токены перейдут на ERC-223.

ERC-721

Токен стандарта ERC-721 отличается он описанных выше.

ERC-20 и ERC-223 используются для создания “обезличенных” токенов, каждый из которых неотличим от другого, примерно как две новые банкноты или два доллара на счету в банке.

Каждый токен стандарта ERC-721 уникален, и может использоваться для коллекционирования или описания права собственности. Общаться со смарт-контрактом, управляющим токенами ERC-721, нужно по другому — не оперируя цифрами, а указывая 256-битный идентификатор каждого токена. Перемещать токены можно только по одному и, что логично, делить на части токены нельзя.

Стандарт используется в популярной игре CryptoKitties, где каждый токен соответствует котику уникальной внешности. Котиков можно покупать, размножать и продавать. Звучит не очень интересно, но некоторых котиков продавали за 100 000 долларов, а на пике популярности игры у сети Эфириума возникали сложности с проведением транзакций — сеть была перегружена.

Итог

Именно благодаря стандарту ERC-20 мы наблюдали взрывной рост рынка ICO в 2017-м году. Наличие стандарта позволяет выстраивать экосистему под этот стандарт, в которой создать новый токен и добавить его на биржи практически ничего не стоит. Учитывая, что токенов наплодили уже несколько тысяч, может возникнуть вопрос, а благо ли это. Тем не менее, появление токена не поддерживающего стандарты ERC-20 или ERC-223, сейчас маловероятно.

Стандарт ERC-721 пока используется исключительно в развлечениях, но стандарт очень молод — его время ещё придёт.

Категория: 
Биткоин для "чайников"
3
Ваша оценка: Нет Средняя: 2.3 (2 оценок)
24702 / 0
Аватар пользователя Леонид Иванов
Публикацию добавил: Леонид Иванов
Дата публикации: пн, 07/09/2018 - 16:35

Что еще почитать: