Как
создать свою
криптовалюту• Экономика » Финансы » Платежные средства » Платежные системы интернета » Криптовалюта в 2024 (
Ethereum• Экономика » Финансы » Платежные средства » Платежные системы интернета » Криптовалюта » Ethereum подобные сети). Написание
кода.
Как создать свою криптовалюту• Экономика » Финансы » Платежные средства » Платежные системы интернета » Криптовалюта в 2024 (Ethereum• Экономика » Финансы » Платежные средства » Платежные системы интернета » Криптовалюта » Ethereum подобные сети). Написание кода.
Вступление
Создать токен гораздо проще, чем вы себе представляете. На самом деле
достаточно 10 минут, минимум теоретических знаний и пошаговый план действий.
В этой статье:
Вы получите пошаговый план создания токена.
Пройдемся по этапам от начала до конца.
Затронем устройство токена.
Расскажем про основные подводные камни.
Разбор принципа создания смарт-контракта
Принцип создания смарт-контракта
Первым шагом является написание кода смарт-контракта для вашего токена.
Смарт-контракт — это программа, которая загружается в блокчейн и обладает
собственным кодом и памятью. Код пишется на языке Solidity, верхнеуровневом
языке (т.е. языке понятном для программиста). На этом этапе мы задаем свойства
токена: Название, символ, выпускаемое количество и другое.
Следующий этап — это компиляция кода Solidity в ByteCode. Дело в том, что
компьютеры в блокчейне не понимают слов, написанных на Solidity; они понимают
только нули и единицы. Процесс компиляции превращает код из Solidity в
ByteCode, чтобы компьютеры в сети блокчейна могли интерпретировать и выполнять
смарт-контракт.
Для того чтобы разместить смарт-контракт в блокчейне, подключаемся через
кошелек к любой ноде, компьютеру в сети блокчейна**.** Кошелек на рисунке
помечен как «ММ» от Meta Mask. Немного больше информации: Транзакция в
блокчейне подписывается с помощью связки приватного и публичного
криптографических ключей, которые находятся в вашем кошельке. Приватный ключ
обычно представлен в виде seed-фразы (никогда не делитесь им), а публичный
ключ — это номер вашего кошелька. Кошельки имеют доступ к нодам блокчейна, что
позволяет легко совершать транзакций.
Деплоим смарт контракт в блокчейн. Подписываем транзакцию с нашим
смарт-контрактом
Этот пункт выполняют пользователи вашего токена. Пользователь через кошелек
обращаемся к блокчейну, чтобы взаимодействовать со смарт-контрактом.
Создание Смарт-Контракта
Заходим в конструктор — https://constructor.futuremarkt.com/
Выбираем необходимые настройкиНастройка конструктора токеновName - отвечает за
название токена.Symbol - Символ токена.Premint. Сколько токенов будет создано
на адрес создателя смарт-контракта. Если не добавить функцию mint (создание
новых токенов), то данный параметр будет показателем максимального.Mintable.
Если необходимо добавить функцию создания новых токенов. (Может только
создатель, при выделенном флажке Ownable)Burnable. Если мы хотим иметь
возможность сжигать токены. (Может только создатель, при выделенном флажке
Ownable)
Копируем код.
Заходим в remix — https://remix.ethereum• Экономика » Финансы » Платежные средства » Платежные системы интернета » Криптовалюта » Ethereum.org/
Создаем новый файл в папке “contracts”, с расширением .sol
Вставляем код.Компилируем кодВажно, тут может быть ошибка расхождения версий
библиоткеи OpenZepplin (грубо говоря расхождение в коде). Если такая ошибка
возникает, то просто удалите initialOwner и address initialOwnerВерно:
Выбираем подключение через MetaMask. Проверяем, чтобы был выбран верный
смарт-контракт.
Нажимаем «Deploy» и подтверждаем транзакцию.UntitledВаш токен можно увидеть в
кошельке, добавив его по адресу. Либо посмотрев в сканере.Что из себя
представляет токен.
Для тех кто хочет углубиться.Если нажать через ctrl / cmd на строку import
"@openzeppelin/contracts/token/ERC20/ERC20.sol"; то вы переместитесь в файл
непосредственно с кодом токена.
Ключевые моменты
Токен представляет собой по факту таблицу (или леджер), где напротив каждого
пользователя пишется баланс человека. Когда мы деплоим смарт-контракт мы
просто создаем переменную, в которой соодержится список пользователей,
переменную с названием и несколько функций, которые позволяет дописывать и
вычитать баланс у каждого пользователя
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.
Итог
Как видите, создать свою криптовалюту• Экономика » Финансы » Платежные средства » Платежные системы интернета » Криптовалюта (токен) достаточно просто и быстро.