卸売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によって使用されます。「ビジュアル・ビルダー・バックエンドの構成」の説明に従って、後でビジュアル・ビルダーでこれらのパラメータを更新する必要があります。

次のステップを実行して、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のリッチ履歴データベースの構成

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

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

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

  1. ネットワーク・インスタンスのOracle Blockchain Platformコンソールを開きます。
  2. 右上隅にある「その他のアクション」メニューをクリックし、「リッチ履歴の構成」を選択します。
  3. Oracleデータベースにアクセスして書き込むための接続文字列および資格証明を指定して、Oracleデータベース接続を指定します。指定する資格証明はデータベースの資格証明で、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をコールする必要があります。認証は、基本認証または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の詳細は、次のドキュメントを参照してください: ノード・リストの取得

レスポンスの詳細

レスポンスで、対応するRestProxyIdが見つかるRESTProxiesというラベルのセクションを見つけます。レスポンスの構造には、各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つのステップを繰り返します(以前に作成したチャネルでリッチ履歴とプライベート・データ・コレクションへのアクセスを有効にします)。
  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エンドポイントを公開するように設計されています。リッチ履歴データベースからチェーンコード・トランザクション・データ(TypeScriptおよびGoチェーンコードの両方)をフェッチできるRESTfulエンドポイントを作成します。また、エンドポイントを認証およびアクセスするために、ORDSエンドポイント、clientIdclientSecretおよびベアラー・トークンなどの重要な資格証明も提供します。
  1. データベース・ビュー作成スクリプトをダウンロードします。
    1. Oracle Blockchain Platformコンソールを開きます。
    2. デジタル・アセット・ページに移動します。
    3. 左側のサイドバーで、Wholesale CBDCアプリケーションに移動します。
    4. 「Oracle Database View Definitions for WholesaleCBDC」領域からスクリプトをダウンロードします。
  2. スクリプトのダウンロード後、スクリプトの実行方法の詳細は、Oracle Databaseの卸売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>