pbftコンセンサスプロトコル

pbft プロトコルはビザンチン エラーを処理できます。つまり、次のエラーを処理できます。

  1. ノードは意図的に応答しません
  2. ノードが意図的に誤解を招く情報を送信する
    ビザンチン エラー プロトコルは、複数のノード間で提案を決定するだけでなく、その提案が誤ることを防ぐ必要もあります。たとえば、この提案の送信者は不良ノードであり、意図的に一部のノードに A を送信します。 、B プロポーザルを他のいくつかのノードに送信すると、クラスターに不整合が生じます (一般にスプリット ブレインとして知られています)。これはコンセンサスプロトコルの最大の間違いです。

ビザンチンエラーに対処する方法

非ビザンチン エラーには次のものが必要です。

  1. 第2段階合意
  2. n >= 2f + 1、つまり、間違ったノードの数が半分を超えることはできず、クラスターの大部分が正しい必要があります。

ビザンチン エラーには次のものが必要です。

  1. 三相合意。2 つの段階は値を決定するために使用され、3 番目の段階はこの値が他の値と一致するかどうかを検証するために使用されることが理解できます。
  2. n >= 3f + 1。この多数派には意図的にインストールされた悪意のあるノードが存在する可能性があるため、多数派のみが値を決定できないことが理解できます。検証するには別の f ノードが必要です。

プロセス

pbft はリーダーベースのプロトコルです。つまり、クラスター内にマスター ノードでもあるリーダー ノードが存在します。マスター ノードがエラーを送信した後、新しいマスター ノードが選択されます。このプロセスはビュー変更と呼ばれます。
通常のプロトコルには次の 3 つのフェーズがあります。

事前に準備する

マスターノードはリクエストを他のすべてのノードに送信します。

準備

他のノードはメッセージを受信した後、メッセージの有効性を検証します。次に、リクエストを他のすべてのノードに送信します。

専念

他のノードはメッセージを受信した後、メッセージの有効性を検証します。次に、リクエストを他のすべてのノードに送信します。

マスターノードは 2f+1 コミットメッセージを受信すると、クライアントに確認情報を返すことができます。

おすすめ

転載: blog.csdn.net/wlstephenw/article/details/123138396