Layer2技术

1. ETH2.0概述

随着ETH1.0上交易量激增,交易费用不断提升、交易时间也不断加大。而ETH2.0主要解决的是可扩展性、网络拥堵和高gas费用的问题。

不同于ETH1.0的PoW(工作量证明)共识,2.0采用的是PoS(权益证明)共识,前期的网络将继续作为2.0的并行系统存在。

以太坊2.0分为4层:

  1. PoW主链层:即1.0的单链,在过渡阶段,会逐渐将该层的ETH转移到信标链中;
  2. 信标链层:负责管理分片链,并参与分片链之间的互通;
  3. 分片链层:有64条不同的链,与信标链进行沟通、存储数据、运行合约等,每一条链都相当于一条以太坊1.0;
  4. 虚拟机层:eWASM虚拟机,运行智能合约的执行环境,建立于分片上。

将同时存在两个并行系统。ETH1将继续作为工作链的证明,而ETH2将在新的权益证明系统下运行。

以太坊2.0有3个阶段(phase):

  1. 信标链;
  2. 分片;
  3. 执行;

2. Layer2技术

虽说ETH2.0可以解决上述问题,但其短时间内难以过度完毕,因此,Layer2技术对区块链进行扩容,用来缓解上述问题。

Layer2在保持原Layer1功能简单稳定的前提下,把一些原本在 Layer1 上的计算和操作,放在链下去做,在以太坊区块链外部进行扩容。Layer2可以替 Layer1 承担大部分计算工作,比如将以太坊交易从主链上分离出来,降低一层网络的负担,从而实现扩容。但Layer2 只能做到局部共识。

Layer2有多种解决方案,如Optimistic Rollup、ZK Rollup等。

3. Optimistic Rollup

通过计算状态更新来增加网络吞吐量,运行一个名为OVM的EVM兼容虚拟机,它允许执行与以太坊上相同的智能合约,使现有的智能合约更容易维护其可组合性。Uniswap正是采用了这一方案。

优点:

  1. 兼容EVM;
  2. 安全性和去中心化程度更高;
  3. 高度的通用计算。

缺点:

  1. 隐私代价更高;
  2. 欺诈证明机制导致退出期较长(1-7天)。

欺诈证明机制:

由于区块可能包含不正确的状态转换,因此欺诈证明机制允许在一个时间范围(争议时间段,DTF,Dispute Time Frame)内对此错误状态提出异议。若在DTF内未提交欺诈证据,则认为该状态转换是正确的;反之,若欺诈证明被提交给了智能合约,并且确实被验证了该状态转换是错误的,则会导致智能合约恢复到上一次的正确状态,随后可能会对违规方进行惩罚。

4. ZK Rollup

所有资金由主链上的智能合约持有,而计算和存储则在链下进行。每个Rollup区块都会生成一个状态转换零知识证明(SNARK),并通过主链合约进行验证。

优点:

  1. 绝对的安全性;
  2. 低延迟。

缺点:

  1. 需要耗费大量计算资源,前期投入较大;
  2. 通用智能合约的支持难度较大。

零知识证明:

零知识证明技术可以“模拟”出一个第三方,来保证某一个论断是可信的。

Vitalik 采用 zkSNARK 技术给现有的以太坊框架带来几十倍的性能提升。在传统的区块链架构中,同样的计算被重复多次,比如签名的校验,交易合法性校验,智能合约的执行等等。这些计算过程都可以被零知识证明技术进行压缩。

5. 分片

总体来说,ETH2采用的分片机制指的就是对数据库进行横向分割。每条分片链都拥有一个节点子集,在该链上进行工作。虚拟矿工和验证者被分配到不同的分片中,并且只处理和验证自己所在分片链上的交易。

为保证分片安全性,每个分片区块都有一个委员会,其中的验证者被随机分配。如果攻击者控制的验证者少于总数的三分之一,其想要攻击单个分片是难以实现的。

6. 信标链

信标链这一名词来源于随机信标(randomness beacon, 向公众提供随机数字)这一概念。信标链在一个伪随机的过程(RANDAO)中执行共识。

6.1 时隙 (slots) 和时段 (epochs)

每个slot为12s,每个epoch由32个slot组成,即6分24秒。创世区块在epoch0中的slot0中产生。当系统在理想情况下运转时,每12秒就有一个信标链区块和64个分片区块产生。因此可以将一个slot看作是区块生成时间。

6.2 验证者 (validators)和证明 (attestations)

在以太坊2.0中,验证者 (validators) 是权益证明 (PoS) 共识机制中的“虚拟矿工”。区块提议者(block proposer)是被随机挑选出来生产区块的验证者。大多数时候,验证者则充当证明人(attesters)的角色,对信标区块和分片区块进行投票。这些投票会记录在信标链上,用以决定信标链和分片链的头部 (heads)。随机验证者在每个slot中提议一个区块,如果其他验证者投票赞成该区块,那么提议验证者将会获得奖励。

一份证明(attestation)则是验证者的一记投票,投票通过验证者的余额进行加权。除区块之外,证明也会在系统中进行广播。验证者之间也会互相监督,通过举报其他验证者自相矛盾的投票或提议多个区块的行为,从而获得奖励。

在以太坊2.0阶段,用户通过质押ETH来激活和管理验证者。质押者每质押32个ETH,一个验证者就会被激活。但每个验证者拥有的余额最多为32个ETH。RANDAO根据验证者余额的权重,选择出区块提议者。

6.3 交联(crosslinks)

交联是指将一个信标区块和一个分片区块连接起来。在一个交联中,信标链紧跟分片链头,由于一个信标区块中有64个分片,因此至多可以容纳64个交联。所有分片链全程都与信标链紧密相连。

6.4 委员会(committees)

委员会由一组验证者组成,他们为信标链服务。每个slot的委员会至少由128位验证者组成,一名验证者在每个epoch中只参与一个委员会。一个委员会将会被随机分配到一个分片上,并将其交联到信标区块中。分片委员会仅进行生产分片区块的工作。许多分片区块由分片链验证者生产,且不需要与信标链联系。然而,如果某个分片想要和其他分片通信,则需要借助信标委员会将其与信标区块进行交联。

所有验证者都要在自己所在的slot中投票选出信标链头,这个过程被称为LMD GHOST投票。每个委员会都要在自己所在的slot中尝试交联某个特定的分片。

6.5 检查点(Beacon Chain Checkpoints)

检查点 (checkpoints) 就是位于epoch第一个slot里的区块,如果这个slot内没有产生区块,则最近的前一个区块即为检查点。每个epoch都会有一个检查点区块;一个区块可能同时是多个epoch的检查点。检查点也被称为时段边界区块(epoch boundary block,EBB)。

在发起一次LMD GHOST投票时,验证者也要为最近一个epoch的检查点投票,该检查点叫做目标检查点(target)。该投票叫做Casper FFG投票,而且还包括对前一个检查点(来源检查点,source)的投票。验证者只需为自己所分配到的slot发起LMD GHOST投票,但是每一个epoch上的所有验证者都要为epoch的检查点发起FFG投票。

绝对多数(supermajority)是指某个投票获得了所有活跃验证者总余额2/3的支持。

6.6 最终确定性(Finality)

当一个epoch结束之后,如果其检查点形成了绝对多数,那么该检查点就被证明(justified)了。如果一个检查点已经被证明,且其下一个epoch的检查点也被证明了,那么该检查点就被最终确定(finalized)了。一般来说,一个检查点会在两个epoch内得以最终确定。

通常来说,用户交易发生在一个epoch的中间部分,此时距下一个检查点还有半个epoch的时间,也就是说,一笔交易经过2.5 个epoch便可得以最终确定。在理想情况下,超过2/3的证明将会被打包进某个epoch的第22个slot中。因此交易得以最终确定的平均时长为14分钟(0.5epoch+1epoch+22slot)。

虽然最终确定性仅在epoch边界的时候产生,但证明是逐块累加的。当一个信标区块被最终确定时,与该块所交联的分片区块也能被最终确定。检查点可以在离其最近的epoch中被证明,但是至少隔一个epoch才能被最终确认。

6.7 证明(attestations)

一则证明包含一个LMD GHOST投票和一个FFG投票。在单个epoch,一名验证者可能有两份证明被打包上链。如果验证者在其所分配的slot里发送证明,且该证明被打包上链,那么验证者获得的奖励为最大值;随后打包上链所获得的奖励就会不断减少。为了留给验证者准备的时间,他们被提前一个epoch分配到委员会中。一旦epoch开始,提议者只会被分配到各slot中。委员会将每一名证明者的签名聚合成一个签名:当验证者在同一个委员会中,并做出了同样的LMD GHOST和FFG投票时,他们的签名就可以被聚合。

信标链验证者奖惩机制:

  1. 证明者奖励(attester rewards)
  2. 证明者惩罚(attester penalties)
  3. 质押者特有风险(typical downside risk for stakers)
  4. 罚没和吹哨者奖励(slashings and whistleblower rewards)
  5. 提议者奖励(proposer rewards)
  6. 不作为惩罚(inactivity penalty)

当验证者所给出的证明被其他大部分验证者所同意时,会获得奖励。在阶段1中,验证者也可以通过与分片产生交联而获取奖励。相反,如果验证者没有提交证明,或者其投票选出的区块最终没有被确定,那么验证者就会受到惩罚。罚没(slashing)的数额最少为0.5个ETH,最多则是一名验证者的所有质押金额。受到罚没惩罚后,验证者会被停止继续参与工作。如果1/3的验证者同时受到了罚没,他们会损失所有余额(额外惩罚)。而对罚没行为举报成功的验证者,则可以获取吹哨者奖励。

区块一旦得以最终确定,一直在线且妥善完成工作的验证者,他们提议区块所能获得的奖励将提高1/8。如果发生罚没行为,提议者还可以将罚没证据打包进区块,从而获得少量报酬。在阶段0中,所有吹哨者的奖励实际上都归于提议者。

如果有超过4个epoch没有获得最终确定性,那么所有验证者都要受到翻倍的不作为惩罚,直到下一个检查点被最终确定。其作用在于:如果50%的验证者掉线了,将在21天后重新对区块进行最终确定。

6.8 罚没

如果出现以下这三种情况,要对验证者进行罚没惩罚:

  1. 双重提议(double proposal)

    指一名区块提议者在他所分配到的slot里提议一个以上的区块。

  2. 双重投票(double vote)

    指一名验证者针对同一个目标检查点、不同的源检查点发起两次FFG投票。

  3. 环绕投票(surround vote)

    指一名验证者发起的FFG投票环绕之前的FFG投票,或是被之前的FFG投票所环绕。

LMD GHOST投票不会受到罚没惩罚。针对同一个源检查点的两次FFG投票不会受到罚没惩罚(这可以增加系统的灵活性)。一名吹哨者提出举报时,需要打包冲突投票的相关信息来证明该验证者应受到罚没。

6.9 验证者激活和生命周期

一个用户在以太坊主网的存款合约(deposit contract)里质押32个ETH,就会激活一位验证者。当验证者的余额低于16个ETH时,信标链就会停止这些验证者的工作。当验证者工作2048个epoch后,可以自愿选择退出。退出时,质押者需要等待4个epoch才能撤出其质押金。在这4个epoch之内,验证者仍然有可能面临举报和罚没。若其受到了罚没惩罚,则必须等待8192个epoch之后才能够提出余额。

为避免短时间内激活大量验证者对系统进行攻击,单位epoch上验证者激活和退出的数量存在限制。激活信标链至少需要16384个创世验证者。信标链需要至少262,144个验证者来生产区块,每个区块包含64条交联。