本文深入探讨了Uniswap v3中流动性集中供给的概念,通过分析Uniswap的流动性池模型及其改进,指出了流动性懒惰的问题及其解决方案。文章用数学公式阐明了流动性的变化和价格范围的关系,并提供了与v2的对比,以结束对Uniswap v3流动性模型的讨论。
为了应对流动性分散而集中供给流动性
本文章是 [Uniswap Series] 的第三篇文章,基于公式对 Uniswap v3 的交换逻辑进行解释。由于本文不解释 Uniswap 服务的基本概念以及 v2 使用的 CPMM 逻辑,因此建议你在阅读本文之前先阅读之前的文章。
Uniswap 是一个提供两种加密货币之间的兑换交易的去中心化交易所。其实现方式选择 AMM,而不是中央交易所常用的订单簿形式。Uniswap 为了实现这一点,选择了 CPMM(Constant Product Market Makers)作为公式,定义为以下函数。
(1) CPMM
基于 CPMM 函数进行代币交换时,意图的价格与实际交易价格之间必然会发生滑点(slippage)。当池中的流动性不足且交易量大时,滑点会加大,滑点越大,交易者就不得不以更高的价格交易代币。
滑点问题已经成为 Uniswap v2 的顽疾。Uniswap 声称通过在 v3 中改变流动性供给方式,可以在一定程度上解决滑点问题。
在本文中,我们将了解 Uniswap v3 更新时试图解决的 AMM 问题及其解决方案,以及这如何影响现有的 CPMM 逻辑。
在深入理解变化后的 CPMM 逻辑之前,我们先来看 Uniswap v3 中流动性供给方法是如何变化的。
在 Uniswap v2 中提供流动性
在 Uniswap v2 中,为了在 ETH/DAI 池中提供流动性,用户需要在供给窗口中选择 ETH 和 DAI 代币。然后决定位 ETH 的供给量,Uniswap 会以此为基础确定需要一起存入的 DAI 数量。在确认需供给的代币数量后,供给完成。
在撰写本文时,为了供给 0.01 ETH 需要一起存入 26 个 DAI。
在 Uniswap v3 中提供流动性
在 Uniswap v3 中,为了在 ETH/DAI 池中提供流动性,用户同样需要在供给窗口中选择 ETH 和 DAI。随后确定 ETH 的供给量,Uniswap 将据此确定需要一起存入的 DAI 数量。不过在这个过程中,可以看到由于“DAI 每 ETH”的价格范围而变化的 DAI 供给数量。
“DAI 每 ETH”是以 1 ETH 的价格为基础确定的 DAI 的价格范围 ,流动性供给者可以根据需要自由决定该范围。设定价格范围意味着供给的代币仅能在 “特定价格范围内” 进行交换。
在第一张图片中,流动性供给者选择的价格范围为最小 (Min price) 2,593.1 和最大 (Max price) 2,598.3。这意味着在 1 ETH 的价格在 2,593.1 DAI 和 2,598.3 DAI 的范围内进行交换时, 将提供的流动性。以这种方式将流动性供给限定在特定价格范围内被称为 集中流动性 (Concentrated Liquidity)。
即使目前还不理解“将使用的流动性”这一术语也没关系。这个术语将在接下来的内容中得到理解。
可以看到,每当价格范围发生变化时,所需供给的 DAI 数量都会变化。在第一个条件中所需供给的 DAI 数量为 19.3541,而在第二个条件为 4.89758(参考上图的存款金额)。
无论条件如何,在 v3 中所需供给的 DAI 数量都比 v2 中所需的 DAI 数量(26)少。这是通过集中流动性来避免供给者承担未用于交换的流动性,从而实现更高效的流动性供给。在这里,未用于交换的流动性被称为 懒惰流动性 (Lazy Liquidity) ,而高效的流动性供给结果被称为 高资本效率 (Higher Capital Efficiency) 。
懒惰流动性指的是在池中供给的流动性中,实际上未用于代币交换的流动性。为了理解这一点,我们来查看代币交换量导致的流动性使用范围。
假设有由 x 和 y 代币组成的 x/y 池的现状如下:
交换前 x/y 池现状
当交易者在该池中将 y 代币交换为 x 代币时,池的现状将发生如下变化。
y 代币交换
y 代币交换后池现状
在上述交换过程中使用的 x 代币是 334 个,我们称之为 已用流动性。这次交换导致各代币的储备和代币价格发生了变化。
现在我们再来多交换一些 y 代币。
y 代币交换后池现状
在第一次和第二次交换中,总共使用了 668 个 x 代币进行交换。这导致 x 代币的储备从 1,000 个减少到 332 个,从而使得 x 代币的价格从 \$2 增加到 \$6。
另一方面,上述交换中存在未使用的 332 个 x 代币。要使用这些代币,需要 y 代币的池储备接近于无穷大,并且需要进行更多的 y 代币交换。在这种情况下,池的基准价格和 x 代币的价格将会升至 +∞ ,而 y 代币的价格则降至 0。
在理性交易者和追求套利的交易者之间进行交易时,代币的交易价格不会大幅偏离一般的市场价格。换句话说,各代币的价格可能不会降至 0 或升至 +∞ 这种程度,因此参与交换的代币数量也必然受到限制。
在正常情况下,未使用的代币被称为 懒惰流动性 。
此外,懒惰流动性问题与滑点问题是同时出现的。滑点在流动性不足的池中更为严重,而为了解决这一滑点,增加流动性会导致懒惰流动性所对应的代币数量更多。
为了应对懒惰流动性问题,Uniswap v3 改变了流动性供给方式。之前供给流动性时必须在所有价格范围内供给,而在 v3 中则可以指定价格范围, 集中地 供给流动性。Uniswap 将这种供给的流动性称为 集中流动性 (Concentrated Liquidity)。
价格范围与代币交换引起的各代币储备、池的基准价格、各代币的价格及池的流动性之间存在密切关系。理解这种关系后,可以更容易理解集中流动性。
假设当前池的流动性为 X, Y,池的基准价格为 √Pc,池的储备为 C。
x 代币交换 (橙色虚线)
y 代币交换 (蓝色虚线)
在上述条件下,当池的基准价格在 √Pa 和 √Pb 之间时,所使用的各代币储备是 X - Xb 和 Y - Ya。将其以图形表示如下。
Xreal = X — Xb, Yreal = Y — Ya
流动性供给者认为池的基准价格将仅在 √Pa 和 √Pb 之间波动,因此可以在设定该价格范围后仅供给所需的代币即可。考虑到这一点的图形如下。
在上图中,红色曲线为 v2 的池储备,而紫色曲线为集中流动性所供给的池储备。首先,表示红色 CPMM 图的公式如下。
CPMM
紫色图为将红色图在 x 轴方向平移 -Xb,y 轴方向平移 -Ya 后得到的图形。根据这一点,表示集中流动性的 CPMM 公式可以通过以下过程得出。
v3 的 AMM 公式
v3 的流动性
以 Xb 和 Ya 为基准价格 √P 和代币流动性 L 表示如下。
通过上述公式可以重新定义 v3 的流动性函数。
上述公式可在 Uniswap v3 白皮书 中找到。
需要关注的是池的流动性值 L² 的变化。
指定价格范围后,供应的流动性范围被限制,因此流动性量会少于对所有价格范围供给的流动性。在上述示例中,同一池的流动性供给效率提高了 4 倍。
当然,只有在能够预测到交换即将发生的价格范围良好设置的前提下,这一流动性供给效率才具有意义。通过设定价格范围供给流动性意味着,如果代币主要在自己所指定范围之外进行交换,比如在其他范围的流动性多,自己的流动性便不会被使用,这将意味着流动性供给的意义已然消失。
在 Uniswap 改变流动性供给方式之前,CPMM 中存在的懒惰流动性问题在代币价格设计为尽量靠近 \$1 的稳定币交换中表现得尤其显著。
如 USDC 和 USDT 等基于美元的稳定币被设计为尽量维持其价格接近 \$1。为具有相同价值资产的交换设计的 CSMM(Constant Sum Market Maker)模型,使得 AMM 结构可以几乎没有滑点发生。
CSMM
Uniswap v2 在为如 USDC/USDT 等稳定币池提供流动性时,设定为在所有基准价格范围提供流动性。
如图所示,能够直观地看到稳定币之间的交换中实际产生了未被使用的懒惰流动性,而这导致效率的资本利用遭受影响。为了此次稳定币的交换提供支持的 DEX — Curve finance 更是与 Uniswap 的 CPMM 采用不同的方式,构建了在特定价格区间价格变化幅度极小的 AMM。
考虑以上公式对比稳定交换、Curve finance 和 Uniswap v2 的 CPMM 曲线。
Curve Finance (Stableswap) vs. Uniswap bonding curves.
通过上述图表可知,与 Uniswap 的 CPMM 方法相比,Curve Finance 的 AMM 在实际稳定币之间交易时(CSMM)懒惰流动性显然较少。
最近,尽在 Paradigm 的 Uniswap v3: The Universal AMM 一文中提到,通过中心化流动性可以在特定价格范围内供给流动性,从而能够构建 DEX 上的所有知名 AMM 模型。该文章指出,仅在 \$1 的价格区间内供给流动性,Uniswap v3 池也能够充分构建出 Curve Finance 的模型。
为了验证这一观点是否在实际市场中得以体现,我们查看了 Uniswap v3 的 USDC/USDT 池的流动性供给现状。
可以通过 这个链接 查看 Uniswap v3 的所有池流动性供给现状
通过上述池现状确认大多数流动性供给集中在 1 USDC = 1 USDT 的价格范围内。
在流动性供给者所供给的价格范围内,代币交换越活跃,流动性供给者将获得更多的手续费。换句话说,合乎理性的流动性供给者会在期望交易活跃的价格范围内集中供给流动性。也就是说,流动性供给数量最多的价格范围可以被预测为 流动性供给者期望的代币价格。
当然,这一逻辑可能会存在问题。所有流动性供给者可能将流动性供给于自己预期价格范围以外的其他一般供给范围,或者为了获得更多手续费,故意将流动性供给于一般供给较少的范围。上述逻辑建议只作为一个参考指标。
UNI/USDC (0.3%) — 看起来期望价格会上涨
USDC/ETH (0.3%) — 看起来期望价格会下跌
WBTC/USDC (0.3%) — 看起来期望价格会上涨
Uniswap v3 最大的改进在于通过集中流动性提升了资本效率。变化后的流动性模型使得能够通过较少量的流动性供给达到相同的资本效率,成为流动性供给者在 Uniswap v3 中供给更多流动性的诱因。
在看到流动性供给模型变化的同时,我个人也想进行如下的未来研究。当这些研究结果出来后,我会单独向读者介绍。
- Uniswap v3 允许选择三种手续费中的一种进行流动性供给
- Uniswap 根据每个池的交易构建池的价格预言机,在三种分层情况下以何种模型(例如 TWAP、VWAP、LWAP 等)决定价格进行研究
在下一篇文章中,我们将详细讨论上述简单介绍的各种 AMM 模型的类型及其详细内容。
- 原文链接: hyun-jeong.medium.com/un...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!