卸売CBDCのOracle Databaseビュー定義

リッチ履歴データベースを使用して、勘定科目トランザクション履歴を取得し、同じブロックで発生する複数のトランザクションの不正な残高を解決できます。

GetAccountTransactionHistoryWithFiltersFromRichHistDBgetOrgAccountTransactionHistoryWithFiltersFromRichHistDBおよびgetAllAccountTransactionHistoryWithFiltersFromRichHistDB APIを使用して、リッチ履歴データベースからアカウント・トランザクション履歴をフェッチできます。custom_endpointおよびbearer_tokenパラメータをメソッドに渡すと、アカウント・トランザクション履歴がリッチ履歴データベースまたは状態データベースから取得されます。次のリストに示すように、複数のカスタム・エンドポイントがあります。詳細は、リッチ履歴データベース・ビューの作成を参照してください。
取引先
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. リッチ履歴データベースに書き込むチェーンコード・データを含むチャネルのリッチ履歴を有効にします。詳細は、Oracle Blockchain Platformの使用リッチ履歴データベースへのデータの書込みチャネルの構成を参照してください。
  3. Node.jsバージョン18以降をダウンロードしてインストールします。
  4. Oracle Blockchain Platform「デジタル・アセット」ページで、「Wholesale CBDC Application」を選択します。
  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
    データベース・サービス名またはシステム識別子(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]キーを押して選択を確認します。機密モードを選択した場合、組織タイプ SYSTEM OWNER (中央銀行を表す)または PARTICIPATING ORG (参加銀行を表す)を選択するように求められます。

    ノート:

    機密モードでは、すべての参加組織がこのスクリプトを実行し、システム所有者の前に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の使用を参照してください。