常用命令行
// 查看帮助命令
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 网络方法
文档: https://hardhat.org/hardhat-network/reference#hardhat-network-methods
hardhat_setBalance
: 设置账户余额
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