介绍:Just In Time (JIT) - 一种用于去中心化跨链交换的新型 AMM 协议设计
作者:Simon Harman
原文链接:https://blog.chainflip.io/just-in-time-jit/
大家好,我已经为这篇论文工作了一段时间,我希望能够得到一些反馈。你可以在Twitter或 Chainflip Discord上找到我(@SimonAHarman)! - Simon
概述
由于跨链传输的性质所带来的限制,Chainflip 的 AMM 设计与行业标准有很大的不同。Chainflip的AMM协议有几个显著的特点,从根本上改变了最佳流动性供应商的策略,并为用户提供了显著的资本效率和定价准确性的优势。我们称这种风格的AMM为 "JIT(及时流动性)AMM"。现在使用的类似交易产品的例子非常少。
背景
Uniswap v3 将范围订单的概念引入 AMM 世界,为 Uniswap 的许多最受欢迎的矿池的资金效率和用户体验带来了许多改进。Chainflip 作为一种跨链产品,与典型的 AMM 不共享相同的执行环境假设,因此需要额外的功能来防止对用户产生负面影响的抢先交易。与单链环境不同,Chainflip 必须解决以下问题:
- 由于 Chainflip 外部存在链重组的风险,该协议必须等待几个区块才能确认外部链存款。作为一个去中心化和程序化的系统,如果发生这种情况,无法手动对交易进行重新排序,因此需要多次区块确认才能安全运行。鉴于确认收到的swap存款存在不小的延迟,并且它们位于公共链上,所有市场参与者都会在掉期发生之前知道将要执行的swap。这使得该协议容易受到各种形式的抢先交易的影响。
- 此外,确认时间也会造成定价和套利的明显延迟,导致与市场指数价格相比,价格差异延长。这可以在其他基于AMM的跨链DEX上观察到,这些DEX没有缓解这个问题,价格与市场汇率的偏差一直高达10%。
- 最后,AMM 的新提议功能将在很大程度上未经测试,因为现有的 AMM 设计并未考虑到自定义执行环境,因此很少有具有相似属性的协议示例可以从中获得学习。
还有一个独特的机会来探索AMMs在自定义执行环境中运行的可能性。由于Chainflip运行在自己独立的执行环境中,大部分的交换执行可以由验证器网络自动执行,不需要复杂的用户互动。这一点应该得到最大程度的利用,并应设计新的功能来利用这一点,使用户受益。
JIT AMM(Just In Time AMM) 核心功能
JIT AMM 在现有 Uniswap v3 AMM 设计的基础上提供了多项新功能。这些功能缓解了跨链交换的独特问题,并利用了自定义执行环境提供的独特优势,驱动 JIT AMM 的两个核心功能是:
- 比swap更快的范围订单更新 - 范围订单可以在执行已知swap之前更新,这意味着做市商可以积极响应传入的交易流。
- swap批处理 - 组合在一起并定期执行,抵消了很多滑点,并使抢先交易无利可图。
这些功能直接在 Chainflip 状态链和 Chainflip 验证器运行的配套软件中实现。
JIT 的工作原理
推动JIT AMM设计的核心概念是将前置交易翻转过来。与其说用户被寻求MEV的机器人抢先一步,不如说该协议自然地激励了流动性提供者为了用户的利益而互相抢先一步。在我们首次发布JIT AMM协议设计的几个月后,MEV寻求者在Uniswap v3上发现了这一行动的例子。对于规模足够大的交易,即使在昂贵和通用的以太坊区块链上,也有机会领先于其他LPs,证明了这种策略在野外的可行性。
每个池子的固定流动性费用(大多数池子在5到30个基点之间)是做市商试图捕获的一个内置的delta。做市商获取该差价的方式是将其流动性头寸移至市场价格。市场价格取决于在执行swap之前在单独的一级市场和二级市场(包括中心化交易所、衍生品市场和任何其他流动性来源,如场外交易柜台)的即时流动性可用性。通过建立对冲头寸或在其他市场上获取现有的流动性,如果做市商比其他所有流动性提供者承担更多的价格风险,他们可以完全获取流动性费用。一旦swap被执行,做市商可以再次更新他们的区间订单,为下一批swap做好准备,重新平衡他们的头寸。
只要有少数做市商相互竞争delta,这个协议设计就应该确保执行swap的用户在执行swap时总是能得到市场价格或优于市场价格,并有可靠的费用和最小的滑点,而且根据做市商之间的竞争程度,这个协议的资本效率应该超过所有其他现有的AMM设计。
JIT 交换的一个例子
让我们追踪一个典型交换的路径,以检查它在实践中是如何工作的。对于这个例子,我们假设的用户将 USDC (ERC20) 换成 DOT (Native),做市商 A、B 和 C 将竞争从交易中赢得流动性费用。该池有 25 个基点的流动性费用。
- 用户(DOT 购买者)生成一个报价,该报价创建一个与他们的目标地址相关联的唯一存款地址和 DOT 的交换意图。用户通过将 10,000 USDC 存入其报价地址来启动交换。
- 以太坊区块链在下一个区块中包括USDC存款。做市商发现该存款已经发生,并跟踪其他即将到来的USDC存款。也有DOT卖家在Polkadot链上存款。虽然交易需要几个以太坊和Polkadot区块才能在Chainflip状态链上被识别,但做市商可以同时观察Polkadot和以太坊链,在执行前计算出下一个Chainflip批次中交易的整体方向。
- Chainflip 需要 6 个以太坊区块才能将存款交易视为“最终”。它还处理 6 个以太坊块批次(或大约 18 个 Polkadot 块)的交换,因此在以太坊区块链上进行交换存款和在 Chainflip 上执行交换之间至少有 6 个块延迟。这意味着做市商有大约 90 秒的时间来确切地知道swap将是什么,可以获取流动性或计算其他市场的风险,并可以通过状态链交易调整其范围订单。
- 发生这种情况时,用户正在等待 6 到 12 个以太坊块来执行批处理。在这种情况下,该批次中有 10 笔交易,总价值为 280,000 美元,但其中只有价值 90,000 美元的交易量购买了 DOT。因此,要使该批次中的每个人的交易都通过,该批次总体需要出售价值约 170,000 美元的 DOT。为了在 280,000 美元(约 700 美元)的总交易量中收取高达 25 个基点的费用,做市商现在必须在 6 个区块延迟窗口内为价值 170,000 美元的 DOT 提供可能的最佳价格。这就是“Just In Time”这个名字出现的地方,因为他们需要获得流动性来源并推动一些购买流动性“Just In Time”才能获胜。
- 通过在 FTX、Binance 等其它交易所增加额外的资本流通量,做市商可以使用风险模型计算来确定他们的最佳交易价格。利用这个计算,他们更新他们的范围订单并将他们在 USDC-DOT 池中的 USDC 移动到该价格。在这种情况下,做市商 A 移动其 USDC 范围订单,使 170,000 美元的 USDC 流动性集中在每个 DOT 23.45 美元,而做市商 B 移动其 170,000 美元的 USDC,集中在每个 DOT 23.47 美元。
- Chainflip 网络执行这批交易。尽管整体方向是卖出,但是那些买入的用户也不会遭受不必要的滑点,因为做市商已经从外部获取流动性,以使池子价格自然地接近市场指数价格。假设做市商 B 集中在所有其他做市商之前,他们将获得 100% 的流动性费用。没有进行交易的做市商不收取任何费用,但也经历了零无常损失(因为他们的余额保持不变)。
- 做市商 B 知道他们已经赢得了费用以及他们刚刚购买了多少 DOT,于是在其他市场上以 23.47 美元或更高的价格出售了 170,000 美元的 DOT。如果管理得当,做市商只需承担 6 秒的价格风险,就可以在一批中赚取 700 美元或更多的利润。这些机会在每批交易执行时都会出现,而每批交易每隔几分钟就会出现一次。
- Chainflip 验证器网络现在将资金发送给用户,用户根据密切跟踪全球市场价格的swap价格接收资金。我们的 DOT 买家直接将他们的资金接收到他们的本地 DOT 钱包中。
- 做市商 B 现在可能会对他们的 LP 头寸进行一些提款或存款,以重新平衡他们的投资组合,以准备抓住未来的批量机会,而做市商 A 和 C 则准备在不久的将来分批抓住机会。下一个距离以太坊仅 6 个区块。
这种交换流程依赖于做市商执行的行为,这与典型的软件驱动的场外交易柜台几乎相同,但在一个开放和竞争的环境中。这种策略可以很容易地集成到典型的做市策略中,作为一种无需建立或扩大客户群即可产生交易流的方法。
示例的一些注意事项
实际上,很少有单一流动性提供者收取 100% 的流动性费用,而是一两个做市商占据给定交易的大部分,而其他流动性提供者填补的无关紧要的金额只是由于AMM 曲线的性质。无论如何,做市商总是知道他们(和其他所有人)刚刚做了什么交易,并将遵循相同的步骤和原则。
此外,在更广泛的Chainflip协议设计中,打算让几十个这样的资金池同时运作,根据每个链的区块和确认时间,所有资金池的移动速度略有不同。例如,一个BTC到ETH的交换不会在一个单一的交换中得到促进。相反,用户的资金将自动通过两个池子,BTC-USDC,然后USDC-ETH,这将涉及两个互换批次,都遵循上述的相同规则。
由于这种安排,做市商不仅必须跟踪未来存入相关资金池的存款,还必须跟踪存款进入其他资金池的预期路径,这些资金最终将进入相关资金池,以便准确预测批次。通过 USDC 路由所有东西确实意味着用户在等待他们的swap路由时会在很短的时间内接触到 USDC,这在某些情况下可能是不可取的,但被评估为值得权衡以最小化流动性分散,在正常市场条件下,这对用户来说可能会更糟。如果协议中的特定路线变得足够流行,则可以通过协议升级添加直接的资产到资产池(例如 ETH-BTC),以使用户避免这种价格风险。
最后,所有做市策略都有一定程度的复杂性。先进的风险和预测模型肯定会给相互竞争的做市商带来优势。在基本层面上,可以编写一个 JIT 机器人,它会简单地等到完全知道未来批次,对其他订单簿上的流动性进行即时评估,更新范围订单价格,然后等待批次在上市前确认在其他订单簿上买卖。这样,机器人永远不会在其他订单簿上进行交易,除非它知道它在JIT AMM上获取了一些流量的事实,并且不会依赖任何高级建模来发挥其核心功能。然而,要用更全面的做市策略来竞争这个简单的JIT机器人是很容易的。因此,可以预期,随着交易量的增加,自然的竞争动力将迫使做市商的表现不断改善,为用户带来更好的定价。
JIT AMM 的其他好处和权衡
使用这种互换流程对用户来说还有一些重要的好处。首先,通过将交易分组甚至成批的区块,抢先交易者变得荒谬,因为批次中的所有交易者都获得相同的价格。此外,对于正常市场条件下的大部分交易,这种流动性策略应该完全抵消大部分用户的有效滑点。
然而,为了实现这一目标,我们必须接受一些权衡。也就是说,该协议无法提前让用户确定他们交换的最终结果。在所有交易完成之前,无法保证批次的最终状态,即使在范围订单更新之前,也无法进行最终的滑点/定价计算。这在聚合交换(multi-swap trade) 中更加严重。
然而,随着用户前端交易估计工具上显示的风险模型和预测模型的发展,在给定预期规模、当前市场状态和历史数据的情况下,向用户告知其交易的可能结果将相对简单。
除此之外,如果一个池子因为在很短的时间内有一个方向的大量交易而变得非常不平衡,那些依靠JIT模型准确定价的用户可能最终会受到影响。这是因为所有的做市商都会被清理出一方,而被动流动性一般不会在JIT AMM上普遍存在以缓解这一问题。做市商还必须比正常的AMMs等待更长的时间来重新平衡投资组合,因为与其他链上AMMs相比,确认存款和处理提款有一个额外的滞后。尽管如此,重新平衡的时间不会比典型的中心化交易所更长。如果前端检测到当前的不平衡或相关池子与指数价格的重大偏差,可以在生成报价时向用户显示警告,从而再次缓解这一问题。
资本效率的极限
JIT AMM 中池的 TVL 无法与典型的流动性池相比,因为池的 TVL 实际上代表了最大实际交易规模的一半 —— 一种将资金效率推向极端的资本效率。是可能的。如果所有 LP 都在执行积极的策略,那么一个拥有 1000 万美元 TVL 的热门资产的资产池理论上可以容忍一个方向高达 350 万美元到 400 万美元的交易批次,在大多数情况下价格影响低于 2%(取决于所有市场的交易对和全球流动性状态)。这种资金效率无法在单链 AMM 上有效复制。此价格影响估计基于使用cryptosor.info等工具观察主要货币对的典型瞬时流动性,但有可能进一步降低价格影响。
但是,资本效率不可能超过 100%。超过或严重耗尽池中可用流动性的大额存款改变了潜在的博弈论,并激励做市商串通而不是竞争。如果做市商知道他们无法成交订单,并且也知道其他做市商无法成交订单,如果做市商都将他们的范围订单从市场价格转移到有效地以全球市场价格的一小部分买入存款,做市商将获得更大的收益。
这与其他 AMM 上的流动性池接受具有非线性滑点的巨额存款时发生的情况并没有太大不同,在这种情况下,超过池的有效流动性会逐渐降低有效价格。但是,由于 JIT AMM 上的做市商有时间对收到的存款做出反应,因此存在更大的开发空间。只有在特定交易中一方的流动性肯定会耗尽时,做市商才有意义玩这种新游戏,但在这种情况下,交易者的后果比他们使用典型的 AMM 更糟糕。
对于那些方向变化很大的大宗交易,还有一种套利形式可以减轻资金池耗尽发生的可能性。如果检测到大量存款,套利者可以在同一个区块内进行柜台存款,以承受整个批次的预期价格影响。这将有效地允许套利者以高于指数价格的价格买入或卖出,但只有在预计会有大量不平衡的批次时才会存在机会。遵循这一策略的套利者将有助于减少大宗交易对批次中其他交易者的影响,进一步提高资金效率,并意味着做市商将能够在不耗尽流动性的情况下处理更大的流量。
另一个有助于避免耗尽流动资金池和激励掠夺性做市商行为的潜在功能是自动拆分超大额存款。通过将大额存款分成几批,套利者和做市商将有更多时间处理交易。这类似于大多数场外交易柜台在任何情况下在后端处理大额订单的方式。如果这种存款拆分功能得到有效实施,存款人理论上应该获得与使用 OTC 柜台相似的价格。在这个阶段,我们不打算提前实现这个功能,但如果在野外被证明很重要,可以进行协议升级。
概括
Chainflip AMM 协议是一种潜在的新型 AMM 的实现,称为“即时 AMM”(JIT AMM),它是一种去中心化的方法,可以让用户始终接近市场价格,尽管像Chainflip这样的多链AMM面临的独特挑战。这也是一种为做市商提供自由交易流量的方式,他们可以将 AMM 整合到他们现有的流量来源中。为了实现这一设计,必须进行大量工作,并且预计协议工程师和做市商也必须迭代许多开发周期,以便有效地优化和利用该协议。