部署 - OpenZeppelin 文档

本文介绍了OpenZeppelin Defender中的Deploy模块,该模块旨在安全地跨链部署和升级智能合约。它提供了配置环境、自动化部署流程、确保合约验证以及管理多链部署的功能,并与CI/CD集成,支持使用API、Hardhat和Foundry插件进行部署和升级,并允许添加metadata以方便追踪和分类。

部署

部署允许你安全地跨链部署和升级智能合约。你可以证明链上运行的代码与经过审计的实现相匹配,并最大限度地减少可能导致损失或问题的关键错误。

用例

  • 使用对部署者地址的精细控制来配置生产和测试环境。

  • 自动支付部署的 gas 费用。

  • 确保所有智能合约部署都在区块浏览器上进行验证。

  • 从一个地方管理到多个链的部署。

  • 自动化升级的多重签名批准流程。

  • 完全兼容 CI/CD 以实现自动化发布。

  • 跟踪每次部署或升级的详细信息和历史记录。

环境

部署分为生产和测试环境,前者使用主网网络,后者使用测试网网络。每个环境根据其环境类型与一个或多个网络相关联,这允许安全地将测试合约与生产合约分开。为了方便上手过程,每个环境的设置都通过一个向导来配置,该向导会迅速引导你完成以下步骤。

向导

步骤 1:网络

在第一步中,你选择要使用的网络。部署支持多链部署,允许用户将合约部署到多个网络上的相同地址。你可以随时通过环境页面添加或删除网络。

为了保持最佳安全实践,向导将仅显示根据所选环境类型来显示网络,以防止混合网络。
步骤 2:部署

在此步骤中,用户为每个网络选择默认的批准流程。与此批准流程关联的资源将用于支付和执行部署交易。如果你没有某个网络的批准流程,向导将允许你创建一个 Relayer、Safe 或 EOA(“外部拥有的帐户”)类型的流程。你可以在此处了解有关批准流程的更多信息。

步骤 3:升级

最后一步是可选的,但如果你计划部署可升级的合约,则建议执行此步骤。在这里,你为每个网络选择升级的批准流程。你可以在此处找到受支持流程的列表。

环境页面

进入环境后,你可以查看其中部署的配置和活动。

配置

你可以编辑环境中任何网络的配置。为此,单击编辑按钮以进入配置页面,你可以在其中添加或删除网络并更改默认批准流程。我们使用系统区块浏览器 API 密钥来自动验证 Etherscan 上的合约。你可以在配置页面中管理你自己的密钥。

历史记录

历史记录表显示了环境中的活动,允许你检查部署或升级的状态。有三种可能的状态:

  • COMPLETE:部署已在网络中成功执行。

  • PENDING:升级正在等待批准。

  • FAILED:部署失败。确保与批准流程关联的 relayer 或 EOA 有足够的资金,并且智能合约有效。

部署和升级

配置环境后,你可以将其用于部署和升级。为此,我们提供了 API 以及 HardhatFoundry 插件。对于不使用 Hardhat 或 Foundry 的自定义项目,建议使用 Deploy API。另一方面,这些插件非常易于使用,因为它们只需要几行代码即可实现。

Defender 将使用默认的批准流程进行部署和升级。但是,Hardhat 和 Foundry 插件允许你为升级指定不同的批准流程。如果未提供区块浏览器 API 密钥,Defender 将尝试使用默认密钥验证合约。否则,它将使用提供的密钥。

我们提供了一个快速入门教程,使用 Defender 与 Hardhat 和 Foundry 部署和升级智能合约。在此处查看此处
使用 CREATE2 可能会影响 msg.sender 行为;有关详细信息,请参阅此处的文档!

元数据

为了识别、标记或分类部署,你可以使用 metadata 字段,其中包括 commitHashtag 或任何适合你用例的自定义属性。

  const client = new Defender({
    apiKey: process.env.API_KEY,
    apiSecret: process.env.API_SECRET,
  });

  const deployment = await client.deploy.deployContract({
    contractName: 'Example',
    ...
    metadata: {
      commitHash: '4ae3e0d',
      tag: 'v1.0.0',
      anyOtherField: 'anyValue',
    },
  });

提交部署后,这些元数据字段将以 JSON 格式显示在 Defender UI 的 Metadata 下。

Deploy Metadata

← 审计

Relayers →

  • 原文链接: docs.openzeppelin.com/de...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
OpenZeppelin
OpenZeppelin
江湖只有他的大名,没有他的介绍。