定义

Hardhat 是一个由 Nomiclabs 构建和维护的以太坊智能合约开发环境。它是一个可扩展的 Javascript 框架,提供了一套管理智能合约生命周期的工具和功能,包括编译、部署、测试和调试。

可以用npm直接安装:

1
2
npm install hardhat
npx hardhat init

高度可定制性:Hardhat 的插件系统允许开发者通过自定义插件扩展其功能。

Hardhat 使用 Node 进行包管理,如果你熟悉 Node 及 Javascript, Hardhat 将非常简单上手。

创建Hardhat项目

  1. 创建项目目录
1
2
mkdir hardhat-tutorial
cd hardhat-tutorial
  1. 初始化Node项目
1
npm init
  1. 安装Hardhat
1
npm install --save-dev hardhat

hatdhat添加到 package.jsondevDependencies 中,而不是 dependencies

  1. 在安装Hatdhat的目录下运行

    1
    npx hardhat
  2. 使用键盘选择”创建一个新的hardhat.config.js(Create a JavaScript project)” ,然后回车。

这个 JavaScript Hardhat 工程会默认下载 hardhat-toolbox 插件及一些常规设置:

创建好的Hardhat工程包含文件有:

  • contracts:智能合约目录
  • scripts :部署脚本文件
  • test:智能合约测试用例文件夹。
  • hardhat.config.js:配置文件,配置hardhat连接的网络及编译选项。
  1. 编写合约

可以开始编写合约了(contracts)目录下

推荐使用 OpenZepplin 等第三方库

安装:

1
npm install @openzeppelin/contracts --save-dev

在合约中直接import:

1
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
  1. 编译合约

可以直接在终端运行:

1
npx hardhat compile

以编译合约。

成功编译后,会在artifacts/contracts/目录下生成Counter.jsonbuild-info

Counter.json包含了智能合约的 ABI 、字节码(Bytecode)等。

tip:

智能合约的 ABI(Application Binary Interface)信息,其中包括了合约的函数、事件等接口信息。这个文件通常会在与其他合约交互时使用,因为它可以被其他合约和 DApp 使用。

Bytecode 是部署合约所需的字节码(也称为创建时字节码),部署合约时,就是把该字节码作为交易的输入数据发送链上。

  1. 测试

    基于ether.js与前面的合约交互,为智能合约编写自动化测试。

    测试命令

    1
    npx hardhat test
  2. 部署合约

我们需要编写一个部署脚本。在scripts文件夹,新建一个deploy.js 用来写部署脚本。

运行

1
npx hardhat run scripts/deploy.js

时, 可以合约会部署到Hardhat 内置网络上。

1
2
3
> npx hardhat run scripts/deploy.js
Counter address: 0x5FbDB2315678afecb367f032d93F642f64180aa3

为了在运行任何任务时指示Hardhat连接到特定的EVM网络,可以使用--network参数

1
npx hardhat run scripts/deploy.js --network <network-name>

参考

还有更多比如:编写测试用例,console.log,

network-namehardhat.config.js 文件中的配置 ,代码开源验证,Hardhat 插件(Plugin)的使用…

阅读本笔记的学习参考原文::https://decert.me/tutorial/solidity/tools/hardhat