本文介绍了如何利用 OpenZeppelin Defender 在自定义的网络分叉上部署和测试智能合约。主要步骤包括:配置 Phalcon 上的分叉网络并将其添加到 Defender,为分叉网络设置部署环境,最后通过 JavaScript 代码部署智能合约,并提供了后续监控和动作设置的建议。
Defender 使你能够利用自定义的网络分叉来部署和测试智能合约,以及相关的配置,例如 actions、monitors 和 workflows。本指南将引导你完成在分叉网络上部署智能合约并与之交互的步骤。
你将在 Phalcon 上设置一个分叉网络,并将此网络添加到 Defender。要配置一个分叉网络,请按照以下步骤操作:
在 Phalcon 上注册一个账户,并使用 Ethereum 主网作为源网络创建一个新的 fork。
确保激活了 anti-replay protection,以便为你的 fork 使用一个不同的链 ID,防止与公共链 ID 冲突。


在 Web 浏览器中打开 Defender Forked Networks。
点击 Add Forked Network。

输入你的分叉网络的详细信息,这些信息可以在你的 Phalcon 仪表盘中找到。
点击 Save。

| 你可以使用任何 provider 来 fork 一个网络,例如 Conduit。但是,我们建议使用 Phalcon,因为它免费且易于使用。 | 
你将为你刚添加到 Defender 的分叉网络设置一个部署环境。要配置一个部署环境,请按照以下步骤操作:
在 Web 浏览器中打开 Defender Deploy。
点击你的生产环境的 Setup(如果你的网络是从测试网分叉的,则设置一个测试环境)。


点击 Next 继续。
当要求提供区块浏览器 API 密钥时,点击 Skip this step,因为不可能为分叉网络使用区块浏览器 API 密钥。


最后,当要求选择升级批准流程时,点击 Skip this step。目前,分叉网络不支持升级。
确保复制生成的团队 API 密钥并将其存储在安全的地方。你将需要它们来与你的部署环境进行交互。
你的部署环境现在已设置完毕!
| 你应该为 relayer 帐户提供足够的 ETH,以支付部署交易的 gas 成本。大多数 provider 都有一个 faucet,你可以用它来为你的 relayer 帐户提供资金。对于 Phalcon,你可以在仪表板上找到它。 | 
你将在你刚添加到 Defender 的分叉网络上部署一个智能合约。要部署一个智能合约,请按照以下步骤操作:
设置一个 JavaScript 项目并安装 defender-sdk-deploy-client NPM 包。或者,你可以使用 OpenZeppelin Defender SDK 存储库中提供的 defender-sdk delpoy 示例脚本。
部署代码如下所示:
// Retrieve and confirm the approval process for deployment on your forked network
// 检索并确认在你的分叉网络上部署的批准流程
const config = await client.deploy.getDeployApprovalProcess('mainnet-fork');
console.log(config);
// Deploy a simple Box constract using the approval process retrieved above
// 使用上面检索到的批准流程部署一个简单的 Box 合约
const deployment = await client.deploy.deployContract({
       contractName: 'Box',
       contractPath: 'contracts/Box.sol',
       network: 'mainnet-fork',
       artifactPayload: JSON.stringify(artifactFile),
       licenseType: 'MIT',
       verifySourceCode: true,
       // Only provide the `salt` if you wish to use `CREATE2`. Otherwise, omit this field to use `CREATE`.
       // 只有当你希望使用 `CREATE2` 时才提供 `salt`。否则,省略此字段以使用 `CREATE`。
       salt: "a-unique-salt"
});
// Retrieve the deployment status
// 检索部署状态
const deploymentStatus = await client.deploy.getDeployedContract(deployment.deploymentId);
console.log(deploymentStatus);运行脚本以部署合约。注意,提供一个 salt 将使用 CREATE2 部署合约。否则,合约将使用 CREATE 操作码部署。有关部署注意事项的更多信息,请访问文档。
部署完成后,你可以在 Defender Deploy 仪表板上跟踪部署状态。
恭喜!你已成功在一个分叉网络上部署了一个智能合约。如果你提供了 blockExplorerUrl,你可以在你的分叉网络的区块浏览器上验证该交易。
| 部署合约后,我们建议在 Defender 上创建一个 Monitor 并设置 Actions。在此处了解如何设置 Monitor here,并在此处的教程中使用 Actions here。 | 
- 原文链接: docs.openzeppelin.com/de...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
 
                如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!