PBFT 算法 java实现(下)
GitHub
hyperchain的官方图,展示的是一个RBFT常规流程。如果想了解更多,可以去参考hyperchain官网,或者我以前的。
在共识的过程一共有3个阶段:PrePrepare,prepare,commit。上面的图介绍的还是比较简单明了的。下面将用通俗的语言来介绍这个过程。
我们设想一个场景,我们生活在一个村子里面,每一个人都有着自己的小本本,小本本上面记录着这个村子里面的所有的支出。某一天村子支出了100¥,然后村长(主节点)将这个支出消息进行广播,广播的消息类型是preprepare。村子中的村民收到这个消息后,肯定会看看村子里面是不是真的支出了100¥,如果消息是真的的话就告诉其他的村民村子里面是真的支出了100¥(消息类型是prepare)。当一个村名接收到$quorum = \lceil \frac {N + f +1 }{2 }\rceil $数量的prepare消息,就认为这个消息是真的消息(当然实际上的情况会更复杂),然后向外广播我同意(commit)这份支出写入账本,当一个节点收到quorum个commit消息的时候,就会真的将这个100¥的交易信息写入自己的小本本。
上面便是PBFT算法的交易部分的逻辑,其实还是蛮好理解的,遵循少数服从多数的原则。
接下来了将在代码的方面来理解这个过程。
GitHub,如果有任何问题,欢迎在评论区下方留言,或者使用Email私信我。