部署合同

编译智能合同后,您可以将其部署到 Oracle Blockchain Platform Besu 环境。

部署过程会创建所需的帮助程序库和 UUPS 代理,链接令牌和账户上下文,并设置治理上下文。标记和账户部署处于非活动状态。它们仅通过部署意图流程变为活动状态。

要部署编译后的合同,请从数字资产令牌管理员处获取预部署的监管合同及其策略 UUID 的地址。获取具有部署权限的账户,并在适用时提交部署意图。部署表单需要合同、环境、部署 ID 和注册表元数据:智能合同 ID、版本、说明和作者。部署 ID 标识可以恢复的部署状态;在重试同一部署时使用稳定的唯一值。

部署生命周期

  1. 编译项目。
  2. 部署 Oracle Blockchain Platform 数字资产堆栈。
  3. 设置账户/令牌和监管上下文。(代理处于非活动状态。)
  4. 复核并提交两个代理组件的部署意图。
    • 无操作治理:建议成功,然后激活组件。
    • Governed:完成所需的策略审批,然后激活组件。

注意:

部署后,代理立即处于非活动状态。成功的合同部署并不意味着标记处于活动状态。激活由为部署配置的监管合同控制,而不是由 UUPS 升级控制。

创建 Oracle Blockchain Platform Besu 环境

Oracle Blockchain Platform Besu 环境存储 Oracle Blockchain Platform RPC 主机,而不是完整的 JSON-RPC 端点。该扩展从此主机派生所需的 Besu 和治理路由。

  1. 打开环境视图,然后选择添加环境。
  2. 输入描述性环境名称。例如,输入 obp-test 。
  3. 为环境类型选择 Oracle Blockchain Platform Besu 。
  4. 输入 RPC URL Host 。例如,输入 https://rpcproxy.example.com:443 。

    RPC URL 主机只能是 http 或 https 源,不能是端点路径、查询字符串、片段、用户名或密码。例如,输入 https://rpcproxy.example.com:443,而不是 https://rpcproxy.example.com:443/v1/besu/proxy。

  5. 输入网络链 ID 。
  6. 输入 RPC 代理所需的授权令牌。
  7. (可选)为专用证书颁发机构设置 Gas Price Wei 、 Allow Self Signed 和 CA Certificate Path 。除非您的部署模型明确要求进行非托管签名,否则请将 BESU 账户留空。Oracle Blockchain Platform wallet 服务部署按部署收集签名详细信息。
  8. 选择创建。

对于存储的 Oracle Blockchain Platform 主机,该扩展派生 Besu 代理端点并使用 Oracle Blockchain Platform 监管意图端点。这可确保环境在部署、执行和监管操作之间可移植。

内置的 Hardhat Local Node 环境可用于本地开发,无需保存。它不是 Oracle Blockchain Platform 环境。

部署到 Oracle Blockchain Platform Besu 环境

  1. 在合同窗格中,打开项目的部署/执行表单,然后选择部署选项卡。
  2. 选择合同包和 Besu 环境。
  3. 输入部署 ID,或保留显示的部署 ID。
  4. 完成所需的注册表元数据。部署时标记名称、符号、说明、URI 和管理员 ID 是可选的。空值使用部署脚本默认值。
  5. 输入为 Oracle Blockchain Platform 环境显示的 wallet 服务签名信息。
    • Wallet 服务签名 URL
    • Wallet 服务帐户,地址/wallet-ID 对象的 JSON 数组
    • Wallet 服务验证令牌
  6. 选择 Next 。
  7. 在 Deployment Options(部署选项)中,输入 Governance Contract Address(管理合同地址)和 Policy UUID ,然后选择 Deploy(部署)。

Blockchain App Builder 通过 Oracle Blockchain Platform Besu 网络运行生成的 Hardhat 部署脚本,仅对该部署使用 wallet 服务值。它部署或重用所需的组件,设置其上下文,并返回令牌和账户代理地址。两个代理都处于非活动状态。

提交部署意图

在非活动部署完成后,将用已部署的令牌目标和账户目标值填充监管部分。将两个目标都保留在意图中。每个都是 EIP-1967 代理;监管根据其解析的实现地址和运行时代码散列激活代理。

  1. 确认令牌和账户目标。仅当您故意建议现有代理对时才覆盖它们。
  2. 输入将来的建议截止日期。
  3. 对于 Oracle Blockchain Platform Besu,输入所选策略授权的发件人地址。所选环境必须具有 RPC URL 主机和授权令牌。
  4. 对于其他 EVM 环境,选择呼叫方帐户或输入呼叫方的私钥。应用程序从该密钥派生发件人地址。
  5. 选择复查。扩展可解析每个代理的实现和实现代码散列,然后显示建议的意图。
  6. 验证 UUID、最后期限、代理目标、实施地址和代码散列。
  7. 选择提交。

对于 Oracle Blockchain Platform 环境,该扩展通过 Oracle Blockchain Platform wallet 服务监管端点提交审阅意图。对于其他 EVM 环境,它通过 JSON-RPC 将签署的 proposeDeployIntent 事务处理直接发送到监管合同。

如果在复查后更改监管地址、UUID、代理目标或最后期限,则预览将失效。请在提交建议之前再次复核该建议。

监管激活

相同的意图工作流用于两种治理类型。区别在于治理合同接受建议后会发生什么:

  • No-Op:成功的 proposeDeployIntent 调用会立即激活包含的组件。确认事务处理或 Oracle Blockchain Platform 响应,然后验证令牌的活动状态。
  • 已监管:提交的意图仍然受配置的策略约束。只有在截止日期之前收到所需的审批后,令牌和账户才会变为活动状态。

该扩展提交意图;它不会冒充或绕过治理审批者。对于受监管的策略,请使用组织的审批流程并等待监管合同激活。如果策略拒绝或使意图过期,请更正原因,然后提交新的有效意图。单独部署不会激活代理。

注意:

部署合同后,清单文件将在项目根目录下的 .openzeppelin 文件夹中生成。对于生产网络(而非开发网络),将这些文件提交到源控制。有关更多信息,请参见 OpenZeppelin 文档中的 Network Files 。

排除部署错误

条件 解决方法
无法保存 Oracle Blockchain Platform 环境 输入没有端点路径的 HTTP 或 HTTPS 源。Oracle Blockchain Platform 字段仅需要主机。
Governance Review 表示,Oracle Blockchain Platform 环境需要 RPC URL 主机和授权令牌 使用这两个值更新保存的 Oracle Blockchain Platform 环境,然后打开或再次选择该环境。
监管审查报告缺少运行时字节码 验证选定的网络和代理/实施地址。不要针对未部署的目标提交意图。
部署成功,但令牌处于非活动状态 提交部署意图。对于受监管的监管,请等待所有策略审批;对于无操作监管,请确认建议交易成功。
更改字段后无法提交建议 再次选择复查。应用程序故意使过时的预览失效。