;)
去中心化交易所深度解析
前言
DEX(Decentralized Exchange,去中心化交易所)是 DeFi 最底层的流动性基础设施。没有 DEX,就没有 DeFi —— 这句话一点都不夸张。截至 2026 年 5 月,DEX 月交易量在 800-1500 亿美元之间波动,占现货总交易量的约 20%。
这篇文章聚焦 Uniswap,因为它代表了 AMM(自动做市商)模式最完整的演进路径 —— 从 2018 年的 v1 到 2025 年的 v4,每一代都解决了一个关键问题。读完你能理解的不只是 Uniswap,而是整个 AMM 类 DEX 的设计哲学。
一、为什么需要 DEX?
1.1 订单簿 vs AMM
传统交易所(币安、Coinbase)用的是订单簿模型:买方和卖方分别挂单,系统撮合成交。这个模型在链上跑有两个致命问题:
- Gas 成本高:每次挂单、撤单都要支付 Gas,做市商频繁操作成本巨大
- 流动性分散:每个交易对都需要独立的订单簿,做市商不可能覆盖所有交易对
AMM 的解法非常优雅:用一个数学公式替代订单簿。

AMM 不依赖做市商,而是让任何人(流动性提供者,LP)把一对代币存入池子,池子根据内部代币比例自动算出价格。交易者直接和池子交互,手续费分给 LP。
1.2 核心优势
| 维度 | 订单簿 DEX | AMM DEX |
|---|---|---|
| 做市门槛 | 高(需专业做市算法) | 极低(存钱即可) |
| Gas 效率 | 差(每次挂单上链) | 好(只有 swap 上链) |
| 长尾资产覆盖 | 差(无人做市) | 好(有人存钱就有流动性) |
| 价格精度 | 高(tick 粒度) | 中(取决于池子深度) |
二、AMM 数学基础
2.1 恒定乘积公式
Uniswap 的灵魂是一个极其简单的公式:
$$
x \times y = k
$$
其中 $x$ 是池子中代币 A 的数量,$y$ 是代币 B 的数量,$k$ 是常数。
价格怎么来的?
池中代币 A 的价格(以 B 计价)= $y / x$。如果有人买入 A(用 B 支付),$x$ 减少、$y$ 增加,$x \times y$ 保持不变,价格自动上涨。
数值例子:
1 | 初始状态: 池中有 100 ETH + 200,000 USDC |
实际获得比理论价格少(2,020 vs 2,000),这个差价就是滑点。
2.2 费用与滑点
Uniswap 对每笔交易收取费用(默认 0.3%),费用留在池子里,等价于 $k$ 值变大了——LP 的资产自动增值。
考虑费用的输出公式(Uniswap v2 实现):
1 | // amountOut = (amountIn * 997 * reserveOut) / (reserveIn * 1000 + amountIn * 997) |
997/1000 = 扣除 0.3% 费用后的比例。这个数字在 v3 后变成了可配置的(1%、0.3%、0.05%、0.01%)。
2.3 无常损失(Impermanent Loss)
无常损失是 AMM LP 最大的风险来源——甚至比合约被黑的风险更值得关注。它的本质是:当你的两种资产价格之比发生变动时,你在池子里的资产价值不如你单纯持有的资产价值。
$$
\text{IL} = \frac{2\sqrt{r}}{1+r} - 1
$$
其中 $r$ = 新价格 / 旧价格。
| 价格变化倍数 (r) | 无常损失 |
|---|---|
| 1.0 | 0% |
| 1.25 | -0.6% |
| 1.5 | -2.0% |
| 2.0 | -5.7% |
| 3.0 | -13.4% |
| 5.0 | -25.5% |
| 10.0 | -42.5% |
几个关键认知:
- 损失是对称的:涨 5 倍和跌 80% 的无常损失是一样的(都是 r=5 或 r=0.2)
- 手续费能对冲:只要你的手续费收入 > 无常损失,LP 就是赚钱的
- 稳定币对几乎零无常损失:USDC/DAI 的 r 接近 1,所以 Curve 上这类池子最受欢迎
[!note] 为什么叫”无常”而不是”永久”?
因为只要你不撤出流动性、价格回到你入场的水平,这笔损失会消失(0%)。但如果你在价格偏离时撤了流动性,损失就变成永久的了。
三、Uniswap 版本演进

官网: uniswap.org | GitHub: Uniswap/v4-core
3.1 v1 (2018) — 概念验证
v1 很简单:只支持 ERC20 ↔ ETH 交易,所有 ERC20 交易必须经过 ETH 中转。
1 | 代币A → ETH → 代币B |
- 恒定乘积公式 $x \times y = k$
- 固定 0.3% 费率
- 没有预言机
- 需要 WETH 中转
v1 证明了一件事:AMM 这条路走得通。
3.2 v2 (2020) — 成为基础设施
v2 引入了三个关键升级,这些升级直接铺平了 DeFi summer 的道路:
① 任意 ERC20/ERC20 交易对
不再强制经过 ETH。任何两个 ERC20 代币都可以直接建池。
② 价格预言机(TWAP)
v2 在每次 swap 时累积价格,让外部合约可以查询时间加权平均价格(TWAP):
1 | // v2 的核心累积逻辑(简化) |
为什么需要 TWAP?因为瞬时价格可以被大额交易瞬时操纵。如果你想通过操纵预言机价格来触发清算——在订单簿交易所很容易做到。但 TWAP 要求你维持操纵价格至少一个时间窗口(通常 30 分钟),成本指数级上升。
③ 闪电交换(Flash Swap)
允许你在同一笔交易内先拿到代币,用完再还。这为闪电贷提供了基础设施。
3.3 v3 (2021) — 集中流动性
如果说 v2 是 AMV(自动小巴),v3 就是 F1 赛车。核心创新:集中流动性(Concentrated Liquidity)。
之前的问题:
v2 的流动性均匀分布在 $0 \to \infty$ 的全价格区间,但大部分交易集中在当前价格附近。也就是说,v2 池子里 90% 的流动性是闲置的。
v3 的解法:
LP 可以指定一个价格区间(如 1900-2100 USDC/ETH),只在这个区间内提供流动性。价格跑出区间后,你的流动性自动”休眠”。

这意味着什么?资本效率可以提升最高 4000 倍。 同样的资金量,v3 提供的手续费收入可以比 v2 高出几个数量级——前提是你选对了价格区间。
v3 的核心数据结构:
1 | // 流动性头寸由 NFT 代表(不是 ERC20) |
v3 的费用等级也变多了(0.01%、0.05%、0.30%、1.00%)。逻辑是:波动越大的交易对,无常损失风险越高,费率应该越贵——让 LP 在更多风险中获得更多补偿。
我个人的经验:v3 做 LP 需要比 v2 更主动管理价格区间。如果没时间盯盘,不如把钱放 v2 或 Curve 上省心。
3.4 v4 (2025) — 可编程流动性
v4 做了一件在 DEX 历史上具有”范式转换”意义的事:引入了 Hook 系统。
Hook 是什么?
Hook 是在流动性池的关键生命周期节点注入的自定义逻辑:
1 | interface IHooks { |
这意味着池子的行为可以被完全定制。举几个例子:
- TWAP 订单:在
beforeSwap里检查是否满足时间加权价格条件 - 动态费率:在
beforeSwap里根据当前波动率调整费率 - MEV 保护:在
afterSwap里检测是否有三明治攻击 - 限价订单:在
beforeSwap里检查价格,不满足则回滚
v4 另一个重要升级:单例合约(Singleton)
v2/v3 里每个交易对是一个独立的合约。这导致跨池交易(如 ETH → USDC → DAI → LINK)要经过多个合约调用,Gas 成本高。v4 把所有池子放在一个合约里管理,路由在一笔交易内完成,Gas 大幅降低。
| 特性 | v2 | v3 | v4 |
|---|---|---|---|
| 池子模式 | 独立合约 | 独立合约 | 单例合约 |
| 流动性分布 | 全区间 | 集中区间 | 集中区间 + Hook 定制 |
| 费率 | 固定 0.3% | 4 档可选 | 动态可编程 |
| 可扩展性 | 无 | 有限 | Hook 系统 |
| 原生 ETH | 不支持 | 不支持 | 支持 |
| Gas | 中等 | 较高 | 低(单例路由) |
四、AMM 的设计取舍
4.1 滑点 vs 资本效率
| 策略 | 滑点 | 资本效率 | 无常损失风险 |
|---|---|---|---|
| 全区间 (v2) | 高 | 低 | 中 |
| 窄区间 (v3) | 低 | 极高 | 高 |
| 稳定币池 (Curve) | 极低 | 中 | 极低 |
这本质上是不可能三角:滑点、资本效率、无常损失——三条里你只能选两条。
4.2 v3 LP 策略建议
给想做 v3 LP 的人几个经验之谈:
- 窄区间不是越窄越好:区间太窄意味着价格频繁跑出区间,你的流动性会反复”休眠”,每次调整都要花 Gas
- 稳定币对用宽区间:USDC/DAI 价格几乎不变,把区间设宽一点(如 ±10%),省去频繁调整
- 波动大的资产用更宽的区间 + 更高费率层级:比如 ETH/MEME 币对,选 1.00% 费率 + 较宽区间
- 关注费用复投:v3 的费用不会自动复投,不手动领取和再存入等于浪费复利
4.3 除了 Uniswap 还值得关注的 DEX
- Curve:稳定币互换王者,StableSwap 算法在同类资产交易中滑点远低于恒定乘积。veCRV 代币经济模型也值得单写一篇
- PancakeSwap:BSC 上的 Uniswap v2 分叉 + 改进,低 Gas 环境下的小额 swap 体验不错
- Trader Joe:Avalanche 上最有创新性的 DEX,Liquidity Book 模型是集中流动性的另一种形态
- CoWSwap / UniswapX:意图架构(intent-based),把路由和 MEV 保护放到链下求解器,用户只需签名意图
五、安全考量
5.1 三明治攻击(Sandwich Attack)
AMM 最经典的 MEV 攻击。攻击者在你的交易前后插入两笔交易:
1 | 1. 攻击者先买(推高价格) |
防御手段:设置滑点容忍度(slippage tolerance),通常设为 0.1%-0.5%。你的容忍度越低,攻击者能赚的就越少。
5.2 价格预言机操纵
如果协议使用 Uniswap v2 的瞬时价格做清算判断,攻击者可以通过一笔大额 swap 暂时扭曲价格,触发本不该发生的清算。
正确做法:使用 TWAP(至少 30 分钟窗口),配合 Chainlink 等多数据源交叉验证。
5.3 无常损失 = 真实损失
无常损失不是”纸面亏损”——如果你在价格偏离时撤出,它就是永久损失。v3 的 LP 尤其要注意:价格一旦跑出你的区间,你的头寸就变成了单边持仓(100% 是你更不值钱的那个代币)。
📚 参考资料
- Uniswap v4 白皮书
- Uniswap v3 白皮书 - 集中流动性的数学推导
- Uniswap v2 Core 源码
- Uniswap 官方文档
- Uniswap 市场分析
- Flash Boys 2.0: DEX 中的抢先交易 - MEV 经典论文
- SoK: DEX 与 AMM 协议综述
- StableSwap 论文 - Curve 的稳定币互换算法
- 以太坊 DeFi 页面
- DEX 交易量仪表板
本文撰写于 2026 年 5 月。Uniswap v4 仍在持续迭代中,部分 Hook 用例可能随版本变化。







