昨天先锋社区会员询问Pi的共识机制,我认为这是作为Pi先锋必须要了解掌握的内容,因为不了解区块链的共识机制,就无法理解区块链的真正意义。
今天我讲一下与pi相关的共识机制和其它一些主流的共识机制。
敲黑板:
1. 拜占庭容错(BFT)
优点:高速。可扩展。不足:通常用于私有网络和许可网络。采用者:Hyperledger Fapic、Stellar、Ripple、Dispatch解释:拜占庭将军问题是分布式计算中的一个经典问题。
问题描述为,几位拜占庭将军分别率领部队合力包围了一座城市。他们必须一致决定是否发起攻城。如果一些将军在没有其他将军参与的情况下决定发起攻城,那么他们的行动将以失败告终。将军们之间相互隔着一定的距离,必须依靠信息传递进行交流。
一些加密货币协议在达成共识时使用了特定版本的BFT,每种版本都具有各自的优缺点:实用拜占庭容错(PBFT,Practical Byzantine Fault Tolerance):首个提出的该问题解决方案称为“实用拜占庭错”(PBFT),当前已被Hyperledger Fapic采用。PBFT使用了较少(少于20个,之后会稍有增加)的预选定将军数,因此运行非常高效。
它的优点是高交易通量和吞吐量,但是不足之处在于是中心化的,并用于许可网络。
联邦拜占庭协议(FBA):另一类拜占庭将军问题的解决方案是FBA,已被Stellar和Ripple等代币使用,目前也是pi将使用的。
FBA的通用理念是每个拜占庭将军负责自身的链、消息一旦到来,通过排序建立事实。在Ripple中,将军(验证者)是Ripple基金会预先选定的。在Stellar中,任何人都可以成为验证者,需要用户选择去相信哪个验证者。由于FBA可提供令人难以置信的吞吐量、低交易开销和网络扩展性,我相信FBA类公式算法是目前提出的最好的分布式共识发现算法。
2. 恒星共识(Stellar Consensus)优点:去中心化控制。低延迟。灵活的信任机制。渐进安全。采用者:Stellar pi解释:恒星共识基于上文介绍的联邦拜占庭共识(FBA)。
恒星共识协议(SCP,Stellar Consensus Protocol)提供了一种不依赖闭合系统实现准确记录金融交易而达成共识的方法。SCP具有一组可验证的安全属性,这些属性根据如何安全地保持活力而做了优化。一旦出现分区或不当行为节点,它将会终止网络过程,直至达成共识。SCP同时具备四种属性:去中心控制、低延迟、灵活信任机制和渐进安全。
3. 工作量证明(Pow)
优点:自2009年以来得到了广泛测试,目前依然得到广泛的使用。不足:速度慢。耗能巨大,对环境不好。易受“规模经济”的影响。使用者:比特币、以太坊、莱特币等类型:有竞争共识解释:PoW是首个共识算法。
它是由中本聪在他的论文中提出的,用于建立分布式无信任共识并识别“双重支付”问题。PoW并非一个新理念,但是中本聪将Pow与加密签名、Merkle链和P2P网络等已有理念结合,形成一种可用的分布式共识系统。加密货币是这样系统的首个基础和应用,因而独具创新性。在PoW的工作方式中,区块链参与者(称为“矿工”)要在区块链中添加一块交易,必须解决某种“复杂但是无用”的计算问题。本质上,这种做法可确保矿工花费了一些金钱或资源(矿机)完成工作,这表示了它们将不会损害区块链系统,因为对系统的损害也将会导致投资的损失,进而损害他们自身。为保证运行区块时间不变,问题的复杂性会发生变化。有时,会存在多名矿工同时解决了问题。在这种情况下,每位矿工从中选取一个区块链,并以选取最长链者为获胜者。因此,如果假定大多数矿工工作在同一个链上,那么成长最快的链将成为最长和最值得信任的链。这样,只要由矿工提交的工作有超过一半是值得信任的,那么Bitcoin就是安全的。
4. 权益证明(Pos)
优点:对节点性能要求低,达成共识时间短,攻击者代价更大。不易受“规模经济”的影响。不足:没有最终一致性,需要检查点机制来弥补最终性使用者:以太坊,等。类型:有竞争共识。解释:PoS是作为Pow的替代技术提出的,意在解决PoW的一些内在问题。PoS没有使用挖矿方法,而是用户必须具有系统中的一些权益(币)。因此,如果用户拥有10%的权益(代币),那么该用户挖掘下一个区块的可能性就是10%。挖矿为解决计算上的挑战,需要运行各种加密计算,这需要耗费大量的算力。算力将转变为PoW所需的大量电能。据估计在2015年时,一个Bitcoin交易所需的电力,可达1.57个美国家庭一日所需的电力。PoS的提出是为了节约电力耗费。在PoS中,一个美元就是一个美元。例如,假定有一万名每位每分钟花费1美元(一年8760万美元)的矿工,要比一位具有每分钟花费一万美元挖掘矿池能力的矿工拥有更少的哈希能力(Hashing Power)。但是在PoS中不支持一次用光所有算力,一美元就是一美元。因此PoS不易受“规模经济”的影响。此外,攻击PoS系统也要比攻击PoW系统的代价更大。引用Vlad Zamfir的说法:在PoS中,重复51%攻击的代价,可类比为每额外运行一轮,都会“烧毁你的ASIC农场”。这意味着,每次攻击PoS系统,攻击者都会失去自己的权益。而在PoW中,攻击者不会丢失挖矿设备,或是代币。对PoW系统的攻击只会使攻击本身难以执行。但是PoS会在“无厉害关系”上出问题。这种对多个区块历史(forks)投票的方式不会让区块生成器有任何损失,进而阻碍了达成共识。在PoS中,你可以在区块链的双方押注资产(“无厉害关系”问题)。而在PoW中,你不能从链的两个方向同时挖矿,因为这难以实现。不同于PoW系统(用户为扩展链必须做大量的计算),PoS在多个链上工作的代价很校有一些项目试图通过多种方式解决这个问题。例如,一个解决方案就是上文所介绍的,对不好的验证者做惩罚。
5.DPOS委托权益证明
优点:大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证,以便支持高频的去中心化应用缺点:牺牲了去中心化的概念,拥有高权益的参与者可投票使自己成为一名验证者使用者:EOS等类型:协同型共识解释:DPOS是 PoS 的进化方案,在常规 PoW和 PoS 中,任何一个新加入的区块,都需要被整个网络所有节点做确认,非常影响效率。DPoS则类似于现代董事会的投票机制,通过选举代表来进行投票和决策。被选举出的n个记账节点来做新区块的创建、验证、签名和相互监督,这样就极大地减少了区块创建和确认所需要消耗的时间和算力成本。
例如,EOS中选举出21位见证人,并且有一堆节点(潜在的见证人)作为候选者。一旦见证人节点死亡或是做出了恶意行为,新节点就会立刻替代见证人节点。见证人会因为生成区块而获得一笔支付费用。该费用是由权益持有者设立的 通常,所有节点采用轮询方式,一次生成一个区块。该机制防止一个节点发布连续的块,进而执行“双重支付”攻击。如果一个见证人在分配给他的时间槽中未生成区块,那么该时间槽就被跳过,并由下一位见证人生成下一个区块。如果见证人持续丢失他的区块,或是发布了错误的交易,那么权益持有者将投票决定其退出,用更好的见证人替换他。在DPoS中,矿工可以合作生成块,而不是像在PoW和PoS中那样竞争生成。通过区块生成的部分中心化,DPoS的运行可以比其它共识算法呈数量级快。EOS(使用了DPoS)是首个实现0.5秒生成块的区块链!
结束语:
在共识方面,其实还有很多其它的共识算法,目前开发者主要从去中心化,高吞吐量,安全性 这三个方面去找到一个更好的共识算法,用技术的问题去解决人的问题。相信Pi共识机制会成是区块链共识机制的一次成功实践。