Токены ERC кардинально отличаются от цветных монет или Omni токенов. ERC или Ethereum Request for Comments, это стандарты для написания смарт-контрактов, созданные разработчиками сообщества Ethereum в форме меморандумов, описывающих поведение, методы и исследовательское приложения для работы в экосистеме Ethereum. Каждый разработчик имеет возможность предложить новый стандарт, и в случае одобрения другими разработчиками Ethereum и комьюнити, стандарт становится общепризнанным механизмом.

С помощью виртуальной машины Ethereum пользователь имеет возможность создавать сложные смарт-контракты, которые могут  использоваться различными кошельками. Рассматривая токены на Bitcoin как «заметки на банкнотах», контракты ERC20 представляют собой своего рода бухгалтерский учет внутри блокчейн. Контракт ERC20 сохраняет книгу учета по каждому пользователю. Он определяет количество существующих токенов, а также содержит список адресов с указанием количества определенных токенов.

По своей сути стандарты представляют собой набор функций, которые должны быть реализованы во время разработки смарт контрактов. Среди наиболее используемых стандартов ERC-20, ERC-223, ERC-721.

ERC-20

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

В конце 2015 года разработчики Ethereum Фабиан Вогельстеллер и Виталик Бутерин опубликовали стандарт  токена ERC20, что должно было стать «стандартным интерфейсом для токенов» на блокчейне Ethereum. Он обеспечивал базовый функционал по передаче токенов, а также позволял верифицировать токены для использования третьей стороной в цепи.  Цель заключалась в том, чтобы «обеспечить возможность использования токенов Ethereum другими приложениями: от кошельков до децентрализованных обменников».

Как понять, что токен совместим с ERC-20? Это 6 функций, которые могут быть распознаны и идентифицированы другими смарт-контрактами, что, в свою очередь, приводит к гладкому взаимодействию между ними.

Доступ к следующим функциям возможен по стандартам ERC-20

  •  balanceOf(address _owner): returns account balance of _owner’s account
  •  totalSupply(): returns total token supply
  •  transferFrom(address _from, address _to, uint256 _value): transfers _value amount of tokens from the address _from to the address _to, and triggers the transfer event
  •  transfer(address _to, uint256 _value): takes in number _value and transfers that amount of tokens to address _to and triggers transferevent
  •  allowance(address _owner, address _spender): returns the amount which the_spender is still allowed to withdraw from the _owner
  •  approve(address _spender, uint256 _value): allows _spender to withdraw any number up to _value amount

Четыре основных действия необходимо выполнять всем токенам ERC-20:

  • получить общее количество токенов,
  • получить баланс на счете,
  • перенести токен из одной группы в другую,
  • подтвердить использование токена в качестве актива.

Хотя это не является обязательным правилом, большинству разработчиков децентрализованных приложений рекомендуется следовать стандарту, чтобы облегчить взаимодействие токена со сторонними сервисами.

ERC-223

Стандарты ERC-223 были первоначально представлены разработчиками для решения проблем, связанных с стандартами ERC-20.   Основные изменения:

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

Идентификаторы ERC-223 обратно совместимы с ERC-20, что означает, что все функции и контракты, которые работают с токеном ERC-20, также будут работать с ERC-223.  ERC-223 устраняет случайную передачу токенов неизвестному или неизвестному контракту, так как исключается опечатка адреса получателя. Стандарт ERC20 страдает от невозможности обработки входящих транзакций по контракту от получателя. Проблема заключается в том, как токены могут быть отправлены по контракту не предназначенные для адресата, что приведет к потере средств. Новый стандарт предоставляет возможность отменить такие транзакции и в конечном итоге даже полностью заблокировать случайные транзакции на случайные контракты.

Предполагая, что стандарт ERC223 станет новой нормой, все существующие токены-эмитенты должны принять непростое решение преобразовать ERC20 в ERC223. Это значит, что все токены ERC20 должны быть перераспределены в соответствии со стандартом ERC223. Любая торговая платформа, в которой перечислены указанные токены, должна будет обновить свою информацию и адреса.

Рекомендованные интерфейсы и реализации ERC223 на Solidity можно посмотреть тут.

ERC-721

Токен ERC-721 сильно отличается от ERC-223 и ERC-20. Каждый токен полностью отличается, и каждый токен может иметь различную ценность для разных пользователей, владеющих им. Отличным примером являются Cryptokitties которые в 2017 году положили сеть Ethereum. Криптокотики это игра позволяющая растить и скрещивать котиков, и продавать их в сети Ethereum. Каждый из них является своей собственной отдельной единицей или ценностью, основанной на собственной редкости и спросу пользователей. Стандартные токены ERC-721 могут использоваться в любом обмене, но ценность токена является «результатом уникальности и редкости, связанной с каждым токеном».

Стандартные функции с ERC-721:

name,symbol,totalSupply,balanceOf,ownerOf,approve,transfer,tokenOfOwnerByIndextokenMetadata.

Он также определяет два события: Transfer and Approval

Фото взято с crypto1.ru