批发 CBDC 的 Oracle Database View 定义

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

可以使用 GetAccountTransactionHistoryWithFiltersFromRichHistDB、getOrgAccountTransactionHistoryWithFiltersFromRichHistDB 和 getAllAccountTransactionHistoryWithFiltersFromRichHistDB API 从富历史记录数据库提取账户事务处理历史记录。将 custom_endpoint 和 bearer_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. 启用和配置富历史记录数据库。
    有关详细信息,请参阅使用中的启用和配置富历史记录数据库。
  2. 在包含要写入到富历史记录数据库的链代码数据的渠道上启用富历史记录。有关详细信息,请参阅使用中的配置将数据写入富历史记录数据库的渠道。
  3. 下载并安装 Node.js 版本 18 或更高版本。
  4. 在 Digital Assets(数字资产)页面中,选择 Wholesale CBDC Application(批发 CBDC 应用程序)。
  5. 单击下载数据库视图定义程序包。
  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):使用 SQL Developer 。