Hyperledger Fabric と Hyperledger Sawtooth は両方とも、分散型台帳アプリケーションを構築し、プラグ可能なコンセンサスメカニズムとスマートコントラクト(チェーンコード)をサポートするプラットフォームです。
そのときの主な違いは何ですか?ブロックチェーンソリューションを実装するためにいつ他を選択するのですか?
Hyperledger FabricとHyperledger Sawtoothを選択する際に考慮すべき重要な違いは次のとおりです。
許可/許可なし
Hyperledger Sawtoothは、許可されたブロックチェーンネットワークと許可されていないブロックチェーンネットワークの両方をサポートします。 Sawtoothには、ロールと権限を使用した柔軟なアプローチがあります。
Hyperledger Fabricは、許可されたブロックチェーンネットワークのみをサポートします。 Fabricには、プラガブルなメンバーシップサービスプロバイダー(MSP)による規範的/明確なアプローチがあり、より緊密なガバナンスフレームワークを実現します。
コンセンサスアルゴリズム
SawtoothはIntelのSoftware Guard Extensions(SGX)に基づくProof of Elapsed Time(PoET)を使用して、ランダムな待機時間に基づいてブロックをカットするリーダーを選出します。
Fabricは、プラグイン可能なコンセンサスアルゴリズムをサポートしており、トランザクションをブロックに並べることができます。Kafkaバージョンv1.0以降のサポート、および開発中のRaftおよびBFT実装。
スマートコントラクト言語
Hyperledger Sawtoothは、Go、JavaScript、Java、Python、Rust、およびEthereum Solidityベースのコントラクトをサポートしています。
Hyperledger Fabricは、Go、JavaScript、Java、およびEthereum Solidityベースの契約をサポートしています。
プライバシー
Hyperledger Sawtoothでは、ピアはすべてのトランザクションデータにアクセスできます。
Hyperledger Fabricには、複数のレベルのプライバシーがあります。参加者のセット間で完全にデータを分離するための「チャネル」を定義できます。各チャネルは基本的に独自のプライベートブロックチェーンです。または、参加者が同じブロックチェーンで取引する必要があるが、取引者のサブセット(および潜在的に規制者/監査人)に対してデータをプライベートに保つ必要がある場合は、「プライベートデータコレクション」を使用できます。プライベートデータはピアツーピアで共有され、すべてのピアがトランザクションを検証できるように、ハッシュがブロックチェーンに証拠として保存されます。さらに、Identity Mixerを使用して、トランザクション送信者の匿名性を保持できます。
トランザクションフロー
Hyperledger Sawtoothは、Order-Execute-Commitの従来のブロックチェーンフローをサポートしています。
Hyperledger Fabricは、一連のピアでトランザクションが最初に実行され、Execute-Order-Commitモデルに従う独自の承認モデルをサポートします。必要な承認者のセットは、契約レベルまたはデータレベルで定義できます。このアプローチにより、スケーラビリティが向上し、契約コードの非決定性が防止され、上記のように一連のトランザクション間でプライベートにトランザクションを実行できます。
その他
Hyperledger Sawtoothは、トランザクションバッチを作業単位としてサポートします。つまり、バッチ内のすべてのトランザクションがコミットされるか、コミットされないトランザクションのいずれかです。
Hyperledger Sawtoothには、(汎用)REST APIサーバー
Hyperledger Fabricは、キー範囲クエリまたはJSONクエリのいずれかを使用して、スマートコントラクトチェーンコードからのクエリをサポートします(状態データベースとしてCouchDBを使用する場合)
Hyperledger Sawtoothは許可されたブロックチェーン実装と許可されていないブロックチェーン実装の両方をサポートしますが、Hyperledger Fabricは許可されたブロックチェーン実装のみをサポートします。
2番目の質問:
When to choose one over the other to implement a blockchain solution?
私の意見では、ビジネスの明確な違いは、Hyperledger Fabricを使用すると、データのサブセットを参加者のサブセットに対してプライベートに保つことができるということです。
現実のビジネスネットワークでは、最終的にこれが必要になると思います。