区块链和分布式算法是由许多层组成的复杂技术。很少有人详细了解底层区块链技术和分布式算法。老实说,这很好。专门化的本质意味着不同的专家专注于不同的层,最终就会将好的结果契合在一起。
然而,当涉及到协商共识的协议时,有一些半真半假的说法需要解决。理解共识是为应用程序选择正确的区块链平台和配置的先决条件。做出错误的选择可能导致效率低下和不安全的设置。
以下是一些关于区块链共识的错误陈述,它们经常被提及:
“工作量证明是一项共识协议。”
“只要没有人能控制超过50%的网络,区块链协议就是安全的。”
“区块链共识是低效和耗能的。”
“比特币首先在拜占庭式的环境中解决了共识问题。”
因此,让我们仔细研究一下共识并消除一些误解。
区块链共识的两个步骤
共识协议解决了计算机科学中的一个经典问题:许多平等的参与者如何才能就事件的全局观点达成一致?在区块链术语中,这意味着同意处理交易的特定顺序。区块链共识的目标是在所有节点上维护完全相同的历史副本。
在集中的系统中,解决这个问题很容易:中央协调器可以简单地强制执行交易顺序。在分布式系统中,这是不可能的,需要更复杂的机制。
在区块链中添加分类账的过程包括向分布式数据结构添加一个新块。这包括两个主要步骤,每个步骤都有自己的算法选择:选择块提议者和就包含所提议的块达成共识。前者涉及决定哪个节点生成下一个块,后者关注的是一个新块是否被接受到区块链数据结构中。这两个步骤同样重要,但完全不同。
块提议者选择算法
选择下一个块生成器最简单的方法就是轮流或随机选择下一个块生成器。事实上,在授权人数固定的情况下,轮流是一个非常好的选择。这通常是企业设置中使用的公共区块链的情况。
然而,这样的方案在公共区块链(任何人都可以自由参与)中不起作用,比如比特币或公共以太坊网络。就像彩票一样,参与者可以通过买取大量的彩票来提高他们的获奖机会。如果彩票是免费的或非常便宜,这可能导致系统被欺骗。这种情况称为西比尔攻击。因此,需要有一种机制来对买票行为附加经济困难。
工作量证明(PoW)就是这样一种机制。所谓的“挖掘”给参与块生成器选择算法带来了成本。参与者可以获得很多票,但是他们必须为提高计算能力而付费。因此,PoW根本不是一个共识的算法,它只是一个用于选择下一个块生成器的抗sybill工具。理解这一点很重要,因为PoW可以与许多协商共识算法结合使用。事实上,我们将在下一节中发现,比特币的共识算法非常简单,提供的是非常弱的保证。
权益证明(PoS)是选择下一个块生成器的类似工具。在这种情况下,计算能力被简单地消除,并根据计算能力依赖于经济实力的观察结果,用经济财富来衡量中彩票概率。明显的优势是减少了与PoW相关的能源消耗。
共识算法
在区块链系统中,实际的共识性算法是在被选择的块生成器提出一个块之后执行的。参与者必须就是否包括区块达成协议。比特币和类似的区块链,包括以太坊,并不真正执行任何特定的算法来达成这样的协议。相反,他们选择了一种不干涉的方法,只允许暂时的分歧,并建立一个规则,即最强的链获胜,即由网络的大多数计算能力支持的链获胜。临时分叉是可以接受的,而且确实很常见。这种形式的协商共识意见有时是Nakamoto协商共识意见,对该网络所能提供的保障具有深远的影响。
甚至在比特币和区块链系统发明之前,分布式系统的研究人员就已经开发出了许多工作方式截然不同的共识协议。BFT协商共识协议执行网络参与者之间的若干轮通信,以投票决定是否包含一个块,并达成坚定的协议。
BFT共识投票
数学上已经证明,只要不到三分之一的参与者没有表现出恶意,这种协议就能保持正常运行。BFT共识的缺点是,由于涉及的通信开销,它的伸缩性很差。因此,这种协议主要用于验证器数量有限且预先已知的情况,例如在混合区块链或授权区块生产者数量较少的区块链中。
BFT共识协议的区块链实现包括BFT和Tendermint。事实上,最近流行的适应于区块链系统的BFT共识已导致对这一经典领域的研究兴趣重新燃起。例如,Sikoba Research最近就在BFT共识性优化方面进行了大量工作。
最后的话
Nakamoto 共识与BFT共识的差异影响着终结性。终结性涉及可以在一个块上提供的保证,因此,一个块内的交易无限期地包含在链中。本质上,强终结性意味着将来不会拒绝该块,从而导致交易被撤消。
Nakamoto 只提供了概率确定性。这意味着,一个块最终成为一个块的概率随着链中添加的每个额外块的增加而增加,但从来没有达到理论上的确定性。例如,在比特币中,我们通常被建议等待6个额外的区块,等待一个区块中包含的交易被确认。这意味着,平均而言,比特币交易在大约一小时后被认为是安全的,这是因为基于实践的启发,而不是强大的协议保证。
相比之下, BFT共识协议提供了强有力的保障。一旦一个区块以三分之二的多数票被纳入,交易就可以被认为是安全的。这意味着使用这种协议的区块链可以更加敏捷,并且可以在非常短的时间内提供交易终结性。然而,如上所述,BFT共识只有在相对较少的验证器(考虑数百而不是数千)的情况下才能实际实现。
在区块链互操作性和分片解决方案中,终结性也变得非常重要。前者侧重于不同区块链之间的交互,后者指的是出于可伸缩性的原因将区块链分割成更小的块。无论哪种情况,通信都必须跨不同的链进行。在一个链上的交易已经被转移到其他链上之后,在这个链上撤消交易将非常不方便。解决这个问题的部分方法可以在所谓的终结小工具中找到,它在较弱的协商共识协议之上构建一个较强的终结层。
委托权益证明
对区块链共识的一个非常有趣且常常被误解的折衷解决方案是委托权益证明 (dPoS)。dPoS方法使用一个代币作为投票机制,以选择数量较少且固定的验证器来执行协商共识协议。
这意味着可以简化委托之间的块生成器选择,并且较小的验证器集可以执行非常有效的协商共识协议。这意味着,dPoS可以结合公共区块链和BFT共识的优势,为开放网络带来几乎即时的终结性,所有参与者都可以在一定程度上参与其中。
dPoS区块链中的安全性是当前研究的主题,并且与治理密切相关。从本质上讲,挑战在于确保代表的投票是公平的,并建立防止cartel机制的形成。值得注意的是,dPoS应该被看作是分散化和性能之间的可配置平衡。在极端情况下,EOS将验证器的数量减少到21个节点,从而提供一个非常快的平台。其他系统,例如最近推出的Cosmos hub,非常强调安全性,并试图实现真正的分散化。
当然,对于dpoS来说,cartel的形成和集中是真正的风险。另一方面,由少数几个矿池(位于电力便宜的地方)主导的PoW能被认为是分散的吗?
结论
共识并不像表面上那么简单。与计算机科学中的任何东西一样,必须进行权衡,且目前还没有一个理想的解决方案。虽然不可能让每个人都理解不同共识协议的所有技术细节,但是在为给定的应用程序选择区块链平台之前,理解共识协议的基础知识是很重要的。因为关于这个问题已经发表了大量的错误信息。
*文章仅代表作者个人观点
本文转自网友
领取专属 10元无门槛券
私享最新 技术干货