ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

告别已弃用的OpenZeppelin CLI:项目迁移到OpenZeppelin Upgrades插件的分步指南(链上资产零风险)

告别已弃用的OpenZeppelin CLI:项目迁移到OpenZeppelin Upgrades插件的分步指南(链上资产零风险) 告别已弃用的OpenZeppelin CLI项目迁移到OpenZeppelin Upgrades插件的分步指南链上资产零风险【免费下载链接】openzeppelin-upgradesPlugins for Hardhat and Foundry to deploy and manage upgradeable contracts on Ethereum.项目地址: https://gitcode.com/gh_mirrors/op/openzeppelin-upgradesOpenZeppelin Upgrades 是一套面向 Hardhat 和 Foundry 的官方插件用于在以太坊上部署和管理可升级智能合约升级代理、管理 Admin 权限、校验升级安全。曾经流行的 OpenZeppelin CLI 已正式弃用而好消息是迁移到 Upgrades 插件完全不触碰链上任何数据全部是本地文件转换链上资产零风险。本文带你分步完成迁移5 分钟搞定。一、为什么必须迁移CLI 与 Upgrades 插件的区别OpenZeppelin CLI 的核心思路是由工具托管你的部署而 Upgrades 插件的思路是工具只管校验数据交还给你对比项OpenZeppelin CLI已弃用Upgrades 插件部署记录由 CLI 统一托管项目内.openzeppelin/清单文件你可自由管理开发框架独立 CLI 工具链融入 Hardhat / Foundry 工作流底层机制相同的 Proxy ProxyAdmin完全相同迁移不影响链上额外能力—自动校验升级安全、存储布局比对、Defender 多签审批关键点两者底层用的是同一套Proxy和ProxyAdmin合约插件只是换了一个更灵活的接口所以迁移只改写本地文件链上合约地址、代理、状态全部原封不动。二、迁移前准备安装插件并备份第 1 步初始化 Hardhat 并安装 Upgrades 插件npm install --save-dev hardhat npx hardhat npm install --save-dev openzeppelin/hardhat-upgrades npm install --save-dev nomiclabs/hardhat-ethers ethers然后在hardhat.config.js顶部注册插件require(openzeppelin/hardhat-upgrades);第 2 步备份.openzeppelin/目录务必迁移是单向过程执行后旧 CLI 就无法再管理这个项目了。官方建议保留版本控制副本或手动备份见官方迁移指南 docs/modules/ROOT/pages/migrate-from-cli.adoccp -r .openzeppelin .openzeppelin.bak三、一键迁移npx migrate-oz-cli-project第 3 步运行官方迁移脚本该脚本随插件一起安装实现见packages/core/src/scripts/migrate-oz-cli-project.ts它自动完成三件事把.openzeppelin/下每个网络的旧清单文件转换为插件格式清单版本升级为 3.2Upgradeable类型映射为transparent代理删除 CLI 专属的project.json与本地开发网络文件dev-*导出openzeppelin-cli-export.json保留代理地址、实现地址、Admin 地址等全部旧数据供你自由使用。npx migrate-oz-cli-project输出示例✔ Successfully migrated .openzeppelin/mainnet.json ✔ Migration data exported to openzeppelin-cli-export.json ✔ Deleting .openzeppelin/project.json⚠️ 迁移脚本要求旧清单版本为 2.2若项目链接了外部库solidityLibs会报错需先处理。第 4 步把编译器设置搬进新配置脚本末尾会打印你项目原来的编译器选项把它填入hardhat.config.js的solidity字段即可例如0.6.12、optimizer 配置。四、迁移后首次升级验证新工作流打开openzeppelin-cli-export.json每个代理都带有address代理地址、implementation实现地址、admin管理合约地址三个字段。写一个 Hardhat 脚本即可完成第一次升级——脚本只需几行核心是一句upgrades.upgradeProxy(...)const { ethers, upgrades } require(hardhat); const EXPORT require(../openzeppelin-cli-export.json); const [Box] EXPORT.networks.rinkeby.proxies[my-project/Box]; const BoxV2 await ethers.getContractFactory(BoxV2); await upgrades.upgradeProxy(Box.address, BoxV2);执行npx hardhat run scripts/upgrade.js --network rinkeby。插件会先自动校验新实现是否升级安全无构造函数、存储只追加不改动再部署新实现并切换代理——校验逻辑的存储布局比对见packages/core/src/storage/compare.ts。五、进阶用 Defender 多签审批守护主网升级如果你的合约部署在主网建议把 Admin 权限交给多签钱包之后用 Defender 提案升级多签管理员在后台审批后才可执行界面如下所示——升级提案中清晰展示了目标实现地址至少 2 个审批通过后才可执行。这样即使本地私钥泄露攻击者也无法单方面升级你的合约真正实现链上资产零风险。六、迁移检查清单 ✅✅ 已备份.openzeppelin/目录✅ 已安装openzeppelin/hardhat-upgrades并在hardhat.config.js中注册✅ 成功运行npx migrate-oz-cli-project生成了openzeppelin-cli-export.json✅ 编译器版本与优化器设置已写入新配置✅ 用upgradeProxy完成一次真实升级验证新工作流可用至此你的项目已从弃用的 OpenZeppelin CLI 平滑迁移到 OpenZeppelin Upgrades 插件链上数据纹丝未动开发体验与安全性却全面升级。更多插件源码可浏览 packages/plugin-hardhat/核心库见 packages/core/。【免费下载链接】openzeppelin-upgradesPlugins for Hardhat and Foundry to deploy and manage upgradeable contracts on Ethereum.项目地址: https://gitcode.com/gh_mirrors/op/openzeppelin-upgrades创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表