为什么我们需要共识
共识是达成共识的一种方法。 为了继续创建和前进区块链的状态,网络中的所有节点必须达成共识并达成共识。这就是去中心化网络中的节点可以彼此保持同步的方式。如果去中心化区块链中没有共识,则无法确保节点的真实状态由其他节点共享。共识的目的是在参与者具有自己的“主观意见”的网络中提供有关状态的“客观意见”这是这些节点进行通信并达成协议并可以产生新块的过程。
什么是PoW和PoS?
现在,工作量证明(PoW)和权益证明(PoS)已被用来代表区块链机制的简写,但这并不能说明全部情况。 PoW是一种与区块生产者达成协议的方法,也是完整的《中本聪共识》的一部分,该协议还包括链选择算法(比特币中最长的链机制)。同样, PoS是用于选择验证者节点的一组规则。它没有专门提及链的选择规则或链如何实现终结性。通常在节点之间,PoS算法和拜占庭协议算法相互结合。例如,Tendermint是一种实用的拜占庭容错算法,它使用PoS作为其验证者节点选择方法。
为什么不选择PoW?
尽管达成去中心化的共识既简单又有效,但使用“中本聪共识”进行的工作证明会消耗大量资源,并且没有经济上或可证明的终结性,也没有有效的措施来**垄断联盟。
概率确定性与可证明确定性
运行PoW的纯Nakamoto共识区块链只能实现概率最终性的概念,然后才能达成最终共识 。概率确定性意味着在网络和参与者的某些假设下,如果我们看到在给定块上创建了多个块,则可以估计块结束的概率。最终共识意味着在将来的某个时刻,所有节点都将就一组数据的真实性达成共识。最终达成共识可能需要很长时间,因此无法预先确定需要多长时间。但是,诸如GRANDPA或以太坊的Casper FFG之类的最终性工具旨在为区块的最终性提供更强大,更快速的保证,尤其是在发生拜占庭协议的某些过程之后,它们将永远无法恢复。不可逆共识的概念称为可证明的终结性 。在GRANDPA文档中,其规定如下:如果协议中的预言机 A在未指定的时间后向所有参与者返回相同的值,则我们称其最终一致。
什么是GRANDPA / BABE机制?
混合共识在谈论Polkadot的共识协议时,我们经常看到两个首字母缩写词GRANDPA和BABE 。因为Polkadot使用混合共识,所以我们同时提到了这两个词。混合共识可以将最终工具与区块生产机制分开。这是一种在Polkadot中获得概率确定性 (始终生成新块的能力)和可证明的确定性 (规范链上具有通用一致性而没有逆转机会)的好处的方法。它还避免了每种机制的缺点:在概率确定性中不知不觉地遵循了错误的分叉,以及在确定性中表现出“暂停”(无法生成新的块)的问题。通过结合这两种机制,Polkadot可以快速生成区块,而慢速终结机制可以在单独的流程中运行以完成区块,而不必承担缓慢的交易处理或暂停的风险。过去也曾提到过混合共识。值得注意的是,在以太坊改进提案EIP 1011中,有人提议使用混合共识作为从以太坊到PoS过渡的步骤(现已无效),该提案指定了Casper FFG。 BABE BABE(块链扩展的盲分配)是一种在验证节点之间运行并确定新块生产者的块生成机制。作为一种算法,可以将BABE与Ouroboros Praos进行比较。链选择规则和插槽(验证器插槽)时间调整之间存在一些关键差异。 BABE使用桩号和使用Polkadot的随机循环机制将块产生的时隙分配给验证程序。 Polkadot中的验证程序将参与每个插槽的抽签,并使用此批次来确定验证程序是否为该插槽的区块生成的候选对象。时段是不连续的时间单位,通常为6秒。由于这种随机机制,多个验证器可能是同一时隙的候选者。在其他时间,插槽可能为空,从而导致块时间不一致。在一个时隙中的多个验证 。当在给定时隙的多个验证器块生成候选,所有验证必须生成一个块,并将其广播到网络。这是此时的游戏。到达大部分网络的第一个验证器将获胜。取决于网络拓扑和延迟,这两个链将继续产生块,直到最终确定开始并切断分支为止。请参阅下面的“货叉选择”以了解其工作方式。 插槽中没有验证器。当随机抽奖滚动到足够低的位置并且没有验证者有资格进行积木生产时,插槽可能没有积木。我们通过在后台运行两级循环验证程序选择算法来避免这种情况。选择通过此算法生成块的验证者始终可以生成块,但是如果同一插槽还从VRF选择的验证器生成主块,则将忽略这些辅助块。因此,插槽可以具有主块或子块,并且不会跳过任何插槽。
Rust是Substrate框架的一部分。
比较一下
中智共识
- 在GRANDPA中,不同的选民可以同时投票给不同身高的居民
- GRANDPA仅依赖最终块来影响基础块生产机制的fork选择规则
资源资源
GRANDPA论文:GRANDP最终工具的学术描述。包含算法的形式证明。
https://github.com/w3f/consensus/blob/master/pdf/grandpa.pdf
Rust实现:参考文档和随附的Substrate模块。
https://github.com/paritytech/finality-grandpaGRANDPA论文:GRANDP最终性工具的学术描述。包含算法的形式证明。 Rust实现:参考文档和随附的Substrate模块。
文章标题:科普| Polkadot的共识是什么?
文章链接:https://www.btchangqing.cn/34565.html
更新时间:2020年06月09日
本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。