我们已经知道,区块链是一个多节点的分布式链状数据库系统,交易数据或应用数据存储在哈希链表结构的数据库中,那么一定时间范围内的数据该由哪个节点来打包成区块加入链表结构中,并且广播到全网节点进行同步呢?这里就是本次所要介绍的去中心化的节点间相互信任的区块链共识机制。
分布式系统中根据有无作恶节点分为拜占庭容错(BFT)和非拜占庭容错共识机制。BFT:Byzantine fault tolerance。
下面先介绍拜占庭容错的共识算法:
1、PoW(Proof of Work)工作量证明
就是大家熟悉的挖矿,通过与或运算,计算出一个满足规则的随机数,即获得本次记账权,发出本轮需要记录的数据,全网其它节点验证后一起存储。
优点:完全去中心化,节点自由进出,系统具有较强的鲁棒性;
缺点:挖矿造成大量的资源浪费,共识达成的周期较长,效率低;
2、PoS(Proof of Stake)权益证明
Pow的一种升级共识机制,根据每个节点所占代币的比例和时间,等比例的降低挖矿难度,从而加快找随机数的速度。
优点:对节点性能要求低,在一定程度上缩短了共识达成的时间;
缺点:前期还是需要挖矿,不能达到商业级应用效率;
3、DPoS(Delegeted PoS)股份授权证明机制
是基于POS衍生出的更专业的解决方案,他是类似于董事会的投票机制,选举出n个记账节点,在节点中提案者提交的提案被这些记账节点投票决定谁是正确的。
优点:大幅缩小参与验证和记账节点的数量,属于弱中心化,效率提高可以达到秒级的共识验证
缺点:牺牲了去中心化的概念,不适合公有链,并且整个共识机制还是依赖于代币;
非拜占庭容错的共识机制即不考虑有恶意节点的情况下的分布式系统的共识机制:
1、Pool验证池
基于传统的分布式一致性技术,加上数据验证机制;是目前行业链大范围在使用的共识机制。
优点:不需要代币也可以工作,在成熟的分布式一致性算法(Pasox、Raft)基础上,实现秒级共识验证;
缺点:适用范围小,更适合多方参与的多中心商业模式;
比特币(BTC)作为数字币(电子币)的开山鼻祖,采用了工作量证明的PoW共识机制,想获得记账的权利,必须先参加计算的竞赛,获胜的节点得到各个节点的认同,获得记账权利。
以太币(ETH)作为区块链2.0的代表数字币,前三个阶段采用PoW共识机制,到第四阶段“宁静”将采用PoS共识机制。
Ripple(XRP)引入了共识机制RPCA(Robust Principal Component Analysis),这是BFT机制的一种,通过特殊节点的投票,在短时间内对交易验证和确认,安全性高,不需要挖矿和代币系统,实现秒级共识验证,但是去中心化程度不高。
比特币现金(BCH),BTC的分叉币,希望解决网络效率的问题,使用PoW共识机制。
柚子(EOS)使用DPoS共识机制。
小蚁(NEO),国内第一数字币,采用dBFT(delegate BFT,授权拜占庭容错算法)由权益来选出记账人,然后记账人之间通过拜占庭容错算法来达成共识,是PoS共识机制的一种。
从目前的共识机制来看,PoW将作为BTC独有的共识机制,慢慢会退出共识机制的竞争,未来公有链共识机制的选择将主要在PoS和DPoS之间根据应用场景的不同在效率和去中心化之间的取舍平衡来进行,两种共识机制将会长期竞争共存,也从侧面印证了公平(安全)和效率,民主和集中之间的关系。
----------------------------------------------------
欢迎关注,欢迎交流。
领取专属 10元无门槛券
私享最新 技术干货