详解以太坊 2.0 信标链

星球挖矿 2022-06-14
详解以太坊 2.0 信标链

免责声明:本文旨在传递更多市场信息,不构成任何投资建议。文章仅代表作者观点,不代表官方立场。

小编:记得

来源:ETH中文网

原文标题:详解以太坊 2.0 信标链

原文标题:《详解以太坊 2.0 信标链》 撰文:JosephC

诸位看官翘盼已久的 eth2.0 即将到来,大家是否想要一探究竟却又无从下手呢?Eth2.0 引入了信标链和分片等众多新概念,其相关报道和阐释不胜枚举,能同时顾及到广度和深度的文章却无一二。为了让大家对此等看似深奥的名词不再望而却步,本文系统地讲解了何为信标链、分片链及该系统上的其他机制,如验证者角色、验证者奖惩制度和共识机制等基本概念。

以太坊 2.0 系统的核心,然而针对该系统的大部分描述都过于技术化、针对性过强或者不够深入。

但是从这篇文章中,读者可以充分了解到信标链中的各个元素和运行机制。为了使读者在理解信标链时事半功倍,文章将通过一些例子,用通俗的语言解释其中的关键细节。

阅读本文之前,我们假设读者对以太坊比特币有不错的基础知识,并对权益证明 (Proof of Stake) 这一共识机制有一定了解。

现在进入正题,让我们一起深入探讨信标链的各个部分,诸如分片 (shards)、质押验证者 (staking validators) 、证明 (attestations)、委员会 (committees)、检验点 (checkpoints) 和最终确定性 (finality)。

分片:未来蓝图

要想进入信标链的世界,首先我们需要打开分片的大门。在扩容性方面,包括以太坊在内的区块链现在面临的主要问题是:每个节点必须验证和执行每一笔交易。

在计算机科学中,主要有两种扩容方式:

纵向扩容:即增强节点能力横向扩容:即增加节点数量

为了保证去中心化,区块链需要采取横向扩容方式。以太坊 2.0 (也即 Eth2 或 Serenity) 其中一个目标就是让节点可以在消费级硬件中运行。总体来说,Eth2 采用的分片机制指的就是对数据库进行横向分割。

总的来说,每条分片链都拥有一个节点子集,在该链上进行工作。虚拟矿工和验证者被分配到不同的分片中,并且只处理和验证自己所在分片链上的交易。

以太坊分片上的节点子集是动态的,按照区块顺序处理分片。

区块链实行分片机制的主要挑战在于如何确保分片安全性。由于验证者分散在不同的分片中,有的节点可能会恶意控制某个分片。

解决该问题的关键在于:

随机分配 (shuffling) 验证者,每个分片区块都有一个委员会,其中的验证者都经由随机挑选。这种做法的目的是,经数学计算,如果攻击者控制的验证者少于总数的三分之一,其想要攻击单个分片是难以实现的。

此外,错误性证明(fraud proofs)、数据托管证明 (custody proofs) 和数据可用性检查 (data availability checks) 都是确保安全的重要因素,不过需要单独的讲解才能说清楚。

Eth2 目前的计划是启用64 个分片。尽管分片和信标链是独立运作的,我们还是会针对整个系统的关键部分进行阐述。

分片向我们揭示了以太坊信标链能做什么,需要什么。我们也能从中了解到为什么在传统的区块链基础上需要增添这些新元素。分片式区块链作为一片新大陆,始终等待着创新者的开垦。

以太坊 2.0 的各个阶段

简单来说,以太坊 2.0 有三个阶段:

Phase 0 – 信标链Phase 1 – 分片Phase 2 – 执行

可以和人体进行类比:

Phase 0 – 心脏Phase 1 – 四肢Phase 2 – 大脑

也可以和一支强大的管弦乐队进行类比:

Phase 0 – 指挥Phase 1 – 乐器Phase 2 – 乐手

每个阶段都是系统里的重要组成部分,有着不同的特性。阶段 0 是以太坊 2020 年的目标之一。与其他阶段相比,阶段 1 要更加稳定,而阶段 2 侧重于执行与代理。

时隙 (slots) 和时段 (epochs)

信标链是以太坊 2.0 的心脏,它令以太坊系统在和谐与共识中有序运行。每个 slot 为 12 秒,每个 epoch 由 32 个 slots 组成,即 6.4 分钟。

在每一个 epoch 中,一个验证者被(伪)随机分配到一个 slot 和分片中。该验证者参与到他所被分配的分片的共识中,从而他可以对该分片的分片头进行投票。然后验证者将该 slot 上的分片头和信标区块连接起来。

一份证明(attestation)则是验证者的一记投票,投票通过验证者的余额进行加权。除区块之外,证明也会由验证者在系统中进行广播。

验证者之间也会互相监督,通过举报其他验证者自相矛盾的投票或提议多个区块的行为,从而获得奖励。

信标链里主要记录了验证者的地址、每个验证者的状态、证明和分片的链接。验证者需经由信标链激活,也可以转变在线状态,稍后在「信标链验证者激活和生命周期」中有简单的介绍。

质押验证者:含义

验证者是虚拟的,并由质押者激活。在工作量证明 (PoW) 共识机制中,成为矿工需要购买挖矿硬件。而在以太坊 2.0 阶段,用户通过质押 ETH 来激活和管理验证者。

为了更清楚地理解质押验证者的含义,我们可以将质押者(stakers)和质押金 (stake),验证者 (validators) 和余额 (balance) 联系起来。每个验证者拥有的余额最多为 32 个 ETH,不过,质押者可以质押他们所有的 ETH。每质押 32 个 ETH,一个验证者就会被激活。

验证者通过验证者客户端进行工作,而客户端借助信标(链)节点来运行。每个信标节点都有跟踪和读取信标链的功能。而每个验证客户端都可以执行信标节点的功能,或者调用信标节点。一个客户端允许一个或以上验证者执行验证职能。

交联:分片扎根信标链

交联 (crosslinks) 是指将一个信标区块和一个分片区块连接起来,在一个交联中,信标链紧跟分片链头。由于一个信标区块中有 64 个分片,因此至多可以容纳 64 个交联。如果在某个 slot 中,没有验证者为其他 63 个分片提议区块的话,在这个信标区块上可能只有一个交联。

交联计划于 eth2 的阶段 1 实现,为的是将分片扎根在信标链中,为分片分叉选择、分片链最终确定性和跨分片通信打好基础。所有分片链全程都与信标链紧密相连。

委员会 (committees):介绍

一个委员会由一组验证者组成。为加强安全保障,每个 slot (在信标链和每个分片里)的委员会至少由 128 位验证者组成。而一个恶意攻击者能够控制 2/3 委员会成员的可能性低于万亿分之一。

以太坊信标链这一名词,来源于随机信标(randomness beacon, 向公众提供随机数字)这一概念。信标链在一个伪随机的过程(RANDAO)中执行共识。

上图综合描述了三个 slot 中发生的情况。在 slot 1 中,有验证者提议出一个区块,该区块得到两个验证者的证明;而委员会 A 里的一个验证者离线了。slot 1 中的证明和区块被广播到网络上,许多验证者也收到了该信息。

在 slot 2 中,又一个区块被提议出来,而委员会 B 的一个验证者错过了该信息,于是该验证者认为信标链头是 slot 1 中的区块。

请注意,这个验证者跟 slot 1 的离线验证者有所不同。投票证明信标链头的这个过程被称为」LMD GHOST 投票」。在 slot 3 中,委员会 C 上所有的验证者都遵循 LMD GHOST 分叉选择规则,并独立地投票选出同一个信标头。

一名验证者在每个 epoch 中只参与一个委员会。

一般来说,系统中的验证者会超过 8192 个,所以每个 slot 中会有一个以上委员会。所有委员会的规模都一样大,至少由 128 个验证者组成。当系统中的验证者少于 4096 个时,安全性就会打折扣,因为这意味着单个委员会的验证者将少于 128 个。

委员会 (committees):关键

在每个 epoch 中,验证者们被均匀地分配到各个 slot 中,然后进一步分配到规模相当的各委员会中。所有验证者都要在自己所在的 slot 中投票选出信标链头。每个委员会都要在自己所在的 slot 中尝试交联某个特定的分片。

混洗 (shuffling) 算法会适时调整每个 slot 中委员会的数量,以保证每个委员会都至少有 128 名验证者。

举个例子,假定有 16384 名验证者,其中 512 名验证者被伪随机分配到 slot 1 中,另外 512 名被分配到 slot 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 剩下的 slot 中再三重复。每个验证者在自己所处的 slot 中,可以进行投票、证明以及交联。在该 epoch 结束之后,所有 16384 名验证者都已发出过投票并且和分片进行过交联。

但是,前面所提到的验证者投票都是针对 slot 的,而并非针对 epoch。打个比方,其区别类似在地方选举和全国大选中进行投票。到目前为止,全体验证者还并未就同一个事物进行投票。

以下部分将进一步阐释检查点 (checkpoints) 和最终确定性 (finality),描述了各验证者处于分配的 slot 时,针对 epoch 发起的投票。也就是说,全体验证者在自己所处的 slot 中,还要为 epoch 的检查点投票。

信标链检查点(Beacon Chain Checkpoints)

检查点 (checkpoints) 是位于 epoch 第一个 slot 里的区块。

如果这个 slot 内没有产生区块,则最近的前一个区块即为检查点。每个 epoch 都会有一个检查点区块;一个区块可能同时是多个 epoch 的检查点。

为简要叙述,下文将假设所有验证者的余额相同。

信标链头发生了什么

在 slot 96 处,一个时段边界区块 (EBB) 被提议,且该区块还包含了对 epoch 2 中检查点的证明。

Epoch 2 检查点的证明投票现达到了 2/3 的绝对多数,意味着 epoch 2 的检查点被证明了。因此,上一个被证明的检查点,即 epoch 1 检查点,也获得了最终确定性。slot 32 处的区块一旦被最终确定,此前所有区块都会被最终确定。

在对检查点进行最终确定时,对同时可以得到最终确定的区块在数量上并没有限制。所以,虽然最终确定性仅在 epoch 边界的时候产生,但证明 (attestations) 是逐块累加的,下文的「从创世区块到区块链头会发生什么」提供了另一种解释。

从 slot 1 到 slot 32 的信标链区块所包含的所有交联,也会使分片链获得最终确定性。换句话说,当一个信标区块被最终确定时,与该块所交联的分片区块也能被最终确定。

交联本身不足以使一个分片区块被最终确定,但是对分片链的分叉选择有所帮助。

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

采取同样的办法,我们可以观察到从创世区块开始的一条故事线:

从 slot 1 到 slot 36,所有的提议者都提议了一个区块,且所有区块都被添加到链上。

对于 epoch 1 的所有区块来说,其检查点 (slot 32 处的区块) 累积了 55% 的验证者证明。验证者在 slot 64 处提议区块时,同时也对 epoch 1 处的检查点发起投票。现在,有 70% 的验证者都证明了 epoch 1 的检查点,因此 epoch 1 检查点被证明 (justified)。

Epoch 2 结束后,epoch 2 的检查点 (slot 64 处的区块) 累积了投票证明但还达不到 2/3 的多数要求。验证者在 slot 96 处提议区块时,同时也对 epoch 2 处的检查点发起投票,所以这时候,epoch 2 检查点的投票达到了 2/3 的多数要求,也就是被证明了(justification)。

Epoch 2 的检查点被证明的同时,epoch 1 的检查点以及所有此前的区块被最终确定了。

还有一种可能性,我们只考虑到 epoch1。Epoch 2 的检查点被提议出来之前,epoch 1 的检查点可能已经获得了绝对多数投票。

譬如说,当 slot 32 和 slot 54 的区块被提议出来时,slot 32 的检查点的证明投票可能已经达到多数要求了。因而在这种情况下,检查点可能在 epoch 2 之前就已经被证明了。

最后一点,检查点可以在离其最近的 epoch 中被证明,但是至少隔一个 epoch 才能被最终确认。

有时,一个区块被证明意味着两个甚至多个 epoch 以前的区块被最终确定。Gasper 论文里讨论了这种情况,只有在网络高延迟、网络隔离或遭遇强大攻击等个别情况下,才会出现这种状况。

最终确定性对于分片及以太坊区块上的用户来说是无比重要的,保证用户们的交易安全进行,不被篡改,并且降低了跨分片通信的复杂性。如果没有最终确定性,分片内部和分片之间的交易回滚会具有破坏性,或让分片的利好不复存在。

深入了解证明 (attestations)

一则证明包含一个 LMD GHOST 投票和一个 FFG 投票。

理想情况下,每个 epoch 中所有验证者提交一份证明。每一个证明有 32 个 slot 的机会被打包进链,这意味着在单个 epoch,一名验证者可能有两份证明被打包上链。

如果验证者在其所分配的 slot 里发送证明,且该证明被打包上链,那么验证者获得的奖励为最大值;随后打包上链所获得的奖励就会不断减少。

为了留给验证者准备的时间,他们被提前一个 epoch 分配到委员会中。一旦 epoch 开始,提议者只会被分配到各 slot 中。尽管如此,秘密领导人选举旨在降低攻击和贿赂提议者的风险。

委员会使得联合签名的技术达到最优化状态,将每一名证明者的签名聚合成一个签名。当验证者在同一个委员会中,并做出了同样的 LMD GHOST 和 FFG 投票时,他们的签名就可以被聚合。

信标链验证者奖惩机制 证明者奖励(attester rewards)证明者惩罚(attester penalties)质押者特有风险(typical downside risk for stakers)罚没和吹哨者奖励(slashings and whistleblower rewards)提议者奖励(proposer rewards)「不作为」惩罚(inactivity penalty)

当验证者所给出的证明 (LMD GHOST 或 FFG 投票) 为其他大部分验证者所同意时,会获得奖励。在 eth2 的阶段 1 中,验证者也可以通过与分片产生交联而获取奖励。当区块被最终确定,奖励也随之确定。

相反,如果验证者没有提交证明,或者其投票选出的区块最终没有被确定,那么验证者就会受到惩罚。

在描述相对来说不那么常见的奖惩制度之前,你可能想知道成为一名质押者所面临的风险。

作为一名质押者,损失 ETH 的风险与回报并存。如果一名验证者在一年中能赚取 10% 的报酬,那么一名工作表现差强人意的 (诚实) 验证者则面临 10% 的损失。

比如说,一名验证者总是不在线,或者其投票的区块总是无法被最终确定,他将会受到惩罚,而罚款数额等于一名验证者投出有效区块所获得的奖励数额。

罚没的数额最少为 0.5 个 ETH,最多则是一名验证者的所有质押金额。

一名验证者如果受到了罚没 (slashing) 惩罚,其将至少损失余额的 1/32,且会被停止继续参与工作。该名验证者所受惩罚的程度,与连续 8192 个 epoch 都离线的验证者所受的惩罚相当。

基于同时受到罚没惩罚的验证者的数量,协议还会对验证者做出额外的惩罚。施以额外惩罚的基本公式是:「validator_balance3fraction_of_validators_slashed」。

也就是说,如果 1/3 的验证者同时受到了罚没,他们会损失所有余额。而对罚没行为举报成功的验证者,则可以获取吹哨者奖励。

区块一旦得以最终确定,区块提议者便可以获得相当可观的奖励。一直在线且妥善完成工作的验证者,他们提议区块所能获得的奖励将提高 1/8。如果发生罚没行为,提议者还可以将罚没证据打包进区块,从而获得少量报酬。在 eth2 阶段 0,所有吹哨者的奖励实际上都归于提议者。

以太坊 2.0 这个系统里有许多机制,通过了解其作用,便可以更好地了解这些机制。这套奖惩制度里,最后一项便是「不作为」惩罚。

简单来说,如果有超过 4 个 epoch 没有获得最终确定性,那么所有验证者都要受到翻倍的「不作为」惩罚,直到下一个检查点被最终确定。

「不作为」惩罚的作用在于:如果 50% 的验证者掉线了,在 21 天后会再次重新对区块进行最终确定。

罚没 Slashing

如果出现以下这三种情况,要对验证者进行罚没惩罚:双重提议、FFG 双重投票和 FFG 环绕投票。LMD GHOST 投票不会受到罚没惩罚。

双重提议 (double proposal)

指一名区块提议者在他所分配到的 slot 里提议一个以上的区块。

双重投票 (double vote)

指一名验证者针对同一个目标检查点 (target),不同的源检查点 (source) 发起的两次 FFG 投票。

环绕投票 (surround vote)

指一名验证者发起的 FFG 投票环绕之前的 FFG 投票,或是被之前的 FFG 投票所环绕。

下面有两个例子,背景是一名验证者在 epoch 5 内,为 slot 32 处的源检查点和 slot 128 处的目标检查点发起了一次 FFG 投票:

在 epoch 6 内,为 slot 64 处的源检查点和 slot 96 处的目标检查点发起的 FFG 投票,被其在 epoch 5 中的投票环绕。在 epoch 6 内,为 slot 0 处的源检查点和 slot 160 处的目标检查点发起的 FFG 投票,则环绕了其在 epoch 5 中的 FFG 投票。

在 epoch 6 内,针对 slot 128 目标检查点的 FFG 投票是双重投票,除非 slot 32 为源检查点,否则要受到罚没。相同的 FFG 投票不会遭到罚没。

针对同一个源检查点的两次 FFG 投票,不用受到罚没。这对系统的活性很重要。

比如说,如果有两个分叉,每个分叉占有验证者 50% 的余额,那么协议需要鼓励 (而非惩罚) 验证者通过对同一个源检查点和一个不同的目标检查点发起投票,从而在分叉间转换。验证者可以在分叉之间安全地来回转换,并尝试达到 2/3 的绝对多数,以避免陷入僵局。

一名吹哨验证者提出举报时,需要打包冲突投票的相关信息来证明该验证者应受到罚没。

要在一个庞大的记录系统里,有效地找出冲突投票,是对算法和数据结构的一项巨大挑战。目前「罚没检测工程挑战」正在寻求参与者。

验证者完全有能力使自己避免被罚没:只需要记住其对哪些证明和提议进行了签名。一名诚实的验证者不会因为其他验证者的行为而受到罚没。只要验证者没有对冲突的证明或提议进行投票,就不会受到罚没。

一个验证者客户端可以运行多个信标节点,从而延长系统的正常运行时间、增强信任和 DoS 攻击抵御。在运行节点或是运行备份验证者客户端时,用户需要注意,验证者有无对冲突的信息进行签名。

信标链验证者激活和生命周期

每一位验证者需要 32 个 ETH 才能激活。一个用户在以太坊主网的存款合约 (deposit contract) 里质押 32 个 ETH,就会激活一位验证者。

当验证者的余额低于 16 个 ETH 时,信标链就会停止这些验证者的工作。质押者可以将剩余的验证者余额提出来,但目前无法在 eth2 的阶段中实现。

在 2048 个 epoch,将近 9 天时间的工作之后,验证者还可以自愿选择退出。退出时,质押者需要等待 4 个 epoch 才能撤出其质押金在这 4 个 epoch 之内,验证者仍然有可能面临举报和罚没。

一名诚实验证者大概 27 小时之后便可以提出其余额。然而,如果一名验证者受到了罚没惩罚,则必须等 8192 个 epoch (大约 36 天) 之后才能够提出余额。

「以太坊 2.0 阶段 0 验证者生命周期」中有更详细的技术说明,内含以下示意图:

ETH2.0 规范」里有权威的参考,其中包含信标链规范,还有其他关键资源以及赏金的相关问题。

目前来说,点对点网络层最亟待完善。来和我们一起参与这项挑战吧!更多技术细节请访问 ethresear.ch 或者 Ethereum Magician’s forum,和我们一起创造历史吧!

感谢 Danny Ryan 对多个部分的审校和反馈,感谢 Momo Araki 的图表以及提供咨询的各位。标题图由 Hsiao-Wei Wang 的原作修改而来。如果读者朋友觉得本文对你有所帮助,请不吝分享!

免责声明:世链矿业网作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链矿业网无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。

风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。

    分享文章:

  • 微信扫一扫
    详解以太坊 2.0 信标链