Эфириум токены — это, своего рода, криптовалюты, которые могут быть созданы в пределах блокчейна платформы Ethereum (Эфириум). Данная технология помогает стандартизировать разработку токенов и избавляет разработчиков от необходимости создания своего блокчейна. Также, они увеличивают спрос на криптовалюту Эфириум, так как комиссии за запуск умных контрактов оплачиваются именно Эфирами и почти все проекты продают свои токены за Эфиры.
Такие токены нужны, например, компаниям, выпускающим свой продукт, который нуждается во внутренней валюте. Для этого, компания должна провести Initial Coin Offering (ICO), то есть, сбор денег для проекта, продавая инвесторам токены, которые, в каком-то смысле, можно воспринимать как акции. Преимущества таких токенов совпадают с преимуществами блокчейна: они открыты, прозрачны и децентрализованы. Также, присутствует возможность добавлять им различный дополнительный функционал, если использовать смарт контракты. В данной статье мы напишем умный контракт, который реализует простейшую валюту для хранения средств и их обмена.
В сообществе Ethereum существует определённый стандарт для создания токенов с помощью смарт контрактов. Он называется ERC20 и описан по следующей ссылке:
https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md. Данный стандарт предполагает наличие определённых функций, которые обеспечат вашей криптовалюте совместимость с различными сервисами, работающими с токенами ERC20, с биржами и прочим. Так, например, вы сможете начать торговлю своей валютой сразу же после её создания, если воспользуетесь децентрализованной биржей
https://etherdelta.com.
Всё, что нужно там для начала торгов – это адрес умного контракта в сети Эфириум. Таким образом, пользователи смогут торговать вашим токеном на бирже уже с самого запуска проекта, не говоря уже о том, что децентрализованная биржа безопасней, надёжней и является более открытой, чем обычные централизованные биржи.
Код контракта токенаДля создания собственного ERC20 токена мы возьмём за основу стандартный пример контракта, который можно взять на официальном сайте Эфириума (
https://www.ethereum.org/token).
Разберём данный код.
Всего в контракте содержится шесть публичных переменных:
●
name – имя токена
●
symbol – символ, сокращенное название (например, ETH у Эфира)
●
decimals – количество символов после запятой
●
totalSupply – общее количество единиц токена
●
balanceOf – mapping, который содержит балансы адресов
●
allowance – mapping, который содержит данные о разрешениях на трату средств с чужих адресов
В конструктор передаются параметры для
name,
symbol и
totalSupply (только значение
initial, то есть сколько должно быть целых токенов без цифр после запятой!).
Decimals в конструктор не передается и имеет предустановленное значение
«18». Его можно изменить в коде при необходимости, но разработчики настоятельно рекомендуют именно значение по умолчанию.
Функции контракта токенаСтандарт токена ERC20 предусматривает наличие следующих функций:
●
_transfer(address _from, address _to, uint _value)
●
transfer(address _to, uint256 _value)
●
transferFrom(address _from, address _to, uint256 _value)
●
approve(address _spender, uint256 _value)
●
ApproveAndCall(address _spender, uint256 _value, bytes _extraData)
●
burn(uint256 _value)
●
burnFrom(address _from, uint256 _value)
Функция
transfer использует функцию
_transfer для перевода токенов между адресами в системе, в то время, как функция
transferFrom тем же способом переводит токены с чужих адресов. Доступ к средствам кошелька для других пользователей может быть открыт с помощью функции approve. Всё то же самое делает и функция
ApproveAndCall, но она ещё и вызывает событие, так называемый ивент. Для уничтожения монет предназначен метод
burn. Есть возможность уничтожать и монеты, к которым вам открыт доступ. Для этого используйте метод
burnFrom.
Разработчики своих криптовалют на базе Эфириума могут добавлять и другой код для расширения функционала проекта. Всё, что представлено выше – это лишь необходимый минимум для совместимости со стандартом. На github есть множество примеров интересных проектов на данной платформе, а найти исходники какой-то определенной монеты можно по её адресу на
https://etherscan.io во вкладке
«source code». Всем проектам рекомендуется публиковать исходный код, чтобы пользователи могли самостоятельно убедиться в прозрачности контракта и, соответственно, больше доверять ему.
Среда разработки умных контрактов для ЭфириумаТак как для написания умных контрактов не обязателен компилятор, писать их можно хоть в блокноте. Но куда более удобным способом станет использование специальной среды разработки, Solidity IDE. Данное приложение не требует загрузки на компьютер, открывается на любом устройстве, где есть браузер. Доступна данная среда разработки по ссылке
https://ethereum.github.io/browser-solidity/.
Среди особенностей Solidity IDE есть не только проверка синтаксиса, но и возможность произведения дебагинга контракта в тестовой сети, анализ кода и общие настройки, такие как версия компилятора и настройки виртуальной машины. Есть вкладка с поддержкой, где находится чат сообщества, в котором пользователи могут задавать вопросы и помогать друг другу в разработке. Как мы видим, возможностей даже больше, чем могло бы понадобиться для разработки среднестатистического контракта токена. Однако, данная среда разработки подходит и для простых валют, и для действительно серьезных проектов, которые используют децентрализованные приложения.
Публикация умного контрактаОпишем подробно процесс публикации смарт контрактов на блокчейне. Для реализации этого процесса нужно использовать кошелёк, который поддерживает работу с контрактами. В этой статье разберём случаи использования официального Ethereum Wallet и MyEtherWallet от сторонних разработчиков.
Ethereum WalletДля публикации контракта из официального кошелька вам нужно открыть приложение и нажать на кнопку “
Contracts”. Затем “
+ Deploy New Contract”. В открывшем поле “
Solidity Contract Source Code” вставьте исходный код проекта. В поле “
From” вверху нужно выбрать с какого кошелька вы хотите отправить транзакцию. В будущем, адрес этого кошелька будет считаться владельцем контракта. В выпадающем меню “
Select Contract To Deploy” необходимо выбрать из исходного кода контракт, который вы хотите опубликовать и заполнить параметры его конструктора (либо оставить их по умолчанию, зависит от вашего кода). Бегунком “
Select Fee” определите стоимость комиссии за транзакцию. Чем дороже комиссия, тем быстрее транзакция будет подтверждена в системе. В случае с публикацией токенов чаще всего нет нужды в особой спешке и можно сэкономить. Нажмите “
Send Transaction”.
Для добавления вашего токена в кошелёк выберите пункт меню “
Add Token”. Укажите адрес контракта, название, его сокращенное название и сколько десятичных у токена. Нажмите “
Ok”.
MyEtherWalletКак создать кошелек MyEtherWallet -
https://www.altcoinstalks.com/index.php?topic=20995.0Публикация умного контракта с помощью данного кошелька несколько отличается. Дело в том, что данный кошелёк поддерживает только публикацию байткода и не поддерживает исходный код, который написан на языке программирования Solidity. Для решения этой проблемы снова придётся воспользоваться Solidity IDE. Напишите\вставьте код вашего контракта в среду разработки. Найдите вкладку “
Compile” и нажмите “
Details”. В соответствующем блоке и будет находиться байткод смарт контракта.
Скопируйте его и перейдите на сайт
https://myetherwallet.com. Перейдите во вкладку “
Contracts” и выберите раздел “
Deploy Contract”. В поле “
Byte Code” вставьте то, что вы скопировали в IDE. Разблокируйте свой кошелёк используя приватный ключ или любой другой доступный вам способ и подтвердите транзакцию. Помните, что изменить стоимость транзакции можно изменив стоимость Газа вверху страницы. Узнать текущую стоимость Газа, которая является безопасной для подтверждения транзакции сетью, можно на сайте
https://ethgasstation.info/.
Чтобы добавить токен в ваш кошелёк в MyEtherWallet, перейдите во вкладку “
View Wallet Info”. Снова подключитесь к кошельку путём, который для вас наиболее удобен. Найдите в открывшейся вкладке раздел “
Token Balances” и нажмите на кнопку “
Add Token”. Введите в соответствующие поля адрес контракта, сокращенное название и сколько десятичных имеет токен. Нажмите “
Save”.
ВыводыСегодня, создание простой криптовалюты или сбор средств с помощью ICO (Initial Coin Offering) уже не является сложностью. В данной статье мы рассмотрели создание простейшего токена, который будет совместим с общепринятым стандартом ERC20, что обеспечит дополнительную совместимость со многими популярными сервисами. Как видно из инструкции, для создания подобного проекта на базе Эфириум не потребуется каких-либо особых навыков, только самое базовое понимание принципов программирования. Стоит также отметить, что технология децентрализованных приложений ещё очень молода, хоть и активно используется на рынке. Можно предположить, что в будущем, с развитием данной технологии будут также развиваться и упрощаться средства разработки умных контрактов и появляться новые платформы, которые будут предоставлять разработчикам и пользователям больший функционал, чем тот, который сейчас доступен в Эфириуме.