区块链共识的确定性

从CAP定理看Finality并概览不同PoS系统的取舍。今天,我刷信用卡买了一杯好喝的抹茶拿铁(这要感谢在伯克利的 Asha)。刷卡后,作为对我支付金额的交换,店老板热情地把茶递给我。因为老板已经确认了交易完成并且之后这笔交易不会被撤销,他一定能够

从CAP定理看Finality并概览不同PoS系统的取舍。

今天,我刷信用卡买了一杯好喝的抹茶拿铁(这要感谢在伯克利的 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 通过具有不同容错阈值的验证者来实现绝对性确定。也就是说,协议是异步安全和拜占庭容错的,允许验证者具有不同的容错阈值。

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

声明:本文来自金色财经平台用户投稿,观点仅代表作者本人,不代表【金色财经-www.jsgu.cn】立场,文章内容仅供参考,如若转载请标注文章来源:【当前页面链接】

区块链相关

区块链媒体相关

区块链技术相关

挖矿相关

比特币相关