区块链100讲: 区块链共识的肯定性

image

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

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

1

肯定性的类型

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

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

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

2

CAP定理和肯定性

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

image

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

3

权益证实共识中的肯定性

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

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

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

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,他们的讨论与反馈为这篇文章做出了巨大贡献。

内容来源:公众号-以太坊爱好者

原文连接:

medium.com/mechanism-l…

做者: Alexis Gauba

翻译&校对: 杨哲 & Elisa

课程推荐

image
相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息