从比特币到 Polkadot

1

本文将探讨区块链网络中对容错性共识算法的需求以及在不远的将来的发展方向。

在理解为什么我们要在区块链技术中引入共识算法之前,我们需要了解区块链都解决了哪些问题。从根本上来说,我认为有两个关键问题:

  1. 双花(Double Spending,同一笔钱花两次),以及
  2. 货币制造的中心化

这篇文章将分为三个部分。第一部分将简要介绍比特币是如何解决上述两个问题的。第二部分将讨论共识的一些微妙之处,例如容错性和最终确定性。第三部分将讨论几个项目以及未来的发展方向。

比特币都解决了什么问题?

要理解为什么容错性对区块链如此重要,有必要解释一下比特币解决的两个问题 (双重支付和货币制造的中心化)。

换句话说,比特币为了防止被滥发,以一种可预测、透明且去中心化的方式制造货币,通过确保整个交易历史的一致 (共识),用共识算法来管理发送和制造货币的机制。

在区块链技术时代,共识算法并不新鲜,那么为什么比特币的创新度如此之高呢: 因为在公有的无许可网络中,即使可能有恶意行为者出现,比特币也可以达成共识

2

比特币的共识算法

众所周知,像比特币这种工作量证明 (PoW) 的区块链,节点通过尝试赢得创建新区块所产生的新币奖励,来加强网络安全。该奖励提供了一种激励机制,使我们可以在尽可能快地创造新区块的同时始终表现公正

获胜的关键在于创造新区块需要解出一个唯一且计算困难的数学难题。该题的难度从根本上限制了新区块产生的速度,且答案的唯一性可以使网络识别获胜节点 (识别他们的地址)。恶意行为虽然不会受到惩罚,但是人们会因不诚实行为所带来的机会成本而不去作恶

存在一个问题,节点之间的通信不是即时的,因此处于网络中不同地理区域的节点可能会收到自称已解出难题的不同区块 (网络分割/分叉)。两个不同的节点 (矿工) 有可能碰巧都合法地找到难题的解,但是由于不是全网即时通信,网络中的不同区域就会选择基于不同的获胜区块来(临时) 构建区块链。这会导致临时分叉,但由于总有新区块被添加到每个分支上,最终总会出现一个较长的分支

以最长的区块分支为标准实际上是比特币为实现共识而制定的规则,该规则被称为最长链规则。

较短分支上的区块则会被丢弃,并且所有不在主分支上的交易最终都会被添加到主分支的区块中。请注意,非法交易 (例如那些试图进行双重支付的交易) 不会被包含在构成最长链的区块中。包含此类交易的区块也将被丢弃,因为任何“货币”都只能被花费一次。这里需要注意的是,大多数节点都是诚实的 (至少51%),并且这些节点不会试图破坏协议。

从理论上讲,通过拥有更强的挖矿算力可以创造一条新的最长链。这对于靠近“链头部”的区块 (最新区块) 来说,风险是最大的。区块在整个链上的深度越深,它被逆转的可能性就越小。

这说明,PoW 链上的区块总是会有被逆转的可能,那么这些区块中的交易也就可能都不会发生。在一条被恶意创造的链中,不应当假设交易会被保存进新区块中,原因如上所述。

比特币白皮书中建议,等待 6 个区块的时间便足以确保交易不会被拒绝,因为在那时,区块被丢弃的可能性是非常小的。我们可以从这里树立起对“最终确定性”的认识:无法被逆转的区块可以被称作是”最终确定的“。在比特币及其他 PoW 区块链中,最终确定性并不完美,因为区块有被逆转的可能。

权益证明区块链

还应该注意的是,一些权益证明 (PoS) 区块链的运行方式与比特币类似。大多数 PoS 链都用区块选举代替挖矿。类似 PoW 中让获胜矿工创建下个区块,这类 PoS 则由随机选择的节点 (“领袖”) 生产区块。

被选中成为”领袖“的概率是由权益数量决定的。这个理念是,币的持有量越多,说明更希望区块链取得成功,因此这样的节点将获得更大可能性来生产下个区块。

NXT 是最早的 PoS 链之一,它使用这种随机领袖的方法生产区块。NXT 的共识与比特币相同:生产的新区块都会被添加到最长链上。通过遵守这个规则,任何分叉问题都会被解决,节点则继续在最长链上生产区块。

容错性

当参与者执行违反协议的操作时,就会出现错误。对区块链来说,因为可能会有恶意行为者试图利用协议的弱点,我们希望协议可以抵御任意故障。任何可抵御任意故障的协议同样也可以防范随机故障及恶意行为者。

即使有一小部分参与者的行为表现异常,拜占庭容错 (BFT) 协议也能正常工作。行为不当的节点可能发生了意外故障或者是恶意的。当然,这里假设大多数参与者都在正确遵守协议。这种观点是在一篇名为“拜占庭将军问题”的研究论文中提到的。该问题讨论的是多个参与者如何就一个简单的信息达成一致的问题。

当在拜占庭协议中达成共识时,商定好的结果一定是正确的。也就是说,商定的结果可以被看作是确定性的正确,而不是概率性的。当用于区块链时,拜占庭算法保证了交易的最终确定性。这意味着一旦在区块中达成协议,区块就会变得最终确定,其中的交易也不会被逆转。

很明显,这与比特币和其他 PoW 链都不同。如上所述,那些链仅能达成概率确定性。比特币的共识类型通常被称为“中本聪共识”,很容易看出为什么它可以和拜占庭相混淆,因为二者都是可容错的,但只有后者才能保证最终确定性。进一步的混淆来自于比特币的区块生产与共识算法高度重叠的事实。但事实上不一定非得这样处理

以太坊的未来路线提案之一就是像现在一样继续由矿工生产区块,但会让一些节点充当验证者来提供最终确定性,从而加强共识。验证者在已出的区块上进行投票。给某个区块投票即表示他们认为该区块是正确的。一旦有三分之二的验证者已投票,那么这个区块就可以被认为是最终确定的了。这种在挖矿后进行的拜占庭共识机制被称为“最终确定性组件(Finality Gadget)”。

未来的发展方向

大多数正在开发的新项目都将区块生产与共识相分离。一些将要出现的区块链也将使用混合共识算法。这一部分将介绍一些正在探索的未来方向。

Cosmos

Cosmos 的区块生产也是由随机选择的领袖完成,但是 Cosmos 没有将最长链规则用于共识。而它采用了被称为 Tendermint 的拜占庭算法。这意味着每个区块都能保证最终确定性。此外,如果验证者不能就单个区块达成共识,按照设计,Cosmos 会为了防止分叉而停机。

Polkadot

Polkadot 的方案是采用混合共识算法。区块将由随机领袖生产,该领袖会将下个区块添加到最长链上。Polkadot 还将采用拜占庭协议,但不是每轮投票只产生一个区块,而是可以在一次投票中最终确定多个区块。

使用混合共识机制的一个好处是区块链可以以最长链为标准连续生产区块,同时在不影响链活性(即链永远不会停止)的情况下,最终实现拜占庭最终确定性。

目前在 Polkadot 当前的测试网络 PoC-2 (也叫做 Krumme Lanke) 中,其共识类似于 Cosmos。区块由随机选择的验证者节点生成,在通过拜占庭协议将其最终确定化之后,再生产下个区块。

Cardano

简单来说,Cardano 的共识算法类似于比特币(最长链规则)。与NXT 相同,区块的生产由随机选择的领袖完成。Cardano 背后的团队已竭尽全力解决了一些在随机选择领袖时出现的问题。他们已经确保随机选择领袖的规则与目前比特币出块方式一致。

然而比特币是没有领袖的,区块由随机矿工生产。挖矿难题的解集将分布在这些具有最大哈希算力的矿工附近。

以太坊

以太坊曾经也尝试通过加入一个在出块后保证最终确定性的步骤来寻求加强共识算法的方式。

区块仍旧通过 PoW 生成,但是会有一组验证者节点对已出区块的正确性进行投票。这就是所谓的“最终确定性组件”。也就是说,该方法结合了最长链规则和拜占庭容错算法:即两种共识算法的混合。

最近似乎有迹象表明,以太坊将可能使用权益证明 (PoS) 取代 PoW,使以太坊与正在开发的新链保持一致。区块将由一个随机领袖生产,而后由最终确定化组件使其最终化。

改进区块链的方法不止一种

区块链的“旧”时代主要围绕使用 PoW 挖矿及使用最长链规则,来增强网络共识。后来为了用更节能的方式取代挖矿,开始尝试使用 PoS。过去的 PoS 链仍然依赖于最长链规则;然而,近年来的趋势是将拜占庭容错协议也纳入共识机制:而不使用最长链规则 (Cosmos) 或是两者共存 (以太坊和 Polkadot)。

在下一篇文章中,我们将更加深入地探讨 Polkadot 的共识算法是如何工作的。他们还制定了一份标准规范,但是还未正式发布。


Elisa 评:总结一下文章内容,比特币的中本聪共识理论上可以达到 49% 的容错,高于拜占庭容错的 32%,但中本聪共识的稳健度不如拜占庭容错,因为理论上若有更大的算力加入就可以推翻先前的共识(Economic Finality),而拜占庭容错机制一旦达成共识就是确定性的(Deterministic Finality)。且两者的运行成本有比较大的区别。

阿剑评:文章没有谈到一个还有点重要的小细节。拜占庭容错协议在跑起来之前是需要预先确定参与者的(要不然怎么确定达到了 身份/权益/… 的 2/3 呢),现在开发相关协议的难点在于参与者如何选择。而且相应地也会跟激励问题联系在一起。


链接: https://medium.com/polkadot-network/consensus-and-finality-in-blockchains-21b1f634fd00

猜你喜欢

转载自blog.csdn.net/shangsongwww/article/details/90179083
今日推荐