新しい IBM Developer JP サイトへようこそ!サイトのデザインが一新され、旧 developerWorks のコンテンツも統合されました。 詳細はこちら

ブロックチェーンの基本: Hyperledger Fabric

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

開発者がブロックチェーン・ネットワークのコードの作成を開始する場合、最良の方法は何でしょうか?私がお勧めするのは、最初に Hyperledger Fabric プロジェクトを十分に把握することです。

Hyperledger は、業界の別を問わずにビジネス向けのブロックチェーン・テクノロジーを進化させることを目的に開始された、コラボレーションによる取り組みです。この世界的なコラボレーションは、The Linux Foundation が主催しています。

Hyperledger は、一連のブロックチェーン・ビジネス・テクノロジー、フレームワーク、ライブラリー、アプリケーションを生み出して、サポートしています。Hyperledger プロジェクトでは複数のブロックチェーン・フレームワークをホストしています。そのうちの 1 つが、Hyperledger Fabric です。この記事では Hyperledger Fabric とは何か、Hyperledger Fabric を使用してソリューションを構築する方法、そして Hyperledger Fabric 内でトランザクションが実行される仕組みについて概説します。

Hyperledger Fabric とは何か?

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

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

  • 資産。価値のあるものは、何でも資産です。資産には状態と所有権があります。Hyperledger Fabric では、資産は Key-Value ペアとして表現されます。
  • 共有レジャー。レジャーには資産の状態と所有権が記録されます。レジャー自体は 2 つのコンポーネントからなります。

    • ワールド・ステート。特定の時点でのレジャーの状態を記述するものです。これは、レジャーのデータベースとしての役割を果たします。
    • ブロックチェーン。すべてのトランザクションを記述する、トランザクション・ログ履歴です。
  • スマート・コントラクト。Hyperledger Fabric のスマート・コントラクトは、「チェーンコード」と呼ばれます。チェーンコードは、資産とそれぞれの資産に関連するトランザクションを定義するソフトウェアです。つまり、システムのビジネス・ロジックは、チェーンコードに含めることなります。アプリケーションがレジャーとやり取りする際は、チェーンコードが呼び出されます。チェーンコードを記述するには、Golang または Node.js を使用できます。

  • ピア・ノード。レジャーとスマート・コントラクトをホストするのはピアであるため、ピアはネットワークの基本要素です。ピアがチェーンコードを実行し、レジャー・データにアクセスし、トランザクションを承認し、アプリケーションと連動します。一部のピアは、「エンドース・ピア」(エンドーサー) である場合もあります。あらゆるチェーンコードでは承認ポリシーを指定できます。指定された承認ポリシーによって、有効なトランザクション承認に必要かつ十分な条件が定義されます。
  • チャネル。チャネルは、ピアの集合によって形成される論理構造です。チャネルを使用すると、特定のピアのグループ専用のトランザクションのレジャーを作成できます。
  • 組織。Hyperledger Fabric ネットワークは、そのネットワークのメンバーとなっているさまざまな組織が所有して貢献するためのピアから構築されます。ネットワークの存在理由は、組織が個別のリソースを、集合体としてのネットワークに役立てることにあります。組織は所有するピアに対し、その組織のメンバーシップ・サービス・プロバイダーを介して ID (デジタル証明書) を割り当てます。そのため、さまざまな組織のピアを同じチャネル上に配置することができます。
  • メンバーシップ・サービス・プロバイダー (MSP)。MSP は「認証局」として実装され、メンバーの ID と役割の認証に使用される証明書を管理します。Hyperledger Fabric ネットワーク内では、不明な ID がトランザクションを行うことはできません。MSP がユーザー ID を管理し、すべての参加者をネットワークに対して認証することにより、プライベートな許可制ネットワークとしての Hyperledger Fabric を可能にしています。
  • 順序付けサービス。順序付けサービスでは、さまざまなションをブロックにパッケージ化して、チャネル上のピアに配信されるようにします。これにより、ネットワーク内でのトランザクションの配信が保証されます。このサービスはピアおよびエンドース・ピアと通信します。順序付けサービスでサポートされる構成メカニズムは Solo と Kafka です。

図 1. Hyperledger Fabric ネットワークのコンポーネント (簡潔にするために、チャネルは示されていません)

Hyperledger Fabric ネットワークのコンポーネントを示す図

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

ブロックチェーン・ソリューションでは、Hyperledger Fabric ネットワークがバックエンドの役割を果たし、アプリケーションがフロントエンドとなってネットワークと通信します。フロントエンドとバックエンドの間の通信をセットアップするには、SDK (Node.js SDK、Java SDK など) を利用きます。SDK を手段として、ユーザー・チェーンコードの実行、ネットワーク内でのトランザクション、イベントのモニタリングなどの操作を行うことができます。

ブロックチェーン・アプリケーションを作成するには、以下の作業が必要です。

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

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

Hyperledger Fabric ネットワーク内でのトランザクションの要求フローは、おおまかには次のようになります。

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

まとめ

Hyperledger Fabric は、ブロックチェーン・フレームワークの実装です。IBM Cloud 上の IBM ソリューションと BPaaSA (Blockchain Platform as a Service) では Hyperledger Fabric を活用しています。Hyperledger Fabric とは何であるか、そしてその仕組みを理解した今、その知識を基にブロックチェーン・アプリケーションの開発を開始できます。ブロックチェーンの世界に飛び込んで実験を開始してください!

次のステップ

  • IBM Blockchain Platform を使用して、今すぐブロックチェーン・ネットワークの構築を開始してください。

  • 開発者向けの月刊ブロックチェーン・ニュースレターで、最新の情報を入手できます。最新号をチェックして、購読してください。

  • 多数のブロックチェーン関連のコード・パターンが IBM Developer で公開されています。これらのコード・パターンは、複雑な問題をブロックチェーン・テクノロジーで解決する際のロードマップとなり、アーキテクチャー図、コード・リポジトリー、その他の参考文献も用意されています。

  • IBM Developer Blockchain ハブにアクセスしてください。ここには、ビジネス向けブロックチェーン・ソリューションを開発してデプロイするための無料のツールとチュートリアルが揃っているだけでなく、コードとコミュニティー・サポートも入手できます。

その他のリソース