在分叉网络上部署智能合约
Defender 使您能够利用自定义网络分叉来部署和测试智能合约,以及关联的配置,例如 actions、monitors 和 workflows。本指南将引导您完成在分叉网络上部署智能合约并与之交互的步骤。
1. 配置您的分叉网络
您将在 Phalcon 上设置一个分叉网络,并将此网络添加到 Defender。要配置分叉网络,请按照下列步骤操作:
-
在 Phalcon 上注册一个账户,并使用 Ethereum mainnet 作为源网络创建一个新的分叉。
-
确保激活防重放保护,以便为您的分叉使用不同的链 ID,从而防止与公共链 ID 发生冲突。
-
复制分叉网络的 RPC URL 和 Explorer URL(这可以在“Scan”下找到)。您将需要它来将网络添加到 Defender。
-
在 Web 浏览器中打开 Defender Forked Networks。
-
单击 Add Forked Network。
-
输入您分叉网络的详细信息,这些信息可以在您的 Phalcon 仪表板中找到。
-
单击 Save。
您可以使用任何提供商来分叉网络,例如 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 成本。大多数提供商都有一个 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 仪表板上跟踪部署状态。