Hardhat 是一个以太坊智能合约开发环境,旨在帮助开发者管理、测试、部署和调试 Solidity 项目。它内置了 Hardhat Network(一个本地以太坊网络),并提供丰富的插件生态。以下将介绍 Hardhat 的基本使用方法。
1. 安装 Hardhat
首先确保系统已安装 Node.js(版本 12 以上)和 npm/yarn。然后创建一个新项目文件夹并初始化 npm:
bash
mkdir my-hardhat-project
cd my-hardhat-project
npm init -y
安装 Hardhat 作为开发依赖:
bash
npm install --save-dev hardhat
yarn add -D hardhat
运行 Hardhat 创建示例项目:
bash
npx hardhat --init


根据提示选择"Create a JavaScript project"或"Create a TypeScript project"(建议初学者选 JavaScript),并同意安装一些附加依赖(如 @nomicfoundation/hardhat-toolbox)。安装完成后,项目结构如下:
text
contracts/ # 存放 Solidity 合约
scripts/ # 存放部署脚本
test/ # 存放测试文件
hardhat.config.js # Hardhat 配置文件
2. Hello World
solidity
pragma solidity 0.8.7;
Contract HelloWorld{
function hello() public pure returns(string memory){
return "Hello,World";
}
}
编译:
bash
npx hardhat compile
3. TypeScript
将 hardhat.config.js 改为 hardhat.config.ts
添加ts的库
yarn add -D ts-node typescript

3.1 HelloWorld.ts
为 Mocha 测试框架安装类型定义文件
yarn add -D @types/mocha
HelloWorld.ts
ts
import "@nomicfoundation/hardhat-ethers";
import {ethers} from "hardhat";
import {expect} from "chai";
describe("HelloWorld",function(){
it("should say hello",async function(){
// 1.setup
// 2.import contract
// 3.test action
const HW = await ethers.getContractFactory("HelloWorld");
const hw = await HW.deploy();
await hw.waitForDeployment();
expect(await hw.hello()).to.equals("Hello,World!");
})
});
编译
npx hardhat test

4. 部署智能合约
scripts 文件夹下新建 deploy-hello.ts
ts
import "@nomicfoundation/hardhat-ethers";
import {ethers} from "hardhat";
async function deploy(){
const HelloWorld = await ethers.getContractFactory("HelloWorld");
const hello = await HelloWorld.deploy();
await hello.waitForDeployment();
return hello;
}
async function sayHello(hello:any){
console.log("Say Hello",await hello.hello());
}
deploy().then(sayHello);
启动网络
npx hardhat node

打开另一终端运行
npx hardhat run .\scripts\deploy-hello.ts --network localhost
