09.Uniswap V3 集中流动性

核心摘要 (Key Takeaways)

  • 核心问题与解决方案:Uniswap V2 的流动性平均分布在 (0, +∞) 的整个价格区间,导致对价格稳定的资产(如稳定币)或价格波动在可预测范围内的资产,资本效率极低。Uniswap V3 引入集中流动性,允许流动性提供者(LP)将资金集中在自定义的价格区间 [Pa, Pb] 内,从而极大地提高了资本效率。
  • 虚拟流动性 (Virtual Liquidity):通过将流动性集中在特定区间,V3 能用较少的真实资产x_real, y_real)创造出等效于 V2 中巨大资金量的虚拟流动性。这个虚拟的 k 值(流动性深度)在进行交易计算时生效,能为交易者提供更低的滑点
  • 价格区间与资产构成:当市场价格在 LP 设置的 [Pa, Pb] 区间内波动时,其持有的两种代币会根据交易进行兑换。一旦价格超出这个区间,LP 的全部流动性头寸会自动转换成区间边界上的一种代币(在 Pa 点全部变为 X 代币,在 Pb 点全部变为 Y 代币)。
  • 价格区间的宽度是关键:LP 设置的价格区间越窄,资本效率的提升倍数就越高,但也面临着价格更容易偏离区间的风险。反之,区间越宽,其表现越接近于 Uniswap V2,资本效率越低,但管理更省心。

1. Uniswap V2 的核心问题:资本效率低下

Uniswap V2 使用一个非常简洁的恒定乘积做市商(AMM)公式来定义资产池的行为:

xy=k x \cdot y = k

其中 xy 是两种代币的数量,k 是一个常数。池中的瞬时价格 P 由两种资产的比例决定:

P=yx P = \frac{y}{x}
  • 流动性分布:这个模型将流动性均匀地分布在从 0+∞ 的整个价格曲线上。

  • 资本浪费:在大多数实际场景中,代币的价格只在一个相对较小的范围内波动。这意味着分布在价格范围之外的绝大部分流动性从未被使用,造成了严重的资本浪费。

    • 案例 (稳定币):像 USDC/USDT 这样的稳定币对,其价格通常只在 0.991.01 之间微小波动。在 V2 中,为 00.991.01+∞ 价格区间提供的流动性几乎永远不会被触及,这部分资金完全被闲置。
    • 案例 (主流资产):即使是像 ETH 这样波动性较高的资产,其价格在特定时期(如一周内)也往往在一个可预测的范围内波动,例如 15002000 美元。超出此范围的流动性同样被浪费了。

2. Uniswap V3 的解决方案:集中流动性 (Concentrated Liquidity)

为了解决 V2 的资本效率问题,Uniswap V3 提出了集中流动性(也称区间流动性)的核心概念。

  • 核心机制:允许流动性提供者(LP)不再为整个 (0, +∞) 价格曲线提供流动性,而是可以选择一个自定义的价格区间 [Pa, Pb] 来集中投入他们的资金。
  • 目标:通过将资金集中在最有可能发生交易的价格附近,极大地提高资本的利用效率
  • 主动管理:LP 可以根据市场价格的变化,主动地撤出旧区间的流动性,并在新的、更合适的价格区间内重新提供流动性,以持续追踪市场价格,保持高效率。

3. 核心概念:虚拟流动性 (Virtual Liquidity)

img

此图展示了一个 xy=kx \cdot y = k 的函数曲线图。为了满足让用户可以选择只在 [a,b][a, b] 价格区间内提供流动性。对于图中 [a,b][a, b] 区间的任意点,都有:

$$ x = x_{virtual} + x_{real} ,

y = y_{virtual} + y_{real} $$

集中流动性机制创造了一个强大的效果,即虚拟流动性

  • 定义:在 V3 中,LP 使用的真实代币数量(xrealx_{real}, yrealy_{real})虽然有限,但通过集中在 [Pa, Pb] 区间,它们所能产生的交易深度(即等效的 k 值)被极大地放大了。这个被放大的流动性被称为虚拟流动性 (xvirtualx_{virtual}, yvirtualy_{virtual})。

  • 作用:这个虚拟流动性仅用于交易滑点的计算。它并不代表池子里有那么多的真实资产,但它能确保在指定价格区间内的交易滑点非常低,体验远超 V2。

  • 为什么需要更高的流动性 (更大的k值)?

    • 对交易者k 值越大,单笔交易对价格的影响就越小,意味着滑点越低,交易体验越好。
    • 对 LP:价格变动更平滑,理论上可以减少无常损失
  • 案例 (数据对比)

    • V2 场景: 假设用户投入 100 个 X 代币和 100 个 Y 代币。
      • 流动性常数 LV2=100×100=100L_{V2} = \sqrt{100 \times 100} = 100
    • V3 场景: 用户同样投入 100 个 X (xrealx_{real}) 和 100 个 Y (yrealy_{real}),但将它们集中在一个较窄的价格区间内。
      • 系统计算出的虚拟流动性可能等效于一个拥有 300 个 X 和 300 个 Y 的 V2 池子。
      • 虚拟流动性常数 LV3=300×300=300L_{V3} = \sqrt{300 \times 300} = 300
      • 这意味着,用同样数量的真实资产,V3 在该区间内实现了 3 倍于 V2 的流动性深度。 /posts/202509-uniswap09/20250902211058.png 上图展示了用户选择在价格 [a,b][a,b]之间提供流动性时,通过虚拟 token 的参与,将曲线 f(real)f(real)(橘红色)向右上方移动至 f(virtual)f(virtual)(绿色),实现了价格计算的一致性(即满足 xy=kx⋅y=k)。

4. 价格变动对流动性头寸的影响

当市场价格在 LP 设置的 [Pa, Pb] 区间内移动时,其资产构成会发生变化。如果价格移出区间,资产会完全变为单一币种。

资产状态变化流程图

graph TD
    A[开始: LP在价格区间 Pa, Pb 内提供X和Y] --> B{市场价格 P 发生变动};
    B --> C{价格 P 上涨 --> Pb};
    C --> D[交易: 卖出X, 买入Y
LP资产: x_real减少, y_real增加]; D --> E[状态1: 价格到达 Pb
LP资产: x_real = 0
头寸100%为 Y 代币]; B --> F{价格 P 下跌 --> Pa}; F --> G[交易: 卖出Y, 买入X
LP资产: y_real减少, x_real增加]; G --> H[状态2: 价格到达 Pa
LP资产: y_real = 0
头寸100%为 X 代币]; subgraph "区间内" direction LR A B C D F G end subgraph "区间外" direction LR E H end
graph TD
    A[开始: LP在价格区间 Pa, Pb 内提供X和Y] --> B{市场价格 P 发生变动};
    B --> C{价格 P 上涨 --> Pb};
    C --> D[交易: 卖出X, 买入Y
LP资产: x_real减少, y_real增加]; D --> E[状态1: 价格到达 Pb
LP资产: x_real = 0
头寸100%为 Y 代币]; B --> F{价格 P 下跌 --> Pa}; F --> G[交易: 卖出Y, 买入X
LP资产: y_real减少, x_real增加]; G --> H[状态2: 价格到达 Pa
LP资产: y_real = 0
头寸100%为 X 代币]; subgraph "区间内" direction LR A B C D F G end subgraph "区间外" direction LR E H end
graph TD
    A[开始: LP在价格区间 Pa, Pb 内提供X和Y] --> B{市场价格 P 发生变动};
    B --> C{价格 P 上涨 --> Pb};
    C --> D[交易: 卖出X, 买入Y
LP资产: x_real减少, y_real增加]; D --> E[状态1: 价格到达 Pb
LP资产: x_real = 0
头寸100%为 Y 代币]; B --> F{价格 P 下跌 --> Pa}; F --> G[交易: 卖出Y, 买入X
LP资产: y_real减少, x_real增加]; G --> H[状态2: 价格到达 Pa
LP资产: y_real = 0
头寸100%为 X 代币]; subgraph "区间内" direction LR A B C D F G end subgraph "区间外" direction LR E H end

图表解释:

这个流程图展示了当市场价格变动时,一个 Uniswap V3 流动性头寸的演变过程。

  1. 初始状态: LP 在 PaPb 之间同时提供 X 和 Y 两种代币。
  2. 价格上涨: 如果价格从当前点 PPb 上涨,池子会不断卖出 X 代币换取 Y 代币。因此,LP 持有的 X 代币 (xrealx_{real}) 逐渐减少,Y 代币 (yrealy_{real}) 逐渐增多。
  3. 触及上边界: 当价格达到 Pb 时,LP 的所有 X 代币都被卖光,其头寸完全由 Y 代币构成。
  4. 价格下跌: 反之,如果价格从 PPa 下跌,池子会卖出 Y 代币换取 X 代币。LP 持有的 Y 代币 (yrealy_{real}) 减少,X 代币 (xrealx_{real}) 增多。
  5. 触及下边界: 当价格达到 Pa 时,LP 的所有 Y 代币都被卖光,其头寸完全由 X 代币构成。
  • 流动性贡献 (Liquidity Contribution)
    • 当价格从 P 移动到 Pb 时,是 X 代币在为交易提供流动性(因为它被卖出)。
    • 当价格从 P 移动到 Pa 时,是 Y 代币在为交易提供流动性(因为它被卖出)。

5. 价格区间宽度的影响

价格区间的宽度是决定资本效率的核心变量。

  • 宽区间 (Wide Range)

    • 如果 LP 设置的区间非常宽,例如 Pa 接近 0Pb 接近 +∞
    • 这种情况下,V3 的行为和资本效率将无限接近于 Uniswap V2。虚拟流动性的放大效应会变得很小。
  • 窄区间 (Narrow Range)

    • 如果 LP 设置的区间非常窄,资本效率会得到惊人的提升。
    • 案例 (稳定币):假设为稳定币对设置一个 0.91.1 的价格区间。同样投入 100 个 X 和 100 个 Y。
      • 视频中的演示显示,在这种情况下,资本效率(以 L 值衡量)可以提升约 200 倍。这意味着用 100 对代币达到的交易深度,在 V2 中可能需要 20000 对代币才能实现。
    • 权衡:区间越窄,效率越高,但价格也更容易偏离这个区间,导致流动性失效(头寸变为单一资产)并停止赚取手续费。这要求 LP 进行更主动的管理。