Введение

Ethereum был основан Виталиком Бутериным в 2014 году и позиционирует себя как платформа с открытым исходным кодом для запуска децентрализованных приложений (DApps). Многие мотивы Бутерина для создания нового блокчейна были связаны с отсутствием гибкости протокола Биткойн.

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

В этой статье мы рассмотрим стандарт ERC-20 — важную основу для создания токенов. Хотя эта структура специфична для сети Ethereum, она также вдохновила другие стандарты блокчейна, такие как BEP-2 от Binance Chain.


Что такое стандарт ERC-20?

В Ethereum ERC — это запрос Ethereum на комментарии. Это технические документы, в которых излагаются стандарты программирования на Ethereum. Их не следует путать с предложениями по улучшению Ethereum (EIP), которые, как и BIP Биткойна, предполагают улучшения самого протокола. Вместо этого ERC стремятся установить соглашения, которые упрощают взаимодействие приложений и контрактов друг с другом.

ERC-20, созданный Виталиком Бутериным и Фабианом Фогельстеллером в 2015 году, предлагает относительно простой формат токенов на основе Ethereum. Следуя этой схеме, разработчикам не нужно изобретать велосипед. Вместо этого они могут построить фундамент, уже используемый во всей отрасли.

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

Следует отметить, что стандарт ERC-20 был развит в EIP (в частности, EIP-20). Это произошло через пару лет после первоначального предложения из-за его широкого распространения. Однако даже спустя годы название «ERC-20» прижилось.


Краткий обзор токенов Ethereum

В отличие от ETH (собственной криптовалюты Ethereum), токены ERC-20 не хранятся на счетах. Токены существуют только внутри контракта, который похож на автономную базу данных. Он определяет правила для токенов (т. е. имя, символ, делимость) и хранит список, который сопоставляет балансы пользователей с их адресами Ethereum.

Чтобы переместить токены, пользователи должны отправить транзакцию контракту с просьбой выделить часть их баланса в другом месте. Например, если Алиса хочет отправить Бобу 5000 токенов BinanceAcademyToken, она вызывает функцию внутри смарт-контракта BinanceAcademyToken и просит ее сделать это.


Users interacting with a smart contract


Ее вызов содержится внутри того, что выглядит как обычная транзакция Ethereum, которая выплачивает 0 ETH в контракт токена. Вызов включается в дополнительное поле транзакции, в котором указывается, что хочет сделать Алиса — в нашем случае передать токены Бобу.

Несмотря на то, что она не отправляет эфир, она все равно должна заплатить выраженную в нем комиссию, чтобы ее транзакция была включена в блок. Если у нее нет ETH, ей необходимо получить их перед передачей токенов.

Вот реальный пример вышеизложенного на Etherscan: кто-то звонит по контракту BUSD. Вы можете видеть, что токены были переведены и комиссия уплачена, хотя в поле «Значение» указано, что было отправлено 0 ETH.

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


Как создаются токены ERC-20?


Illustration of an ERC-20 token being created


Чтобы соответствовать стандарту ERC-20, ваш контракт должен включать шесть обязательных функций: TotalSupply, BalanceOf, Transfer, TransferFrom, Approval и Allowance. Кроме того, вы можете указать дополнительные функции, такие как имя, символ и десятичное число. Вам может быть понятно, что делают эти функции, из их названий. Если нет, не волнуйтесь – мы их разберем. 

Ниже приведены функции в том виде, в котором они представлены на специально созданном языке Solidity для Ethereum.


всегоПоставка

функция totalSupply() возвращает общедоступное представление (uint256)

При вызове пользователем вышеуказанная функция возвращает общий запас токенов, хранящихся в контракте.


баланс 

функция BalanceOf (адрес _owner) возвращает публичное представление (баланс uint256)

В отличие от TotalSupply, BalanceOf принимает параметр (адрес). При вызове он возвращает баланс токенов этого адреса. Помните, что учетные записи в сети Ethereum являются общедоступными, поэтому вы можете запросить баланс любого пользователя, если вам известен адрес.


передача

передача функции (адрес _to, uint256 _value) общедоступный возврат (успех bool)

Transfer удачно передает токены от одного пользователя к другому. Здесь вы указываете адрес, на который хотите отправить, и сумму перевода.

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


трансферОт

функция TransferFrom (адрес _from, адрес _to, uint256 _value) общедоступные результаты (логический успех)

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

Другими словами, вы можете разрешить кому-либо (или другому контракту) переводить средства от вашего имени. Возможный вариант использования включает оплату услуг на основе подписки, когда вы не хотите вручную отправлять платеж каждый день/неделю/месяц. Вместо этого вы просто позволяете программе сделать это за вас.

Эта функция запускает то же событие, что и передача.


утвердить

функция одобряет (адрес _spender, uint256 _value) общедоступные доходы (успех bool)

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

Возьмем еще раз наш пример модели подписки. Предположим, у вас есть огромное количество токенов BinanceAcademyToken, и вы хотите настроить еженедельные регулярные платежи в потоковое DApp. Вы заняты чтением контента Binance Academy день и ночь, поэтому не хотите каждую неделю тратить время на создание транзакции вручную.

У вас есть огромный баланс токенов BinanceAcademyToken, намного превышающий сумму, необходимую для оплаты подписки. Чтобы децентрализованное приложение не истощало их все, вы можете установить ограничение с помощью утверждения. Предположим, что ваша подписка стоит один токен BinanceAcademyToken в неделю. Если вы ограничите утвержденную стоимость двадцатью токенами, ваша подписка может быть оплачена автоматически в течение пяти месяцев.

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

При вызове Approval вызывает событие утверждения. Как и событие передачи, оно записывает данные в блокчейн.


разрешение 

разрешение функции (адрес _owner, адрес _spender) возвращает общедоступный просмотр (осталось uint256)

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


Дополнительные функции

Обсуждаемые ранее функции являются обязательными. С другой стороны, имя, символ и десятичную дробь включать не обязательно, но они могут сделать ваш контракт ERC-20 немного красивее. Соответственно, они позволяют вам добавить удобочитаемое имя, установить символ (например, ETH, BTC, BNB) и указать, на сколько десятичных знаков делятся токены. Например, токены, которые используются в качестве валюты, могут получить больше пользы от того, что они более делимы, чем токен, представляющий право собственности на недвижимость.


Посмотрите этот пример на GitHub, чтобы увидеть эти элементы в реальном контракте.


Что могут токены ERC-20?


Illustration of various uses of ERC-20 tokens


Объединив все вышеперечисленные функции, мы получили контракт ERC-20. Мы можем запрашивать общий объем поставок, проверять балансы, переводить средства и давать разрешения другим DApps управлять токенами для нас.

Большая часть привлекательности токенов ERC-20 — это их гибкость. Изложенные соглашения не ограничивают разработку, поэтому стороны могут реализовывать дополнительные функции и устанавливать определенные параметры в соответствии со своими потребностями.


Стейблкоины

Стейблкоины (токены, привязанные к фиатным валютам) часто используют стандарт токенов ERC-20. Транзакция с контрактом BUSD, о которой мы упоминали ранее, является одним из примеров, и большинство основных стейблкоинов также доступны в этом формате.

Для типичного стейблкоина, обеспеченного бумажными деньгами, эмитент хранит резервы в евро, долларах и т. д. Затем для каждой единицы своего резерва он выпускает токен. Это означает, что если бы 10 000 долларов были заблокированы в хранилище, эмитент мог бы создать 10 000 токенов, каждый из которых можно обменять на 1 доллар.

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

Пользователи могут делать со своими токенами ряд вещей: они могут покупать товары и услуги или использовать их в DApps. Альтернативно, они могут потребовать, чтобы эмитент обменял их немедленно. В этом случае эмитент сжигает возвращенные токены (делая их непригодными для использования) и снимает необходимое количество фиатных денег из своих резервов.

Контракт, регулирующий эту систему, как упоминалось выше, относительно упрощен. Однако запуск стейблкоина требует большой работы над внешними факторами, такими как логистика, соблюдение нормативных требований и т. д.


Токены безопасности

Токены безопасности похожи на стейблкоины. На уровне контракта оба могут даже быть идентичными, поскольку функционируют одинаково. Различие происходит на уровне эмитента. Токены безопасности представляют собой ценные бумаги, такие как акции, облигации или физические активы. Часто (хотя это не всегда так) они предоставляют владельцу некоторую долю в бизнесе или товаре.


Полезные токены

Полезные токены — это, пожалуй, наиболее распространенные типы токенов, встречающиеся сегодня. В отличие от двух предыдущих предложений, они ничем не подкреплены. Если токены, обеспеченные активами, подобны акциям авиакомпании, то служебные токены подобны программам для часто летающих пассажиров: они выполняют функцию, но не имеют внешней ценности. Утилити-токены могут удовлетворить множество вариантов использования, выступая в качестве внутриигровой валюты, топлива для децентрализованных приложений, очков лояльности и многого другого.


➠ Хотите начать работу с криптовалютой? Купите эфир на Binance!


Можете ли вы майнить токены ERC-20?

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

Обычно это делается посредством первичного предложения монет (ICO), первичного предложения обмена (IEO) или предложения токенов безопасности (STO). Вы можете встретить варианты этих аббревиатур, но эти понятия очень похожи. Инвесторы отправляют эфир на адрес контракта и взамен получают новые токены. Собранные деньги используются для финансирования дальнейшего развития проекта. Пользователи ожидают, что смогут использовать свои токены (сразу или позже) или перепродавать их с целью получения прибыли по мере развития проекта.

Распределение токенов не нуждается в автоматизации. Многие краудфандинговые мероприятия позволяют пользователям платить различными цифровыми валютами (такими как BNB, BTC, ETH и USDT). Соответствующие балансы затем распределяются по адресам, предоставленным пользователями.


Плюсы и минусы токенов ERC-20

Плюсы токенов ERC-20

взаимозаменяемый

Токены ERC-20 взаимозаменяемы – каждая единица взаимозаменяема с другой. Если бы у вас был BinanceAcademyToken, не имело бы значения, какой именно токен у вас есть. Вы можете обменять их на чужие, и они все равно будут функционально идентичны, как наличные деньги или золото.

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


Гибкий

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


Популярный

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


Минусы токенов ERC-20

Масштабируемость

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

Это проблема не только Ethereum. Скорее, это необходимый компромисс в безопасных распределенных системах. Сообщество планирует решить эти проблемы при переходе на Ethereum 2.0, в котором будут реализованы такие обновления, как Ethereum Plasma и Ethereum Casper.

Узнайте больше о проблемах масштабируемости в статье «Масштабируемость блокчейна: сайдчейны и платежные каналы».


Мошенничество

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

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

 

ERC-20, ERC-1155, ERC-223, ERC-721 – в чем разница?

ERC-20 был первым (и на сегодняшний день самым популярным) стандартом токенов Ethereum, но ни в коем случае не единственным. С годами появилось множество других, либо предлагающих улучшения ERC-20, либо пытающихся достичь иных целей в целом.

Некоторые из менее распространенных стандартов используются в невзаимозаменяемых токенах (NFT). Иногда ваш вариант использования действительно выигрывает от наличия уникальных токенов с разными атрибутами. Если вы хотите токенизировать единственное в своем роде произведение искусства, внутриигровой актив и т. д., один из этих типов контрактов может оказаться более привлекательным.

Например, стандарт ERC-721 использовался для чрезвычайно популярного DApp CryptoKitties. Такой контракт предоставляет пользователям API для создания собственных невзаимозаменяемых токенов и кодирования метаданных (изображений, описаний и т. д.). 

Стандарт ERC-1155 можно рассматривать как улучшение как ERC-721, так и ERC-20. В нем изложен стандарт, который поддерживает как взаимозаменяемые, так и невзаимозаменяемые токены в одном контракте.

Другие варианты, такие как ERC-223 или ERC-621, направлены на повышение удобства использования. Первый реализует меры безопасности для предотвращения случайной передачи токенов. Последний добавляет дополнительные функции для увеличения и уменьшения количества токенов.

Для получения дополнительной информации о NFT обязательно ознакомьтесь с Руководством по криптографическим предметам коллекционирования и невзаимозаменяемым токенам (NFT).


Заключительные мысли

Стандарт ERC-20 уже много лет доминирует в сфере криптоактивов, и нетрудно понять, почему. С относительной легкостью любой может развернуть простой контракт, подходящий для широкого спектра случаев использования (служебные токены, стейблкоины и т. д.). Тем не менее, ERC-20 не хватает некоторых функций, реализованных в других стандартах. Еще неизвестно, займут ли его место последующие типы контрактов.