連載 [第1回] :
  Hyperledger Fabric再入門

エンタープライズグレードのブロックチェーンを発展させる「Hyperledger」とは

2020年6月17日(水)
西島 直

ブロックチェーンとは

ブロックチェーンとは、耐改ざん性を持つ分散型台帳技術です。中央機関を必要とせずユーザー間で直接トランザクションを実行でき、信頼できる仲介者を介して行うような従来手法の代替手段を提供します。NIST(米国標準技術研究所)も「ブロックチェーンとは、中央機関なしで、改ざんの発見が容易でかつ耐改ざん性を持つ分散型のデジタル台帳である」と定義*1しています。

*1https://www.nist.gov/publications/blockchain-technology-overview

ブロックチェーンの発想元は「Bitcoin」です。2008年にSatoshi Nakamotoという名前で、metzdowd.comの暗号理論に関するメーリングリストに「Bitcoin P2P e-cash paper」というタイトルのメールが投稿されました。このメールでは「インターネット上の商取引は、電子決済をするために信頼できる第三者としての金融機関に依存しており、信頼ベースのモデルに内在する弱点を抱えている」と指摘し、「信頼できる相手がいない通信経路を介して、信頼ではなく暗号学的な証明に基づく電子決済システムBitcoinを開発した」と述べています*2。このメールの翌年にはBitcoinの運用が始まり、今日では世界的に投機の対象となるまでに成長しました。

*2https://bitcoin.org/bitcoin.pdf

その後に開発された「Ethereum*3」がブロックチェーンの可能性を広げました。Bitcoinは暗号資産を扱いますが、Ethereumは分散型アプリケーションの実行履歴をブロックチェーンに記録することで、デジタル台帳に通貨だけでなく様々なデータを保存できるため、新たな可能性が見えてきました。

*3https://ethereum.org/

ブロックチェーンにはPermissionless(もしくはprivate)とPermissioned(もしくはPrivate)の2タイプがあります。前者は誰でも匿名で参加できるため、ブロックの合意形成が厳格で時間がかかります。後者は参加者を限定する代わりに合意形成をシンプルにできるため高速化が可能です。

ブロックチェーンを発展する
Hyperledger

Hyperledgerは、エンタープライズグレードのブロックチェーンを発展させる目的で作られた、Linux Foundation配下のオープンソースコミュニティです。Hyperledgerはアンブレラの形態をとっており、Fabric、Sawtooth、Indyなど様々な分散型台帳フレームワークのプロジェクト、AriesやUrsaなどのライブラリプロジェクト、AvalonやExplorerなどのツールプロジェクトが存在します。その他にも性能やアーキテクチャなど技術的な議論をするWorking Groupsや気象変動、サプライチェーン、ヘルスケアなど特定業種のブロックチェーンに関して議論するSpecial Interest Groupsがあります。

Hyperledgerでは、エンタープライズグレードを保証するために複雑なプロジェクトのライフサイクルを規定しています。Hyperledgerのプロジェクトに参加するためにはTechnical Steering Committee(TSC)に提案を行い、認められる必要があります。承認されたプロジェクトはIncubationとなり、HyperledgerのGitHubに作成されます。その後、相応のテストカバレッジか、活発で多様性のあるコミュニティか、リリースプロセスに従ったリリースか、などの基準を満たすことでプロジェクトはActiveになります。

IncubationでもActiveでも、そのプロジェクトが初のメジャーバージョンをリリースするためにはTSCの承認が必要です。認証を得られると、第三者からのセキュリティ監査を受けることができます。ソースコードの監査に加え、利用している暗号技術の監視、プロジェクトに含まれているライセンスの監査を行い、セキュリティ上のリスクを低減しています。

【注意】注意:分散型台帳は、複数の組織を跨いで共有されたデジタルデータです。ブロックチェーンは分散型台帳技術の一部です。Hashgraphなどブロックの形態をとらない分散型台帳技術も存在します。

分散台帳フレームワークの
6つのプロジェクト

Hyperledgerには、2020年5月時点で6つの分散型台帳フレームワークのプロジェクトがあります。ブロックチェーンのシステムを構築するためには、目的に合ったプロジェクトを選ぶ必要があります。

・Hyperledger Besu

Enterprise Ethereum Alliance(EEA)仕様の実装の1つです。EthereumのPermissionless/Permissionedのブロックチェーンネットワークを構築できます。Ethereum Virtual Machine(EVM)を実行でき、IBFT(Istanbul Byzantine Fault ToleranceやClique PoA(Proof Of Authorityなどのコンセンサスアルゴリズムを利用しています。プロジェクトのステータスはActiveです。

・Hyperledger Burrow

シンプルかつスピードを目的とした分散型台帳フレームワークです。シングルバイナリで、Ethereum Virtual MachineとWebAssemblyベースのスマートコントラクトをサポートし、Byzantine Fault Tolerance性を持つTendermintアルゴリズムを利用しています。プロジェクトのステータスはIncubationです。

・Hyperledger Fabric

幅広いユースケースを満たすためにモジュール式の汎用性の高いアーキテクチャを持つ分散型台帳のフレームワークです。プロジェクトのステータスはActiveです。

・Hyperledger Indy

分散デジタルIDに特化した分散型台帳フレームワークです。W3Cが標準化を行っている相互運用可能な形式のデジタルIDのクレデンシャルを持っています。プロジェクトのステータスはActiveです。

・Hyperledger Iroha

デスクトップやモバイルプラットフォームのアプリケーションを簡単に作成することを目的とした分散型台帳フレームワークです。プロジェクトのステータスはActiveです。

・Hyperledger Sawtooth

パブリック/プライベートの両方をサポートし、Proof of Elapsed Timeという新しいコンセンサスアルゴリズムを利用している分散型台帳フレームワークです。プロジェクトのステータスはActiveです。

エンタープライズ利用を目的とした
Hyperledger Fabric

Hyperledger Fabric(HLF)は、Hyperledgerの設立後いち早く立ち上がったプロジェクトです。エンタープライズでの利用を目的としたPermissioned(Privateとも呼ばれる)ブロックチェーンです。モジュール式の汎用性が高いデザインで、コンセンサスもkafka、Raftから選ぶことができます。Chaincode(HLFでは自動執行するプログラムのsmart contractをChaincodeと呼ぶ)はGoやNode、Javaで書くことができます。

2016年9月に開発が始まり、現在では300名以上の開発者が参加しています。2017年7月にv1.0、2020年1月にはv2.0がリリースされています。筆者も2016年から開発に参加しており、v1.0とv2.0ではリリースコメントが掲載されました。

Hyperledger Announces Production-Ready Hyperledger Fabric 1.0
Hyperledger Announces Hyperledger Fabric 2.0

Hyperledgerのホームページには代表的なケーススタディが10件掲載されていますが、そのうち7件がHLFを利用したケーススタディです。HLFは現在最も利用されているフレームワークの1つです。

詳細は次回で解説しますが、ここでHLFにおける2つの特徴を説明します。

1つはPermissionedであることです。HLFはpublicブロックチェーンと異なり、参加者は匿名ではありません。ネットワークに参加するためには許可が必要です。このような一定の信頼があるガバナンスモデルの下で動作するため、コンセンサスアルゴリズムにはコストのかかるPoWではなく、Byzantine fault-tolerantやCrash fault-toleranceが利用できます。

もう1つは新しいトランザクションのライフサイクルを採用していることです。一般的なブロックチェーンはOrder-Executeアーキテクチャを採用しています。最初にコンセンサスプロトコルを用いてトランザクションの順序を決め、その後、その順序に従ってスマートコントラクトを実行し台帳を更新します。この方式はシーケンシャルにトランザクションを実行するためスループットが制限されます。

これに対し、HLFではExecute-Order-Validateアーキテクチャを採用しています。最初にユーザーは複数の分散台帳にトランザクションを投げて任意の順序で実行します。実行結果に必要数の同意が得られると、そのトランザクションの順序を決めて全ての分散台帳に配布されます。分散台帳は受け取ったトランザクションを検証し、前のトランザクションと競合していればそのトランザクションを無効化します。トランザクションの実行と分散台帳への更新を分離することで、非同期のトランザクション実行が行えるためスループットを向上させることができます。

* * *

今回はHyperledgerの概要とHyperledger Fabricの特徴を解説しました。Hyperledgerは様々なプロジェクトの集合体であり、今でもプロジェクトが増え続けています。また、HLFはエンタープライズでの利用を目的としたPermissionedブロックチェーンであり、様々なユースケースで利用されています。

次回は、実際にHLFを動かしながら詳細を解説していきます。

株式会社日立製作所

研究開発グループ デジタルテクノロジーイノベーションセンタ OSSテクノロジーラボラトリ員
OSSの評価・検証・機能開発、upstream活動、社内外へのOSS普及に従事。
Linux KernelやKVM、OpenStackでOSSコミュニティの参加した経験を持つ。
現在はHyperledgerコミュニティに参加しブロックチェーンの普及に勤めている。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています