一文探讨如何解决L2流动性割裂问题
原文作者:Tim Robinson
原文编译:Luffy,Foresight News
为什么需要无缝流动性?
上周末,我 Farcaster 上的所有朋友都在谈论 Base 上的一种热门新币:$DEGEN 。 FOMO 之下,我查看了自己的 Rabby 钱包,看看可以投资多少钱:
好吧,我可以把 500 美元投入到这个代币中,只是需要出售一些其他资产。我的投资组合是什么样的呢?
太可怕了,几乎每个代币都位于不同的 L2 上。为了获得 $DEGEN,我必须执行多个跨链和交易操作。即使费用低廉,跨链和交易所需要花费的时间仍然令人沮丧。
我们必须解决这个问题,我们的目标是使整个以太坊生态系统感觉就像一个网络。让我们看看统一的流动性如何与钱包升级相结合,如何抽象跨链并使跨链 L2 体验就像使用单链一样。
不需要进行跨链
为什么跨链桥目前很糟糕?它有很多缺陷:
-
你必须访问一个单独的网站,连接钱包,批准,转账,祈祷它到达另一端......
-
跨链通常需要 5 - 30 分钟才能完成,这太慢了,理想情况是少于 10 秒。
-
大多数跨链桥都需要锁定两个网络上的流动性。我们拥有的 L2 越多,流动性就越分散。低流动性使得在链之间转移大量资金变得困难,结果你会获得更糟糕的价格。
-
只有某些具有流动性的代币可以跨链,对于大多数网络来说,这些代币是 ETH 和 稳定币。
-
有一些封装的代币不需要锁定流动性并且可以支持任何代币。然而,跨链后,你将获得所需代币的非原生版本,并且必须将其交换为真实代币才能在新网络上的任何 DApp 中使用,这需要流动性,因此我们最终会陷入同样的陷阱。
最重要的是,如果不需要进行跨链 , 为什么我们要浪费数百万个小时来做这件事呢?
钱包和应用程序应自动处理跨链
当你使用 DEX 或借贷协议时,它应该在所有链上跟踪你的代币。当你从另一个链存入代币时,它应该在后台自动将其跨链到正确的链,因此这个过程的用户体验应该与单独在以太坊主网完全相同。
应用程序和钱包希望实现这一目标,但底层基础设施还不够好。如果完成跨链接需要 10 分钟,并且你在此过程中损失了 1% 的代币,那么大多数用户都会不满。
让我们更深入研究基础设施层,看看如何解决这个问题。
如何实现流动性无缝流动
L2 网络统一流动性有 3 种主要方法,这些方法有不同的权衡,但又相互补充。
-
共享生态系统跨链桥:在整个链生态系统中实现无缝聚合流动性。
-
铸造 / 燃烧代币:可以在任何支持的链之间不限额转移。
-
相互信任的原生跨链桥: 实现跨生态系统聚合流动性。
共享互操作层
当你从以太坊主网跨链到任何 L2 时,过程看起来像这样:
当前跨链桥工作方式
每一个跨链桥都是以太坊上的智能合约,我们称之为「原生桥」。当你跨链到 L2 时,你的资产将被锁定在 L1 上,并在 L2 上铸造一个副本。这些网络有能力无限量铸造其原生桥支持的任何资产。
尽管具有相同的名称,也没有被称为包装资产,但通过链的原生桥从以太坊跨链到任何 L2 的资产实际上都是包装资产,因为它们合约地址不同。 USDC 在以太坊上的合约地址以 0x a 0 b 8 开头,在 Arbitrum 上合约地址 以 0x af 88 开头,在 Optimism 上的以 0x 0 b2c 开头 ,在 Polygon zkEVM 上的 以 0x a 8 ce 开头。
这些资产看起来都一样,因为钱包和应用程序有一个官方资产列表,并显示官方图标,因此用户永远不会知道其中的区别。
如果不是每个 L2 都有各自的跨链桥,而是它们都共享一个,会怎样?资产可以在称为互操作层的共享链上铸造,然后在目的 L2 上铸造。
聚合区块链桥工作方式
Polygon 将这种新设计称为聚合区块链。
这个设计有什么用处呢?当将资产从这个生态系统中的一个链转移到另一个链时,例如从 Polygon zkEVM 到 OKX X 1 ,它不必通过传统的跨链桥首先回到以太坊。相反,你可以销毁资产并让互操作层在目标链上铸造完全相同数量的资产。
在聚合区块链上转移资金
而现在,通过上述互操作层跨链的资产在生态系统中的每条链上都完全相同。假设互操作层可以免费使用并且速度很快(Polygon 表示他们的最终完成时间不到 20 秒),你将能够在几秒钟内免费在生态系统中的任何 L2 之间跨链任意规模的资产。
Polygon 和 zkSync 都在为他们的生态系统开发这种互操作层,从 Optimism 包含共享跨链桥的设计文档来看,他们似乎也在探索这一领域。
互操作层的缺点是它只能在一个生态系统内运行,并且要求所有链都使用一个跨链桥,这增加了风险,但是让流动性在生态系统中的所有链之间无缝流动的好处足以弥补这一点。
由于所有代币都可以跨生态系统互换,因此你的钱包无需显示资产所在的链或按链分类代币。相反,你的钱包可能看起来像这样:
当跨多个链执行交易时,你的钱包可以简单地显示你正在使用「Polygon」网络并在后台自动执行所有跨链操作。
这个设计这么美妙,为什么不早点完成呢? ZK Proofs 最近才变得足够快且便宜,使得这种方案成为可能。互操作层使用 ZK Proofs 进行所有铸造 / 燃烧,因此它可以在几秒钟内完成,无需任何挑战期。
优点
-
在链之间转移代币的快速、简单、标准的方式
-
可以无滑点地跨链任意数量的代币
-
可能完全免费使用
缺点
-
仅适用于单一生态系统
-
一个跨链桥是整个生态系统的单点故障
-
必须从头设计,如果没有重大改变就无法添加到现有的生态系统中
跨链型代币
链可以将跨链交给代币自身,而不是依赖于共享的生态系统跨链桥。代币需要实现铸造 / 销毁功能,并允许用户随时销毁代币以将其铸造到另一条链上。
在不使用以太坊主网的情况下将 DAI 从 zkSync 迁移到 Polygon
这些铸造 / 销毁消息可以通过中间件(例如 Layer Zero 或 Chainlink CCIP)来传递。 Layer Zero 正在开发一个名为 Omnichain 的项目 ,将允许代币来实现这一功能。
一些代币已经实现了。Circle 最近推出了他们的跨链传输协议(CCTP) ,并实施在 8 个不同的网络上。
由于 USDC 在许多网络上具有高流动性,并且可用流动性没有上限,因此它可能是在链之间转移资产的完美中间人。钱包可以将你想要跨链的代币兑换成 USDC,使用 CCTP 跨链该 USDC,然后将其兑换回目标链上你想要的代币。这可以通过很少的费用或滑点来实现,并由你的钱包自动处理。
将流动性统一交给代币的缺点是,由各个代币来实现它,钱包和应用程序必须知道它们可以自动跨链哪些代币,不能哪些代币。
它还要求代币等待链完成才能发送代币,这可能需要几分钟到几小时,具体取决于数据写入以太坊的频率。如果代币不等待最终确定,则可能会通过在目标链上铸造然后在发送链上的重组中恢复发送来实现双花。
另一个需要考虑的风险是代币安全依赖于每个链和中继系统的安全。如果一个 L2 受到损害,它可以通过向其他链发送恶意消息(例如,说它烧毁了代币,但实际上没有)来铸造新代币。如果代币中继器或预言机受到攻击,可能会发生相同的情况。这将导致代币在所有链上崩溃。
跨链代币之前已经在 Cosmos 生态系统中通过 ICS-20 实现过。它通过让代币跟踪它们到达当前链的路径来解决「一条链破坏所有链上的代币」的问题。如果代币 X 通过链 A -> B -> C 发送,并且一些 X 代币通过 A -> C 发送,则链 B 被攻击,第一组 X 代币将毫无价值,但第二组相同的 X 代币仍然具有价值,因为它们没有跨链 B。这会产生钱包和应用程序必须解决的代币可互换性的额外问题。
优点
-
代币可以在任何 L2 链上自由转移
-
可以无滑点地转移任意数量的代币
缺点
-
链必须是安全的,一条受损的链可能会破坏所有链上的代币。
-
钱包必须知道各个代币能否自动跨链,以简化用户体验
-
代币在转移之前必须等待最终确定,这可能需要几分钟或者几个小时
原生跨链桥相互信任
具有 ZK 跨链桥的 L2 链可以通过信任其他 L2 链的原生跨链桥来允许快速、免费的代币传输。这可以通过用户在一条链上燃烧代币,然后使用燃烧证明在另一条链的原生跨链桥铸造该代币来实现。
例如,如果 Scroll 检查 Linea 跨链桥并认为它是安全的(并且不能通过升级使其变得不安全),他们可以设置一个服务来监视 Linea 跨链桥的 L1 状态根,允许 Linea 上的任何用户发布他们烧毁 Linea 上代币的证明,此销毁交易包含在 L1 状态根中,并在 Scroll 上铸造等价代币。
在不使用以太坊主网的情况下在两个 L2 之间转移代币
Vitalik 的 这篇文章 更详细地介绍了链检查彼此状态的过程 。
这类似于跨链回以太坊然后跨链到另一个 L2,但这种方法节省了高昂的 L1 Gas 费。
现在的风险是,这些原生跨链桥中锁定的代币数量不会与 L2 上铸造的代币数量完全相同,而 这是 L2 是一个核心属性,到目前为止还没有被破坏。在上面的示例中,如果用户将 100 万美元的 DAI 从 Linea 转移到 Scroll,则 Scroll 跨链桥将缺少这 100 万美元的 DAI,并且如果用户希望从原生 Scroll 跨链桥中提取大量代币,则将没有足够的可用代币。跨链桥可以通过相互之间批量 L1 代币转移,或者通过它们之间始终保持双向信任来协调这些差异,因此即使在 Scroll 跨链桥被清空后,大户也可以通过 Linea 跨链桥提取资金。
优点
-
代币可以在可信链之间自由转移
-
可以无滑点地转移任意数量的代币
缺点
-
如果一个跨链桥受到损害,它可能会影响所有信任它的跨链桥
-
跨链桥将在其网络上锁定和铸造不同数量的代币,这可能会导致提款问题。
经济安全的快速最终确定层
这三种方法具有出色的扩展性和安全性,但有一个缺陷会显着减慢传输速度:等待最终确定。完成一个区块需要发送网络将其数据写入以太坊,这可能需要长达一个小时,然后以太坊主网才能完成,这可能需要另外 15 分钟。
通过经济激励,我们可以创建「软最终确定」,其中交易的经济价值高于其实际价值。这可以通过节点在 Eigenlayer 等服务上进行质押来实现,其中它们的质押可以被削减,并证明交易已完成。如果交易以某种方式恢复,节点就会被削减,并且削减可能会被用来填补回滚造成的漏洞。
这样做的好处是交易可以在几秒钟内软确认,大大加快所有跨链代币传输的速度。
这是 Near 正在研究的事情。发送 / 销毁的证明不需要写入以太坊 L1 并最终确定,而是将证明写入快速的最终确定链,其中最终确定由 Eigenlayer 质押者保证,如果出现回滚或恢复,他们将受到削减。 这条 推文 进一步详细介绍了它的工作原理。
让我们看看这个快速最终确定层如何改进所有 3 种代币传输方法:
-
互操作层已经是一个快速最终层,由生态系统团队(Polygon、zkSync 等)管理。它允许生态系统内的传输只需几秒钟。
-
当代币跨链铸造 / 燃烧时 ,快速最终层可以证明交易已完成并且不会被还原,而不是等待交易在以太坊上完成(这可能需要长达 20 分钟)。然后,目标链可以信任该层,并在验证交易后立即进行铸造。
-
类似地, 当 L2 相互信任跨链桥时,它们可以通过这个快速最终层来结算代币传输,而不是等待以太坊。
优点
-
代币传输可以在几秒钟内完成。
缺点
-
尚不清楚如何使用削减机制来修复可能的双花漏洞。
-
依赖非以太坊的其他级链来确保安全。
未来的钱包体验
在实施这些新的统一流动性改进之后,还需要采取哪些步骤才能让跨 L2 钱包感觉就像在使用一条链?剩下的两个最大的问题是跨链 Gas 以及将应用程序与该系统集成。
链间共享 Gas
如果用户不断地跨多个链,他们如何在所有这些链上获得 Gas 来支付转账费用?
这个问题正在通过账户抽象 AKA EIP-4337 和 paymasters 来解决。paymasters 是你可以要求为你支付交易费用的地址。一些钱包(例如 Avocado 和 Ambire) 允许你预加载 Gas 余额,然后在任何链上使用该 Gas,类似于预付费借记卡。
另一个简单的解决方案是 Bungee Exchange Refuel ,它在一条链上获取 Gas,并在另一条链上为你提供一点 Gas。这比 paymaster 的用户体验更糟糕,并且会让用户在许多链上留下一点 Gas,但它适用于 EOA 账户(标准非智能合约账户)。
免 Gas 费的应用程序
paymasters 还解锁了应用程序本身运行 paymaster 并支付所有用户交易费用的能力。这将允许任何人在自己的链上使用应用程序,而无需跨前桥。该应用程序可以通过其他方式盈利,例如销售商品,或者提供免费的演示模式,但你必须为完整体验付费。
使应用程序可以轻松利用统一的流动性
许多应用程序通过调用 balanceOf 来加载用户代币余额,这是一个缓慢的过程,并且无法跨链工作。他们通常对可能从其他网络跨链的代币一无所知。
这个问题应该在钱包层面解决,这样每个应用程序就不必重新发明轮子来支持多链的未来。 EIP-2256 引入了钱包可以实现的标准功能,允许一次加载所有代币余额,尽管目前这只是单链。
如果钱包具有多链意识,并且知道将代币从一条链转移到另一条链的方法,它可以告诉应用程序用户立即可以使用这些可跨链代币,并且当用户与应用程序交互时,钱包会在执行操作之前立即跨链它。
结论
希望你现在能够更好地了解未来 L2 之间的流动性将如何更加无缝地流动,以及钱包如何使用这些新技术完全抽象化区块链,以便让使用以太坊像 2020 年一样简单,而且无需高昂的费用。
感谢 Chad Fowler、Alejo Salles、Mike B、Montana Wong 和 Centauri.eth 对本文的反馈。