面向批发 CBDC 的 Oracle Database View 定义

您可以使用丰富的历史记录数据库检索账户事务处理历史记录,并在同一块中发生的多个事务处理中解决不正确的余额。

可以使用 GetAccountTransactionHistoryWithFiltersFromRichHistDBgetOrgAccountTransactionHistoryWithFiltersFromRichHistDBgetAllAccountTransactionHistoryWithFiltersFromRichHistDB API 从富历史记录数据库提取账户事务处理历史记录。将 custom_endpointbearer_token 参数传递给方法时,会从富历史记录数据库或状态数据库中检索帐户事务处理历史记录。有多个定制端点,如下列表中所示。有关更多信息,请参见 Create Rich History Database Views
客户
https://<base_URL>ords/ALIAS_NAME/BASE_PATH/PATTERN
在通用模式和机密模式下可用。
OrgAccounts
https://<base_URL>ords/ALIAS_NAME/BASE_PATH/PATTERNOrgAccount
在通用模式和机密模式下可用。
AllAccounts
https://<base_URL>ords/ALIAS_NAME/BASE_PATH/PATTERNAllAccounts
在通用模式下可用。在机密模式下,仅可供系统所有者使用。
要从富历史记录数据库检索事务处理历史记录,必须运行启用了 Oracle REST Data Services (ORDS) 和 OAuth 的 Oracle Autonomous Database。
  1. 启用和配置富历史记录数据库。
    有关更多信息,请参阅使用 Oracle Blockchain Platform 中的启用和配置富历史记录数据库
  2. 对包含要写入富历史记录数据库的链代码数据的渠道启用富历史记录。有关更多信息,请参见 Configure the Channels that Write Data to the Rich History Database in Using Oracle Blockchain Platform
  3. 下载并安装 Node.js 版本 18 或更高版本。
  4. Oracle Blockchain PlatformDigital Assets 页面上,选择 Wholesale CBDC Application
  5. 单击下载 Database View Definitions 程序包
  6. 提取 WholesaleCBDCViewsPackage.zip 文件。
  7. 导航到 ORDSscript 文件夹并通过运行以下命令安装所需的相关项。
    npm install
  8. 编辑脚本随附的 .env 文件,以便为您的环境配置该文件。
    Oracle REST Data Services 端点使用以下常规格式。
    <base_URL>/<user_name>/<resource_link>
    环境/配置类型 环境/配置变量 说明 范例
    DB Connection CONNECTION_STRING 数据库的连接字符串。
    CONNECTION_STRING="(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)
    (host=adg.ap-sydney-1.example.com))(connect_data=
    (service_name=g536390e55ee33f4_db_high.adg.example.com))(security=(ssl_server_dn_match=yes)))"
    View Configuration CHAINCODE_NAME 从富历史记录数据库中提取事务处理详细信息的链代码的名称。 CHAINCODE_NAME="BondMarketplace"
    View Configuration INSTANCE_NAME 部署链代码的实例的名称。 INSTANCE_NAME="BondMarketplace"
    View Configuration CHANNEL_NAME 部署链代码的渠道的名称。 CHANNEL_NAME="default"
    ORDS Endpoint Setup MODULE_NAME 要使用的 ORDS 模块的名称。这可以是与数据库中的现有资产不冲突的任何值。 MODULE_NAME="demotest"
    ORDS Endpoint Setup BASE_PATH ORDS URL 的基本路径。这可以是与数据库中的现有资产不冲突的任何值。 BASE_PATH="demotest"
    ORDS Endpoint Setup PATTERN ORDS URL 的模式名称。这可以是与数据库中的现有资产不冲突的任何值。 PATTERN="accountTransactionDetails"
    ORDS REST Endpoint ORDS_REST_BASE_URL 数据库的 ORDS REST 端点的基本 URL。 ORDS_REST_BASE_URL="https://g536390e55ee33f4_db_high.adg.ap-sydney-1.example.com"
    Alias Configuration ALIAS_NAME 要在 REST 端点 URL 中代替用户名使用的别名。这可以是与数据库中的现有资产不冲突的任何值。 ALIAS_NAME="demotestAlias"
    ORDS Role ROLE_NAME 分配给用户的 ORDS 角色。这可以是与数据库中的现有资产不冲突的任何值。 ROLE_NAME="demotest_role"
    ORDS Privilege PRIVILEGE_NAME 分配给用户的 ORDS 权限。这可以是与数据库中的现有资产不冲突的任何值。 PRIVILEGE_NAME="demotest_priv"
    ORDS Privilege LABEL ORDS 特权的标签。这可以是与数据库中的现有资产不冲突的任何值。 LABEL="demotest_label"
    ORDS Privilege DESCRIPTION ORDS 权限的说明。这可以是与数据库中的现有资产不冲突的任何值。 DESCRIPTION="demotest_description"
    OAuth Configuration CLIENT_NAME 用于对 ORDS REST 端点进行 OAuth 验证的客户端名称。这可以是与数据库中的现有资产不冲突的任何值。 CLIENT_NAME="demotest_client"
    OAuth Configuration OWNER 用于对 ORDS REST 端点进行 OAuth 验证的所有者名称。这可以是与数据库中的现有资产不冲突的任何值。 OWNER="demotest"
    OAuth Configuration DESCRIPTION OAuth 配置的说明。这可以是与数据库中的现有资产不冲突的任何值。 DESCRIPTION="demotest_description"
    OAuth Configuration SUPPORT_EMAIL OAuth 配置的支持电子邮件地址。这可以是与数据库中的现有资产不冲突的任何值。 SUPPORT_EMAIL="test@example.com"

    软件代码中包括分析和其他视图名称。帐户视图为 ACCOUNTS_VIEW。事务处理专用数据收集视图为 TRANSACTION_PDC_VIEW。账户交易视图为 ACCOUNT_TRANSACTION_VIEW

  9. 仅系统所有者(中央银行):编辑 Participant_orgs_list.yml 文件以在中央银行和每个参与者银行之间创建数据库链接。请勿编辑或删除参与者银行节点的此文件。如果运行脚本时选择机密模式,系统会提示您为 Participant_orgs_list.yml 文件中列出的每个参与者组织输入数据库链接用户名和密码。与数据库用户名不同,数据库链接用户名区分大小写。
    Participant_orgs_list.yml 文件是一个 YAML 数组,其中包含用于在中央银行和每个参与者银行之间创建数据库链接的配置详细信息,格式如下。
    orgName
    参与者组织的实例名称。
    hostName
    目标数据库服务器的主机名或 IP 地址。
    port
    数据库服务的网络端口。
    serviceName
    数据库服务名或系统标识符 (System Identifier,SID)。
    以下文本是示例 Participant_orgs_list.yml 文件。
    - orgName: "Participating_Org1"
      hostName: "dbserver.example.com"
      port: 1521
      serviceName: "ORCLPDB1"
    - orgName: "Participating_Org2"
      hostName: "dbserver2.example.com"
      port: 1522
      serviceName: "ORCLPDB2"
  10. 使用以下命令运行 ORDS 脚本。
    npm run start

    在机密情况下,系统将提示用户选择您的组织类型。如果用户选择了系统所有者,则 Participant_orgs_list.yml 文件将进入操作。请提及机密案例,所有参与者银行均需要在系统所有者之前完成其 ORDS 设置,否则将导致失败。

    命令运行时,将显示以下提示。
    Enter your DB User Name
    输入丰富历史记录数据库的用户名。账户必须具有创建视图和 ORDS 端点所需的权限。
    Enter your DB Password
    为富历史记录数据库输入密码。
    Please select a chaincode type
    对于使用机密模式的链代码,选择 CONFIDENTIAL 。否则,为使用通用模式的链代码选择 WCBDC 。使用方向键进行导航,然后按 Enter 键确认您的选择。如果选择机密模式,系统会提示您选择您的组织类型:系统所有者(代表中央银行)或参与组织(代表参与银行)。

    注意:

    在机密模式下,所有参与组织必须在系统所有者之前运行此脚本并完成 ORDS 设置。如果首先为系统所有者运行脚本,它将失败。
    Do you want to create the View and ORDS Endpoint? (y/n)
    输入 y 以创建视图和端点。如果已创建视图和端点,请输入 n
    Please select the language of your chaincode? (TS/GO)
    如果之前输入了 y ,则为 TypeScript 输入 TS ,为 GO 输入 GO
    Do you want to generate ORDS Endpoint URL and Bearer Token? (y/n)
    输入 y 以生成端点身份证明。否则,输入 n
如果错误地删除了 Participant_orgs_list.yml 文件,请运行以下命令以重新生成该文件。
npm run refresh
如果系统中已存在视图或数据库链接,则脚本不会重新创建该链接。而是记录类似以下文本的消息:
createView already exists
该脚本将继续执行下一步。这可确保视图、表、数据库链接和其他数据库实体不会被脚本删除或覆盖。
此外,您可能会看到以下错误。
Error: ORA-20049: Cannot alter the URL mapping while the schema is enabled. Try disabling the schema first.
出现此错误的原因是数据库方案已启用,因此无法映射到 .env 文件中指定的其他别名。
要解决此行为,请完成以下步骤。
  1. 使用之前使用的相同别名,或检查数据库中的 REST 服务是否具有方案别名。
  2. 禁用数据库方案并再次运行脚本。有关更多信息,请参见Oracle REST Data Services (ORDS):Using SQL Developer