ChainCatcher 链捕手

Posted on Apr 06, 2022Read on Mirror.xyz

深度解读Optimism:基本架构、Gas机制与挑战 | CatcherVC Research

作者:Web3er Liu,CatcherVC

在凭借理想化叙事制造愿景的同时,Optimism该如何走向去中心化之路,兑现“欺诈证明”机制和多Squencer轮换的设想,还有待时间去考验。

本文重点

  • 出于对安全和去中心化的考虑,ETH区块Gas上限和出块时间无法大改;
  • Layer2扩容的实质是造一条TPS更高的链,把这条链的信息挂到以太坊上;
  • Optimism的市场增值空间极大,其TPS上限可达1600,但吞吐量的实际利用率不到千分之一,未来发展潜力巨大;
  • 由于未开放对等节点,Optimism本地Sequencer出块后,甚至要1小时才可以验证其正确性,延时过长;
  • 当前的Optimism和Arbitrum均由官方运行出块节点,存在严重的中心化问题,其立足根基更多在于项目方的“信用”,而非“程序正义”本身;
  • Optimism在进行EVM等效性升级后,其“欺诈证明”机制无法使用,官方称将于未来解决该问题。
  • 真正的去中心化和安全性比高效率更有价值。如果无法及时让用户参与网络维护,那么所谓的Layer2将和传统金融平台毫无区别。

前言

随着ETH合并正式迈入进程,Layer2和Rollup在区块链行内逐渐成为显学。究其本源,Layer2的目的是提高系统每秒处理的交易数量(TPS),并降低Gas费。前者是整个Layer2扩容的最核心要点,后者则是提升Layer2交互体验的关键。

依照其定义,TPS= 一段时间内处理的交易笔数 / 耗时,套用在区块链领域,若忽略分叉或区块重组等情况,可粗略视TPS=平均每个区块包含的交易笔数÷出块时间。对普通公链而言,提升TPS面对的是区块扩容和出块时间问题,同时,TPS的实际值还牵涉到公链采用的Gas机制,无论是ETH还是BSC和Polygon都不出其右。

但提升区块Gas容量或缩短出块时间都会破坏安全性,究其根源,以太坊扩容要面对的是“不可能三角”问题,要如何提高效率,又保障安全和去中心化,始终处在纸上谈兵、悬而未决的阶段。

对此,以Optimism和Arbitrum为代表的Layer2凭借高效率、低Gas的旗号快速崛起,颇为瞩目。在靠着精妙叙事吸引各路资本、靠着超低Gas收获广大用户的同时,其固存的中心化问题却日渐明晰,引起越来越多的关注与质疑。

本文将以重要细节揭示在确保去中心化的前提下,Layer1扩容所面临的困境,以及典型的高效Layer2项目存在的重大问题。

以太坊的Gas机制

决定以太坊效率的关键因素之一是其所采用的Gas机制。在以太坊系统中,Gas是一种计量形式,反映了不同操作的复杂度。就像汽车行驶需要消耗汽油一样,在以太坊上交易会产生Gas消耗。一笔最简单的ETH代币转账,Gas消耗为2.1万。其他类型的操作,如普通的ERC—20代币转账,或更复杂的合约交互,可产生几万甚至数十万的Gas消耗。

以太坊的单个区块有Gas上限,限定了一个区块内全部交易指令可消耗的Gas总量,这就好比冰箱塞满后就不能再装东西。在去年的EIP-1559实行前夕,单个区块的Gas上限约为1500万,粗略算来最多可容纳714笔ETH代币转账,若将平均出块周期13秒置入TPS计算式,则EIP—1559前以太坊的理论TPS上限是55。

但现实中很多交易是Gas消耗较高的合约交互,会大幅占用区块的Gas容量,实际的以太坊TPS均值被压低到20,拥堵不堪,这使得大量潜在的交易需求被排挤在链外。由于单笔交易的手续费=Gas Used×Gas Price,而Gas Used由系统决定,可视为常量,用户发起交易后要付出比别人更高的Gas Price,才能率先被系统响应。最终,因系统特性产生的的供需缺口造就了高昂手续费,让无数人叫苦不迭。

归根结底,ETH本质上是关于交易权限的拍卖平台,Gas Price就是竞标者的出价,交易权限的归属由供需双方通过竞价机制撮合达成。这种设计契合区块链的自由市场原则,却埋下了内卷的种子。

纵观以太坊的历史,每逢有“加密猫”“5.19”一类的热点事件激发交易需求,ETH链就会出现激烈的Gas War现象,谁付出的Gas Price越高谁的交易先上链,剧烈的价格战让Gas Price水涨船高,不能支付高昂手续费的用户被拒之门外,这使以太坊成为名副其实的“贵族链”,引发了无数争端,也让EIP—1559一度成为许多人眼中的“救星”。

但从事实来看,在去年备受瞩目、对区块的Gas机制做出大幅调整的EIP-1559,其核心作用也只是让Gas Price的浮动范围更可控,并降低ETH的通胀率及抛压,而非直接压低Gas Price或取缔Gas竞价机制。

虽然该提案将ETH区块的Gas上限提升至3000万,但只要新区块的实际Gas消耗超过1500万,下一个区块内的Gas Price就会在系统调节下逐级涨价,这个过程可以持续多个区块的时间,直到Gas Price极高,拦住绝大多数人,让新区块可收纳的交易数骤减,Gas消耗量回落至1500万为止。

可以看到,Gas Price连续上涨了4个区块的时间

观察统计数据,可以发现在EIP-1559施行的前后6个月内,以太坊的每日Gas 消耗仅有不到10%的提升。考虑到这6个月内出块周期稳定在13~13.5秒,则ETH每日出块6500~6650个,每个区块的Gas容量始终稳定在1500万上下,并无明显变化。

图表中轴线为伦敦硬分叉第二天

由于EIP-1559没有真正改变区块的Gas含量,以太坊的TPS没有被改善,手续费居高不下,大量的潜在用户仍滞留在以太坊系统外。

根据相关数据,当前的ETH拥有近2亿个独立地址,每日处理的交易笔数仅有100多万笔;相比之下,Gas费较低的BSC(BNB Chain)每日处理的交易笔数高居500万以上,其独立地址数却不到1.5亿个。粗略估算下,ETH网络最多满足了约15%的交易需求。

出块周期

从另一个角度看,由于TPS=每个区块包含的交易笔数÷出块时间,出块周期也是关系到TPS的关键。同时,出块周期中的几个阶段可映射以太坊业务逻辑中的不同组分,这正是Layer2扩容思想的关键点。

需要强调的是,以太坊是由大量服务器节点组成的系统,其业务逻辑包含执行、共识、多方存储3个部分。其中,

  • 【执行】泛指对交易事件等指令进行处理,得到结果;
  • 【共识】指所有节点都认可执行的结果;
  • 【多方存储】指多个节点都存储相同的内容,并可供外界读取。

在部分资料中,也将【共识】称为【结算】,将【多方存储】称为【数据可用性】,这些叫法实质是互通的。

而一个出块周期由以下步骤构成:

  • 首先,矿池节点间通过【工作量证明】选出一个优胜者,由其来完成【执行】交易的过程,制作新区块;
  • 【工作量证明】需要暴力穷举随机数,消耗大量算力,这些任务由矿池内的矿机完成,耗时较长;
  • 优胜的矿池节点会按照Gas Price的高低,从等待上链的交易事件中抓取一批来【执行】,得出结果,然后把交易信息和结果一并纳入新区块;
  • 之后,新区块会被传播给所有的以太坊节点,内容会被检查。具体而言,检查区块的节点会读取其内容,把里面的交易再执行一遍,看出块矿池提交的数据是否正确。这就实现了【共识】;
  • 最后,若新区块通过检查,节点们会收录新区块,完成【多方存储】。

所以,一个新区块会被复制超过2000份,存储在全网的以太坊节点里。更具体的说,所有的矿池节点、所有的全节点都会存储一份。通过这种形式,以太坊节点间近似实现了“一致性”。

以太坊节点数量及物理位置分类

综上,以太坊的一个完整出块周期,包含【工作量证明】+【执行】+【共识】+【多方存储】4个阶段。其中,【工作量证明】和【共识】阶段耗时最长。由于以太坊的矿池和全节点合起来超过2000个,这些节点要达成【共识】会产生大量的通讯时间;而【工作量证明】是具备弹性的时间填充工具,其设计初衷就是为了让出块周期稳定在15秒左右(现出块周期约为13秒)。

为何要让出块周期固定在13秒?这是出于对安全性和去中心化的考量后,所得出的较优解。由于以太坊节点众多,且物理位置分散,出块太快会增大节点间信息差,破坏【共识】;比如,如果将以太坊出块周期降至0.1秒,而将信息传播至美国和欧洲的不同节点时,存在1秒的时差,那么美国和欧洲的节点间就会存在10个区块的信息差异,这就违背了区块链的设计理念。

以太坊节点物理位置分布

如果强行将区块扩容,也会加剧不同节点间的信息差。比如,若将ETH区块的Gas容量提升10倍,则每个区块包含的交易数量会提升10倍,不同节点间可产生的信息差也会增加10倍。

按照相关资料,直到以太坊完成POS转型前,其出块周期都会稳定在13秒,转型POS后,出块周期也只会缩短1秒,稳定在12秒。如此算来,POS转型最多会让以太坊的TPS提升10%,有如杯水车薪。

目前,在保证安全性和去中心化程度不变的前提下,ETH的区块Gas容量与出块时间基本达到理论上的极限,已无太大优化空间。

OP Rollup扩容方案

如前文所述,出于周全考量,以太坊的区块容量和出块周期无法做出太大变动,其TPS基本维持在20以下,近两年来从未有太大改善。

对此,ETH官方以外的扩容方案走上了不同的道路。BSC、Polygon等完全独立于ETH的公链对区块参数做出了修改。以BSC为例,目前其区块Gas容量上限为8000万,可达ETH的2.7倍;同时,BSC将参与共识的节点数量压缩至20几个,仅为ETH的1%,极大压缩了节点达成共识的时间,出块周期缩短到了3秒。这虽然将TPS上限提高到了以太坊的10倍以上,但却与ETH网络“百炼成钢”的安全性完全割裂,去中心化程度也远低于ETH。

BSC区块的平均Gas上限

以Rollup为代表的Layer2则秉持不同的理念。虽然其本质也是以太坊之外的公链,但仍在很大程度上依附于以太坊的安全性。比如,OP Rollup(Optimistic Rollup)会把Layer2的区块链副本压缩存储至以太坊主网,同时:

  • Layer2本地的出块周期仅保留【执行】交易的阶段;
  • 【工作量证明】被取消;
  • 【多方存储】功能被转移至以太坊网络;
  • 【共识】过程由Layer2的验证者节点完成,但并不包含在Layer2本地的出块周期内。

Optimism的原理

以OP Rollup方案中最典型的Optimism为例,其4个最重要的模块分别为Sequencer(序列器)、Verifier(验证者)、CTC(交易链)、SCC(状态链)。其中,Sequencer和Verifier是有硬件实体的Layer2节点,两者基本构成了Layer2的节点网络;CTC 和SCC是部署在以太坊上的合约,这4个模块组成了Optimism的核心架构。

Sequencer是一个中心化的矿池节点,负责在Layer2本地出块。Optimism取缔了【工作量证明】过程,由唯一的Sequencer担任矿工,且不会立刻让其他节点做【共识】验证,这节省了大量时间。目前的Sequencer执行完交易马上就能敲定区块,本地出块时间甚至只需1秒,从根源上提高了TPS。

但是,Sequencer具备很强的中心化特征,它实际上制造了一条独立于以太坊的侧链,若没有【共识】和【多方存储】流程,必然缺乏安全保障。为了解决这个问题,Optimism在其早期文档中指出,Sequencer必须质押一定量的资产,并且:

  • 每隔几分钟,Sequencer节点会把本地区块的压缩版本存储至ETH主网;这些内容包括交易数据的摘要,以及交易发生后的状态根StateRoot。这个过程就是Rollup(打包)
  • 交易数据的摘要被存入ETH上的CTC(交易链)合约,对应的状态根存入SCC(状态链)合约。这会产生两笔交易事件,此过程中,以太坊系统只负责【多方存储】内容,不会去检验正确性;
  • Layer2的Verifier(验证者)会自动读取Sequencer存储至以太坊的内容,对其进行审查,这个步骤与以太坊的【共识】类似。
  • 当前的Optimism和Arbitrum均由官方运行Sequencer节点,存在严重的中心化问题。

CTC和SCC是Optimism官方部署在以太坊上的合约,两者以Batch(批次)的结构,分别记录了Layer2交易数据的摘要,以及每笔交易执行后Layer2状态树的根哈希值。从外观看,CTC和SCC就像两个账单列表。

注:状态树是一个数据库,记录链上地址的信息。获取状态树根和交易数据摘要,便可拼凑出Layer2本地的区块内容。一般而言,SCC合约中存储的Layer2状态根更为重要,获取状态根后,结合交易数据进行计算,便可知晓Sequencer是否擅自改写了用户地址余额。

Layer2的Verifier(验证者)会自动读取CTC和SCC这两个合约中的记录,尽量拼凑出Sequencer本地的区块内容,并进行验证。

  • 若Verifier发现Sequencer提交的数据有问题,便可发起质疑(挑战),并提交自认为正确的版本,挑战成功便可改写CTC与SCC中的错误数据,并获取一定量的代币奖励;
  • Sequencer若被挑战成功,确认有不诚实行为,则受到一定惩罚,其质押的资产会被扣除一部分;若质押余额低于划定的阈值,则Sequencer被强制除名,不再有出块资格;
  • 以上便是“欺诈证明”机制,指Verifier可披露Sequencer的欺诈行为。
  • Verifier和Sequencer之间达成的【共识】具有严重滞后性。一笔交易提交后会立刻被Sequencer执行,但Verifier获取状态根、对结果进行最终验证却可以在1小时之后。
  • Optimism在2021年11月进行了EVM等效性升级,其Sequencer和Verifier客户端取缔了旧版OVM虚拟机,基于旧版OVM设计的“欺诈证明”程序无法运转,而新版的“欺诈证明”程序尚未发布。

按照此前技术文档,Optimism将挑战的窗口时间设置为7天,若7天内没有Verifier发起挑战,则Sequencer发布的内容被敲定,无法再改写。

从本质来看,Optimism是由Layer1和Layer2上的软硬件实体组合成的跨域交互系统,其独特的业务逻辑是在以太坊上构造Layer2区块的映射版本。由于需要跨域传输信息,Optimism的Sequencer和Verifier需要运行以太坊客户端Geth的山寨版:L2geth,通过该软件,Sequencer方可实现横跨Layer2和Layer1的交互。

Optimism的Gas机制及其细节

在Gas费问题上,由于Optimism业务流程有向以太坊存储数据的步骤,其每笔交易的Gas费=Layer1部分+Layer2部分,而Arbitrum和Metis等其他OP Rollup方案也不外如此。

其中,Layer2部分主要涉及Sequencer节点执行交易的费用。由于Sequencer的TPS上限极高,且当前Optimism的用户较少,其本地Gas Price超低。计算公式为:L2 Gas费=L2 Gas Used×L2Gas Price。

  • 据OP官方披露,一笔交易的Layer2部分仅占0.4%,剩余99.6%的Gas开销来自于Layer1部分。[1]
  • 将其转化为简单的算式: 0.4%×执行费用 +  99.6%×存储费用。

不难看出,交易的执行费用已经被大幅缩小了。

所以,执行步骤越复杂的交易(期权等),在Optimism上可节省的成本越多。比如,以太坊上一次要100美元的期权操作,在Optimism上只需要1.5美元左右,仅为1/60;以太坊普通转账要3美元,Optimism可能要0.3美元,为1/10。

而Layer1部分的Gas费,公式= 比例系数×(固定开销+存储开销)。其中,固定开销 来自于打包数据和跨域传输的过程,存储开销 是在ETH上存入数据产生的Gas,比例系数 则由Optimism官方设定,主要是为了预留出一部分资金,防止ETH主网Gas价格激增,无法把数据顺利存上链。

Optimism官方对手续费结构的解释

若想深入理解,可以观察Rollup(打包)和存储的具体步骤:

  • 在将一批交易数据存储至以太坊前,Sequencer会压缩内容,然后将这批交易组合成Batch(批次),传输给ETH网络节点。
  • 每个Batch可包含几百笔交易数据,就像区块一样。发布Batch的时间周期由Sequencer动态调整,目前约为3~10分钟左右。

所以,打包和传输Batch的过程必然有工作量,这会消耗一定的计算资源,固定开销可以填补这部分成本。目前,Optimism上每笔交易的固定开销Gas为2100。Optimism官方表示,随着未来用户规模扩大,每个Batch收纳的交易数量增加后,固定开销将进一步下调。

而在Layer1上存储Batch时,Sequencer会以文本数据Calldata的形式向CTC合约传入Batch信息,一般而言,文本数据只用于存储,不会被用于执行运算。比起普通的合约调用,这一步大量节省了Gas。

Sequencer向CTC传入的数据,是一堆16进制数形式的字符

一般每隔几分钟,Sequencer就会向CTC传输一个交易Batch,其体验就像在以太坊上构建由交易Batch构成的链表。之后,Sequencer又会将交易Batch对应的状态根Batch存入SCC(状态链)合约,该过程与上面提到的类似。

Optimism提交的状态根Batch

以上过程会消耗Gas,具体的Gas消耗量视存储的内容多寡而定。不同的交易类型会产生不同的数据量,存储费用也不尽相同。

OPtimism的理论TPS上限究竟能达到多少?

要探究Optimism的理论TPS上限,我们应当设想一种临界状态:

  • Sequencer本地出块速度远高于以太坊主网,那么Layer2原生内容和Layer1 副本内容之间一直有信息差△。随着Layer2用户增多,实际TPS激增,Layer2和Layer1间信息差△可以被扩大;
  • 当Optimism逼近其理论TPS上限时,Layer2和Layer1间每秒的信息差△可以非常大。所以,此时Optimism必须尽快向以太坊主网提交数据,不惜一切代价同步数据;
  • 最终,Sequencer发起的指令,占用了以太坊区块的全部Gas,也即以太坊上全部可用的资源,都为Optimism所用,每一个以太坊区块里收纳的都是Sequencer提交的数据;
  • 以EIP-1559后每个以太坊区块的Gas上限为3000万来计算,若Optimism本地执行、向以太坊提交的也都是最简单的转账操作,则此时Optimism的TPS上限约为1600左右【2】。

W3.Hitchhiker团队计算的各种Layer2方案理论TPS上限

综上所述,Optimism的TPS上限至少为以太坊的16倍。考虑到目前Optimism用户太少,实际TPS甚至不到以太坊的3%,其发展空间最大可达现在的500倍。

对以上内容进行整理,结合实际调查,在此归纳得出:

  • Sequencer节点自己制造了一条TPS极高的区块链,这便是扩容之源。虽然效率极高,但因其高度中心化,Sequencer可能作恶或宕机;
  • 为了增强安全性,Optimism要求Sequencer质押一定资产,并要求Sequencer在ETH主网上披露Layer2区块关键信息,Verifier会自动读取,检查准确性;
  • 由于存储在ETH上的交易数据是被压缩过的,且以太坊节点不负责具体执行这些交易,不负责验证数据的正确性,这可以大量节省Gas。目前,在Optimism上执行复杂的期权操作,Gas费可低至以太坊的1%。

Optimism上的一笔期权开立操作,只用了1.2美元;以太坊上要100多美元

Verifier和Sequencer之间达成的【共识】具有严重的滞后性。一笔交易提交后会立刻被Sequencer执行,但Verifier获取状态根、对结果进行最终验证却可以在1小时之后。由于延时过长,可存在多种类别的攻击场景,这对Optimism的安全性是潜在的威胁。

Optimism的Sequencer上传到Layer1的状态根Batch,周期居然可以达到1小时

  • Verifier受到的激励 = 挑战成功的代币奖励 节点运行成本。发布“欺诈证明”且挑战成功是一个不可预测的事件,概率不高,所以Verifier受到的激励不强,此类节点的数量不易扩充,共识和安全性仍然弱于以太坊。

如前文所述,扩充Verifier最有效的方式是增强激励,或者开放对等节点网络。对于尚未发行代币也未开放对等节点的Optimism而言,难以像Metis那样通过自己发行的代币激励验证者。所以,当前的Optimism在如何扩充验证节点规模、增强验证的时效性上,均面临着不小的挑战。

  • 值得注意的是,目前Optimism和Arbitrum等OP Rollup的Sequencer节点均由官方提供,所以,Sequencer惩罚机制是否有效,尚且存在争议;目前Optimism和Arbitrum的安全性更多来自于项目方的“信用”,而非“程序正义”本身;
  • 颇为重要的是,Optimism在2021年11月进行了EVM等效性升级,其Sequencer和Verifier客户端取缔了旧版OVM虚拟机,基于旧版OVM设计的“欺诈证明”程序无法运转。而新版的“欺诈证明”程序尚未投入运行,目前挑战机制无法生效。

结语

尽管如今的Optimism炙手可热,表现出巨大的发展前景和增值空间,但如前文所说,其仍面临着过度中心化的问题。GavinWood曾说:“真正的去中心化和安全性比高效率更有价值。”如果无法及时让用户参与网络维护,那么所谓的Layer2将和传统金融平台毫无区别。

Gavin Wood曾就去年Solana短暂宕机一事称:真正的去中心化和安全性比高效率更有价值。如果用户不能自己运行网络的全节点,那么这样的项目将和传统银行毫无区别

在靠着理想化叙事制造扩容愿景的同时,已经“大而不倒”的Optimism该如何走向去中心化之路,兑现“欺诈证明”机制和多Squencer轮换的设想,还有待时间去考证。但可以确定的是,从长期看,只有真正的去中心化可以在历史的风沙之中屹立不倒,永世长存。

参考文献

  1. The Road to Sub-dollar Transactions Part 1: Slashing Fees by 30%
  2. 一文了解Layer2的四大解决方案交易成本对比

Optimism