ETH beacon chain finality

Beacon chain使用 Casper FFG 机制,获得确定性。
简单说,每个validator在每个 Epoch中,对特定的checkpoint,进行Casper FFG投票。如果某个checkpoint获得了大多数(2/3)的投票,则该checkpoint之前的block,获得确定性。

  1. Slot 和Epoch

Slot:链上的时间按照 slot 来划分,每个 slot 期间可以提议一个新的区块,也可能为空。目前,一个slot 的时长是 12 秒。系统会为每一个 slot 分配一名proposer验证者来创建新的区块。
Epoch: Casper FFG 机制并不应用在完整的区块树上,而是只考虑某些 slot 处的区块的得票情况。规定每32个slot 组成一个 Epoch, 即 32 slots = 32 *12秒 = 6.4分钟。

  1. 检查点checkpoint
    每个Epoch的第一个block定为checkpoint,不一定是第一个slot。

  2. 合理化(justification) 和 确定性达成( Finalization)
    合理化与确定性达 成是 Casper FFG 共识过程的两个阶段,可以和传统拜占庭容错(BFT)共识的 “prepare” 和 “commit” 阶段做横向对比。

合理化达成条件:
某个checkpoint获得了超过2/3的投票,则之前的block获得合理化

确定性达成条件:
a. 某个checkpoint (A)已经合理化
b. 并且 他的下一个checkpoint(B) 获得2/3的投票,则 A 之前的block获得确定性。

  1. 确定性达成( Finalization) 的时间计算
    Vitalik在 https://notes.ethereum.org/@vbuterin/single_slot_finality 提到,
    需要 64~ 95 slots(~15 minutes)
  2. 最佳情况,一个block在epoch的末尾,那么需要2轮epoch, 即64个slots。
  3. 最差情况,一个block在epoch的开头, 那么需要3轮epoch,即95个slots。

另外考虑一般情况

  1. 一个交易出现在epoch的中间,则需要 16 + 32 +32 = 80 slots

你可能感兴趣的:(ETH beacon chain finality)