编者按:本文来自以太坊爱好者,作者:JimMcDonald,翻译:阿剑,Odaily星球日报经授权转载。以太坊2.0使用权益证明机制来保护网络,也就是由许多叫做“验证者”的计算机线程来投票决定哪一个区块能够上链,当然也会自己提出备选区块。不过,验证者不是仅仅只有“开”和“关”两种状态:从成为验证者到退出验证者的整个生命周期中,其状态会经过多次转换。本文会深入研究验证者的生命周期,展示各阶段和转换过程的实质、如何触发转换,以及每种转换的历时。先说明一下时间单位:以太坊2.0中的时间通常是用“epoch”这种单位来度量的,1个时段是384秒,也就是六分半钟。为便于理解,基于这一度量的时间我都转化成了以分钟、小时、天为单位,并在附录的脚注中提供详细信息。验证者生命周期概述
在深入细节以前,我们先来看看验证者生命周期的概况、了解一下用于表述不同状态的术语。
-图1:验证者生命周期一览-各标签所示的阶段如下:已存入保证金:保证金要约已被以太坊1.0区块链打包等待激活:保证金要约被以太坊2.0网络接受活跃:验证者要见证区块及提议区块即将退出:验证者即将停止见证及提议区块被罚没:因为作弊被抓,验证者停止见证和提议区块完全退出:验证者完全退出,不再参与任一流程也可由此定义出一种基本状态:“正在见证”,激活、主动退出及完全退出都在该状态中,处于该状态的验证者被指望去见证及提议区块。这个状态是最重要的,在此状态下,验证者需要连接以太坊2.0网络、同步数据,以履行责任,避免被惩罚。
-图2:“正在见证”状态-定义完了这些阶段之后,我们就来详细考察它们之间的转换过程。保证金存入阶段
保证金要约被接受是验证者生涯的开始;这个接受过程是在以太坊1.0链上发生的,因为验证者资金原本就放在以太坊1.0链上。但1.0链接受之时,2.0链还不能感知到这笔存款。验证者的保证金存入阶段大概要历时7.5个小时2,以保证链重组影响到Eth1交易的顺序乃至保证金要约无效化的概率足够小。这个阶段完成后,验证者就进入等待激活阶段3。
-图3:从保证金存入阶段转到等待激活阶段-等待激活阶段
保证金在Eth1链上存入足够久之后,它就会被Eth2链接受。这标志着验证者正式开始接受Eth2的组织。假设一位验证者存入了至少32ETH4,那么TA就可以开始作见证了。等待激活的验证者会组成一个队列:在一个时间点,Eth2链上能激活和能退出的验证者数量都是一个比较小的数量5,以保证验证者集合的稳定性。如果队列是空的,那么等待激活的验证者会在大约25分钟以后激活6;如果队列很长,那可能要几天甚至几周才能激活。不过,排完队之后,验证者就可以直接激活、参与见证。
-图4:从等待激活到活跃阶段-活跃阶段
一般来说,一名验证者的绝大部分时间都处于这个阶段。活跃验证者大约每6分钟要发出一条见证消息,偶尔要自己提议区块7。验证者会一直保持在活跃状态,除非出现下列三种情况:该验证者因没有及时发出见证消息而遭受惩罚,最终其余额低于16ETH该验证者主动要求退出,方法是发送相应的一笔交易该验证者被证明作恶在前面两种情况中,验证者都会被加入退出队列。
-图5:从激活状态到即将离开-在第三种情况下,验证会被加入作恶者队列,接受惩罚。
-图6:从激活状态到被罚没状态-值得注意的是,如果有需要,验证者总是能够发送额外的保证金要约来“充值”余额。这样就能避免验证者余额低于16然后被放到退出队列里去。即将退出阶段
虽然主动退出的验证者表达了停止验证的意愿,但是,他们是不能立即退出的。相反,虽然处于即将退出状态,他们还是要照常承担职责,跟活跃状态时候一样要见证和提议区块。这样保证了网络的稳定性,避免了验证者立即退出会造成的冲击。就像验证者想激活的时候有个等待激活状态和队列,想要退出的验证者也有一个队列,一段时间里仅允许少量验证者退出。同样地,主动退出阶段要花费的时间取决于排在前面的验证者有多少。
-图7:从正在退出到完全退出-被罚没状态
验证者违反协议后被抓,就要立即被罚没1ETH,然后进入被罚没状态,这跟即将退出状态类似,但是还要遭受惩罚。这一点我们在下文的“完全退出”部分讨论。
-图8:从被罚没到完全退出-处于即将离开状态乃至已经完全退出的验证者,都有可能被罚没。这样能防止作恶的验证者利用正常的退出机制、在作恶被发现以前逃之夭夭。结果就是状态模型变得更加复杂:
-图9:补充罚没条件之后-完全退出
转到完全退出状态之时,验证者就正式结束了自己的工作,不再需要见证和提议区块,也不再需要紧跟Eth2区块链的实时动态了。转成完成退出状态之后,大概还有一天的延迟8,之后才能取出验证者余额。不过,如果一个验证者是从被罚没状态中完全退出的,那还要接受两项额外的惩罚。第一项,从完全退出到能够取款的间隔会长得多,要36天9。第二项,在这36天期间,系统还会根据该验证者作恶被抓的时间点前后18天内被罚没的验证者数量对该验证者施加进一步的惩罚。那么该验证者的有效余额损失比例10将如下图所示:
-图10:被罚没的有效余额与同期被罚没的验证者比例的关系-36天的周期走完,被罚没验证者剩下的余额就能拿走了。从这个生命流程图中可以看出,没有额外的机制让一个完全退出的验证者重新激活。因此,一旦某个验证者退出,其资金就会一直休眠,等待验证者前来取走。不过,Eth2Phase0时候,资金是不能转账的——因此所有完全退出的验证者的资金都仍保存在质押系统中,直至开启转账功能。没有转账功能,是因为用户帐户模式还未引入。补充后的验证者生命流程
把上面所有详细信息补充到流程图中,可以得到一个完整的图:
-图11:补充后的验证者生命流程图-请细看其中补充的条件、各阶段的历时、转换过程,这些细节对成功运行Eth2验证设施非常关键。从初始化保证金到取出保证金,这个生命流程图点出了各阶段可能发生的情况,也为验证者在全时段中的表现提供了清晰的解释。注1:要注意的的是,以太坊2.0的规范没有一个显式的状态机,因此,各阶段的名称都是作者为便于描述而给出的。注2:1024个以太坊1.0区块的时间加上32个以太坊2.0的时段。注3:这里假设验证者存够了32ETH。如果没有存够,则该验证者会一直停留在保证金存入阶段,直到该验证者另外发起保证金要约,使其余额超过32ETH。注4:如果不到32ETH,那还可以另外再存入,提高该验证者的余额。注5:每个时段有/63356个名额,下限是4个。注6:即4个时段的长度。注7:每一个验证者都需要在一个时段中的某个时隙发出见证消息,而每一个时隙都会有一名验证者被随机选中作为区块提议者。注8:256个时段。注9:8192个时段。注10:注意,罚没力度最高是100%的有效余额,但有效余额的上限是32ETH,无论该验证者的实际余额是多少。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。