使用Hardhat在EtherScan验证智能合约出现多合约匹配错误如何解决
问题原因
你的MyNFTContract合约继承了OpenZeppelin的PaymentSplitter,且未新增任何自定义方法、公开状态变量或逻辑修改,仅在构造函数中给父合约传入了固定的收款地址和份额参数,编译后生成的字节码与原生PaymentSplitter合约高度重合,Hardhat的Etherscan验证插件无法自动识别你需要验证的目标合约,因此触发报错要求手动指定合约。
解决方法
在原有验证命令中添加--contract参数,明确指定你要验证的合约路径与合约名即可,修改后的命令如下:
npx hardhat verify --network ropsten --contract contracts/MyNFTContract.sol:MyNFTContract 0xE9abA803d6a801fce021d0074ae71256C9F24Da4
如果执行上述命令后仍有异常,可先执行npx hardhat clean清理本地编译缓存,再重新执行验证命令即可。
补充说明(脚本调用验证任务的情况)
如果你是在Hardhat脚本中调用验证子任务,只需要在传入的参数中新增contract字段即可,示例如下:
await run("verify:verify", { address: "0xE9abA803d6a801fce021d0074ae71256C9F24Da4", contract: "contracts/MyNFTContract.sol:MyNFTContract" });
内容的提问来源于stack exchange,提问作者johnDoe
相关产品推荐
相关产品推荐

