主页 > imtoken > 深度丨以太坊2.0的信标链长什么样?

深度丨以太坊2.0的信标链长什么样?

imtoken 2024-01-26 05:12:59

您需要了解的关于分片、质押验证器、证明、委员会、检查点和最终性的一切信息。

还记得初窥区块链奥秘时的喜悦吗? 你是否渴望对信标链有类似的理解? 以太坊的信标链是以太坊系统的核心,但该系统的大部分内容过于技术化、针对性或深度不够。

在这里,您可以全面了解信标链的构成要素和运行机制。 在关键细节中使用了示例,以帮助您更好地理解并节省时间。 我们假设您拥有扎实的以太坊或比特币基础知识,并且对权益证明 (PoS) 有一定的了解。 让我们深入探讨分片、质押验证器、证明、委员会、检查点和最终性。

分片:宏伟蓝图

在了解信标链之前,介绍一下分片是有帮助的。 包括以太坊在内的公链在可扩展性方面面临的主要问题是每个节点都必须验证和执行所有交易。 在计算机科学中,主要有两种扩展方法: 垂直扩展:使节点越来越强大。 水平扩展:添加更多节点。 为了实现去中心化,区块链需要横向扩展。 以太坊 2.0(也称为 eth2 或 Serenity)的目标之一是让节点在消费级硬件上运行。 分片是一种水平扩展数据库的方法。 通常,分片链有一个节点子集来处理它。 验证者被分配到不同的分片链,并且只处理和验证该分片链中的交易。

以太坊分片上的节点子集是动态的,并逐块处理。

在区块链中实现分片机制的主要挑战是如何保证分片的安全性。 由于验证者分散在不同的分片中,一些节点可能会恶意控制一个分片。 解决方案的关键:欺诈证明、保管证明和数据可用性检查也是重要的安全组件。 eth2 目前的计划是使用 64 个分片。 虽然分片和信标链是独立运作的,但我们还是会讲解整个系统的关键部分。

分片揭示了以太坊信标链的作用和需求。 我们也理解为什么要在传统区块链中加入新的元素。 分片公共区块链的新兴领域始终对激发开发人员创新开放。

以太坊2.0阶段

简而言之,以太坊 2.0 分为三个阶段: 类比管弦乐队:各个阶段都是系统的重要组成部分,具有不同的特点。 Phase 0 是以太坊 2020 年计划的一部分。 第一阶段通常比其他阶段更静态。 第二阶段通常是关于执行和代理的。

时隙和纪元

信标链是以太坊 2.0 的核心。 它为系统的和谐与共识设定了节奏。 每个时隙为 12 秒,一个周期为 32 个时隙:6.4 分钟。

深度丨以太坊 2.0 的信标链究竟是什么样的?

插槽是向信标链和分片添加块的机会。 可以想象,信标链和分片链是有节奏地编排的。 当系统处于最佳运行状态时,每 12 秒添加一个信标(链)块和 64 个分片块。 验证者需要与这个时间同步。 时隙类似于块生产时间,但时隙可以为空。 信标链和分片的创世块都在 slot 0 中生成。分片将在信标链周期 0 的下一个周期(Epoch0)开始运行,但分片链和信标链都有自己的周期 0( Epoch0) 并包含它们的创世块。

验证器、证明和信标链

虽然工作证明 (PoW) 与矿工相关,但在以太坊 2.0 中,验证者是权益证明的“虚拟矿工”。 验证者积极参与以太坊 2.0 协议的共识。 他们的激励机制将在后面的信标链验证者奖惩体系中讨论。

区块提议者是随机选择的验证者来生成区块。 在大多数情况下,验证者是对信标块分片块进行投票的证明者。 这些投票记录在信标链中。 投票决定信标链和分片的头部。

深度丨以太坊 2.0 的信标链究竟是什么样的?

在每个时期,验证者被随机分配到一个插槽和分片。 该验证者参与他所分配到的分片的共识,因此他可以对该分片的分片头进行投票。 然后验证器将该槽上的分片标头与信标块连接起来。

证明是验证者的投票,由验证者的余额加权。 除了块之外,验证者还在系统中广播证明。

验证者还相互监管,奖励报告其他验证者相互矛盾投票或提议多个区块的验证者。

信标链的内容主要是验证者地址、每个验证者状态、证明和分片链接。 Validators由信标链激活,可以进行状态转换,后面会在Beacon Chain Validation Activation and Lifecycle中简单介绍。

质押验证器:语义

验证器是虚拟的,由质押者激活。 在 PoW 中,用户购买硬件成为矿工。 在以太坊 2.0 中,用户质押 ETH 以激活验证者。 我们可以将 stakers 与 stake 相关联,将 validators 与 balance 相关联。 每个验证者的余额最多为 32 ETH。 然而,质押者可以质押他们所有的 ETH。 每抵押 32 个 ETH,就会激活一个验证器。

验证器通过使用信标(链)节点的验证器客户端进行操作。 信标节点具有跟踪和读取信标链的功能。 验证者客户端可以实现信标节点的功能,也可以调用信标节点。 一个验证者客户端可以执行一个或多个验证者。

交联:将分片连接到信标链

交联就是把信标链和分片链连接起来。 在交联中,信标链跟随分片链的头部。 由于有 64 个分片,每个信标块最多可以包含 64 个交联。 一个信标块可能只有一个交联(如果没有验证者为该时隙中的其他 63 个分片提议块)。 Eth2 Phase 1 计划交叉链接,将分片链连接到信标链,作为分片分叉选择、分片链最终确定和跨分片通信的基础。 所有分片链始终遵循信标链。

委员会:介绍

委员会是一组验证者。 为了安全起见,每个槽(在信标链和每个分片中)都有一个由至少 128 个验证者组成的委员会。 恶意攻击者控制 2/3 委员会的概率小于万亿分之一。 以太坊信标链的概念来源于随机信标——向公众分发随机数的概念。 信标链在随机过程(RANDAO)中达成共识。

深度丨以太坊 2.0 的信标链究竟是什么样的?

RANDAO 随机过程根据验证者余额的权重选择区块打包者(Proposers)。 验证者可能是同一槽位的提议者和委员会成员,但这不是常态。 这种情况发生的概率是 1/32,所以我们大约每个 epoch 都会遇到一次。 在上面的场景中以太坊信标链质押,验证者少于 8192 个,否则每个槽将包含至少两个委员会。

本次对信标链的讲解主要是信标链委员会:为信标链服务的验证者。 一个(信标)委员会被随机分配一个分片来交叉链接到一个信标块。 没有固定的委员会。 负责交联区块的委员会随着每个区块的变化而变化。 单独构建区块链区块的分片链委员会留待未来讨论。 许多分片块可以由不与信标链交互的分片链验证者构建,但是,要使分片与其他分片通信,需要信标链委员会将其与信标块交叉链接。

深度丨以太坊 2.0 的信标链究竟是什么样的?

该图描述了三个插槽中发生的情况。 验证者每个时期只能在一个委员会中。 通常,有超过 8,192 个验证者:也就是说,每个时隙有多个委员会。 所有委员会的规模都相同,并且至少有 128 个验证者。 当验证人少于 4,096 人时,安全概率会降低,因为委员会的验证人少于 128 人。

委员会:关键

在每个时期,验证者被平均分配到槽中,然后再细分为适当规模的委员会。 该插槽中的所有验证器都会验证信标链标头。 该时段中的每个委员会都尝试交叉连接特定的分片。 洗牌算法按比例增加或减少每个槽的委员会数量,以便每个委员会至少获得 128 个验证器。

例如,假设有 16384 个验证器,其中 512 个随机分配到槽 1,另外 512 个分配到槽 2,依此类推。 slot 1 中的 512 个验证者被进一步分成 4 个委员会,并随机分配到分片中。 假设分片 33、55、22 和 11 是分配给这四个委员会的分片。 所有 512 个验证者必须在 slot 1 发起 LMD GHOST 投票; 来自一个委员会的 128 个验证者尝试与分片 33 进行交叉链接; 来自另一个委员会的 128 个验证者尝试与分片 55 进行交叉链接; 其余两个委员会尝试与分片 22 和分片 11 进行交叉链接。在 slot 2 中,重复该过程,将 512 个验证者也分为 4 个委员会,然后随机分配到分片。 假设它们被分配到分片 41、20、17、15。 要求所有 512 个验证者投票选出 slot 2 中的信标链头; 同时,这些委员会也尝试与分片 41、20、17 和 15 进行交叉链接。这个过程也将在 epoch 的剩余时隙中重复。 每个验证者都可以在自己的插槽中进行投票、证明和交叉链接。 在 epoch 结束后,所有 16384 个验证者都已投票并与分片交联。

但到目前为止,验证者投票一直是特定于时隙的,而不是特定于时代的。 这就像投票给地方政府而不是在更广泛的全国选举中投票。 所有验证者都不会对同一件事进行投票。 下面关于检查点和最终性的部分描述了验证者针对特定时期的投票。 在指定的时间段内,所有 16,384 个验证者也将对 epoch 的检查点进行投票。 信标链检查点

检查点是位于纪元第一个时隙中的块。 如果在这个槽中没有生成块,则最近的前一个块是检查点。 每个纪元都会有一个检查点块; 一个区块可能同时是多个时期的检查点。 需要注意的是slot 65和slot 128之间有空位,Epoch2的checkpoint本来应该在slot 128,但是因为slot丢失了,所以epoch 2的checkpoint还是slot 64产生的块。Epoch 3是同样,slot 192是空的,所以epoch 3的checkpoint是slot 180产生的块。Epoch边界块(epoch boundary block)是一些文献中使用的术语(比如Gasper的论文,也是出处上图),可以认为是checkpoint的同义词。 发起LMD GHOST投票时,验证者也为最新epoch的checkpoint投票,投票者想要建立的新checkpoint称为“目标checkpoint”。 这种投票称为 Casper FFG 投票,投票中还会包括投票者最后确定的检查点,称为“源检查点”。 在上图中,epoch1 中的验证者投票使用创世块作为源检查点,然后推荐在 slot64 生成的块作为目标检查点。 在 epoch2 中,同一个验证者为同一个检查点投票。 只有分配给插槽的验证器需要投票给插槽的块。 但是,所有验证者都必须为每个时期启动一个检查点。 FFG投票。

绝大多数

所有活跃验证者总余额的 2/3 支持的投票内容为绝对多数(Supermajority)。 举个例子,假设有三个活跃的验证者:两个余额为 8ETH 的验证者和一个余额为 32ETH 的验证者,则绝对多数投票必须包括拥有 32ETH 的验证者的投票:尽管其他两个验证者的投票可能不同来自这个验证者,但他们没有足够的余额来形成绝大多数。

终局性

当一个epoch结束时,如果checkpoint得到2/3的票数,即形成绝对多数,那么checkpoint就被证明是合理的。 如果检查点 B 已被证明,并且下一个 epoch 的检查点也被证明,则 B 被最终确定。 通常,检查点会在两个时期内完成,即 12.8 分钟。

平均而言,一个用户的交易总是发生在一个epoch的中间,所以距离下一个checkpoint还有半个epoch。 因此,一笔交易可以在 2.5 个纪元(16 分钟)后完成。 (终结性)。 理想情况下,超过 2/3 的证明将打包在一个周期的前 22 个时段内。 因此,交易确认的平均时间为 14 分钟(16 + 32 + 22 槽)。 区块确认从区块证明,到被证明,再到最​​终确定。 用户可以自行选择是等待交易完成,还是较低的安全级别就足够了。

深度丨以太坊 2.0 的信标链究竟是什么样的?

信标链头怎么了?

在 slot96 中提出了纪元边界块 (EBB),其中包含纪元 2 中检查点的证明。 epoch 2 检查点的证明投票现在有 2/3 绝对多数,这意味着 epoch 2 检查点被证明,因此 epoch 1 检查点被最终确定。 slot32 的最终性保证了之前所有块的最终性。 完成检查点时,对完成的块数没有限制。 尽管最终性仅在时间边界产生,但证明是逐块累积的。 下面“从创世块到区块链头发生了什么”提供了另一种描述。 从 slot1 到 slot32 的信标块中包含的所有交联将导致分片链的最终确定。 换句话说,当一个分片块被交联成一个完整的信标块时,它就获得了最终性。 交联本身不足以使分片块最终确定,但它有助于分片链的分叉选择。

从创世块到区块链头部发生了什么

同样,我们可以从创世块中发现故事情节。 从 slot1 到 slot63 的所有提议者都提议了一个块,这些块被添加到链中。 对于 Epoch1 中的每个区块,它的检查点(位于 Slot 32 的区块)累积了 55% 的验证者证明。 validator提出了slot64的区块,也包含了Epoch 1 checkpoint的认证。 现在,70% 的验证者已经验证了 Epoch 1 检查点:这导致它被证明。 epoch2的checkpoint(slot64)在epoch2的证明中没有达到2/3的绝对多数。 当验证者在第 96 槽位提出一个区块时,他也投票给了第 2 个周期的检查点,所以此时第 2 个周期的检查点的投票达到了 2/3 多数的要求,这意味着它被证明了。 在 epoch 2 的检查点被证明的同时,epoch 1 的检查点和所有先前的块都已完成。

也有可能我们只考虑 epoch1。 来自纪元 1 的检查点可能在纪元 2 的提议之前获得了绝对多数票。例如,当提议时隙 32 和时隙 54 的块时,时隙 32 的检查点可能已经获得多数票。 因此,在这种情况下以太坊信标链质押,检查点可能在第 2 个时期之前就已经得到证明。最后,一个检查点可以在其当前时期得到证明,但至少要到一个时期之后才能最终确定。 有时,一个区块被证明意味着两个或更多纪元前的区块已经完成。 Gasper 论文讨论了一些仅在高网络延迟、网络隔离或强大攻击的情况下才会出现的情况。 对于分片和以太坊区块上的用户来说,最终性非常重要。 保证了用户交易的安全性,降低了跨分片通信的复杂性。 如果没有最终确定性,分片内和分片之间的事务回滚可能会造成破坏,甚至会抵消分片的好处。

证明:审查

证明由 LMD GHOST 投票和 FFG 投票组成。 理想情况下,所有验证者每个时期都提交一份证明。 每个证明有 32 个 slot 机会被打包到链中,这意味着在一个 epoch 中,一个验证者可能有两个证明被打包到链中。 如果验证者在其分配的槽中发送一个证明,并且该证明被打包上链,则验证者获得的奖励为最大值; 那么包在链上获得的奖励会不断减少。 为了让验证者有时间准备,他们被提前一个纪元分配给委员会。 只有在纪元开始后,提议者才会被分配到插槽中。 尽管如此,秘密领导人选举旨在降低攻击和贿赂提议者的风险。 委员会优化了联合签名技术,将每个证明人的签名聚合为一个签名。 当同一个委员会中的验证者投票给同一个 LMD GHOST 和 FFG 时,他们的签名可以被聚合。

信标链验证人奖惩机制 当一个验证人做出大多数其他验证人都同意的证明(LMD GHOST 和 FFG 投票)时,他们将获得奖励。 在 Eth2 Phase 1 中,验证者也将因交叉链接而获得奖励。 当区块最终确定时,奖励也随之确定。 另一方面,如果验证者未能提交证明或投票给无法最终确定的区块,他们也会受到惩罚。 在描述相对不常见的奖励和惩罚系统之前,您可能想知道成为质押者的下行风险。

作为质押者,失去 ETH 的风险与奖励并存。 如果一个验证者在一年中赚了 10%,那么(诚实的)验证者可能会因为做得不好而面临 10% 的损失。 例如,如果一个验证者总是离线,或者他投票的区块无法最终确定,他将被处以相当于验证者投出一个有效区块所获得的奖励金额的罚款。 罚没范围可以从 0.5 ETH 到验证者的全部股份。 受到罚没的验证者将损失至少 1/32 的余额并停止工作。 惩罚与验证者离线 8192 个纪元一样严重。 该协议还根据在类似时间段内削减的验证者数量施加额外的惩罚。

该额外惩罚的计算公式为:验证者余额×3×被罚没验证者的百分比。

也就是说,如果 1/3 的验证者同时被罚没,他们将失去所有余额。 成功举报罚没行为的验证者可以获得举报者的奖励。 一旦区块敲定,区块打包者可以获得可观的奖励。 始终在线且表现出色的验证者提出的区块奖励将增加 1/8。 在出现罚没行为的情况下,提议者也可以将被罚没的证据打包到区块中,获得小额奖励。 在 Eth2 Phase 0 中,所有的举报人奖励实际上都归给了提议者。 以太坊2.0系统有很多机制,对这些机制的评价应该从所有机制的整体效果出发。 奖惩制度的最后一部分是对不作为的惩罚。 简单来说,如果超过 4 个 epoch 没有实现最终确定,所有验证者都会受到双重不作为惩罚,直到下一个检查点最终确定。 不被惩罚的一点是,如果 50% 的验证者下线,该区块将在 21 天后重新敲定。

Slashing:对于验证者来说,主要有三种罚没条件,即:双重提议、FFG双重投票和FFG环绕投票。 LMD GHOST 投票不会受到处罚。 双重提议是指区块打包者在其分配的插槽中提议多个区块。 双重投票是指验证者提交FFG投票时,多个投票指向同一个目标检查点,但引用的源检查点不同。

环绕投票是指当验证者提交 FFG 投票时,多票指向的检查点恰好呈圆形。 下面是验证者在第 5 轮中对第 32 槽的源检查点和第 128 槽的目标检查点发出 FFG 投票的后台示例: 对于第 6 轮中第 128 槽的目标检查点的 FFG 投票是双重投票,除非插槽 32 是源检查点,否则它会被削减。 相同的 FFG 投票不会被没收。 具有相同来源检查点的 FFG 投票也不会招致罚没。 这是维持网络活动的重要条件。 例如,如果两条分叉链各有 50% 的验证者余额支持,协议应该鼓励验证者通过投票给同一个源检查点,但不同的目标检查点来在分叉之间切换(而不是因为切换分叉而惩罚他们,这会导致网络继续分裂)。 能够在分叉之间安全切换允许验证者打破僵局并尝试形成 2/3 多数。

举报人在举报时,需要打包冲突选票的信息,以证明验证人应该被罚没。 要在庞大的记录系统中高效地找到冲突的选票,对算法和数据结构都是一个巨大的挑战。 没收检测工程挑战赛目前正在招募参与者。 验证者完全有能力避免削减自己:他们只需要记住他们签署了哪些证明和提案。 一个诚实的验证者不会因为其他验证者的行为而被罚没。 只要验证者不对冲突的证明或提案进行投票,他们就不会被削减。

一个验证者客户端可以运行多个信标节点,从而增加系统正常运行时间,增强信任并抵御 DoS 攻击。 用户在运行节点或运行备份验证人客户端时,需要注意验证人是否对冲突信息进行了签名。 信标链验证者激活和生命周期(Beacon Chain Validator Activation and Lifecycle) 每个想要成为验证者的用户必须首先拥有 32 个 ETH 才有资格成为验证者。 用户向以太坊主网上的保证金合约质押32 ETH,以获得验证者资格。 另一方面,信标链也会劝阻(停用)所有余额减少到16ETH的验证者; 质押用户可以提取剩余的验证者余额,但这在 Eth2 Phase 0 中是做不到的。验证者也可以在服务 2048 个 epoch(约 9 天)后自愿退出。 退出时需先完成4个epoch,质押用户方可收回权益。 在这 4 个 epoch 期间,验证者的余额仍然是可罚没的。 因此,诚实验证者的余额可以在大约 27 小时后撤回。 《Ethereum 2.0 Phase 0 Validator Lifecycle》有更详细的技术说明,包括下图:

深度丨以太坊 2.0 的信标链究竟是什么样的?

为了避免验证者集合在短时间内发生大规模变化,有一种机制可以限制单个 epoch 内可以激活和退出的验证者数量。 这使得激活许多验证器并快速攻击系统的攻击更难发起。 信标链还使用了一个叫做“有效余额”的概念,它避免了验证者余额的变化,使技术优化成为可能。

总结:在每个时期,验证者被平均分配到不同的槽位,并进一步划分为相同规模的委员会。 验证者只有 1 个被调用的槽,并且只会存在于 1 个委员会中。 因此:采取最佳行为的验证者获得最多的奖励。 激活信标链至少需要 16,384 个创世验证者。 验证者的数量可能会因罚没或自动退出而减少,并可能会随着质押者的激活而增加。 当系统升级到 eth2 阶段 1 或更高版本时,将需要更多的验证者工作。 信标链至少需要262,144个验证者(质押量将超过800万个ETH)才能出块,每个块包含64个交联。