作者:Maggie@Foresight Ventures
一、背景 2020 年,以太坊发布的 “以 Rollup 为中心的以太坊路线图 ”,以及第二年Vitalik发表的「Endgame」中描述的以太坊的最终图景,确定了以太坊的大方向:优化以太坊的基础层建设,为Rollup服务。
以太坊设计了Danksharding的分片技术以提高以太坊作为数据可用性层的可用性。它将显著降低L2的交易手续费,提高Rollup的TPS,实现以太坊的大幅扩容
直至今年,以太坊坎昆-德内布(Dencun)升级终于在 2024 年 3 月 13 日推出,EIP4844即将上线,这次硬分叉可以说是以太坊实现Danksharding的第一步,是以太坊路线图核心中的核心。
二、坎昆升级如何利好L2?
EIP4844引入了一种新的交易类型,称为blob-carrying交易。 每个blob-carrying交易都可以“携带”一个 Blob 列表 。Blob 是一个数据包,大约 125 KB。Blob存储的时间很短,仅4096个epoch,略多于18天。
L2交易手续费大幅下降。 由于Blob不需要永久存储,Blob相比于区块空间更大更便宜。Blob 可以在相同的 gas 消耗下存储比 Calldata 多 10 倍的数据。适配了EIP4844的Rollup可以将交易数据存储在 Blob 中,将交易费用降低一个数量级。
L2的TPS成倍提高。 目前每个区块目标是3个Blob,最多允许 6 个 Blob。区块只有 90KB,而每个Blob大约125KB。引入Blob相当于为区块额外扩展了几倍的空间可以用来存Rollup的数据,因此Rollup的TPS也能成倍增加。且Toni和Vitalic写的“On Increasing the Block Gas Limit”中表示,会通过增加区块Gas limit和非零Calldata bytes的价格,实现更小、变量更少的区块大小,从而未来可以增加更多Blob。Blob更多则存储空间会更大。
对最终用户而言,Ethereum L2适配EIP4844后,交易速度更快、成本更低、体验更流畅、反应更灵敏。这些L2上会有更复杂更大型的Dapp应用。
三、L2如何适配EIP4844?
L2如何适配EIP4844呢?我们需要分Optimistic Rollup和ZK Rollup来分别讨论。
Optimistic Rollups适配EIP4844 Optimistic rollup是通过欺诈证明来保证rollup执行的正确性的。即节点首先选择相信状态的转换是正确的,除非有人在规定的时间段内发起欺诈证明,证明之前提交的是状态转换是不合法的,则该状态转换会被撤销。
Optimistic Rollup适配EIP4844相对ZK rollup来说更简单。把L2的交易都通过Blob-carrying交易提交到L1即可完成适配。此外,就是要调整欺诈证明使之适配EIP4844,这部分就可以慢慢做了。毕竟,很多optimistic rollup至今也没上线欺诈证明。上线了欺诈证明的,发现两年多都没有一个欺诈证明提交。
L2交易提交 :Rollup提交的时候,使用Blob-carrying交易,将Rollup数据存储在Blob中。Blob-carrying交易的payload是rlp([tx_payload_body, blobs, commitments, proofs])
,其中
tx_payload_body - 是标准 EIP-2718 blob 交易的 TransactionPayloadBody。
blobs - Blob 列表。一个交易最多包含两个blob。
commitments - Blob的KZG承诺列表。
proofs - Blob和对应KZG承诺的证明列表。这个证明是会被ETH节点所验证的。
调整欺诈证明:
首先,证明者和挑战者需要多轮交互等方式找到争议点。
然后将争议点提交到L1上做判定。适配EIP4844则有可能还需要证明这个争议点的数据存储在某个Blob上。
由于Blob数据大约18天后会被删除,因此挑战期必须在被删除之前,这一点现在的optimistic rollups都是满足的。一般挑战期不超过7天。
ZK Rollups适配EIP4844 ZK rollup是通过ZKP来证明L2状态转换是正确的。ZK rollup适配EIP4844相对optimistic rollup来说更复杂。
L2交易提交 :这一步Optimistic Rollup是相似的。
ZK证明提交:与适配前的ZK Rollup相比,除了做状态转换的ZKP证明以外,还需要多证明一个过程。即证明blob commitment和transaction batch是对应的,从而保证状态转换证明的输入是正确的。
打个比方:状态转换的ZK电路能生成计算过程a + a = b的证明。当(a=1,b=2)和(a=2,b=4)时生成的ZKP都是合法的。因此我还需要提供一个证明,证明我当时提供的输入是(a=1,b=2)而不是(a=2,b=4)。
这一点在适配EIP4844之前是不需要做的,因为数据就直接存储在Calldata中可以直接读取,确保了输入不会被调包。用了EIP4844后,Blob数据无法直接读取,只能通过一个新的电路来证明这一点。
用STARK的ZK rollup(如Starknet)更容易实现这种证明机制。而这对于用SNARK的ZK rollup是存在挑战的,原因是:EIP4844的blob commitment使用的椭圆曲线是BLS12-381,而ETH的预编译合约只支持了BN254,由于曲线不同,导致我们难以直接在智能合约中验证blob commitment完成证明。
用SNARK的zkEVM/zkVM需要解决第2点中提到的由于曲线不匹配无法生成ZK证明的问题。
等待Ethereum支持BLS12-381的预编译合约。这会很漫长。
采取另一种证明方式来证明。要设计新的电路,必须用预编译合约所支持的BN254椭圆曲线。目前,我们看到Morph采用了这个方法。这也使得Morph成为第一个完成EIP4844适配的zkEVM。
四、有哪些L2适配了EIP4844?
Optimistic rollup适配EIP4844相对容易。
Arbitrum将于 3 月 14 日启动 Arb OS20 升级,以实施坎昆升级的 EIP 更改 (文章链接)。 Arbitrum属于Stage 1的Rollup,交易提交和欺诈证明都需要适配EIP4844,其安全性相对较好。
Optimism于3月14日启动Ecotone升级完成适配 (文章链接)。 Optimistic rollup属于是Stage 0的Rollup,目前还没有欺诈证明,适配起来更容易,但安全性不够高。完成适配后,Op 生态内所有的超级链网络也都将从 EIP-4844 中受益。
ZK rollup中,使用STRAK和SNARK的rollup适配难度是不同的。
用STARK的rollup适配EIP4844更简单,Starknet是其中的代表。
Starknet发表了文章表示坎昆升级后会实施对EIP4844的适配 (文章链接)。
zkSync 已经通过Boojum升级让zkSync完成从SNARK向STARK证明过渡。这也是为EIP4844升级做准备。Boojun是一个基于 STARK 的证明系统。
用SNARK的rollup适配起来相对复杂
Polygon zkEVM 预计将于 5 月上线Feijoa升级 ,适配 EIP-4844。(文章链接)
Scroll则是在去年发表了一篇文章介绍了适配EIP4844的思路 (文章链接)。
最令人印象深刻的是Morph, 他是一个Optimistic ZK Rollup,率先发布了zkSNARK zkEVM适配EIP4844的方案 ,可以说是第一个完成EIP4844的zkSNARK zkEVM的rollup (文章链接)。 Optimistic ZK Rollup结合了两类Rollup的优势。它乐观地相信Sequencer提交的执行结果,允许对结果产生怀疑的人发起挑战。只有在发起挑战时,证明者才会生成ZKP来证明执行结果的正确性。它拥有Optimistic rollup的效率,又拥有ZK rollup的ZK证明的可靠性。