Eth2 验证者的生命步骤

时间:2021-07-27 18:31编辑:未知

ETH 2.0 用权益证明机制来保护互联网,也就是由很多叫做 “验证者” 的计算机线程来投票决定哪一个区块可以上链(即所谓的 “attesting”,作见证),当然也会自己提出备选区块。不过,验证者不是仅仅只有 “开” 和 “关” 两种状况:从成为验证者到退出验证者的整个生命周期中,其状况会经过多次转换。本文会深入研究验证者的生命周期,展示各阶段和转换过程的实质、怎么样触发转换,与每种转换的历时 。

先说明一下时间单位:ETH 2.0 中的时间一般是用 “epoch(时段)” 这种单位来度量的,1 个时段是 384 秒,也就是六分半钟。为便于理解,基于这一度量的时间我都转化成了以分钟、小时、天为单位,并在附录的脚注中提供详细情况。

验证者生命周期概述

在深入细则以前,大家先来看看验证者生命周期的概况、认识一下用于表述不同状况的术语。

各标签所示的阶段如下:

· 已存入保证金(Deposited):保证金要约已被ETH 1.0 区块链打包
· 等待激活(Pending):保证金要约被ETH 2.0 互联网同意
· 活跃(Active):验证者要见证区块及建议区块
· 马上退出(Exiting):验证者马上停止见证及建议区块
· 被罚没(Slashing):由于作弊被抓,验证者停止见证和建议区块
· 完全退出(Exited):验证者完全退出,不再参与任一步骤

也可由此概念出一种基本状况:“正在见证(attesting)”,激活、主动退出及完全退出都在该状况中,处于该状况的验证者被指望去见证及建议区块。这个状况是非常重要的,在此状况下,验证者需要连接ETH 2.0 互联网、同步数据,以履行责任,防止被惩罚。

概念完了这部分阶段之后,大家就来详细考察它们之间的转换过程。

保证金存入阶段

保证金要约被同意是验证者生涯的开始;这个同意过程是在ETH 1.0 链上发生的,由于验证者资金原本就放在ETH 1.0 链上。但 1.0 链同意之时,2.0 链还不可以感知到这笔存款。
验证者的保证金存入阶段大概要历时 7.5 个小时 ,以保证链重组影响到 以太币1 买卖的顺序乃至保证金要约无效化的概率足够小。这个阶段完成后,验证者就进入等待激活阶段 。

等待激活阶段

保证金在 Eth1 链上存入足够久之后,它就会被 Eth3 链同意。这标志着验证者正式开始同意 Eth3 的组织。假设一位验证者存入了至少 32 以太币 4,那样 TA 就可以开始作见证了。

等待激活的验证者会组成一个队列:在一个时间点,Eth3 链上能激活和能退出的验证者数目都是一个比较小的数目(所以要排队)5,以保证验证者集合的稳定性。假如队列是空的,那样等待激活的验证者会在大约 25 分钟将来激活 6;假如队列非常长,那可能要几天甚至几周才能激活。不过,排完队之后,验证者就可以直接激活、参与见证。

活跃阶段

通常来讲,一名验证者的绝大多数时间都处于这个阶段。活跃验证者大约每 6 分钟要发出一条见证消息,偶尔要自己建议区块 7。验证者会一直维持在活跃状况,除非出现下列三种状况:

· 该验证者因没准时发出见证消息而遭受惩罚,最后其余额低于 16 以太币
· 该验证者主动需要退出,办法是发送相应的一笔买卖(在刚激活的 9 天内不可以发出此种买卖)
· 该验证者被证明作恶

在前面两种状况中,验证者都会被加入退出队列(一段时间内能离开活跃状况的验证者数目也是有限的,就跟能进入的验证者数目受限一样,大概是每几分钟可以离开 1 个)。

在第三种状况下,验证会被加入作恶者队列,同意惩罚。

值得注意的是,假如有需要,验证者一直可以发送额外的保证金要约(包含相同的验证者信息)来 “充值” 余额(但有效余额的上限是 32)。如此就能防止验证者余额低于 16 然后被放到退出队列里去。

马上退出阶段

虽然主动退出的验证者表达了停止验证的意愿(不论是自愿还是被迫的),但,他们是不可以立即退出的。相反,虽然处于马上退出状况,他们还是要照常承担职责,跟活跃状况时候一样要见证和建议区块。如此保证了互联网的稳定性,防止了验证者立即退出会导致的冲击。

就像验证者想激活的时候有个等待激活状况和队列,想要退出的验证者也有一个队列,一段时间里仅允许少量验证者退出。同样地,主动退出阶段要花费的时间取决于排在前面的验证者有多少。

被罚没状况

验证者违反协议后被抓,就要立即被罚没 1 以太币(从其余额中扣除),然后进入被罚没状况,这跟马上退出状况类似,但还要遭受惩罚。这一点大家在下文的 “完全退出” 部分讨论。

处于马上离开状况乃至已经完全退出的验证者,都大概被罚没(验证者完全退出到可以取出资金以前有一段间隔,在此期间是可以被罚没的)。如此能预防作恶的验证者借助正常的退出机制、在作恶被发现以前逃之夭夭。结果就是状况模型变得愈加复杂:

完全退出

转到完全退出状况之时,验证者就正式结束了我们的工作,不再需要见证和建议区块,也不再需要紧跟 Eth3 区块链的实时动态了。

转成完成退出状况之后,大概还有一天的延迟 8,之后才能取出验证者余额。不过,假如一个验证者是从被罚没状况中完全退出的,那还要同意两项额外的惩罚。

第一项,从完全退出到可以取款的间隔会长得多,要 36 天 9。第二项,在这 36 天期间,系统还会依据该验证者作恶被抓的时间点前后 18 天内被罚没的验证者数目对该验证者施加进一步的惩罚。那样该验证者的有效余额损失比率 10 将如下图所示:

36 天的周期走完,被罚没验证者剩下的余额就能拿走了。

从这个生命步骤图中可以看出,没额外的机制让一个完全退出的验证者重新激活。因此,一旦某个验证者退出,其资金就会一直休眠,等待验证者前来取走。不过,Eth3 Phase 0 时候,资金是不可以转账的 —— 因此所有完全退出的验证者的资金都仍保存在质押系统中,直至开启转账功能。没转账功能,是由于用户帐户模式还未引入。

补充后的验证者生命步骤

把上面所有详细情况补充到步骤图中,可以得到一个完整的图:

请细看其中补充的条件、各阶段的历时、转换过程,这部分细则对成功运行 Eth3 验证设施很重要。从初始化保证金到取出保证金,这个生命步骤图点出了各阶段可能发生的状况,也为验证者在全时段中的表现提供了明确的讲解。

注 1:应该注意的的是,ETH 2.0 的规范没一个显式的状况机,因此,各阶段的名字都是作者为便于描述而给出的。
注 2:1024 个ETH 1.0 区块的时间加上 32 个ETH 2.0 的时段。
注 3:这里假设验证者存够了 32 以太币。假如没存够,则该验证者会一直停留在保证金存入阶段,直到该验证者另外发起保证金要约,使其余额超越 32 以太币。
注 4:假如不到 32 以太币,那还可以另外再存入,提升该验证者的余额。
注 5:每一个时段有 (激活验证者数目 + 主动退出验证者数目 + 被罚没验证者数目)/63356 个名额,下限是 4 个。
注 6:即 4 个时段的长度。
注 7:每个验证者都需要在一个时段中的某个时隙(sLOT)发出见证消息,而每个时隙都会有一名验证者被随机选中作为区块建议者。
注 8:256 个时段。
注 9:8192 个时段。
注 10:注意,罚没力度最高是 100% 的有效余额,但有效余额的上限是 32 以太币,无论该验证者的实质余额是多少。

出处: ETH喜好者 作者:Jim McDonald