返回博客列表

坎昆升级

2024年3月26日
16 min read
web3ETH

本文尽量用清晰简单的话来阐述,旨在为大多数人解惑。

一句话概括

以太坊的这次升级是为了提速降费。 稍微严谨一点:在几乎不牺牲安全性和去中心化的前提下,大幅提升扩展性。

关于这句概括,我们可以提出诸多问题:

  • 这是怎么做到的呢?
  • 速度提升了多少
  • 费用降低了多少?
  • 对项目和用户都有什么影响?
  • 哪些地方有潜在投资机会?

为了更好地说明这次升级的内容, 需要补充一些背景。

背景

以太坊在设计的时候偏向安全性和去中心化,用户提交的每条交易,都必须广播给所有节点,验证后再被打包成区块提交到链上。这样的设计已经不能满足不断增长的网络使用需求。结果便是网络拥堵和交易成本攀升。

如何解决这个问题呢?

如果你来设计,要如何解决这个问题呢?

我们先看看以太坊为什么慢?

因为每笔交易都需要广播到全网处理,最后的区块也需要同步到全部节点。 由于每个节点都要和所有节点通信,所以速度较慢。 fullgraph.png

可不可以不同步到全部节点呢? 可以形成树状结构,让节点只与上级和下级通信(Solana) hierarchy.png 也可以分片,不同片处理不同的交易,再汇总(Sharding)

这两种方法都能提升速度,但是都牺牲了去中心化程度和安全性。 第一种严重依赖领导节点,第二种的每一个分片的节点少了,更容易攻击者掌握大部分节点从而操控整个分片。

可不可以提升单个节点的性能呢? 可以,但是这样提升了节点的门槛,节点变少,也牺牲了去中心化。

以太坊可不能只顾性能放弃太多去中心化和安全性,这相当于砸了自家招牌。

我们再来看看是什么地方花了GAS费

一笔交易的总费用等于: 使用的GAS数量 *(基础费 + 优先费) 使用的GAS数量和交互的合约有关,合约固定,一般不会变

另外两项基本上也是网络越拥堵越贵,所以我们又回到了第一个问题

但是第一个问题的解决方案总是要以牺牲安全性为代价,就不能既要又要吗?

以太坊给出的答案是Rollup,就是把多笔交易打包成一笔,大家均摊费用,这样速度快了,费用也降低了。这么多笔交易的安全性也和一笔交易的安全性是一样的。岂不美哉?

打包交易的操作就在其他地方完成,不占用以太坊主网。这些地方就是Layer2。 你可能一拍大腿:漂亮,这下问题解决了吧?

慢着,我们看一看是怎么打包的。 目前Layer2基本上都是一个打包节点(排序器)在做这项任务。好嘛,这下又中心化了。 所以现在又在搞去中心化排序器。既然要去中心化,是不是要多加节点?

gossip.png

这个图是不是看着眼熟?问题没有完全解决,只是转移到了Layer2 而且随着网络需求的上升,layer2也有拥堵的情况,交易费用也不断攀升。怎么办?好办,再加一个layer3

gossip.png

妙啊 话说回来,这个方案虽然有吐槽的地方,但是确实解决了问题,以太坊的速度确实快了,费用也降低了。

为什么要有这次升级

回到坎昆升级。这次升级基本上是和上述方案配合,让以太坊更快更便宜。 所谓DankSharding,其实就是把layer2传到layer1的数据再压缩了一遍,让它们更便宜。因为目前layer2的费用大部分都来自把交易数据传到以太坊上的费用。所以压缩以太坊的数据能大大降低这一部分。 op_gas.png

更详细的说明

升级前layer2的数据打包后都作为calldata发送到layer1虽然多笔交易打包成一笔了,但是数据还是那么多,对于节点来说存储的成本还是很大。

这次升级中的EIP-4844,就把数据保存成了另一种压缩的格式blob。而且这些数据只会暂存在链上,保留18天,进一步地降低了节点的存储成本。

EIP-4844还为此添加了一种交易类型,可以附带blob数据。如下图所示,blob只是挂在交易外面,并且仅临时存储在信标节点,不会进入到EVM计算(layer2的数据只需要验证不需要执行)。此种交易类型的费用计算也与一般交易不同,下面会详细说明。

blob.png

source: Protolambda

为什么叫Danksharding,和分片什么关系?

Dank 和 Proto都是人名。Sharding是分片没错,只不过这里是数据分片,不是最初提到的节点分片。在Danksharding的构想中,blob数据分片后,不同的节点只需要抽查这些片就行了。

这次升级的Proto-Danksharding,就是EIP-4844,只是过渡版本。 完整的Danksharding,节点不需要检查全部交易,只需要抽查即可(抽查的安全性由多项式承诺保证,这里略过)。节点的运算量大约会降低100倍左右,进一步提速降费。

目前提了多少速,降了多少费?

速度变化

从实际数据上来看,升级前后的TPS没有显著变化。 activaty.png 那么理论上限是否提高了呢? 根据官方文档的说法,目前一个块最多6个blob(一共0.75MB)。这多的0.75MB大概可以容纳4200笔交易。由于每12s出块一次,所以每秒多350笔,TPS理论能达到350以上。 (具体计算过程见 https://www.blocktempo.com/we-could-overestimated-eip-4844/

Layer 2的费用变化

下面是一些layer2的平均交易费用的对比:

newplot.png

source: https://fees-growthepie.streamlit.app/

gas_comparison.png Source: CoinShares, Dune Analytics

3月13日坎昆升级完成,可以看到,这之后各个layer2都同步了升级,所以费用先后下降到了0.01u左右。

那么理论上的费用呢? 官方文档给出一个近似公式 blob_base_fee = MIN_BLOB_BASE_FEE * e**(excess_blob_gas / BLOB_BASE_FEE_UPDATE_FRACTION)

这个不复杂,其实就是基准值+动态调节。MIN_BLOB_BASE_FEE做为基准,然后乘一个指数的参数,意思就是如果超出基准值费用会指数增加,最后平衡在基准值附近。这里的基准就是一个块3个blob。

Blob的Gas和普通交易的Gas是分开计算的,这里偏离基准值的部分也是分开计算,互不影响。

Layer1 的费用变化

对于layer1上的其他交易来说,机制没有变化。Layer1上的交易一般不用blob(需要购买整个blob才能发布),但是layer1的费用理论上也应该降低不少,因为layer2的交易走了另外的通道,拥堵情况大大缓解。

长期来看费用会随着layer1交易逐渐迁往layer2而减少,这个减少不是机制的改变带来的,而是需求变化产生的。

glassnode-studio_ethereum-mean-transaction-gas-price-gwei.png source: glassnode

举个例子

我们看个例子,以Arbitrum为例 升级前: 可以看到,所有的交易数据,共0.746MB,都存在calldata里,交易费用为0.399个eth etherscan1.png

升级后: calldata里没有多余的交易数据,交易费用为0.01eth, 最上面多了个blob选项卡 etherscan2.png 点开blob,可以看到这次附加了6个blob。这里也可以看到blob_base和max 下面Blob As Calldata Gas这一行写了如果这些数据按照calldata计费要贵15.84倍,也可以看出blob的计价是和普通交易分开的,而且便宜了不少。 blob的Gas价格为每个字节1个Gas。calldata则为16个Gas(有浮动)。 etherscan3.png

对未来有什么影响?

Layer1 主网

这是V神发的以太坊的Roadmap,第一阶段The Merge主要是上次的上海升级,第二阶段The Surge就是目前的坎昆升级,可以看到以太坊的发展基本上是这样按照V神的规划走的,虽然有一些提前在讨论或者完成(比如Verkle Tree和PBS),我们大体上还出可以据此推断以太坊未来的发展。

首先在几个月内当然是会逐渐像完整的Danksharding过渡,完成第二阶段,交易费用随着节点的成本降低而进一步降低。交易大量转移到Layer2,以太坊逐渐向结算层的角色转变。 roadmap.jpeg source: https://twitter.com/ethereumcn/status/1466731320537612296?s=46&t=9yOAkX-0nd_xvSJIJ8_Pmw

对老牌Layer2的影响

从TVL上来看,OP系的Arbitrum和Optimism暂座头两把交椅。升级之后,从费用和速度上来讲,ZK系的layer2和OP系的距离大大缩短,是不是有机会反超呢?在layer2这里,生态具有更重要的地位。前两个layer2积累了足够的前期优势,都有自己的头部项目(GMX和Velo),都在生态上建立了护城河。而且这次升级影响到所有的项目,虽然ZK系获益更大,但是不足以改变格局。

layer2.png source: https://defillama.com/chains/Rollup

Layer2 百花齐放?

改变格局的点更多的应该在新入局者上(比如上图中的Blast,最右边紫色部分)。 随着Raas(Rollup as a service)的成熟,一键发链已不是问题;这次升级之后,运行Layer2的成本降低,区块容量提升,容纳更多的layer2的空间也有了。

l2beat上显示已经有80个layer2项目(包括即将上线的)。

新的layer2会带来更大的想象空间,比如Blast的空投激励,Metis的PoS去中心化排序器。

在旧的layer2格局不会发生太大变化的情况下,市场会更愿意追捧新的,有差异化的layer2项目。

流动性割裂的问题

每当出现一个新的layer2,由于交易的需求,上面就会产生一堆从以太坊fork的dex,这些dex都分走了以太坊的流动性,而且大部分处于不能相互流通的状态。真的需要有这么多dex吗?

共享排序器带来的链上互通能缓解这个问题,但是这需要不同的layer2之间在技术上和利益上都要紧密合作,可预期最好的情况也是分为几个小的团体。目前看来Op的Superchain更容易达到这个目标。

应用链

Layer2为了和同行竞争,最有效的就是扶持一个龙头项目,正如Arbitrum和Optimism那样。但是龙头项目做大了之后就会有强烈的出走的愿望。要么是扩展到其他链,要么是自己变成应用链。既然现在发链和运行layer2的成本如此低,为什么不自己做一个应用链呢?可以按照自己需要定制的同时还能省下Gas。

在通用layer2和应用链之间还有折衷就是专为一类应用设计的layer2,比如Starknet现在就主打全链游戏。TreasureDAO的Layer3游戏链。

Layer3

可以看到layer3项目基本都在Arbitrum上。和Op的Superchain横向扩展相比,Arbitrum选择了套娃纵向发展。从生态的角度上来看,两者的区别并不大,选择layer3或是superchain,都是把自己的用户和流动性加入到了对应的生态。

Layer3上的都是应用链或专用链,这也算是应用链和做链上项目的一个折衷:加入Arbitrum的同时保持一定的自主性。 layer3.png source: layer2beat 总的来看,应用链或者专用链的增加是一个大趋势。每个应用都有自己对安全和速度等基础的不同需求,而这次升级降低了应用成为链的成本。

Reference

https://www.eip4844.com/ https://ethereum.org/zh/developers/docs/scaling/ https://ethereum.org/zh/roadmap/vision/ https://notes.ethereum.org/@vbuterin/proto_danksharding_faq https://ethereum.org/zh/developers/docs/transactions/#transaction-lifecycle https://medium.com/nearprotocol/the-authoritative-guide-to-blockchain-sharding-part-1-1b53ed31e060

https://ethresear.ch/t/eip-4844-fee-market-analysis/15078/6 https://www.blocktempo.com/we-could-overestimated-eip-4844/ https://www.ethereum.cn/Eth2/4844-design

https://ethresear.ch/t/blob-serialisation/1705 https://ethresear.ch/t/suggested-format-for-shard-blob-header/9996

评论讨论

使用 GitHub 账号登录参与讨论

加载评论中...