在分叉网络上部署智能合约 - OpenZeppelin 文档

本文介绍了如何利用 OpenZeppelin Defender 在自定义的网络分叉上部署和测试智能合约。主要步骤包括:配置 Phalcon 上的分叉网络并将其添加到 Defender,为分叉网络设置部署环境,最后通过 JavaScript 代码部署智能合约,并提供了后续监控和动作设置的建议。

在一个分叉网络上部署智能合约

Defender 使你能够利用自定义的网络分叉来部署和测试智能合约,以及相关的配置,例如 actions、monitors 和 workflows。本指南将引导你完成在分叉网络上部署智能合约并与之交互的步骤。

准备工作

  • OpenZeppelin Defender 账户。你可以在这里注册 Defender。

1. 配置你的分叉网络

你将在 Phalcon 上设置一个分叉网络,并将此网络添加到 Defender。要配置一个分叉网络,请按照以下步骤操作:

  1. Phalcon 上注册一个账户,并使用 Ethereum 主网作为源网络创建一个新的 fork。

  2. 确保激活了 anti-replay protection,以便为你的 fork 使用一个不同的链 ID,防止与公共链 ID 冲突。

Phalcon 创建一个 fork

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

Phalcon 仪表盘

  1. 在 Web 浏览器中打开 Defender Forked Networks

  2. 点击 Add Forked Network

Forked Networks 落地页

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

  2. 点击 Save

Forked Networks 添加的网络

你可以使用任何 provider 来 fork 一个网络,例如 Conduit。但是,我们建议使用 Phalcon,因为它免费且易于使用。

2. 配置部署环境

你将为你刚添加到 Defender 的分叉网络设置一个部署环境。要配置一个部署环境,请按照以下步骤操作:

  1. 在 Web 浏览器中打开 Defender Deploy

  2. 点击你的生产环境的 Setup(如果你的网络是从测试网分叉的,则设置一个测试环境)。

Deploy 落地页

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

Delpoy 向导步骤 1

  1. 点击 Next 继续。

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

Delpoy 向导步骤 2

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

Delpoy 向导步骤 3

  1. 最后,当要求选择升级批准流程时,点击 Skip this step目前,分叉网络不支持升级

  2. 确保复制生成的团队 API 密钥并将其存储在安全的地方。你将需要它们来与你的部署环境进行交互。

你的部署环境现在已设置完毕!

你应该为 relayer 帐户提供足够的 ETH,以支付部署交易的 gas 成本。大多数 provider 都有一个 faucet,你可以用它来为你的 relayer 帐户提供资金。对于 Phalcon,你可以在仪表板上找到它。

3. 在分叉网络上部署智能合约

你将在你刚添加到 Defender 的分叉网络上部署一个智能合约。要部署一个智能合约,请按照以下步骤操作:

  1. 设置一个 JavaScript 项目并安装 defender-sdk-deploy-client NPM 包。或者,你可以使用 OpenZeppelin Defender SDK 存储库中提供的 defender-sdk delpoy 示例脚本

  2. 部署代码如下所示:

// 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);
  1. 运行脚本以部署合约。注意,提供一个 salt 将使用 CREATE2 部署合约。否则,合约将使用 CREATE 操作码部署。有关部署注意事项的更多信息,请访问文档。

  2. 部署完成后,你可以在 Defender Deploy 仪表板上跟踪部署状态。

下一步

恭喜!你已成功在一个分叉网络上部署了一个智能合约。如果你提供了 blockExplorerUrl,你可以在你的分叉网络的区块浏览器上验证该交易。

部署合约后,我们建议在 Defender 上创建一个 Monitor 并设置 Actions。在此处了解如何设置 Monitor here,并在此处的教程中使用 Actions here

参考文献

← Workflows

添加一个完整的私有网络 →

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

0 条评论

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