部署合同
编译智能合同后,您可以将其部署到 Oracle Blockchain Platform Besu 环境。
部署过程会创建所需的帮助程序库和 UUPS 代理,链接令牌和账户上下文,并设置治理上下文。标记和账户部署处于非活动状态。它们仅通过部署意图流程变为活动状态。
要部署编译后的合同,请从数字资产令牌管理员处获取预部署的监管合同及其策略 UUID 的地址。获取具有部署权限的账户,并在适用时提交部署意图。部署表单需要合同、环境、部署 ID 和注册表元数据:智能合同 ID、版本、说明和作者。部署 ID 标识可以恢复的部署状态;在重试同一部署时使用稳定的唯一值。
部署生命周期
- 编译项目。
- 部署 Oracle Blockchain Platform 数字资产堆栈。
- 设置账户/令牌和监管上下文。(代理处于非活动状态。)
- 复核并提交两个代理组件的部署意图。
- 无操作治理:建议成功,然后激活组件。
- Governed:完成所需的策略审批,然后激活组件。
注意:
部署后,代理立即处于非活动状态。成功的合同部署并不意味着标记处于活动状态。激活由为部署配置的监管合同控制,而不是由 UUPS 升级控制。创建 Oracle Blockchain Platform Besu 环境
Oracle Blockchain Platform Besu 环境存储 Oracle Blockchain Platform RPC 主机,而不是完整的 JSON-RPC 端点。该扩展从此主机派生所需的 Besu 和治理路由。
- 打开环境视图,然后选择添加环境。
- 输入描述性环境名称。例如,输入 obp-test 。
- 为环境类型选择 Oracle Blockchain Platform Besu 。
- 输入 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。 - 输入网络链 ID 。
- 输入 RPC 代理所需的授权令牌。
- (可选)为专用证书颁发机构设置 Gas Price Wei 、 Allow Self Signed 和 CA Certificate Path 。除非您的部署模型明确要求进行非托管签名,否则请将 BESU 账户留空。Oracle Blockchain Platform wallet 服务部署按部署收集签名详细信息。
- 选择创建。
对于存储的 Oracle Blockchain Platform 主机,该扩展派生 Besu 代理端点并使用 Oracle Blockchain Platform 监管意图端点。这可确保环境在部署、执行和监管操作之间可移植。
内置的 Hardhat Local Node 环境可用于本地开发,无需保存。它不是 Oracle Blockchain Platform 环境。
部署到 Oracle Blockchain Platform Besu 环境
- 在合同窗格中,打开项目的部署/执行表单,然后选择部署选项卡。
- 选择合同包和 Besu 环境。
- 输入部署 ID,或保留显示的部署 ID。
- 完成所需的注册表元数据。部署时标记名称、符号、说明、URI 和管理员 ID 是可选的。空值使用部署脚本默认值。
- 输入为 Oracle Blockchain Platform 环境显示的 wallet 服务签名信息。
- Wallet 服务签名 URL
- Wallet 服务帐户,地址/wallet-ID 对象的 JSON 数组
- Wallet 服务验证令牌
- 选择 Next 。
- 在 Deployment Options(部署选项)中,输入 Governance Contract Address(管理合同地址)和 Policy UUID ,然后选择 Deploy(部署)。
Blockchain App Builder 通过 Oracle Blockchain Platform Besu 网络运行生成的 Hardhat 部署脚本,仅对该部署使用 wallet 服务值。它部署或重用所需的组件,设置其上下文,并返回令牌和账户代理地址。两个代理都处于非活动状态。
提交部署意图
在非活动部署完成后,将用已部署的令牌目标和账户目标值填充监管部分。将两个目标都保留在意图中。每个都是 EIP-1967 代理;监管根据其解析的实现地址和运行时代码散列激活代理。
- 确认令牌和账户目标。仅当您故意建议现有代理对时才覆盖它们。
- 输入将来的建议截止日期。
- 对于 Oracle Blockchain Platform Besu,输入所选策略授权的发件人地址。所选环境必须具有 RPC URL 主机和授权令牌。
- 对于其他 EVM 环境,选择呼叫方帐户或输入呼叫方的私钥。应用程序从该密钥派生发件人地址。
- 选择复查。扩展可解析每个代理的实现和实现代码散列,然后显示建议的意图。
- 验证 UUID、最后期限、代理目标、实施地址和代码散列。
- 选择提交。
对于 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 环境,然后打开或再次选择该环境。 |
| 监管审查报告缺少运行时字节码 | 验证选定的网络和代理/实施地址。不要针对未部署的目标提交意图。 |
| 部署成功,但令牌处于非活动状态 | 提交部署意图。对于受监管的监管,请等待所有策略审批;对于无操作监管,请确认建议交易成功。 |
| 更改字段后无法提交建议 | 再次选择复查。应用程序故意使过时的预览失效。 |