1、建项目空文件夹
mkdir hardhattest
2、切到文件夹内,执行npm init
cd hardhattest
npm init
3、安装hardhat
npm install --save-dev hardhat
4、在项目文件夹中创建Hardhat项目
npx hardhat
hardhat项目创建就完成了,创建成功后打开vscode是这样子的:
将contracts、scripts、test目录下的样式文件删除。
hardhat提示:
还需要安装依赖:
npm install --save-dev "hardhat@^2.17.0" "@nomicfoundation/hardhat-toolbox@^3.0.0"
安装依赖
npm install --save-dev "hardhat@^2.17.0" "@nomicfoundation/hardhat-toolbox@^3.0.0"
官方提示还要安装其他依赖:
npm install --save-dev @nomiclabs/hardhat-waffle ethereum-waffle chai @nomiclabs/hardhat-ethers ethers(一直报错,没安装上)
5、编写合约文件(过程省略),编译合约,编译后的文件默认保存在artifacts/目录下。
输入如下命令:
npx hardhat compile
得到如下结果:即编译成功
6、部署合约
在scripts中建deploy.js部署文件,在该文件中输入如下代码(其他合约,只需要修改合约文件名称)(注意,deployContract("Add"),中的Add是合约名称,不是合约文件名称,与truffle一样)。
const hre = require("hardhat");
async function main() {
const add = await hre.ethers.deployContract("Add");
await add.waitForDeployment();
console.log( `Add deployed to ${add.target}`);
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});
运行部署命令
PS D:\voting\hardhat_1> npx hardhat run .\scripts\deploy.js
得到结果:
Add deployed to 0x5FbDB2315678afecb367f032d93F642f64180aa3
即部署成功,这是在hardhat的localhost本地网络上部署。
7、测试合约
在test文件夹下,建test\Add.js的测试文件,在文件内输入测试代码,其他合约测试代码根据这个进行改写。
const { expect } = require("chai");
describe("Add", function () {
it("should return the sum of two numbers", async function () {
const Add = await ethers.getContractFactory("Add");
const add = await Add.deploy();
const result = await add.add(2, 3);
expect(result).to.equal(5);
});
});
运行测试文件
npx hardhat