Оглавление

  • Введение

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

  • Краткие факты о токене Ethereum

  • Как генерируются токены ERC-20?

  • Какие функции имеет ERC-20?

    • Стейблкоин

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

    • служебный токен

  • Могу ли я участвовать в майнинге токенов ERC-20?

  • Преимущества и недостатки токенов ERC-20

    • Преимущества токенов ERC-20

    • Недостатки токенов ERC-20

  • В чем разница между ERC-20, ERC-1155, ERC-223 и ERC-721?

  • Подведем итог


Введение

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

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

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


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

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

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

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

Важно отметить, что стандарт ERC-20 превратился в EIP (в частности, EIP-20). На этот раз прошло несколько лет с момента первоначального широко распространенного предложения, но даже по прошествии нескольких лет название «ERC-20» осталось.


Краткие факты о токене Ethereum

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

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


Users interacting with a smart contract


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

Даже без отправки эфира она должна заплатить определенную комиссию, чтобы транзакция была добавлена ​​в блок. Если у вас нет 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)

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

Опять же, в качестве примера возьмем модель подписки. Допустим, у вас есть большое количество токенов Binance Academy и вы хотите настроить повторяющиеся еженедельные выплаты для своего потокового DApp. Я слишком занят чтением статей Binance Academy, чтобы каждую неделю тратить время на создание сделок вручную.

Большой баланс токенов Binance Academy намного превышает комиссию, необходимую для оплаты подписки. Чтобы предотвратить выплату DApp всех активов, вы можете использовать утверждение, чтобы установить лимит. Предполагая, что ваша подписка стоит 1 токен Binance Academy в неделю, ваша подписка будет автоматически оплачена в течение 5 месяцев, если лимит одобрения составляет 20 токенов.

Если программа пойдет не так и DApp попытается вывести все средства, вы потеряете только до 20 токенов. Хотя потеря ваших токенов огорчает, результат намного лучше, чем потеря всех ваших активов.

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


разрешение

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

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


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

Все, что обсуждалось выше, является обязательной функцией. С другой стороны, имя, символ и десятичная дробь являются дополнительными функциями, но они могут сделать 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 для покупки Ethereum!


Могу ли я участвовать в майнинге токенов ERC-20?

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

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

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


Преимущества и недостатки токенов ERC-20

Преимущества токенов ERC-20

Взаимозаменяемость

Токены ERC-20 взаимозаменяемы, и все единицы можно обменивать друг на друга. Что касается токенов Binance Academy, все происходит одинаково, независимо от того, какую конкретную монету вы держите. Вы можете торговать с другими людьми, и токены функционируют так же, как наличные деньги или золото.

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


гибкий

Как обсуждалось в предыдущей главе, токены 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 не имеет некоторых особенностей других стандартов, но еще неизвестно, смогут ли другие типы контрактов занять его место.