DTeam 团队日志

Doer、Delivery、Dream

区块链周周记:共识算法

胡键 Posted at — Aug 5, 2018 阅读

在区块链去中心化的环境里,共识算法起到了交易确认,避免“双花”的作用。在这个过程中,它需要解决:

关于流行的共识算法,这篇文章给出了详尽的说明,本文的内容也主要依据它来整理,更确切的讲,本文相当于一篇关于共识算法的摘要。

POW,工作量证明

最出名同时也是最古老的共识算法,比特币和以太坊均采用了它。

POW的特点在于解决问题需要付出工作量,而验证却能很快完成,保证了区块生成的正确性,避免了恶意生成区块,从而遏制双花问题的产生。理论上控制全网51%的算力将可以操纵区块的产生,但这样的付出远超老实挖矿获得收益。在这样的激励机制之下,促使矿工向善。

由于比特币的走高,导致一些硬件公司专门生产针对比特币挖坑的ASIC矿机,使得算力日益集中。为了避免这种不公平的竞争,以太坊实现了Ethash,其特点在于挖矿效率基本与CPU无关,而与内存和带宽正相关。其目的在于“抗ASIC”。

然而,道高一尺魔高一丈。2018年4月3日,北京时间22:00,比特大陆正式推出了以太坊ASIC矿机,蚂蚁E3。

不过,POW终究是一种高能耗算法,以太坊已经开始转向更节能的POS算法。

POS,权益证明

以太坊将在其最后一个里程碑(Serenity)由POW切换到POS。

由于手中的Token越多,影响力越大,若这些大佬投注错误的分叉将导致其损失,故他们会选择不作恶。然而,对于那些“无产阶级”,情况就不一样了。

由于本身分叉在POS中并不需要算力,因此分叉在POS中是常态。并且在早期的POS实现中,只有奖励而没有惩罚,即使投注的分叉错误也没有损失,因此用户可以在多个分叉上同时投票,这就是所谓的“权益粉碎攻击”。鉴于此,以太坊的POS算法“Casper协议”中引入了保证金的概念,一旦被系统认定是“坏人”,保证金将被没收。

理论上,如果收集全网超过50%的Token将可以操纵区块产生,但这种情况极难出现。

DPOS,委托权益证明

目前大热的EOS采用的正是这个算法。

部分的中心化让DPOS的效率相当高。

POA,权威证明

以太坊Kovan测试网采用此算法。

一般用在私有网络。

PoWeight,权重证明

FileCoin采用此算法。

BFT,拜占庭容错

实用拜占庭容错算法(PBFT),原始BFT的性能极低,后来出现PBFT,将算法复杂度由指数级降低到多项式级别,从而使得算法可以实际应用。节点3f+1可容错f个节点。超级账本目前采用此算法,<20个节点时,性能不错,再多节点时,性能会出现下降。优点:高交易吞吐量;缺点:中心化,需授权。

联邦拜占庭协议(FBA),Stellar和Ripple采用,每个节点负责自己的链,在消息到达时对它们进行排序,建立相应的事实(Truth)。Ripple中,节点有基金会预选,Stellar中由用户来决定相信哪个节点。

DAG,有向无环图

DAG又称“无块区块链(Blockless)”,它和区块链的差异:

DAG有望成为新一代的区块链基础,最出名的三个项目:IOTA、Nano、ByteBall。

DAG不依赖于区块链数据结构,几乎完全用异步方式处理交易,最大的优点是理论上每秒可处理无限事务。算法变种:

其他共识算法

区块链不可能三角形

与CAP原理类似,区块链中也同样存在不可能三角形,其形式如下: image

即:在去中心化、性能和安全三个方面最多得其二,无法全部满足。

参考资料


相关文章