ethereum - Parity 的 Aura 共识协议(protocol)是如何工作的?

标签 ethereum consensus parity-io

Here这是一个非常高级的描述,只有公式。我想真正了解它是如何工作的。

我实际上不明白一个步骤是什么以及它有什么用?节点是否总是不断更新步骤?当创建和广播一个 block 的时间到来时,它将采用当前的步长值并检查他是否应该广播。

“从超过 1 步到 future 的 block 被拒绝”是什么意思?这是否意味着如果 block 时间是 5 秒,那么下一个 block 时间戳应该正好高 5 秒。

当下一个主节点不广播时会发生什么?网络如何处理它?所有接下来的 block 都应该正确地失效,因为它们不会遵循 5 秒的时间戳差异。

最佳答案

奥拉 是 Parity 的 Proof-of-Authority (PoA) 共识引擎的名称,该名称最初来自Authority Round(以前是AuRo)。它用于 Kovan network .

PoA 网络在设计上是不允许公开的。只有严格定义的权限节点才被允许密封区 block 。这对于测试网络或企业网络非常有用,因为区 block 链上的原生代币不具有任何值(value),因此在工作量证明 (PoW) 或权益证明 (PoS) 环境中很容易受到攻击。

一步是权限回合的一部分。每个权限可以在每一轮中密封一个区 block 。假设我们有五个权限:0x0a .. 0x0e .这些将是链规范或动态验证器合约中定义的步骤:

  • 第一步:0x0a封 block
  • 第二步:0x0b封 block
  • 第三步:0x0c封 block
  • 第四步:0x0d封 block
  • 第五步:0x0e封 block

  • 回合结束后,重新开始。

    What do you mean by "Blocks from more than 1 step into the future are rejected."?



    现在如果节点 0x0c会尝试在 0x0a 之后立即密封一个 block ,那么这个区 block 将超过 1 步。封锁严格依赖于所有权威的封锁步骤顺序。

    And also what happens when the next primary doesn't broadcast?



    没问题,两个区 block 之间会有间隙,即双倍的出 block 时间。所以如果 0x0c注意到 0x0b在指定的时间窗口内没有提供 block ,它可以用自己的 block 覆盖这一步并继续循环。区 block 时间戳有一定的容差,以确保网络不会停止。

    Kovan Stats Screenshot

    在上面的屏幕截图中,您可以看到 Kovan 网络中的两个权限没有密封 block 。结果是这些步骤之间的阻塞时间增加。

    披露:我为 Parity 工作。

    关于ethereum - Parity 的 Aura 共识协议(protocol)是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43465552/

    相关文章:

    java - 无法使用 web3j 下载以太坊 Activity

    consensus - Raft 共识协议(protocol)是否处理与领导者失去联系但不与其他节点联系的节点?

    corda - Corda 真的需要公证人才能达成唯一性共识吗?

    blockchain - 我如何以某种方式运行 Substrate,以便立即验证交易以减少开发费用?

    rust - extrinsics 选项卡中没有可用的 `kitties` 模块

    ethereum - Solidity 中的地址(1) 是什么?

    node.js - 发送以太坊交易,Web3.js没有源地址,但有源私钥?

    blockchain - 如何在 Solidity 中返回映射列表? (以太坊合约)