时间:2023-07-14|浏览:167
在工作量证明中,共识是通过全球竞赛来实现的。第一个挖出有效区块的幸运矿工会获胜,比赛是通过找出计算难度问题的数学方案来进行的。因此,出块时间是概率性的。随着更多的区块被打包到区块链上,回滚就变得越来越困难,因为每个区块都代表了构建区块所需的电力和算力的累积总和。大部分攻击者不能回滚比特币和以太坊区块链是有切实的物理保证的,因此,超过一定时间的交易可以被视为“被最终确定了”。
然而,在以太坊的权益证明机制中,最终确定性不是基于概率性的。相反,协议明确规定了最终确定性的条件:“如果超过三分之二的验证者对区块链头正确投票了,在一段很长的时间后,我们就认为这个特定检查点以前的所有交易都被最终确定了”。最终确定性是明确的,遵循协议的节点将无法回滚最终确定的检查点,无论共识权重如何,这在根本上是不可能的。
在Eth2中,最终确定性的机制是通过将验证者分配到一个有32个slot的窗口,并履行出块或对区块投票的职责。一个epoch由32个slot组成,每个slot为12秒。在一个epoch中,有32个验证者被分配为区块提议者,其他验证者为证明者,他们需要对每个epoch中被提议的区块进行投票。
Eth2使用了Casper权益证明共识和“确定性小工具(finality gadget)”来实现最终确定性。最终确定性的过程包括以下步骤:如果在一个epoch中,超过2/3的验证者对区块链头正确投票,那么最新的epoch被认为是“证明”的。如果连续两个epoch都被证明了,那么当前epoch-2被认为是最终确定的。链的目标是一直保持最终确定性,如果在被最终确定的epoch之后超过4个epoch没有被确定,所有验证者都会受到惩罚,以激励快速恢复确定性。
在eth2的epoch过渡中,状态转换函数会执行重要的记账功能,并为下一个epoch做准备。在每个epoch中,验证者都会被重新分配任务,除非发生链重组,否则他们会提前两个epoch得知自己的任务。
确定一个新被最终确定的检查点对于Eth2非常重要,因为协议中的许多定义都以它为界限。在检查点被最终确定之前,所有从p2pgossipsub收到的信息都会被忽略和丢弃。此外,在新的最终确定的检查点之前传入gossipsub的信息也会被忽略。被最终确定的检查点以前的存储数据可以被修剪,没有安全问题。
最终确定性对于链的活性具有很强的激励机制。Eth2的主网自2020年12月1日激活以来,链一直保持活跃,并按预期实现最终确定。链的参与率一直保持在90%以上的高水平。
尽管我们可以通过验证者投票的结果来估计最终确定性的概率,但如果在权威链的分叉上有足够多的投票权,依然可能发生1个或2个epoch内的重组。然而,在Eth2上,大量投票权的小型分叉是很罕见的,并且从未发生过。
最终确定性是通过节点遵循协议规则来实现的。节点违反协议规则可能会导致重组,但只有绝大多数