区块链共识的确定性

今天,我刷信用卡买了一杯好喝的抹茶拿铁(这要感谢在伯克利的 Asha)。刷卡后,作为对我支付金额的交换,店老板热情地把茶递给我。因为老板已经确认了交易完成并且之后这笔交易不会被撤销,他一定能够获得我支付的美元金额。 换句话说,交易已经确定(finalized)。 [作者编辑:感谢 Lawson Baker 和 Ari Paul 指出信用卡最终确定交易背后日益增加的复杂性。(请看我在右边标记出来的 Lawson 的回应)。而现金交易则实现了对财产的即时确定性。]

在区块链设置中,确定性是保证了所有有效区块一旦被提交到区块链上就不会被撤销。当用户进行交易时,他们也希望在转账完成后能够保证转账操作不能随意更改或撤销。因此,在设计区块链共识协议时,确定性变得至关重要。目前基于中本聪共识的系统中,51% 攻击和自私挖矿行为就是因为允许有撤销区块的可能,才会威胁到系统的健全(例如,如果作恶者累积了 51% 的挖矿能力,他们就可以进行双花攻击)。这种协议提供了概率性确定,而其他一些协议则实现了绝对性确定。

确定性的类型

概率性确定(Probabilistic Finality) 是基于区块链的协议提出的确定性类型(例如,比特币的中本聪共识)。在概率性确定中,包含交易的区块在链上埋得越深,该交易被撤销的可能性越低。因为某一区块后面的区块越多,包含该区块的(分叉)链就越可能是最长的链。 这就是为什么建议等到包含交易的区块在比特币区块链的深度为 6 个区块时才能确认交易完成(大约需要 1 小时),因为此时撤销交易的可能性非常低。

绝对性确定(Absolute Finality) 是基于拜占庭容错(PBFT)的协议(例如 Tendermint)提出的确定性类型。在绝对性确定中,一旦交易被包含在区块中并添加到区块链上,该交易就会被立即视为最终确定。在这种情况下,一个验证者会先提出一个区块,而这个区块必须获得委员会中足够多验证者的认可才能提交到区块链上。

还有一个概念叫经济确定性(Economic Finality),也就是说撤销区块所需的资金成本非常高。在使用罚没机制的权益证明基础系统(例如 Casper FFG,Tendermint)中,如果权益持有者在两个(校注:相同高度的)区块上都签了名,那么他们所有的权益都会被没收,这就是损害确定性的昂贵代价。例如,一个有 100 位权益持有者的网络,每位权益持有者持有价值 100 万美元的权益,那么整个网络一共有价值 1 亿美元的权益。 如果有两个区块出现在区块链的同一高度,命名为 B 和 B’,此时 B 获得了 66% 的权益持有者的投票(6600万美元),B’ 也获得了 66% 的投票(6600万美元),那么 B 和 B’ 的交集(至少有 33% 恶意的权益持有者)将失去他们所有的权益(至少 3300 万美元)。

CAP 定理与确定性

看起来似乎绝对性确定比概率性确定更可行,但仍有一些基本权衡表明选择支持概率性确定的区块链更好。考虑如何在概率性确定与拜占庭容错确定性之间取得适当的平衡时,Eric Brewer 的 CAP 定理就发挥了作用。CAP 定理指出,在网络分区的情况下,分布式系统只能满足一致性或可用性。 满足一致性的系统会停止运行,不让错误的交易通过。而满足可用性的系统即使允许错误的交易通过也会继续运行 。一致性的系统具备拜占庭容错确定性(校注:即绝对性确定),而可用性的系统具备概率性确定。

在支付的场景中,用户通常会选择概率性确定的区块链所提供的可用性(这就是为什么许多基于 DAG 的协议都把重点放在支持支付上,因为这些协议都是支持可用性而非一致性),然而,许多区块链平台提供的不仅仅是支付,还支持以智能合约为基础的去中心化应用程序(DApp)。不同的 DApp 在确定性方面可能有不同的偏好:那些需要可行性的 DApp,哪怕交易信息不准确也总会让交易通过,更偏好概率性确定链;而倾向于一致性的 DApp,会让整个应用程序停止运行以阻止不正确的交易通过,偏好绝对性确定链。因此,确定性从根本上影响了用户体验。

权益证明共识中的确定性

替代共识协议的元分析中,我们考量了一些主要的 PoS(权益证明)平台对确定性的保证,包括 Tendermint,Thunderella,Algorand,Dfinity,Ouroboros Genesis,Casper FFG 和 Casper CBC。 在这里,我们将简要概述这些平台如何实现确定性,但决定采用哪种协议更重要的是整体考察,而不是仅仅考虑一个参数(这里指的是对确定性的保障)。

Tendermint:Tendermint 实现了绝对性确定。任何得到 ⅔ 或以上的预投票和预提交的区块都将被最终确定,并且此过程将无限期地继续。除非 ⅓ 或以上的验证者不响应,导致网络停止运行。因此,Tendermint 更偏好一致性而非可用性。另外,当权益证明的惩罚规则应用在 Tendermint 时,Tendermint 协议还能实现经济确定性。

Thunderella:Thunderella 的快速路径提供了绝对性确定。任何获得公证的最大交易序列都被视为经过完全确认的输出。如果 3/4 的快速路径委员会是诚实且在线的,同时提议者也是诚实的,那么有效交易就能被即时确认。然而,快速路径确认与一般的确定性不同,它是乐观性确定。 一旦交易记录在了基础区块链上,该交易就被完全确定,这种情况既可以是基于链的,也可以是基于拜占庭容错的。但当快速路径发生问题时,Thunderella 会回退到基础区块链,因此 Thunderella 是优先考虑可用性。

Algorand:Algorand 实现了概率性确定。只要攻击者控制的协议货币价值低于总价值的 1/3,Algorand 就可以保证分叉几乎是不可能的,从而允许协议以强同步方式运行,使得每个区块最终保持一致。而在弱同步中,Algorand 可能会发生分叉,但会使用 BA* 来决定选择哪个分叉链。因此,当协议恢复强同步时,Algorand 中的交易最后也能被最终确定。Algorand 优先考虑一致性而非可用性,因为它宁愿产生空白区块,也不会牺牲一致性。

Dfinity:Dfinity 实现了概率性确定,其确定性的概率是随着链上区块权重的增加而增加。假设每一轮 r 的周期里我们会拒绝接收更多已公证的区块。在此周期内,我们可以最终确定第 r 轮,因为我们知道第 r 轮已公证的区块包含了第 r 轮之前的所有链上的交易。第 r 轮中,只要操作无误就能保证近乎即时的确定性,经过两次确认加上网络传输延迟,对观察者来说在第 r 轮里任何包含在区块中的交易都是最终确定的。Dfinity 优先考虑一致性,如果网络分区形成大小几乎相同的两半,它会自动令随机信标(random beacon)暂停工作,不允许任何一半网络继续运行。

Ouroboros Genesis:Genesis 协议可以根据其如何选取区块链的规则实现概率性确定。具体规则是对于短距离攻击(最多 k 个区块,其中 k 是安全参数),则采用最长链原则;而对于长程攻击(超过 k 个区块),则采用充裕法则(plenitude rule),也就是说在当前链发生分叉后即时查看时间段,然后选择密度较高的链。

Casper FFG:Casper FFG 的目标是为基于链的系统提供绝对/经济上的确定性,委员会按权益加权获得 ⅔ 大多数投票后签署一个区块,便能达到确定性。Casper FFG 的这种构建方式,即使攻击者控制了底层区块链的提案机制,出现冲突的检查点也永远无法被最终确定。但是,FFG 提供了安全性并且提案机制提供了活跃度,因此攻击者可以通过延迟达成共识来阻止 Casper 确定未来的检查点。FFG 是优先考虑一致性的,因为它不允许在没有 ⅔ 验证者同意的情况下对检查点进行最终确定,否则确定无效。此外,FFG 还可以通过罚没机制来实现经济确定性。

Casper TFG:TFG 通过具有不同容错阈值的验证者来实现绝对性确定。也就是说,协议是异步安全和拜占庭容错的,允许验证者具有不同的容错阈值。

撤销区块可能导致数百万美元的损失,或者影响到去中心化应用的基本运行。因此,对于构建强健的区块链平台以及如何选择开发应用程序的平台,确定性起着至关重要的作用。

致谢:特别感谢 Zubin Koticha 和 Aparna Krishnan,他们的讨论与反馈为这篇文章作出了巨大贡献


原文链接: https://medium.com/mechanism-labs/finality-in-blockchain-consensus-d1f83c120a9a
作者: Alexis Gauba
翻译&校对: 杨哲 & Elisa

本文转自以太坊爱好者。原文链接:https://ethfans.org/posts/finality-in-blockchain-consensus

为您推荐

发表评论