本文简要介绍了达成共识的两个主要过程:分组提议和分组共识。阻塞提议主要涉及PoW和PoS机制,即工作量证明和权限证明机制,以抵抗女巫攻击和安全地选择可靠阻塞提议者。
区块一致性涉及一致性算法,包括中本聪一致性和经典一致性。中本聪共识采用最长链规则,而经典共识可以实现终结性。每个共识算法都有自己的权衡。本文作者Julian Koh和Cheryl Sew Hoy由“蓝狐笔记”社区的小L翻译。
区块链共识是2017年和2018年讨论最广泛的区块链地区之一。可以看到,很多公司都在尝试从零开始建立一个新的智能合约平台,与以太坊竞争,其中一个不同或创新之处在于区块链的共识算法。对于许多加密投资者来说,试图理解这些算法并批判性地比较它们是一项全职工作。无疑,掌握它们并不容易。
很多人做了很多工作来揭开这些“共识算法”的神秘面纱。但是,对于普通人来说,它们的技术性太强了。一些概念,如同步、安全性/活性证明和不可能结果,有助于人们理解这种情况。但是,在我看来,对于大多数人来说,完全理解并不是特别重要。
本文主要讨论区块链的一致性算法,而没有提及更大、更复杂的分布式系统领域。为了简单易懂,会舍弃一些技术概念。
在本文结束时,您应该了解PoW和PoS的区别,了解BFT的含义,最重要的是,当考虑在哪个区块链上构建您的应用程序时,您应该知道它们的权衡。
什么是共识?为什么重要?
简而言之,区块链是一个公共数据库,用户在其中就什么是正确的达成一致。比特币是一个公共数据库,记录所有交易,维护货币体系的完整性。有两个主要问题需要理解:
1.你同意什么?
2.如何达成共识?
我们需要有人提议,然后让其他人选择,直到达成某种形式的共识。在区块链的例子中,我们需要有人提出阻塞,然后我们需要剩余的节点接受阻塞。
一个简单的例子如下:
四个朋友试着安排时间一起做事情。
四个人试着安排一个共同的时间做事情。每个人都提出自己的可用时间(空白框)。如你所见,有两个常用的时间段,下午2点和6点。他们是如何达成共识的?在他们提出可用时间之前,他们同意了一个特定的规则:每个人都必须选择最早的共同可用时间。根据这一规则,这意味着他们将在下午2点而不是6点见面。由此,他们达成了共识。
根据这个框架,我们将其扩展为类似于比特币区块链:
人们同意什么?
人们对块数据已经达成共识。该区块包含有效的比特币交易。在比特币中,任何人只要率先解决了一个计算难题(PoW),就可以提出区块。
人们是如何达成共识的?
人们同意接受最长链条上的积木。例如,如果链A的高度是100,链B的高度是200,如果您在链A上收到块101,在链B上收到块201,则必须接受块201。有些人在较短的链上添加区块,也许是因为他们没有意识到较长的链,但“最长链规则”确保了一旦区块遍布网络,大家最终就同一件事达成共识。
该框架支持所有共识算法。不同的算法可以用不同的方法提出分块,也可以用不同的方法对分块达成共识。
拟议区块
在考虑区块提案时,最大的问题是谁将提出区块。如果任何人都可以随时提出封杀,那就很难达成共识,因为这类似于人与人之间不断的对话。必须以某种方式选举代表,以便其他人一次只能看到一个提案。
最幼稚的方法是让协议随机选择一个人提出新的区块。然而,在互联网上,一个人可以通过运行同一程序的一百个实例来伪装成一百个人。因此,我们需要创造某种形式的稀缺来抵御女巫的攻击。(蓝狐注:女巫攻击主要是指网络中少数节点控制多个虚假身份,并利用这些身份控制网络中大量正常节点的攻击方式。)。
所以这个游戏必须能够抵御单个黑客操纵多人的攻击。这就是PoW和PoS带给你的:一种限制电脑使用某些资源的方式。(蓝狐注:也就是说通过设置门槛,比如PoW的力量输入,PoS的令牌输入,以竞争的方式解决了谁有资格提出区块并从中获得奖励的问题。)
PoW如下:为了获得提议区块的权利,你必须率先完成一项计算密集型的任务。模拟一个虚拟计算机抛硬币任务,直到它连续100次获得虚拟硬币的正面。这是计算密集型的,没有人能冒充一百个人,因为受制于它的计算能力。
然而,人们通过采用这种“防女巫攻击”机制,建立了一个由数千台计算机组成的矿井,以赢得计算能力的竞争,从而获得提案权。这些服务器矿耗电量巨大,因此集中在可以获得最便宜电力的国家或地区。
那么,当大部分比特币矿工位于中国时,这对去中心化意味着什么?这种地理上的集中化对系统的持久性构成了真正的威胁,因为这些矿业公司很容易受到监管。
比特币矿
PoS采用了与PoW不同的“防女巫攻击”机制。既然要花钱买比特币挖矿电脑和电,为什么不直接用钱来选择区块生产商,跳过计算密集型的过程呢?PoS是基于人们在系统中质押了多少钱,即人们在系统中拥有代币的比例来选择大宗提议者的思想。
在PoW中,你的计算能力越强,被选为拟下一个区块的概率就越高。在PoS中,代币越多,成为区块生产者的概率越高。
请注意,我们还没有开始讨论如何就该问题达成共识。有一个常见的误解,即功率和位置是共识算法。事实上,他们不是。他们只是通过限制稀缺资源来选择区块生产商。
阻止共识
这是事情变得有趣的地方,也是近年来大多数创新发生的地方。一旦有人提出封杀,如何达成共识?这是计算机科学家从20世纪80年代以来一直试图解决的问题,以便当一些计算机偶尔崩溃时,它们的计算机集群可以同步。在20世纪90年代,这些计算机科学家开始思考一个更困难的问题:如果黑客可以控制其中的一些计算机会怎么样?(蓝狐注:这两个问题的区别,一个只是电脑部分崩溃,一个是电脑没有崩溃但被恶意控制。)
他们能否建立一个足够强大的系统,确保所有非恶意计算机仍能达成共识?这个特性被称为“拜占庭容错”(BFT),它是基于拜占庭的一般问题。BFT系统是一个相对较小的研究课题,因为大多数系统不需要这种程度的健壮性,因为大多数计算机集群通常属于单个公司。直到区块链的到来,这种情况才得以改变。
在区块链中,任何人都可以运行一个节点(集群中的一台计算机)并向其他节点发送信息或数据。这是一个真正对抗性的环境,因为恶意的行为者可以伪装成诚实的节点。例如,如果群集中的10台恶意计算机向其他9台计算机发送冲突信息,会怎么样?
恶意计算机向不同的诚实计算机发送相互冲突的信息。
因为诚实的计算机无法区分恶意计算机和非恶意计算机,所以这个问题变得非常困难。解决这一问题的方法主要有两种:中本聪共识和古典共识。
中本聪共识
中本聪共识用于比特币和大多数PoW系统,由中本聪发起。它只有一条规则:“当你看到提议的块最有工作量证明时,就接受它。”一般来说,编号最高的块具有最多的工作负载证明。(蓝狐注:是比特币最长链规则。这是一个概率确认。确认区块深度越长,交易越难逆转。)
这意味着你永远无法100%确定你看到的区块是否“正确”。比如你看到的最高块号是99,你可以在块号100接收块A,所以你接受了。
突然,您收到了编号为103的块B,它在编号为100的块中有一个不同的块。根据共识规则,您需要“反转”之前接受的块A,并接受新的块历史。
在这个系统中,超过系统计算能力50%的攻击者将能够持续建立最长的链,因此他们可以创建任何他们想要的块。通过这个例子,我们可以看到,这些规则帮助人们就哪个链是可接受的达成一致。
经典共识
在2009年中本聪共识发明之前,计算机科学家对这个问题有不同的解决方案,这些方案有不同的特点。第一个拜占庭容错一致性算法被称为实用拜占庭容错算法(PBFT)。其工作原理是:让一组参与者进行多轮投票,直到一定比例的投票者达成共识。
基于PoS等机制,选择某人来提议区块。他将该块发送给其他已知的参与者。其他参与者投票。
由于大多数参与者投票支持该块,系统中的每个人都将接受该块为正确的块。要使用这种类型的共识,必须有一组已知的选民,但一旦他们投票,该区块将是最终的。因此,不存在块回滚。如果有争议,系统会停止。(蓝狐注:经典共识的最终确定性与中本聪共识的概率形成鲜明对比。)
PBFT算法已经在区块链使用。到目前为止,区块链最著名的BFT算法是Tendermint Core。Tendermint Core是区块链第一个不使用中本聪共识的共识算法,而是基于20多年的计算机科学研究。
BFT算法的主要局限性在于,它们通常局限于少数选民,因为所有选民都需要提前知道。十万个人要和别人沟通达成共识是极其困难的。到目前为止,Cosmos已经运行了最大的公共BFT系统之一,他们的赌注游戏测试网络有200多个验证器。(蓝狐注:和谐有200多个验证者。)
还有中本聪共识的其他变种,比如GHOST(新的评分算法,不仅是最长的链),还有BFT共识的其他变种,比如Casper-BFT和Thunderella。
事实上,共识算法的这些变种之间的主要区别只是块提议方式的不同或者参与共识的传播者数量的不同。在大多数情况下,在一系列算法中,它们之间存在类似的权衡。还有一些新形式的共识,比如雪崩,不属于任何系列。
如何选择共识算法?
根据您想要构建的应用程序的类型,以下是选择哪种共识算法的指南,这也将涉及选择哪种智能合约平台。
1.您想要构建的应用程序有多需要终结性?
对于某些应用程序,终结性非常重要,而对于其他应用程序,终结性则不那么重要。如果你为小额支付建立一个新的支付系统,交易可以逆转并不是世界末日。同样,如果你正在构建一个去中心化的社交网络,确保100%的状态更新立即完成并不是特别重要。相反,如果你建立一个分散的交换,终结是用户体验的一个重要部分。撤销交易比没有交易更糟糕。作为参考,比特币的终结性在1小时左右(蓝狐注:确认6块比特币,基本确认交易完成,但这并不是100%终结,但确认6块后,就很难逆转交易了。)以太坊的终结性是6分钟左右,而Tendermint核心的终结性是1秒。
2.你想构建的应用有多快?
如果你正在构建一个游戏应用,那么每个动作前等待15秒(甚至更长)是否合理?由于以太坊的封锁时间,基于以太坊区块链的游戏由于吞吐量太低,用户体验很差。但是一个转移房屋证书所有权的应用,可能非常适合在以太坊上运行。使用cosmosdk构建应用程序,开发者可以使用现成的Tendermint Core,它的阻塞时间更短,吞吐量更高,最高可以达到每秒10000个事务。您可以通过为您的应用程序设置更少的验证器来实现这一目标,因为这可以减少通信开销并提高应用程序处理速度。
3.您想要构建的应用程序有多分散?
一些应用程序,如游戏,可能不需要显著的反审查功能,这只是去中心化的副产品。理论上,验证者可以创建卡特尔,在游戏中实现大宗/反向交易来获利。这些在应用中真的很重要吗?如果不是那么重要,类似EOS的区块链可能适合你的应用场景,因为它有更快的交易速度,而且没有成本。
然而,一些应用,如自治银行,需要高度分散。虽然以太坊被认为是去中心化的,但也有支持者声称以太坊矿池的集中也是其中心化趋势的重要体现。事实上,它只有11个验证器(矿池)。
构建您自己的区块链而不是基于其他智能合约平台构建应用程序的优势之一是,您可以为自己的应用程序自定义验证方法。然而,建造你自己的区块链是非常困难的。因此,在这方面,使用Cosmos SDK是非常有用的,它可以很容易地构建自己的区块链,并定制应用程序所需的去中心化程度。
4.如果系统停止,可以接受吗?
如果您正在构建一个去中心化的共享循环应用程序,确保服务全天候运行可能是最高优先级,即使存在一些意外错误,例如事务被反转。
Tendermint Core的属性之一是,如果网络验证者之间存在差异,网络会选择停止而不是进行不正确的交易。有些应用程序,如分散的exchange应用程序,需要不惜一切代价确保正确性。如果出现问题,可以暂停分散交易,而不是不可逆交易。
结论
没有单一的“最佳”共识算法。每种算法都有自己的权衡。但是,通过了解共识过程(提出和达成共识)并建立一个框架来思考您的应用程序可能需要什么样的共识算法,它可以帮助您在选择区块链时做出更明智的决策。当然还有其他因素要考虑,比如开发者工具,社区等。
一般来说,PoW和PoS都不是共识算法。它们是“反女巫攻击”机制,可以帮助选择区块支持者。
两个主要的共识家族是中本聪共识和经典共识。这些算法用于在区块链的区块上达成共识。每个共识算法都有自己的权衡。根据应用场景选择共识算法和智能合约平台。要考虑的因素:
l终结
l速度
l分权度
l活性
–
风险提示:蓝狐笔记所有文章不能作为投资建议或推荐。投资有风险,投资要考虑个人的风险承受能力。建议对项目进行深入调查,谨慎做出自己的投资决策。
(作者:蓝狐笔记,内容来自链家的内容开放平台“德豪”;本文仅代表作者观点,不代表链家官方立场)