Что такое Ethereum и ERC-20?
Ethereum — криптовалюта, основанная на технологии блокчейн. Язык Solidity используется для написания смарт-контрактов на Ethereum. Каждая операция в Solidity имеет стоимость в эфире (ETH), оплачивающую вычислительные ресурсы сети.
ERC-20 — стандарт токенов на блокчейне Ethereum. Он предоставляет базовые функции управления токенами:
- Передача токенов
- Проверка баланса
- Разрешение на передачу токенов от имени другого пользователя
Этот стандарт обеспечивает совместимость с децентрализованными приложениями (dApps), биржами и кошельками. Для токенов с уникальными характеристиками используется кастомный контракт. Однако, для стандартной монеты, ERC-20 значительно упрощает процесс.
Создание ERC-20 токена
Для создания токена используется библиотека OpenZeppelin, предоставляющая безопасные реализации стандартов смарт-контрактов.
1. Установка библиотеки:
Установите библиотеку OpenZeppelin через терминал (команда зависит от менеджера пакетов, например, npm install @openzeppelin/contracts).
2. Создание контракта:
Создайте файл (например, ProgerToken.sol) с контрактом, используя импорт библиотек OpenZeppelin. Контракт будет короче кастомного благодаря использованию готового стандарта ERC-20. Конструктор указывает:
- Название монеты
- Символ монеты
- Начальное количество токенов (автоматически вычисляется)
Конструктор вызывает конструктор родительского контракта ERC-20 и создаёт начальное количество токенов, присваивая их создателю контракта. Функции вывода средств и перевода на другой кошелёк реализованы стандартом ERC-20.
3. Обновление файла деплоя:
Обновите файл деплоя (например, ProgerTokenDeployment.js), указав путь к новому контракту (ProgerToken.sol).
4. Компиляция и тестирование:
Скомпилируйте контракт (например, npx hardhat compile).
Затем выполните в терминале:
- npx hardhat node для запуска локальной сети.
- npx hardhat run scripts/ProgerTokenDeployment.js —network localhost для тестового деплоя.
- npx hardhat console —network localhost для запуска консоли.
5. Тестирование функциональности:
В консоли протестируйте базовые функции:
- Проверьте баланс с помощью token.balanceOf(signer.address).
- Переведите токены с помощью token.transfer(recipientAddress, amount).
После выполнения этих шагов вы получите функциональный токен в локальной сети, позволяющий проверять баланс и переводить токены.
В этом уроке создан функциональный ERC-20 токен с использованием стандарта ERC-20 и библиотеки OpenZeppelin. Токен пока существует только в локальной сети. Развёртывание в основной сети Ethereum будет показано в последующих уроках.