在Eth2,最终敲定后会发生什么?

ECN以太坊中国

    来源 |?@prysmaticlabs
    作者 | Raul Jordan
    区块链的一个基本属性是“最终确定性 (finality)”,它的大概意思是经过一定时间后,被打包到权威链的交易是极其困难,甚至几乎不可能回滚的。Eth2 在协议上有一个“明确的”机制是关于链的最终确定性的,它区别于现在使用 PoW 机制的比特币和以太坊上的“概率性”最终确定性。
    在工作量证明中,共识从根本上说是一场全球竞赛,其中第一个挖出有效区块的幸运矿工会获胜——比赛方式是找出计算难度问题的数学方案。因此,出块时间是概率性的。越多的区块被打包到区块链上,回滚就越难,因为每个区块都代表了构建区块所需的电力和算力的累积总和。由于防止攻击者能够回滚今天的比特币和以太坊区块链是有切实的物理保证的,我们可以把超过一定时间的交易看作“被最终敲定了 (finalized)”。
    然而,权益证明机制的以太坊不是基于概率性最终敲定来运作的。相反,它把最终确定在协议上作了明确规定——“如果超过三分之二的验证者对区块链头正确投票了,经过一段很长的时间后,我们就认为这个特定检查点以前的所有交易都被最终敲定了”。最终确定性是明确的,而遵循协议的节点将无法回滚最终敲定的检查点 (checkpoint),因为不管共识权重如何,这在根本上是不可能的。
    在 Eth2 里,最终确定性的机制是什么样的?
    Eth2 是一个同步协议,它用“检查点"机制进行记账。本质上是一个验证者集被分配到一个有 32 个 slot ?的窗口,履行出块或对区块投票的职责。其中,每个 slot 是 12 秒,而 32 个 slot 构成一个 epoch。在一个 epoch 里,有 32 个验证者被分配到担当区块提议者 (block proposer),其他验证者都担当证明者 (attester),他们要给每个 epoch 里被提议的区块投票。
    每个 slot 里只会分到一个区块提议者,但会有多个“证明者”
    例如,Alice 在 slot 4 被选为区块提议者,而 Bob、James、Charlie 和 Susan 都被选为证明者,这意味着他们都要对 Alice 提议的权威区块投票。
    Eth2 使用 Casper 权益证明共识,特别是其中的”确定性小工具 (finality gadget)"。Eth2 最终敲定的过程定义如下:
    1、如果在一个 epoch 里,大于 2/3 的验证者对区块链头正确投票,我们说最新的 epoch 被证成了 (justified)。
    2、如果连续两个 epoch 被证成了,那么 current_epoch - 2 (当前 epoch - 2)被认为被最终敲定了。
    在正常的操作中,链的目的是一直做最终敲定。如果在被最终敲定的 epoch 后有超过 4 个 epoch,那么所有验证者都会开始受到惩罚,以激励快速恢复敲定工作。
    epoch 末会发生什么?
    在 eth2 的 epoch 末,状态转换函数执行重要的记账功能,以弄清楚在这个时间段共识层确切发生了什么,并为下一个 epoch 做准备。验证者在每个 epoch 都会被混洗,分配新的任务,除非出现链重组,否则我们可以提前两个 epoch 得知我们分配到的任务。
    在 epoch 过渡中,我们会统计出链头的所有票数。验证者使用“有效余额 (effective balance)"投票,以 gwei 计价。在谈论 eth2 时,我们通常会提到验证者参与率,它的定义是在一个 epoch 里用于区块链头正确投票所质押的总 gwei 与所有活跃验证者所质押的总 gwei 的比值。
    确定一个新被最终敲定的检查点意味着什么?
    在 Eth2,确定一个最终敲定的检查点是非常重要的,因为协议里很多明确定义的东西都以它为界限。也就是,在检查点被最终敲定前,所有通过 p2p gossipsub 收到的信息都会被忽略和丢弃。此外,以下是在 eth2 一个新被最终敲定的检查点会发生的事:
    
  • 所有从新被最终敲定的检查点之前传入 gossipsub 的信息都会被忽略
  • 分叉选择规则的更新只认从最终敲定的检查点开始的投票。这意味着,遵循协议的节点是不可能对被最终敲定的检查点进行回滚的。
  • 被最终敲定的检查点以前的存储数据是可以被修剪的,没有安全问题

    激励与重组
    协议奖励对维护我们所谓的”链的活性“有一个很强的激励机制。自从 Eth2 的主网在 2020 年 12 月 1 日被激活以来,该链一直具有完美的活性,特别是每个 epoch 都按预期被最终敲定。而链的参与率,即正在给区块链头正确投票所质押的 ETH 占所有活跃验证者质押量的百分比,一直保持在 90% 以上的高水平。
    
    数据来源:https://beaconcha.in
    除非大部分的质押者都离线了,或多人使用的客户端实现出现严重漏洞,否则激励机制会一直支持最终敲定 current_epoch - 2。鉴于在 eth2 里,epoch 时长为 6.4 分钟,即 12.8 分钟前的 epoch 应该总是被最终敲定的。
    关于 MEV,我们当然还没在区块链里看到出现超过 12.8 分钟的重组。那么,我们是否可能通过信标链本身的数据获得交易最终确定性的概率估值呢?
    MEV
    Eth2 里的每个区块都包含关于共识的元数据,即每个区块都包含如下信息:
    
  • 加入信标链的新验证者 (eth1 的验证者存款)
  • 证明 (attenstation),即其他验证者对链上先前区块的投票
  • 验证者想要退出其职责的证明
  • 验证者被罚没和被强制逐出的证明

    对于我们的目的来说,最重要的就是证明。由于每个 slot 都会出块,时间是刚好 12 秒。对于我们收到的每个区块,我们都可以计算目前为止对区块链头正确投票的验证者所质押的 ETH 占所有活跃验证者所质押的 ETH 的百分比。例如,如果在一个 epoch 结束前我们已经收到超过前 2/3 的投票了,且上一个 epoch 已经有超过 2/3 的验证者正确投票了,我们能相当确定链的最终确定性很快能达成。也就是说,我们可以在最终确定性达成的前 6.4 分钟就对这个结果很有信心了。
    尽管这种”信心“是很有用的,但如果在权威链的分叉上有足够多的投票权, 1 个甚至 2 个 epoch 内的重组仍然是可能的。就我们观察到的情况,Eth2 上有大量投票权的小型分叉是很罕见的,并在当前的链上从未发生过。
    关于 MEV 的问题:我们要多久才能知道最终确定性,使它对 MEV-geth 起作用呢?
    对最终确定性的哲学讨论
    节点可以违反协议吗?
    最终确定性,说到底,是由对协议规则的社会共识执行的一个抽象概念。有一个诚实假设是,节点确实在遵循协议。这意味着即使一些行为不当的节点尝试修改它们的客户端软件,以忽略关于最终确定性的规则,也不会影响整个网络,因为所有其他节点都会遵循协议。
    而决定重组的分叉选择是从被最新最终敲定的 epoch 开始的,除非绝大多数的节点都违反协议,否则重组是不可能发生的。
    参考文献
    
  • eth2 规范specs
  • beaconcha.in