从比特币到波卡:比特币如何解决双重支付和货币发行问题?为了更好地理解为什么我们需要在区块链技术中引入共识算法,我们需要了解比特币区块链技术解决了哪些问题?最关键的问题有两个:双重支付和集中货币发行。本文首先介绍了比特币解决上述问题的方法,然后讨论了容错性和最终确定性(最终确定性的缩写)等共识的一些微妙之处,最后以一些项目为例,讨论了未来的方向。
比特币如何解决双重支付和货币发行问题?
要理解为什么容错性对区块链如此重要,有必要解释一下比特币解决的两个问题(双花和中心化货币发行)。换句话说,为了防止任意超发,比特币以一种可预测、透明且去中心化的方式发行货币。管理货币转账和发行过程的机制的就是共识算法,能够确保整个交易历史的一致性(共识)。
共识算法在区块链技术时代并不是新玩意儿,强调比特币为什么具有创新性是很重要的:因为在公有的无须许可的网络中,即使有潜在的恶意行为者出现,比特币也可以达成共识。
PoW 共识算法
众所周知,比特币 PoW 区块链节点通过获得创建新区块产生的新货币奖励来维护整个网络的安全。该奖励提供了一种激励机制,使矿主在尽快创建新区块的同时始终诚实。
获胜的关键是创建一个新的区块需要解决一个独特而困难的数学问题。它的数学问题的难度从根本上限制了新区块的速度,答案的唯一性可以使网络识别获胜节点(通过它们的地址)。虽然恶意行为不会受到特别的惩罚,但没有动机去做,因为不诚实的行为有机会成本。
一个问题是节点之间的通信不是即时的,所以网络中不同地理区域的节点可能会收到自称解决问题的不同区块(网络分区 / 分叉)。两个不同的节点 (矿主)可能会合法解决问题,但由于整个网络的不同区域之间没有即时通信,网络中的不同区域会选择基于不同的获胜区块来构建区块链(临时)。这会导致临时分叉,但由于每个分支都添加了新的区块,最终总会出现较长的分支。
选择最长的区块分支实际上是比特币为实现共识而制定的规则,称为最长链规则。短分支上的区块将被丢弃,所有不在主分支上的交易最终将添加到主分支上。请注意,非法交易(例如,试图双重支付的交易)不会包含在构成最长链的区块中。包含此类交易的区块也将被丢弃,因为任何「货币」只能花一次。这里需要注意的是,大部分节点都是诚实的(至少 51%),这些节点不会试图破坏协议。
理论上,新的最长链可以通过具有更强的挖掘计算能力来创建。但这是为了接近「链的头部」对于区块(最新的区块)来说,风险最大。整个链条上的区块越深,逆转的可能性就越小。
这说明 PoW 链上的块总是可能被逆转,因此这些块中的交易可能不会发生。在恶意创建的链上,如上所述,交易不会保存在新块中。
比特币白皮书建议,等待 6 块的时间足以确保交易不会被拒绝,因为此时丢弃块的可能性很小。我们可以从这里认识「最终确定性」(以下简称最终性):不可逆转的块可以称为「最终确定的」。比特币等 PoW 区块链链中,最终性并不完美,因为区块总有可能被逆转。
上述说明,比特币具有很强的抗故障鲁棒性,可以在公共和未经许可的网络中分散发行货币。通过探索确保最终性的方法,我们可以确保更高水平的安全性。这一观点将在后面的容错部分进行讨论。
PoS 区块链
还应注意的是,一些权益证明(PoS) 区块链的似于比特币。大多数 PoS 链用选举产生的块代替挖掘。PoW 链使获胜矿主创建不同的区块,PoS 链的新区块是随机选择的节点(「领导者」)来创建。
被选中的概率(投机交易所新手创建新区块)取决于权益的数量。这个概念是,你持有的货币越多,你就越希望区块链成功,所以这个节点创建下一个区块的概率就越大。
NXT 是最早的 PoS 链之一,利用这种随机(选举)领导者创建新区块的方法。NXT 的共识机制与比特币相同:创建的新区块将添加到最长链中。任何分叉问题都可以通过遵守这一规则来解决,节点继续在最长链上创建块。
拜占庭协议和容错性
当参与者违反协议时,(网络)就会出现错误。对于区块链,我们希望该协议足够安全,能够抵抗任何故障,因为恶意行为者可能试图利用该协议的弱点。任何能够抵抗任何故障的协议也足以安全地防止随机故障和恶意行为者。
即使少数参与者行为异常,拜占庭也容错(BFT)协议也可以正常工作。行为不当的节点可能是意外故障或恶意行为。当然,假设大多数参与者遵守协议。这种观点在一篇文章中被称为「拜占庭将军问题」研究论文中提到了这一点。这个问题讨论了多个参与者如何就一个简单的信息达成协议。(蓝狐笔记:拜占庭问题可参考蓝狐笔记前的文章阅读拜占庭容错》)
当拜占庭协议达成共识时,协议的结果必须正确。换句话说,协议的结果可以被视为正确的确定性,而不是概率。当应用于区块链时,拜占庭算法确保了交易的最终性。这意味着一旦在块中达成协议,块将最终确定,交易将无法逆转。
显然,这与比特币和其他 PoW 链不同。如上所述,这些链只能达到一定概率的确定性。比特币的共识类型通常被称为「中本聪共识」,很容易看出为什么它与拜占庭的错误混淆,因为它们都是错误的,但只有后者才能确保最终的确定性。更深层次的混淆来自于比特币的块创建和共识算法的高度重叠。但事实并非如此。
以太坊未来路线的建议之一是继续像现在这样由矿主生产,但它将允许一些节点作为验证人提供最终确定性,以加强共识。验证人在创建的块上投票。通过投票给新手如何投票,他们认为这个块是正确的。一旦三分之二的验证人投票,该块可以被认为是最终确定的。采矿后的拜占庭共识机制被称为「最终确定性组件」。
发展探索
大多数正在开发的新项目将区块创建与共识分开。未来的一些区块链也将采用混合共识算法。这部分将介绍一些正在探索的未来方向。
Cosmos (ATOM)
Cosmos 的区块创建也是由随机选择的领导者完成的,但 Cosmos 共识中没有最长链规则。因此,它被称为 Tendermint 拜占庭算法。这意味着每个块都可以确保最终确定性。此外,如果验证人不能就单个块达成共识,则应遵循 Cosmos 的设计,Cosmos 将会暂时停下来,以防止分叉。
Polkadot 波卡(DOT)
Polkadot 采用混合共识算法。该块将由随机领导创建,并将下一个块添加到最长链中。Polkadot 也将采用拜占庭协议,但不是每轮投票只产生一个区块,而是在一次投票中最终确定多个区块。
混合共识机制的优点之一是,区块链可以在最长链上连续生产区块,最终实现拜占庭的最终确定性,而不影响链活动(即链永远不会停止)。
目前在 Polkadot 目前的测试网络 PoC-2 (又称 Krumme Lanke) 其共识与 相似Cosmos。该块由随机选择的验证者节点生成,并在拜占庭协议最终确定后生产下一个块。
Cardano (ADA)
简单来说,Cardano 的共识算法类似于比特币(最长链规则)。NXT 是一样的,块的生产是由随机选择的领导者完成的。Cardano
该团队已尽最大努力解决随机选择领导者时的一些问题。他们确保选择领导者的随机性与当前比特币的方式一致。
然而,比特币没有领导者,该区块由随机矿主生产。采矿问题的收集将分布在哈希计算能力最大的矿主附近。
Ethereum 以太坊
以太坊还试图通过添加一个步骤来加强共识算法,以确保块离开后的最终确定性。块仍然通过 PoW 生成,但会有一组验证者节点对已出区块的正确性进行投票。这就是所谓的「最终确定性组件」。也就是说,该方法结合了最长链规则和拜占庭容错算法:即两种共识算法的混合。
最近似乎有迹象表明以太坊可能使用权益证明(PoS) 取代 PoW,使以太坊与正在开发的新链保持一致。区块将由随机领导创建,然后由最终确定组件最终确定。
优化方法
区块链的「旧时代」主要围绕使用 PoW 挖掘和使用最长链规则来增强网络共识。后来,为了更节能,我开始尝试使用 PoS 取代采矿。PoS 链仍然使用最长链规则;然而,近年来的趋势是将拜占庭容错协议也纳入共识机制:而不使用最长链规则(Cosmos),或者让两者共存(以太坊和 Polkadot)。