Меню

Что такое стандарт ERC20?

Эта статья написана для пользователей, которые знакомы с такими понятиями, как: блокчейн Ethereum, dapps, smart-контракты и ICO.

Если вы хотите больше узнать о криптовалюте Ethereum, читайте статью Что такое Ethereum? Руководство для начинающих

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

Все транзакции в сети Ethereum, а также вычислительные затраты на выполнение смарт-контрактов, оплачиваются в эфире — криптовалюте Ethereum.

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

Если вы хотите больше узнать об основах ICO, читайте статью Основы ICO. Инвестировать или нет? Снимая лапшу с ушей

Если вы хотите больше узнать о том, как избежать участия в мошеннических ICO, читайте статью Как избежать участия в мошеннических ICO?

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

Эти специализированные Ethereum-dapp токены могут быть разработаны для создания целой сети dapp и применяться для различных целей: для факторинг-счетов, browser-wide платежей и выпуска дебетовых криптовалютных карт.

Все упомянутые цели в настоящее время достигнуты с помощью dapp-токенов на основе Ethereum, которые используют очень распространенный стандарт программирования. На самом деле, 99% всех существующих токенов Ethereum соответствуют этому стандарту — ERC20.

Стандарт ERC20, Ethereum Requests for Comment, является классическим набором правил программирования, в соответствии с которыми токен на основе Ethereum будет работать.

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

Введение в Solidity

Самый популярный клиент Ethereum в настоящее время написан на Google’s GO, но выбор удобного для разработчиков языка смарт-контрактов — это нетрудная задача. Создатели могут выбирать между Vyper, Bamboo, Serpent и Solidity.

В оставшейся части этой статьи мы разберём основные моменты синтаксиса Solidity.

Solidity — это высокоуровневый контрактный язык программирования, используемый для реализации смарт-контрактов. Синтаксис Solidity подходит для тех, кто знаком с программированием — это смесь концепций Javascript, Python и C.

У него есть система типов, он поддерживает наследование и имеет множество библиотек. Для получения дополнительной информации о Solidity посмотрите документацию здесь: https://solidity.readthedocs.io/en/develop/#

Пошаговое руководство по интерфейсу ERC20

Давайте изучим немного глубже, как этот стандарт реализуется в сети Ethereum — как уже упоминалось ранее, мы рассмотрим это на примере синтаксиса Solidity.

В царстве Ethereum все начинается и заканчивается контрактами. Документация Solidity даёт следующее определение контрактам: “набор кода (его функции) и данных (его состояние), которые находятся по определённому адресу в блокчейне Ethereum”. Контрактам Ethereum присуще наследование — контракт может быть примером для другого контракта.

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

Из этого следует, что любой токен-контракт на ERC20 не компилируется без родительского контракта. Разработчики Ethereum теперь знают, какие функции и поведение они могут ожидать при взаимодействии с любым токеном ERC20.

Стандарт ERC20 — это интерфейсный контракт, который содержит в общей сложности шесть исполняемых функций и два события.

Allowance

Функция Allowance позволяет двум адресам создавать повторяющуюся одностороннюю передачу. Адрес кошелька с токенами и второй кошелек-отправитель определяются как два кошелька, которые будут участвовать в повторных транзакциях.

В частности, кошелек-отправитель выведет определённую сумму из кошелька с токенами с определенным интервалом — оба из них — это переменные, которые будут определены позже.

Approve

Функция approve вытекает из предыдущей функции: она позволяет двум адресам повторно проводить односторонний вывод. Approve представляет собой стандартную функцию, которая требует, чтобы владелец кошелька “одобрил” транзакцию, которая проходит от его имени в контексте Allowance.

Для этой функции требуются два входа: адрес отправителя и количество токенов. Результат определяется логикой функции, одобряющей или отклоняющей событие.

BalanceOf

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

TotalSupply

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

Функция возвращает общедоступную константу TotalSupply unassigned integer (uint), которая показывает общее количество токенов. Эта константа обычно определяется одним из двух способов: хардкодингом переменных или финансированием из оригинального кошелька.

Transfer

Функция Transfer является основной функцией любого токена ERC20. Она определяет и реализует трансфер wallet-owner-to-peer. Поскольку эту функцию вызывают владельцы кошельков, требуются только два параметра: адрес получателя и количество отправленных токенов.

Эти параметры обычно инициализируются как (address to) и (uint tokens). Возвращаемое значение Transfer — это просто логическое значение, которое подтверждает, получил ли пользователь (address to) отправленные токены.

TransferFrom

Функция TransferFrom позволяет использовать смарт-контракт для осуществления перевода с параметрами, переданными от имени владельца кошелька. Обратите внимание на различия с предыдущей функцией.

Функция Transfer позволяла владельцу кошелька напрямую отправлять токены на адрес. А TransferFrom разрешает использовать смарт-контракт для отправки токенов на имя владельцев кошелька, например, заполнять заказ на бирже, своевременно выпускать средства или выплачивать выигрыш за игру.

Функция TransferFrom имеет три входных параметра: адрес владельца кошелька, адрес кошелька получателя и количество отправленных токенов. Они часто инициализируются в следующем синтаксисе: (address from, address to, uint tokens). Выход функции точно такой же, как и выход Transfer: одно общедоступное логическое значение, которое описывает успех или сбой транзакции.

Резюме

Шесть функций, описанных выше, являются столпами, на которых держатся 99% всех существующих токенов ERC20. За некоторыми исключениями (мы о тебе, Golem) разработчики Ethereum могут чувствовать себя в безопасности, зная, чего ожидать от этих функций при разработке внутренних контрактов или при взаимодействии с внешними публичными контрактами.

Оставить комментарий

ТОП 3 криптобиржи