以太坊如何解决 L2 流动性分散问题?
来源:白话区块链
为什么流动性必须无缝流动?
上个周末,我所有的Farcaster朋友都在谈论一个热门的新币 ,Base上的DEGEN。感受到了FOMO(恐惧失去的情绪),我查看了我的Rabby钱包,看看我可以投资多少:
"很酷,我可以投入$500到这个币种,只是需要卖掉一些其他资产。不过,我的投资组合看起来是什么样子的呢?"
"Oh NO"
几乎每个Token都在不同的第二层网络上。为了获取 DEGEN,我必须依次执行多个桥接和交换操作,即使手续费很低,这仍然是一小时令人沮丧的桥接和交换过程。
我们必须解决这个问题,我们的北极星是让整个以太坊生态系统感觉像一个网络。让我们看看统一的流动性,再加上钱包升级,如何将桥接抽象化,并使跨链第二层体验感觉像使用单一链一样。
1、桥接本不应该需要这样做
为什么目前的桥接如此糟糕?这里存在一些缺陷:
你必须访问一个单独的网站,连接钱包,批准转账,转账后祈祷它能到达另一端……
桥接通常需要 5 到 30 分钟才能完成,这远远太慢了。少于 10 秒是可以实现的,也是理想的。
大多数桥接需要在两个网络上锁定流动性。我们拥有的第二层网络越多,流动性就会越薄弱。流动性不足使得在链之间转移大量资金变得困难,并且结果会导致价格更低。
只有某些具有流动性的Token可以进行桥接,对于大多数网络来说,这是 ETH 稳定币。
还有一种不需要锁定流动性的封装Token桥接。它可以支持任何Token。然而,在桥接之后,你会得到你所需Token的非本地版本,必须将其与真实的Token交换才能在新网络上使用任何应用程序,这需要流动性,因此我们最终陷入了同样的困境。
最重要的是,如果桥接确实不需要这样做,为什么我们要集体浪费数百万小时去做它呢?
2、钱包和应用程序应该自动处理桥接
当你使用去中心化交易平台或借代协议时,它应该跟踪你在所有链上的Token。当你存入来自另一条链的Token时,它应该自动在后台将其桥接到正确的链上,使整个过程感觉与以太坊主网完全相同。
应用程序和钱包想要实现这一点,但是底层基础设施还不够好。如果这个桥接过程需要花费10分钟,而且你在过程中损失了1%的Token,大多数用户会对这种体验感到不满意。
让我们深入探讨基础设施层,看看如何解决这个问题。
流动性如何无缝流动
在L2网络中,流动性可以通过以下3种主要方式进行统一,并且有一种增强方式可以提高它们的速度。这些方法有不同的权衡,但彼此互补。
它们是:
1)共享生态桥接:实现整个生态系统链上的流动性无缝聚合。
2)铸造/销毁Token:可以在任何支持的链之间以无限大小进行转移。
3)本地桥接相互信任:实现跨生态系统的流动性无缝聚合。
共享生态系统桥接
当你从以太坊主网桥接到任何第二层网络时,过程大致如下:
每个桥接都是以太坊上的一个智能合约,我们称之为“本地桥接”。当你桥接到第二层网络时,你的资产将被锁定在L1上,并在L2上铸造出一份副本。这些网络有权铸造任何其本地桥接支持的资产的无限数量。
尽管它们具有相同的名称,并且明确不被称为封装资产,但通过链的本地桥接从以太坊桥接到任何L2的每个资产实际上都是封装资产,因为合约地址,有时甚至代码都是不同的。在以太坊上,USDC的合约地址以0xa0b8开头,而在Arbitrum上以0xaf88开头,在Optimism上以0x0b2c开头,在Polygon zkEVM上以0xa8ce开头。
这些资产看起来和感觉都是相同的,因为钱包和应用程序有一个官方资产列表,其中包含官方图像以供显示,所以用户永远不会知道其中的区别。
如果不是为每个L2都有一个桥接,而是它们共享一个桥接会怎么样呢?资产可以在一个称为interop层的共享链上铸造,然后在最终目的地L2上铸造它们。
Polygon将这种新设计称为“聚合区块链”。
这种设计有什么用处呢?在这个生态系统中,当将资产从一条链移动到另一条链,比如从Polygon zkEVM到OKX X1时,不需要通过传统的桥接或首先桥接回以太坊。相反,你可以销毁该资产,并让interop层在目标链上铸造相同数量的该资产!
通过这个interop层桥接的每个资产现在在生态系统中的每条链上都完全相同。假设interop层是免费且速度快的(Polygon表示他们的将在<20秒内完成),你将能够在几秒钟内免费地在生态系统中的任何L2之间无限大小地桥接资产!
Polygon和zkSync都在为他们的生态系统开发这种interop层设计,从Optimism的设计文件中可以看出,它们似乎也在追求这个设计,尽管尚未确认。
缺点是它只适用于一个生态系统,并且需要所有链使用一个桥接,这增加了风险,但是在生态系统中让流动性在所有链之间无缝流动的奖励远远超过了这个缺点。
因为所有Token在生态系统之间是可互换的,所以你的钱包不需要显示你所在的链或者按链分开Token。相反,你的钱包可以是这样的:
一个统一的钱包在一个统一的链上
在跨多个链执行交易时,您的钱包可以简单地显示您正在使用“Polygon”网络,并在后台自动执行所有桥接操作。
如果这个设计如此出色,为什么不早些实现呢?ZK证明直到最近才足够快速和廉价,才使得这一切成为可能。Interop层使用ZK证明进行所有的铸造/销毁操作,因此可以在几秒钟内完成,而无需任何挑战期。
优势:
-快速、简单、标准的方式在链之间转移Token
-可以移动任意数量的Token,无滑点
-可能完全免费使用
劣势:
-只在单个生态系统内起作用
-一个桥接是整个生态系统的单点故障/攻击目标
-必须从一开始就进行设计,不能在现有生态系统中进行重大更改
3、铸造/销毁Token
与依赖共享生态桥接不同,链可以将桥接留给Token。Token需要实现铸造/销毁功能,并允许用户随时销毁Token,在另一条链上进行铸造。
将DAI从zkSync移动到Polygon,而不使用以太坊主网
将DAI从zkSync移动到Polygon,而不使用以太坊主网,可以通过诸如Layer Zero或Chainlink CCIP之类的中间件发送这些铸造/销毁消息。Layer Zero正在开发一个名为Omnichain的项目,该项目将允许Token实现这一功能。
一些Token已经实施了这个系统。Circle最近推出了他们的跨链转账协议(CCTP),该协议正是为USDC在8个不同网络之间实现这一功能。
由于USDC在许多网络上具有高流动性,并且没有流动性可用上限,它可能是在链之间移动资产的完美桥梁。钱包可以交换你想要桥接到的Token为USDC,使用CCTP将该USDC进行桥接,然后在目标链上将其交换回你想要的Token。这可以在钱包自动处理的情况下进行,并且收取很少的费用或滑点。
将流动性统一留给Token的缺点是,由个别Token来实现它,钱包和应用程序必须知道哪些Token可以自动桥接,哪些不行。
这还要求Token等待链的最终确定,然后才能发送该Token,这可能需要几分钟到几小时,具体取决于数据写入以太坊的频率。如果Token不等待最终确定,它可能会被双倍消费,即在目标链上铸造,然后在发送链上的重组中被撤销。
另一个需要考虑的风险是,Token的安全性依赖于每个链和中继系统的安全性。如果一个L2被攻击,它可能会通过向其他链发送恶意消息(例如,声称它销毁了一个Token,而实际上没有)来铸造新的Token。如果Token的中继或预言机被攻击,也可能发生同样的情况。这将导致Token在所有链上都出现故障。
在Cosmos生态系统中以ICS-20实现了跨链Token。它通过跟踪Token到达当前链的路径来解决了“一个链破坏所有链上的Token”的问题。如果TokenX通过链A -> B -> C发送,而一些XToken通过A -> C发送,然后链B受到攻击,第一组XToken将变得毫无价值,但是同一XToken的第二组仍然具有价值,因为它们没有跨越链B。这会带来Token可替代性的额外问题,需要钱包和应用程序来解决,但这是一个解决方案。
优势:
-Token可以自由地在任何L2链之间移动
-可以移动任意数量的Token,无滑点
劣势:
-链必须安全,一个受损的链可能会在所有链上破坏该Token
-钱包必须了解每个个别Token的功能,以简化用户体验
-Token必须等待最终确定才能移动,这需要几分钟,有时甚至几个小时
4、相互信任的本地桥接
具有ZK桥接的L2链可以通过相互信任其他L2链的本地桥接来实现快速、免费的Token转移。这可以通过用户在一条链上销毁一个Token,然后使用销毁证明通过另一条链的本地桥接铸造该Token来实现。
例如,如果Scroll审查了Linea桥接并认为它是安全的(且无法通过升级使其不安全),他们可以设置一个监视Linea桥接L1状态根的服务,允许Linea上的任何用户发布他们在Linea上销毁Token的证明,并且这个销毁交易被包含在L1状态根中,并在Scroll上铸造等值的Token。
在两个L2之间移动任何Token,而不使用以太坊主网
链之间相互检查状态的过程在 Vitalik 的这篇文章中有更详细的技术说明。
这与先桥接回以太坊然后再到其他L2的方法类似,但这种方法节省了昂贵的L1 gas费用。
现在的风险是这些本地桥可能不会与在L2上铸造的Token数量完全一致,这是一个核心属性,直到现在还没有被破坏。在上面的例子中,如果一个用户将1百万美元的DAI从Linea移动到Scroll,那么Scroll桥将缺少1百万美元的DAI,如果一个用户希望从本地的Scroll桥中提取大量Token,那么可能不会有足够的Token可用。桥接可以通过彼此之间进行批量的L1Token转账来协调这些差异,或者始终在它们之间保持双向信任,因此即使Scroll桥被清空,大鲸鱼仍可以通过Linea桥提取资金。
优势:
-Token可以在受信任的链之间自由移动
-可以移动任意数量的Token,无滑点
劣势:
-如果一个桥被破坏,它可能会危及所有信任它的桥
-桥的锁定Token数量与其网络上铸造的Token数量可能会不同。这可能会导致提取资金时出现问题。
5、一个经济上安全的快速确定性层
这三种方法具有很好的扩展性和安全性特性,但有一个缺点会严重减慢转账速度——等待最终确定。最终确定一个区块需要发送网络将其数据写入以太坊,这可能需要多达一个小时,然后以太坊再次确定,这可能需要多达另外15分钟。
通过经济激励,我们可以创建“软最终确定性”,其中一笔交易由经济价值多于它的价值的节点最终确定。这可以通过节点在类似Eigenlayer的服务上抵押来实现,它们的抵押可以被削减,并且证明交易已最终确定。如果交易以某种方式被还原,那么这些节点将被削减,并且这种削减可能被用来填补由还原引起的漏洞。
这样做的好处是交易可以在几秒钟内完成软最终确定,大大加快了所有跨链Token转移的速度。
这是Near正在努力实现的。与其需要将发送/销毁的证明写入以太坊L1并最终确定不同,相反,证明被写入到一个NEAR快速确定性链中,最终确定性由Eigenlayer的质押者保证,如果有回滚或还原,他们将被削减。这条推文线程对它的工作原理进行了进一步详细的介绍。
让我们看看这个快速确定性层如何改进所有三种Token转移方法:
1)Interop层已经是一个快速确定性层,由生态系统团队(如Polygon、zkSync等)管理。它允许生态系统内的转账在几秒钟内完成。
2)当Token在层之间进行铸造/销毁时,不必等待交易在以太坊上最终确定,这可能需要多达20分钟,而快速确定性层可以证明交易已完成且不会被还原,并且如果有的话,进行证明的节点将被削减。然后,目标链可以信任该层,在其对交易进行证明后立即进行铸造。
3)同样,当网络信任彼此的桥时,它们可以通过这个快速确定性层解决Token转移,而不是等待以太坊,并且可以以与Token发送相同的方式使用证明者。
优点:
-Token转移可以在几秒钟内最终确定并完成。
缺点:
-不清楚削减如何用于修复由于双倍花费引起的还原造成的漏洞。
-依赖一个不是以太坊的次要链来保证安全。
6、一个未来的钱包体验
在实施了这些新的统一流动性改进之后,跨L2钱包要感觉像是在使用一个链上还有哪些步骤?剩下的两个最大的问题是跨链Gas和将应用程序与此系统集成。
跨链Gas共享
如果用户不断在多个链之间移动,他们如何在所有这些链上获取Gas来支付转账费用?
这正在通过账户抽象(也称为EIP-4337)和支付中心来解决。支付中心是一个可以要求为您支付交易费用的地址。一些钱包,如Avocado和Ambire,允许您预加载Gas余额,然后在任何链上使用此Gas,类似于预付借记卡。
另一个简单的解决方案是Bungee Exchange Refuel,它将一条链上的Gas转换成另一条链上的一点Gas。这比支付中心的UX差,会让用户在许多链上留下一点点Gas,但对于EOA账户(标准非智能合约账户)来说是有效的。
应用程序支付Gas费用
支付中心还可以解锁应用程序本身运行支付中心并支付所有用户交易费用的能力。这将允许任何人在自己的链上使用应用程序,而无需桥接。应用程序可以通过其他方式获利,例如销售需要Token的高级商品,或者拥有免费的演示模式,但必须支付完整体验的费用。
使应用程序轻松利用统一的流动性
许多应用程序通过调用每个已知ERC-20上的balanceOf来加载用户Token余额,这是一个缓慢的过程,并且不支持跨链。它们基本上对可能从其他网络桥接的Token一无所知。
这个问题应该在钱包层面解决,这样每个应用程序就不必为支持多链未来而重新发明轮子。EIP-2256引入了一个标准函数,钱包可以实现它,这样可以一次加载所有Token余额,尽管目前仅支持单链。
如果一个钱包是多链感知的,并且知道从一条链到另一条链的桥接Token的方法,它可以立即告诉应用程序用户拥有这些可桥接的Token,并且当用户与应用程序交互时,钱包会立即在执行交互之前进行桥接。这可以使用上述任何一种机制来桥接Token。
7、小结
希望现在您对未来如何更顺畅地在L2之间流动流动性有了更好的理解,以及钱包如何利用这些新技术完全摆脱链的束缚,从而使使用以太坊像在2020年那样简单,而不会受到高额Gas费用的困扰!