BSCSCAN验证合约报错:无法生成ByteCode与ABI,未找到匹配字节码
合约验证err_code_2报错解决方案
你遇到的错误属于编译参数与部署时参数不匹配导致的字节码校验失败,按以下优先级排查:
- 检查编译器版本:验证页面选择的Solidity编译器版本必须与部署合约时使用的版本完全一致,你的代码指定了
^0.8.2版本区间,不要选择超出该区间的编译器版本,优先使用部署时的精确版本(比如你用0.8.2部署就选0.8.2,不要选0.8.0或者0.8.20) - 检查优化配置:验证时的优化开关、优化runs数值必须与部署时完全一致,如果你部署时开启了优化,runs设置为200,验证时也必须填入相同配置
- 检查EVM版本:部署时选择的EVM版本(如London、Paris、Shanghai)必须和验证时选择的版本一致,不同EVM版本编译出的字节码存在差异
- 检查合约信息:验证时填写的合约文件名、合约名称必须和编译时一致,你的合约名是
Token,如果文件名是Token.sol,验证时要对应填写,不要写错大小写 - 优化代码细节:你的
balanceOf方法缺少view修饰符,改为function balanceOf(address owner) public view returns(uint)可避免不必要的调用警告,该问题不会直接导致验证失败
补充说明:如果是通过Remix部署的合约,可以在部署后到Remix的编译标签页查看完整编译参数,照搬所有参数到验证页面即可完成匹配。
内容的提问来源于stack exchange,提问作者Enzo Viturat
相关产品推荐
相关产品推荐

