Hyperledger Fabric の基本的な構成について紹介します。Hyperledger についてはこちらをご覧下さい。
はじめに
Hyperledger Fabric は Linux Foundation が管理するオープンソースのブロックチェーン基盤です。Hyperledger Fabric はモジュラー型のアーキテクチャによって高い機密性、スケーラビリティを提供するビジネス向けの「許可制」(許可されたメンバーのみ参加可能) ブロックチェーンです。本稿では Hyperledger Fabric の基本的な構成について紹介します。
基本的な構成要素とトランザクションの流れ
Hyperledger Fabric は主に Peer、Orderer、CA (Certificate Authority) の 3 種類の構成要素で構成されます。(各要素の詳細は後述)
Peer はクライアントから送付されたトランザクションの検証や実行、ブロックへの書き込みを行います。Orderer はクライアントから送付されたトランザクションの順序付けをし、ブロックチェーンネットワーク内の Peer に送信します。CA (Certificate Authority) はブロックチェーンネットワーク内のユーザと Peer の情報の登録、証明書 (ECerts) の発行をします。
Hyperledger Fabric の基本的な構成とトランザクションの流れを説明します。
まず、クライアントはブロックチェーンネットワークに参加するため、CA に証明書の発行申請をします。CA から証明書が発行されるとクライアントはその証明書を使って署名をしてトランザクションを発行、Peer に送付します。Peer はクライアントからトランザクションを受け取るとチェーンコードを実行して内容を検証し、結果に署名をして、クライアントへ返信します。
クライアントは Peer から検証結果を受け取った後、Orderer にトランザクションを送付します。Orderer は受け取ったトランザクションの順序付けを定義し、1 ブロック分を Peer にブロードキャストします。Peer は受け取ったブロックを検証し、ブロックを台帳に書き込みます。
各要素について
Hyperledger Fabric の 3 種類の要素について紹介します。
(1) Peer
Peer はブロックチェーンネットワークの基本的な要素です。各 Peer はブロックチェーンネットワーク内で同じ内容の台帳とチェーンコードを保有しています。Peer は 2 種類に分けられ、トランザクションの検証を行う Peer を Endorsement Peer、ブロックへの書き込みを行う Peer を Committing Peer と言います。詳細は次回以降でご説明します。
基本機能:
- アプリケーションとの接続
ブロックチェーン上で動くアプリケーションからのトランザクションに対して検証し、実行します。実行ログはブロックに書き込まれ、実行結果は台帳に反映されます。 - 台帳の保有
Hyperledger Fabric の台帳はブロックチェーンとステート DB があり、チェーンコードの実行履歴をブロックチェーンに書き込み、トランザクションを実行した結果の最新の状態をステート DB に書き込みます。ステート DB は保存したいデータを一意のキーに紐づけて保存するデータベースです。
Hyperledger Fabric ではトランザクションを実行した結果の状態をステート DB にすべて保存しており、クライアントはチェーンコード経由でステート DB からデータを参照、書き込みすることができますが、ブロックチェーンはハッシュ値でチェーン状に繋がっており、改ざんができないようになっています。台帳はブロックチェーンネットワーク内で共有し、整合性を取っています。 - チェーンコードの実行
チェーンコードはビジネス上の条件や契約をビジネスロジックとして実装したプログラムです。例えば、A さんの資産を B さんに渡すと行った実際の処理を全て、チェーンコードに記載します。このチェーンコードもブロックチェーンのネットワーク内で同じチェーンコードを保持します。
(2) Orderer
Orderer はクライアントから送信されるトランザクションの順序付けを行い、その結果をブロックチェーンネットワーク内にチャネル単位でブロードキャストします。チャネルとはブロックチェーンネットワーク上に作られた仮想ネットワークです。ネットワーク内の特定の参加者間でやりとりができる仕組みです。チャネルについては次回以降ご説明します。
基本機能:
- トランザクションの順序付けとブロックの作成
各アプリケーションから受け取ったトランザクションを順序付けして、1 つのブロックにパッケージします。 - ブロックの送信
パッケージが完了したブロックをチャネル単位で該当の Peer に送信します。
(3) CA
CA (Certificate Authority) は MSP (Membership Service Provider) という仕組みを利用してブロックチェーンネットワーク内のユーザと Peer の情報の登録、証明書 (ECerts) の発行をします。MSP については次回以降でご説明します。
新規のユーザがブロックチェーンネットワークに参加するためには CA から証明書を発行してもらい、その証明書を使って、ブロックチェーンネットワークに参加し、トランザクションの発行を行います。
基本機能:
- ユーザ、Peer の登録、ID の管理
クライアントや Peer の ID 情報の登録と管理を行い、アクセス制御を実施します。 - 証明書 (ECerts) の発行、管理
ユーザの身元を特定する証明書 (ECerts) を発行します。Hyperledger Fabric ではこの ECerts で署名されたトランザクションのみ実行できるように制御されます。
Hyperledger Fabric の構成例
複数の参加企業で構成する許可制ブロックチェーンネットワークをコンソーシアム型のブロックチェーンネットワークと言います。ここでは、例として 4 つの企業が参加するコンソーシアムのネットワーク構成例を示しています。参加企業毎に Peer や CA を 2 台管理し、Order は複数の企業間で共有します。
上図のような構成を IBM Blockchain Platform では、簡単にブロックチェーン環境を構築することができます。詳しくはビジネスブロックチェーン本格展開のためのプラットフォーム「IBM Blockchain Platform」をご覧ください。
まとめ
今回は Hyperledger Fabric の基本的な構成について紹介しましたが、今後は複数回に分けて Hyperledger Fabric の各要素について紹介していきます。