以太坊跨链迎来新解法:EEZ 如何打破 L2 流动性孤岛?

以太坊跨链迎来新解法:EEZ 如何打破 L2 流动性孤岛?

以太坊经济区(EEZ)让Rollup在一笔交易中使用以太坊和其他EEZ链的资源。它通过实时证明和组合器实现同步可组合性,共享L1流动性,但需在速度、同步和去中心化中三选二。

作者:0xJaehaerys,白话区块链

每个人都对流动性碎片化问题耳熟能详。以太坊生态系统的流动性分散在 L1 和数十个 L2 上。

在 Rollup 上,你无法在一笔交易中完成以下操作:在主网 Aave 上借出 USDC,在 Uniswap 上将其兑换为 ETH,然后将其作为保证金存入永续合约 DEX。你必须打开跨链桥、跨链转移、在这里授权、发送到那里、再次跨链、最后存款。

以太坊经济区(EEZ)将这一切变成了一笔交易。EEZ 中的 Rollup 可以像处于同一条链上一样,使用以太坊以及其他 EEZ Rollup 上的所有资源(同步可组合性)。

什么是 EEZ

EEZ 由以太坊上的合约以及将各条链连接到这些合约的规则组成。它不是一条新链,也不是一套新堆栈。一条已连接的链可以在一笔交易中使用以太坊或任何其他已连接链上的资源。这个想法源于执行分片(execution sharding,一个古老的以太坊扩容计划),而实时证明(real-time proving)使其成为现实。

EEZ 的出发点是:L1 周围的链数量不会减少。即使推向极限,L1 也无法承载全球经济,它没有足够的带宽。而且并非所有人都适合待在 L1 上,L1 上没有人会帮你纠正错误,而银行或交易平台需要不同的规则。各个链将各不相同,涵盖 EVM 和非 EVM、公有、私有或许可链,而我们的任务就是让它们像一个整体一样协同工作。

区域内的每条链仍然按照自己喜欢的虚拟机(VM)和顺序运行交易。它也自行决定允许谁加入以及信任哪些证明。区域内所有链共享的是以太坊区块。它们中的每一条都可以在同一个区块中使用 L1 上的流动性、合约和密钥。“经济区”这个名字正是源于此,一个拥有共享市场、但每条链都有各自独立规则的区域。

要加入 EEZ,一条链必须至少满足两个条件:在一个 slot 内证明其状态,以及在以太坊发生重组(reorg)时与之一起回滚。

第二个条件是为了防止重组发生后,某个 Rollup 依旧停留在被丢弃的历史状态中。而第一个条件,在几年前还绝无可能。

从技术上讲,EEZ 依托于三个核心组件:

什么是实时证明

有效性证明(validity proof)用于表明一条链遵循其规则达到了新状态,以太坊上的合约无需重新执行该链的区块即可完成验证。

实时证明意味着证明能够在一个以太坊 slot(12 秒)内生成。如今这已成为现实:RISC Zero 和 SP1 能够在 12 秒内证明一个区块(在 8 张至 16 张显卡上,成本为 1 至 5 美分);如果出块时间更短,这一过程还能进一步加速。

一年前,实时证明曾引起巨大轰动。当时 ZisK 需要 24 张 RTX 5090 显卡,而今天只需要 4 张就够了(Ethproofs)。

EEZ 需要它,因为以太坊不执行 Rollup 的代码,它只在附带证明的情况下接受 Rollup 的答复。过去生成证明需要几分钟甚至几小时,答复无法在发起调用的同一个区块内到达;而在一个 slot 内完成的证明让这一切成为可能。

在 EEZ 的设计中,Rollup 对跨链调用的答复是在出块前准备好的。组合器计算出结果,证明器证明该结果,构建者(builder)将证明连同需要该答复的交易一起打包进以太坊区块,所有这些操作必须在同一个 12 秒内完成。

同步调用如何运作

理解这一过程最简单的方式,是看一笔从以太坊到 Rollup 的单次调用(两条 Rollup 之间的调用路径相同)。

代理(Proxy)

对另一条链的调用通过代理进行。Rollup 上的每个合约在以太坊上都有一个预先可知的代理地址,反之亦然。

该地址通过 CREATE2,根据 EEZ 合约地址、原始合约地址以及链 ID 计算得出。当以太坊上的某个合约需要调用 Rollup 上的合约时,它只需直接调用该合约在以太坊上的代理。

组合器与执行表(Composer and the execution table)

组合器在交易涉及的每条链上运行该交易,并将每次跨链调用写入执行表(一张预计算答案的表格)。每个条目(执行条目)包含调用的答案、调用前后 Rollup 的状态根、Rollup 将回调至以太坊的调用列表,以及这些调用及其结果的滚动哈希(rolling hash)。一份证明即可覆盖整张表。

组合器向构建者发送一个交易包(bundle),构建者要么按顺序完整包含这组交易,要么完全不包含。

交易包中的第一笔是 postAndVerifyBatch 交易,它提交执行表并验证其证明。后续交易是针对 Rollup 代理的调用,这些代理会直接从已验证的执行表中读取答案。

验证批次与代理的答复

postAndVerifyBatch 交易会验证批次的证明。信任哪种证明系统(ZK、TEE、多签或它们的组合)以及每个批次需要多少个证明,均由 Rollup 的入驻(onboarding)规则决定。

一旦交易执行完毕,该批次中的执行条目便可在以太坊上供代理使用。

接下来执行用户的交易。当它调用代理时,代理会在 EEZ 合约中查找该调用的条目,且仅在满足以下条件时才从中给出答复:该调用与组合器模拟的完全一致、该条目随同一区块的批次一同到达,且 Rollup 回调以太坊所产生的滚动哈希相匹配。

回调至以太坊

Rollup 回调至以太坊的调用由以太坊直接执行,而 Rollup 则从组合器的模拟中获取这些调用的答案。调用可以嵌套:通过这种方式被调用的以太坊合约,可以通过代理再次调用 Rollup 上的合约,而该嵌套调用的答案早已存在于执行表中。

开篇的那笔交易

这笔交易的方向相反,是从 Rollup 到以太坊。在出块前,组合器在两条链上执行该交易,并将用户钱包将收回的所有内容写入执行表。

构建者将带有执行表和证明的批次放入以太坊区块中。整个序列发生在一个区块内。你在 Rollup 上发起的单笔交易借出了 USDC、兑换了 ETH,并将其存入了保证金金库。

如果组合器在模拟中发现任何失败步骤,就不会发送该交易包。如果以太坊上的实际执行结果与模拟不符,以太坊和 Rollup 上的所有操作都会全部回滚。

这带来了什么改变

上述交易仅仅展示了其中一种可能性。调用可以在所有方向上进行:L1 → L2、L2 → L1 或 L2 → L2。

任何 Rollup 都能共享以太坊的流动性

EEZ 中的新链无需通过 Token 激励来冷启动流动性,它可以直接使用 L1 上已有的流动性和应用。在 EEZ 位于主网的测试 Rollup RollupX 上,有人从以太坊的 Uniswap 池中购买了 CRV。当时 Rollup 上根本不存在 CRV,跨链桥在同一笔兑换交易中直接铸造了封装版 CRV (tx)。

当每条 EEZ 链都这样做时,交易量都会汇入同一个 L1 资金池,而不会在各条链之间碎片化。以太坊上的其他协议也不需要在每条链上重复部署。这些调用的 Gas 在 L1 上支付,EEZ 链上的活动越多,意味着对以太坊区块空间的需求就越大。

应用推出 Rollup 是为了控制交易排序并保留 MEV,交易平台也希望拥有定制的撮合引擎。过去的代价是牺牲与以太坊的可组合性,因为 L1 的合约和流动性对 Rollup 而言只能异步使用。在 EEZ 中,交易平台可以用自己的引擎撮合订单,而订单簿无法成交的部分,则会在同步区块中直接针对以太坊上的资金池执行。

L1 上的密钥管理

密钥和权限可以留在 L1 上,因为 Rollup 上的合约可以在同一笔交易中读取以太坊的状态。多签钱包 Safe 已经在 RollupX 上以这种方式运行。Rollup 上的 Safe 只是一个代理,所有签名者和权限都保留在主网上的 Safe 合约中。

每笔交易都会在执行前即时检查 L1 状态以验证多签签名。如果主网上的多签发生更改,这一变更会立即在所有 Rollup 上生效,无需同步,也没有延迟。类似地,以太坊上的身份合约也可以在同一区块内直接向任何 Rollup 证明凭证。

许可链与私有链

EEZ 中的链不必是公有链。像 Aztec 这样的隐私链,或者由政府运行的许可链,都可以加入 EEZ 并使用 L1 流动性。目前运行的最接近的实例是 RollupX 上的隐私池 Bermuda Bay,它隐藏了交易者的身份,同时兑换操作在同一笔交易中于 L1 的 Uniswap V3 上执行(tx)。

Rollup 作为协处理器

Rollup 可以充当以太坊的协处理器。对 L1 而言计算成本过高的任务可以在 Rollup 上运行,而以太坊上的合约在同一区块内根据其结果采取行动。

在以太坊上验证一个抗量子的 Falcon 签名需要消耗 550 万 Gas;而在 EEZ 的演示中,该签名在 Rollup 上完成验证,其结果无需任何预编译合约或硬分叉,便直接授权了 L1 上 Safe 的一笔付款。只要新的密码学和新的虚拟机存在于经济区内的链上,以太坊就能直接使用它们。

局限性

EEZ 中的链无法同时兼得快速出块、与以太坊的同步调用以及去中心化排序器:它必须三选二(参考 Gnosis 论坛讨论)。

例如,一条拥有 200 毫秒出块速度的快速链,需要中心化排序器才能实现与以太坊的同步调用。每 60 个区块中只有 1 个是同步区块,该链上的应用每 12 秒才能触达以太坊一次。不过这条链依然正常可用,只是跨链部分以 L1 的速度运行并依赖于 L1 的区块空间。

每一次跨链调用都要经过组合器。它必须在出块前看到未加密的交易,因此组合器和构建者将优先获得其中的 MEV。

目前有 7% 的以太坊区块由验证者自行构建,不经过外部构建者。在这些 slot 中不会发生同步调用。

在上线首月,每一个 EEZ 批次都落入了外部 MEV-Boost 构建者的区块中。其中 56% 的批次进入了 Titan 构建的区块(而 Titan 平常的出块占比为 48%)。有意思的是,Titan 现在也能捕获跨链 MEV 了。

借助 EEZ,Rollup 不再需要在“运行独立链”和“留在以太坊上”之间二选一。它既保留了对交易排序和规则的控制权,又能在同一个区块内无缝使用以太坊的流动性与应用。