最大的区别是在于viewChange的不同。
1. leader更换条件不同
pbft是 stable leaders paradigm,没必要不会换leader,仅在leader不能工作时换主
而tendermint是otating leader paradigm,即每一次共识后都会主动换leader
2. leader更换方式不同
pbft是所有节点投票,发送view-change消息,集齐2/3消息后新的leader选举成功。pbft这里有个前提,节点需要判断现有的leader是否正常工作,不能正常工作则选举新的leader。
节点怎么判断leader是否正常工作呢?常见的模式是和leader直接通讯,通过心跳判断leader是否正常工作。
tendermint依靠超时机制。在规定时间内无法收集leader发出来的proposal,则投空票,收集到2/3空票后,则发生view change,更换leader。可见,tendermint是把view change机制融合在了自己的共识过程中。
总结:
- pbft更适合于CFT环境,需要一个稳定的leader,减少leader更换次数。replica需要判断leader是否正常工作,和往往和leader之间需要直接通讯,使用心跳检测机制。
- tendermint更适合与BFT和p2p环境。通过超时和投票机制,来执行viewchange
- 如此看来,pbft共识速度会快于tendermint,而tendermint更适合不可信环境
Ref
回复 agodelo 取消回复