Hardhat中文文档

概述

Hardhat是一个编译、部署、测试和调试以太坊应用的开发环境。它可以帮助开发人员管理和自动化构建智能合约和dApps过程中固有的重复性任务,并围绕这一工作流程轻松引入更多功能。这意味着hardhat在最核心的地方是编译、运行和测试智能合约。

Hardhat内置了Hardhat网络,这是一个专为开发设计的本地以太坊网络。主要功能有Solidity调试,跟踪调用堆栈、console.log()和交易失败时的明确错误信息提示等。

Hardhat Runner是与Hardhat交互的CLI命令,是一个可扩展的任务运行器。它是围绕任务插件的概念设计的。每次你从CLI运行Hardhat时,你都在运行一个任务。例如,npx hardhat compile运行的是内置的compile任务。任务可以调用其他任务,允许定义复杂的工作流程。用户和插件可以覆盖现有的任务,从而定制和扩展工作流程。

Hardhat的很多功能都来自于插件,而作为开发者,你可以自由选择想使用的插件。Hardhat不限制使用什么工具的,但它确实有一些内置的默认值。所有这些都可以覆盖。

#安装

Hardhat是通过本地安装在项目中使用的。这样你的环境就可以重现,也可以避免未来的版本冲突。

要安装它,你需要创建一个npm项目,进入一个空文件夹,运行npm init。 并遵循其指示操作。项目初始化之后,运行:

npm install --save-dev hardhat

要使用本地安装的Hardhat,需要使用npx来运行它(如:npx hardhat)。

#快速开始

本指南将探讨创建Hardhat项目的基础知识。

Hardhat即使在没有安装插件下,你也能创建自己的任务,编译Solidity代码,运行测试,并运行Hardhat Network,你可以将合约部署到本地开发网络。

通过在项目文件夹中运行npx hardhat来创建Hardhat项目:

$ npx hardhat
888    888                      888 888               888
888    888                      888 888               888
888    888                      888 888               888
8888888888  8888b.  888d888 .d88888 88888b.   8888b.  888888
888    888     "88b 888P"  d88" 888 888 "88b     "88b 888
888    888 .d888888 888    888  888 888  888 .d888888 888
888    888 888  888 888    Y88b 888 888  888 888  888 Y88b.
888    888 "Y888888 888     "Y88888 888  888 "Y888888  "Y888

Welcome to Hardhat v2.0.8

? What do you want to do? …
❯ Create a sample project
  Create an empty hardhat.config.js
  Quit

我们选择创建示例项目,并通过逐个步骤来演示样本任务和编译、测试、并部署样本合约。

示例项目会要求安装hardhat-wafflehardhat-ethers,以便让Hardhat与Waffle构建的测试兼容。你可以这个指南中了解更多信息。

TIP

Hardhat会让提示你如何安装,但是,如果你错过了,你可以用npm install --save-dev @nomiclabs/hardhat-waffle ethereum-waffle chai @nomiclabs/hardhat-ethers ethers来安装它们。