以太坊 2.0 使用权益证明机制来保护网络,也就是由许多叫做 “验证者” 的计算机线程来投票决定哪一个区块能够上链(即所谓的 “attesting”,作见证),当然也会自己提出备选区块。不过,验证者不是仅仅只有 “开” 和 “关” 两种状态:从成为验证者到退出验证者的整个生命周期中,其状态会经过多次转换。本文会深入研究验证者的生命周期,展示各阶段和转换过程的实质、如何触发转换,以及每种转换的历时?。 先说明一下时间单位 以太坊 2.0 中的时间通常是用 “epoch(时段)” 这种单位来度量的,1 个时段是 384 秒,也就是六分半钟。为便于理解,基于这一度量的时间我都转化成了以分钟、小时、天为单位,并在附录的脚注中提供详细信息。 验证者生命周期概述 在深入细节以前,我们先来看看验证者生命周期的概况、了解一下用于表述不同状态的术语。 定义完了这些阶段之后,我们就来详细考察它们之间的转换过程。 保证金存入阶段 保证金要约被接受是验证者生涯的开始;这个接受过程是在以太坊 1.0 链上发生的,因为验证者资金原本就放在以太坊 1.0 链上。但 1.0 链接受之时,2.0 链还不能感知到这笔存款。 验证者的保证金存入阶段大概要历时 7.5 个小时?2,以保证链重组影响到 Eth1 交易的顺序乃至保证金要约无效化的概率足够小。这个阶段完成后,验证者就进入等待激活阶段?3。 活跃阶段 一般来说,一名验证者的绝大部分时间都处于这个阶段。活跃验证者大约每 6 分钟要发出一条见证消息,偶尔要自己提议区块?7。验证者会一直保持在活跃状态,除非出现下列三种情况:
在前面两种情况中,验证者都会被加入退出队列(一段时间内能离开活跃状态的验证者数量也是有限的,就跟能进入的验证者数量受限一样,大概是每几分钟可以离开 1 个)。 值得注意的是,如果有需要,验证者总是能够发送额外的保证金要约(包含相同的验证者信息)来 “充值” 余额(但是有效余额的上限是 32)。这样就能避免验证者余额低于 16 然后被放到退出队列里去。 即将退出阶段虽然主动退出的验证者表达了停止验证的意愿(不论是自愿还是被迫的),但是,他们是不能立即退出的。相反,虽然处于即将退出状态,他们还是要照常承担职责,跟活跃状态时候一样要见证和提议区块。这样保证了网络的稳定性,避免了验证者立即退出会造成的冲击。 就像验证者想激活的时候有个等待激活状态和队列,想要退出的验证者也有一个队列,一段时间里仅允许少量验证者退出。同样地,主动退出阶段要花费的时间取决于排在前面的验证者有多少。 处于即将离开状态乃至已经完全退出的验证者,都有可能被罚没(验证者完全退出到可以取出资金以前有一段间隔,在此期间是可以被罚没的)。这样能防止作恶的验证者利用正常的退出机制、在作恶被发现以前逃之夭夭。结果就是状态模型变得更加复杂: 36 天的周期走完,被罚没验证者剩下的余额就能拿走了。 没有额外的机制让一个完全退出的验证者重新激活。因此,一旦某个验证者退出,其资金就会一直休眠,等待验证者前来取走。不过,Eth2 Phase 0 时候,资金是不能转账的 —— 因此所有完全退出的验证者的资金都仍保存在质押系统中,直至开启转账功能。没有转账功能,是因为用户帐户模式还未引入。 (责任编辑:admin1) |