Создаем свой ERC20 токен на базе Ethereum за 2 минуты
Артём Лисовский 1 ноя 2017
Создаем свой ERC20 токен на базе Ethereum за 2 минуты
В задаче создания своего токена и проведения ICO нет никакой магии с технической стороны. Эта тропинка была протоптана настолько хорошо, что уже можно класть асфальт - чем займемся в этой и следующей статьях.
Готовясь к ICO вы должны понимать, что ICO - чистой воды маркетинговое событие. Если вы думаете, что для проведения вам понадобится штаб программистов, вы заблуждаетесь. Вам понадобится штаб маркетологов(или просто людей, готовых выполнять ваши поручения), а также нормальное количество валюты, чтобы привлечь внимание общественности. Да, существуют ICO, выехавшие без серьезных вложений (за счет своей идеи/опыта/связей), но давайте не будем тешить себя надеждами и лукавить - для сбора миллиона долларов вам придется вложить тысячи долларов в ICO.
Проработку ICO оставим на следующую статью, а пока создадим наш ERC20 токен на базе Ethereum максимально быстро.
Техническая часть
Я уже писал, что для создания своего токена у вас есть много путей, наиболее простые и популярные это:
- Перейти на Waves/CryptonoteStarter(или аналоги) и прямо в интерфейсе за 1 минуту выпустить свою монету
- Разобраться в Solidity/pyEthereum(токен на базе Ethereum). Используя знания и/или стандарт написания смарт-монет ERC20(по факту исходник монеты с многими вариантами блекджеков) задеплоить контракт.
Скажу честно - я лукавил. Вам не нужно разбираться в Solidity. Для запуска своего токена вам необходимо взять исходник токена ERC20, поменять пару строк и залить контракт в сеть одним из клиентов(оф.клиент Ethereum/Metamask/etc).
Что представляет собой смарт-контракт токена?
1. Это структура данных(читай таблица), состоящая из связи адреса Ethereum = количество токенов(целое число).
2. Это набор функций, осуществляющих проверку на владение определенным количеством токенов, передача токенов = списание(операция вычитания) токенов у пользователя с определенным адресом и пополнение(операция сложения) "баланса" другого пользователя внутри структуры данных, и прочая логика.
Когда идет обращение к смарт-контракту, вы либо читаете данные из его структуры данных(бесплатно, общедоступно), либо записываете их туда(платно, от имени своего кошелька). Поскольку операция записи будет происходить в сеть блокчейн Ethereum, вам необходимо будет заплатить за такую транзакцию майнерам. Чем больше вычислений внутри вашего смарт-контракта, тем больше необходимо будет заплатить.
ERC20 на пальцах
Из-за появления кучи бажных смарт-контрактов, пытающихся выполнить одни и те же действия, была предпринята попытка(удачная) стандартизировать выпускаемые токены. Сделано это было в первую очередь, чтобы:
- снизить риски потерять деньги в результате ошибок в смарт-контракте
- обеспечить возможность сторонним сервисам(биржам, кошелькам) бесприпятственно взаимодействовать(внедрять себе) с новыми токенами
Для выпуска токена стандарта ERC20 вам необходимо:
- выбрать название, например Best Coin
- выбрать символ , например BEC
- выбрать количество токенов, оно неизменно, например 10 000
- выбрать будут ли токены делиться, если да - то сколько знаков после запятой будет максимально.
Если вы доверяете community, можете воспользоваться утилитами - этой или другими. Проблема подобных сервисов - они не предоставляют исходный код, только байт-код. Поэтому нет уверености в их чистоте. Но чаще всего такие штуки пишут ребята с именем, поэтому доверять все-таки можно.
Деплоим наш токен
Теперь эти данные нам необходимо внести в смарт-контракт, доступный по ссылке. Скачиваем оба .sol файла. Переходим в редактор remix. Загружаем оба файла.
Открываем NewToken.sol, ставляем вместо переменных в <скобках> нужные значения:
- totalSupply - общее количество токенов
- name - полное название токена
- decimal - количество заков после запятой. Дело в том, что в контрактах все хранится только в целых числах. Поэтому вам следует указывать количество знаков, если хотите иметь возможность зачислять нецелое количество токенов
- symbol - символ для бирж
Должно получиться что-то в духе:
Сохраняем. Осталось задеплоить контракт в сеть. Для тестирования задеплоим в Ropsten test net. Для деплоя потребуется какой-либо клиент. Воспользуемся MetaMask - он не умеет компилировать смарт-контракты на Solidity, поэтому сперва произведем компиляцию.
В правой части редактора remix открываем вкладку compile. По умолчанию контракт компилируется автоматически. Выбрав свой контракт в select'е и нажав Details вы можете просмотреть байт-код и прочую информацию.
Для деплоя жмем Run, выбираем Injected Web3, выбираем Account, которым будем деплоить(он должен подгрузиться автоматически, если у вас установлен MetaMask в браузер). Вводим нужную информацию в поля(газ, value), жмем Create.
Жмем Submit. Ваш контракт задеплоен(после внесения в блокчейн, конечно). Деплой подтверждается в MetaMask'е иконкой с документом(она ведет на страницу транзакции) и надписью "Contract published".
Производим операции с нашим токеном
Для операций с токеном требуются два кошелька - тот у кого они уже есть(по умолчанию - создатель контракта, стандарт ERC20) и тот, кому нужно их перечислить.
Производить операции с нашим токеном(передавать его, например) мы можем либо на странице контракта на etherscan(ссылка в MetaMask'е), либо на странице remix.
Для передачи токенов вводим адрес получателя и количество. После этого(и внесения данных в блокчейн, конечно) можно проверить свой баланс или баланс получившего токены операцией balanceOf.
... Profit!
Вот и всё, развлекайтесь!