いわゆる「ビザンチンの将軍」問題とは何ですか?
「ビザンチン将軍問題」とは何ですか?
ビザンチン将軍問題は、1982 年にレスリー ランポートらによって初めて提案され、ビザンチン将軍問題またはビザンチンの失敗として知られています。この問題は次のように説明されています。
ビザンチン帝国は強力な敵国を攻撃したいと考え、帝国を包囲するために10人の軍隊を派遣しました。この敵はビザンツ帝国ほど強力ではありませんが、5つのビザンツ正規軍の同時攻撃に抵抗するのに十分です。何らかの理由で、これら10軍は攻撃のために集まって攻撃することができず、統一された指揮に従って分散して攻撃または撤退する必要がありました。少なくとも 6 つの軍隊が同時に攻撃して敵国を占領しない限り、どの軍隊も単独で攻撃した場合は勝ち目はありません。彼らは敵国の各地に散らばっており、信号兵を頼りに互いに通信し、攻撃の意図や攻撃時間を交渉する。
軍内に裏切り者がいる可能性があり、他の将軍に誤った命令を送る可能性があります。この場合、いかにして戦争指示の統一を維持し、勝利を勝ち取るかが問題となる。
さらに、ビザンチンの将軍問題は次のように説明できます。
命令を送信する将軍は、残りの n-1 人の将軍に命令を送信し、すべての忠実な受信側将軍が同じ命令に従うようにします。送信側の将軍が忠実であれば、すべての忠実な受信側将軍は受信した命令に従うことになります。この問題をコンピューター分野に発展させるには次のような命令が必要です。ビザンチンフォールトトレランス問題。ブロックチェーンが解決する必要がある中心的な問題は、分散環境で各ノードのデータ (悪意のあるノードがある場合でも) が最終的な一貫性と正確性を確実に達成できるようにする方法です。
EKT のコンセンサス アルゴリズムは DPoS であり、DPoS コンセンサスに基づいて、ルーティング戦略に基づくビザンチン フォールト トレラント スキームも導入しています。
「ビザンチンフォールトトレランス」スキームを実装するにはどうすればよいですか?
EKT では、公開鍵と秘密鍵の暗号化のメカニズムとルーティング戦略を使用して、ビザンチン フォールト トレランスを実現します。これはどのようにして達成されるのでしょうか?
EKT メインチェーン上の各 DPoS ノードの公開キーは公開されており、具体的なルーティング戦略は次のとおりです。
1.ブロードキャストをブロックする
ノードはパッケージ化を完了すると、ブロックに署名します。署名後、ノードはブロックと署名をネットワーク内の他のノードにブロードキャストします。別のノードがブロックと署名を受信すると、署名情報を検証して、ブロックがパッケージング ノードからブロードキャストされたことを確認します。他のノードが確認された後、条件が満たされる場合、自分のノードと現在のラウンドのパッケージング ノードの間の距離を判断します (currentIndex - miningIndex + len(DPoSNodes)) % len(DPoSNodes)
2. 検証と投票をブロックする
各ブロック ヘッダーには、ブロック本体のハッシュ チェック値があります。ノードは他のノードからブロック本体を取得できます。本体を処理した後、現在パッケージ化されているブロックに投票します。すべてのノードはブロックの検証結果に署名し、(currentIndex - miningIndex + len(DPoSNodes) ) % を満たすノードに送信します。 len(DPoSNodes)
3. ノードのダウンタイム
あるノードが一定期間ブロックを生成しなかった場合、現在のラウンドの次のノードは 3*interval/2 の時点で次のブロックのパッケージ化を開始し、次のブロックのパッケージング処理に入ります。同様に、ノードが継続的にダウンした場合、現在のノードをパッケージ化する必要があるかどうかを判断する条件は、currentTime - lastBlockTime > (2*(currentIndex -LastIndex)+1)*interval/2 です。現在の条件が満たされると、現在のノードのパッケージ化が開始されます。最後の n ブロックが連続してダウンした場合、次のラウンドの順序は現在のラウンドの最後のブロックのハッシュ値に基づいて判断され、各ブロックにブロック間隔を加えたインクリメントのアルゴリズムに従って計算が実行されます。現在パッケージ化されているノードを判断してパッケージ化します。 n/2 を超えるノードがダウンすると、ノードの 1/2 以上が生き残るまで、すべてのノードはブロックの生成を自動的に停止します。
このスキームの複雑さは最良の場合、メッセージ複雑さ O(n^2)、時間複雑さ O(1) です。これは、メッセージの複雑さ O(n^2)、時間の複雑さ O(n) という最悪のケースでも達成できます。このルーティング戦略のビザンチン フォールト トレランス メカニズムに基づいて、システムは、n/2 未満のノードがダウンまたは故障した場合にシステムがフォークしないことを保証できます。これは、コンピューティング リソースと引き換えにフォールト トレランスを実現するソリューションです。







