区块链节点使用共识引擎在区块链状态上达成统一。本文介绍了区块链系统中共识的基本原理,共识如何与 Substrate 框架中的 runtime 交互,以及框架中可用的共识引擎。 状态机和冲突 区块链 runtime 是一个状态机[1]。它有一些内部状态和状态转换功能,允许它从当前状态转换到未来状态。在大多数 runtime 中,有些状态具有到多个未来状态的有效转换,但必须选择一个转换。 区块链必须在以下几方面达成一致: 一些初始状态,叫做“创世”一系列的状态转换,每个都称为“区块”最终(当前)状态为了对转换后的结果状态达成一致,区块链的状态转换功能[2]中的所有操作都必须是确定性的。 冲突排除 在中心化系统中,中心化的权限通过按照他们看到的顺序记录状态转换,在相互排斥的备选方案中进行选择,并在发生冲突时选择竞争备选方案中的第一个。在去中心化系统中,节点将看到不同顺序的交易,因此它们必须使用更精细的方法来排除交易。更复杂的是,区块链网络力求容错,这意味着即使某些参与者不遵守规则,系统也应继续提供共识的数据。 区块链将交易批处理成区块,并有一些方法来选择哪个参与者有权提交区块。例如,在 PoW 链中,首先找到有效工作证明的节点有权向链提交块。 Substrate 提供多种区块构造算法,还允许你创建自己的: Aura (Round Robin)BABE (基于插槽)PoW分叉选择的规则 作为一个基元,区块包含一个区块头和一批外部对象[3]。区块头必须包含对其父块的引用,以便可以跟踪链的起源。当两个区块引用同一父块时,会发生分叉。必须解决分叉,以便只存在一个规范链。 分叉选择规则是一种算法,它获取一个区块链并选择“最佳”链,从而选择应该扩展的链。Substrate 通过SelectChain展现了这个概念。 Substrate 允许你编写一个自定义的分叉选择规则,或使用一个现成的。例如: 最长链规则 最长链规则简单地说,最好的链就是最长的链。Substrate 用LongestChain结构提供这个链选择规则。GRANDPA 用最长链规则进行投票。 GHOST 规则 GHOST 规则就是,从创世块开始,通过递归地选择在其上构建块最多的分支来解决每个分叉。 区块生产 区块链网络中的某些节点能够生成新的区块,这一过程称为 authoring。具体哪些节点可以编写区块取决于你使用的共识引擎。在一个中心化的网络中,一个节点就可以编写所有的区块,而在完全无权限的网络中,算法必须在每个高度选择区块的生产者。 PoW 在像比特币这样的 PoW 系统中,任何节点都可以在任何时候生成一个块,只要它解决了计算密集的问题。解决这个问题需要 CPU 时间,因此矿工只能根据计算资源的比例生成块。 Substrate 提供了一个 PoW 块生产引擎。 插槽 基于插槽的共识算法必须有一组已知的验证人,这些验证人可以生成块。时间被分配到不同的插槽中,在每个插槽中只有一些验证人可以产生块。在每个插槽中,验证人可以编写块的细节因引擎而异。Substrate 提供 Aura 和 Babe,这两个都是基于插槽的区块生产引擎。 最终性 任何系统中的用户都想知道他们的交易何时完成,区块链也不例外。在一些传统的系统中,最终性发生在收据被移交或文件被签署时。 使用到目前为止描述的区块生产方案和分叉选择规则,交易永远不会完全完成。总有一个机会,一个较长(或较重)的链将出现,并恢复你的交易。然而,在一个特定的块上构建的块越多,它被还原的可能性就越小。这样,块生产和适当的分叉选择规则提供了概率的最终性。 当需要确定的最终性时,可以向区块链的逻辑中添加一个终结性小工具。一个固定权限集的成员铸造最终性的投票,当对某个区块投了足够的票时,该区块被视为最终的。在大多数系统中,这个阈值是 2/3。如果没有外部协调(如硬分叉),由此类小工具完成的块将无法恢复。 “ 在使用最终性小工具的系统中,必须修改分叉选择规则以考虑最终性游戏的结果。例如,节点将选择包含最近完成的块的最长链,而不是选择最长链的周期。 Substrate 中的共识 Substrate 框架附带了几个共识引擎,这些引擎提供了块生产或最终性。本文简要概述了 Substrate 本身自带的产品。欢迎开发者提供自己的定制共识算法。 Aura Aura[4]提供基于插槽的块生产机制。在 Aura 中,一个已知的权限集轮流出块。 BABE BABE[5]是通过一组已知验证人的基于插槽的块生产共识。在这些方面它类似于 Aura。与 Aura 不同,插槽分配基于可验证随机函数(VRF)的评估。为每个验证人分配一个 epoch 的 weight。这个 epoch 被分成多个插槽,验证人在每个插槽计算它的 VRF。对于验证人的 VRF 输出低于其 weight 的每个插槽,允许生成一个块。 因为多个验证人可能会在同一个插槽中产生一个块,所以分叉在 BABE 中比在 Aura 中更常见,即使在良好的网络条件下也很常见。 当在给定的插槽内没有区块的生产者时,Substrate 的 BABE 实现也有一个后备机制。这些 “次要” 插槽分配允许 BABE 获得恒定的区块时间。 PoW PoW 块的生产不是基于插槽的,也不需要已知的权限集。在 PoW 中,任何人都可以在任何时候生成一个块,只要他们能够解决一个具有计算挑战性的问题(通常是找出哈希原像)。这个问题的难度可以调整为提供一个统计目标块时间。 GRANDPA GRANDPA[6]提供区块的最终性。它有一个像 BABE 一样的已知 weight 的权限集。然而,GRANDPA 并不生产块,它只听取由生产引擎(比如上面三种)生成的块的“八卦”。GRANDPA 验证人在链上投票,而不是在区块上投票,也就是说,他们投票给一个他们认为“最好”的区块,并且他们的投票可以传递地应用到之前的所有区块。一旦超过三分之二的 GRANDPA 权限者投票支持某一特定区块,它就被认为是最终的。 与 Runtime 协调 最简单的静态共识算法完全在 runtime 之外工作,正如我们目前所描述的那样。然而,许多共识游戏通过添加需要与 runtime 协调的功能而变得更加强大。例如,包括 PoW 中的可调难度、权威证明中的权限轮换以及 PoS 网络中的基于 stake 的权重。 为了适应这些共识特征,Substrate 有一个 DigestItem 的概念,一个从节点的外部(共识所在的地方)传递到 runtime 的消息,反之亦然。 了解更多 因为 BABE 和 GRANDPA 都在波卡网络中使用,Web3 基金会提供了研究级别的算法演示。 BABE Research[7]GRANDPA Research[8]所有确定性的最终性算法,包括 GRANDPA,都需要至少2f + 1 个非故障节点,其中f是故障或恶意节点的数量。你可以在有缺陷的情况下达成一致[9]的开创性论文或维基百科:拜占庭错误[10]中,了解更多关于这个门槛的来源以及为什么它是理想的。 并非所有的共识协议都定义了一个单一的规范链。当具有相同父块的两个块没有冲突的状态更改时,一些协议验证有向无环图[11](DAG)。 原文:https://substrate.dev/docs/en/knowledgebase/advanced/consensus 翻译:PolkaWorld 社区 参考链接 [1]状态机:https://en.wikipedia.org/wiki/Finite-state_machine [2]状态转换功能:https://substrate.dev/docs/en/knowledgebase/runtime/index [3]外部对象:https://substrate.dev/docs/en/knowledgebase/learn-substrate/extrinsics [4]Aura:https://crates.parity.io/sc_consensus_aura/index.html [5]BABE:https://crates.parity.io/sc_consensus_babe/index.html [6]GRANDPA:https://crates.parity.io/sc_finality_grandpa/index.html [7]BABE Research:https://research.web3.foundation/en/latest/polkadot/BABE/Babe.html [8]GRANDPA Research:https://research.web3.foundation/en/latest/polkadot/GRANDPA.html [9]缺陷的情况下达成一致:https://lamport.azurewebsites.net/pubs/reaching.pdf [10]维基百科:拜占庭错误:https://en.wikipedia.org/wiki/Byzantine_fault [11]有向无环图:https://en.wikipedia.org/wiki/Directed_acyclic_graph 更多内容: 波卡的共识是什么?| 波卡百科 什么是波卡(Polkadot)?|极简介绍版 最新版波卡(Polkadot)概述 一文讲清【波卡上线】的各种问题 扫码关注 PolkaWorld 公众号,回复 “1” 加入波卡群 关注 PolkaWorld 发现Web 3.0 时代新机遇 —- 编译者/作者:DotNews 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
波卡的共识(进阶版)
2020-07-14 DotNews 来源:区块链网络
LOADING...
相关阅读:
- 德国中央银行同意这个区块链项目2020-10-31
- 未来没有发达国家,只有数字化国家‖比特币也许是泡沫,但区块链一2020-10-31
- 雷凯趋势:比特币早间成功抓获第一波200点的利润2020-10-31
- starlink星链|中国信通院发布2020年区块链行业十大趋势2020-10-31
- bitFlyer推出区块链房屋租赁2020-10-31