# Post-Merge时代:以太坊新共识的破局重生 **Published by:** [Arcane Labs](https://paragraph.com/@arcanelabs/) **Published on:** 2022-09-26 **URL:** https://paragraph.com/@arcanelabs/post-merge ## Content 文章作者: Frank Fan @Arcane Labs 0xCryptolee @Arcane Labs “只要勇于做出承诺,世界自会助你铲除不可逾越之障碍。去完成未竟之梦想,宇宙绝不会抑制你前进的步伐,这即是奥义所在。” ——以太坊 PoW时代最终区块留言 以太坊经历了历史性的升级,发展进入了新的阶段。合并之后,以太坊将继续沿着扩容和去中心化的方向前进。The Merge仅仅是PoS时代的第一步,以太坊依然面临着巨大的挑战,验证者群体中心化,扩容,Lazy Validator Problem等问题依然制约着应用的爆发和以太坊的安全扩展,本文将从The Merge开始,逐步分析POS采用的共识算法,重点探索使用DVT技术来解决验证者单点风险的问题,和从业者一起分析以太坊的问题和未来的发展机会,建议具备一定以太坊基础的读者阅读此文章。#1The Merge1.1 背景The Merge是以太坊有史以来最大的技术升级,在2022年9月15日实现了Execution Layer和Consensus Layer的合并,其最大的变化是将以太坊的PoW共识切换为PoS共识。图1:The Merge除此之外,合并以后以太坊的能源消耗降低了将近99.95%,据Vitalik Buterin推文,以太坊合并将使全球用电量减少0.2%。图2:Vitalik对于合并后以太坊能源消耗的观点1.2 合并带来的改变代币增发:PoW时代的ETH代币增发停止,新的ETH仅通过PoS共识出块产生,以太坊的通胀率降低,当base fee超过15gwei的时候,以太坊甚至进入通缩。图3:合并后Burn Total质押收益:gas费用和MEV的收入被分配给Validator,验证者的质押币本位收益达到5-7%。图4:Rocket Pool质押收益率Withdraw:合并以后质押的ETH并不能立即Withdraw,需要在上海升级以后才会放开Withdraw的限制,并且在提款的时候,用户并不能直接提取,为了避免大规模的提款,对于单次提款的数量和时间都有一定的限制,所以开放提款以后,并不会出现大量提款抛售的情况。具体的信息可以参考EIP-4895:Beacon chain push withdrawals as operations数据结构的改变:Consensus Block里面会包含Execution Block的Hash值,同时Execution Block里面和PoW相关的参数不再生效。mixHash字段会记录以太坊原生的RANDAO随机数,供EVM调用,以太坊的开发者可以直接使用这个随机数到智能合约开发中。图5:Merge后数据结构变化共识替换:PoW共识被PoS替换,原有的矿工职责被验证者替代,同时存在两条链,需要同时运行两个客户端节点,Execution Layer Client(EL)和Consensus Layer Client(CL)。图6:合并后以太坊客户端切换为PoS共识以后,以太坊的算法由Ethash转换为了Casper FFG(Gasper),相较之前的算法,Gasper更加节能,不需要再通过专门的矿机计算难度值,而是通过随机的方式来出块,让我们往下继续探索以太坊的共识算法和出块方式!#2Gasper目前信标链上面质押了13,830,378个ETH,活跃验证者的数目为432,203个(截至2022年9月23日),根据PBFT的特点,beacon chain的验证者数目很多,网络通信数据量大,简单的PBFT不再适用于以太坊网络,于是以太坊在网络结构上面采用PBFT的思想对网络架构进行了改进和设计,使用了Gasper算法。 Gasper为beacon chain协议中的终局性工具(finality gadget),用于确定哪些区块应被参与者认定为已经确定的、不可更改的,同时在分叉的时候用于确定哪个分叉链是主链。Gasper的终局性一般化了《Casper Friendly Finality Gadget(casper FFG)》论文中的概念。图7:质押和验证者情况2.1 概念图8:Epoch和Slot图示Slot(时隙):合并以后一个Slot就是一个区块,有一个committee负责在12S的时间内生成该Slot。Epoch:每32个Slot组成一个Epoch,一个Epoch的时间为384S,即6.4Min。Committee(验证者委员会):每个验证者委员会最低会分配128个Validator,验证者会对自己负责的Slot进行Attestation操作,并且在委员会中有一个Validator会被随机选为Proposer,进行出块。Attestation(投票签名):每一个Slot对应的committee里面的Validator都需要对上一个Epoch进行投票签名,确保自己认可了上一个Epoch里面的交易。Validator(验证者):由于以太坊The Merge以后共识算法切换为了POS,原来的矿工被Validator取代,Validator通过质押32ETH资产成为Validator,负责参与各个Epoch内slot的出块和签名工作。Proposer(提议者):Proposer来自committee中的Validator,通过RANDAO产生的随机数选出,被选用于Slot区块的打包。Beacon chain(信标链):用于替代PoW共识的PoS区块链,beacon chain node被用来挂载Data Blobs的交易类型,为Rollup提供更多的存储空间。2.2 流程Epoch开始的时候,通过RANDAO为每一个Slot(时隙)分配一个Committee(验证者委员会)对上一个Epoch进行Attestation(签名投票)。 为当前Epoch的32个Slot分配多个Aggregator将committee对上一个Epoch的Attestation聚合以后记录进Slot区块里。 RANDAO通过生成随机数确定Proposer负责出块。图9:Committee出块在当前Epoch,每一个Slot在出块的时候,committee都对上一个Epoch的检查点进行Attestation,连着两个检查点Attestation以后,上一个检查点才Finalised,直到32个Slot都依次对检查点进行了Attestation,本轮Epoch结束。Post-Epoch的第一个Slot开始的时候,Pre-Epoch达到了终局性的共识,即Post-Epoch经历了Pre-Epoch和当前Epoch,一共两轮Epoch(因为两个Attestation的检查点之外,还有冲突的检查点的话,必然有1/3的验证人作恶了,比如32 64 96三个区块高度,可能64号高度没有达成检查点,到了96号才有检查点,这时候32号高度才是Finalised),时间上为12.8Min,交易就在链上确定下来了,即所谓的终局性。2.3 特性RANDAO赋予了链上的随机数。RANDAO生成的随机数将会放进Execution Layer Block,智能合约能够直接使用该随机数,在拥有链上的原生随机数以后,DeFi可能会有新的应用诞生,比如博彩类的DeFi应用可以直接信任和使用RANDAO产生的随机数。图10:RANDAO2.4 Latest Message Driven GHOST(LMD-GHOST,由最新消息驱动的GHOST)在以太坊新的POS共识机制中使用LMD-GHOST作为分叉选择规则,当发生分叉的时候,GHOST会选择获得更多消息支持的子树。其背后的理念是在计算链头时,只考虑每个验证者最近的投票,而不是过去产生的任何投票,以此降低运行GHOST所需的计算量。 想要深入学习的可以查阅:https://eprint.iacr.org/2013/881.pdf2.5 随之而来的问题通信与验证成本增加:是不是验证者越多越好呢?其实不然,虽然验证者的数量增多有利于数据可用性采样(DAS)和去中心化,但是验证者增多意味着单个Slot的验证者也会变多,在收集各个验证者签名的时候就会增加Aggregator和验证者之间的通信负担,除此之外,聚合签名的验证成本也会增大,这无形中会增加验证者节点的负担。长程攻击:长程攻击是指某个验证者在Withdraw质押在信标链上的ETH后,他可以利用旧私钥在某个曾经签署过的区块进行恶意分叉,因为此时其在链上已无任何质押资产,然后迅速产生空块至目前的区块高度,对网络进行攻击。这也是未来可能出现的攻击方式。以太坊在设计的时候是对Pre-Epoch的checkpoint(检查点)进行投票,其设计思路也就是将初始状态不断往前推进,避免可能出现的攻击。#3以太坊质押挖矿3.1 Staking质押门槛:验证者为了履行职责参与共识出块需要质押32ETH作为保证金资产。 验证者的职责:在协议规定的时间生产区块和attestation。3.1.1 Staking方式Solo Staking:solo staking的方式是由想要自己出资32个ETH做验证者的质押人自己在云服务器上运行验证者节点,除了选择在云服务器上面运行节点,也可以选择在自己家中摆放服务器设备运行以太坊节点,区别在于云服务之上运行节点更加稳定,在参与网络共识的时候可以避免和减少因为停电和网络原因造成的怠工惩罚,而在家自己搭建节点的优势在于硬件和网络服务的成本低于云服务器,这里质押人可以自行选择采用哪种托管方案。Staking Pool:由于32个ETH对于普通人来说是一笔不菲的资金,寻常小资金的质押者想要参与网络共识却没办法自己运行节点,于是出现了质押池解决方案,其中以许可型的半去中心化质押解决方案Lido为主要项目,其吸收了较大的资金体量,成为赛道内的头部解决方案,其次还有去中心化程度更高一些的解决方案如Rocket Pool和Swell等,在现有的质押池解决方案之上,还产生了Unamano这样的聚合解决方案来帮助和发展以太坊Staking领域。 在节点运营方面,Lido选择指定部分专业的运营商来运行网络节点,这也是其相对中心化的一点,运营商掌握签名私钥,用户的资产部分信赖Lido和运营商,至于提款私钥,2021年7月之前,提款地址是一个6/11的多签地址,多签私钥由行业内OG保管,2021年7月之后,提款地址指向一个可升级的合约地址,该合约由DAO进行管理。Rocket Pool在节点方面选择更加去中心化,任何人只需要提供16个ETH和相应的软硬件设备就可以作为运营商运行节点,虽然降低了运营商门槛,但是Rocket Pool引入$RPL质押来降低运营商作恶的风险。 Staking Pool的方案使得普通的用户可以将小额的ETH存入合约来获得以太坊的挖矿奖励,同时返还生息代币如stETH和rETH来释放质押资产的流动性,进一步增强了以太坊的去中心化程度和资金使用效率,是社区最为看好的方向。CEX,中心化托管机构:除了Solo Staking和Staking Pool,中心化的交易所和一众资管机构都是以太坊质押的主要参与者,例如Coinbase和币安等也都推出了自己的质押服务,通过吸收小额的ETH来参与低风险的以太坊质押挖矿。三种方案在去中心化程度和安全性方面都各有优劣,这取决于质押者的信任对象,但是无可置疑的是,三种方案都捕获到了相应的资金和用户,共同维护着以太坊的安全和去中心化。3.1.2 风险与隐患是否合并以后真的就万事大吉?我觉得未必,从下图的数据我们可以窥探一下解除信标链提款限制以后的局面。图11:合并后质押ETH去向目前以太坊的质押量主要集中在Lido,Coinbase和Solo Staking,合并以后新的以太坊质押则大量流向了Lido和Coinbase这类相对中心化的机构和协议里,在解除提款限制以后,我觉得原来质押的以太坊会被重新分配到Lido和Coinbase里,随着时间的流逝,Lido和Coinbase将会掌握越来越多的以太坊验证者和质押量,最终对以太坊的去中心化带来严重的威胁,当他们控制住以太坊以后,对于想要重新打破这种局面的交易,将会被Lido或Coinbase这样的大矿池所拒绝,因为你想质押ETH到以太坊的这笔交易能否上链也是他们说了算,并且新产生的ETH也将会往ETH越多的人手里集中,因为他们在质押的时候就掌握了大量的ETH,这无疑对以太坊的去中心化会是新的挑战,我们可以期待社区和核心开发者一起来解决这个问题。3.1.3 奖励类型Attestation奖励:每一个slot的committee都要对前一个Epoch历史区块检查点进行Attestation,成功Attestation以后会获得Attestation奖励,作为Validator的收入之一。(概率大,奖励低)图12:Attestation奖励出块奖励:每一个Slot会有一个Validator作为proposer来打包区块,被选为proposer的Validator可以获得出块奖励。(概率低,奖励多)图13:Proposal奖励MEV(矿工可提取价值)收入:MEV收入除了gas费用的收入以外,还有三明治攻击等方式的收入,据EigenPhi的数据,过去7天三明治攻击的Volume都在100M以上,最高Volume接近400M,MEV的收入成为验证者的重要收入组成之一。图14:合并后MEV情况3.1.4 惩罚类型怠工惩罚:未能按照共识预期产生出块:未在预期时间对区块进行Attestation。恶意行为导致slash(罚没):在单个Slot内生产两个区块或者进行两次Attestation;违反Casper FFG共识规则提议错误区块。3.2 私钥类型签名私钥:签名私钥用于验证者在履行职责时的消息签署,包括attesting和proposing blocks,每6.4min,即每个Epoch,该密钥将被使用一次。提款私钥:提取质押资产和出块奖励时使用的密钥,需要离线存储,在上海分叉以后,可用提款私钥提取质押的ETH和奖励。3.3 ETH2质押风险私钥被盗:ETH2的签名/提款私钥被盗。单点故障/验证者的有效性:目前,验证人以单一的机器或节点存在并履行其职责。协议严格的规则禁止常见的冗余形式,如在多个节点上运行同一个验证人,这样做可能会导致验证人被 “惩罚”(slashed)。如果使用质押服务,密钥位于一个云服务器上( 如AWS)。如果任何组件出了问题,验证人就会停止验证,从而受到惩罚。#4分布式验证者技术(DVT)在质押层面,虽然我们有去中心化的质押解决方案来降低质押门槛和提高质押服务的去中心化,但是在Validator层面,依然存在着单点风险,现在单个验证者运行着网络的多个客户端,如果因为网络原因或者是断电等物理因素会造成怠工惩罚,slot也无法收集到有效的签名,我们无法通过冗余的方式在多个地方运行同一个验证者节点,因为这会造成签名的混乱,会被认为是对网络的攻击,但是我们可以将签名私钥拆分,通过DVT技术来降低单点故障的风险,在实施升级的时候,也为节点提供了升级空间,并不会因为网络升级导致节点的大面积掉线,具体分析,请让我们往下探究!4.1 概念operator:运行一个(或多个)节点的个人或实体。operator node:指的是一个硬件和软件,执行以太坊验证者的任务。这些任务可以由节点单独完成,也可以与其他使用DVT工具的节点联合完成。分布式验证者技术:分布式验证者技术是一种将单个以太坊验证者的工作分配给一组分散节点的技术。相比验证者客户端在单台机器上运行,分布式验证者技术能够提供更加安全和去中心化的服务。图15:Validator、Nodes、Committees和Operators的关系4.2 分布式验证者节点需要运行以太坊执行层客户端以太坊共识层客户端以太坊分布式验证者客户端以太坊验证者客户端4.3 DV如何防范ETH2质押风险私钥被盗使用门限签名技术(m-of-n)可以实现防止私钥被盗的风险一个完整的验证者密钥被拆分为多个小的密钥拆分后的小份密钥通过聚合产生完整密钥的签名图16:密钥拆分和聚合签名节点宕机Crash Faults: 原因:因为停电,断网,硬件故障,软件错误导致的崩溃; 防范措施:通过在多个地方运行同一个节点的冗余备份方案来防范节点掉线;Byzantine Faults: 原因:由软件bugs,网络攻击导致; 防范措施:多个参与节点通过共识决定,单个节点无法做出决定。4.4 总体架构图17:DVT总体架构分布式验证者使用私钥分片远程签署消息在分布式验证者客户端内通过聚合签名技术对分布式验证者的签名进行聚合,达到阈值以后,对区块进行签名。4.5 实现DVT技术的两种路径An approach to DVT using SSS:该方案由质押32个ETH的实体创建签名私钥(sk,pk)和提款私钥,并运行一个Secret Sharing Scheme程序在委员会节点中安全的分发sk密钥的份额。An approach to DVT using a DKG protocol:在DKG的方案中,没有一个实体来为验证者分发签名私钥的份额,而是一群验证者委员会节点一起运行DKG协议。因此,一个秘钥和公钥(sk,pk),以及sk的n个份额sk_1,...,sk_n被创建,i=1,...n的第i个节点拥有份额sk_i。图18:DKG Protocol4.6 Threshold Signature Schemes (TSS)(阈值签名方案)当验证者对区块达成一致需要签名时,采用BLS阈值签名方案来实现签名。其允许N个验证者共同签名数据,并且在t+1(0