为批发 CBDC 示例应用程序配置 Oracle Blockchain Platform

在创建了 Oracle Blockchain Platform 的所有必需实例及其先决条件产品后,您需要配置用户和角色,将任何参与者组织添加到创始组织,并启用丰富的历史记录数据库。

将 IDCS 组配置为 Oracle Blockchain Platform 实例

有关内置 Oracle Blockchain Platform 角色以及如何向其分配用户的附加信息,请参阅设置用户和应用程序角色

有关批发 CBDC 示例应用程序角色的其他信息,请参见 Wholesale CBDC Application Workflow

在 Oracle Blockchain Platform 中,必须实施以下应用程序角色分配:

  • 系统所有者组:将单个合并的系统所有者 IDCS 组(包含所有系统所有者角色)分配给系统所有者 Oracle Blockchain Platform Digital Assets Edition 实例的 REST_CLIENT 应用程序角色。请勿将单个特定于角色的组直接分配给 Oracle Blockchain Platform Digital Assets Edition 实例。
  • 参与者组织组:对于每个参与者组织,将单个组合参与者组织 IDCS 组(包含该组织的所有特定于角色的组)分配给相应的 Oracle Blockchain Platform Digital Assets Edition 实例的 REST_CLIENT 应用程序角色。
  • 管理角色:将相关管理组(例如 System_AdminsOrg1_Admins)分配给各自 Oracle Blockchain Platform Digital Assets Edition 实例的 ADMIN 应用程序角色。

此配置可确保系统所有者和参与组织组都具有通过 REST_CLIENT 角色的必要访问权限,而管理权限则通过 ADMIN 角色进行适当管理。

按照以下步骤将组分配给应用程序角色。

  1. 登录您的 Oracle Cloud Infrastructure 账户。
  2. 在控制台中,单击左上角的 Navigation(导航)菜单。
  3. 身份下,选择
  4. 在“域”页上,单击 Oracle Identity Cloud Service
  5. 在 Oracle Identity Cloud Service 导航菜单中,选择 Oracle Cloud Services 。找到要为其分配组角色的 Oracle Blockchain Platform 实例。打开该实例的“详细信息”页。
  6. 转到“应用程序角色”页以查看“资源”导航器中列出的 Oracle Identity Cloud Service 应用程序角色。
  7. 选择要分配的角色,然后展开该角色。单击角色的“更多”菜单,然后选择分配组
  8. 在“分配组”对话框中,选择要分配给角色的组,然后单击分配

提取 ClientIdClientSecret

Visual Builder 将使用 Oracle Blockchain Platform ClientIDClientSecret。以后需要在 Visual Builder 中更新这些参数,如配置 Visual Builder 后端中所述。

完成以下步骤来检索 Oracle Blockchain Platform 实例的客户端 ID 和客户端密钥:

  1. 登录您的 Oracle Cloud Infrastructure 账户。确保您具有足够的管理权限来管理 OAuth 设置。
  2. 在控制台中,单击左上角的 Navigation(导航)菜单。
  3. 身份下,选择
  4. 在“域”页上,单击 Oracle Identity Cloud Service
  5. 在 Oracle Identity Cloud Service 导航菜单中,选择 Oracle Cloud Services 。找到要为其提取客户端 ID 和客户端密钥的 Oracle Blockchain Platform 实例。打开该实例的“详细信息”页。
  6. 打开实例详细信息页时,显示的默认选项卡将是“OAuth 配置”选项卡。此选项卡包含有关 Oracle Blockchain Platform 实例的 OAuth 设置的基本信息。

    您可以在“General Information(一般信息)”部分中找到标记为“Client ID(客户端 ID)”和“Client Secret(客户端密钥)”的字段。这些身份证明用于向 Oracle Blockchain Platform 验证 API 请求。

多组织配置

如果您要创建包含多个组织的复杂 Oracle Blockchain Platform 网络,请向创始人添加参与者。Oracle Blockchain Platform 管理指南中提供了此过程的概述:将 OBCS 参与者组织添加到网络

为 Oracle Blockchain Platform 配置丰富的历史记录数据库

有关配置和使用富历史记录数据库的其他信息,请参阅创建富历史记录数据库

在完成这些步骤之前,您必须按照 Provision Autonomous Database 中所述创建 Autonomous Database 实例,以便为 Oracle Blockchain Platform 启用丰富的历史记录数据库。

在通用模式下,为 Oracle Blockchain Platform 的系统所有者实例配置 Oracle Autonomous Database 的单个实例。在机密模式下,您必须为每个参与者组织和系统所有者配置单独的 Oracle Autonomous Database 实例。

  1. 打开网络实例的 Oracle Blockchain Platform 控制台。
  2. 单击右上角的 More Actions(更多操作)菜单,然后选择 Configure Rich History(配置富历史记录)
  3. 通过提供用于访问和写入 Oracle 数据库的连接字符串和身份证明来指定 Oracle 数据库连接。请注意,您提供的身份证明是数据库的身份证明,Oracle Blockchain Platform 不对其进行管理。
  4. 单击保存以配置富历史记录数据库。

创建登记

您必须为 System_AdminsOrg_Admins 组中的用户手动创建注册。

Oracle Blockchain Platform 的 REST 代理中的注册为用户提供了一种无需注册证书即可与区块链交互的机制,通过将应用程序身份映射到区块链成员来简化 API 调用。要启动对链代码的任何调用,必须在 Oracle Blockchain Platform 中建立注册。

CBDC 批发应用程序在账户设置期间管理用户的注册创建;但是,当系统管理员用户首次登录时,不存在注册。因此,如果此用户尝试创建帐户,则 RestProxy 调用将失败。因此,为 System_Admins 组创建注册至关重要。

设置帐户时,会为相应的组织创建注册。例如,为系统所有者建立帐户时,将生成相应的注册。但是,如果通过系统管理员页面创建任何参与者组织帐户,则不会自动为这些组织创建注册。在此批发 CBDC 工作流中,必须在系统管理员页面上设置组织管理员帐户。因此,您必须为组织管理员组手动创建注册,因为由于中央银行与金融机构之间的组织结构不同,不会自动生成这些注册。

有关如何创建登记的全面信息,请参阅将登记添加至 REST 代理

提取 RestproxyId

RestproxyId 值将由 Visual Builder 使用。稍后,您需要在 Visual Builder 中更新此设置,如配置 Visual Builder 后端中所述。

要检索 Oracle Blockchain Platform 实例的 RestProxyId,必须使用管理用户账户调用 Oracle Blockchain Platform 控制台 API。可以通过使用基本验证或 OAuth 2.0 来完成验证。

验证方法

对于 OAuth 2.0,请参阅 OAuth 2.0 Access Token Based Authentication 上的文档以实现必要的验证流。

用于提取 RestProxyId 的 API 端点

使用 Oracle Blockchain Platform 控制台 API 通过向以下端点发送请求来获取 RestProxyId

GET <oracleblockchainplatform_url>/console/admin/api/v2/nodes

此 API 调用将返回一个响应,其中包含有关在实例中配置的 REST 代理的详细信息。

有关控制台 API 的更多详细信息,请参阅以下文档:获取节点列表

答复明细

在响应中,找到标有 RESTProxies 的部分,您将在其中找到相应的 RestProxyId。响应的结构将包括与每个 REST 代理节点关联的各种属性。

"RESTProxies": [
        {
            "status": "up",
            "extInfo": [],
            "displayName": "restproxy",
            "RESTProxyId": "48021a2c-e62b-40cd-b7ca-71dda883521d-restproxy",
            "url": "https://bank3-oabcs1-hyd.blockchain.ocp.oraclecloud.com:7443/restproxy",
            "mspId": "Bank3"
        }
    ]

为批发 CBDC 示例应用程序部署链代码

现在,您可以创建渠道并将示例应用程序链代码部署到该渠道。

  1. 创建通道。
    1. 根据组织要求定义具有必要参与者的新渠道。
    2. 在渠道创建过程中,确保选中启用富历史记录。此选项会激活以前配置的富历史记录功能。
    3. 仅限机密模式:对于专用数据收集,输入星号 (*) 以允许访问所有专用数据收集。
      如果未完成此步骤,则从专用数据收集返回的数据将不准确。
    4. 仅限机密模式:为网络中的所有其他参与者组织重复前两个步骤(在以前创建的渠道上启用丰富的历史记录和访问专用数据收集)。
  2. 部署链代码。
    • 通用模式:通过下载批发 CBDC 链代码包并将其中的归档文件 (WholesaleCBDC.zip) 部署到新通道来部署批发 CBDC 链代码。软件包名称为 Wholesale CBDC
    • 机密模式:通过下载机密批发 CBDC 链代码包并将其中的归档文件 (WholesaleCBDC-Confidential.zip) 部署到新通道来部署机密批发 CBDC 链代码。程序包名称为 WholesaleCBDCConfidential
    有关如何部署链代码的详细信息,请参阅用于部署链代码的典型工作流
  3. 请酌情使用批发 CBDC 链代码包中提供的批发 CBDC Postman 集合或机密批发 CBDC 链代码包中的机密批发 CBDC Postman 集合,致电 init API。此步骤将完成初始化过程,确保链代码可供使用。
  4. 检查复制状态。
    1. 转到渠道选项卡。
    2. 定位通道,然后单击通道条目的右侧的更多操作菜单。
    3. 选择丰富的历史记录状态可查看复制状态。
      • 如果状态为 REPLICATING,则通道数据将主动复制到富历史记录数据库。
      • 如果复制状态为 USER_DISABLED,请完成以下操作:
        1. 重新启动对等节点:重新启动与通道关联的对等节点。
        2. 启动事务处理:触发通道上的任何事务处理以启动数据复制。
        3. 重新检查复制状态以确认数据现在正在复制到富历史记录数据库。
请注意通道名称和链代码名称;您需要使用这些名称配置 Visual Builder 才能使用示例应用程序。

创建丰富的历史记录数据库视图

为 Oracle Blockchain Platform 实例创建富历史记录数据库后,可以运行数据库视图创建脚本以在富历史记录数据库中创建视图并生成 ORDS 端点。

Oracle REST Data Services (ORDS) 脚本是在 TypeScript 中编写的 Node.js 应用程序,用于公开 ORDS 端点,以便从富历史记录数据库中检索账户事务处理详细信息。它创建一个 RESTful 端点,允许用户从富历史记录数据库中提取链代码事务处理数据(对于 TypeScript 和 Go 链代码)。它还提供基本的身份证明,例如 ORDS 端点、clientIdclientSecret 和 Bearer 标记,以验证和访问端点。
  1. 下载数据库视图创建脚本。
    1. 打开 Oracle Blockchain Platform 控制台。
    2. 转到“数字资产”页面。
    3. 在左侧侧栏中,转至 Wholesale CBDC 应用程序。
    4. Oracle Database View Definitions for WholesaleCBDC 区域下载脚本。
  2. 下载脚本后,请参阅 Oracle Database View Definitions for Wholesale CBDC 以了解有关如何运行脚本的详细信息。
  3. 该脚本返回 ORDS 端点、客户端 ID、客户端密钥和 Bearer 标记。
    • 在一般模式下,所有组织都使用单个 ORDS 端点配置。该脚本返回具有三个作用域的账户的端点:单个账户、组织级账户和所有账户。
      {
        ORDSEndpoint: 'https://<base_URL>ords/<user_name|alias>/<resource_link>',
       {
        "ORDSEndpoint": {
          "Accounts": "https://<base_URL>ords/ALIAS_NAME/BASE_PATH/PATTERN",
          "OrgAccounts": "https://<base_URL>ords/ALIAS_NAME/BASE_PATH/PATTERNOrgAccounts",
          "AllAccounts": "https://<base_URL>ords/ALIAS_NAME/BASE_PATH/PATTERNAllAccounts"
        },
        clientId: '<clientId>',
        clientSecret: '<clientSecret>',
        bearerToken: {
          access_token: '<BearerToken>',
          token_type: 'bearer',
          expires_in: 3600
        }
      }
    • 在机密模式下,包括系统所有者在内的每个组织都有自己的 ORDS 配置。系统所有者端点包括对所有账户的访问。参与者组织只能访问自己的组织层账户。
      系统所有者:
      {
        ORDSEndpoint: 'https://<base_URL>ords/<user_name|alias>/<resource_link>',
       {
        "ORDSEndpoint": {
          "Accounts": "https://<base_URL>ords/ALIAS_NAME/BASE_PATH/PATTERN",
          "OrgAccounts": "https://<base_URL>ords/ALIAS_NAME/BASE_PATH/PATTERNOrgAccounts",
          "AllAccounts": "https://<base_URL>ords/ALIAS_NAME/BASE_PATH/PATTERNAllAccounts"
        },
        clientId: '<clientId>',
        clientSecret: '<clientSecret>',
        bearerToken: {
          access_token: '<BearerToken>',
          token_type: 'bearer',
          expires_in: 3600
        }
      }
      参与者组织:
      {
        ORDSEndpoint: 'https://<base_URL>ords/<user_name|alias>/<resource_link>',
       {
        "ORDSEndpoint": {
          "Accounts": "https://<base_URL>ords/ALIAS_NAME/BASE_PATH/PATTERN",
          "OrgAccounts": "https://<base_URL>ords/ALIAS_NAME/BASE_PATH/PATTERNOrgAccounts"
        },
        clientId: '<clientId>',
        clientSecret: '<clientSecret>',
        bearerToken: {
          access_token: '<BearerToken>',
          token_type: 'bearer',
          expires_in: 3600
        }
      }
用于访问 RESTful 服务的 ORDS 端点遵循以下结构:
ORDS_REST_BASE_URL/ords/ALIAS_NAME/BASE_PATH/PATTERN
  • ORDS_REST_BASE_URL:ORDS 服务的基本 URL。
  • ALIAS_NAME:在 ORDS 中配置的数据库或方案别名。
  • BASE_PATH:RESTful 服务的基本路径。
  • PATTERN:RESTful 服务的特定端点模式。
要生成用于验证的 Bearer 标记,请使用 OAuth2 标记端点:
ORDS_REST_BASE_URL/ords/ALIAS_NAME/oauth/token
必须在 Visual Builder 的后端更新与 ORDS 相关的以下参数,才能从富历史记录数据库中检索数据。以后将在配置 Visual Builder 后端中完成此操作。
  • clientId
  • clientSecret
  • ORDS 端点(仅限 Accounts 端点;内部派生 OrgAccountsAllAccounts 端点)
  • OAuth 基本 URL:ORDS_REST_BASE_URL/ords/<userName|aliasName>