Вступление
Создать токен гораздо проще, чем вы себе представляете. На самом деле достаточно 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% случаев вы можете обратиться в наше сообщество (https://t.me/FM_Edu_Chat)
Итог
Как видите, создать свою криптовалюту (токен) достаточно просто и быстро. Если вы хотите узнать больше о создание web3 проектов и о продвижение, подписывайтесь на наши каналы:
-
Telegram-канал https://t.me/fmweb3
-
Telegram-чат https://t.me/FM_Edu_Chat
-
ссылка на оригинал статьи https://habr.com/ru/articles/828184/
Добавить комментарий