波卡的共识是什么?

本文来自波卡百科(Polkadot Wiki)的【基础知识】部分。

共识是对一种共同的状态达成一致的方法。为了使区块链的状态继续创建并向前推进,网络中的所有节点都必须一致并达成共识。这是去中心化网络中的节点能够保持彼此同步的方式。如果一个去中心化的区块链中节点没有共识,就无法确保一个节点相信的真实状态被其他节点所共享。共识的目的是在参与者都有自己“主观观点”的网络中,提供关于状态的“客观观点”。它是这些节点进行通信并达成一致的过程,并且能够生产出新的块。

现在工作量证明(PoW)和权益证明(PoS)已经被用于表示区块链机制的一种简写,但这并不能说明全部情况。PoW 是一种对区块生产者达成一致的方法,也是完全的中本聪共识(Nakamoto Consensus)的一部分,该共识还包括链选择算法(比特币中的最长链机制)。类似地,PoS 是一组用于选择验证人节点的规则,它并不是特指一个链的选择规则,或者一个链如何达到最终性(finality)。通常在节点之间,PoS 算法与拜占庭协议算法是互相结合的。例如,Tendermint 是一个实用的拜占庭容错算法,它使用 PoS 作为其验证人节点的选择方法。

尽管在达成去中心化共识方面简单而有效,但使用中本聪共识的工作量证明消耗了海量资源,而且还没有经济性或可证明的最终性,而且缺乏有效的措施来抵制垄断联盟。

运行 PoW 的纯中本聪共识区块链只能实现概率最终性的概念,然后去达成最终的共识。概率最终性是指在网络和参与者的某些假设下,如果我们看到创建在给定区块上的几个区块,就可以估计该区块终结的概率。最终的共识意味着,在未来的某个时刻,所有节点都将同意一组数据的真实性。这一最终共识可能需要很长时间,也无法提前确定需要多长时间。然而,诸如 GRANDPA 或 Ethereum 的 Casper FFG 这样的最终性工具的设计是为了对区块的最终性提供更有力和更快的保证,特别是,在拜占庭协议的某些过程发生后,它们永远无法恢复。不可逆共识的概念就被称为可证明的最终性。

在 GRANDPA 文档中,它被这样表述:

如果协议中的 oracle A 在一段未指明的时间后向所有参与者返回相同的值,那么我们称它是最终一致的。

混合共识

当我们谈到 Polkadot 的共识协议时,大家经常看到两个缩略词,GRANDPA 和 BABE。我们同时提到了这两个词是因为 Polkadot 使用的是混合共识。混合共识可以将最终性工具从区块生产机制中分离出来。

在美上市区块链中概股普遍收跌:今日美股收盘,在美上市区块链中概股普遍收跌。嘉楠科技收跌2.48%,人人网收跌3.59%,中网载线收涨2.61%,寺库收跌2.36%,迅雷收跌3.48%,猎豹移动收跌2.67%,兰亭集势收跌1.14%。[2020/8/22]

这是一种在 Polkadot 中获得概率最终性(总是可以产生新区块的能力)和可证明最终性(在没有逆转机会的规范链上具有普遍一致性)好处的方法。它还避免了每种机制的缺点:概率最终性中不知不觉地遵循错误分叉的可能,以及可证明最终性中“暂停”(无法产生新的块)的问题。通过结合这两种机制,Polkadot 可以快速地生成区块,而较慢的最终性机制则可以在单独的进程中运行以完成区块,而不必承担交易处理较慢或暂停的风险。

混合共识在过去也曾被提起过。值得注意的是,在以太坊改进建议 EIP 1011 中,曾提议将混合共识作为以太坊向的 PoS 过渡的一步(现已失效),该建议指定了 Casper FFG。

BABE(Blind Assignment for Blockchain Extension)是在验证节点之间运行并确定新块生产者的区块生成机制。BABE 作为一种算法可以与 Ouroboros Praos 相比较,在链选择规则和 slot(验证人插槽)时间调整方面有一些关键的区别。BABE 根据 stake 和使用 Polkadot 随机循环机制将区块生产的 slot 分配给验证人。

Polkadot 中的验证人将参与每个 slot 的抽签,通过这个抽签告诉验证人是否是该 slot 的区块生成候选人。Slot 是不连续的时间单位,通常为 6 秒。由于这种随机机制,多个验证人可能是同一个 slot 的候选者。其他时候,一个 slot 可能是空的,从而导致区块时间不一致。

一个 slot 有多个验证人

当在一个给定 slot 中有多个验证人是区块生成候选者时,所有验证人都要生成一个区块并将其广播到网络中。此时这是一场比赛。区块最先到达大部分网络的验证人会获胜。根据网络拓扑和延迟,这两个链将继续生产区块,直到最终确定启动并切断分叉。请参阅下面的“分叉选择”了解其工作原理。

Slot 中没有验证人

当随机抽签滚到足够低的位置,没有验证人获得区块生产的资格时,一个 slot 可能没有区块。我们通过在后台运行二级循环式验证人选择算法来避免这种情况。通过该算法选择生成块的验证人总是可以生成区块,但如果同一 slot 也从 VRF 选择的验证人生成主区块,则忽略这些副区块。因此,一个 slot 可以有一个主区块或一个副区块,并且不会跳过任何 slot 。

VRF:https://wiki.polkadot.network/docs/en/learn-randomness

有关 BABE 的更多细节,请参阅研究草案文档。

https://research.web3.foundation/en/latest/polkadot/BABE/Babe.html

GRANDPA: 最终性工具

GRANDPA (GHOST-based Recursive ANcestor Deriving Prefix Agreement) 是为 Polkadot 中继链实现的最终性小工具。

它在一个部分同步的网络模型中工作,只要 2/3 的节点是诚实的,并且能够在异步设置中处理 1/5 的拜占庭节点。

一个显著的区别是,GRANDPA 在链上而不是区块上达成协议,大大加快了最终确定过程,即使在长期的网络分区或其他网络故障之后也是如此。

换句话说,只要超过 2/3 的验证人证明一个包含某个块的链,所有指向该块的块都将立即完成。

协议

有关协议的完整说明,请参阅论文的标题 3 部分。

https://github.com/w3f/consensus/blob/master/pdf/grandpa.pdf

实施

Rust 是 Substrate 框架的一部分。

https://github.com/paritytech/substrate/blob/master/frame/grandpa/src/lib.rs

有关更多详细信息,请参阅 W3F 研究页上的 GRANDPA。

https://research.web3.foundation/en/latest/polkadot/GRANDPA.html

分叉选择

带着 BABE 和 GRANDPA 混合机制,波卡的分叉选择变得清晰起来。BABE 一定要建立在 GRANDPA 最终确定的链上。当在最终确定之后有分叉时,BABE 通过构建具有最主要区块的链来提供概率最终性。

在上面的图像中,黑色块是已终结的。一个是主区块,两个是副区块。即使最上面的链是最新终结块上最长的链,但它不合格,因为它在评估时获得首选的次数比下面那条少。

中本聪共识

中本聪共识由最长链规则组成,使用工作量证明作为其防止女巫攻击和领导人选举的机制。

中本聪共识只给了我们概率最终性。概率最终性表明,过去的某个区块的安全程度,仅取决于它拥有的确认数量,或在该区块上构建的区块数量。随着工作量证明链中构建在某特定区块上的区块越来越多,这条链也会花费更多计算资源。然而,包含了该区块的链不一定总是被认可的链,因为某位具有无限资源的参与者可能构建竞争链,并花费足够的计算资源来创建不包含特定块的链。在这种情况下,比特币和其他 PoW 链使用的最长链规则将转移到这条新的链,让新链成为主链。

PBFT / Tendermint 共识

请参阅与 Cosmos 对比文章中的相关内容。

https://wiki.polkadot.network/docs/en/learn-comparisons-cosmos#consensus

Casper FFG

GRANDPA 和 Casper FFG(友好型最终性工具 Friendly Finality Gadget)的两个主要区别是:

在 GRANDPA 中,不同的投票者可以同时为不同高度的块投票

GRANDPA 只依赖最终的块来影响底层块生产机制的分叉选择规则

Casper CBC

Coming soon!

资源

GRANDPA 论文:GRANDP 最终性工具的学术描述。包含算法的形式化证明。

https://github.com/w3f/consensus/blob/master/pdf/grandpa.pdf

Rust 实现:一个参考文档和附带的 Substrate 模块。

https://github.com/paritytech/finality-grandpa

原文:https://wiki.polkadot.network/docs/en/learn-consensus

翻译:PolkaWorld

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

区块分享

狗狗币6.4早间行情:夜间维持窄幅震荡短期走势依然未明朗

夜间行情依然处于窄幅震荡中,和昨日白天相比唯一明显的变化在于,震荡区间上移了一个小台阶,在9500上方运行的时间更多,也侧面证明了9300-9400区间支撑的有效性。日线级别来看,止跌于10日均线之上,可以看出,前日庄家的砸盘虽然从高位下跌近1000点美元,而对盘面的整体走势未产生结构性的变化,大趋势还是以多头格局为主。

XRP金色观察 | 交易所BTC余额下跌反映了怎样的市场情绪?

自3月份黑色星期四以来,交易所持有的比特币数量一直在下降而以太坊持有量却在上升。 在三月份,交易所持有的比特币数量减少了3%,而交易所持有的以太坊数量却增加了5%。此外,自3.12到5月底,数据分析显示,加密货币交易所钱包中的比特币总数降至18个月低点,略高于230万枚。这意味着交易所持有的比特币数量今年迄今减少了11%。

BNB6.3午间行情:行情未企稳 抄底需谨慎

文章系金色财经专栏作者牛七的区块链分析记供稿,发表言论仅代表其个人观点,仅供学习交流!金色盘面不会主动提供任何交易指导,亦不会收取任何费用指导交易,请读者仔细甄别,谨防上当。 比特币昨日晚间在10200美金附近快速回落,最低到了9300美金,站稳10000美金的目标没有实现,两天的时间上下走了两千美金的幅度,这明目张胆的多空双杀基本等同于打劫。

[0:0ms0-0:484ms