这种方法的缺点是,流动性提供者(LP)只能利用有限的资金,他们还需要让这些资金随时可用。zkRollups实际上非常擅长这一点,因为资金从来不会被长期锁定(zkRollups中的存款和取款都很快),所以即使是有限的资金也可以很快地被重新使用。不过,这种方法的资本效率是不高的,实际上我们可以做的更好。 单相转换器(Single Phase Converter)为了解决资本效率问题,我们可以利用L2上的闪电铸造(flash minting)功能,因为在L2上,每个代币都内置了闪电铸造(flash minting),我们可以根据需要创建任意多的代币。所以,我们可以: Flash mint所有用户想要购买的代币数量,因此所有交易都可以在L2上完成(可以是数千次交易);按预期汇率填充L2上的所有交易;Withdraw用户出售的所有代币;使用这些代币执行L1交易,以获得用户购买的真实代币(并且已经在L2网络上分发);用这些代币偿还闪电贷;当在L2上进行交易时,汇率是完全确定的,并且L1交易永远不会失败时(例如,ETH/WETH,或者只有L2本身可以与之交互的任意逻辑智能合约),这会是一个完美的解决方案,但如果: 汇率可能会发生不可预测的变化(通常是在任何用户都可在L1上与智能合约进行交互时);不管出于什么原因,需要完成的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网络。 (责任编辑:admin) |