Содержание
Введение
Что такое стандарт 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 на комментарии. Это технические документы, определяющие стандарты программирования на 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 токенов BinanceAcademyToken, она вызывает функцию в смарт-контракте BinanceAcademyToken, чтобы попросить его сделать это.

Его вызов содержится в чем-то похожем на обычную транзакцию Ethereum, которая выплачивает 0 ETH в контракт токена. Вызов включается в дополнительное поле транзакции, которое определяет, что хочет сделать Алиса. В нашем случае передаем токены Бобу.
Даже если она не отправляет эфир, ей все равно придется заплатить комиссию, чтобы ее транзакция была включена в блок. Если у нее нет ETH, она должна получить их перед передачей токенов.
Вот реальный пример вышеизложенного на Etherscan: Кто-то звонит по контракту BUSD. Вы можете видеть, что токены были переведены и комиссии оплачены, хотя в поле значения указано, что было отправлено 0 ETH.
Теперь, когда мы понимаем основы, давайте заглянем под капот, чтобы лучше понять структуру типичного контракта ERC-20.
Как создаются токены ERC-20?

Чтобы соответствовать стандарту ERC-20, ваш контракт должен включать шесть обязательных функций: TotalSupply, BalanceOf, Transfer, TransferFrom, Approval и Allowance. Кроме того, вы можете указать дополнительные функции, такие как имя, символ и десятичное число. Названия этих функций могут прояснить вам, что они делают. Если нет, не волнуйтесь, мы объясним это ниже.
Вот функции в том виде, в котором они представлены на языке Solidity, разработанном специально для Ethereum.
общийПоставка
функция totalSupply() публичное представление возвращает (uint256)При вызове пользователем вышеуказанная функция возвращает общий запас токенов, хранящихся в контракте.
balanceOf
функция balanceOf(address _owner) публичное представление возвращает (uint256 balance)В отличие от TotalSupply, BalanceOf принимает параметр (адрес). При вызове он возвращает баланс токенов, хранящихся по этому адресу. Помните, что учетные записи в сети Ethereum являются общедоступными, поэтому вы можете запросить баланс любого пользователя, если знаете его адрес.
передача
функция transfer(address _to, uint256 _value) public возвращает (bool success)Transfer передает токены от одного пользователя к другому. Здесь вы указываете адрес, на который хотите отправить деньги, и сумму перевода.
При вызове передача запускает нечто, называемое событием (в данном случае событием передачи), которое, по сути, сообщает блокчейну включить ссылку на него.
переводОт
функция transferFrom(address _from, address _to, uint256 _value) public возвращает (bool success)Функция TransferFrom — это удобная альтернатива передаче, которая обеспечивает немного больше возможностей программирования в децентрализованных приложениях. Как и передача, он используется для перемещения токенов, но токены не обязательно должны принадлежать лицу, вызывающему контракт.
Другими словами, вы можете уполномочить человека или другой контракт на перевод средств от вашего имени. Один из возможных вариантов использования включает оплату услуг на основе подписки, когда вы не хотите вручную отправлять платеж каждый день/неделю/месяц. Вместо этого вы позволяете программе сделать это за вас.
Эта функция запускает то же событие, что и передача.
утвердить
функция утвердить(адрес _spender, uint256 _value) public возвращает (bool success)Approval — еще одна полезная функция с точки зрения программирования. Благодаря этой функции вы можете ограничить количество токенов, которые смарт-контракт может снять с вашего баланса. Без этого контракт может работать неправильно (или стать вредоносным), что может привести к потере всех ваших средств.
Давайте вернемся к нашему примеру с моделью подписки. Допустим, у вас есть большое количество токенов BinanceAcademyToken и вы хотите настроить еженедельные регулярные платежи для потокового DApp. Вы заняты чтением контента Binance Academy день и ночь. Таким образом, вы не хотите каждую неделю тратить время на создание транзакции вручную.
У вас огромный баланс токенов BinanceAcademyToken, значительно превышающий сумму, необходимую для оплаты подписки. Чтобы децентрализованное приложение не истощило их все, вы можете установить ограничение с помощью утверждения. Предположим, ваша подписка стоит один токен BinanceAcademyToken в неделю. Если вы ограничите утвержденную стоимость двадцатью токенами, ваша подписка может быть оплачена автоматически в течение пяти месяцев.
В худшем случае, если DApp попытается вывести все ваши средства или будет обнаружена ошибка, вы можете потерять только двадцать токенов. Возможно, это не идеальное решение, но оно определенно более привлекательно, чем потеря всех ваших средств.
При вызове Approval вызывает событие утверждения. Как и событие передачи, оно записывает данные в блокчейн.
разрешение
функция allowance(address _owner, address _spender) public view возвращает (осталось uint256)Надбавка может использоваться вместе с утверждением. Когда вы предоставили контрактное разрешение на управление своими токенами, вы можете использовать его, чтобы проверить, сколько еще можно вывести. Например, если ваша подписка израсходовала двенадцать из двадцати утвержденных токенов, вызов функции разрешения должен вернуть в общей сложности восемь.
Дополнительные функции
Представленные ранее функции являются обязательными. Но функции, имя, символ и десятичную дробь включать не обязательно, но они могут сделать ваш контракт ERC-20 немного красивее. Соответственно, они позволяют вам добавить удобочитаемое имя, определить символ (например, ETH, BTC, BNB) и указать количество десятичных знаков, на которые делятся токены. Например, токены, используемые в качестве валюты, могут быть более делимыми, чем токен, представляющий право собственности на актив.
Посмотрите этот пример на GitHub, чтобы увидеть эти элементы в реальном контракте.
Что могут токены ERC-20?

Объединив все вышеперечисленные функции, мы получаем контракт 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 лишен некоторых функций, реализованных в других стандартах. Еще неизвестно, будут ли введены в действие последующие типы контрактов.



