以太网POS工作原理解读:Epoch、Slot和Beacon Block

原标题:《解读以太坊POS工作原理:Epoch、Slot与信标区块》原文来源:ETH中文

使用权益证书的以太坊的独特之处在于参与人数最大化的设计。。它允许成百上千的核查人员积极参与决策过程。在撰写本文时,大约有50万个验证者实体(从协议的角度来看)正在积极参与这一过程。

其实在384秒左右(6分24秒)。,所有活跃的验证者将有机会投票或提议阻止。在大约384秒内广播至少500,000条消息,并且所有消息必须在严格的时间框架内送达。据我所知没有其他共识协议被设计来处理如此活跃和庞大的共识参与者集合。

至于通信模型,共识协议是针对以下三种情况之一(通常情况下)设计的:

同步通信,一种普遍同意且已知的信息传输超时。。异步通信信息传递所需时间没有上限,但最终还是会发送。在大多数情况下,部分同步通信有一个已知的超时,但零星的事件可能会破坏信息传输,时间各不相同。

大多数现代一致性协议都是为部分同步通信而设计的,因为它假设大部分时间条件都是好的,但由于事件可能会在短时间内中断通信,因此存在不可预测的时段。另一方面,值得注意的是,权利证书以太坊是为同步通信而设计的。。

跑题——Casperfg是为部分同步通信而设计的,但是LMD-GHOST的严格定时条件强制整个系统同步。。我们将在以后的文章中解释什么是卡斯帕和LMD幽灵。

假设绝大多数验证者之间几乎没有中断,所有信息必须在固定的截止日期前记录在信标区块链上。,这些信息可以被统计/使用。如果出现中断,导致信息传递延迟,那么发送方将根据延迟程度招致惩罚。在最坏的情况下,如果错过了截止日期,消息将被忽略,信息的发送者将因不活跃而受到惩罚。。惩罚政策将在以后的文章中介绍。

为了更好地理解同步通信模型,我们讨论了Epochs槽的主题。它定义了允许验证者参与的时间以及消息传递的严格时间窗口。。如果违反了时间窗口,无论出于什么原因,都不能保证在迟到的消息到达时其他验证者会采取行动。最后,我们将介绍如何将验证器分配到一个时隙,以及如何在信标区块链中记录消息。

如果你想了解更多的各种通信设置,那么我建议你看一下这篇文章。还有关于ETH2是部分同步通信还是同步通信的精彩讨论。

纪元和插槽

每个时段有32个时隙,并且每个验证器在每个时段中被分配到恰好一个时隙。一个时隙是一个12秒的时间窗口,在此期间验证者可以参与兴趣证书协议。提议或表决新的信标块。

槽按照纪元分组,纪元和槽起到了验证者参与权限认证协议的时间表的作用:

历元是包括32个时隙周期。

Slot验证委员会在12秒内完成其任务的窗口。

一个epoch代表权利证明协议的一个完整回合,并且该槽为验证者提供了参与该回合的机会。在一个时代结束时,所有活跃的核查者都有机会参与。

时段委员会的一个验证者被分配给一个时段中的一个时段,所有验证者被均等地分配给每个时段以形成一个委员会。

一个插槽中有两个角色:

区块提议者验证者有机会向委员会成员提议区块。

见证所有剩余的委员会成员将投票支持区块。他们认为布洛克应该成为新的区块链掌门人。

每个epoch有32个block提议者(每个槽位一个),所有验证者都有机会参与股权认证协议。,给他们认为应该是规范的信标链,投上一票。

一个时隙代表验证者建议一个块的严格时间窗口。委员会成员对一个区块进行投票,最后将该时段的所有活动广播给下一个时段的区块提议者。

插槽和时间条件

所有插槽都是按时间顺序一个接一个生成的。。每个时隙正好每12秒分配一次,分为三个阶段:

提出一个区块,指定验证人提出一个区块,前4秒向全体委员广播。

在投票周期中,其他委员会的所有成员为一个区块投票(见证),并且他们相信他们的投票将在接下来的四秒钟内被该区块接受。

广播投票在最后四秒钟,所有委员会成员的投票应汇总并发送给下一个时段的区块提议者。

所有的块和投票都在一个委员会的时段中广播。在委员会中有额外的角色称为聚合器,它将在把证据传递给下一个插槽之前聚合证据';s区块提议者。他们是可选的,这是一个自愿的角色,以减少沟通的成本。我们将暂时跳过细节——因为它将在以后的文章中讨论。

如果建议的块或见证在截止日期后发布,则不能保证该活动将被其他验证者认可。例如,可以跳过后一个块,因为该槽的见证可能已经投票给其父块。。一个证人迟到会被一个epoch内的其他证人处理,最多有32个槽的迟到和不同程度的惩罚。如果它在32槽后被释放,它将不会被任何验证器处理。

最后提醒一下,这个严格的时间窗口保证了验证者所需带宽和计算能力的下限,因为他们必须具备按时接收、处理和发送见证/块的能力。

审核委员会分配

我们考虑将验证者分配到时段中的槽的过程。所有老虎机委员会的规模大致相同。它们根据一个随机信标的输出完成分配,并使其提前两个历元。。这需要使用混洗协议和随机信号传输源。

根据称为交换或非交换的洗牌协议,洗牌协议的所有验证器被分配到一个槽。我们赢了';不要讨论这个洗牌协议的细节。而是将重点放在随机信标的计算方法上,为洗牌协议的实现奠定基础。

随机信标的所有验证器都是通过随机信标分配的,该信标使用一种称为RANDAO的协议。。其目的是当新的块被添加到规范链中时,通过聚集随机性来形成随机信标。

对于每个新块,有两个阶段:

由提议产生的随机性(每个块)

新的信标块包括一个名为randao_reveal的特殊值。它是块提议者的BLS签名,作为块的随机信标。防止被认证者篡改是确定性的,但是不可预测的。

混合随机性(每块)

所有验证器从新块中取出随机信标,并将其与所有先前聚合块的随机性混合。它形成了一个新的价值组合,这可能是洗牌协议的候选。

正如我们所看到的,每个信标块包括一个随机信标,它添加并聚合了所有先前块的随机性。

通过第n个时期的最后一个随机信标

将验证器分配给第n个时期的时隙

/**块的提议者在当前纪元编号*上制作BLS签名,作为该块的随机信标*非常好的一点是签名是确定的(验证者不能篡改它)。,但在计算签名之前是不可预测的*/

domain_randao=0x002000000;//签名中包含的幻数EPOCH_HASH=HASH(current_EPOCH_NUMBER,domain_Randao);//哈希码randao_reveal=bls.sign(epoch_Hash,sk)待签名;//BLS的签名是冉道。

/**利用块的随机性进行哈希计算,然后将哈希码混入现在收集的随机性*/

previous_mix=get_previous_mix(parent_block);//来自父块的混合(Mix)randao_reveal=new_block。randao_reveal//取得新区块的冉道

mix=previous_mixXORhash(randao_reveal);//计算一个新的混合store_new_mix(new_block);//关联新的"混合"有了新街区。

分配将在两个时期之前发生。所有验证器将使用由最后接受的块收集的混合值作为随机信标,并在洗牌算法中使用它。。它将计算下两个时期的验证委员会。

所以,如果我们把当前历元看作第n个。那么这个时期中的最后一个信标块将被用作随机信标来确定第n个时期的委员会分配。

验证者有足够的时间找到他们被分配到的插槽。因为他们会提前知道两个纪元。换句话说,未来64槽的验证者分布早就公开了(大概2epoch)。

随机信标的偏置能力

混洗协议只能使用一个混合,这是一个时期中最后接受的块的混合值。

最后接受的块可能不总是在第32个时隙建议的块。它是最后一个槽块,即被所有验证器识别为区块链头的块。例如如果没有为第32时段提议的块(或者它是迟的),第32时段的验证者委员会将投票给为第31时段提议的前一个块。

攻击者可以利用这一点来偏置随机信标。让';假设攻击者是第32个时隙的阻塞提议者。他可以决定这样做:

按时释放格挡的攻击者的随机性混杂在信标

中。暂停块强制所有验证者投票给前一个块,因此攻击者的随机性不会混入信标中。

这种决策能力允许攻击者将随机信标偏移1个字节。并最终决定在未来时期将使用两个验证者分布组合中的哪一个。事实上,如果攻击者控制了一个时期中最后n个块的块支持者。然后他们可以利用这个机会释放或暂停释放n个块的组合。目前,仍然缺乏一项严谨的研究来了解针对最后n个时隙的全方位偏置能力及其影响。

检查信标块

信标块的数据结构

单个信标块包含其在信标区块链中的位置的元数据、执行链的数据和权限协议证书的副本。我们将在下面讨论更多的细节。

插槽的块提议者将尝试扩展规范链,并且只能选择一个父块。信标父块

块的提议者的目标是提出一个新的信标块,并将其添加到规范链的头部。为此,他们只能选择一个父块进行扩展。父块应该是当前链头,它在元数据中的代表是parent_root。

历元和时隙组织验证器以生成唯一的标准化信标区块链。

时隙不等于信标块

信标块记录其时隙号(纪元号的倍数)的元数据。它允许其他验证者检查区块提议者是否确实被指定为该时隙提议区块。该块是否是建议的块。如果槽号错误,该块将被拒绝。

关键是区块链中的块的位置与建议的时隙号不对应。例如如果我们检查第5184157个槽,那么我们将看到第16015362个块。这种不匹配是不可避免的,因为无法保证所分配的槽中的建议块会被所有其他验证者投票。而以太坊从创立至今已经运行了7年多。

执行链数据块

的发起者会提出两个块,他们会提出一个执行块,这个执行块会对用户的事务进行排序,并将其附加到新生成的信标块中。这并不奇怪。因为共识层的最终目的是为实现层确定规范链。

块提议者还负责将信息从执行层传输到信标层,并使其准备好供权限证明协议使用。这包括:

ETH1数据是来自执行层的附加块的块散列码。

存款合同地址和一系列未记录的存款。

这要求所有验证者运行信标客户端和执行客户端。这是必要的。因为验证器必须检查对应的ETH1块,并根据执行层的规则验证其有效性。类似地,正如我们在关于注册过程的文章中所讨论的,存款必须在特定的块间隔内从执行层转移到信标块。否则信标块将被拒绝。

元数据槽号、历元号、随机信标和块提议者

没收事件包含其他验证者恶意行为的证据,可用于惩罚他们

。投票历史记录了在这个区块链分支[XY002]

上对先前提出的信标块的一系列未记录的投票。区块链分支选择一个父块,并依次定义这个块延伸的规范链。

验证者从注册验证者的一系列撤回请求中撤回。

通过记录副本,每个人都可以独立地审阅整个协议,并绝对相信信标链的当前状态是正确的。比如恶意验证者会被及时没收。slot和epoch的调度被所有验证器识别,并且大多数验证器将以这种方式投票并生成单个规范链。

题外话,由于主观性不强,虽然权益证书的记录可以使我们相信所有的历史活动都是按照规则进行的,但这不足以向一个外部团体说明这确实是区块链的真正灯塔。简单地说,它提供了一种检查历史活动完整性的方法。

以太网POS工作原理解读:Epoch、Slot和Beacon Block文档下载: PDF DOC TXT
文章来源: 理财天下网
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至2384272385@qq.com举报,一经查实,本站将立刻删除。