A-to-Z of Blockchain Consensus(从零开始学区块链共识)

转载于A-to-Z of Blockchain Consensus

什么是共识算法,为什么它如此重要?

简而言之,区块链是一个公共数据库,用户可以在其中同意正确的内容。比特币是所有发生过的交易的公共数据库,可保持货币系统的完整性。为了了解其工作原理,我们需要提出两个主要问题:

  1. 我们同意什么?
  2. 我们如何达成协议?
    我们需要有人提出一些建议,然后有一种方法让其他人选择,直到达成某种形式的协议为止。在区块链的情况下,我们需要有人提出一个区块,而我们需要其余的节点来接受这个区块。一个简单的例子如下:
    在这里插入图片描述
    4个人尝试并安排一个共同的时间赶上来。每个人都建议他们的可用时间(空白的空白位置)。
    如我们所见,有2个相互可用的插槽:2pm和6pm。
    他们如何达成协议?
    在提出可用时间之前,他们可以同意特定的规则-每个人都必须选择最早的相互可用时间。在这种情况下,这意味着他们将在下午2点而不是下午6点开会–因此他们已经达成共识。
    使用此框架,我们可以将类比扩展到比特币区块链:

我们同意什么?

我们同意包含有效比特币交易的数据块。在比特币中,任何人都可以提出区块,只要他们首先解决计算机难题(工作量证明)即可。

我们如何达成协议?

我们同意接受延长最长链条的区块。例如,如果链A的长度为100,链B的长度为200,则如果您在链A上收到一个块101,在链B上收到了块201,则您必须接受块201。某些人可能会在较短的链上提出一个块因为他们不知道更长的链,但是“最长链规则”确保一旦块在整个网络中传播,每个人最终都会同意同一件事。

工作量证明的行为如下:要获得提议区块的权利,您必须首先完成计算量大的任务。一个模拟将让计算机翻转虚拟硬币,直到它连续100次达到正面。这是计算密集型的,并且没有人可以伪装成一百个人,因为他的身体受到计算机能力的限制。

但是,通过采用这种“ Sybil Resistance”机制,人们已经建立了具有数千台计算机的服务器场,以便他们可以超越竞争并获得提议阻止的权利。这些服务器场要花费大量的电力来发电,因此它们在地理上集中在电力最便宜的国家或地区。那么,当大多数比特币矿工居住在中国时,对权力下​​放意味着什么?这种地理上的集中化对系统的寿命构成了真正的威胁,因为中国政府可以轻松地规范这些矿业公司。

在这里插入图片描述

另一方面,权益证明使用了截然不同的“ Sybil Resistance”机制。由于购买这些比特币采矿计算机需要花钱,而为它们提供动力也要花钱,所以为什么我们不仅仅使用金钱作为选择提议者并跳过整个计算密集型过程的方式呢?权益证明是根据他们在系统中有多少钱(或他们在系统中拥有的代币的比例)来选择集体提议者的想法。在工作量证明中,您拥有的计算机越多,选择下一个提案的机会就越高。在权益证明中,您拥有的硬币越多,机会就越高。

注意,我们还没有谈论关于块的协议。
有一个普遍的误解,认为工作量证明和权益证明是共识算法。
他们不是。
它们仅仅是通过限制一些稀缺资源来选择主要提议者的方法。

区块提议

关于区块建议,我们需要考虑的最大问题是谁可以提出区块。如果任何时候都允许任何人提出禁止的提议,将很难达成协议,因为这类似于人们不停地互相交谈。必须有某种选择人员的方式,以便其他所有人一次都能听取一个建议。最简单的方法是让协议为每个新块随机选择一个人。但是,在Internet上,通过运行同一程序的一百个实例,一个人可以假装成一百个人。因此,我们需要创建某种形式的稀缺性(“ Sybil抵抗”),以使游戏无法被伪装成一百人的单个黑客操纵。这正是工作量证明和权益证明为您提供的-计算机受某种资源限制的一种方式。

区块确认

这就是事情变得有趣的地方,并且大多数创新都发生在最近几年。一旦有人提出了封锁,我们如何达成一致?自80年代以来,这一直是计算机科学家一直试图解决的问题,以构建即使有时会崩溃也可以同步的计算机集群。在90年代,这些计算机科学家开始思考一个更加困难的问题-如果黑客可以控制其中一些计算机呢?他们是否能够构建足够强大的系统以确保所有非腐败计算机仍然可以达成协议?此属性被称为“拜占庭式容错”(BFT),其基础是名为拜占庭将军问题的问题。BFT系统是一个相当小众的研究主题,因为大多数计算机系统不需要那种级别的鲁棒性,因为计算机集群通常都由一个公司拥有。直到区块链。

在区块链中,任何人都可以运行节点(集群中的计算机)并向其他节点发送消息或数据。这是一个真正的对抗性环境,因为恶意行为者可能假装是诚实的。例如,如果10个群集中的损坏计算机向其他9台计算机发送了冲突的信息,该怎么办?
在这里插入图片描述
由于好的计算机无法区分好坏,因此这个问题变得非常难以解决。解决这个问题的方法主要有两种:中本共识和古典共识。

中本聪共识

中本聪共识是中本聪(Satoshi Nakamoto)率先在比特币和大多数工作量证明系统中使用的共识。这是一条唯一的规则:“当您看到一个建议的区块具有最高的区块编号时,请接受它”。

这意味着您永远不会百分百确定看到的块是否“正确”。例如,您看到的最高的块是块99。您可能会收到高度为100的块A,因此您可以接受。

在这里插入图片描述
突然,您收到高度为103的块B,高度为100的块也有不同。根据共识规则,您将需要“反转”您先前接受的块A,现在要接受这个新的块历史。

在这里插入图片描述
在该系统中,拥有系统整体计算能力50%以上的攻击者将能够始终如一地构建最长的链,从而可以创建他们想要的任何块。通过此示例,我们可以看到这些规则有助于使人们团结一致,就哪个链被接受达成一致。

经典共识

在2009年中本聪共识发明之前,计算机科学家针对此问题具有一套不同的解决方案,但具有不同的解决方案。第一个共识算法是拜占庭式容错(Byzantine-Fault Tolerance),是一种称为实用拜占庭式容错的算法(我知道,名字叫什么)。它的工作方式是让一组参与者进行多轮投票,直到有一定比例的选民达成协议。

在这里插入图片描述
根据权益证明之类的方法,选择了某个人来提议阻止。他将块发送给其他已知参与者。其他参与者投票。

在这里插入图片描述
由于大多数参与者对该块都投了赞成票,因此系统中的每个人都会将该块视为正确的块。使用这种类型的共识需要一组已知的选民,但是一旦他们投票通过该区块,该区块便成为最终的。因此,不存在块反转的情况。如果有分歧,则系统暂停。

此PBFT算法已被修改为可与区块链一起使用,区块链最突出的BFT算法是Tendermint Core。Tendermint Core是第一个不使用Nakamoto共识的区块链共识算法,而是建立在20多年的计算机科学研究基础之上。BFT算法的主要局限性在于它们通常仅限于一小部分选民,因为所有选民都需要事先知道。要使100,000个人不断地与其他人沟通以达成协议,就变得极为困难。Cosmoshas运行着可能是迄今为止最大的公共BFT系统,该系统拥有200多名验证员,他们的“赌注游戏”测试网络中有此系统。

Nakamoto共识还有其他变体,例如GHOST(新的评分算法,不仅仅是最长的链),还有BFT共识的其他变体,例如Casper-BFT和Thunderella。这些共识算法实际上只是在建议块的方式或人们达成共识所需的沟通量方面有所不同,在大多数情况下,它们与每个系列中的其他算法都有类似的取舍。还有诸如Avalanche之类的较新的共识形式,不适用于这两个类别。

在这里插入图片描述

我需要哪种共识算法?

根据要构建的应用程序的类型,这些是选择哪种共识算法以及反过来构建哪种智能合约平台的指导性问题。

结局有多重要?

最终性对于某些应用程序非常重要,而对于其他应用程序则不太重要。如果您要为微小的小额付款建立一个新的支付系统,那么一笔交易被撤消并不是世界末日。同样,如果您要构建一个去中心化的社交网络,则100%保证状态更新将立即通过也不是特别重要的工作。相反,如果您要建立去中心化交易所,最终确定性对于用户体验绝对至关重要。逆转交易比不进行交易更糟糕。作为参考,比特币具有约1小时的终结性,以太坊具有约6分钟的终结性,而Tendermint Core具有1秒的终结性。

您的应用程序需要多快?

如果您要开发游戏,在每次操作之前等待15秒(或更长时间!)是否合理?由于以太坊的封锁时间,基于以太坊的吞吐量最终导致用户体验不佳。但是,转让住房证书所有权的应用程序可以很好地在以太坊上运行。使用Cosmos SDK来构建应用程序,使开发人员可以立即使用Tendermint Core,它具有较短的阻塞时间和高吞吐量,每秒最多可处理10,000个事务。您可以通过为应用程序设置最大数量的验证器来做到这一点-减少所需的通信开销并加快应用程序的速度。

您需要如何“分散”您的申请?

某些应用程序(例如游戏)可能不需要强大的抗审查性,而这是权力下放的副产品。从理论上讲,验证者是否可以在您的游戏中创建卡特尔并阻止/逆转交易以自己谋取利益,这真的重要吗?如果没关系,由于快速的交易和免费的服务,EOS等区块链可能适合您的用例。但是,像分散银行这样的一些应用程序,如自治银行,将变得更加强大。尽管以太坊被认为是分散的,但仍有支持者声称以太坊中的矿池是该平台集中化的重要方面,实际上,只有11个验证者(矿池)。建立自己的区块链而不是建立在智能合约平台上的最大好处之一是,您可以自定义对应用程序进行验证的方式。但是,构建自己的区块链很困难,因此Cosmos SDK在这方面很有用,可以轻松构建自己的区块链并自定义应用程序所需的去中心化级别。

系统停止可以吗?

如果您正在构建像去中心化乘车共享服务之类的应用程序,那么即使记账中偶尔会出现错误(例如,交易被撤消),确保服务运行24/7也可能是第一要务。Tendermint Core的特性之一是,如果网络验证者之间存在分歧,则网络将选择停止而不是进行不正确的交易。诸如去中心化交易所之类的某些应用程序不惜一切代价要求正确性-最好是让去中心化交易所在出现问题时暂停,而不是进行会被逆转的交易。

总结

这里没有唯一的“最佳”共识算法-每个算法都有其自己的权衡取舍。但是,通过了解共识流程(提案和协议)并拥有一个框架来考虑您的应用程序可能需要哪种共识算法,您应该能够在选择区块链时做出更明智的决定。当然,还有其他考虑因素,例如开发人员工具,社区等,但这是另一篇博客文章的主题。

这篇博客的精华内容总结如下:

  1. 工作量证明和权益证明不是共识算法。它们是“ Sybil抵抗机制”,可帮助您选择阻止提议者。
  2. 他的两个主要共识家族是中本共识和古典共识。这些算法用于就区块链中的区块达成协议。
  3. 每个共识算法都有特定的权衡。根据应用程序用例进行选择。
  4. 要考虑的因素:确定性,速度,分散性,活力
发布了51 篇原创文章 · 获赞 34 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/yuzhou_1shu/article/details/103190346
今日推荐