Вступление

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

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

  • Вы получите пошаговый план создания токена.

  • Пройдемся по этапам от начала до конца.

  • Затронем устройство токена.

  • Расскажем про основные подводные камни.

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

Frame 1.png
Принцип создания смарт-контракта
  1. Первым шагом является написание кода смарт-контракта для вашего токена. Смарт-контракт — это программа, которая загружается в блокчейн и обладает собственным кодом и памятью. Код пишется на языке Solidity, верхнеуровневом языке (т.е. языке понятном для программиста). На этом этапе мы задаем свойства токена: Название, символ, выпускаемое количество и другое.

  2. Следующий этап — это компиляция кода Solidity в ByteCode. Дело в том, что компьютеры в блокчейне не понимают слов, написанных на Solidity; они понимают только нули и единицы. Процесс компиляции превращает код из Solidity в ByteCode, чтобы компьютеры в сети блокчейна могли интерпретировать и выполнять смарт-контракт.

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

  4. Деплоим смарт контракт в блокчейн. Подписываем транзакцию с нашим смарт-контрактом

  5. Этот пункт выполняют пользователи вашего токена. Пользователь через кошелек обращаемся к блокчейну, чтобы взаимодействовать со смарт-контрактом.

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

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

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

  • Заходим в конструктор — https://constructor.futuremarkt.com/

  • Выбираем необходимые настройки

    Untitled
    Настройка конструктора токенов
    • Name - отвечает за название токена.

    • Symbol - Символ токена.

    • Premint. Сколько токенов будет создано на адрес создателя смарт-контракта. Если не добавить функцию mint (создание новых токенов), то данный параметр будет показателем максимального.

    • Mintable. Если необходимо добавить функцию создания новых токенов. (Может только создатель, при выделенном флажке Ownable)

    • Burnable. Если мы хотим иметь возможность сжигать токены. (Может только создатель, при выделенном флажке Ownable)

  • Копируем код.

  • Заходим в remix — https://remix.ethereum.org/

  • Создаем новый файл в папке “contracts”, с расширением .sol

    Untitled
  • Вставляем код.

  • Компилируем код

    • Важно, тут может быть ошибка расхождения версий библиоткеи OpenZepplin (грубо говоря расхождение в коде). Если такая ошибка возникает, то просто удалите initialOwner и address initialOwner

      Untitled
    • Верно:

      Untitled
  • Выбираем подключение через MetaMask. Проверяем, чтобы был выбран верный смарт-контракт. Нажимаем «Deploy» и подтверждаем транзакцию.

    Untitled
    Untitled
  • Ваш токен можно увидеть в кошельке, добавив его по адресу. Либо посмотрев в сканере.

    Untitled

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

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

      Скриншот-23-01-2024 17_50_18.png
    7. Ошибки на все случаи жизни подсвечиваются в Remix. Берем и переводим, в 98% случаев вы сами сможете их решить, в 2% случаев вы можете обратиться в наше сообщество.

      Untitled

    Итог

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

    1. Telegram-канал

    2. YouTube

    3. Telegram-чат

Комментарии (6)


  1. temnikov_vasiliy
    11.07.2024 11:22

    спасибо!


    1. HemulGM
      11.07.2024 11:22
      +1

      ... не надо


      1. FutureMarkt Автор
        11.07.2024 11:22

        Почему?
        В чем проблема токенизации?


  1. j-b
    11.07.2024 11:22

    А сколько надо заплатить сети за создание, и что с созданием ликвидности?


    1. UnknownUser
      11.07.2024 11:22

      Пишете Илону Маску, он делает твит про ваш мегатокен. Профит )).


    1. FutureMarkt Автор
      11.07.2024 11:22

      В зависимости от сети)

      Если любое L2 решение, то копейки.

      По ликвидности чуть позже тоже статью напишем. Пока только сделали видео:
      https://youtu.be/Uv78duSXpUw?si=O-e1SNui3pEO7yyA