「Hyperledger Fabric vs Sawtooth+Composer」HLプロジェクトの比較、違いを解説

「Hyperledger Fabric vs Sawtooth+Composer」HLプロジェクトの比較、違いを解説

はじめに

ブロックチェーンプロダクトを開発する場合、使用するプラットフォームの候補として「Hyperledger」の名前が挙がることも多いのではないでしょうか?Hyperledgerは、エンタープライズ向けブロックチェーンを開発する有力コミュニティです。

Hyperledgerの傘下には多くのプロジェクトがあるため、各プロジェクトの違いは分かりづらい部分があるかもしれません。そこで今回は、Hyperledger設立初期に提案されたフレームワークである「Hyperledger Fabric」および「Hyperledger Sawtooth」、開発ツールの「Hyperledger Composer」について比較、解説していきます。

Hyperledgerとは?

Hyperledgerは「The Linux Foundation」がサポートするプロジェクトのひとつであり、エンタープライズ向けブロックチェーンのフレームワークやツール、ライブラリなどをオープンソースで開発するプラットフォームです。多数のグローバル企業がHyperledgerコミュニティに参画しており、例えば、「IBM」や「Microsoft」、「百度(Baidu)」などが挙げられます。

https://www.hyperledger.org/

Hyperledgerの各フレームワークについては以下の記事で解説していますので、是非ご覧ください。

Hyperledger Fabricとは?

Fabricは、Hyperledgerの中でもっとも普及しているフレームワークです。ユースケースも多く、医療データ管理・共有システムの安全性向上や、サプライチェーンのトレーサビリティ向上などに活用されています。

他のプロジェクトと同様、Fabricはオープンソースとモジュール式のアーキテクチャーが採用されており、Hyperledgerプロジェクトの中ではもっとも長い時間、開発されているフレームワークのひとつであるため、高い品質のコードが提供されています。

なお、Hyperledger Fabricについては、以下の記事も是非ご覧ください。

Hyperledger Sawtoothとは?

Sawtoothは、汎用性と拡張性に配慮して設計されており、アプリケーション開発に適したフレームワークです。コンセンサスアルゴリズムの動的な変更が可能であり、例えば、同一のアプリにおいて、トランザクションとスマートコントラクトそれぞれに、異なるコンセンサスアルゴリズムを適用することができます。

また、アプリケーション層はコアシステムから分離されており、アプリケーション開発レイヤーで負荷が生じても、コアシステムのパフォーマンスには影響を与えません。アプリ開発者はコアシステムに関する知識が無くても、任意の言語を使用してスマートコントラクトの開発ができます。

そして、イーサリアムとSawtoothの統合プロジェクト「Seth」の開発も進んでおり、EVM(Ethereum Virtual Machine)で動くスマートコントラクトを、Sethのビジネスロジックを使用してSawtoothにデプロイ可能です。

Hyperledger Fabric vs Hyperledger Sawtoothの比較

それでは、FabricとSawtoothを比較していきましょう。以下は両フレームワークを各要素ごとに比べたものです。

Hyperledger FabricHyperledger Sawtooth
許可レベル許可型許可型または許可不要(パブリック)
コンセンサスアルゴリズムCFT(Crash fault tolerance):Kafka、RaftPoET(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、JavaScriptRust、JavaScript、Go、Python

Solidity(Sethを使用した場合)
トランザクション処理Endorsing Peers、Ordering Servicesによって処理バリデーターによって処理
ステートストレージCouchDB、leveldbCentral 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以降を使うことが推奨されています。

参考:Hyperledger Composer

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それぞれにメリットがあるため、開発の目的に応じて、フレームワークを選択すると良いでしょう。

ブロックチェーンカテゴリの最新記事