web-dev-qa-db-ja.com

ハイパーレジャーのPBFTアルゴリズム

誰もPBFTアルゴリズムにリンクを与えずに詳細に説明できますか?そして、それがhyperledgerでどのように機能するか。したがって、トランザクションがblockchainに送信されると:

(1)。誰がトランザクションを検証しますか?

(2)。トランザクションでコンセンサスがどのように達成されますか?

(3)。トランザクションはどのようにブロックチェーンにコミットされますか?

27
Saurabh

「Hyperledger」は、The Linux Foundationのブロックチェーンコンソーシアムです。現在、Hyperledgerには少なくとも4つの異なるブロックチェーンフレームワークの実装があります。

  • ファブリック(IBM)
  • コルダ(R3)
  • いろは
  • ノコギリ湖(Intel)

Fabric v0.6

すべての検証ピアは、互いにオープンな接続を維持します。それらのいずれかにトランザクションを送信できます。このトランザクションはネットワーク内の他のピアにブロードキャストされます。ピアの1つが「リーダー」として選出されます。新しいブロックが生成されるとき:

  1. リーダーは、ブロックに含める必要があるトランザクション候補を注文し、この注文したトランザクションのリストをネットワーク内の他のすべての検証ピアにブロードキャストします。
  2. 各検証ピアがトランザクションの順序付きリストを受信すると、各検証ピアは次を実行します。
    1. 順序付けられたトランザクションを1つずつ実行し始めます。
    2. すべてのトランザクションが実行されるとすぐに、新しく作成されたブロックのハッシュコードが計算されます(ハッシュコードには、実行されたトランザクションのハッシュと世界の最終状態が含まれます)。
    3. 次に、その回答(結果のハッシュコード)をネットワーク内の他のピアにブロードキャストし、それらからの応答のカウントを開始します。
    4. すべての検証ピアの2/3が同じハッシュコードを持っているとわかると、新しいブロックを元帳のローカルコピーにコミットします。

Fabric v1.0

このバージョンはまだ開発中です。 v1では「リーダー」ではなく、個別のサービス「 Orderer 」がブロック内のトランザクションの順序を担当します。このサービスはプラグイン可能であり、3つの異なるオプションがあることを発表しています。

  1. ソロ-単一のプロセスが注文を担当します
  2. Kafka注文者-Kafka= pubsubシステムを利用して注文を実行します
  3. PBFT-まだ実装されていません。

Corda

PBFTは使用されません。この実装では、別のアーキテクチャアプローチを使用します。

21

Cordaでは、コンセンサスは公証人によって提供されます。どのコンセンサスアルゴリズムを使用するかは公証人次第です。 BFTは1つのオプションです。 Corda BFT公証人のサンプルは、こちらでご覧いただけます: https://github.com/corda/corda/tree/master/samples/notary-demo

質問に答えるには:

(1)。誰がトランザクションを検証しますか?

トランザクションは、1つ以上の公証人のクラスターによって検証されます。公証人は、二重支出の競合を解消することを唯一の目的とするノードです。

(2)。トランザクションでコンセンサスはどのように達成されますか?

標準のBFTアルゴリズムを使用します。公証クラスタ内の各ノードは、トランザクションをダブルペンディングの試行と見なすかどうかについて投票します。最終的な決定は多数決ルールに基づいており、クラスター内のノードの最大3分の1が悪意があることを許容できます。

(3)。トランザクションはどのようにブロックチェーンにコミットされますか?

Cordaには、トランザクションがコミットされる情報の中央ストアはありません。公証クラスタは、使用済みの状態参照を内部データベーステーブルに追加するだけです。このテーブルに対して状態を使用する将来の試行をチェックし、状態参照が既にそこに保存されている場合、消費の試行を拒否します。

2
Joel

上記には、Hyperledger Sawtoothのコンセンサスアルゴリズムが欠落しているため、次のとおりです。

  • PoET経過時間の証明(Sawtoothに使用されるオプションのナカモトスタイルのコンセンサスアルゴリズム)。 SGXを使用したPoETにはBFTがあります。 PoETシミュレーターにはCFTがあります。 PoWスタイルのアルゴリズムのようにCPUを集中的に使用することはありませんが、フォークしたり古いブロックを持つ可能性があります。 https://sawtooth.hyperledger.org/docs/core/release s/latest/architecture/poet.htmlのPoET仕様を参照してください。
  • [〜#〜] raft [〜#〜]任意の期間のリーダーを選出するコンセンサスアルゴリズム。タイムアウトした場合、リーダーは交代します。 RaftはPoETより高速ですが、BFTではありません(RaftはCFT)。また、Raftはフォークしません。 Hyperledger Sawtoothには、Unpluggable Consensusがあるという利点があります。ブロックチェーンを再初期化したり、ソフトウェアを再起動したりすることなく、アルゴリズムを変更できます。

他のコンセンサスアルゴリズムは次のとおりです。

  • PoW作業証明。作業の完了(CPU集中型のナカモトスタイルのコンセンサスアルゴリズム)。通常、許可のないブロックチェーンで使用されます
  • PoSステークの証明。最も富または年齢(ステーク)に基づく中本スタイルのコンセンサスアルゴリズム
  • [〜#〜] pbft [〜#〜]実用的なビザンチンフォールトトレランス。状態マシンを使用する「古典的な」コンセンサスアルゴリズム。リーダーを使用して、選挙をブロックします。 PBFTは3フェーズのネットワーク集約型アルゴリズム(n ^ 2メッセージ)であるため、大規模ネットワークにスケーラブルではありません
0
Dan Anderson