目次


ブロックチェーンの基礎: Hyperledger Fabric と Hyperledger Composer

その違いとは

Comments

ブロックチェーン・テクノロジーにはイノベーションを生む機会が溢れています。ビジネス・トランザクションのやり方を根本から変えるブロックチェーン・テクノロジーには、大改革をもたらす力があるからです。

開発者がブロックチェーン・ネットワークの開発を開始するのに最善の方法として、私は Hyperledger Fabric と Hyperledger Composer という 2 つのオープンソース Hyperledger プロジェクトをしっかり把握することをお勧めします。名前は似ていても、この 2 つの違いを知ることが、ブロックチェーン開発を開始する際の重要な鍵となります。

ネタバレ注意: どちらもオープンソース Hyperledger プロジェクトです。一方は優れた開発ツール、もう一方はビジネス・ブロックチェーン・ネットワークの強力なエンジンです

どちらのプロジェクトも Hyperledger の傘下にあります。Hyperledger は、業界の別を問わずにビジネス向けのブロックチェーン・テクノロジーを進化させることを目的として協同で進められている、オープンソースの取り組みです。このコラボレーションは、The Linux Foundation の下、世界規模で展開しています。

Hyperledger プロジェクトには、Hyperledger Fabric などのブロックチェーン・フレームワークと、これらのフレームワークによってブロックチェーン・ネットワークおよびアプリケーションを簡単に作成できるようにするための Hyperledger Composer といった開発者向けツールがあります。

Hyperledger Fabric とは何か

Hyperledger Fabric は、メンバーのアイデンティティーと役割が互いに既知となるプライベートな許可制ビジネス・ネットワークを対象としたオープンソースのフレームワーク実装です。ソリューションを開発する際の基盤となるように設計されていることから、Hyperledger Fabric にはモジュール式アーキテクチャーが採用されています。したがって、Hyperledger Fabric ではコンセンサスやメンバーシップ・サービスなどのコンポーネントをプラグ・アンド・プレイ・コンポーネントとして使用できます。また、コンテナー・テクノロジーを利用して、エンタープライズ対応のセキュリティー、スケーラビリティー、機密性を備えたネットワークを実現します。

Hyperledger Fabric ネットワークは、以下のコンポーネントからなります。

  • 資産。資産とは、価値のあるものすべてを指します。資産には状態と所有権があります。Hyperledger Fabric 内では、資産はキーと値のペアの集合として表現されます。
  • 共有レジャー。レジャーは、資産の状態と所有権を記録するものです。レジャーは以下の 2 つのコンポーネントから構成されます。
    • ワールド・ステート。特定の時点でのレジャーの状態を記述します。ワールド・ステートは、レジャーのデータベースです。
    • ブロックチェーン。すべてのトランザクションを記録するトランザクションのログ履歴です。
  • スマート・コントラクト。Hyperledger Fabric のスマート・コントラクトは、チェーン・コードと呼ばれています。チェーン・コードは、資産および関連するトランザクションを定義するソフトウェアです。別の言葉に置き換えると、チェーン・コードはシステムのビジネス・ロジックを格納するものと言えます。チェーン・コードは、アプリケーションがレジャーとやり取りする必要が生じると呼び出されます。チェーン・コードを作成するには、Golang または Node.js を使用できます。
  • ピア・ノード。ピアはレジャーとスマート・コントラクトをホストします。したがって、ピアはブロックチェーン・ネットワークの基本要素です。ピアはチェーン・コードを実行し、レジャーのデータにアクセスし、トランザクションを承認し、アプリケーションとのインターフェースをとります。ピアによっては、他のピアを承認することができます。このようなピアはエンドーサーと呼ばれます。すべてのチェーン・コードが、承認ポリシーを指定できます。承認ポリシーは、トランザクションの承認を有効なものとするために必要かつ十分な条件を定義するものです。
  • チャネルv。チャネルは、ピアの集合からなる論理構造です。チャネルという機能によって、ピアのグループごとに個別のトランザクションのレジャーを作成することが可能になります。
  • 組織。Hyperledger Fabric ネットワークは、ネットワークのメンバーとなっているさまざまな組織が所有し、提供するピアからなります。それぞれの組織が所有する個々のリソースを、組織間で共有するネットワークに提供するから、このネットワークが存在します。ピアを所有する組織は、メンバーシップ・サービス・プロバイダーを利用して各ピアにアイデンティティー (デジタル証明書) を割り当てます。したがって、それぞれ異なる組織に属する複数のピアが、同じチャネル上に存在することができます。
  • メンバーシップ・サービス・プロバイダー (MSP)。MSP は、メンバーのアイデンティティーと役割を認証するために使用される証明書を管理する認証局として実装されます。アイデンティティーが不明な場合、Hyperledger Fabric ネットワーク内でトランザクションを行うことはできません。MSP がユーザー ID を管理して、ネットワーク上のすべての参加者を認証することによって、プライベートな許可制ネットワークとしての Hyperledger Fabric が実現します。
  • 順序付けサービス。順序付けサービスにより、複数のトランザクションがブロックにパッケージ化されてチャネル上のピアに配信されます。順序付けサービスは、ネットワーク内でのトランザクション配信を保証するものであり、ピアおよび承認側ピアと通信します。順序付けサービスの構成メカニズムとしては、Solo と Kafka がサポートされています。
図 1. Hyperledger Fabric ネットワークのコンポーネント (単純にするために、チャネルは示されていません)
Hyperledger Fabric ネットワークのコンポーネント図
Hyperledger Fabric ネットワークのコンポーネント図

ブロックチェーン・ソリューションの仕組み

ブロックチェーン・ソリューションでは、Hyperledger Fabric ネットワークがバックエンドとして、フロントエンドのアプリケーションのネットワークと通信します。フロントエンドとバックエンド間の通信を設定するには、Nodejs SDK や Java SDK などの SDK を利用できます。SDK は、ユーザーのチェーン・コードの実行、ネットワーク内でのトランザクション、イベントのモニターなどを行う手段を提供します。

ブロックチェーン・ネットワークを作成するには、以下の作業が必要になります。

  1. サポートされているプログラミング言語 (Go など) でチェーン・コードを作成します。
  2. チェーン・コードを Hyperledger Fabric ネットワーク上にデプロイします。
  3. SDK を使用してクライアント・アプリケーションを開発します。

ブロックチェーン・トランザクションが実行される仕組み

Hyperledger Fabric ネットワーク内でのトランザクション・リクエストのフローは、大まかには以下のようになります。

  1. クライアントが Nodejs または Java SDK を使用して Hyperledger Fabric ネットワークに接続します。クライアントが SDK API を使用してトランザクションを作成し、それを承認側ピアに送信します。
  2. 承認側ピアがクライアントの署名を検証し、トランザクションをシミュレートした後、承認の署名をクライアントに送信します。
  3. トランザクションが承認されると、クライアントはトランザクションを順序付けサービスに送信します。承認されなかった場合、トランザクションはキャンセルされます。
  4. 順序付けサービスがトランザクションをピアに配信します。すべてのピアが同じ一連のトランザクションをコミットして適用し、自身の状態を更新します。

Hyperledger Composer とは何か

Hyperledger Composer は、Hyperledger Fabric ブロックチェーン・アプリケーションを簡単かつ迅速に作成できるようにする、Java ベースのツール・セットです。Hyperledger Composer を使用することで、事業主や開発者はチェーン・コード (ビジネス・ロジック) とブロックチェーン・アプリケーションを迅速に作成できます。Hyperledger Composer を使用する場合、チェーン・コードを Golang で作成するのではなく、以下に説明するネットワークのビジネス・ネットワーク・アーカイブ (.BNA) ファイルを生成します。

Hyperledger Composer には以下のコンポーネントが含まれています。

  1. ビジネス・ネットワーク・アーカイブ
  2. Hyperledger Composer Playground、
  3. REST API サポート

ビジネス・ネットワーク・アーカイブ

Hyperledger Composer を利用して、既存の資産とそれらの資産に関連するトランザクションを含め、現在のビジネス・ネットワークをモデル化することができます。Hyperledger Composer を使用してビジネス・ネットワーク定義を生成するには、ネットワーク・モデル・ファイル、JavaScript ファイル (.js)、アクセス制御ファイル (.acl)、クエリー・ファイル (.qry) が必要です。

  • ネットワーク・モデル・ファイル (.cto)。ビジネス・ネットワーク・モデルの一部として、資産ならびに、資産とやり取りできるトランザクションおよび参加者を定義します。資産、参加者、トランザクションは、モデル・ファイル内で定義します。
  • JavaScript ファイル (.js)。このファイルで、トランザクション関数を定義します。
  • ACL ファイル (.acl)。このファイルには、ビジネス・ネットワーク内のさまざまな参加者の権限を定義するアクセス制御ルールが格納されます。
  • クエリー・ファイル (.qry)。このファイルで、ネットワーク内で実行できるクエリーを定義します。

Hyperledger Composer が上記のファイルを使用して作成するビジネス・ネットワーク定義は、パッケージ化してアーカイブとしてエクスポートすることができます。こうしてエクスポートされるアーカイブ・ファイルが、ビジネス・ネットワーク・アーカイブ (.bna) ファイルです。BNA ファイルには、実行可能なトランザクション・プロセッサー関数が格納されるため、JavaScript で作成されたスマート・コントラクトと見なすことができます。Hyperledger Composer API を使用して BNA 関数にアクセスするクライアント・アプリケーションを作成できます。

図 2. ネットワークにデプロイしてアプリケーションでアクセスできる、ビジネス・ネットワーク定義のコンポーネント
ネットワークにデプロイしてアプリケーションでアクセスできる、ビジネス・ネットワーク定義のコンポーネント図
ネットワークにデプロイしてアプリケーションでアクセスできる、ビジネス・ネットワーク定義のコンポーネント図

Hyperledger Composer Playground、

Hyperledger Composer には、ビジネス・ネットワークをモデル化してテストするために使用できる、「Playground」という Web ベースのユーザー・インターフェースも用意されています。Playground はブラウザーのローカル・ストレージを使用してブロックチェーン・ネットワークの状態ストレージをシミュレートします。Playground は実行中のブロックチェーン・ネットワークがなくても使用できるので、概念検証には理想的な出発点となります。

REST API サポート

Hyperledger Composer はビジネス・ネットワーク定義を基に、LoopBack コネクターを使用して REST API も生成します。クライアント・アプリケーションで簡単に使用できるこれらの REST API は、ブロックチェーン以外のアプリケーションを統合するためのものです。

まとめ

手短に言うと、Hyperledger Composer は Hyperledger Fabric をベースにブロックチェーン・アプリケーションを構築するためのアプリケーション開発フレームワークです。つまり、Hyperledger Composer を利用して、ビジネス・ネットワーク定義を作成して Hyperledger Fabric にデプロイし、Hyperledger Fabric 上でそのビジネス・ネットワークを実行することができます。

Hyperledger Composer の長所は、高位レベルの抽象化層を使用して、ビジネス・ネットワークをモデル化してトランザクション用の JavaScript 関数を作成し、それらの関数を、クライアント・アプリケーションを開発するための REST API として公開できることです。最小限のプログラミングしか必要にならないことから、アプリケーション開発者ではないビジネス・オーナーでも簡単にブロックチェーン・ネットワークをモデル化してトランザクション関数を作成できます。

次のステップ

詳細を学ぶには


ダウンロード可能なリソース


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Cloud computing, Open source
ArticleID=1063962
ArticleTitle=ブロックチェーンの基礎: Hyperledger Fabric と Hyperledger Composer
publish-date=12202018