在 Substrate 中,Babe、Aura 和 Grandpa 有啥区别

Posted

技术标签:

【中文标题】在 Substrate 中,Babe、Aura 和 Grandpa 有啥区别【英文标题】:In Substrate, What is the difference between Babe, Aura, and Grandpa在 Substrate 中,Babe、Aura 和 Grandpa 有什么区别 【发布时间】:2020-02-10 15:20:42 【问题描述】:

Substrate 支持“可插拔共识”,因此开发人员可以从多种共识算法中进行选择。它标配四种算法:

Aura Babe Proof of Work Grandpa

其中一些(例如babe and grandpa)甚至可以在单个节点中一起使用。每种共识算法有什么区别,哪些可以或应该一起使用?

【问题讨论】:

问题中的链接不再起作用。不进行编辑,因为我不确定新链接,但我是 github.com/substrate-developer-hub/substrate-node-template/blob/… 谢谢米希尔。我现在已经更新了。 【参考方案1】:

要使区块链生效(继续增长和添加新交易),必须发生两件事来解决distributed consensus 的问题。通常,这些作业由完整节点执行,就像默认的 Substrate 节点一样。

    块创作。节点创建新块。每个新块都包含对父块的引用。

    区块终结。当链中出现分叉时,节点必须选择分叉的哪一侧来考虑真正的或“规范”的一侧。一旦一个区块被最终确定,规范链将始终包含它。

让我们分别看一下每个提到的算法,看看它们是如何完成这些任务的。

块创作

光环

Aura 主要提供块创作。在 aura 中,一组已知的权威被允许生产块。必须在区块生产开始之前选择权限,并且所有权限都必须知道整个权限集。时间被分成固定长度的“槽”。在每个槽中产生一个块,并且当局轮流按顺序生产块。

在 Aura 中,只有当一个块需要超过插槽持续​​时间才能穿过网络时,才会发生分叉。因此,在良好的网络条件下,分叉并不常见。

宝贝

Babe 还主要提供块创作。就像 Aura 一样,它是一种基于槽的共识算法,具有一组已知的验证器。此外,每个验证者都被分配了一个权重,必须在区块生产开始之前分配该权重。与 Aura 不同,当局不按顺序轮流。相反,在每一轮中,每个权威都使用VRF 生成一个伪随机数。如果随机数小于它们的权重,则允许它们产生一个块。

由于多个验证者可能能够在同一个时段产生一个块,因此在 Babe 中分叉比在 Aura 中更常见,即使在良好的网络条件下也很常见。

Substrate 对 Babe 的实现也有一个回退机制,用于在给定插槽中未选择任何权限时。

工作证明

工作量证明还提供块创作。与 Babe 和 Aura 不同,它不是基于插槽的,也没有已知的权限集。在工作量证明中,任何人都可以随时生成一个块,只要他们能够解决计算上具有挑战性的问题(通常是哈希preimage search)。可以调整此问题的难度以提供统计的目标块时间。

区块终结

概率方法

我们之前讨论过的每个区块创建机制都需要知道链上的何处应该构建下一个区块。诸如“最长链规则”“最重观察子树”之类的方法通常在实践中起作用并提供概率确定性。也就是说,随着每个新块添加到链中,它被还原的概率会降低,接近于零。当需要真正确定一个区块是最终的时,可以使用更复杂的游戏。

爷爷

Grandpa 提供区块终结。它有一个已知的加权权威集,如 Babe。但是,Grandpa 不创作区块;它只是听取有关由某些创作引擎(如上面讨论的三个)生成的块的八卦。每个权威都参与两轮区块投票。 details of the voting 超出了本文的范围。一旦有 2/3 的祖父权威投票支持特定区块,则该区块被视为最终确定。

混合共识

一般来说,块创作引擎和确定性小工具可以在一条链中一起使用,因为 Babe 和 Grandpa 在问题中链接的代码中。当使用这样的系统时,必须让块创作引擎知道已完成的块,这样他们就不会浪费时间在永远不会在规范链中的块之上构建。

权重注意事项:Babe、Grandpa 和许多其他未与 Substrate 捆绑在一起的算法都依赖于权重。共识算法本身通常不规定如何分配权重,而是假设它们以某种方式被分配,将分配留给外部机制。在公共网络中,通常根据质押的代币数量来分配权重。在默认的 Substrate 节点中,所有权重都设置为 1,因为 phragmen algorithm 使所有验证者的权益保持接近。

【讨论】:

以上是关于在 Substrate 中,Babe、Aura 和 Grandpa 有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

波卡链Substrate Grandpa + Babe

波卡链Substrate Babe协议一“基本概念”

波卡链Substrate Babe协议一“基本概念”

波卡链Substrate Babe协议四“出块签名和验证”

波卡链Substrate Babe协议三“slot leader”

波卡链Substrate Babe协议五“Epoch纪元更新”