作者:Web3er Liu,CatcherVC
在凭借理想化叙事制造愿景的同时,Optimism该如何走向去中心化之路,兑现“欺诈证明”机制和多Squencer轮换的设想,还有待时间去考验。
随着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消耗。一笔最简单的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万为止。
观察统计数据,可以发现在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个部分。其中,
在部分资料中,也将【共识】称为【结算】,将【多方存储】称为【数据可用性】,这些叫法实质是互通的。
而一个出块周期由以下步骤构成:
所以,一个新区块会被复制超过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容量与出块时间基本达到理论上的极限,已无太大优化空间。
如前文所述,出于周全考量,以太坊的区块容量和出块周期无法做出太大变动,其TPS基本维持在20以下,近两年来从未有太大改善。
对此,ETH官方以外的扩容方案走上了不同的道路。BSC、Polygon等完全独立于ETH的公链对区块参数做出了修改。以BSC为例,目前其区块Gas容量上限为8000万,可达ETH的2.7倍;同时,BSC将参与共识的节点数量压缩至20几个,仅为ETH的1%,极大压缩了节点达成共识的时间,出块周期缩短到了3秒。这虽然将TPS上限提高到了以太坊的10倍以上,但却与ETH网络“百炼成钢”的安全性完全割裂,去中心化程度也远低于ETH。
以Rollup为代表的Layer2则秉持不同的理念。虽然其本质也是以太坊之外的公链,但仍在很大程度上依附于以太坊的安全性。比如,OP Rollup(Optimistic Rollup)会把Layer2的区块链副本压缩存储至以太坊主网,同时:
以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必须质押一定量的资产,并且:
CTC和SCC是Optimism官方部署在以太坊上的合约,两者以Batch(批次)的结构,分别记录了Layer2交易数据的摘要,以及每笔交易执行后Layer2状态树的根哈希值。从外观看,CTC和SCC就像两个账单列表。
(注:状态树是一个数据库,记录链上地址的信息。获取状态树根和交易数据摘要,便可拼凑出Layer2本地的区块内容。一般而言,SCC合约中存储的Layer2状态根更为重要,获取状态根后,结合交易数据进行计算,便可知晓Sequencer是否擅自改写了用户地址余额。)
Layer2的Verifier(验证者)会自动读取CTC和SCC这两个合约中的记录,尽量拼凑出Sequencer本地的区块内容,并进行验证。
按照此前技术文档,Optimism将挑战的窗口时间设置为7天,若7天内没有Verifier发起挑战,则Sequencer发布的内容被敲定,无法再改写。
从本质来看,Optimism是由Layer1和Layer2上的软硬件实体组合成的跨域交互系统,其独特的业务逻辑是在以太坊上构造Layer2区块的映射版本。由于需要跨域传输信息,Optimism的Sequencer和Verifier需要运行以太坊客户端Geth的山寨版:L2geth,通过该软件,Sequencer方可实现横跨Layer2和Layer1的交互。
在Gas费问题上,由于Optimism业务流程有向以太坊存储数据的步骤,其每笔交易的Gas费=Layer1部分+Layer2部分,而Arbitrum和Metis等其他OP Rollup方案也不外如此。
其中,Layer2部分主要涉及Sequencer节点执行交易的费用。由于Sequencer的TPS上限极高,且当前Optimism的用户较少,其本地Gas Price超低。计算公式为:L2 Gas费=L2 Gas Used×L2Gas Price。
不难看出,交易的执行费用已经被大幅缩小了。
所以,执行步骤越复杂的交易(期权等),在Optimism上可节省的成本越多。比如,以太坊上一次要100美元的期权操作,在Optimism上只需要1.5美元左右,仅为1/60;以太坊普通转账要3美元,Optimism可能要0.3美元,为1/10。
而Layer1部分的Gas费,公式= 比例系数×(固定开销+存储开销)。其中,固定开销 来自于打包数据和跨域传输的过程,存储开销 是在ETH上存入数据产生的Gas,比例系数 则由Optimism官方设定,主要是为了预留出一部分资金,防止ETH主网Gas价格激增,无法把数据顺利存上链。
若想深入理解,可以观察Rollup(打包)和存储的具体步骤:
所以,打包和传输Batch的过程必然有工作量,这会消耗一定的计算资源,固定开销可以填补这部分成本。目前,Optimism上每笔交易的固定开销Gas为2100。Optimism官方表示,随着未来用户规模扩大,每个Batch收纳的交易数量增加后,固定开销将进一步下调。
而在Layer1上存储Batch时,Sequencer会以文本数据Calldata的形式向CTC合约传入Batch信息,一般而言,文本数据只用于存储,不会被用于执行运算。比起普通的合约调用,这一步大量节省了Gas。
一般每隔几分钟,Sequencer就会向CTC传输一个交易Batch,其体验就像在以太坊上构建由交易Batch构成的链表。之后,Sequencer又会将交易Batch对应的状态根Batch存入SCC(状态链)合约,该过程与上面提到的类似。
以上过程会消耗Gas,具体的Gas消耗量视存储的内容多寡而定。不同的交易类型会产生不同的数据量,存储费用也不尽相同。
要探究Optimism的理论TPS上限,我们应当设想一种临界状态:
综上所述,Optimism的TPS上限至少为以太坊的16倍。考虑到目前Optimism用户太少,实际TPS甚至不到以太坊的3%,其发展空间最大可达现在的500倍。
对以上内容进行整理,结合实际调查,在此归纳得出:
Verifier和Sequencer之间达成的【共识】具有严重的滞后性。一笔交易提交后会立刻被Sequencer执行,但Verifier获取状态根、对结果进行最终验证却可以在1小时之后。由于延时过长,可存在多种类别的攻击场景,这对Optimism的安全性是潜在的威胁。
如前文所述,扩充Verifier最有效的方式是增强激励,或者开放对等节点网络。对于尚未发行代币也未开放对等节点的Optimism而言,难以像Metis那样通过自己发行的代币激励验证者。所以,当前的Optimism在如何扩充验证节点规模、增强验证的时效性上,均面临着不小的挑战。
尽管如今的Optimism炙手可热,表现出巨大的发展前景和增值空间,但如前文所说,其仍面临着过度中心化的问题。GavinWood曾说:“真正的去中心化和安全性比高效率更有价值。”如果无法及时让用户参与网络维护,那么所谓的Layer2将和传统金融平台毫无区别。
在靠着理想化叙事制造扩容愿景的同时,已经“大而不倒”的Optimism该如何走向去中心化之路,兑现“欺诈证明”机制和多Squencer轮换的设想,还有待时间去考证。但可以确定的是,从长期看,只有真正的去中心化可以在历史的风沙之中屹立不倒,永世长存。
参考文献