声明:本文旨在传递更多市场信息,不构成任何投资建议。文章仅代表作者观点,不代表火星财经官方立场。
边肖:记得要集中注意力。
来源:区块链资讯
本文来自Polkadot Wiki的【基础知识】板块。
原文:3359 wiki . polkadot . network/docs/en/learn-consensus
翻译:波尔卡世界
为什么我们需要共识?共识是对共同国家达成一致的方式。为了继续创造和提高区块链的地位,网络中的所有节点都必须同意并达成共识。这就是分散式网络中的节点如何保持彼此同步。如果在分散的区块链中节点之间没有共识,就不可能确保一个节点相信的真实状态被其他节点共享。共识的目的是在一个所有参与者都有自己的“主观观点”的网络中提供一个关于国家的“客观观点”。就是这些节点沟通并达成一致的过程,并能产生新的区块。
什么是功率和位置?现在,工作量证明(PoW)和权益证明(PoS)已被用作区块链机制的简称,但这并不能说明全部情况。PoW是一种与区块生产者达成协议的方法,也是完整的中本聪共识的一部分,其中还包括链选择算法(比特币中最长的链机制)。类似地,PoS是一组用于选择验证者节点的规则。它并没有特别提到一个链的选择规则或者一个链如何达到它的终结。通常,在节点之间,PoS算法和拜占庭协议算法是相互结合的。例如,Tendermint是一种实用的拜占庭容错算法,它使用PoS作为其验证器节点选择方法。
为什么不选择PoW?虽然在达成去中心化共识方面简单有效,但是使用中本聪共识的工作量被证明消耗了大量的资源,而且没有经济性或可证明的终局性,也缺乏抵制垄断联盟的有效措施。
概率vs可以证明最终性纯中本聪共识区块链运行PoW只能实现概率最终性的概念,进而达成最终共识。概率是指在网络和参与者一定的假设下,如果我们看到在给定的块上创建了几个块,就可以估计出块结束的概率。最终的共识意味着,在未来的某个时刻,所有节点都会对一组数据的真实性达成一致。这个最终的共识可能需要很长时间,无法提前确定需要多长时间。然而,诸如爷爷或以太坊的卡斯帕FFG之类的终结性工具旨在为块的终结性提供更强、更快的保证。特别是,在拜占庭协定的一些程序发生后,它们永远无法恢复。不可逆共识的概念称为可证明的终局性。
在爷爷文档中,是这样表述的:
如果协议中的oracle A在一段未指定的时间后向所有参与者返回相同的值,那么我们说它最终是一致的。
爷爷/宝贝机制是什么?混合共识
当我们谈到波尔卡多特的共识协议时,经常会看到两个缩写,爷爷和贝贝。我们同时提到这两个词是因为Polkadot使用的是混合共识。混合共识可以将最终工具与区块生产机制分开。
这是一种在Polkadot中获得概率终结性(总是生成新块的能力)和可证明终结性(规范链中没有反转机会的普遍一致性)的好处的方法。它还避免了每种机制的缺点:概率终结中不知不觉地遵循错误分叉的可能性,以及可证终结中的“暂停”(无法生成新块)问题。通过结合这两种机制,Polkadot可以快速生成块,而较慢的终结机制可以在单独的进程中运行来完成块,而不必承担较慢或挂起的事务处理的风险。
过去曾提到过协商一致。值得注意的是,在以太坊的改进提案EIP 1011中,混合共识作为以太坊向PoS(现已无效)过渡的一个步骤被提出,卡斯珀FFG在该提案中被指定。
婴儿
Babe(区块链扩展的盲分配)是在认证节点之间运行的块生成机制,并且确定新块的生产者。作为算法,BABE可以和Ouroboros Praos比较,在链选择规则和槽(验证者槽)时间调整上有一些关键的区别。BABE根据stake和Polkadot随机循环机制将块产生的槽分配给验证者。
Polkadot中的验证者将参与每个槽的抽签,并且该抽签将告知验证者是否是该槽的块生成的候选。Slot是一个不连续的时间单位,通常为6秒。由于这种随机机制,多个验证者可能是同一个槽的候选者。其他时候,一个时隙可能是空的,导致不一致的块时间。
一个插槽有多个验证器。
当多个验证器是给定时隙中块生成的候选时,所有验证器必须生成一个块并将其广播到网络。这是此时的一场游戏。首先到达大多数网络的验证者将获胜。根据网络拓扑和时延,这两条链会不断产生阻塞,直到最后开始并切断分叉。参见下面的“叉子选择”来了解它是如何工作的。
插槽中没有验证器。
当随机彩票滚动到足够低的位置并且没有验证者有资格生产区块时,一个槽可能没有区块。我们通过在后台运行两级循环验证器选择算法来避免这种情况。通过该算法选择生成块的验证者总是可以生成块,但是如果同一个槽也从VRF选择的验证者成为主块,这些子块将被忽略。因此,一个槽可以有一个主块或一个次块,没有槽会被跳过。
VRF:https://wiki . polkadot . network/docs/en/learn-randomness
关于贝贝的更多细节,请参考研究草案文档。
https://research . web 3 . foundation/en/latest/polkadot/BABE/BABE . html
爷爷:终结性工具爷爷(ghost-based recursive ancestor advanced prefix agreement)是为Polkadot中继链实现的终结性小工具。
它在部分同步的网络模型中工作,只要2/3的节点是诚实的,并且可以在异步设置中处理1/5的拜占庭节点。
一个显著的区别是,爷爷是在链上而不是在块上达成协议的,这大大加快了最终的确定过程,即使是在长期的网络分区或者其他网络故障之后。
换句话说,只要有2/3以上的验证者证明了一个包含某个块的链,所有指向该块的块就会立即完成。
草案
关于该协议的完整描述,请参考论文的标题3。
https://github.com/w3f/consensus/blob/master/pdf/grandpa.pdf
实施
铁锈是基底框架的一部分。
https://github . com/parity tech/substrate/blob/master/frame/外公/src/lib.rs
更多详情,请见W3F研究页面的老爷爷。
https://research . web 3 . foundation/en/latest/polkadot/外公. html
分歧
随着贝贝和爷爷的混合机制,博卡的分叉选择变得清晰。贝贝必须建立在爷爷最终决定的链条上。当最终确定后出现分叉时,BABE通过用最重要的块构造链来提供概率终结性。
在上面的图像中,黑色块被终止。一个是主块,另外两个是子块。即使顶部的链是最新端子板上最长的链,它也是不合格的,因为它在评估中获得的第一选择少于下一个。
对比中本聪共识
中本聪共识由最长的规则组成,使用工作量证明作为其防止女巫攻击和领导人选举的机制。
中本聪共识只给了我们概率终结。概率表示一个区块过去的安全程度只取决于它拥有的已确认区块数或在该区块上建造的区块数。随着越来越多的块构建在工作负载证明链中的特定块上,该链也将消耗更多的计算资源。然而,包含该块的链可能不总是被识别,因为具有无限资源的参与者可能构建竞争链,并且花费足够的计算资源来创建不包含特定块的链。在这种情况下,比特币和其他PoW链使用的最长链规则将被转移到这个新链,使其成为主链。
PBFT/薄荷共识
请参考文章中与Cosmos对比的相关内容。
https://wiki . polkadot . network/docs/en/learn-comparisons-cosmos # consensus
卡斯帕FFG
PA和卡斯珀FFG(友好终结小工具)的两个主要区别是:
在《爷爷》中,不同的选民可以同时投票给不同高度的街区。爷爷只依靠最后的块来影响底层块产生机制的分叉选择规则Casper CBC。
即将推出!
爷爷论文资源:爷爷终结性工具的学术描述。包含算法的形式证明。
https://github.com/w3f/consensus/blob/master/pdf/grandpa.pdf
Rust实现:参考文档和附带的基底模块。
https://github.com/paritytech/finality-grandpa