ソリューションのインストール、構成およびデプロイ

このソリューションを実装するには、次の項で説明するように、3つの主な作業領域があります。

  1. ブロックチェーン・インフラストラクチャの準備。
  2. スマートコントラクトの開発と展開
  3. スマートコントラクトを利用するアプリケーションの作成。


oracle-blockchain-cms-plan-oracle.zip

Hyperledger Fabricネットワークを作成します。最初は1つの組織で構成されますが、必要な数のメンバーに簡単にスケーリングできます。

次に、スマート・コントラクトを作成して、ビジネス・ユース・ケースで必要なエンティティをブロックチェーンに永続化および管理するために必要なロジックを処理します。

スマートコントラクトプロジェクトが作成されると、以前に作成したブロックチェーンネットワークにインストールして展開し、アカウント、登録を構成し、最後にスマートコントラクトとそのNFTの初期化を実行します。

この時点で、スマート・コントラクト・メソッドは、Oracle BlockchainインスタンスのAPIゲートウェイ(RESTPROXYとも呼ばれる)を介してすでに公開されているため、クライアント・アプリケーション(VBCSですでに作成したWebアプリケーション)で使用できるようになり、最後の項で説明します。

最後のステップの隣には、ドキュメントが格納されるOCIストレージ・バケットの作成があり、最後に最後のステップは、新しく作成されたブロックチェーン・ネットワークおよびテナンシで構成された新しいバケットを指すようにVBCSサンプル・アプリケーションの再構成です。すべての再構成が完了すると、アプリケーションはテナンシにデプロイされます。

Oracle Blockchainネットワークの作成

Oracle Blockchainに基づくHyperledger Fabric (HLF)ネットワークを作成するために、Oracle Blockchain Cloud Serviceを使用しています。

1つのインスタンスHLFネットワークを作成します。ユースケースに従って、ネットワークに属する1つの組織内の機能を表示できます。新しい組織は、独自のブロックチェーン・インスタンスを組み込むことでネットワークに参加できます。これにより、これらの組織の新規ユーザーは、自分のフォルダを所有したり、他のメンバーが所有する既存のフォルダのコンテンツを確認できます。

ファウンダ・インスタンスの作成

  1. 「OCIサービス」メニューで、「開発者サービス」を選択し、「ブロックチェーン・プラットフォーム」をクリックします。
  2. OCIコンソールの左側にあるコンパートメント・コンボ・セレクタから、インスタンスを作成するコンパートメントが選択されていることを確認します。
  3. 「ブロックチェーン・プラットフォームの作成」をクリックします。
  4. プラットフォームに「表示名」(org1など)を指定し、オプションで「説明」を追加し、Founderインスタンスを作成する設定であるため、残りのデフォルト選択を保持します。これは、新しいHyperledger Fabric Networkの創設者であり、エンタープライズ・シェイプとまったく同じ機能を持ち、低コストでも開発作業でも有効な標準シェイプを使用します。「作成」をクリックします。
    この組織(org1)のインスタンスの作成が提出され、数分で準備が整います。
ファウンダ・インスタンスが作成されると、「サービス・コンソール」をクリックして、このインスタンスのOracle Blockchainコンソールにアクセスできます。

チャネルの作成

チャネル・レベルで組織に参加して、創設者と参加者の間のコミュニケーションを可能にする必要があります。このアクションは、ブロックチェーン・サービス・コンソールを使用して実行されます。

  1. ファウンダ・インスタンス(org1)のブロックチェーン・サービス・コンソールから、「チャネル」タブを選択し、「新規チャネルの作成」をクリックします。
  2. 必須フィールドに入力します。
    • wedocmsチャネル名として、またはプリファレンスに基づいて任意の名前として設定します。
    • 「チャネルに参加するピア」セクションのオプション(peer0およびpeer1)を選択します。
  3. 確認ポップアップで「はい」をクリックして、作成を確認します。
    チャネル表に新しいチャネルが表示されることを確認します。チャネル名(wedocms)をクリックして、チャネルの詳細を表示します。元帳のブロックに保存されたトランザクション、チャネルにデプロイされたチェーンコード、構成済のオーダラおよびピア、チャネルに属する組織など、チャネルに関するすべての詳細を表示できます。

ユーザー・アカウントの作成

Oracle Identity Cloud Serviceを使用して、フォルダ間の部門ごとに少なくとも1人のユーザーを作成できます。これらの各ユーザーに対して、アカウントが作成され、所有する様々なフォルダがアカウントに保持されます。

リスク部門に属するユーザーcmsrsk001、財務部門に属するユーザーcmsfin001、および法務部門に属するユーザーcmsleg001を作成します。
  1. 左上隅にあるOCIコンソールのナビゲーション・メニューから、「アイデンティティとセキュリティ」をクリックし、「アイデンティティ」セクションから「フェデレーション」オプションを選択します。
  2. アイデンティティ・プロバイダ名のリンクをクリックします。
  3. 「ユーザーの作成」をクリックします。
  4. ユーザー名として、コンソールへのログインに使用する値、またはスマート・コントラクトのREST APIを実行するための認可ユーザー名として設定します。「電子メール」フィールドで、OCIアカウントの電子メールを設定すると、このユーザーのパスワードをリセットする電子メールを受信し、「作成」をクリックします。
  5. 「ロールの割当て」をクリックします。
  6. AUTOBLOCKCHAINサービスで、右側の省略記号をクリックし、「インスタンス・アクセスの管理」を選択します。
  7. 作成したユーザーに応じて、次の表に基づいて権限を割り当て、正しいロールを割り当てた後、「インスタンス設定の更新」をクリックします。ロールが正しく割り当てられていることがわかります。

    表- ロール割当

    ユーザー名 インスタンス ロール
    cmsrsk001 org1 「管理」、「REST_CLIENT」
    cmsfin001 org1 「管理」、「REST_CLIENT」
    cmsleg001 org1 「管理」、「REST_CLIENT」
  8. (オプション)付与されたロールを通知する電子メールをユーザーの電子メール・アドレスに送信するよう求められます。
  9. ユーザー作成プロセス中に、最近作成されたユーザーに関連付けられた電子メール・アカウントに、このユーザーのパスワードをリセットするための電子メールが送信されます。提供されたリンクを使用して、作成したユーザーのパスワードを設定します。

RESTプロキシ・ノードへの登録の作成

Oracle Blockchain Platformは、RESTプロキシへの登録をサポートしています。これらの登録は、FTトークンまたはNFTトークンが存在するチェーンコードで使用され、呼出し元のIDをトランザクションを実行しているロールにマップします。これを行うには、ユーザーの関係をブロックチェーンで定義されたロールに作成する必要があり、わかりやすくするためにロールにユーザーとして名前を付けることができます。

各登録は、そのようなロールを持つユーザーがそのブロックチェーン・インスタンス上のRESTプロキシを介してトランザクションを実行できるインスタンスに作成する必要があります。したがって、ユーザーcmsrsk001に割り当てられた登録cmsrsk001は、ファウンダ・インスタンス(org1)のRESTプロキシ・ノードに作成する必要があり、次の表で説明するように他の2人のユーザーについても同じである必要があります。
ユーザー名 登録 インスタンス
cmsrsk001 cmsrsk001 org1
cmsfin001 cmsfin001 org1
cmsleg001 cmsleg001 org1
  1. ファウンダ・インスタンス(org1)のブロックチェーン・サービス・コンソールから、「ノード」タブに移動します。
  2. restproxyの横にあるハンバーガー・メニューをクリックし、「登録の表示または管理」を選択します。
  3. 「新規登録の作成」を選択します。
  4. 「登録ID」cmsrsk001「ユーザーID」cmsrsk001に設定し、「登録」をクリックします。
ステップ4を繰り返して、他の2人のユーザー(cmsfin001およびcmsleg001)の登録を作成します。他の組織のユーザーが作成された場合、それらのユーザーの登録は、そのユーザーが属するブロックチェーン・インスタンスのRESTプロキシに作成する必要があります。

Oracle Blockchainアプリケーション・ビルダー開発環境の準備

Hyperledger Fabric (HLF)スマート・コントラクトの作成には、HLFの固有性、Java、TypescriptまたはGoLangでのコーディング方法、およびスマート・コントラクト・プロジェクトのライフサイクル全体をデプロイおよび管理する方法に関する知識が必要です。

Oracle Blockchain App Builderは、スマート・コントラクト・プロジェクトの作成を簡略化するために作成されました。実際、Oracle Blockchain App Builderは、ビジネス・ケースに必要なカスタム・コードを除くチェーンコード・プロジェクト全体を最初から作成できるローコード・ツールです。Oracle Blockchainアプリケーション・ビルダーは、テスト・フェーズ、プロジェクトのパッケージ化、および単独テストのために独自のコンピュータにローカルにチェーンコードをデプロイする際や、実際のHyperledger Fabricネットワークにリモートでデプロイする際にも役立ちます。

oracle-app-builder-oracle.zip

Oracle Blockchainアプリケーション・ビルダーは2つのフレーバーで作成され、CI/CDプロセスのビルドおよびデプロイメント・ステップを自動化することを目的としたコマンドライン・ツールとして使用することも、Microsoft Visual Codeプラグインとして使用することもできます。どちらも同じ機能を実行でき、プリファレンスに応じて必要な機能を選択するだけです。Oracle Blockchainアプリケーション・ビルダーには、次の機能があります。

  • 開発: Oracle Blockchainアプリケーション・ビルダーは、カスタマイズされた仕様ファイルと呼ばれるものを作成するだけで、チェーンコード・プロジェクト全体を作成します。プロジェクトには、コード化されたすべてのエンティティ、すべてのアクセッサ、それらのエンティティを管理するためのすべてのCRUDメソッド、およびアプリケーションに必要な非標準または複雑なビジネス・ロジックに必要なカスタム・メソッドの署名が含まれます。これらは、手動で実装する必要がある唯一のコードになります。
  • デプロイメント: チェーンコード・プロジェクトをテストする準備ができたら、事前に構成されたHyperledger Fabricネットワークにローカルにデプロイするか、既存のクラウドまたはオンプレミスのOracle Blockchain Platformインスタンスにリモートにデプロイできます。もう1つのオプションは、Oracle Blockchainコンソールを使用して手動でデプロイするプロジェクトをパッケージ化することです。
  • テスト: プロジェクトがデプロイされると、自動生成されたメソッドまたはチェーンコード・プロジェクトのカスタム・メソッドのいずれかをテストできます。
  • デバッグ: Visual Studio Code拡張機能を使用している場合、チェーンコードの行ごとのデバッグを実行することもできます。

次の2つの使用可能なOracle Blockchainアプリケーション・ビルダー・バージョンのいずれかをインストールできます。

このような開発ツールとそのすべての依存関係のインストールに慣れていないが、Oracle Cloudにアクセスできる場合は、これらすべての製品がすでにインストールされ、クラウドで使用できるように準備された専用の開発ボックスを作成して、リモートからアクセスできます。これらのマシンは、必要なコンピュート・シェイプのためコスト効率が高く、稼働中のみ請求されます。

Oracle LiveLabsには、Oracle Blockchain開発チームによってすでに事前構成されたVMイメージに基づいて、数分でリモート・マシンをデプロイできるラボがあります。詳細は、ApexおよびBlockchainアプリケーション・ビルダーを使用したロー・コード・ブロックチェーン・アプリケーションの開発を参照してください。

ノート:

ラボでは、Visual Code StudioとOracle Blockchain App Builderロー・コード・プラグインがインストールされたクラウド・マシンを準備するには、「設定および環境設定の準備」ステップを実行するだけで済みます。

OCIオブジェクト・ストレージ・バケットの作成および構成

Oracle Visual Builder Webアプリケーションからのドキュメントの格納および取得を可能にするOCI Object Storageバケットを構成します。

アクションは、ドキュメントをバケットにアップロードする際にブロックチェーンに格納されるドキュメントのハッシュの作成、およびドキュメントのダウンロード時にハッシュの有効性の検証と同期してWebアプリケーションによって実行されます。

ノート:

OCI Object StorageからファイルをアップロードまたはダウンロードするためにOracle Visual Builderアプリケーションをコーディングする方法の詳細は、Visual BuilderアプリケーションのOCIストレージからのファイルのアップロード/ダウンロードを参照してください。

OCI Object Storageバケットによって提供されるREST APIを介してバケットの使用を有効にするには、REST APIの実行を許可されたユーザーに関連するOCI APIキーを作成する必要があります。次の2つの構成タスクを実行して、VBCS WebアプリケーションでOCI Object Storageバケットを使用します。

Oracle Visual BuilderアプリケーションからのOCI Object Storageバケットの使用を有効にするには、OCI APIキーを作成して、REST APIを介してOCIサービスにアクセスする必要があります。

  1. OCIコンソールにログインし、コンソールの右上にある「プロファイル」アイコンをクリックして、ユーザー設定にアクセスします。
  2. 下にスクロールし、「リソース」メニューの「APIキー」をクリックします。
  3. 「APIキーの追加」をクリックして、新しいAPIキーを追加します。
  4. 「APIキー・ペアの生成」を選択します。

    ノート:

    独自の公開キーと秘密キーをpem形式で使用できますが、このソリューション・プレイブックでは、自動生成されたキーを使用します。
  5. 秘密キーおよび公開キーをダウンロードし、1つの.pemファイルを公開としてマークします。
  6. 「追加」をクリックします
  7. コピー・リンクをクリックして、OCI API資格証明をローカル・コンピュータのテキスト・ファイルにコピーします。これは、後のステップで必要になるためです。
  8. 「閉じる」をクリックします。
    新しいAPIキーが作成され、OCI Webコンソールにフィンガープリント・キーが表示されます。デスクトップに前にコピーした構成ファイルにアクセスするには、「フィンガープリント」行の省略記号をクリックし、「構成ファイルの表示」を選択します。

    ノート:

    次のステップでは、秘密キーとともに詳細の一部が必要となるため、詳細を保存します。
  9. オブジェクトが格納されるバケットを作成します。「ストレージ」に移動して、「バケット」をクリックします。
    簡単にするためにパブリックとして作成できるため、認証は必要ありませんが、プライベート表示バケットでも同じことが実現できます。
  10. バケットを作成するコンパートメントを選択し、「バケットの作成」をクリックします。
  11. 「バケットの作成」画面で、バケットに名前を付け、他の構成パラメータをデフォルトのままにし、「作成」をクリックしてバケットの作成を終了します。
    選択したコンパートメントに新しいバケットが表示されます。詳細を表示するバケット名を選択します。左側のメニューの「オブジェクト」をクリックして、このバケットにアップロードされたオブジェクトを表示します。