DeFi 深度解析
预计阅读 17 分钟

AMM 与去中心化交易所

AMM 与去中心化交易所

![status](https://img.shields.io/badge/% E7%8A% B6% E6%80%81-% E5% B7% B2% E5% AE%8C% E6%88%90-success) ![author](https://img.shields.io/badge/% E4% BD%9C% E8%80%85-beihaili-blue) ![date](https://img.shields.io/badge/% E6%97% A5% E6%9C%9F-2025--06-orange) ![difficulty](https://img.shields.io/badge/% E9%9A% BE% E5% BA% A6-% E4% B8% AD% E7% BA% A7-yellow)

💡 本课将深入解析去中心化交易所(DEX)的核心机制 —— 自动做市商(AMM)。你将理解 Uniswap 的恒定乘积公式、流动性提供的完整流程,以及无常损失这个每个 LP 必须面对的概念。

欢迎关注我的推特:@bhbtc1337

进入微信交流群请填表:表格链接

文章开源在 GitHub:Get-Started-with-Web3

购买 BTC / ETH / USDT 等加密货币推荐 币安 注册链接

目录

  • [交易的两种模式:订单簿 vs AMM](# 交易的两种模式订单簿 - vs-amm)
  • [恒定乘积公式 x * y = k](# 恒定乘积公式 - x--y--k)
  • [流动性池与 LP Token](# 流动性池与 - lp-token)
  • [滑点与价格影响](# 滑点与价格影响)
  • [无常损失详解](# 无常损失详解)
  • [Uniswap V2 vs V3:集中流动性革命](#uniswap-v2-vs-v3 集中流动性革命)
  • [主流 DEX 全景](# 主流 - dex - 全景)
  • [总结](# 总结)
  • [延伸阅读](# 延伸阅读)

交易的两种模式:订单簿 vs AMM

在理解 DEX 之前,我们需要先理解交易所的两种基本运作模式。

订单簿模式(Order Book)

传统交易所(如股票交易所、币安、Coinbase)都采用 ** 订单簿 ** 模式:

卖单(Ask)          买单(Bid)
$2,010 - 5 ETH     $1,990 - 3 ETH
$2,005 - 10 ETH    $1,985 - 8 ETH
$2,001 - 2 ETH     $1,980 - 15 ETH
         ↕ 价差(Spread)= $11
  • 买家和卖家各自挂出自己想要的价格和数量
  • 当买价 >= 卖价时,订单匹配成交
  • 需要足够多的做市商来保证流动性

** 问题 **:订单簿模式需要高吞吐量和低延迟。以太坊主网每秒约 15 笔交易、每笔交易需要 Gas 费,根本无法支撑频繁的挂单和撤单操作。

AMM 模式(Automated Market Maker)

AMM 用完全不同的方式解决了这个问题:** 用数学公式代替订单匹配 **。

  • 不需要买卖双方匹配,用户直接与智能合约中的流动性池交易
  • 价格由池中两种代币的比例和数学公式自动计算
  • 任何人都可以向池中添加流动性来赚取手续费

这就像一台永远不关门的自动兑换机:你投入 A 代币,按照当前比例取出 B 代币,机器自动调整价格。

对比维度订单簿AMM
定价方式买卖双方博弈数学公式自动计算
流动性来源专业做市商任何人都可以提供
适用环境高性能中心化服务器区块链智能合约
交易对手另一个交易者流动性池 (智能合约)
代表产品币安、NYSEUniswap、Curve

恒定乘积公式 x * y = k

Uniswap 在 2018 年首创的恒定乘积做市商(Constant Product Market Maker, CPMM),是 DeFi 历史上最重要的创新之一。其核心公式极其简洁:

x * y = k

其中:

  • x = 池中代币 A 的数量
  • y = 池中代币 B 的数量
  • k = 常数(在没有新的流动性增减时保持不变)

一个具体的例子

假设有一个 ETH/USDC 流动性池:

初始状态:
x = 100 ETH
y = 200,000 USDC
k = 100 × 200,000 = 20,000,000

隐含价格:y/x = 200,000/100 = 2,000 USDC/ETH

现在小明想用 USDC 买入 1 ETH:

交易后池中 ETH 数量:100 - 1 = 99 ETH
根据 k 不变:99 × y' = 20,000,000
y' = 20,000,000 / 99 ≈ 202,020.20 USDC

小明需要支付的 USDC:202,020.20 - 200,000 = 2,020.20 USDC
实际成交价格:2,020.20 USDC/ETH(比初始价格 2,000 高了约 1%)

注意到了吗?买入 1 ETH 的成交价格(2,020.20)高于初始价格(2,000)。这就是 AMM 的定价机制 ——** 每次交易都会改变池中代币比例,从而改变价格 **。买的越多,价格推得越高。

价格曲线可视化

USDC 数量
  ↑
  |  ╲
  |    ╲
  |      ╲
  |        ╲──── x * y = k 曲线
  |           ╲
  |              ╲
  |                 ╲────
  └──────────────────────→ ETH 数量

这条双曲线有一个重要特性:** 价格永远不会真正归零 **。随着某一种代币被大量买走,它的价格会趋向无穷大。这保证了池中始终有两种代币。

手续费的作用

实际的 Uniswap 交易还会收取手续费(V2 为 0.3%,V3 有 0.01%/0.05%/0.3%/1% 多档)。手续费不会从池中取走,而是加入到 k 值中,使得:

交易后:k_new > k_old

这意味着每笔交易都让流动性池变得更大,这些手续费就是流动性提供者的收益来源。

流动性池与 LP Token

什么是流动性池?

流动性池是一个智能合约,持有两种代币(交易对)。例如 Uniswap 的 ETH/USDC 池就是一个合约地址,里面同时存储着 ETH 和 USDC。

如何提供流动性?

任何人都可以成为流动性提供者(Liquidity Provider, LP):

提供流动性的步骤:

1. 准备两种代币(比例需匹配当前池子比例)
   例如:1 ETH + 2,000 USDC

2. 调用合约的 addLiquidity 函数
   → 两种代币转入池子

3. 获得 LP Token(代表你在池中的份额)
   → 假设池子有 100 份,你投入了 1%,获得 1 个 LP Token

4. 赚取交易手续费
   → 手续费自动累积在池中,你的 LP Token 代表的实际资产在增长

5. 随时可以用 LP Token 赎回你的份额
   → 销毁 LP Token,取回对应比例的两种代币

LP Token 的本质

LP Token 就是你在流动性池中的 "份额凭证",类似于基金份额。它有以下特性:

  • ** 可转让 **:LP Token 本身是 ERC-20 代币,可以转账和交易
  • ** 可组合 **:LP Token 可以被其他 DeFi 协议使用(如抵押借贷、收益农场)
  • ** 价值增长 **:随着交易手续费积累,每个 LP Token 代表的底层资产在增长

滑点与价格影响

什么是滑点(Slippage)?

** 滑点 ** 是指你的实际成交价格与预期价格之间的差异。在 AMM 中,滑点主要来自两个因素:

  1. ** 价格影响(Price Impact)**:你的交易本身改变了池中的代币比例,从而改变了价格
  2. ** 市场波动 **:在你提交交易到交易被打包上链之间,其他交易已经改变了池子状态

价格影响的大小取决于什么?

核心公式:** 你交易的金额占池子的比例越大,价格影响越大。**

场景对比(ETH/USDC 池,初始 k = 20,000,000)

小额交易 —— 买 0.1 ETH:
  实际价格 ≈ 2,002 USDC/ETH
  价格影响 ≈ 0.1%

中额交易 —— 买 10 ETH:
  实际价格 ≈ 2,222 USDC/ETH
  价格影响 ≈ 11.1%

大额交易 —— 买 50 ETH:
  实际价格 ≈ 4,000 USDC/ETH
  价格影响 ≈ 100%!

这就是为什么:

  • ** 大资金交易者更倾向于使用聚合器 **(如 1inch),将大额交易拆分到多个 DEX 以降低价格影响
  • ** 池子越深(TVL 越高)越好 **,因为同样金额的交易对大池子的影响更小

滑点保护

在 Uniswap 等 DEX 中,你可以设置 ** 最大可接受滑点 **(如 0.5%)。如果实际滑点超过这个阈值,交易会自动失败(revert)。这是为了防止 "三明治攻击"(Sandwich Attack)—— 恶意矿工在你的交易前后各插入一笔交易来从中获利。

无常损失详解

** 无常损失(Impermanent Loss, IL)** 是每一个流动性提供者都必须理解的概念。它是指相比于简单持有(HODL)两种代币,将它们放入 AMM 流动性池可能导致的价值损失。

为什么会有无常损失?

还是用 ETH/USDC 的例子:

初始状态:
你提供了 1 ETH + 2,000 USDC(合计 4,000 美元)
池子里 ETH 价格 = 2,000 USDC

一段时间后,ETH 涨到 4,000 USDC:

如果你只是 HODL:

1 ETH × $4,000 + 2,000 USDC = $6,000

但在池子里,由于套利者会不断交易使池中价格与外部价格一致,你的份额变成了:

根据 x*y=k 和新价格:
x_new = √(k / 新价格) = √(2,000,000 / 4,000) ≈ 0.707 ETH
y_new = √(k × 新价格) = √(2,000,000 × 4,000) ≈ 2,828.43 USDC

你的持仓价值:0.707 × $4,000 + $2,828.43 = $5,656.43

** 无常损失 = HODL 价值 - LP 价值 = $6,000 - $5,656.43 = $343.57(约 5.7%)**

无常损失计算公式

对于恒定乘积 AMM,无常损失只取决于价格变化比率 r(= 新价格 / 初始价格):

无常损失 = 2√r / (1 + r) - 1
价格变化无常损失
1.25x (涨 25%)0.6%
1.50x (涨 50%)2.0%
2x (翻倍)5.7%
3x (涨 3 倍)13.4%
5x (涨 5 倍)25.5%

注意:价格无论上涨还是下跌相同比例,无常损失是一样的。涨 2 倍和跌 2 倍的无常损失都是 5.7%。

"无常" 是什么意思?

之所以叫 "无常" 损失而非 "永久" 损失,是因为:

  • 如果价格最终回到你提供流动性时的水平,损失就消失了
  • 但如果你在价格偏离时撤出流动性,损失就变成 "永久" 的了

实际上,流动性提供者需要权衡:** 交易手续费收入是否能覆盖无常损失 **。如果一个交易对的交易量很大(手续费收入高),而价格波动相对较小,那做 LP 就是划算的。

Uniswap V2 vs V3:集中流动性革命

Uniswap V2 的问题

V2 的流动性均匀分布在从 0 到无穷大的整个价格区间。但实际上,大部分交易发生在当前价格附近的一个小区间内。这意味着大量流动性被 "浪费" 在了永远不会被用到的价格区间。

V2 流动性分布:
流动性 ↑
       |████████████████████████████████████
       |████████████████████████████████████
       |████████████████████████████████████
       └────────────────────────────────────→ 价格
       $0         $2,000                   $∞
                  (当前价格)
       ← 这些区间的流动性几乎不会被使用 →

Uniswap V3:集中流动性

V3 允许 LP 选择提供流动性的 ** 价格区间 **。例如,你可以只在 $1,800 - $2,200 的区间提供 ETH/USDC 流动性。

V3 集中流动性分布:
流动性 ↑
       |              ████████
       |           ██████████████
       |        ████████████████████
       |     ██████████████████████████
       └────────────────────────────────────→ 价格
             $1,800   $2,000   $2,200

** 关键优势:资本效率 **

假设 ETH 价格稳定在 $2,000 附近:

  • V2 需要提供从 $0 到 $∞ 的流动性
  • V3 可以只在 $1,900-$2,100 的区间集中流动性

在相同资金量下,V3 在目标区间提供的流动性深度可以是 V2 的 ** 数百倍甚至上千倍 **,这意味着同样金额的交易滑点更小。

V3 的权衡:

V2V3
流动性覆盖全价格区间LP 选择特定价格区间
无需主动管理价格超出区间后需要重新调整
LP Token 是标准 ERC-20(可互换)LP Position 是 NFT(不可互换)
资本效率低资本效率高,但管理更复杂

V3 的出现让 LP 变成了一种更 "主动" 的投资行为:你需要判断价格区间、定期调整仓位。这也催生了一系列 "LP 管理" 协议(如 Arrakis、Gamma),帮助用户自动调整 V3 仓位。

主流 DEX 全景

DEX所属链特色AMM 模型
Uniswap以太坊,Arbitrum, Base 等最大的通用 DEX,V3 集中流动性CPMM (x*y=k)
Curve以太坊,多链专注稳定币交易,超低滑点StableSwap (专用曲线)
Balancer以太坊,Arbitrum支持多资产加权池(如 80/20 池)加权恒定乘积
PancakeSwapBNB Chain, 多链BSC 生态最大 DEXCPMM
RaydiumSolanaSolana 生态,结合订单簿Hybrid AMM+CLOB
Trader JoeAvalanche, Arbitrum流动性账本 (Liquidity Book) 模型Bin-based AMM

值得注意的是,Curve 使用了一种专为稳定币优化的 AMM 曲线(StableSwap),在价格接近 1:1 时提供极低的滑点。这就是为什么 USDC/USDT/DAI 之间的大额兑换通常会走 Curve 而不是 Uniswap。

总结

  1. **AMM 用数学公式取代订单匹配 **,使得去中心化交易成为可能,是 DeFi 的基础设施之一
  2. ** 恒定乘积公式 x*y=k** 是最经典的 AMM 模型,简洁优雅但也有资本效率的局限
  3. ** 流动性提供者通过 LP Token 赚取手续费 **,但需要承担无常损失的风险
  4. ** 滑点与池子深度和交易大小有关 **,大额交易应使用聚合器来降低价格影响
  5. ** 无常损失是 LP 必须理解的核心概念 **,只有手续费收入覆盖无常损失时做 LP 才划算
  6. **Uniswap V3 的集中流动性 ** 大幅提升了资本效率,但也增加了 LP 管理的复杂度

延伸阅读

闯关测验

完成 5 道题目,需要 全部答对 才能通关下一章节

如果这节课对你有帮助,欢迎支持作者继续创作 ☕

感谢作者 · Buy Me a Coffee