在一个分叉网络上部署智能合约
Defender 使你能够利用自定义的网络分叉来部署和测试智能合约,以及相关的配置,例如 actions、monitors 和 workflows。本指南将引导你完成在分叉网络上部署智能合约并与之交互的步骤。
准备工作
- OpenZeppelin Defender 账户。你可以在这里注册 Defender。
1. 配置你的分叉网络
你将在 Phalcon 上设置一个分叉网络,并将此网络添加到 Defender。要配置一个分叉网络,请按照以下步骤操作:
在 Phalcon 上注册一个账户,并使用 Ethereum 主网作为源网络创建一个新的 fork。
确保激活了 anti-replay protection,以便为你的 fork 使用一个不同的链 ID,防止与公共链 ID 冲突。

- 复制你的分叉网络的 RPC URL 和 Explorer URL(可以在“Scan”下找到)。你将需要它来将网络添加到 Defender。

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

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

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

- 从网络下拉菜单中,选择你刚添加的分叉网络。

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

- 在部署向导的第 3 步,通过从下拉菜单中点击 Create Relayer 来创建一个新的 Relayer,你的部署交易将从该 Relayer 发起。

最后,当要求选择升级批准流程时,点击 Skip this step。目前,分叉网络不支持升级。
确保复制生成的团队 API 密钥并将其存储在安全的地方。你将需要它们来与你的部署环境进行交互。
你的部署环境现在已设置完毕!
| 你应该为 relayer 帐户提供足够的 ETH,以支付部署交易的 gas 成本。大多数 provider 都有一个 faucet,你可以用它来为你的 relayer 帐户提供资金。对于 Phalcon,你可以在仪表板上找到它。 |
3. 在分叉网络上部署智能合约
你将在你刚添加到 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。 |
参考文献
Deploy 文档
Actions 文档
Monitor 文档
Phalcon
Conduit
← Workflows
添加一个完整的私有网络 →
- 原文链接: docs.openzeppelin.com/de...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~