npx hardhat compile,npx hardhat test。是指hardhat的compile和test。
npx hardhat node 启动一个单独的琏。npx hardhat run scripts/deploy.js --network localhost部署合约。
node scripts/deploy.js。
Hardhat内置的开发琏:1,内置开发琏是in-process琏,不独立启动运行,随同一个测试或者脚本进程而产生销毁。2,测试用的是内置琏。3,脚本如果不指定-network,用的是内置琏。4,内置琏的名称是hardhat,所以运行脚本时指定-network参数为hardhat,跟不指定参数相同效果。
脚本运行时可以使用一个叫localhost的网络,但它不需要配置!1,Hardhat另一个特殊网络名称是localhost,它并不是内置琏,而是预定义的,是内部配置好的一个remote琏,指向http://localhost:8545。
Hardhat和localhost的配置:1,其实存在两个预定义的琏:"hardhat"和"localhost"。2,这两个特殊名称都可以在network中进行配置,但是"hardhat不能配置url"。3,"loccalhost"可以进行任意配置以覆盖器内部默认。
https://hardhat.org/hardhat-network/docs/guides/forking-other-networks
这是让内置in-proccess琏去fork主网:hardhat:{forking:{url:"https://eth-mainnet.alchemyapi.io/v2/<key>"}}
这是单独启动一条fork琏:npx hardhat node --fork http://eth-mainnet.alchemyapi.io/v2/<key>
关于脚本运行环境:1,Deploy.js的两种运行模式:node和npx hardhat run。2,Node模式下,--network参数并不起作用。
https://hardhat.org/hardhat-runner.docs/advanced/scripts
总结:实际上-network参数是对hardhat runtime environment起作用,不论是在其中运行的是script,task还是test。当用nodejs启动脚本时,参数通过环境变量传递给hre。
npm run-script command 命令:1,Npm run-script命令到当前package.json的scripts中寻找一个条目,条目的值时要执行的脚本。2,把脚本名称加上node modules/.bin前缀,执行该条目定义的脚本,并且会自动到node module中去找。
hardhat测试:
测试框架:Moccha,断言库:Chai(用接近自然语言的描述来进行测试)
常用的测试断言:
1,判断返回值 expect(await{someFuncction}).to.equal({expected value})
2,抛出事件 await(expect{someFunction}).to.emit({some event}).withArgs({event args})
3, 抛出异常 await(expect{comeFunction}).to.be.revertedWith({error message})