— введение
— Фронтенд-приложение
— Как его использовать
— отправить токен
— hardhat Tutorials , hardhat 教程
— Контакт 联系方式
— введение
Если вы хотите быстро начать работу над своим dApp или посмотреть, как выглядит весь проект с фронтендом, вы можете воспользоваться нашим репозиторием boilerplate.
— Что включено
- Контракт Solidity, который мы использовали в этом руководстве
- Тесты для всей функциональности контракта
- Минимальный React-фронтенд для взаимодействия с контрактом с использованием ethers.js
— Контракт Solidity & тесты
В корне репозитория вы найдете проект Hardhat, который мы собрали в этом руководстве с контрактом Token
. Чтобы освежить в памяти то, что он реализует:
- Существует фиксированный общий запас токенов, который не может быть изменен.
- Весь запас закреплен за адресом, который развертывает контракт.
- Любой человек может получить токены.
- Любой, у кого есть хотя бы один токен, может передавать токены.
- Токен не является делимым. Вы можете передать 1, 2, 3 или 37 токенов, но не 2,5.
— Приложение Frontend
В frontend
вы найдете простое приложение, которое позволяет пользователю делать две вещи:
- Проверить баланс подключенного кошелька
- Отправить токены на адрес.
Это отдельный проект npm, и он был создан с помощью create-react-app
, так что это означает, что он использует webpack и babel.
— Архитектура файлов фронтенда
-
- Все остальные компоненты просто рендерят HTML, никакой логики.
— Как использовать
Сначала клонируйте репозиторий, а затем подготовьтесь к развертыванию контракта:
cd hardhat-boilerplate
npm install
npx hardhat node
Здесь мы просто установим зависимости проекта npm, а запустив npx hardhat node
, мы запустим экземпляр Hardhat Network, к которому вы сможете подключиться с помощью MetaMask. В другом терминале в той же директории запустите:
npx hardhat --network localhost run scripts/deploy.js
Это развернет контракт в Hardhat Network. После этого запустите веб-приложение react:
cd frontend
npm install
npm run start
Затем откройте http://127.0.0.1:3000/ в браузере и вы должны увидеть следующее:
Установите вашу сеть в MetaMask на 127.0.0.1:8545
.
Теперь нажмите кнопку в веб-приложении. Вы должны увидеть следующее:
— отправить токен
Здесь происходит то, что код фронтенда для отображения текущего баланса кошелька определяет, что баланс 0
, поэтому вы не сможете попробовать функцию передачи. Запуск:
npx hardhat --network localhost faucet <your address>
Вы запустите включенную нами пользовательскую задачу Hardhat, которая использует баланс развертывающего аккаунта для отправки 100 MHT и 1 ETH на ваш адрес. Это позволит вам отправить токены на другой адрес.
Код задачи можно посмотреть в /tasks/faucet.js
, который требуется из hardhat.config.js
.
$ npx hardhat --network localhost faucet 0x0987a41e73e69f60c5071ce3c8f7e730f9a60f90
Transferred 1 ETH and 100 tokens to 0x0987a41e73e69f60c5071ce3c8f7e730f9a60f90
В терминале, где вы запустили npx hardhat node
, вы также должны увидеть:
eth_sendTransaction
Contract call: Token#transfer
Transaction: 0x460526d98b86f7886cd0f218d6618c96d27de7c745462ff8141973253e89b7d4
From: 0xc783df8a850f42e7f7e57013759c285caa701eb6
To: 0x7c2c195cd6d34b8f845992d380aadb2730bb9c6f
Value: 0 ETH
Gas used: 37098 of 185490
Block #8: 0x6b6cd29029b31f30158bfbd12faf2c4ac4263068fd12b6130f5655e70d1bc257
console.log:
Transferring from 0xc783df8a850f42e7f7e57013759c285caa701eb6 to 0x0987a41e73e69f60c5071ce3c8f7e730f9a60f90 100 tokens
Показываю вывод console.log
из функции transfer()
в нашем контракте, а вот так будет выглядеть веб-приложение после запуска задачи faucet:
Попробуйте поиграть с ним и почитать код. Он полон комментариев, объясняющих происходящее и четко указывающих, какой код является шаблоном Ethereum, а какой — логикой dApp. Это должно облегчить повторное использование репозитория в вашем проекте.
— hardhat Tutorials , hardhat 教程
CN 中文 Github hardhat 教程 : github.com/565ee/hardhat_CN
CN 中文 CSDN hardhat 教程 : blog.csdn.net/wx468116118
EN 英文 Github hardhat Tutorials : github.com/565ee/hardhat_EN
— Контакт 联系方式
Домашняя страница : 565.ee
GitHub : github.com/565ee
Электронная почта : 565.eee@gmail.com
Facebook : facebook.com/565.ee
Twitter : twitter.com/565_eee
Telegram : t.me/ee_565