注:原文作者Brecht Devos是Loopring首席架构师,在这篇文章中,他阐述了能让用户在Layer 2网络直接与Layer 1 应用进行交互的Ethport设计。

概述:

  1. Loopring-zkRollup用户可利用批量处理和零知识证明技术,以低手续费直接在L2与L1 的DAPP(去中心化应用)进行交互;
  2. Loopring支持高效率且低手续费的跨L2转账;
  3. 中心化交易所(CEX)很容易就可以利用L1的一些标准功能支持从Loopring的zkRollup提现,并且在此过程中还能享受到L2节省手续费的好处;
  4. Ethport将在2021年5月作为Loopring 3.7版本的一部分上线以太坊主网。

当前zkRollup的问题

目前, Loopring的zkRollup最大的优势在于能在L2以超低手续费支持转账、订单本撮合以及自动做市商(AMM)闪兑交易。虽然转账和交易功能基本上覆盖了最常用的需求,但除此之外,用户们有时还是会遇到以太坊当前高昂的gas费用问题,想要通过L1来完成一些比较复杂的事情。

对于中心化交易所而言,提币的成本也是非常高昂的。如果去中心化交易所想要利用L2来降低成本的话,由于基本每一个L2网络都有自己的特点,中心化交易所很难去对每一个L2方案进行本地化适配。所以对于中心化交易所,很需要一个能隐藏L2的实现细节并继承L2省手续费功能的L1标准接口。

对于普通用户,虽然有越来越多的L2网络在以太坊主网上线,但用户在L2之间转移必须经过L1,这无疑非常麻烦。

另外,L1上的各种功能向L2的迁移是需要时间的。可以预见的是,未来主网的部分(甚至是大部分)流动性仍旧会停留在L1上,直到主流的L2网络迭代得更加成熟为止。在此期间,市场无疑需要一些有助于过渡期的产品。

解决方案

在Layer2网络上完成尽可能多的任务来将交易费用降低到用户的可承受范围之内。通常,我们将多笔L1上的交易批处理在一起来分摊L1网络的gas成本。我们用L2交易完成绝大部分工作的话,所有用户加起来便只需要一笔L1交易,这样做理论上可以显著降低gas花费。

zkRollup技术特别适合解决这一类问题,因为只要提供有效性证明,L1网络上的L2状态就会立刻被确定。这意味着类似提现(withdrawal)这种操作可以迅速完成,并且我们还可以在状态被确定后立刻使用L2数据来进行L1交易,完全不用担心L2状态无效导致交易被退回。

通常情况下,最佳解决方案取决于具体问题以及用户体验。所以在向用户推荐我们的产品之前,我们将详细介绍Loopring工具包中有哪些工具以及它们各自解决了哪些问题。

流动性提供者(LP)

当前的Loopring如图所示,其依靠专门的流动性提供者在L2上提供流动性。当然,有时用户之间也能提供流动性。例如,如果有人想要进入一个资金池,而另一个用户想要退出该资金池,只要允许这些用户相互交易,那么最后至少有一个用户能实现他的目标。最好的情况是,用户之间总是能通过相互交易达成目的,但这种情况不仅不可预测而且不可能长时间持续。

目前所采用的方法的缺点在于流动性提供者(LP)终究只有有限的资金,而且他们还需要保持这些资金随时可用。当然,zkRollups实际上并不会被这些条件所限制,因为系统中的资金从来不会被长期锁定(zkRollups中的存款和取款都很快),所以即使是有限的资金也能通过迅速复用达到很高的流动性。不过,这种方法资本效率仍有改进的空间,我们可以做到更好。

单相转换器(Single Phase Converter)

为了解决资本效率问题,我们可以利用L2上的闪电铸造(flash minting)功能,因为在L2上,每个代币都内置了闪电铸造(flash minting),我们可以根据需要创建任意多的代币。所以,我们可以:

  1. 通过Flash mint用户们想要购买的代币的总量来使得所有交易都可以在L2上完成(可以是数千次交易);
  2. 按预期汇率完成L2上的所有交易;
  3. 提取用户出售的所有代币;
  4. 使用这些代币执行L1交易来获得用户购买的真实代币(并且已经在L2网络上分发);
  5. 用这些代币偿还闪电铸造的代币;

当在L2上进行交易时,汇率是完全确定的,并且L1交易永远不会失败时(例如,ETH/WETH,或者只有L2本身可以与之交互的任意逻辑智能合约),这会是一个完美的解决方案,但如果:

  1. 汇率可能会发生不可预测的变化(通常是在任何用户都可在L1上与智能合约进行交互时);
  2. 不管出于什么原因,需要完成的L1交易失败了;

那么这个时候,就会有 flash mint 无法偿还的风险。如果flash mint无法偿还,就无法在链上提交区块,因为这会是无效的。这意味着必须回退L2上的所有交易,用新的交易创建一个新的区块,并重新进行零知识证明……理论上这是可能的,但实际这是我们需要去避免的一种情况。

二相转换器(Double Phase Converter)

为了解决可预测性问题,我们可以分为两个阶段进行交易。

在第一阶段,我们首先在专用资金池(仅用于特定的代币swap)中收集所有用户的资金。我们首先给用户一个表示他在金库中所占份额的token(按固定的1:1比率),而不是直接交换成用户想要购买的代币。然后进行L1交易,观察实际汇率。在第二阶段,在转换过程中接收到的代币数量,可以在接下来的区块中按比例分配给所有用户。

Bridge(桥) 🌈

桥(Bridge)是一种比转换器(Converter)更为强大的设计,但是由于一些额外的L1开销,每笔用户交易的成本也要贵一些。这种桥设计不仅可以更灵活的方式执行类似转换器的批处理代币交换,还支持不能简化为简单代币交换的L1交易。

这个桥允许用户使用批量充值将资金有效地存入Loopring,相比每个用户单独加入zkRollup网络,通过标准的L1智能合约直接在L1上提供批量充值功能,以允许用户一起加入L2网络,通过这种设计,就可以将多笔交易聚集成一笔L1交易,从而有效降低手续费。这使得中心化交易所也可以使用标准的L1基础设施轻松地支持Loopring的L2网络。

这个资产桥还允许用户直接在L2网络进行高效的L1交易.这种交易方式会预先将L2上的资产桥账户中的所有资金进行集中,以此最大程度的降低需要在L1上转移的代币。然后在L1资产桥合约(L2资产桥账户的所有者)中,我们会复查所有到该资产桥的转账(这是使用有条件转账完成的,条件是转账由资产桥合约处理)。通过让用户在转账后签署一些额外的数据,资产桥可得知用户希望使用提供的资金进行哪一次L1交易。这个资产桥将所有这些交易一起批处理,将它们按L1交易的类型进行分组,然后将它们发送到与该类型交易相关联的连接器(Connector)。这些连接器是在所有用户交易和批处理交易之间进行转换的简单合约。资产桥提供了一个通用接口,允许用户连接到任何连接器合约,即使我们不知道这个连接器是做什么的。

每个用户都可以向连接器提供自定义数据(具体接受什么数据取决于连接器),这允许了包含用户自定义行为的批处理操作。例如,如果一组用户想要在Uniswap上交换代币,那么每个用户都可以设置其所需的滑点。连接器可以只对满足滑点要求的用户进行批量交换,然后返回其它不满足条件的用户的资金。跨L2转账的另一个例子是,用户可以在另一个L2网络上设置其转账的目的地址。

✈ Ethport

Ethport,则是建立在以上设计基础之上的一个产品。

  • 尽可能利用L2上已有的流动性
  • 如果转换优化器(Converter)可用的话,那么可以用它将所有类似的L1交易集合起来批处理以尽可能降低交易费。
  • 如果以上都不行的话,则使用桥(Bridge)机制。

通常来讲,用户经常需要一直等待,直到有足够的用户想要做与之类似的交易,或者有能帮助其更快完成所需交易的用户/流动性提供者出现。我们会将这些通用Dapp集合称之为终端Terminals。终端中每个不同的可批处理操作都称为Gate。

举个例子,如果一个用户想要将ETH存入YearnETH资金池中,这个用户需要利用 Yearn Terminal 然后等待L1交易离开ETH Gate 为止。

我们会在未来根据用户的需求逐步添加 Terminal 与 Gate 功能。

参加以太坊黑客马拉松!

由路印赞助的奖金总量高达$5000的两项挑战(其中一个直接与Ethport相关):

  • 使用Loopring Bridge/Converter来高效率链接其他L2网络,或者与其它L1 的 Dapp进行交互。
  • 利用新的Loopring subgraph 建造一个前端区块链浏览器。

点击链接获取更多消息! 通过编程来支持你最喜欢的L2/L1 DAPP!

关于路印

路印专注于区块链智能钱包和二层扩容技术。路印钱包是全球首个集成二层扩容技术的非托管钱包;路印协议也是全球首个基于 zkRollup 的去中心化交易协议,同时支持订单本撮合和自动做市商(AMM)闪兑交易。

获取路印协议更多最新的动态,请访问我们的社区帐号:
⭑ Twitter: twitter.com/loopringorg
⭑ Reddit: reddit.com/r/loopringorg
⭑ 电报: t.me/loopringfans (中文)
⭑ 抖音: loopring.live
⭑ 微博: https://weibo.com/loopringfoundation