Hardhat框架
定义
Hardhat 是一个由 Nomiclabs
构建和维护的以太坊智能合约开发环境。它是一个可扩展的 Javascript 框架,提供了一套管理智能合约生命周期的工具和功能,包括编译、部署、测试和调试。
可以用npm
直接安装:
1 | npm install hardhat |
高度可定制性:Hardhat 的插件系统允许开发者通过自定义插件扩展其功能。
Hardhat 使用 Node 进行包管理,如果你熟悉 Node 及 Javascript, Hardhat 将非常简单上手。
创建Hardhat项目
- 创建项目目录
1 | mkdir hardhat-tutorial |
- 初始化Node项目
1 | npm init |
- 安装Hardhat
1 | npm install --save-dev hardhat |
将
hatdhat
添加到package.json
的devDependencies
中,而不是dependencies
中
在安装Hatdhat的目录下运行
1
npx hardhat
使用键盘选择”创建一个新的hardhat.config.js(
Create a JavaScript project
)” ,然后回车。
这个 JavaScript Hardhat 工程会默认下载
hardhat-toolbox 插件
及一些常规设置:
创建好的Hardhat工程包含文件有:
contracts
:智能合约目录scripts
:部署脚本文件test
:智能合约测试用例文件夹。hardhat.config.js
:配置文件,配置hardhat连接的网络及编译选项。
- 编写合约
可以开始编写合约了(contracts)目录下
推荐使用 OpenZepplin 等第三方库
安装:
1 | npm install @openzeppelin/contracts --save-dev |
在合约中直接import:
1 | import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; |
- 编译合约
可以直接在终端运行:
1 | npx hardhat compile |
以编译合约。
成功编译后,会在artifacts/contracts/
目录下生成Counter.json
和 build-info
Counter.json
包含了智能合约的 ABI 、字节码(Bytecode)等。tip:
智能合约的
ABI(Application Binary Interface)
信息,其中包括了合约的函数、事件等接口信息。这个文件通常会在与其他合约交互时使用,因为它可以被其他合约和 DApp 使用。
Bytecode
是部署合约所需的字节码(也称为创建时字节码),部署合约时,就是把该字节码作为交易的输入数据发送链上。
测试
基于ether.js与前面的合约交互,为智能合约编写自动化测试。
测试命令
1
npx hardhat test
部署合约
我们需要编写一个部署脚本。在scripts
文件夹,新建一个deploy.js
用来写部署脚本。
运行
1 | npx hardhat run scripts/deploy.js |
时, 可以合约会部署到Hardhat 内置网络上。
1 | > npx hardhat run scripts/deploy.js |
为了在运行任何任务时指示Hardhat连接到特定的EVM网络,可以使用--network
参数
1 | npx hardhat run scripts/deploy.js --network <network-name> |
参考
还有更多比如:编写测试用例,console.log,
network-name
在 hardhat.config.js
文件中的配置 ,代码开源验证,Hardhat 插件(Plugin)的使用…
阅读本笔记的学习参考原文::https://decert.me/tutorial/solidity/tools/hardhat