Skip to main content

常用命令行

// 查看帮助命令
npx hardhat --help

// 查看账号列表
npx hardhat accounts
// 清空缓存,(如果清空,每次编译会检查是否有合约变动,如果没有变动则不编译)
npx hardhat clean
// 编译合约
npx hardhat compile
// 启动console调试控制台
npx hardhat console
// 生成测试覆盖率检查
npx hardhat coverage
// 导出合并文件(导出到目录,需要先创建目录文件夹)
npx hardhat flatten contracts/User.sol > ./flatten/User.sol
// 启动hardhat节点
npx hardhat node
// 执行编译后用户自定义脚本(比如部署脚本),不指定network时默认是hardhat节点
npx hardhat run scripts/deploy.ts --network hardhat
// 运行测试脚本(如果不指定具体测试文件,则测试所有测试脚本)
npx hardhat test test/user.test.ts
// 生成合约接口的typescript类型定义
npx hardhat typechain
// 将合约在浏览器上验证(doc: https://hardhat.org/plugins/nomiclabs-hardhat-etherscan)
npx hardhat verify --network mainnet DEPLOYED_CONTRACT_ADDRESS "Constructor argument 1"

hardhat 网络方法

await network.provider.send("hardhat_setBalance", [
"0x0d2026b3EE6eC71FC6746ADb6311F6d3Ba1C000B",
"0x1000",
]);
  • hardhat_impersonateAccount: 模拟某个账号发送消息
await hre.network.provider.request({
method: "hardhat_impersonateAccount",
params: ["0x364d6D0333432C3Ac016Ca832fb8594A8cE43Ca6"],
});

如果您正在使用hardhat-ethers getSigner,冒充账号后调用:

const signer = await ethers.getSigner("0x364d6D0333432C3Ac016Ca832fb8594A8cE43Ca6")
signer.sendTransaction(...)
  • hardhat_stopImpersonatingAccount: 停止模拟某个账号发送消息
await hre.network.provider.request({
method: "hardhat_stopImpersonatingAccount",
params: ["0x364d6D0333432C3Ac016Ca832fb8594A8cE43Ca6"],
});

特殊的测试/调试方法

文档: https://hardhat.org/hardhat-network/reference#special-testing/debugging-methods