部署
通过部署,你可以安全地跨链部署和升级智能合约。你可以证明链上运行的代码与经过审计的实现相匹配,并最大限度地减少可能导致损失或问题的关键错误。
用例
-
使用对部署者地址的粒度配置生产和测试环境。
-
自动支付部署的 Gas 费用。
-
确保所有智能合约部署都在区块浏览器上得到验证。
-
从一个地方管理到多个链的部署。
-
自动执行升级的多重签名批准流程。
-
与 CI/CD 完全兼容,可实现自动化发布。
-
跟踪每次部署或升级的详细信息和历史记录。
环境
部署分为生产环境和测试环境,前者使用主网网络,后者使用测试网网络。每个环境根据其环境类型与一个或多个网络相关联,从而可以安全地将测试合约与生产合约分开。为了方便入门过程,每个环境的设置都通过向导进行配置,该向导会迅速引导你完成以下步骤。
向导
步骤 1:网络
在第一步中,你选择要使用的网络。部署支持多链部署,允许用户将合约部署到跨多个网络的相同地址。你可以随时 через 环境页面添加或删除网络。
为了保持最佳的安全实践,向导只会根据所选环境的类型显示网络,以防止混合网络。 |
步骤 2:部署
在此步骤中,用户为每个网络选择默认的批准流程。与此批准流程关联的资源将用于支付和执行部署交易。如果你没有网络的批准流程,向导将允许你创建 Relayer、Safe 或 EOA("外部拥有的帐户")类型的流程。你可以在 此处{里]了解有关批准流程的更多信息。
步骤 3:升级
最后一步是可选的,但如果你计划部署可升级的合约,则建议使用。在这里,你为每个网络的升级选择批准流程。你可以在 此处{里]找到受支持流程的列表。
部署和升级
配置完环境后,你可以将其用于部署和升级。为此,我们提供了一个 API,以及 Hardhat 和 Foundry 插件。建议将 Deploy API 用于不使用 Hardhat 或 Foundry 的自定义项目。另一方面,这些插件非常易于使用,因为它们只需要几行代码即可实现。
Defender 将使用默认的批准流程进行部署和升级。但是,Hardhat 和 Foundry 插件允许你为升级指定不同的批准流程。如果未提供区块浏览器 API 密钥,Defender 将尝试使用默认密钥验证合约。否则,它将使用提供的密钥。
我们提供了一个快速入门教程,用于使用 Defender 与 Hardhat 和 Foundry 部署和升级智能合约。在 此处{里]查看! |
使用 CREATE2 可能会影响 msg.sender 的行为;有关详细信息,请参阅 此处{里]的文档!
|
元数据
为了识别、标记或分类部署,你可以使用 metadata
字段,其中包含诸如 commitHash
、tag
或适合你用例的任何自定义属性之类的属性。
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 下。
