はじめに
ブロックチェーンプロダクトを開発する場合、使用するプラットフォームの候補として「Hyperledger」の名前が挙がることも多いのではないでしょうか?Hyperledgerは、エンタープライズ向けブロックチェーンを開発する有力コミュニティです。
Hyperledgerの傘下には多くのプロジェクトがあるため、各プロジェクトの違いは分かりづらい部分があるかもしれません。そこで今回は、Hyperledger設立初期に提案されたフレームワークである「Hyperledger Fabric」および「Hyperledger Sawtooth」、開発ツールの「Hyperledger Composer」について比較、解説していきます。
Hyperledgerとは?
Hyperledgerは「The Linux Foundation」がサポートするプロジェクトのひとつであり、エンタープライズ向けブロックチェーンのフレームワークやツール、ライブラリなどをオープンソースで開発するプラットフォームです。多数のグローバル企業がHyperledgerコミュニティに参画しており、例えば、「IBM」や「Microsoft」、「百度(Baidu)」などが挙げられます。
Hyperledgerの各フレームワークについては以下の記事で解説していますので、是非ご覧ください。
▼詳細はこちら
Hyperledgerまとめ
Hyperledger Fabricとは?
Fabricは、Hyperledgerの中でもっとも普及しているフレームワークです。ユースケースも多く、医療データ管理・共有システムの安全性向上や、サプライチェーンのトレーサビリティ向上などに活用されています。
他のプロジェクトと同様、Fabricはオープンソースとモジュール式のアーキテクチャーが採用されており、Hyperledgerプロジェクトの中ではもっとも長い時間、開発されているフレームワークのひとつであるため、高い品質のコードが提供されています。
なお、Hyperledger Fabricについては、以下の記事も是非ご覧ください。
▼詳細はこちら
「Hyperledger Fabric」もっとも利用される企業向けブロックチェーンフレームワークの概要
Hyperledger Sawtoothとは?
Sawtoothは、汎用性と拡張性に配慮して設計されており、アプリケーション開発に適したフレームワークです。コンセンサスアルゴリズムの動的な変更が可能であり、例えば、同一のアプリにおいて、トランザクションとスマートコントラクトそれぞれに、異なるコンセンサスアルゴリズムを適用することができます。
また、アプリケーション層はコアシステムから分離されており、アプリケーション開発レイヤーで負荷が生じても、コアシステムのパフォーマンスには影響を与えません。アプリ開発者はコアシステムに関する知識が無くても、任意の言語を使用してスマートコントラクトの開発ができます。
そして、イーサリアムとSawtoothの統合プロジェクト「Seth」の開発も進んでおり、EVM(Ethereum Virtual Machine)で動くスマートコントラクトを、Sethのビジネスロジックを使用してSawtoothにデプロイ可能です。
Hyperledger Fabric vs Hyperledger Sawtoothの比較
それでは、FabricとSawtoothを比較していきましょう。以下は両フレームワークを各要素ごとに比べたものです。
Hyperledger Fabric | Hyperledger Sawtooth | |
---|---|---|
許可レベル | 許可型 | 許可型または許可不要(パブリック) |
コンセンサスアルゴリズム | CFT(Crash fault tolerance):Kafka、Raft | PoET(Proof of Elapsed Time):PoET BFT、PoET CFT PBFT Raft Devmode(開発者モード) |
BFT(Byzantine Fault Tolerance)サポート | なし(v1.0.0〜1.4.4)※v0.6.xではPBFTをサポート | あり |
スマートコントラクト | チェーンコード | トランザクションファミリー |
スマートコントラクトタイプ | インストール済み | オンチェーンおよびインストール済み |
サポートされているスマートコントラクト言語 | Go、JavaScript、Java | Rust、JavaScript、Go、Python Solidity(Sethを使用した場合) |
トランザクション処理 | Endorsing Peers、Ordering Servicesによって処理 | バリデーターによって処理 |
ステートストレージ | CouchDB、leveldb | Central LMDB database |
EVMサポート | なし | あり(Seth) |
両者の違いをいくつかピックアップしていきましょう。
まず、Sawtoothはパブリックチェーンとしても開発することができます。さらにSawtoothは、コンセンサスアルゴリズムや開発言語のバリエーションが多様であり、Fabricと比べて柔軟性が高いと言えるでしょう。SethによってSawtoothでは、EVM上で動くスマートコントラクトも実行できます。
一方のFabricは次の章で解説するように、開発に必要な時間を短縮するための機能改善が行われており、さらにSawtoothには無い堅牢なメンバーシップ管理システムが提供されています。
Hyperledger Composerについて
本記事のタイトルは「Hyperledger Fabric」と「 Hyperledger Sawtooth」に加え「Hyperledger Composer」を題していますが、実際にはFabricおよびSawtoothと、Composerは異なるカテゴリに分類されます。FabricとSawtoothがフレームワークであるのに対して、Composerは開発ツールであるため、単純な比較はできません。
Hyperledger Composerとは?
Composerは、ブロックチェーンアプリケーションを簡単に開発するためのツールです。商用のコンソーシアムネットワークの構築や既存システムとの統合をサポートするため、高速なPoC(Proof of Concept)が求められる場合に効果を発揮します。なお、ComposerはFabricをサポートしているものの、Sawtoothには対応していません。
ただし、2019年12月18日現在、GitHubのIssuesを通じて積極的なサポートを提供しているメンテナーがいない状態です。Hyperledgerの公式サイト上では、Composerのステータスが非推奨となっており、代わりに開発者エクスペリエンスが大幅に改善されたFabric v1.4.0以降を使うことが推奨されています。
Fabricのv1.4.0以降では、スマートコントラクト(チェーンコード)とSDKのプログラミングモデルの改善によって、直感的なアプリ開発が可能になっています。詳細はFabricのドキュメントをご確認ください。
参考:What’s new in v1.4 – Improved programming model for developing applications
まとめ:時短可能で広く普及しているHyperledger FabricとEVM互換なHyperledger Sawtooth
本記事で述べたように、Composerは公式に非推奨ステータスとなっている上に、ComposerがFabricをサポートすることで実現していた開発の高速化も、Fabricのアップデートによってカバーされています。Fabricはメンバーシップ管理を厳格に行いたい場合や、PoCを高速に行いたい場合に有効なフレームワークだと言えるでしょう。
一方で、Sawtoothは非常に柔軟性が高く、利用できる開発言語やコンセンサスアルゴリズムも多様で、EVMをサポートしています。FabricとSawtoothそれぞれにメリットがあるため、開発の目的に応じて、フレームワークを選択すると良いでしょう。