Skip to main content

DeFi 基础

本节以 Uniswap v2/v3 的机制为重点,介绍 DeFi 基础。许多 DeFi 协议运行在 EVM 上;Uniswap 首创 AMM 模型,随后催生了 PancakeSwap、SushiSwap 等分叉。

uniswap

AMM(自动化做市商)

AMM 根据资金池而非订单簿自动定价。经典实现是 Uniswap v2,其价格由常数乘积模型决定:

x×y=kx \times y = k

该公式表示常数乘积模型:池中两种代币储备(x、y)的乘积保持常量 k。用户将一种代币换成另一种时,储备发生变化,价格随之自动调整。

其中 x、y 为代币储备,k 为常量。该设计简单、Gas 高效,但对大额交换与抢跑驱动的价格操纵较为敏感。

参考: What is an Automated Market Maker? by Uniswap

流动性池

在 AMM 中,交易以流动性池为基础。向池中按一定比例存入两种代币(如 WETH/USDC),即可通过池进行点对点交换。

谁提供流动性?

  • 任何人都可以成为 LP(流动性提供者)。
  • 无需审批,只要按比例存入两种代币即可参与。
  • 在池中的份额与自己的出资比例相对应。

与 CEX 的不同

  • CEX(中心化交易所)
    • 维护买/卖订单簿。
    • 通过撮合订单来成交。
  • AMM(去中心化交易所)
    • 用户无需找对手盘,直接与池子交易。
    • 价格由储备变化自动决定。
    • 无订单簿,较少出现“因深度不足而无法成交”的情况。

激励

  • LP 按份额分配池内产生的交易手续费。
    • Uniswap v2 通常收取 0.3% 手续费。
    • 例:在池中有 10% 份额的 LP,可获得 10% 的手续费收入。
  • 因此,LP 通过向交易场所提供流动性获得回报。

提示

  • 任何人都能成为 LP,但池子比例波动会带来无常损(IL)风险。
  • 手续费收入可在一定程度上对冲该风险;是否参与取决于风险/收益权衡。

Uniswap v2 交换示例

1. 初始状态

考虑如下资金池:

  • x = 100 WETH
  • y = 300,000 USDC
  • The constant product is
k=x×y=100×300,000=30,000,000k = x \times y = 100 \times 300{,}000 = 30{,}000{,}000

此时价格为:

Price of 1 WETH=yx=300,000100=3,000USDC\text{Price of 1 WETH} = \frac{y}{x} = \frac{300{,}000}{100} = 3{,}000 \, \text{USDC}

2. 用户交换

情况 A:卖出 10 WETH 换 USDC

用户向池中加入 10 WETH,并提取 USDC。

  1. 新的 x 储备:
x=100+10=110x' = 100 + 10 = 110
  1. 由于 k 不变:
x×y=k110×y=30,000,000y=30,000,000110272,727.27x' \times y' = k 110 \times y' = 30{,}000{,}000 y' = \frac{30{,}000{,}000}{110} \approx 272{,}727.27
  1. 用户获得的 USDC:
300,000272,727.27=27,272.73USDC300{,}000 - 272{,}727.27 = 27{,}272.73 \, \text{USDC}
  1. 新价格:
yx=272,7271102,479USDC/WETH\frac{y'}{x'} = \frac{272{,}727}{110} \approx 2{,}479 \, \text{USDC/WETH}

因此,成交后价格从 3,000 → 约 2,479 USDC/WETH(滑点)。


情况 B:加入 30,000 USDC 购买 WETH

相反,用户向池中加入 30,000 USDC 来购买 WETH。

  1. 新的 y 储备:
y=300,000+30,000=330,000y' = 300{,}000 + 30{,}000 = 330{,}000
  1. 由于 k 不变:
x×330,000=30,000,000x=30,000,000330,00090.91x' \times 330{,}000 = 30{,}000{,}000 x' = \frac{30{,}000{,}000}{330{,}000} \approx 90.91
  1. 用户获得的 WETH:
10090.91=9.09WETH100 - 90.91 = 9.09 \, \text{WETH}
  1. 新价格:
330,00090.913,628USDC/WETH\frac{330{,}000}{90.91} \approx 3{,}628 \, \text{USDC/WETH}

因此,成交后价格从 3,000 → 约 3,628 USDC/WETH。


3. 要点

  • 订单越大,价格移动越多,滑点越明显。
  • 这是维持 x × y = k 的副作用。
  • 大额交易者常拆分订单以降低滑点。

v3 对 v2 的改进

v2(2020 年 5 月)以简单的常数乘积模型推动了 DeFi 变革,但在所有价格区间“平均铺设”流动性效率较低,遇到大额交易时滑点较大。

v3(2021 年 5 月)引入集中流动性。LP 可将流动性集中在自选价格区间,使更多流动性分布在实际成交区间,从而降低滑点。

示例(WETH/USDC)

  • v2

    • 200 WETH 与 600,000 USDC 均匀分布在全部价格区间。
    • 以 1 WETH ≈ 3,000 USDC 为例,任何单一价格区间内的有效流动性都较“薄”。
    • 卖出 10 WETH 后,价格从 3,000 → 约 2,739 USDC/WETH(滑点较大)。
  • v3

    • 例如将流动性集中在 2,500–3,500 USDC/WETH 区间。
    • 该区间的有效流动性较 v2 深数倍。
    • 卖出同样 10 WETH,仅从 3,000 → 约 2,950 USDC/WETH(滑点较小)。

要点

  • v3 允许 LP 选择价格区间,提高资金利用效率。
  • 在实际成交区间集中资产,可在相同流动性下实现更小滑点。
  • 若价格脱离所选区间,LP 头寸可能完全变为单一代币、并不再提供流动性。

订单簿模型(CEX 与 Hyperliquid)

基本原理

在订单簿交易所,交易者提交“价格 + 数量”的订单,由系统撮合成交。

  • 买单(Bid):希望在此价格或更低价买入
  • 卖单(Ask):希望在此价格或更高价卖出

交易所按价格对订单排序,最高买价与最低卖价相交处发生成交。

示例:WETH/USDC 订单簿

卖单(Ask)
3,010 USDC - 50 WETH
3,005 USDC - 30 WETH
3,000 USDC - 20 WETH ← 最优卖价(Best ask)

买单(Bid)
2,995 USDC - 25 WETH ← 最优买价(Best bid)
2,990 USDC - 40 WETH
2,985 USDC - 60 WETH

当前市场(点差)在 3,000–2,995 USDC 之间。

  • 市价卖出 10 WETH,约在 3,000 USDC/WETH 附近成交。
  • 市价卖出 100 WETH,会“向下吃单”(3,000 → 2,990 → 2,985),平均约 2,990 USDC/WETH。

👉 若订单簿足够“深”,大单的滑点也会有限。

与 AMM 的差异

  • AMM(如 Uniswap v2)
    • 价格由常数乘积曲线决定
    • 交易沿曲线“滑动”(滑点是内生的)
    • 简单,任何人都能提供流动性
  • 订单簿(如 CEX、Hyperliquid)
    • 价格由订单簿决定
    • 深度足够时,大单也能稳定成交
    • 深度不足时,波动可能剧烈(闪崩风险)

优缺点

优点

  • 流动性深时,滑点更小
  • 可通过限价单控制价格
  • 适合高吞吐系统(CEX 或部分 L2 DEX)

缺点

  • 易出现中心化倾向(CEX 管控订单簿)
  • 去中心化实现需要更高的基础设施(链下引擎 / L2)
  • 有时不如 AMM 透明(可能存在虚假挂单、操纵)

Hyperliquid 亮点

  • 运行在自有高性能链上(非 EVM 兼容)
  • 在链上也追求接近 CEX 的速度
  • 由于速度与深度优势,三明治等 MEV 风险比 AMM 更低

Hyperliquid Foundation