ETH升级学习笔记(一)

ETH的merge越来越临近,现在看来2022年应该能完成ETH的升级。

ETH为什么要升级?

  • 提高执行速度, 目前官方给出的标量是20TPS,就是每秒执行20个Transaction,

    经过升级之后能够到达1000TPS

  • 提高安全性,目前的ETH 还是使用PoW(proof of work)方法来完成共识,升级之后降使用PoS(Proof of stake)的方法来进行共识。提高了整个网络的安全性,防止算力垄断的问题。

更加环保可持续,PoW算法是通过用矿机的算力计算随机值,目前的技术算力越强,耗能越大,随着难度的提高,计算所用的时间也越长,而在使用PoS之后,就会大大节省了计算时间和功率,从而达到节能的目的。

怎么做?

目前分三步走

  1. 启动信标链 Beacon Chain

  2. 分片

    • 主链合并到信标链 Merge,终止算力挖矿

    • 启动分片链

  3. 执行层启动

什么是信标链(beacon chain)?

信标链相当于ETH2.0的心脏;

分片链相当于四肢;

执行层相当于大脑。

**Beacon chain 为2.0提供心跳,从而让系统能够达成共识和和谐。**而为了要达到最终分片的目的(分片是一个大活),而分片的目的增加2.0的处理量。在分片内必须有校验者和执行者来分别对交易进行校验和执行。

Slot &Epoch

Slot:每隔12秒,就是一个Slot

Epoch:32个slot就是一个epoch,也就是6分24秒

Epoch0 中的32个slot,创始区块位于Slot0
Epoch0 中的32个slot,创始区块位于Slot0

slot是可以产生区块的一个时间窗口,也可以没有。

Beacon Chain和Shard Chain 是同步的。每12秒,一个beacon chain的区块和64个shard chain的区块会被产生出来。验证者需要大概的同步时间。一个Slot就像出区块的时间,出块时间也可以是空的,没有区块出来。

在ETH2.0 的验证是PoS的虚拟的挖矿。验证者是积极的参与到eth2.0的,对于验证者,eth2.0有对应的激励和惩罚措施。

一个区块的提议者是从验证者里,通过伪随机方式产生的。大部分时间时间,验证者是通过投票来对beacon block和shard block进行验证,投票决定了信标链的头和分片的头。

质押验证者(Staking validators)

Validators 是虚拟的,有Staker来激活产生。在ETH2.0中,用户通过质押ETH去激活和控制Validators。每个Validator需要投入最多32个ETH,但是staker可以stake他所有的ETH,这样每32ETH被stake就会有一个validator被激活。

Validator是由信标链的节点的的客户端来执行的。信标节点具有跟踪和读取信标链的功能。 验证者客户端可以实现信标节点功能或调用信标节点。 一个验证器客户端可以执行一个或多个验证器。

交联是信标块中对分片块的引用。 交联是信标链跟随分片链头部的方式。 由于有 64 个分片,每个信标块最多可以包含 64 个交联。 如果在这个Slot中,63 个分片没有提议的块,那么只会产生一个交联。 Eth2 Phase 1 计划使用交叉链接将分片链植根到信标链中,作为分片分叉选择、分片链终结性和跨分片通信的基础。 所有的分片链都始终跟随信标链。

委员会(Committee)

在每个 epoch 中,验证者被平均分配到 slot 中,然后细分为适当规模的委员会。 该slot中的所有验证者都证明了信标链的头部。 该slot中的每个委员会都尝试交叉链接特定的分片。 而洗牌算法会增加或减少每个Slot的委员会数量,以使每个委员会至少有 128 个验证者。

举个例子

假设有16384个验证者。 512个验证者被随机制定给了Slot1,剩下的512的验证者会指定给Slot2,以此类推。 第一个Slot的512个验证者会被分成4个委员会,随机制定给分片。假如分片33,55,22,11 被分片指定,所有的512个验证者会给Slot1 LMD GHOST 投票。128个验证者(4分之一的委员会成员)试图交联分片33,以此类推,每128个验证者都分别交联一个分片:55,22,11.

对于slot2 也是如此。

这个过程会一直持续下去,直至每个验证者都有一个slot,当轮到这个slot的时候,这个验证者可以广播,验证和交链。当这个epoch结束的时候,所有的验证者都有机会去验证和交联。到目前为止,验证者是基于slot而不是epoch进行投票的。就像对当地的政府进行投票,而不是在国家范围内进行投票。所有验证者没有基于同一个事物进行投票。下面在checkpoint和finality会描述epoch范围内的投票。

信标链的Checkpoint

checkpoint是每个epoch中第一个slot的区块。如果这个slot没有区块,那么checkpoint就会前面最近的一个区块。每个epoch总会有一个checkpoint,一个区块可以是多个epoch的checkpoint。

在一个epoch包含有64个slot的状况下的checkpoint
在一个epoch包含有64个slot的状况下的checkpoint

上图中,slot65和slot128是空的,根据定义epoch2的checkpoint就是slot128,但是slot128没有,结果epoch2的checkpoint就是前一个block,位于slot64。epoch3的checkopoint也是同样,slot192是空的,所以由前一个block位于slot180的区块担任epoch3的checkpoint。

epoch边界区块(Epoch boundary blocks)是一些文献中的术语,是checkpoint的同义词。

当进行一个LMD GHOST的投票的时候,验证者也同样给位于当前的epoch的checkpoint进行投票。这个过程叫target。这个投票叫Casper FFG vote,该投票还包括以一个checkpoint,我们叫source。在上图中,位于epoch1的验证者对创世块的checkpoint进行投票(即source的checkpoint),还对target的checkpoint进行投票。 在Epoch2还是相同的验证者对相同的checkpoint进行投票。只有验证者被分配到了一个slot上才能对这个slot发起slot的LMD GHOST投票。但是,所有验证者都可以对每一个epoch的checkpoint发起FFG Vote。

绝对多数

所有活跃验证者的总余额的 2/3 投票被视为绝对多数。

假设有三个活跃的验证者:两个有 8 ETH 的余额,一个唯一的验证者有 32 ETH 的余额。 绝对多数票必须包含唯一验证者的投票:虽然其他两个验证者可能对唯一验证者投票不同,但他们没有足够的余额来形成绝对多数。

确定性 Finality

当一个epoch结束的时候这个epoch的checkpoint获得绝对多数的投票,那么这个checkpoint才是合理的。

当checkpoint B是合理的,那么在下一个epoch中的checkpoint也是合理的,那么B才能被最终确认为合理的。通常一个checkpoint在2个epoch 12.8分钟内完成。

平均下来,一个用户的交易,如果处于epoch中间,距离下一个checkpoint还有半个epoch那么这个交易最终确认是2.5个epoch,16分钟。

理想情况下,一个epoch的第22个slot包含超过三分二的证明,因此,交易最终确定的平均时间为14分钟(16+32+22 个slot)。

区块的确认有效来源于区块的验证,验证之后是证明正当,最后才确认有效。

post image

—————————————————————————————————————————

Reference

https://ethos.dev/beacon-chain/#validator-lifecycle

https://ethereum.org/en/upgrades/beacon-chain/