Что из себя представляют токены ERC-20?
Это токены, которые можно создать и использовать только на платформе Ethereum.
Сообщество Ethereum разработало стандарты для токенов, которые можно создавать на этой платформе, — стандарты ERC-20. Благодаря им, этими токенами можно пользоваться в качестве средства оплаты, обменивать на другие токены или переводить в криптовалютный кошелек.
Среди упомянутых выше стандартов есть три необязательных и 6 обязательных.
Необязательные:
- Название токена
- Символ
- Точность (до 18 знаков после запятой)
Обязательные:
- totalSupply (общий запаc)
- balanceOf (остаток)
- transfer (перевод)
- transferFrom (перевод из)
- approve (подтверждение)
- allowance (разрешение)
Чтобы лучше разобраться в токенах и стандартах ERC-20, немного освежим память и поговорим о сети Ethereum.
Что такое Ethereum?
Это децентрализованная сеть компьютеров, которая обладает двумя основными функциями.
Во-первых, это блокчейн, на котором можно записывать транзакции, и во-вторых это виртуальная машина, где можно заключать смарт-контракты.
Эти две функции обуславливают возможность Ethereum поддерживать децентрализованные приложения (DApps). Такие приложения создаются на существующем блокчейне Ethereum и заключают в себе все преимущества технологии, лежащей в их основе. За это разработчики таких приложений оплачивают потребление вычислительной мощности сети в Ether — единственной внутренней валюте на этой платформе.
С помощью DApps можно создавать токены ERC-20 с различными целями. Например, они служить в качестве валюты, доли в компании, баллов в программе лояльности. Кроме того, их можно использовать для доказательства права владения, например, золотом.
Причем тут смарт-контракты?
Для создания токенов ERC-20 используются смарт-контракты.
С их помощью проведение транзакций с токенами упрощается, а также происходит фиксация остатка токенов на счету.
Смарт-контракты пишутся на языке программирования “Solidity” на основе логики IFTTT («Если это, тогда то»).
Лучше всего их работу иллюстрирует пример торгового автомата (на рисунке — «vending machine»).
Как только токен создан, его можно тратить, отправлять кому-либо или торговать им.
ERC-20 — это универсальный язык, которым пользуются все токены сети Ethereum. Именно он позволяет приобретать одни токены за другие.
Допустим, мы хотим создать криптовалютное казино. Мы хотим, чтобы наши клиенты пользовались в нем нашими фишками просто для упрощения, как и в традиционном казино. Поэтому игрок обменивает свою традиционную валюту на наш токен и спешит к покерному столу.
Чтобы лучше понять данную аналогию, обратимся к стандартам ERC-20. Для разработчиков они играют важную роль. Начнем с необязательных.
- Название токена: Blu Chip
- Символ: BLU
- Точность: 2 знака после запятой*
*Мы хотим, чтобы наши токены делились без остатка, поэтому минимальная ставка игрока будет ,01 BLU. Можно, конечно, выбрать точность 0, и тогда минимальная ставка составит 1 BLU, либо увеличить его значение до 18 знаков после запятой и тогда минимальная ставка будет ,000000000000000001 BLU, но мы не будем усложнять.
Обязательные правила
totalSupply — это общее количество созданных токенов ERC-20.
В первую очередь нашему казино нужно определиться, сколько токенов BLU будет в обращении. Допустим, на нашем покерном столе всего 10 BLU у 10 игроков.
Функция transfer позволяет переводить определенное число токенов из общего запаса на счета пользователей.
Еще до начала игры игроки должны получить от крупье свои BLU. Каждый получает по одной фишке.
Функция balanceOf позволяет вернуть токены, которые есть у данного пользователя, на его счет.
После первой раздачи в нашем покере пятеро игроков посмотрели на свои карты и решили не участвовать. Оставшиеся пятеро игроков решили сделать ставку ,5 BLU. С помощью функции balanceOf, мы видим, что у пятерых игроков по 1 BLU, а у оставшихся пятерых ,5 BLU.
Функция transferFrom позволяет переводить токены другим пользователям.
Хорошие новости! В первой раздаче вы выиграли и получили 2,5 BLU от других игроков. Но чтобы получить их, вам понадобится функция transferFrom. Без нее ничто не помешает другим игрокам присвоить ваш выигрыш.
При этом, поддельный токен вы получить не сможете. Функция approve проверяет транзакцию каждого токена из их общего запаса, поэтому появление лишних токенов или пропажа какого-то из них просто исключены.
Еще один способ обезопасить нашу гипотетическую партию в покер заключается в том, чтобы убедиться, что никто не добавил лишних токенов на стол. Здесь опять приходит на помощь функция approve : она разрешает обменивать BLU только проверив, что всего на нашем столе только 10 BLU.
Интересно, что в нашем казино блефовать и говорить, что на руках у меня больше токенов, чем на самом деле, нельзя. До проведения транзакции функция allowanсe проверяет остаток на счету пользователя, и если токенов недостаточно, отменяет транзакцию.
В нашем криптовалютном казино кредитов не дают. Поэтому нам нужно удостовериться, что у каждого игрока на счету достаточно средств, чтобы сделать ставку. Если у них всего один BLU, им нельзя поставить два.
Каковы преимущества токенов ERC-20?
В широком смысле, их создание многое упростило.
До их появления разработчики использовали другую терминологию в коде, называя одни и те же функции по-разному. Например, в одном токене используется totalAmount («общая сумма»), а в другом — totalNumber («общее число»).
Биржам и кошелькам приходилось приспосабливать свои платформы под код каждого токена.
Однако, с появлением нового единого стандарта, новые токены можно размещать на бирже или переводить в кошелек автоматически, причем, сразу же, как только они появляются.
Кроме того, ERC-20 значительно упрощает сам процесс создания токенов. Именно поэтому Ethereum стала самой популярной платформой для ICO в 2017 году.
Каковы недостатки токенов ERC-20?
Стандарт ERC-20 не совершенен. Некоторые проблемы с помощью стандарта токенов ERC-20 решить невозможно.
В некоторых случаях такие токены непреднамеренно уничтожались. Это происходит, когда для оплаты смарт-контрактов используют их, а не Ether. Из-за таких ошибок пользователи лишились в общей сложности $3 млн.
Чтобы исправить этот баг, в сообществе Ethereum сейчас занимаются разработкой нового стандарта токенов ERC-223. Они не совместимы со старым стандартом, поэтому разработчики продолжат пользоваться ERC-20, пока они совместимость с ERC-223 не будет достигнута.
В апреле 2018 года некоторые биржи приостановили размещение и снятие со счетов токенов на базе Ethereum из-за бага batchOverflow. Он считается «классической проблемой переполнения целочисленного значения». С его помощью хакер может присвоить большое количество токенов.
Отмечается, что ныне существующие системы безопасности не способны справиться с этими уязвимостями.
Примеры токенов ERC-20
Любой токен, разработанный на платформе Ethereum, это токен ERC-20. В настоящее время их почти 83 тысячи. Но среди них есть и довольно популярные койны.
EOS (EOS) — занимает пятую строчку в рейтинге криптовалют. Его создатели разрабатывают сеть с возможностью использования межблокчейновой коммуникации.
TRON (TRX) — занимает 9 строчку. Его создатели позиционируют этот токен как «протокол с открытым исходным кодом для нужд цифровой индустрии развлечений».