
区块链共识机制算法可以用一句话概括:就是在一个时间段内对事物的前后顺序达成共识的一种算法。它大致可以分为7种,包括POW(工作量证明),POS(权益证明),DPOS(股份授权证明),BFT(拜占庭容错),Paxos(一致性),pool验证池,投注共识等算法。这些核心区块链共识机制算法具体是什么,会不会衍生出小的算法,下面做进一步说明。
区块链共识机制算法一:POW(工作量证明)
工作量证明系统(或者说协议、函数),是一种应对拒绝服务攻击和其他服务滥用的经济对策。它要求发起者进行一定量的运算,也就意味着需要消耗计算机一定的时间。
原理:工作量证明系统主要特征是客户端需要做一定难度的工作得出一个结果,验证方却很容易通过结果来检查出客户端是不是做了相应的工作。工作对于请求方是适中的,对于验证方则是易于验证的。它与验证码不同,验证码的设计出发点是易于被人类解决而不易被计算机解决。
简单理解就是一份证明,用来确认你做过一定量的工作。监测工作的整个过程通常是极为低效的,而通过对工作的结果进行认证来证明完成了相应的工作量,则是一种非常高效的方式。比如现实生活中的毕业证、驾驶证等等,也是通过检验结果的方式所取得的证明。
区块链共识机制算法二:POS(权益证明)
在POS算法中,节点记账权的获得难度与节点持有的权益成反比,相对于PoW,一定程度减少了数学运算带来的资源消耗,性能也得到了相应的提升,但依然是基于哈希运算竞争获取记账权的方式,可监管性弱。它是Pow的一种升级共识机制。拿挖矿来说,根据每个节点所占代币的比例和时间,等比例的降低挖矿难度,从而加快找随机数的速度。
区块链共识机制算法三:DPOS(股份授权证明)
DPoS的工作原理:去中心化表示每个股东按其持股比例拥有影响力,51%股东投票的结果将是不可逆且有约束力的。其挑战是通过及时而高效的方法达到51%批准。为达到这个目标,每个股东可以将其投票权授予一名代表。获票数最多的前100位代表按既定时间表轮流产生区块。每名代表分配到一个时间段来生产区块。所有的代表将收到等同于一个平均水平的区块所含交易费的10%作为报酬。如果一个平均水平的区块含有100股作为交易费,一名代表将获得1股作为报酬。
DPOS与POS原理相同,只是选了一些“人大代表”。与PoS的主要区别在于节点选举若干代理人,由代理人验证和记账。其合规监管、性能、资源消耗和容错性与PoS相似。类似于董事会投票,持币者投出一定数量的节点,代理他们进行验证和记账。

区块链共识机制算法四:BFT(拜占庭容错)
1.DBFT(授权拜占庭容错)
据悉,小蚁公司就是采用的dBFT机制。这种机制是由权益来选出记账人,然后记账人之间通过拜占庭容错算法来达成共识。此算法在PBFT基础上进行了以下改进:将C/S架构的请求响应模式,改进为适合P2P网络的对等节点模式;将静态的共识参与节点改进为可动态进入、退出的动态共识参与节点;为共识参与节点的产生设计了一套基于持有权益比例的投票机制,通过投票决定共识参与节点(记账节点);在区块链中引入数字证书,解决了投票中对记账节点真实身份的认证问题。
2.PBFT(实用拜占庭容错)
在分布式计算上,不同的计算机透过讯息交换,尝试达成共识;但有时候,系统上协调计算机或成员计算机可能因系统错误并交换错的讯息,导致影响最终的系统一致性。拜占庭将军问题就根据错误计算机的数量,寻找可能的解决办法,在保证活性和安全性的前提下提供了(n-1)/3的容错性。这无法找到一个绝对的答案,但只可以用来验证一个机制的有效程度。而拜占庭问题的可能解决方法为:在 N ≥ 3F + 1 的情况下一致性是可能解决。其中,N为计算机总数,F为有问题计算机总数。信息在计算机间互相交换后,各计算机列出所有得到的信息,以大多数的结果作为解决办法。
区块链共识机制算法五:Paxos(一致性算法)
Paxos算法解决的问题是一个分布式系统如何就某个值(决议)达成一致。一个典型的场景是,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点都执行相同的操作序列,那么他们最后能得到一个一致的状态。为保证每个节点执行相同的命令序列,需要在每一条指令上执行一个“一致性算法”以保证每个节点看到的指令一致。一个通用的一致性算法可以应用在许多场景中,是分布式计算中的重要问题。 节点通信存在两种模型:共享内存和消息传递。Paxos算法就是一种基于消息传递模型的一致性算法。
区块链共识机制算法六:Pool(联营)验证池
Pool验证池算法是基于传统的分布式一致性技术以及数据验证机制,Pool验证池是目前行业内大范围使用的共识机制。它有优点也有缺点,优点是不需要代币也可以工作,在成熟的分布式Paxos的基础上,实现秒级共识验证。缺点是去中心化程度不如比特币,更适合多方参与的多中心商业模式。
区块链共识机制算法七:投注共识
投注共识算法是以太坊下一代的共识机制“鬼马小精灵”引入的一个全新概念,可以说属于PoS。“鬼马小精灵”的共识是按区块达成的,而不像PoS那样按链达成。为了防止验证人在不同的世界中提供不同的投注,我们还有一个简单严格的条款:如果你两次的投注序号一样,或者说你提交了一个无法让“鬼马小精灵”依照合约处理的投注,你将失去所有保证金。从这一点我们可以看出,“鬼马小精灵”与传统的PoS不同的是,“鬼马小精灵”有惩罚机制,这样非法节点通过恶意攻击网络不仅得不到交易费,而且还面临着保证金被没收的风险。