使用Hardhat在Etherscan验证Solidity合约出现参数不匹配错误
问题原因
你执行Hardhat验证命令时传入的构造函数参数与合约实际定义不符。你部署的MyNFTPrice合约构造函数为无参设计,父类ERC721的名称、符号参数是硬编码在合约逻辑内的,不属于部署时需要传入的构造参数,因此验证命令中额外传入的参数会触发参数数量不匹配的错误。
解决方案
修正验证命令,移除末尾多余的参数,执行以下命令即可:
npx hardhat verify --network ropsten 0xA16c8f9A5Ab944454D6404CE626E600AF0054aaa
其他注意事项
- 执行命令前请确认你的
hardhat.config.js中已正确配置Etherscan API密钥,以及Ropsten网络的RPC节点信息 - 若修正命令后仍验证失败,可检查你部署合约时使用的代码是否和当前提交验证的代码完全一致,包括依赖库的版本
- Ropsten测试网已正式弃用,后续开发建议切换到Goerli或Sepolia测试网进行部署、验证操作
内容的提问来源于stack exchange,提问作者user3013144
相关产品推荐
相关产品推荐

