AMM 与去中心化交易所
AMM 与去中心化交易所
   
💡 本课将深入解析去中心化交易所(DEX)的核心机制 —— 自动做市商(AMM)。你将理解 Uniswap 的恒定乘积公式、流动性提供的完整流程,以及无常损失这个每个 LP 必须面对的概念。
欢迎关注我的推特:@bhbtc1337
进入微信交流群请填表:表格链接
文章开源在 GitHub:Get-Started-with-Web3
目录
- [交易的两种模式:订单簿 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 |
|---|---|---|
| 定价方式 | 买卖双方博弈 | 数学公式自动计算 |
| 流动性来源 | 专业做市商 | 任何人都可以提供 |
| 适用环境 | 高性能中心化服务器 | 区块链智能合约 |
| 交易对手 | 另一个交易者 | 流动性池 (智能合约) |
| 代表产品 | 币安、NYSE | Uniswap、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 中,滑点主要来自两个因素:
- ** 价格影响(Price Impact)**:你的交易本身改变了池中的代币比例,从而改变了价格
- ** 市场波动 **:在你提交交易到交易被打包上链之间,其他交易已经改变了池子状态
价格影响的大小取决于什么?
核心公式:** 你交易的金额占池子的比例越大,价格影响越大。**
场景对比(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 的权衡:
| V2 | V3 |
|---|---|
| 流动性覆盖全价格区间 | 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 池) | 加权恒定乘积 |
| PancakeSwap | BNB Chain, 多链 | BSC 生态最大 DEX | CPMM |
| Raydium | Solana | Solana 生态,结合订单簿 | Hybrid AMM+CLOB |
| Trader Joe | Avalanche, Arbitrum | 流动性账本 (Liquidity Book) 模型 | Bin-based AMM |
值得注意的是,Curve 使用了一种专为稳定币优化的 AMM 曲线(StableSwap),在价格接近 1:1 时提供极低的滑点。这就是为什么 USDC/USDT/DAI 之间的大额兑换通常会走 Curve 而不是 Uniswap。
总结
- **AMM 用数学公式取代订单匹配 **,使得去中心化交易成为可能,是 DeFi 的基础设施之一
- ** 恒定乘积公式 x*y=k** 是最经典的 AMM 模型,简洁优雅但也有资本效率的局限
- ** 流动性提供者通过 LP Token 赚取手续费 **,但需要承担无常损失的风险
- ** 滑点与池子深度和交易大小有关 **,大额交易应使用聚合器来降低价格影响
- ** 无常损失是 LP 必须理解的核心概念 **,只有手续费收入覆盖无常损失时做 LP 才划算
- **Uniswap V3 的集中流动性 ** 大幅提升了资本效率,但也增加了 LP 管理的复杂度
延伸阅读
闯关测验
完成 5 道题目,需要 全部答对 才能通关下一章节
如果这节课对你有帮助,欢迎支持作者继续创作 ☕
感谢作者 · Buy Me a Coffee