这就是当前 Loopring 的现状,其依靠专门的流动性提供者在 L2 上提供流动性,当然,有时用户之间也会提供流动性。例如,如果有人想要进入一个金库,而另一个用户想要退出该金库,只要允许这些用户相互交易,则至少有一个用户已实现了他的目标。最好的情况是,用户之间总是可以进行交易,但这是不可预测的,而且在合理的时间内并不总是可能的。 这种方法的缺点是,流动性提供者(LP)只能利用有限的资金,他们还需要让这些资金随时可用。zkRollups 实际上非常擅长这一点,因为资金从来不会被长期锁定(zkRollups 中的存款和取款都很快),所以即使是有限的资金也可以很快地被重新使用。不过,这种方法的资本效率是不高的,实际上我们可以做的更好。 单相转换器(Single Phase Converter)为了解决资本效率问题,我们可以利用 L2 上的闪电铸造(flash minting)功能,因为在 L2 上,每个代币都内置了闪电铸造(flash minting),我们可以根据需要创建任意多的代币。所以,我们可以:
当在 L2 上进行交易时,汇率是完全确定的,并且 L1 交易永远不会失败时(例如,ETH/WETH,或者只有 L2 本身可以与之交互的任意逻辑智能合约),这会是一个完美的解决方案,但如果:
那么这个时候,就会有 flash mint 无法偿还的风险。如果 flash mint 无法偿还,就无法在链上提交区块,因为这会是无效的。这意味着必须恢复 L2 上的所有交易,用新的交易创建一个新的区块,重新创建零知识证明……理论上这是可能的,但实际这是我们需要去避免的一种情况。 二相转换器(Double Phase Converter)为了解决可预测性问题,我们可以分为两个阶段进行交易。 在第一阶段,我们首先在专用金库(仅用于特定的代币 swap)中收集所有用户的资金。我们首先给用户一个表示他在金库中所占份额的 token (按固定的 1:1 比率),而不是直接交换成用户想要购买的代币。然后进行 L1 交易,观察实际汇率。在第二阶段,在转换过程中接收到的代币数量,可以在接下来的区块中按比例分配给所有用户。 (责任编辑:admin) |