Предварительные требования
Подготовка контракта
Следующий контракт-пример используется во всём руководстве:
Развёртывание с Foundry
Foundry — это быстрый набор инструментов для разработки на Ethereum, написанный на Rust.
-
Установите Foundry:
Возможно, вам потребуется выполнить source файла
.bashrc или .zshrc
-
Настройте новый проект Foundry:
-
Обновите
foundry.toml с настройками Plasma testnet:
-
Создайте файл
.env в корне проекта:
-
Загрузите переменные окружения:
-
Сохраните код контракта как
src/SimpleStorage.sol, затем разверните:
Foundry выведет хеш транзакции развёртывания и адрес контракта:
-
Протестируйте развёрнутый контракт, используя инструмент cast от Foundry. Сначала прочитайте сохранённые данные:
-
Затем обновите данные и снова прочитайте их:
Вывод должен быть примерно таким:
Развёртывание с Hardhat
Hardhat — это полнофункциональный фреймворк разработки с богатой поддержкой плагинов.
- Убедитесь, что у вас есть следующее:
- Node.js 20+ (требуется для совместимости с современным Hardhat)
- Знакомство с разработкой на Ethereum
- Кошелёк с testnet-токенами (см. подробности testnet-цепочки)
Node.js 18 и ниже больше не поддерживаются Hardhat и могут вызывать проблемы совместимости ES-модулей.
-
Проверьте версию Node.js:
Если вы используете Node.js 18 или ниже, обновитесь до Node.js 20+:
-
Инициализируйте новый проект Hardhat:
Если вы столкнётесь с проблемами совместимости, ознакомьтесь с документацией Hardhat для последних поддерживаемых версий.
Выберите Create a JavaScript project при появлении запроса.
-
Обновите
hardhat.config.js:
-
Создайте файл
.env в корне проекта:
-
Создайте каталог scripts и скрипт развёртывания:
-
Создайте
scripts/deploy.js:
-
Сохраните код контракта как
contracts/SimpleStorage.sol, затем разверните:
-
Готово!
Развёртывание с Ethers.js
Ethers.js предоставляет минимальный программный поток развёртывания.
-
Создайте новый проект:
-
Создайте файл
.env в корне проекта:
-
Создайте
compile.js для компиляции вашего Solidity-контракта:
-
Сохраните контракт как
SimpleStorage.sol, затем скомпилируйте:
Должен получиться вывод:
-
Создайте
deploy.js:
-
Запустите скрипт развёртывания:
Вывод должен быть примерно таким:
Проверка развёртывания
После развёртывания любым из приведённых способов проверьте развёртывание контракта.
Устранение неполадок
Проблемы совместимости с ES-модулями
Если вы видите ошибки вроде Error [ERR_REQUIRE_ESM]: require() of ES Module, это обычно означает:
-
Слишком старая версия Node.js: обновитесь до Node.js 20+, как указано в предварительных требованиях
-
Несоответствие версий зависимостей: если обновить Node.js невозможно, можно понизить проблемную зависимость:
Предупреждения о версии Node.js
Если вы видите предупреждения о неподдерживаемых версиях Node.js:
Обновитесь до Node.js 20+, следуя шагам в разделе предварительных требований.
Недостаточно средств
Убедитесь, что в кошельке достаточно testnet-токенов. Посетите testnet faucet.
Неправильная конфигурация сети
Проверьте, что конфигурация сети соответствует подробностям testnet-цепочки.
Сбой оценки газа
Установите явные лимиты газа в конфигурации развёртывания: