共识算法
PBFT(拜占庭容错)
这是一种基于消息传递的一致性算法,算法经过三个阶段达成一致性,这些阶段可能因为失败而重复进行。
假设节点总数为3f+1,f为拜赞庭错误节点:
1、当节点发现leader作恶时,通过算法选举其他的replica为leader。
2、leader通过pre-prepare 消息把它选择的 value广播给其他replica节点,其他的replica节点如果接受则发送 prepare,如果失败则不发送。
3、一旦2f个节点接受prepare消息,则节点发送commit消息。
4、当2f+1个节点接受commit消息后,代表该value值被确定
如下图表示了4个节点,0为leader,同时节点3为fault节点,该节点不响应和发出任何消息。最终节点状态达到commited时,表示该轮共识成功达成。
得到数据 | 最终数据 | |
A | 1 1 1 1 | 1 |
B | 1 1 1 1 | 1 |
C | 1 1 1 1 | 1 |
D | 1 1 1 1 | 1 |
得到数据 | 最终数据 | |
A | 1 1 1 0 | 1 |
B | 1 1 0 1 | 1 |
C | 1 0 1 1 | 1 |
D | 0 1 1 1 | 1 |
得到数据 | 最终数据 | |
A | 1 1 0 0 | NA |
B | 1 0 0 1 | NA |
C | 0 0 1 1 | NA |
D | 0 1 1 0 | NA |
优点:上述共识算法都脱离不了币的存在,系统的正常运转必须有币的奖励机制,系统的安全性实际上是由系统币的持有者维护保证。当我们区块链系统实际运用到商业应用时,由其承载的资产价值可能远远超出系统发行的币的价值,如果由币的持有者保证系统的安全及稳定性将是不可靠的 。
1)系统运转可以脱离币的存在,pbft算法共识各节点由业务的参与方或者监管方组成,安全性与稳定性由业务相关方保证。
2)共识的时延大约在2~5秒钟,基本达到商用实时处理的要求。
3)共识效率高,可满足高频交易量的需求。
应用:央行的数字货币、布萌区块链。
作者:JoannaD
链接:https://www.zhihu.com/question/55794026/answer/146667857
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。