本文是对区块链技术中涉及的共识算法的学习总结整理。 其中PBFT是联盟链常用共识算法,Raft是私有链常用的共识算法,而PoW(比特币采用)是公有链常用的共识算法。
建议对区块链的学习,要分成是公有链还是联盟链,这两种链中一般采用的共识算法是有较大不同的,P2P网络等也有较大的不同。传统的共识算法一般不适用于公有链,而一定程度上适用于联盟链。
实用拜占庭容错系统PBFT(联盟链中常用)
拜占庭容错技术(Byzantine Fault Tolerance,BFT)是一类分布式计算领域的容错技术,是一种解决分布式系统容错问题的通用方案。实用拜占庭容错系统(Practical Byzantine Fault Tolerance,PBFT)使拜占庭协议的运行复杂度从指数级别降低到多项式级别,使拜占庭协议在分布式系统中应用成为可能。
拜占庭容错系统
拜占庭容错系统是指:在一个拥有n nn台节点的系统,整个系统,对每个请求满足如下条件:
- 所有非拜占庭节点使用相同的输入信息,产生同样的结果;
- 如果输入的信息正确,那么所有非拜占庭节点必须接收这个信息,并计算相应的结果。
与此同时,在拜占庭系统的实际运行过程中一般假设系统中拜占庭节点不超过m mm台,并且对每个请求满足2个指标:
- 安全性——任何已经完成的请求都不会被更改,它可以在以后请求看到;
- 活性——可以接受并且执行非拜占庭客户端的请求,不会被任何因素影响而导致非拜占庭客户端的请求不能执行。
拜占庭系统目前普遍采用的假设条件包括:
- 拜占庭节点的行为可以是任意的,拜占庭节点之间可以共谋;
- 节点之间的错误是不相关的;
- 节点之间通过异步网络连接,网络中的消息可能丢失、乱序、延时到达;
- 服务器之间传递的信息,第三方可以知晓 ,但是不能窜改、伪造信息的内容和验证信息的完整性;
(发生故障的节点称为拜占庭节点;正常的节点为非拜占庭节点。)