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

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

先决条件

  • OpenZeppelin Defender 账户。

1. 配置您的分叉网络

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

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

  2. 确保激活防重放保护,以便为您的分叉使用不同的链 ID,从而防止与公共链 ID 发生冲突。

    Phalcon 创建一个分叉
  3. 复制分叉网络的 RPC URL 和 Explorer URL(这可以在“Scan”下找到)。您将需要它来将网络添加到 Defender。

    Phalcon 仪表板
  4. 在 Web 浏览器中打开 Defender Forked Networks

  5. 单击 Add Forked Network

    Forked Networks 登录页
  6. 输入您分叉网络的详细信息,这些信息可以在您的 Phalcon 仪表板中找到。

  7. 单击 Save

    Forked Networks 添加的网络
您可以使用任何提供商来分叉网络,例如 Conduit。但是,我们建议使用 Phalcon,因为它免费且易于使用。

2. 配置部署环境

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

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

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

    Deploy 登录页
  3. 从网络下拉列表中,选择您刚刚添加的分叉网络。

    Delpoy 向导步骤 1
  4. 单击 Next 继续。

  5. 当要求提供区块浏览器 API 密钥时,单击 Skip this step,因为*无法为分叉网络使用区块浏览器 API 密钥*。

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

    Delpoy 向导步骤 3
  7. 最后,当要求选择升级审批流程时,单击 Skip this step目前,分叉网络不支持升级

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

您的部署环境现已设置完成!

您应该为 relayer 账户提供足够的 ETH,以支付部署交易的 Gas 成本。大多数提供商都有一个 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);
  3. 运行脚本以部署合约。注意,提供 salt 将使用 CREATE2 部署合约。否则,将使用 CREATE 操作码部署合约。有关部署的 注意事项的更多信息,请访问文档。

  4. 部署后,您可以在 Defender Deploy 仪表板上跟踪部署状态。

后续步骤

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

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