Найти в Дзене
Future Markt

Создаем свою криптовалюту в 2024 году

Создать токен гораздо проще, чем вы себе представляете. На самом деле достаточно 10 минут, минимум теоретических знаний и пошаговый план действий. В этой статье: Кстати, если вы хотите создать или развиваете свой Web3 проект, то мы с командой подготовили подробный план развития блокчейн проекта и сформировали из него документ. Там мы подробно описываем все этапы от создания идеи, привлечения инвестиций до технической реализации — https://clck.ru/38ZFYi Если нажать через ctrl / cmd на строку import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; то вы переместитесь в файл непосредственно с кодом токена. ВАЖНО! Мы заведомо упрощаем код, чтобы вам было легче разобраться. Более подробно мы рассказываем про разработку токена вот в этих видео: 
ERC-20 Чать I
ERC-20 Часть II Токен представляет собой по факту таблицу (или леджер), где напротив каждого пользователя пишется баланс человека. Когда мы деплоим смарт-контракт мы просто создаем переменную, в которой соодержится список пользователей
Оглавление

Вступление

Создать токен гораздо проще, чем вы себе представляете. На самом деле достаточно 10 минут, минимум теоретических знаний и пошаговый план действий.

В этой статье:

  • Вы получите пошаговый план создания токена.
  • Пройдемся по этапам от начала до конца.
  • Затронем устройство токена.
  • Расскажем про основные подводные камни.

Разбор принципа создания смарт-контракта

Принцип создания смарт-контракта
Принцип создания смарт-контракта
  1. Первым шагом является написание кода смарт-контракта для вашего токена. Смарт-контракт — это программа, которая загружается в блокчейн и обладает собственным кодом и памятью. Код пишется на языке Solidity, верхнеуровневом языке (т.е. языке понятном для программиста). На этом этапе мы задаем свойства токена: Название, символ, выпускаемое количество и другое.
  2. Следующий этап — это компиляция кода Solidity в ByteCode. Дело в том, что компьютеры в блокчейне не понимают слов, написанных на Solidity; они понимают только нули и единицы. Процесс компиляции превращает код из Solidity в ByteCode, чтобы компьютеры в сети блокчейна могли интерпретировать и выполнять смарт-контракт.
  3. Для того чтобы разместить смарт-контракт в блокчейне, подключаемся через кошелек к любой ноде, компьютеру в сети блокчейна**.** Кошелек на рисунке помечен как «ММ» от Meta Mask. Немного больше информации: Транзакция в блокчейне подписывается с помощью связки приватного и публичного криптографических ключей, которые находятся в вашем кошельке. Приватный ключ обычно представлен в виде seed-фразы (никогда не делитесь им), а публичный ключ — это номер вашего кошелька. Кошельки имеют доступ к нодам блокчейна, что позволяет легко совершать транзакций.
  4. Деплоим смарт контракт в блокчейн. Подписываем транзакцию с нашим смарт-контрактом
  5. Этот пункт выполняют пользователи вашего токена. Пользователь через кошелек обращаемся к блокчейну, чтобы взаимодействовать со смарт-контрактом.

Кстати, если вы хотите создать или развиваете свой Web3 проект, то мы с командой подготовили подробный план развития блокчейн проекта и сформировали из него документ.

Там мы подробно описываем все этапы от создания идеи, привлечения инвестиций до технической реализации — https://clck.ru/38ZFYi

Создание Смарт-Контракта

  • Заходим в конструктор — https://constructor.futuremarkt.com/
  • Выбираем необходимые настройки:
    -
    Name - отвечает за название токена.
    -
    Symbol - Символ токена.
    -
    Premint. Сколько токенов будет создано на адрес создателя смарт-контракта. Если не добавить функцию mint (создание новых токенов), то данный параметр будет показателем максимального.
    -
    Mintable. Если необходимо добавить функцию создания новых токенов. (Может только создатель, при выделенном флажке Ownable)
    -
    Burnable. Если мы хотим иметь возможность сжигать токены. (Может только создатель, при выделенном флажке Ownable)
Настройка конструктора токенов
Настройка конструктора токенов
  • Копируем код.
  • Заходим в remix — https://remix.ethereum.org/
  • Создаем новый файл в папке “contracts”, с расширением .sol
-3
  • Вставляем код.
  • Компилируем код

Важно, тут может быть ошибка расхождения версий библиоткеи OpenZepplin (грубо говоря расхождение в коде). Если такая ошибка возникает, то просто удалите initialOwner и address initialOwne
Важно, тут может быть ошибка расхождения версий библиоткеи OpenZepplin (грубо говоря расхождение в коде). Если такая ошибка возникает, то просто удалите initialOwner и address initialOwne
Верно
Верно
  • Выбираем подключение через MetaMask. Проверяем, чтобы был выбран верный смарт-контракт. Нажимаем «Deploy» и подтверждаем транзакцию.
-6
  • Ваш токен можно увидеть в кошельке, добавив его по адресу. Либо посмотрев в сканере
-7

Что из себя представляет токен. Для тех кто хочет углубиться.

Если нажать через 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

Как видите, ничего сложного.

Потенциальные проблемы

  1. Указали недостаточное количество GasLimit. GasLimit отвечает за максимальное количество газа, которое вы готовы использовать.
  2. Указали недостсточную стоимость Gas-а.
  3. Как следствие, вроде банальная, но частая ошибка - недостаточно баланса на кошельке.
  4. Разница версий OpenZepplin. Проблема в том, что используя конструкторы они могут использовать новейшую версию стандарта, а в Remix-е еще не обновили данную версию.
  5. Название смарт-контракта должно соответствовать названию файла.
  6. Сложная ошибка связанная с PUSH01. Связана она с разницей настроек компилятора и версией EVM. Просто попробуйте поменять EVM на более старую версию, например на Paris.
  7. Ошибки на все случаи жизни подсвечиваются в Remix. Берем и переводим, в 98% случаев вы сами сможете их решить, в 2% случаев вы можете обратиться в наше сообщество.
-8

Итог

Как видите, создать свою криптовалюту (токен) достаточно просто и быстро. Если вы хотите узнать больше о создание web3 проектов и о продвижение, подписывайтесь на наши каналы: