共识算法系列之二:区块链共识算法
区块链中比较常见的共识机制主要有工作量证明POW(Proof of Work)、权益证明POS(Proof of Stake)和股份授权证明DPOS(Delegated Proof of Stake)三种
共识,分主动共识和被动共识
一.POW工作量证明
优点:
1)算法简单,容易实现;
2)节点间无需交换额外的信息即可达成共识;
3)破坏系统需要投入极大的成本;
缺点:
1)目前比特币已经吸引全球大部分的算力,其它再用POW共识机制的区块链应用很难获得相同的算力来保障自身的安全;
2)挖矿造成大量的能源资源浪费;
3)区块的确认时间难以缩短,共识达成的周期较长,不适合商业应用。
对公有链来说,目前能够确保安全可靠的,只有PoW
(一)POW与其他共识机制间的区别
最主要的区别就在于,一是记账权是怎么样抢到的;二是有人记账、打包了一个块以后,是怎么被别的节点确认的?三是全网所有节点来参与共识的过程还是部分节点来参与
二.POS权益证明
优点:在一定程度上缩短了共识达成的时间;不再需要大量消耗能源挖矿。
缺点:还是需要挖矿,本质上没有解决商业应用的痛点;所有的确认都只是一个概率上的表达,而不是一个确定性的事情,理论上有可能存在其他攻击影响。例如,以太坊的DAO攻击事件造成以太坊硬分叉,而ETC由此事件出现,事实上证明了此次硬分叉的失败
Ouroboros 乌洛波罗斯
provable PoS(可证的权益证明)
已有的 PoS 有着诸多缺陷,且无法证明其安全性。为了确保区块链的安全性,选择股权者来产生区块的方法必须是 真随机 的。乌洛波洛斯是第一个安全性经过形式化证明的权益证明共识。
三.DPOS股份授权证明
优点:大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证。
缺点:整个共识机制还是依赖于代币,很多商业应用是不需要代币存在的。
四. PBFT :Practical Byzantine Fault Tolerance,实用拜占庭容错
在保证活性和安全性(liveness & safety)的前提下提供了(n-1)/3的容错性。
在 N ≥ 3F + 1 的情况下一致性是可能解决。其中,N为计算机总数,F为有问题计算机总数。信息在计算机间互相交换后,各计算机列出所有得到的信息,以大多数的结果作为解决办法。
拜占庭容错法最主要的原理就是在所有参与到分布式记账体系里的这些节点当中,推选出来一部分节点来参与共识,记住它不是所有的节点.没有分叉
优点
1)系统运转可以脱离币的存在,pbft算法共识各节点由业务的参与方或者监管方组成,安全性与稳定性由业务相关方保证。
2)共识的时延大约在2~5秒钟,基本达到商用实时处理的要求。速度快慢主要取决于网络上的延迟
3)共识效率高,可满足高频交易量的需求。
缺点:
拜占庭算法的一个缺陷就是参与记账的节点数不能太多,大概是在达到六十几个左右,它的性能就会开始下降
1)当有1/3或以上记账人停止工作后,系统将无法提供服务;
2)当有1/3或以上记账人联合作恶,且其它所有的记账人被恰好分割为两个网络孤岛时,恶意记账人可以使系统出现分叉,但是会留下密码学证据;
Tendermint
Tendermint共识引擎通过Tendermint套接字协议(TMSP)与应用程序进行连接。
基于PBFT的区块链共识算法框架,最知名的当属Tendermint。网上资料常拿他与以太坊的Casper协议比较优劣,Casper是基于链的共识算法,且内部实现了较为严厉的惩罚措施制约恶意节点。达成共识的手段上,Tendermint是基于轮次的投票机制,而Casper是基于赌博的投注机制
五.dBFT: delegated BFT 授权拜占庭容错算法
小蚁采用的dBFT机制,是由权益来选出记账人,然后记账人之间通过拜占庭容错算法来达成共识。
优点:
1)专业化的记账人;
2)可以容忍任何类型的错误;
3)记账由多人协同完成,每一个区块都有最终性,不会分叉;
4)算法的可靠性有严格的数学证明;
缺点:
1)当有1/3或以上记账人停止工作后,系统将无法提供服务;
2)当有1/3或以上记账人联合作恶,且其它所有的记账人被恰好分割为两个网络孤岛时,恶意记账人可以使系统出现分叉,但是会留下密码学证据;
以上总结来说,dBFT机制最核心的一点,就是最大限度地确保系统的最终性,使区块链能够适用于真正的金融应用场景
六.POOL验证池
基于传统的分布式一致性技术,加上数据验证机制。
优点:不需要代币也可以工作,在成熟的分布式一致性算法(Pasox、Raft)基础上,实现秒级共识验证。
缺点:去中心化程度不如bictoin;更适合多方参与的多中心商业模式。