2023年6月13日星期二

Hardhat入门

 综述

Hardhat是以太坊智能合约的开发环境。它包含不同的组件用于编辑、编译、调试和部署智能合约和dApps。
这些组件协同合作,建立了一个完整的开发环境。

Hardhat Runner是使用Hardhat时需要进行交互的一个主要的组件。它是一个灵活的、可扩展的task runner,用于管理和自动执行开发智能合约和 dApp 所固有的重复性任务。

Hardhat Runner是围绕tasks和plugins进行设计的。每次通过命令行运行Hardhat时,都是运行一个taask,比如:npx hardhat compile就是运行一个内置的compile task。tasks可以调用其他的tasks,用于定义比较复杂的工作流。tasks可以被用户或plugins重载,用于进行工作流的自定义和扩展。

安装

Hardhat在使用前需要在项目中进行本地安装,这种方式可以保证环境是可以复制的,而且不会和其他的版本发生冲突。

为了安装Hardhat,首先需要创建一个npm项目(创建一个空目录,然后在目录中运行npm init

当基础环境准备好后,运行以下命令进行Hardhat的安装:

npm install --save-dev hardhat

快速开始

创建项目

在项目目录中使用如下命令创建一个Hardhat项目:

npx hardhat

在创建项目的过程中,可以指定开发语言是javascript还是typescript。

运行tasks

为了对有哪些可用的tasks又一个直观的认识,可以首先运行npx hardhat命令:

在available tasks中的tasks,既包括内置的task也包括从已经安装的plugin带来的task。npx hardhat是查询可用task的起始点。

编译智能合约

查看contracts目录,会看到一个Lock.sol文件。

为了编译这个合约,只需要在项目目录下运行npx hardhat compile命令即可。

测试智能合约

测试项目会有使用Mocha、Chai和Ethers.js创建的测试用例。在test文件夹中会看到一个Lock.js的测试文件:

可以通过运行命令npx hardhat test来运行测试用例:

部署智能合约

可以使用hardhat脚本部署,在scripts文件夹中,可以找到一个脚本文件:

可以通过npx hardhat run命令运行这个脚本:

连接钱包或Dapp到hardhat网络上

缺省情况下,hardhat将在启动时启动一个新的 Hardhat Network 内存实例。还可
方式运行Hardhat Network,便外部客户端可以连接到它。以是Dapp本。

为了以这种方式运行hardhat,可以使用命令:npx hardhat node

这个命令会向外暴露一个hardhat网络的json-rpc接口,可以使用这个接口来连接wallet或Dapp。

如果想让一个hardhat连接到这个node,比如在这个node上进行部署,需要使用--network localhost参数:

npx hardhat run scripts/deploy.js --network localhost