你应该了解 - 以太坊 2.0 信标链解释
- 原文链接:https://ethos.dev/beacon-chain
- 译者:AI翻译官 校对:
- 本文永久链接:learnblockchain.cn/article…
引擎在飞行中更换了!2022 年 9 月 15 日 — 以太坊转向权益证明的一天。
那个新引擎就是信标链。
你觉得是时候了解一下它是如何工作的吗?
以太坊的信标链将通过示例进行说明,以便让你熟练掌握并节省时间。
信标链为以太坊的共识提供了心跳。每个Slot为 12 秒,一个 Epoch 为 32 个 Slot:6.4 分钟。
前 32 个 Slot 在 Epoch 0 中。创世区块位于 Slot 0。
Slot是区块被添加到信标链的机会。当系统正常运行时,每 12 秒添加一个区块。验证者确实需要与时间大致同步。
Slot 类似于区块时间,但Slot可能为空。信标链的创世区块位于Slot 0。
虽然工作量证明与矿工相关联,但以太坊的验证者是权益证明的“虚拟矿工”。验证者运行以太坊的共识。他们的激励将在稍后的权益奖励和处罚中讨论。
一个区块的提议者(proposer)是被伪随机选择来构建区块的验证者。
大部分时间,验证者是证明者,对区块进行投票。这些投票记录在信标链中,并确定信标链的头。
某个 Epoch 第 28 个Slot的漏提议。
在每个 Epoch ,一个验证者被伪随机分配到一个Slot。
证明是验证者根据其余额加权的投票。验证者除了区块外,还会广播证明。
验证者还会相互监督,并且会因举报其他验证者发出冲突投票或提出多个区块而获得奖励。
信标链的内容主要是验证者地址的注册表、每个验证者的状态和证明。验证者由信标链激活,并可以过渡到稍后简要描述的状态,详见信标链验证者激活和生命周期 。
验证者是虚拟的,由质押者激活。在工作量证明中,用户购买硬件成为矿工。在以太坊中,用户质押 ETH 来激活和控制验证者。
将质押者与质押关联,将验证者与余额关联更为清晰。每个验证者的最大余额为 32 ETH,但质押者可以质押他们所有的 ETH。每质押 32 ETH,激活一个验证者。
验证者由执行多个验证者的_验证者客户端_执行。信标节点具有跟踪和读取信标链的功能。验证者客户端可以实现信标节点功能或调用信标节点。一个验证者客户端可以执行多个验证者。
委员会是一组验证者。为了安全起见,每个Slot都有至少 128 个验证者的委员会。攻击者控制⅔的委员会的概率小于万亿分之一 。
发出随机数供公众使用的随机数信标的概念,为以太坊信标链命名。信标链对名为 RANDAO 的伪随机过程执行共识。
在每个 Epoch ,伪随机过程 RANDAO 选择每个Slot的提议者,并将验证者洗牌到委员会中。
提议者由 RANDAO 根据验证者的余额加权选择。一个验证者可能是同一Slot的提议者和委员会成员,但这并不是常态。这种情况发生的概率为 1/32,因此我们每个 Epoch 大约会看到一次。该草图描述了少于 8,192 个验证者的情况,否则每个Slot至少会有两个委员会。
该图是三个Slot发生的综合描述。在Slot 1,一个区块被提议,然后由两个验证者进行证明;委员会 A 中的一个验证者处于离线状态。Slot 1 的证明和区块传播到网络并到达许多验证者。在Slot 2,一个区块被提议,委员会 B 中的一个验证者没有看到,因此它证明信标链头部是Slot 1 的区块。请注意,这个验证者与Slot 1 的离线验证者不同。对信标链头部进行证明称为 LMD GHOST 投票。在Slot 3,委员会 C 中的所有验证者运行 LMD GHOST 分叉选择规则,并独立证明相同的头部。
每个 Epoch ,验证者只能属于一个委员会。通常,验证者超过 8,192 个:意味着每个Slot有一个以上的委员会。所有委员会的大小相同,至少有 128 个验证者。当验证者少于 4,096 个时,安全概率会降低,因为委员会的验证者少于 128 个。
在每个 Epoch ,验证者均匀分配到Slot,然后分成适当大小的委员会。来自该Slot的所有验证者都对信标链头部进行证明。一个洗牌算法会增加或减少每个Slot的委员会数量,以确保每个委员会至少有 128 个验证者。
检查点是 Epoch 中第一个Slot的区块。如果没有这样的区块,则检查点是前一个最近的区块。每个 Epoch 始终有一个检查点区块。一个区块可以是多个 Epoch 的检查点。
一个包含 64 个Slot的情景的检查点。
请注意,Slot 65 到Slot 128 为空。 Epoch 2 的检查点应该是Slot 128 的区块。由于该Slot缺失, Epoch 2 的检查点是前一个Slot 64 的区块。 Epoch 3 类似:Slot 192 为空,因此前一个Slot 180 的区块是 Epoch 3 的检查点。
Epoch 边界区块(EBB)是一些文献中的术语(例如 Gasper 论文 ,上面的图表和后面的一个图表),它们可以视为检查点的同义词。
在进行 LMD GHOST 投票时,验证者还会为其当前 Epoch 的检查点,称为目标,投票。这个投票称为 Casper FFG 投票,还包括一个先前的检查点,称为源。在图表中, Epoch 1 中的一个验证者为创世区块投了源检查点的票,为Slot 64 的区块投了目标检查点的票。在 Epoch 2,同一验证者为相同的检查点投了票。只有分配到Slot的验证者才会为该Slot进行 LMD GHOST 投票。但是,所有验证者都会为每个 Epoch 的检查点进行 FFG 投票。### 超级多数
由所有活跃验证者总余额的⅔所做的投票被视为超级多数。从教育角度来看,假设有三个活跃验证者:两个的余额为 8 ETH,一个独立验证者的余额为 32 ETH。超级多数投票必须包含独立验证者的投票:尽管其他两个验证者可能与独立验证者投票不同,但它们没有足够的余额来形成超级多数。
当一个 Epoch 结束时,如果其检查点获得了⅔的超级多数,该检查点就会被证明。
如果检查点 B 被证明,并且在下一个 Epoch 的检查点也被证明,那么 B 就会被最终化。通常,一个检查点在两个 Epoch 内最终化,即 12.8 分钟。
平均而言,用户交易会在一个 Epoch 的中间区块中。距离下一个检查点还有半个 Epoch ,这意味着交易最终性为 2.5 个 Epoch :16 分钟。在一个 Epoch 的第 22 个槽之前,超过⅔的证明将被包含。因此,交易最终性的平均时间为 14 分钟(16+32+22 个槽)。区块确认从一个区块的证明开始,到其证明,再到最终性。使用案例可以决定他们是否需要最终性,或者一个更早的安全阈值就足够了。
一个检查点被证明并最终化先前检查点的示例(槽 64)。
为了简化以下叙述,请假设验证者们的余额都相同。
在槽 96 提出了 Epoch 边界区块,并包含了对 Epoch 2 检查点的证明。现在, Epoch 2 检查点的证明数量达到了⅔的超级多数。这导致了 Epoch 2 检查点的证明,从而最终化了先前证明的 Epoch 1 检查点。槽 32 的最终性立即导致了其之前所有区块的最终性。在最终化检查点时,可以最终化的区块数量没有限制。尽管最终性仅在 Epoch 边界计算,但证明会在每个区块中累积,如下面的“从创世到头部可能发生的情况”中所述。
使用相同的示例,以下是可以从创世观察到的情节。从槽 1 到槽 63 的所有提议者提出一个区块,并且这些区块出现在链上。在 Epoch 1 的每个区块中,其检查点(槽 32 的区块)累积了 55%的验证者的证明。槽 64 提出了一个区块,并包含了对 Epoch 1 检查点的证明。现在,70%的验证者已经对 Epoch 1 检查点进行了证明:这导致了其证明。 Epoch 2 检查点(槽 64)在整个 Epoch 2 期间累积了证明,但没有达到⅔的超级多数。槽 96 提出了一个区块,并包含了对 Epoch 2 检查点的证明。这导致了达到⅔的超级多数和 Epoch 2 检查点的证明。证明 Epoch 2 检查点最终化了 Epoch 1 检查点和所有先前的区块。
这里还有另一个可能的情景。只考虑到 Epoch 1。在 Epoch 2 的检查点被提出之前, Epoch 1 的检查点可能已经获得了⅔的超级多数。例如,当槽 32 到槽 54 的区块被提出时,用于证明检查点(槽 32)的证明可能已经达到了⅔的超级多数。在这种情况下,检查点可能在 Epoch 2 之前就已经被证明。一个检查点可以在当前 Epoch 中被证明,但其最终化需要至少在其之后的 Epoch 。
有时一个区块的证明可以最终化两个或更多 Epoch 之前的区块。Gasper 论文讨论了这些情况。这些情况预计只会在高延迟、网络分区或强攻击的特殊时期发生。
一个证明包含一个 LMD GHOST 投票和一个 FFG 投票。理想情况下,所有验证者每个 Epoch 提交一个证明。一个证明有 32 个槽的机会被包含在链上。这意味着一个验证者可能在一个 Epoch 内有两个证明被包含在链上。当验证者的证明在其分配的槽上被包含在链上时,他们会获得最高的奖励;稍后被包含的奖励会递减。为了给验证者准备时间,他们提前一个 Epoch 被分配到委员会。提议者只有在 Epoch 开始时才被分配到槽。然而,秘密领导者选举 研究旨在减轻对提议者的攻击或贿赂。
委员会允许技术上的优化,将每个证明者的签名合并为一个聚合签名。当同一委员会中的验证者做出相同的 LMD GHOST 和 FFG 投票时,他们的签名可以被聚合。
在不深入讨论的情况下,我们将讨论有关验证者激励的六个主题:
1. 验证者会因为做出大多数其他验证者同意的证明(LMD GHOST 和 FFG 投票)而获得奖励。在最终化的区块中的证明价值更高。
2. 反过来,如果验证者没有进行证明,或者他们对未最终化的区块进行了证明,他们将受到惩罚。
3. 在概述较少见的惩罚和奖励之前,你可能想了解成为质押者的下行风险。作为一个关心自己可能损失多少 ETH 的质押者,这几乎可以看作是你可以赚取多少的镜像。例如,如果一个验证者在证明中可以获得一年 10%的奖励,那么(诚实的)验证者如果表现最差,可能会损失 7.5%。一个总是离线或总是对未最终化的区块进行投票的验证者,将被处以相当于及时证明的验证者将获得奖励的 3/4 的惩罚。365 天的例子意味着离线几天或几周,惩罚会小得多:离线 36 天会损失约 0.75%(除非在下面的#6 中描述的不活跃泄漏)。
4. 惩罚是从超过 0.5 ETH 到整个验证者的全部质押的惩罚。一个诚实、安全的验证者不会因其他验证者的行为而被惩罚。对于犯有可惩罚行为的验证者,他们至少会失去 1/32 的余额并被停用(“强制退出”)。该验证者将被处以相当于离线 8192 个 Epoch 的惩罚。协议还根据在同一时间附近被处罚的其他验证者数量对其施加额外的惩罚。额外惩罚的基本公式是:验证者余额*3*被处罚验证者的比例。一个影响是,如果所有验证者中的 1/3 在同一时间段内犯有可惩罚行为,他们将失去全部余额。报告可惩罚行为的验证者将获得举报者奖励。
5. 最终化的区块的提议者会获得可观的奖励。始终在线且表现良好的验证者为提议具有新证明的区块的总奖励获得约 1/8 的提升。当发生惩罚时,提议者还会因在区块中包含惩罚证据而获得一小笔奖励。目前,所有举报者奖励实际上都归提议者所有。6. 以太坊是一个拥有许多机制的系统,其中一些机制可以通过它们的整体效果更受赞赏。设计的奖励和惩罚最终会导致不活跃泄漏惩罚。这与第 3 点中的典型风险不同,是一种严重且罕见的情况。基本上,如果自最终性以来已经有四个 Epoch ,验证者将遭受一个二次增长的不活跃惩罚,直到一个检查点被最终确定。不活跃惩罚(或“二次泄漏”)确保了这种结果:如果 50%的验证者掉线,区块将在 18 天后重新开始最终确定。二次泄漏会将问题验证者排除在外,以便其他验证者成为能够恢复最终确定的⅔多数派。不活跃泄漏不会排除正常运行的验证者。在不活跃泄漏期间,证明者奖励为零;验证者像往常一样获得提议者和告密者奖励。
验证者有四种可惩罚的情况。它们可以描述为双重提议、LMD GHOST 双重投票、FFG 环绕投票和 FFG 双重投票。
双重提议 是指提议者为其分配的插槽提出多个区块。
类似地,LMD GHOST 双重投票 是指验证者为其分配的插槽对两个不同的 Beacon Chain 头进行证明。
环绕投票 是指验证者进行环绕或被环绕的 FFG 投票。以下是基于一个场景的两个例子,其中一个验证者在 Epoch 5 中进行了一个源为插槽 32,目标为插槽 128 的 FFG 投票:
FFG 双重投票 是指验证者在同一 Epoch 为任意两个目标进行 2 次 FFG 投票。这可能发生在分叉期间。
在蓝色部分,同一验证者进行的两次 FFG 投票,目标均在 Epoch 4,是一次双重投票。
蓝色箭头表示两次 FFG 投票,一次投票支持左分支上插槽 128 的目标区块,另一次投票支持右分支上插槽 128 的目标区块。一个验证者进行这两次投票,将会犯下一种可惩罚的行为,称为双重投票。上面是一个双重投票的例子,其中源检查点不同。
接下来是一个情景,其中双重投票具有相同的源( Epoch 0 检查点),但目标不同。
在 Epoch 1,对“块 64”和“63”进行 FFG 投票将是一次双重投票。
上分支的 Epoch 1 检查点为“块 64”。下分支的 Epoch 1 检查点为“块 63”。(因为在下分支没有在插槽 64 提出的区块;请回顾 Beacon Chain 检查点部分。)对“块 64”和“块 63”进行 Epoch 1 目标的投票是一次双重投票。双重投票是指验证者在同一 Epoch 为两个目标进行 FFG 投票。
对双重投票进行惩罚的直觉是让验证者投票支持一个链,而不是两个或更多分叉。
请注意,由于它们可以被聚合,一个证明可能看起来像多次投票。同一个证明可能出现在不同的聚合中,但它仍然是同一个证明,而不是双重投票。
一个告密验证者需要包含冲突的投票,以证明另一个验证者应该被惩罚。在一个庞大的历史中高效地找到冲突的投票是一个算法和数据结构的挑战(在结论中链接)。
一个验证者完全可以避免被惩罚:它只需要记住自己签署了什么。一个诚实的验证者不会因其他验证者的行为而被惩罚。只要验证者不签署冲突的证明或提议,验证者就不会被惩罚。
一个验证者客户端可能会使用多个信标节点,以获得更好的正常运行时间、信任和防止服务拒绝。在这些设置中,或者在使用备用验证者客户端的情况下,用户需要注意验证者不会签署冲突的消息。
每个验证者需要拥有 32 ETH 的余额才能激活。在以太坊主网的存款合约中抵押 32 ETH 的用户将激活一个验证者。
当验证者的余额达到 16 ETH 时,信标链将停用(“强制退出”)所有验证者;抵押者将能够在 2023 年左右提取任何剩余的验证者余额。
验证者还可以在服务 2,048 个 Epoch 后(约 9 天)“自愿退出”。
在任何自愿或强制退出中,抵押者需要等待四个 Epoch 才能提取他们的抵押。在这四个 Epoch 内,验证者仍然可能被捕获并受到惩罚。一个诚实的验证者的余额在大约 27 小时内可提取。但是,一个被惩罚的验证者将会延迟 8,192 个 Epoch (约 36 天)。
更多技术细节在 A note on Ethereum 2.0 phase 0 validator lifecycle 中有描述,其中包括这个流程图:
为了避免验证者集合在短时间内发生大的变化,有机制限制了每个 Epoch 内可以激活或退出的验证者数量。例如,这些机制使得快速激活多个验证者以攻击系统变得更加困难。
信标链使用更深层次的 有效余额 概念,这种概念的变化频率比验证者余额低,从而实现技术优化。
在每个 Epoch ,验证者均匀分布在插槽中,然后分成适当大小的委员会。验证者只能在一个插槽和一个委员会中。总体上:
最佳行为会给验证者带来最多的奖励。
信标链的创世日期是 2020 年 12 月 1 日,有 21,063 个验证者。验证者数量可能会因为惩罚或自愿退出而减少,或者抵押者可以激活更多验证者。接近 2 年后,验证者数量已经超过 400,000。
世界以前从未有过一个可扩展的平台用于 去中心化 系统和应用。如果你有兴趣深入了解,权威参考资料在 Ethereum Proof-of-Stake Consensus Specifications 中。其中包括信标链规范、其他关键资源的链接以及带有赏金的问题。参与其中或将其他人引荐到 challenges、ethresear.ch 或 Ethereum Magician 论坛,并成为历史的一部分!
感谢 Danny Ryan 对几个部分的审查和反馈,Momo Araki 对大量有用的图表,以及所有其他被咨询者。横幅图像源自 Hsiao-Wei Wang 的原始作品。 如果这个解释对你有帮助,请分享或推文 :) *
更新 2022-12-12: 添加了“LMD GHOST 双重投票”惩罚,感谢 Jiasun,Barnabé和 Ben。
2022-10-01: 删除了分片,跨链以及像 eth2 这样的旧术语。改进了开头和结论。请查看archive.org 以获取先前版本。
2020-05-23: 进一步澄清了质押奖励和惩罚,并根据 Beacon Chain 规范 v0.12,最佳验证者不会因不活跃而被耗尽。
_2020-04-27: 修正了双重投票的解释。感谢 Aditya Asgaonkar 的报告,评论,并查看他的帖子,如 Casper FFG Explainer。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!