自动做市商(AMM)详解:Uniswap、Curve与底层数学
了解自动做市商(AMM):恒定乘积公式(x × y = k)、价格冲击、Curve的Stableswap不变量,以及Uniswap v3的集中流动性机制。

本页内容
速读
自动做市商(AMM)用智能合约流动性池取代了传统订单簿。本文深入讲解恒定乘积数学公式(x × y = k)、资产价格如何根据池内比例动态调整、大额交易为何会产生价格冲击、Curve如何优化稳定币兑换,以及Uniswap v3的集中流动性如何提升资本效率。
需要记住的要点
- AMM使用算法化的流动性池,而不是让买卖双方在订单簿上撮合订单。
- 恒定乘积公式(x × y = k)维持着资金池的平衡:买入代币X会减少其供应量,并推高它相对于代币Y的价格。
- 价格冲击会随着交易规模相对于资金池深度的增大而非线性上升。
- Curve的Stableswap不变量将恒定乘积曲线与恒定总和曲线相结合,为锚定稳定币交易对最大限度地降低滑点。
- Uniswap v3的集中流动性允许LP(流动性提供者)锁定特定价格区间,从而大幅提升资本效率。
传统金融市场和中心化加密货币交易所都依赖订单簿:买方挂出买单(bid),卖方挂出卖单(ask)。但在早期的去中心化区块链上撮合订单簿的成本过高、速度过慢。
突破性的解决方案是自动做市商(Automated Market Maker,AMM)——一种由Uniswap率先推出的智能合约架构,让任何人都能直接对着流动性池即时兑换代币。
1. 恒定乘积资金池详解
经典AMM(如Uniswap v2和SushiSwap)的核心是一个简单的数学等式:
x × y = k
- x = 流动性池中代币A的数量(例如ETH)。
- y = 流动性池中代币B的数量(例如USDC)。
- k = 每笔交易后都必须保持不变的常数(不变量),LP手续费除外。
恒定乘积定价曲线与价格冲击模拟器
拖动滑块,模拟从流动性池中换出ETH,实时观察曲线斜率(现货价格)变陡的过程。
如何解读恒定乘积曲线
如**图1**所示,要理解交易如何影响市场价格,可以观察资金池如何沿着上方曲线在不同状态间转换:
-
状态1(初始资金池余额):
- 资金池起始时持有10 ETH(储备量x)和30,000 USDC(储备量y)。
- 不变量:k = 10 × 30,000 = 300,000。
- 隐含初始价格:每ETH合3,000 USDC(30,000 / 10)。
-
交易者操作(买入1 ETH):
- 一名交易者想从资金池中取出1 ETH。
- 取出后,资金池将持有9 ETH。为维持k = 300,000不变,资金池需要300,000 / 9 = 33,333 USDC。
- 交易者存入33,333 - 30,000 = 3,333 USDC以完成交易(平均价格为3,333 USDC/ETH)。
-
状态2(交易后资金池余额):
- 资金池沿双曲线移动到状态2(9 ETH,33,333 USDC)。
- 由于USDC相对ETH的比例上升,新的现货价格升至每ETH合3,703.70 USDC(33,333 / 9)。
- 曲线斜率变得更陡,意味着下一位买入ETH的交易者将面临更高的价格冲击。
价格如何由资金池比例决定
AMM并不会向外部股票或加密货币交易所查询价格数据。代币A相对代币B的现货价格,完全由资金池内储备量的比例决定:
- 定价公式: 代币A的价格 = 代币B储备量(y)/ 代币A储备量(x)
由于每一笔兑换都会改变这一储备比例,大额交易会自动推高后续买家面对的现货价格——这一基本市场机制被称为价格冲击。
2. 交易规模、价格冲击与滑点
由于恒定乘积曲线呈双曲线形状,你的交易规模相对资金池总流动性越大,成交价格就越差。
你可以直接拖动上方**图1中的交互式滑块,在初始的300,000美元资金池中模拟不同的交易规模(如0.5 ETH、1.0 ETH或2.0 ETH)。如下方图2**用相同场景参数所展示的那样,随着订单规模相对资金池深度增大,价格冲击的惩罚会呈非线性方式加剧:
300,000美元流动性池中的交易规模与价格冲击
注意,由于恒定乘积曲线呈双曲线形状,把交易规模从1 ETH翻倍到2 ETH,价格冲击惩罚增加的幅度会超过一倍。
- 滑点(Slippage): 从你提交交易到网络区块验证者确认交易之间,价格发生的变动。
- 价格冲击(Price Impact): 你的订单改变资金池资产比例所直接导致的价格变动。
3. Curve Finance与Stableswap不变量
恒定乘积AMM对波动性资产(如ETH/USDC)效果很好,但如果对本该以1:1比例交易的资产(如USDC/USDT或WBTC/BTC)使用x × y = k,则会造成不必要的滑点。
Curve Finance推出了Stableswap不变量,它结合了两条定价曲线:
- 恒定总和(x + y = C): 滑点为零,但如果其中一种代币价值下跌,资金池就有耗尽的风险。
- 恒定乘积(x × y = k): 流动性无限,但在接近平价时滑点较高。
通过将两条曲线相结合,Curve在1:1比例附近打造出一段极为平坦的定价区间,使交易者能够在稳定币之间兑换数百万美元,而价格冲击几乎为零。
4. Uniswap v3与集中流动性
在经典的v2 AMM中,流动性沿整条价格曲线从0到无穷大均匀分布。但实际上,大部分资金都处于闲置状态,因为像ETH/USDC这样的资产,大多数时间都是在某个特定价格区间内交易(例如2,500美元到3,500美元)。
Uniswap v3引入了集中流动性:
- 流动性提供者(LP)可以为自己的资金指定一个自定义价格区间(最低价至最高价)。
- 资本效率: 与v2相比,LP最多能以只需1/4,000的资金赚取相同的交易手续费。
- 区间风险: 如果市场价格移出LP自定义的区间,其头寸将100%转换为价格下跌的那一种资产,并停止赚取手续费,直到价格重新回到区间内。
如**图3所示,Uniswap v3资金池不再像v2那样把资金从0摊薄到∞,而是将流动性堆叠在离散、分级的价格刻度(tick)**上。活跃的LP头寸会大量聚集在当前现货价格(3,000美元)附近,并向周边价格边界(2,500美元至3,500美元)延展:
Uniswap v3集中流动性密度
观察v3流动性如何分配在离散分级的刻度柱状图上,在现货价格(3,000美元)附近达到峰值,并呈现出真实的LP密度变化。
AMM架构比较
| AMM模型 | 代表协议 | 主要用途 | 资本效率 |
|---|---|---|---|
| 恒定乘积(x × y = k) | Uniswap v2、SushiSwap | 一般波动性代币交易对 | 标准水平(流动性分布于0至∞) |
| Stableswap不变量 | Curve Finance | 锚定资产(USDC/USDT、ETH/stETH) | 接近1:1平价时极高 |
| 集中流动性 | Uniswap v3、Aerodrome | LP自定义价格区间 | 超高(资本效率最高达v2的4,000倍) |
| 链上订单簿 | Hyperliquid、dYdX | 永续合约与主动交易 | 较高(限价单撮合) |
流动性提供者(LP)如何赚取手续费
LP将代币存入AMM资金池。每当交易者执行一笔兑换,系统就会扣除一笔协议手续费(稳定币通常为0.01%,冷门/高波动代币交易对可高达**1.00%**甚至更高),并按比例分配给活跃的LP。
无常损失与永久损失的隐藏陷阱
LP表现不佳的主要原因是:
- IL为何发生: 当一种资产的市场价格相对另一种大幅上涨或下跌时,AMM算法会自动卖出升值的资产、买入贬值的资产,以重新平衡资金池。
- IL何时变为永久性: 如果价格比例出现显著分化,且LP撤出流动性,这笔“无常”损失就会被永久锁定。
- 手续费与价格分化的对比: 在趋势性或高波动市场中,无常损失往往会超过累积的交易手续费收入,使LP原本预期的盈利变成净亏损。
结语:AMM交易者的关键要点
自动做市商彻底改变了去中心化金融:无需中心化订单簿,就能实现即时、无许可、全天候的流动性。然而,要在AMM上高效交易,就必须理解资金池机制如何直接影响成交成本:
- 检查流动性与价格冲击: 在浅池或高波动资金池上确认兑换前,务必先查看显示的价格冲击。
- 选择合适的AMM模型: 一般山寨币交易对使用恒定乘积($x \times y = k$),1:1锚定资产使用StableSwap,需要针对性提升资本效率则使用集中流动性。
- 防范MEV: 设置较紧的滑点容忍度(例如0.1%至0.5%),并在执行大额交易时考虑使用私有交易RPC,以避免三明治攻击。
- 评估LP风险: 请记住,提供流动性伴随着不可忽视的无常损失风险——累积的兑换手续费并不能保证整体盈利。
常见问题
AMM的价格完全来自资金池内部的代币比例。如果AMM价格偏离了外部中心化交易所(CEX)的价格,套利交易者就会介入——在价格较低的一方买入、在价格较高的一方卖出,直到两边价格重新一致。
价格冲击是你自己的交易规模改变资金池资产比例(y/x)所直接、确定性导致的价格变动。滑点则是在你广播交易到区块验证者确认交易之间,由其他市场参与者或区块构建者在内存池(mempool)中执行交易所引起的价格变化。
在恒定乘积公式(x × y = k)下,资金池理论上永远不会被彻底耗尽。随着某种代币在池中的供应量趋近于零,其价格会趋近于无穷大,对下一位买家来说,价格会呈指数级攀升。
集中流动性能带来更高的手续费收益潜力,但需要主动管理。如果市场价格突破你选定的区间,你的头寸就会停止赚取手续费,并承受相对更高的无常损失。
MEV搜索者会监控公开内存池中滑点容忍度较宽的待处理兑换交易。三明治机器人会先抢跑你的订单——先行买入该资产以推高池内价格,让你的订单在你设置的最大滑点限额处成交,然后尾随交易(back-run)以获取无风险利润。
会。攻击者可以在单个交易区块内,通过闪电贷借入数百万美元的无抵押资金,暂时扭曲某个AMM资金池的比例,人为抬高或压低价格,从而利用存在漏洞的DeFi借贷或合成资产协议牟利。协议通常使用TWAP(时间加权平均价格)预言机或Chainlink价格数据源来防范这类攻击。
恒定乘积(x × y = k)会给本该以1:1比例交易的资产(如USDC/USDT)带来不必要的价格冲击。Curve的StableSwap不变量将恒定总和(x + y = C)与恒定乘积相结合,在接近平价处打造出一段极为平坦的定价区间,使大额稳定币兑换的滑点降到最低。
来源与延伸阅读
自动做市商模型的主要白皮书,以及上文流动性提供者回报数据所依据的研究:
- Uniswap v2 Core Whitepaper — Constant Product Invariant
- Curve Finance Whitepaper — StableSwap Invariant
- Uniswap v3 Technical Whitepaper — Concentrated Liquidity
- Loesch, Hindman, Welch and Richardson — Impermanent Loss in Uniswap v3
本文仅供教育参考,不构成交易建议。流动性池手续费、滑点限制与无常损失风险因资产对和市场状况而异。
相关币种
继续学习
根据本课推荐的后续阅读。





