08.Uniswap V3简介

核心摘要 (Key Takeaways)

  • 解决核心痛点:Uniswap V3 的首要目标是解决 V2 版本资金利用率低下的问题。V2 将流动性平均分布在 (0, +∞) 的价格区间,导致大部分资金在常规价格波动范围之外被闲置。
  • 核心创新:集中流动性 (Concentrated Liquidity):V3 允许流动性提供者 (LP) 将资金集中在自定义的价格区间 [PA, PB] 内。这使得在有限的资本下,可以实现与 V2 庞大资金池相同的交易深度,从而极大地提高了资本效率。
  • LP 角色与凭证的转变:由于每个 LP 提供的价格区间和资金量都可能不同,其流动性头寸是独一无二的。因此,LP 凭证从 V2 的同质化代币 ERC-20 演变为 V3 的非同质化代币 ERC-721 (NFT)。这也要求 LP 从被动提供者转变为主动的策略管理者
  • 功能与风险的优化:集中流动性不仅能带来更高的手续费收益,还能在极端行情下提供更好的风险控制。此外,它还催生了新功能,如通过设置极窄的价格区间来模拟限价订单 (Range Orders)
  • 灵活的手续费机制:V3 摒弃了 V2 单一的 0.3% 手续费,引入了基于交易对波动性的多级费率(如 0.01%, 0.05%, 0.3%, 1%),为不同类型的资产(稳定币、主流币等)提供了更合理的定价。

1. Uniswap V2 的核心问题:资金利用率低下

img

Uniswap V2 的核心算法是 恒定乘积做市商模型,其公式为:

xy=k x \cdot y = k

这个模型虽然简洁,但存在一个重大缺陷:资金利用率 (Capital Efficiency) 很低。这一问题也催生了其他竞品(如 Curve Finance)通过改变曲线算法来尝试解决。

  • 理论基础:该公式支持从 0+∞ 的无限大价格范围。
  • 现实情况:任何代币(如 ETH)的价格通常只在一个相对狭窄的范围内波动(例如,1000美元至4000美元)。
  • 问题所在:存放在当前主流交易范围之外的流动性,例如支持价格低于1000美元或高于4000美元的资金,几乎从未被使用,造成了严重的资本浪费。

案例:ETH/DAI 交易对的资金利用率计算

  • 场景设定:

    • 交易对:ETH/DAI
    • 初始池子状态:4500 DAI (x) 和 3 ETH (y)
    • 当前市价:1500 DAI/ETH
    • 恒定乘积 K=4500×3=13500K = 4500 \times 3 = 13500
  • 情况一:价格下跌

    • 假设 ETH 价格从 1500 下跌到 1300
    • 经过计算,交易后池子状态变为:4192.5 DAI (x2x_2) 和 3.22 ETH (y2y_2)。
    • 资金变动
      • DAI 减少量 (Δx\Delta x): 45004192.5=307.54500 - 4192.5 = 307.5
      • ETH 增加量 (Δy\Delta y): 3.223=0.223.22 - 3 = 0.22
    • 资金利用率 (以 DAI 计): 利用率=Δxx1=307.545006.84% \text{利用率} = \frac{\Delta x}{x_1} = \frac{307.5}{4500} \approx 6.84\%
  • 情况二:价格上涨

    • 假设 ETH 价格从 1500 上涨到 2200
    • 在这种涨幅较大的情况下,资金利用率也仅在 20% 左右。
  • 结论:即使在价格波动较大的情况下,V2 池中大部分资金仍然是闲置的。

极端情况:稳定币交易对

对于像 USDC/DAI 这样的稳定币交易对,价格波动范围极小(如 0.991.01)。在这种情况下,绝大部分流动性都分布在永远不会触及的价格点上,导致其资金利用率远低于波动性资产。

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

img

为了解决资金利用率低下的问题,Uniswap V3 提出了革命性的 集中流动性 概念。

img

  • 核心思想:允许流动性提供者 (LP) 不再将资金平均分布于 (0, +∞),而是可以自定义一个价格区间 [PA, PB],并只在这个区间内提供流动性。
  • 流动性分布形态
    • 个人 LP:提供一个矩形区间的流动性。
    • 全体 LP:由于大量 LP 根据市场预期在当前价格附近集中提供流动性,所有个人头寸叠加后,整个池子的流动性分布形态通常类似于正态分布,在当前市场价附近流动性最深。

虚拟流动性 (Virtual Liquidity) 与实际储备 (Real Reserves)

V3 的数学实现依然基于 xy=kx \cdot y = k 公式,但它引入了虚拟流动性的概念。

img

  • 实际储备 (Real Reserves):为了支持价格在 [PA, PB] 区间内波动,LP 实际上只需要提供在该区间内会被交易的资产量,即 Δx\Delta xΔy\Delta y
  • 虚拟流动性 (Virtual Liquidity):V3 的算法通过数学计算,将 LP 提供的有限的“实际储备”放大,创造出一条虚拟的 xy=kx \cdot y = k 曲线。这条曲线的效果等同于 V2 中一个资金量大得多的池子,但仅在 [PA, PB] 区间内有效。
  • 效果:LP 可以用更少的资金,在指定的价格区间内,达到和 V2 模式下投入大量资金相同的流动性深度和交易滑点

3. 集中流动性带来的核心变化与优势

3.1 显著提升资金利用率

案例:Alice (V2) vs. Bob (V3) 的投资回报对比

  • 背景:

    • 两人各有 100 万美元 资本。
    • 市场预期:未来一年 ETH 价格在 [1000, 2500] 美元区间内波动。
  • Alice 的策略 (Uniswap V2):

    • 投入全部资本:50 万美元的 DAI 和价值 50 万美元的 333.33 ETH。
    • 流动性范围:(0, +∞)
    • 年化收益率 (APR):50%
  • Bob 的策略 (Uniswap V3):

    • 仅投入部分资本91,750 DAI 和 61.17 ETH,将流动性集中在 [1000, 2500] 的价格区间。
    • 剩余资本:约 81 万美元保持闲置。
    • 结果:由于 Bob 的资金高度集中在实际交易区间,他用少得多的资本获得了与 Alice 相同的手续费收入
    • 年化收益率 (APR):314% (因为本金更小)。

example 1

3.2 更好的风险管理

案例:ETH 归零的极端行情

  • Alice (V2):

    • 当 ETH 价格趋近于零时,她的池子会不断卖出 DAI、买入 ETH。
    • 最终,她持有的资产将几乎全部是归零的 ETH,而 DAI 已被耗尽。
    • 损失:接近 100%
  • Bob (V3):

    • 他的流动性只在 [1000, 2500] 区间有效。当 ETH 价格跌破 1000 美元时,他的头寸会自动转换为 100% 的 ETH,并且不再参与更低价格的交易
    • 虽然他这部分 LP 头寸的价值也会归零,但他最初闲置的 81 万美元资本安然无恙
    • 损失:仅限于他投入 LP 的那一小部分资金,整体亏损远小于 Alice。

example 2

3.3 LP 凭证的演变:从 ERC-20 到 ERC-721

  • V2:所有 LP 在同一个池子里提供的流动性是等价的、可互换的,因此其凭证是同质化的 ERC-20 代币
  • V3:每个 LP 的头寸由资金量、价格区间 [PA, PB] 共同定义,是独一无二、不可互换的。因此,LP 凭证变成了非同质化的 ERC-721 代币 (NFT)

3.4 新的 LP 策略:主动管理

  • V2:添加流动性后,LP 无需任何操作,是一种被动收入策略。
  • V3:LP 需要主动管理自己的头寸。如果市场价格超出了设定的 [PA, PB] 区间,LP 将停止赚取手续费。因此,LP 需要监控市场并根据判断调整自己的流动性范围,以最大化收益。

3.5 模拟限价订单 (Range Orders)

通过在当前市价之外设置一个极窄的价格区间,可以模拟出传统交易所的限价单功能。

sequenceDiagram
    participant User as 用户/LP
    participant Market as 市场
    participant V3_Pool as Uniswap V3 池

    User->>V3_Pool: 1. 创建限价单:在当前价下方[PA, PB]区间存入DAI
    Note right of User: 目标:用DAI在低价买入ETH
  
    Market->>Market: 2. ETH价格随市场波动下跌
  
    Market->>V3_Pool: 3. 市场价进入[PA, PB]区间
    activate V3_Pool
    V3_Pool->>V3_Pool: 4. 开始将DAI逐步兑换为ETH
    deactivate V3_Pool
  
    Market->>V3_Pool: 5. 市场价跌穿PA
    activate V3_Pool
    V3_Pool->>User: 6. 完成兑换:用户头寸变为100% ETH
    deactivate V3_Pool
    Note right of User: 成功实现限价买入
sequenceDiagram
    participant User as 用户/LP
    participant Market as 市场
    participant V3_Pool as Uniswap V3 池

    User->>V3_Pool: 1. 创建限价单:在当前价下方[PA, PB]区间存入DAI
    Note right of User: 目标:用DAI在低价买入ETH
  
    Market->>Market: 2. ETH价格随市场波动下跌
  
    Market->>V3_Pool: 3. 市场价进入[PA, PB]区间
    activate V3_Pool
    V3_Pool->>V3_Pool: 4. 开始将DAI逐步兑换为ETH
    deactivate V3_Pool
  
    Market->>V3_Pool: 5. 市场价跌穿PA
    activate V3_Pool
    V3_Pool->>User: 6. 完成兑换:用户头寸变为100% ETH
    deactivate V3_Pool
    Note right of User: 成功实现限价买入
sequenceDiagram
    participant User as 用户/LP
    participant Market as 市场
    participant V3_Pool as Uniswap V3 池

    User->>V3_Pool: 1. 创建限价单:在当前价下方[PA, PB]区间存入DAI
    Note right of User: 目标:用DAI在低价买入ETH
  
    Market->>Market: 2. ETH价格随市场波动下跌
  
    Market->>V3_Pool: 3. 市场价进入[PA, PB]区间
    activate V3_Pool
    V3_Pool->>V3_Pool: 4. 开始将DAI逐步兑换为ETH
    deactivate V3_Pool
  
    Market->>V3_Pool: 5. 市场价跌穿PA
    activate V3_Pool
    V3_Pool->>User: 6. 完成兑换:用户头寸变为100% ETH
    deactivate V3_Pool
    Note right of User: 成功实现限价买入

流程解释: 该时序图展示了用户如何利用 V3 实现限价买入。

  1. 设置订单:用户在当前市场价下方设定一个非常狭窄的价格范围 [PA, PB],并只存入单一资产(如 DAI)。
  2. 市场触发:当市场价格下跌并进入用户设定的 [PA, PB] 区间时,订单被激活。
  3. 自动执行:Uniswap V3 池会利用该流动性,将用户的 DAI 逐步兑换成另一种资产(如 ETH)。
  4. 完成订单:如果价格完全跌穿该范围(低于 PA),用户的 DAI 将被 100% 兑换成 ETH,从而实现了在特定价格区间“买入”ETH 的限价单效果。反之,在当前价上方设置区间并存入 ETH,则可实现限价卖出。

4. Uniswap V3 的另一项重要创新:灵活的手续费等级 (Flexible Fee Tiers)

V3 认识到不同类型的交易对风险和波动性不同,因此应收取不同的手续费。

  • 背后的逻辑:

    • 无常损失 (Impermanent Loss) 与价格波动成正比。
    • 高波动性资产(如山寨币):应收取更高手续费,以补偿 LP 面临的巨大无常损失风险。
    • 低波动性资产(如稳定币):无常损失极小,应收取更低手续费,以鼓励更多交易,降低用户成本。
  • V3 提供的费率等级:

    • 0.01% (万分之一):适用于稳定币对稳定币,如 USDC/DAI。
    • 0.05% (万分之五):适用于主流币对稳定币等。
    • 0.3% (千分之三):适用于主流币对,如 ETH/DAI。
    • 1%:适用于高波动性的山寨币或新兴代币。
  • 协议管理费:协议可以从 LP 赚取的手续费中抽取 10% 到 25% 作为管理费。