PBFTアルゴリズムのJava実装(下)

JavaのPBFTアルゴリズム実装(下)

以前にブログ(以前のブログを参照してくださいすることをお勧めブログを空想しなかった場合)、私たちはJava実装PBFTアルゴリズムノードの使用を導入することは、このようなビューの同期動作として、追加されます。このブログでは、私はPBFT合意プロセスを実現するためのアルゴリズムを説明します。

プロジェクト住所:GitHubの

コンセンサス・プロセス

これは、hyperchain RBFTを示す公式見解は、日常的な手順です。あなたがもっと知りたい場合は、参照hyperchain、または私の以前の公式サイトに行くことができるブログ


コンセンサスのプロセスにおいて、三段階の全PREPREPAREは、準備、コミット。上の図は、非常に簡単示しています。このプロセスを導入するには、次の簡単な言語。

私たちは村に住んでいるシナリオは、誰もが村内の自分の小さな図書、記録上ではほとんどの本はすべての費用を持って想定しています。ある日、村は100¥を過ごし、その後、市長(マスターノード)は、ブロードキャストメッセージタイプがPREPREPAREで、このニュース放送を過ごすことになります。確かに村内の見てみましょう。この知らせを受けた村の村人の後、実際にニュースが本当であるならば村は本当に費やされているの内側、そして他の村人に語った、100¥を費やしていない100¥(メッセージタイプが用意され)。村の名前は、{$定足数= \ lceil \ FRACを受信したとき 、{2} +1 F N +を} \ rceil $は、 メッセージ番号を準備し、メッセージが真のメッセージであると考えられる(もちろん、状況は、実際にはより複雑です)私は、この支出の(コミット)書かれた本に同意外にノードが受信したときにブロードキャストして、quorumメッセージをコミットすると、これは本当に100¥トランザクション情報は、自分の小さな本を書きます。

上記の取引はPBFTアルゴリズムの論理的な部分ですが、それは、理解過半数の原則に従うことはまだ大丈夫です。

次は、このプロセスを理解するために、コードになります。

コードの実装

神は私のペン馬梁に自分自身を再配置し続けています。

首先我们假设一个有4个节点,其中一个主节点3个从节点。

主节点首先向所有的从节点广播pre-prepare消息(其中AC代表A_Client,AS代表A_Server)。


从节点(上面图片中的BCD节点)肯定会(实际上不一定会,因为会受到网络的因素)收到主节点发送过来的pre_prepare消息,当从节点验证此消息正确时,就会广播prepare消息。下面的一张图就是B从节点向ACD节点发送prepare消息。


在上面我们知道B节点会广播消息,其他的CD节点同样会广播消息。当节点受到一定数量(quorum)的prepare消息时,就会向外广播commit消息。


同样当节点受到一定数量(quorum)的commit消息时,节点就会将这个消息写入自己的块(block)中。


以上便是共识过程中的手绘流程图,在图中我们可以很清楚的知道当发送消息的时候,谁扮演的是客户端,谁又扮演的是服务端。至于为什么不是server广播消息而是client广播消息,在上一篇博客中已有说明,这里便不再赘述。

emm,至于怎么实现,可以去参考我的源代码,因为这个还是挺简单的,只要我们理解这个过程,其实实现起来还是比较简单的。

项目地址:GitHub,如果有任何问题,欢迎在评论区下方留言,或者使用Email私信我。

おすすめ

転載: www.cnblogs.com/xiaohuiduan/p/12359271.html