Токены ERC-20 — это криптовалюты, работающие на блокчейне Ethereum. Их функционирование обеспечивается смарт-контрактами сети Ethereum: они используются для проведения транзакций и взаимодействия с адресами и кошельками. В то же время токены ERC-20 имеют собственные тикеры, параметры эмиссии, цену и другие характеристики. Например, хотя EOS — это токен Ethereum, его рыночная капитализация составляет 11,5 млрд долларов, что превышает капитализацию большинства криптовалют, добываемых майнингом.

Благодаря доступности архитектуры ERC20, довольно просто создать и задеплоить собственный токен и распространить его (например, во время ICO). В рамках ICO и других типов предложений проводятся предпродажи с целью привлечения финансирования от инвесторов. Процесс создания токенов называется TGE, сокращение от Token Generation Event. Проекты выпускают определенное количество токенов ERC 20 и продают их всем участникам предпродажи за биткоины или ETH.
Следует отметить, что хотя токены ERC-20 являются полноценными криптовалютами, которые могут появиться на популярных криптобиржах, это не обязательно означает, что так и будет. Токен erc20 может взять криптовалютный мир штурмом или навсегда остаться на балансе своего создателя.
Практическое использование ERC20
Сначала токены использовались при первоначальном сборе средств на развитие компании. Это были цифровые активы с фиксированными обязательствами. Токены приобретались непосредственно у разработчиков и не могли быть проданы или куплены где-либо еще.
ICO Ethereum состоялось в 2014 году и собрало более 16 миллионов долларов. Ethereum привлек внимание представителей многих отраслей, поскольку в будущем его можно будет использовать для оптимизации и оцифровки неэффективных бизнес-процессов.
Токен ERC-20 может считаться криптовалютой, если им можно торговать на криптобиржах. ERC20-токены также могут превратиться в целые экосистемы с собственными блокчейнами. Примерами ERC20-токенов, создавших свой собственный блокчейн, являются Tron и EOS. Tron создал свой собственный блокчейн благодаря своему видению: игры на блокчейне становятся все более популярными с каждым днем. EOS - это конкурент Ethereum, используемый в основном для децентрализованных бирж и азартных игр.
Токен Ethereum может использоваться как актив и форма денег; он также может представлять собой ценности любого рода и предоставлять право на участие в программе или служить средством подтверждения права собственности. Любой актив реального мира, физический или иной, может быть токенизирован и торговаться на криптобиржах.

Самые популярные токены ERC-20
Блокчейн Ethereum де-факто стал домом для криптовалют — здесь сосредоточено большинство крупнейших современных альткоинов. Самыми известными токенами являются токены стандарта ERC20, и большинство DApps в криптовалютной экосистеме построены на сети Ethereum. Некоторые стейблкоины стандарта ERC20 уверенно доминируют на криптовалютном рынке.
USDC
Помимо USDT от Tether, одним из крупнейших стейблкоинов стандарта ERC20 в сети Ethereum является USDC.

USDC, запущенный компанией Coinbase в сотрудничестве с Circle, обычно рассматривается как более надежная альтернатива USDT теми, кто критически относится к Tether.
Стандарт BEP20 от Binance базируется на блокчейне Binance Smart Chain, который, в свою очередь, происходит от сети Ethereum. Поэтому два собственных токена Binance - BNB и BUSD - технически также можно считать токенами Ethereum.
Единый стандарт, простота создания и совместимость с платформами привели к широкому распространению токенов ERC20. Ниже приведены некоторые примеры популярных токенов, использующих протокол ERC20.
USDT Tether

Стейблкоин USDT с привязкой к доллару США был выпущен компанией Tether Limited в 2015 году. Основанный на стандарте ERC-20, с тех пор он стал основным стейблкоином для большинства криптотрейдеров и бирж по всему миру. Стоимость USDT Tether подкреплена долларами США на счетах компании.
У других фиатных валют есть свои собственные стейблкоины. Например, Binance GBP обеспечен британским фунтом, а STASIS - евро.
Старая система была основана на протоколе Omni, базирующемся на блокчейне Bitcoin. Из-за высоких комиссий и длительного времени подтверждения компания решила перейти на блокчейн Ethereum.
Обернутый Биткойн и Обернутый Эфир

ETH, или эфир, - это базовая валюта Ethereum. WETH - это "обернутый ETH" или "Эфир в оболочке". Он был введен, поскольку ETH появился до принятия стандарта ERC20 и поэтому не соответствовал ему.
Децентрализованные платформы на базе Ethereum обмениваются токенами между пользователями на основе смарт-контрактов. Для того чтобы обмен состоялся, токены должны принадлежать к одному и тому же стандарту.
WETH используется для обмена токенов ETH на соответствующий протокол ERC20.
Многие пользователи сети, включая крупные корпорации с капиталом, заинтересованы в развитии базовой валюты.
Среди них:
- система Wrapped Ether, которая владеет более чем 2 миллионами ETH стоимостью $ 380 млн;
- одной из ведущих криптовалютных бирж, Binance, $ 370 млн;
- Биржа Bitfinex, менее 2 миллионов ETH.

У Биткойна также есть обернутая ERC20-версия под названием WBTC. Оригинальный BTC - это родной токен блокчейна Биткойна, который не подходит для Ethereum. Как и WETH, WBTC призван исправить эту ситуацию: он всегда привязан к цене Биткойна и полностью совместим с сетью Ethereum. Обернутые токены чаще всего используются для передачи токенов между различными сетями, которые не являются взаимно совместимыми.
LCS
LocalCoinSwap - это децентрализованная платформа, которая предоставляет пользователям возможность напрямую покупать и продавать криптовалюту, используя любой из доступных способов оплаты.

LCS позволяет Вам найти покупателя или продавца валюты и совершить сделку без привлечения веб-сайтов и кошельков. Платформа использует традиционную систему депозитов, в которой хранятся криптовалютные средства, которые можно обменять. Когда платеж подтвержден покупателем и продавцом, система отправляет монеты покупателю. Платформа дает право на получение дивидендов в соотношении 1 к 1 в конце квартала.
Etherscan: Дом токенов ERC 20
Контракты на токены ERC20 можно просмотреть на Etherscan.io - родном трекере сети Ethereum.

Наряду с тикерами и краткими описаниями, вы можете следить за общим объёмом предложения, рыночной капитализацией (on-chain и в обращении), количеством держателей, а также ценой и её изменением.

Чтобы просмотреть все контракты токенов ERC20 в сети Ethereum, нужно нажать Tokens в правом верхнем углу и выбрать ERC20 Tokens. Здесь отображаются все новые токены с более или менее конкурентоспособной рыночной капитализацией.
На момент написания этой статьи в сети Ethereum развёрнуто не менее 625 000 контрактов токенов ERC20. Здесь же можно ознакомиться с другими стандартами токенов Ethereum — ERC721 для невзаимозаменяемых токенов (NFT) и ERC1155 для мультитокенов.
Техническая сторона токена ERC 20
По сути, токены ERC-20 - это смарт-контракты на блокчейне Ethereum. ERC-20 - это единый стандарт, включающий набор основных правил, которым должен следовать контракт. Этот стандарт обеспечивает совместимость всех токенов в сети.
ERC расшифровывается как "Ethereum Request for Comments", а 20 - это номер его идентификатора.
ERC-20 был задуман ещё в 2015 году и стал повсеместным в 2017-м. До его появления все смарт-контракты были довольно разнородными, что порождало проблемы с совместимостью, а кошелькам приходилось обрабатывать горы кода, чтобы распознать каждый конкретный токен.
Токены ERC20 и EVM
EVM (Ethereum Virtual Machine) - это виртуальная вычислительная среда, распределенный компьютер, отвечающий за выполнение алгоритмов в сети Ethereum (смарт-контрактов).
EVM считается Тьюринг-полным, что означает, что теоретически он способен справиться с любой вычислительной задачей, которая может быть выполнена на компьютере (при наличии достаточных ресурсов).
В качестве оплаты за выполнение смарт-контрактов EVM использует "газ", измеряемый в "gwei", наименьшей возможной доле ETH; газ включен в стоимость транзакции. Конкретное количество газа, которое должен заплатить пользователь, зависит от сложности выполняемых вычислений и текущей загруженности блокчейна Ethereum.
Для создания токенов ERC-20 используются смарт-контракты, которые следуют определенной структуре данных на EVM. Эта структура данных управляет именованием, распределением, объёмом эмиссии и мониторингом токена.
ERC20 = Код?
Многие задаются вопросом: можно ли считать ERC-20 кодом? Не совсем: токен ERC20 — это скорее набор правил и рекомендаций, определяющих порядок работы в сети Ethereum.
Стандарт служит ряду целей, включая отслеживание всех транзакций, текущего баланса токенов пользователя, тикера токена и общего объема предложения; стандарт токенов ERC 20 также обеспечивает совместимость различных DApps (децентрализованных приложений) в сети.
Внутри контракта ERC 20 Token
Стандарт ERC20 описывает шесть обязательных и три необязательных функции, которые должны соблюдаться для правильной работы смарт-контракта.
У каждого токена должно быть название и символ (также известный как тикер). Кроме того, необходимо указать параметр decimals — то есть сколько раз токен можно разделить на 10. Ниже Вы найдете набор обязательных функций, которые, возможно, кому-то покажутся немного сложными для понимания:
function () public view returns (uint256);
function balanceOf(address tokenOwner) public view returns (uint);
function allowance(address tokenOwner, address spender)
public view returns (uint);
function transfer(address to, uint tokens) public returns (bool);
function approve(address spender, uint tokens) public returns (bool);
function transferFrom(address from, address to, uint tokens) public returns (bool);
Вот что представляют собой эти функции:
- TotalSupply: Общее количество токенов, которые когда-либо будут выпущены;
- BalanceOf: Баланс счета владельца токена;
- Transfer: Автоматически выполняет перевод указанного количества токенов на указанный адрес при транзакциях с токеном;
- TransferFrom: Автоматически выполняет передачу указанного количества токенов с указанного адреса с помощью токена;
- Approve: Позволяет указанному адресу снять заданное количество токенов с указанного счёта, но не более определённой суммы;
- Allowance: Возвращает оставшееся количество токенов, которые spender может потратить от имени owner;
- Transfer: Событие, генерируемое при успешном переводе токенов (событие);
- Approval: Журнал подтверждённого события (событие).
При наличии соответствующих прав функции ERC20 позволяют внешнему приложению — например, криптокошельку — видеть баланс и переводить токены между пользователями.
Существует два типа событий, распознаваемых смарт-контрактом:
event Approval(address indexed tokenOwner, address indexed spender,
uint tokens);
event Transfer(address indexed from, address indexed to,
uint tokens);
События могут быть:
- вызваны
- эмитированы
Любое из этих событий происходит после того, как аккаунт Ethereum предоставил кому-то разрешение на снятие токенов, и после того, как токены были фактически переведены. Согласно стандарту, функция transfer должна генерировать событие Transfer при успешном переводе токенов.
function allowance(address owner, address spender) external view returns (uint256);2
Стандарт ERC-20 позволяет одному адресу выдать разрешение другому адресу на получение с него токенов. Этот геттер возвращает оставшееся количество токенов, которые spender вправе потратить от имени owner. Функция является геттером и не изменяет состояние контракта; по умолчанию должна возвращать 0.
Создание токена ERC 20
Шаг 1
- Выберите название, например, Best Coin
- Выберите символ, пусть это будет BEC
- Определитесь с общим объёмом эмиссии
- Решите, будут ли токены делимыми, и если да — до скольких знаков после запятой.
Шаг 2
Развертывание токена
Введите следующие данные в смарт-контракт, доступный по ссылке. Загрузите оба файла .sol. Перейдите в редактор Remix. Загрузите оба файла.

Файлы загружаются с помощью кнопки Load(Open). Выберите оба файла.
Откройте файл NewToken.sol, поместите необходимые значения в
totalSupply - общее количество токенов
name — полное название токена
decimal - количество знаков после десятичной точки. Дело в том, что в контрактах все хранится только в целых числах. Поэтому Вам следует указать количество знаков, если Вы хотите иметь возможность зачислить нецелое число токенов.
- Symbol — тикер для бирж
- Купить рекламу
- Отключите от сети.
Должно получиться примерно так:
Сохраните файл. Осталось задеплоить контракт в сеть. Например, в тестовую сеть Ropsten. Для деплоя подойдёт любой клиент. Воспользуемся MetaMask — он не умеет компилировать смарт-контракты на Solidity, поэтому сначала скомпилируем контракт сами.
В правой части редактора Remix откройте вкладку «Компиляция». По умолчанию контракт компилируется автоматически. Выбрав контракт в списке Select и нажав Details, можно просмотреть байткод и другую информацию.
Для деплоя нажмите Run, выберите Injected Web3 и укажите аккаунт для деплоя (MetaMask должен подгрузить его автоматически, если расширение установлено в браузере). Заполните поля (газ, значение) и нажмите Create.

MetaMask подхватывает действие со страницы.
Нажмите Submit. Ваш контракт задеплоен. Успешная отправка подтверждается в MetaMask иконкой с документом (она ведёт на страницу транзакции) и надписью «Contract published».

Развёрнутый смарт-контракт — это и есть токен.
Шаг 3
Операции с токенами
Для транзакций с токенами на базе Ethereum нужны два кошелька — тот, на котором они уже есть (по умолчанию у создателя контракта ERC20), и тот, на который нужно их перевести.
Выполним операции с нашим токеном (например, переведём его). Это можно сделать на странице смарт-контракта в Etherscan (ссылка в MetaMask) или на странице Remix.

Голубой цвет здесь - операции чтения, розовый - операции записи.
Чтобы перевести токены ERC-20, введите адрес получателя и количество. После этого (и внесения данных в блокчейн, разумеется) Вы можете проверить свой баланс или баланс получателя токенов с помощью операции balanceOf.
Готово!
Проблемы со стандартом токенов ERC 20
Проблемы со стандартом ERC-20 можно разделить на два уровня: со стороны пользователя и со стороны разработчика.
Для пользователей токенов
Для обычных пользователей наиболее распространенными неудобствами являются:
- Низкая пропускная способность - сеть Ethereum забивалась, когда dapp’ы пользовались большим спросом, например, CryptoKitties (которая с тех пор перешла на собственный блокчейн Flow). Когда это происходит, сеть замедляется, и транзакции становятся более дорогими.
- Медленные транзакции - Время блока составляет около 14 секунд, поэтому на обработку транзакций может уходить до минуты. Этого может быть достаточно для одних целей или слишком медленно для других.
- ETH для газовых платежей - При совершении транзакций с использованием токенов ERC-20 требуется вторая криптовалюта для оплаты комиссии за транзакцию. Это может добавить как времени, так и затрат, поскольку может привести к накоплению "пыльного" баланса на разных платформах.
Для разработчиков токенов
У токенов ERC20 есть две критические проблемы, которые могут приводить к финансовым потерям:
- Отсутствие возможности обработки транзакций.
Существует два способа совершения транзакции в токенах ERC20:
- функция transfer.
- механизм approve + transferFrom.
Баланс токена - это просто переменная внутри контракта на токен.
Транзакция токена - это изменение внутренних переменных смарт-контракта (текущий баланс отправителя будет уменьшен, а получателя - увеличен).
Функция transfer не уведомляет получателя о совершённой транзакции. Получатель попросту не узнает о входящем переводе! Это ведёт к необработанным транзакциям и финансовым потерям.
Таким образом, если получатель — смарт-контракт, нужно использовать схему approve + transferFrom. Если получатель — внешний адрес (кошелёк пользователя), токены передаются через функцию transfer.
Если пользователь ошибётся и выберет не ту функцию, токены застрянут внутри смарт-контракта, и транзакция не будет обработана. Застрявшие токены ERC20 вернуть уже не получится.
Из-за этой проблемы было потеряно не менее 400 000 долларов.
- Механизм approve + transferFrom потенциально небезопасен
Известно, что механизм approve + transferFrom допускает двойные траты.
Это не актуально, если только не будет возможности создавать пользовательские токен-биржи, как, например, target="_blank"> target="_blank"> Bancor token changer.
Решением этой проблемы является стандарт токенов ERC223.
Стандарт токенов ERC #223 был разработан специально для решения проблем стандарта токенов ERC 20.
Каждый разработчик токенов должен принять это во внимание. Выпускать токен, который приведёт к финансовым потерям пользователей, — плохая практика. Подходите к разработке ответственно.
Как это работает на практике
У Алисы есть 10 токенов ERC20. Она хочет отправить 3 токена Бобу.
Для обычного пользователя может показаться, что у Алисы есть токены «на балансе счёта», но баланс токена — это всего лишь переменная внутри токен-контракта.
Алиса инициирует транзакцию. По сути, каждая транзакция с токенами — это вызов токен-контракта.
Алиса просит токен-контракт уменьшить ее баланс на 3 и одновременно увеличить баланс Боба на 3.
После того как транзакция будет включена в блок, внутренние переменные этого контракта токена ERC-20 изменятся. Никто не сообщит получателю (в данном случае Бобу), что транзакция состоялась.
Для аккаунтов, принадлежащих реальным людям (externally owned accounts), это не критично. Алиса может сказать Бобу, что отправила ему токены. Боб проверит баланс и убедится, что транзакция действительно прошла.
Это критическая проблема для контрактов, которая приводит к потере токенов. Контракты, не предназначенные для работы с токенами, должны отклонять входящие транзакции с токенами. В противном случае каждый контракт становится потенциальной ловушкой для токенов из-за неспособности отклонить неправильную передачу токенов.
В технических терминах ERC называется «публичной константой». Ethereum Request for Comments — это название документа, описывающего правила создания токенов на блокчейне.
Юридические последствия ERC20
С юридической точки зрения ситуация с токенами ERC 20 еще более туманна, чем с криптовалютами.

Нормативная база в этой области в большинстве стран мира либо отсутствует вовсе, либо склоняется к "запрету". Это объясняется рядом факторов, в том числе:
- Большое количество мошенничества, связанного с токенами ERC 20. Поскольку сущность токена получила наибольшее распространение в связи с ICO, многие из которых были явным или скрытым мошенничеством, это наложило негативный отпечаток на концепцию.
- Криптовалюта - относительно молодая область. Технология Blockchain внесла серьезные инновации в мир финансовых технологий. Во-первых, это сложность регулирования данной сферы в связи с использованием технологий децентрализации и фальшивой анонимности. Во-вторых, это новая сфера в мировой экономике.
Токен ERC 20 = ценная бумага?
- Сейчас ведется много споров вокруг признания токенов ERC 20 ценными бумагами. Особенно это касается тех, кто стремится создавать и распространять свои собственные токены в рамках ICO и т.д. Дело в том, что токены ERC 20 ("акции, которые принесут владельцам доход") будут подпадать под действие законов о ценных бумагах в США и большинстве других стран. Вам даже не придется проходить сложный тест Хоуи. Тест Landreth Timber и другие подобные тесты сделают свое дело - доля прибыли в предприятии в любом случае будет считаться ценной бумагой.
- Тот факт, что токен является ценной бумагой, не означает, что Вы не можете его продать. Люди постоянно покупают и продают ценные бумаги (вспомните стартапы Кремниевой долины). Но чтобы сделать это, Вы должны соответствовать одному из исключений из правил частного размещения ценных бумаг, установленных законодательством о ценных бумагах. Как правило, это означает, что Вы не предлагаете их широкой публике, не рекламируете их и т.д. - иными словами, противоположное тому, что делают большинство продавцов токенов.
- Или же Вы можете пойти по пути Reg A+ и предложить токен публике, но с ограничением в 50 млн. долларов, получив сначала одобрение SEC, и с некоторой постоянной отчетностью (не такой плохой, как отчетность, требуемая для полноценной компании, отчитывающейся по Закону о биржах). Есть и другие варианты, которые можно комбинировать в той же общей зоне действия законов о ценных бумагах.