Вопреки ожиданиям, создание своего токена на Ethereum – процесс стандартизированный и подробно проработанный разработчиками платформы. Создатели намеренно стремились к тому, чтобы любой желающий, даже не обладающий специальными знаниями по программированию, мог запустить свою монету, пользуясь готовым блокчейном сети. Авторы, по сути, создали цифровой конструктор, в котором в исходнике токена стандарта ERC20 нужно изменить несколько строк и с помощью программы «залить» результат в сеть.
Содержание
Что нужно знать перед стартом
Ethereum – это среда, созданная огромным количеством соединенных между собой узлов (нод). Это объединение работает как единая машина, которую так и называют Ethereum Virtual Machine (сокращённо EVM). На базе сети действует система смарт-контрактов («умных контрактов»).
Сущность «умных контрактов» заключается в том, что обе стороны заключают некую операционную сделку, минуя посредников. Два условных лица без привлечения третьей стороны формируют условия контракта, которые «загружаются» в систему (гроссбух) в переведенном в код виде. Программа автоматически определяет соответствие правилам контракта. Если условия соблюдены, EVM подтвердит это и проведёт транзакцию. Если условия нарушены, система автоматически оштрафует «виновника» (если это предусмотрено правилами) и либо вернёт актив, либо производит другие действия, прописанные в коде. Причем в одностороннем порядке «по-тихому» переписать контракт нельзя, поскольку он храниться в децентрализованной цепи.
Формируя свою систему смарт-контрактов на базе блокчейна Ethereum, можно создавать собственный проект или децентрализованное приложение (dApps), расчетной единицей в котором будет такой токен. Примером внутренней валюты могут служить монеты систем SIA, Library и др. В самой сети Ethereum эти токены не дают каких-либо прав и привилегий, но могут иметь самостоятельную ценность.
Выделенные ветви проектов создают целую экосистему Ethereum, в которой потенциально единственной расчетной единицей можно было бы сделать основную монету ETH. Но это очень неудобно. Отдельные проекты и приложения могут жить собственной «жизнью», с разными темпами развиваться, менять конфигурацию и все эти изменения проще и естественнее проводить со специальным криптовалютным эквивалентом.
Однако полностью «придумывать» криптовалютный эквивалент «с нуля» означает встроить его в систему на всех уровнях и подуровнях, сделать «понятным» для различных бирж, кошельков, сервисов и dApp. А это сложно и чаще экономически нецелесообразно.
Поэтому, чтобы не «множить сущности», в 2015 году на DevCon 1 был представлен так называемый Initial Standards Token, или стандарт для токенов Ethereum. После принятия его кошельком Mist, тестирования и добавления необходимых требований, был сформирован действующий стандарт ERC-20 (что расшифровывается как Ethereum Request for Comments 20). Стандарт не является обязательным, но следование ему заметно облегчает работу пользователю по формированию своей монеты, и делает ее понятной приложениям и сторонним сервисам.
Инструкция ERC-20: стандарт Ethereum по созданию своей монеты
Содержательно смарт-контракт токена состоит из двух групп элементов.
- Структуры данных, связывающих сетевые адреса с количеством токенов, для чего существует набор публичных переменных.
- Набора функций, обеспечивающих пересылку активов между адресами (функции transfer и _transfer), перевод монет с чужих адресов (transferFrom), доступ других пользователей к средствам кошелька (approve), списание токенов (burn) и т.д.
Деятельность в сети может иметь вид бесплатного обращения к смарт-контракту для считывания данных из его структуры, а может иметь вид уже платной записи данных от имени принадлежащего пользователю кошелька. Плата вносится на счёт участников сети, которые обеспечивают операцию вычисления и записи в блокчейне Ethereum.
Для создания своего токена надо, прежде всего, придумать его название, символ, выбрать количество токенов и определиться с делимостью одной расчетной единицы. После этого нужно внести эти данные, для чего выполняется следующий набор действий:
- Выбирается стандартная форма смарт-контракта, которую можно скачать по ссылке: github.com/artyomLisovskij/solidity-erc20-token-bootstrap (скачивать нужно оба файла с расширением .sol).
- В редактор Ethereum Remix (который доступен по адресу: remix.ethereum.org) с помощью кнопки «Load» или значка «Папка» загружаются оба скачанных файла.
- В файле NewToken.sol (открытом в этот момент в редакторе Remix), вместо значений переменных, содержащихся в треугольных скобках, вносятся выбранные ранее значения:
- общего количества токенов – totalSupply (например, 123 тысячи),
- названия монеты – name (например, Best Token Ever),
- величины дробления – количества знаков после запятой – для возможности зачисления нецелого числа токенов – decimal (в примере – «4»),
- символического обозначения монеты – symbol (BTE по первым буквам наименования).
- Данные сохраняются, и код с внесенными изменениями развертывается в сети. Для этого нужно воспользоваться каким-либо клиентом, например, MetaMask, который хоть и не компилирует умные контракты, но компиляцию легко произвести в том же редакторе Remix. Для этого открывается вкладка Compile в левой части экрана и запускается нажатием кнопки «Compile». При установке «метки» в соседнем поле, компиляция контракта будет происходить автоматически.
- Развёртывание контрактов с помощью установленного в браузер клиента MetaMask производится следующим образом:
- Там же в редакторе Remix выбирается соседняя вкладка Run и подпункт Injected Web3. Ниже заполняются поля Gas limit и Value и нажимается Create.
- Account, от которого будет происходить развёртывание при установленном клиенте MetaMask, подгружается автоматически, считывая информацию со страницы.
- После нажатия «Submit» и внесения записи в блокчейн, контракт считается развернутым. Статут подтверждается в клиенте иконкой с изображением «документа», подписанной «Contract published». При нажатии на неё пользователь переходит на страницу транзакций.
Для осуществления операций с токеном нужны кошелек отправителя (например, создателя контракта) и кошелек получателя. Передавать токен можно, используя страницу Remix.
Розовый цвет обозначает платные операции записи, а голубой – бесплатные операции чтения. Для передачи монет вводится нужное количество токенов и адрес получателя. После проведения транзакции баланс можно проверить запуском операции balanceOf.
Публикация с использованием кошелька
Кроме описанного выше способа, можно осуществить публикацию умного контракта на блокчейне Ethereum с помощью официального кошелька MyEtherWallet.
- В открытом приложении нажимается кнопка «Contracts», а затем – «Deploy Contract». В открывшихся формах (Bytecode, ABI/JSON interface и Contract name) можно прописать тот же код, что и в Ethereum Remix.
- Для взаимодействия с контрактом нужно перейти в "Interact with Contract".
- В «Select Contract To Deploy» (выпадающее меню) из исходного кода выбирается тот контракт, который пользователь планирует опубликовать, и заполняются параметры его конструктора.
- Определение комиссии производится прокруткой бегунка «Select Fee». Увеличение комиссии ускоряет проведение транзакции в системе, однако при публикации токенов на этом обычно экономят.
- Отправка транзакции осуществляется нажатием «Sign Transaction».
Для добавления токена в Ethereum Wallet выбирается строка меню «Add Token», а затем указывается адрес, название токена, его символическое обозначение и количество десятичных. Для подтверждения введения данных нажимается кнопка «Ok».
На страницах ресурса github собрано множество примеров проектов по выпуску своих монет на платформе Ethereum. Найти исходники определённого токена можно по его адресу во вкладке «Source Code» на etherscan.io. Разработчики при запуске своего проекта рекомендуют авторам публиковать исходный код, поскольку предполагается, что прозрачность позволит повысить доверие пользователя к токену.
Отзывы и обсуждения