Wholesale CBDCサンプル・アプリケーション用のOracle Blockchain Platformの構成

Oracle Blockchain Platformに必要なすべてのインスタンスを作成し、それが前提条件となる製品を作成したら、ユーザーおよびロールの構成、ファウンダ組織への参加者組織の追加、リッチ履歴データベースの有効化を行う必要があります。

Oracle Blockchain PlatformインスタンスへのIDCSグループの構成

組込みのOracle Blockchain Platformロールおよびユーザーに割り当てる方法の詳細は、ユーザーおよびアプリケーション・ロールの設定を参照してください

卸売CBDCサンプル・アプリケーション・ロールの詳細は、卸売CBDCサンプル・アプリケーション・ワークフローを参照してください。

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. コンソールで、「ナビゲーション」メニューを選択します。
  3. 「アイデンティティ」で、「ドメイン」を選択します。
  4. 「ドメイン」ページで、「Oracle Identity Cloud Service」を選択します。
  5. Oracle Identity Cloud Serviceのナビゲーション・メニューで、「Oracle Cloud Services」を選択します。グループ・ロールを割り当てるOracle Blockchain Platformインスタンスを見つけます。そのインスタンスの「詳細」ページを開きます。
  6. 「アプリケーション・ロール」ページに移動して、「リソース」ナビゲータにリストされているOracle Identity Cloud Serviceアプリケーション・ロールを表示します。
  7. 割り当てるロールを選択し、そのロールを展開します。ロールの「詳細」メニューを選択し、「グループの割当て」を選択します。
  8. 「グループの割当て」ダイアログで、ロールに割り当てるグループを選択し、「割当て」を選択します。

ClientIdおよびClientSecretのフェッチ

Oracle Blockchain Platform ClientIDおよびClientSecretは、Visual Builderで使用されます。これらのパラメータは、後で「Visual Builderバックエンドの構成」の説明に従ってVisual Builderで更新する必要があります。

次のステップを実行して、Oracle Blockchain PlatformインスタンスのクライアントIDおよびクライアント・シークレットを取得します:

  1. Oracle Cloud Infrastructureアカウントにサインインします。OAuth設定を管理するための十分な管理権限があることを確認します。
  2. コンソールで、「ナビゲーション」メニューを選択します。
  3. 「アイデンティティ」で、「ドメイン」を選択します。
  4. 「ドメイン」ページで、「Oracle Identity Cloud Service」を選択します。
  5. Oracle Identity Cloud Serviceのナビゲーション・メニューで、「Oracle Cloud Services」を選択します。クライアントIDおよびクライアント・シークレットをフェッチするOracle Blockchain Platformインスタンスを見つけます。そのインスタンスの「詳細」ページを開きます。
  6. インスタンスの詳細ページを開くと、表示されるデフォルトのタブはOAuth「構成」タブになります。このタブには、Oracle Blockchain PlatformインスタンスのOAuth設定に関する重要な情報が含まれています。

    「一般情報」セクションには、「クライアントID」および「クライアント・シークレット」というラベルのフィールドがあります。これらの資格証明は、Oracle Blockchain PlatformへのAPIリクエストを認証するために使用されます。

複数組織構成

複数の組織を持つ複雑なOracle Blockchain Platformネットワークを作成する場合は、ファウンダに参加者を追加します。このプロセスの概要は、Oracle Blockchain Platform管理ガイド: ネットワークへのOBCS参加者組織の追加に記載されています。

Oracle Blockchain Platformのリッチ履歴データベースの構成

リッチ履歴データベースの構成および使用の詳細は、「リッチ履歴データベースの作成」を参照してください。

これらのステップを完了する前に、Oracle Autonomous Databaseのプロビジョニングの説明に従ってOracle Autonomous Databaseインスタンスを作成して、Oracle Blockchain Platformの豊富な履歴データベースを有効にしておく必要があります。

汎用モードでは、Oracle Blockchain Platformのシステム所有者インスタンスに対してOracle Autonomous Databaseの単一インスタンスを構成します。機密モードでは、Oracle Autonomous Databaseの個別のインスタンスを使用して、各参加者組織およびシステム所有者を構成する必要があります。

  1. ネットワーク・インスタンスのOracle Blockchain Platformコンソールを開きます。
  2. 「その他のアクション」メニューを選択し、「リッチ履歴の構成」を選択します。
  3. Oracle Databaseにアクセスして書き込む接続文字列および資格証明を指定して、データベース接続を指定します。指定する資格証明はデータベースの資格証明であり、Oracle Blockchain Platformではこれらを管理しません。
  4. 「保存」を選択して、リッチ履歴データベースを構成します。

登録の作成

System_AdminsおよびOrg_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をコールする必要があります。認証は、Basic認証または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"
        }
    ]

Wholesale CBDCサンプル・アプリケーションのチェーンコードのデプロイ

これで、チャネルを作成し、サンプル・アプリケーション・チェーンコードをチャネルにデプロイできます。

  1. チャネルを作成します。
    1. 組織の要件に従って、必要な参加者を含む新しいチャネルを定義します。
    2. チャネル作成プロセス中に、「リッチ履歴の有効化」が選択されていることを確認します。このオプションは、以前に構成されたリッチ履歴機能をアクティブ化します。
    3. 機密モードのみ: 「プライベート・データ収集」で、すべてのプライベート・データ収集へのアクセスを許可するアスタリスク(*)を入力します。
      このステップを完了しない場合、プライベート・データ収集から返されたデータは正確ではありません。
    4. 機密モードのみ: ネットワーク内の他のすべての参加者組織について、前の2つのステップ(以前に作成したチャネルでリッチ履歴およびプライベート・データ・コレクションへのアクセスを有効にする)を繰り返します。
  2. チェーンコードをデプロイします。
    • 汎用モード: 卸売CBDCチェーンコード・パッケージをダウンロードし、その中のアーカイブ・ファイル(WholesaleCBDC.zip)を新しいチャネルにデプロイすることで、卸売CBDCチェーンコードをデプロイします。パッケージ名はWholesale CBDCです。
    • 機密モード: 機密ホールセールCBDCチェーンコード・パッケージをダウンロードし、その中のアーカイブ・ファイル(WholesaleCBDC-Confidential.zip)を新しいチャネルにデプロイすることで、機密ホールセールCBDCチェーンコードをデプロイします。パッケージ名は、WholesaleCBDCConfidentialです。
    チェーンコードをデプロイする方法の詳細は、「チェーンコードをデプロイするための一般的なワークフロー」を参照してください。
  3. 必要に応じて、卸売CBDCチェーンコード・パッケージで提供されている卸売CBDC Postmanコレクションまたは機密卸売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エンドポイントを公開するように設計されています。ユーザーがリッチ履歴データベースからチェーンコード・トランザクション・データ(TypeScriptおよびGoチェーンコードの両方)をフェッチできるようにするRESTfulエンドポイントが作成されます。また、ORDSエンドポイント、clientIdclientSecret、Bearerトークンなどの重要な資格証明を提供して、エンドポイントを認証およびアクセスします。
  1. データベース・ビュー作成スクリプトをダウンロードします。
    1. Oracle Blockchain Platformコンソールを開きます。
    2. 「デジタル・アセット」ページに移動します。
    3. 左側のサイドバーで、Wholesale CBDCアプリケーションに移動します。
    4. WholesaleCBDCのOracle Databaseビュー定義領域からスクリプトをダウンロードします。
  2. スクリプトのダウンロード後、実行方法の詳細は、Oracle Database Wholesale CBDCのビュー定義を参照してください。
  3. このスクリプトは、ORDSエンドポイント、クライアントID、クライアント・シークレットおよびベアラー・トークンを返します。
    • 汎用モードでは、すべての組織が単一のORDSエンドポイント構成を使用します。このスクリプトは、個々のアカウント、組織レベルのアカウントおよびすべてのアカウントの3つのスコープでアカウントのエンドポイントを返します。
      {
        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サービスの特定のエンドポイント・パターン。
認証用のベアラー・トークンを生成するには、OAuth2トークン・エンドポイントを使用します:
ORDS_REST_BASE_URL/ords/ALIAS_NAME/oauth/token
リッチ履歴データベースからデータを取得するには、Visual BuilderのバックエンドでORDSに関連する次のパラメータを更新する必要があります。これは、後でVisual Builderバックエンドの構成で完了します。
  • clientId
  • clientSecret
  • ORDSエンドポイント(Accountsエンドポイントのみ。OrgAccountsおよびAllAccountsエンドポイントは内部的に導出されます)
  • OAuthベースURL: ORDS_REST_BASE_URL/ords/<userName|aliasName>