You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hardhat部署代理合约后ProxyAdmin验证失败问题求助

解决Hardhat验证ProxyAdmin合约字节码不匹配的问题

1. 确保OpenZeppelin依赖版本一致

部署代理合约时使用的@openzeppelin/hardhat-upgrades和@openzeppelin/contracts-upgradeable版本必须与当前项目依赖版本完全相同。不同版本的ProxyAdmin合约代码可能存在差异,直接导致字节码不匹配。检查package.json中的版本号,若有更新过依赖,回退到部署时的版本。

2. 复制对应版本的ProxyAdmin源码

不要使用第三方来源的ProxyAdmin代码,直接从项目依赖的OpenZeppelin包中提取:

  • 找到node_modules/@openzeppelin/contracts-upgradeable/proxy/admin/ProxyAdmin.sol文件
  • 将该文件完整复制到本地contracts目录下,确保代码与部署时插件使用的完全一致

3. 核对编译器配置

检查hardhat.config.js中的Solidity配置,必须与部署时的设置完全匹配:

  • Solidity版本(比如0.8.17)不能变更
  • 优化器(optimizer)的开关和参数要一致,部署时开启优化的话,验证时也必须开启

4. 清除缓存并重新编译

执行以下命令清除旧编译缓存,重新生成字节码:

npx hardhat clean
npx hardhat compile

5. 指定合约路径验证

如果上述步骤无效,尝试在验证命令中明确指定合约路径和名称:

env $(cat .env) npx hardhat verify --network goerli 0x45a87e0E632a4C269De0FEE6a6FbABF7B4f8b92d --contract contracts/ProxyAdmin.sol:ProxyAdmin

6. 对比字节码排查差异

  • 从Goerli区块浏览器查看目标地址的字节码
  • 本地编译后的字节码位于artifacts/contracts/ProxyAdmin.sol/ProxyAdmin.json的bytecode字段
  • 对比两者是否一致,若不一致,重新检查代码版本、编译配置是否正确

内容的提问来源于stack exchange,提问作者Yilmaz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 07:35:28