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