Hyperledger Fabric - Introduction(下)

Hyperledger Fabricとは?

Linux Foundationは、業界間のブロックチェーン技術を発展させるため、2015年にHyperledgerを設立しました。標準となるブロックチェーンの策定だけでなく、コミュニティプロセスを通じて、オープンな開発と長期的な主要規格の採用を促進する知的財産権を持ったブロックチェーン技術の共同開発を促進するためです。

Hyperledger Fabricは、Hyperledgerのブロックチェーンプロジェクトの1つです。他のブロックチェーン技術と同様、帳票を持ち、スマートな契約を使用し、参加者が取引を管理するシステムです。

Hyperledger Fabricと他のブロックチェーンシステムの違いは、privateと許可の概念があることです。Hyperledger Fabricは、ネットワークに参加する未知のIDを許可するようなオープン制のシステム(このような場合はトランザクションの検証とセキュアなネットワークを保証するProof of Workのようなプロトコルが必要)のではありません。Hyperledger Fabricネットワークのメンバーはメンバシップサービスプロバイダ(MSP)で登録をしなければなりません。

Hyperledger Fabricには、プラグインを追加することもできます。プラグインをしようすれば、複数のフォーマットで帳票のデータを保存することができ、コンセンサスのメカニズムを入れ替えたり、別のMSPをサポートしたりすることができます。

Hyperledger Fabricでは、チャネルを作成する機能も提供しています。つまり、取引帳票を分割して作成し、グループごとに運用することが可能なのです。この機能は競合にデータを公開したくない参加者や、すべての取引を公開したくない参加者――たとえばある顧客には特別価格を提示しているが、別の顧客にはしない場合など――には非常に重要なオプションとなるでしょう。2人の参加者が1つのチャネルを作成し、それ以外の参加者に公開しなかった場合、チャンネルの帳票は二人の参加者だけに公開されます。

共有帳票

Hyperbelger Fabricは二つのコンポーネント、ワールドステートとトランザクションログからなる帳票サブシステムを持っています。各参加者は、参加者が所属するすべてのHyperledger Fabricネットワークの帳票コピーを保持します。
ワールドステートコンポーネントはある時刻における帳票の状態を記述したものです。いわゆる帳票のデータベースです。トランザクションログコンポーネントはワールドステートの現在の値をもたらしたすべての取引を記録します。つまりワールドステートの更新履歴というわけです。つまり帳票はワールドステートデータベースとトランザクションログ履歴の組み合わせということなのです。

帳票はワールドステートと交換可能なデータストアを保有しています。デフォルトではLevelDBキーバリューストアデータベースで作成されています。トランザクションログはプラグインである必要はありません。ブロックチェーンネットワークで使用された帳票データベースの更新前後の値を記録しておくだけで良いからです。

スマートコントラクト

Hyperledger Fabricスマートコントラクトはチェーンコードで書かれており、アプリケーションが帳票とやり取りする必要があるときにブロックチェーンの外部のアプリケーションから呼び出されます。 ほとんどの場合、チェーンコードは、帳票のデータベースコンポーネントとワールドステート(クエリなど)と相互作用しますが、トランザクションログは使用しません。
チェーンコードはいくつかのプログラミング言語で実装できます。 現在のところはJavaとGo言語が使用できますが、今後のリリースで追加される予定です。

プライバシー

BtoB(Business-to-Business)ネットワーク参加者は共有される情報量に非常に敏感になることがあります。その他のネットワークではプライバシーは最優先事項ではありません。
Hyperledger Fabricは、チャンネルを使用したプライバシーを主要な運用要件としたネットワークとそうでないネットワークの両方をサポートします。

コンセンサス

ネットワーク内で発生するトランザクションは、それがたとえ異なる参加者間のものであったとしても全て順番に帳票に書き込まれなければなりません。そのためにはトランザクションの順序が立証されている必要があり、また帳票にあやまって(もしくは悪意を持って)挿入された悪いトランザクションを排除する方法が導入されていなければなりません。
すでにコンピュータサイエンスの分野では研究が行われており、幾つかの方法が提唱されていますが、それぞれにトレードオフとなる点が存在します。たとえばPBFT(Practical Byzantine Fault Tolerance)は、衝突が起こった場合に各コピーの整合性を保つように複製されたファイル同士が通信するメカニズムを持っています。一方、Bitcoinでは、マイニングと呼ばれるプロセスを通じて順序付けが行われます。マイニングでは競合するコンピュータはそれぞれのプロセスが算出した結果に基づいて順序を定義する暗号化問題を解くことで順序を決定します。

Hyperledger Fabricは、ネットワークを開始する人が参加者間の関係性をもっともよく表すコンセンサスメカニズムを選択できるよう設計されました。プライバシーの観点と同様、高度に関係性を構造化したネットワークから、ピアツーピアまでネットワークの種類は多様です。
現在、我々はSOLO、Kafkaを含むHyperledger Fabricのコンセンサスメカニズムについて学び、近い将来別の文書でSBFT(Simplified Byzantine Fault Tolerance)への拡張を発表する予定です。