Вступление
Создать токен гораздо проще, чем вы себе представляете. На самом деле достаточно 10 минут, минимум теоретических знаний и пошаговый план действий.
В этой статье:
Вы получите пошаговый план создания токена.
Пройдемся по этапам от начала до конца.
Затронем устройство токена.
Расскажем про основные подводные камни.
Разбор принципа создания смарт-контракта
Первым шагом является написание кода смарт-контракта для вашего токена. Смарт-контракт — это программа, которая загружается в блокчейн и обладает собственным кодом и памятью. Код пишется на языке Solidity, верхнеуровневом языке (т.е. языке понятном для программиста). На этом этапе мы задаем свойства токена: Название, символ, выпускаемое количество и другое.
Следующий этап — это компиляция кода Solidity в ByteCode. Дело в том, что компьютеры в блокчейне не понимают слов, написанных на Solidity; они понимают только нули и единицы. Процесс компиляции превращает код из Solidity в ByteCode, чтобы компьютеры в сети блокчейна могли интерпретировать и выполнять смарт-контракт.
Для того чтобы разместить смарт-контракт в блокчейне, подключаемся через кошелек к любой ноде, компьютеру в сети блокчейна**.** Кошелек на рисунке помечен как «ММ» от Meta Mask. Немного больше информации: Транзакция в блокчейне подписывается с помощью связки приватного и публичного криптографических ключей, которые находятся в вашем кошельке. Приватный ключ обычно представлен в виде seed-фразы (никогда не делитесь им), а публичный ключ — это номер вашего кошелька. Кошельки имеют доступ к нодам блокчейна, что позволяет легко совершать транзакций.
Деплоим смарт контракт в блокчейн. Подписываем транзакцию с нашим смарт-контрактом
Этот пункт выполняют пользователи вашего токена. Пользователь через кошелек обращаемся к блокчейну, чтобы взаимодействовать со смарт-контрактом.
Кстати, если вы хотите создать или развиваете свой Web3 проект, то мы с командой подготовили подробный план развития блокчейн проекта и сформировали из него документ.
Там мы подробно описываем все этапы от создания идеи, привлечения инвестиций до технической реализации — https://clck.ru/38ZFYi
Создание Смарт-Контракта
Заходим в конструктор — https://constructor.futuremarkt.com/
Выбираем необходимые настройки
Name - отвечает за название токена.
Symbol - Символ токена.
Premint. Сколько токенов будет создано на адрес создателя смарт-контракта. Если не добавить функцию mint (создание новых токенов), то данный параметр будет показателем максимального.
Mintable. Если необходимо добавить функцию создания новых токенов. (Может только создатель, при выделенном флажке
Ownable
)Burnable. Если мы хотим иметь возможность сжигать токены. (Может только создатель, при выделенном флажке
Ownable
)
Копируем код.
Заходим в remix — https://remix.ethereum.org/
Создаем новый файл в папке “contracts”, с расширением
.sol
Вставляем код.
Компилируем код
Важно, тут может быть ошибка расхождения версий библиоткеи OpenZepplin (грубо говоря расхождение в коде). Если такая ошибка возникает, то просто удалите
initialOwner
и addressinitialOwner
Верно:
Выбираем подключение через MetaMask. Проверяем, чтобы был выбран верный смарт-контракт. Нажимаем «Deploy» и подтверждаем транзакцию.
Ваш токен можно увидеть в кошельке, добавив его по адресу. Либо посмотрев в сканере.
Что из себя представляет токен. Для тех кто хочет углубиться.
Если нажать через ctrl / cmd на строку
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
то вы переместитесь в файл непосредственно с кодом токена.ВАЖНО! Мы заведомо упрощаем код, чтобы вам было легче разобраться. Более подробно мы рассказываем про разработку токена вот в этих видео:
ERC-20 Чать I
ERC-20 Часть IIКлючевые моменты
Токен представляет собой по факту таблицу (или леджер), где напротив каждого пользователя пишется баланс человека. Когда мы деплоим смарт-контракт мы просто создаем переменную, в которой соодержится список пользователей, переменную с названием и несколько функций, которые позволяет дописывать и вычитать баланс у каждого пользователя
string private _name;
— переменная отвечающая за название токене;string private _symbol;
— переменная отвечающая за символ токен;mapping(address => uint256) private _balances;
— ключевая переменная отвечающая за балансы. Каждому адресу присваивается какое-то число.Конструктор
constructor()
функция, которая запускается при деплое смарт-контракта.constructor() ERC20("MyToken1", "MTK1") ERC20Permit("MyToken1") { _mint(msg.sender, 1000 * 10 ** decimals()); }
В данном случае вызовется функция
_mint()
которая положет на баланс пользователя 1000 токеновФункция отвечающая за перевод
Мы специально убрали все лишнее (в OpenZepplin вы увидите дополнительный код, который отвечает за безопасность)
function _transfer( address from, address to, uint256 amount ) internal virtual { uint256 fromBalance = _balances[from]; unchecked { _balances[from] = fromBalance - amount; _balances[to] += amount; } }
Как вы видите мы просто вычитаем из баланса пользователя значение
amount
(сколько хотим перевести), а адресату добавляем это значение.Создание новых токенов
function _mint(address account, uint256 amount) internal virtual { _totalSupply += amount; unchecked { _balances[account] += amount; } }
Функция минт просто добаляет какому-то пользователю заданное значение
amount
Как видите, ничего сложного.
Потенциальные проблемы
Указали недостаточное количество GasLimit. GasLimit отвечает за максимальное количество газа, которое вы готовы использовать.
Указали недостсточную стоимость Gas-а.
Как следствие, вроде банальная, но частая ошибка - недостаточно баланса на кошельке.
Разница версий OpenZepplin. Проблема в том, что используя конструкторы они могут использовать новейшую версию стандарта, а в Remix-е еще не обновили данную версию.
Название смарт-контракта должно соответствовать названию файла.
Сложная ошибка связанная с PUSH01. Связана она с разницей настроек компилятора и версией EVM. Просто попробуйте поменять EVM на более старую версию, например на Paris.
Ошибки на все случаи жизни подсвечиваются в Remix. Берем и переводим, в 98% случаев вы сами сможете их решить, в 2% случаев вы можете обратиться в наше сообщество.
Итог
Как видите, создать свою криптовалюту (токен) достаточно просто и быстро. Если вы хотите узнать больше о создание web3 проектов и о продвижение, подписывайтесь на наши каналы: