AMM 自动做市商原理:x*y=k 的数学之美

DeFi 与链上生态
更新于2026-11-09
2,763

AMM(Automated Market Maker,自动做市商)是一种不依赖传统订单簿的链上交易机制,用户直接与流动性池进行代币兑换。最经典的 AMM 模型就是 x*y=k 恒定乘积公式,它通过池中两种资产的数量变化自动调整价格,让买卖双方不需要彼此匹配也能完成交易。

一、AMM 到底是什么?

传统中心化交易所通常采用订单簿模式。

例如 ETH 当前市场价格为 3,000 USDT,用户想买入 ETH,需要市场中存在愿意以相应价格卖出 ETH 的订单。交易所撮合系统负责寻找买卖双方,并完成订单匹配。

AMM 的逻辑完全不同。

它不会要求用户先找到一个对应的卖家,而是把两种资产存入一个流动性池(Liquidity Pool)。用户交易时,实际上是在和这个池子进行交换。

例如一个 ETH/USDC 流动性池里同时存在 ETH 和 USDC:

ETH + USDC → Liquidity Pool → Trader Swap

用户用 USDC 买 ETH,池中的 USDC 增加、ETH 减少;用户卖 ETH,则相反。

价格并不是由某个交易员手动设置,而是根据池子的资产数量和 AMM 公式自动变化。

这就是自动做市商的核心。

而 Uniswap 正是 AMM 最具代表性的应用之一。如果想进一步了解 AMM 最重要的实际应用,可以继续阅读 Uniswap 深度解析:DEX 王者的进化之路。

二、x*y=k 是什么意思?

理解经典 AMM,最重要的公式就是:

x × y = k

其中:

  • x = 流动性池中 Token A 的数量

  • y = 流动性池中 Token B 的数量

  • k = 恒定乘积

例如,一个 ETH/USDC 池中有:

  • 10 ETH

  • 30,000 USDC

那么:

10 × 30,000 = 300,000

因此:

k = 300,000

当用户买入 ETH 后,池中的 ETH 数量减少,而 USDC 数量增加。交易完成后,两种资产的新数量需要满足相应的恒定乘积关系。

这就是 AMM 自动调整价格的基础。

需要注意的是,实际交易还会涉及手续费,因此严格的链上计算并不是简单地把输入数量直接代入 x*y=k。经典 Uniswap v2 模型会先考虑交易手续费,再计算用户能够得到多少 Token。

amm pricing curve

三、AMM 是怎么通过数学公式自动定价的?

AMM 最有意思的地方就在这里:

它不需要有人告诉池子“ETH 现在应该卖多少钱”,池子的资产比例本身就会形成价格。

继续使用前面的例子。

池子里:

10 ETH + 30,000 USDC

那么交易前的简单池内价格可以理解为:

30,000 ÷ 10 = 3,000 USDC/ETH

假设有人使用 USDC 买 ETH,池中的 ETH 数量下降。

如果交易后池中只剩下 9 ETH,那么为了维持:

x × y = 300,000

USDC 数量就需要达到:

300,000 ÷ 9 ≈ 33,333 USDC

也就是说,随着 ETH 被买走,池中 ETH 越来越少,而 USDC 越来越多,ETH 的池内价格就会不断升高。

反过来,如果大量用户卖 ETH,池中的 ETH 增多、USDC 减少,ETH 的池内价格则会下降。

因此可以把 AMM 的价格变化简单理解为:

买得越多 → Token 在池中越稀缺 → 池内价格上升

卖得越多 → Token 在池中越充足 → 池内价格下降

这也是 AMM 与固定价格兑换最大的区别。

四、用一个实际例子看懂 x*y=k

假设有一个完全由两种资产组成的模拟池:

  • 10 ETH

  • 30,000 USDC

  • k = 300,000

现在用户想使用 3,000 USDC 买 ETH。

为了便于理解,先忽略手续费。

交易之后,池中的 USDC 变成:

30,000 + 3,000 = 33,000 USDC

根据:

x × 33,000 = 300,000

得到:

x ≈ 9.09 ETH

原来池里有 10 ETH,因此用户大约得到:

10 - 9.09 = 0.91 ETH

用户支付 3,000 USDC,得到约 0.91 ETH。

因此这笔交易的平均成交价格约为:

3,000 ÷ 0.91 ≈ 3,297 USDC/ETH

注意,交易开始前池内价格是 3,000 USDC/ETH,但用户实际平均成交价格已经达到约 3,297 USDC/ETH。

这就是 AMM 中非常重要的概念:

交易本身会改变池子的价格。

而且交易规模越大,相对于池子流动性越大,价格影响通常越明显。Uniswap 官方也明确将这种由交易规模相对于流动性深度造成的变化定义为 Price Impact。

以上计算为便于理解的假设示例,不代表任何实际市场报价。

五、为什么流动性越深,大额交易通常越容易成交?

把 AMM 想象成一个水池。

一个小水池里只有 10 ETH 和 30,000 USDC,如果有人突然拿 10,000 USDC 去买 ETH,对池子的影响会非常明显。

但如果另一个池子里有:

1,000 ETH + 3,000,000 USDC

同样交易 10,000 USDC,占整个池子的比例就非常小,价格受到的影响通常也会小很多。

所以 AMM 中存在一个非常重要的关系:

流动性越深 → 相同交易规模造成的价格影响通常越小

流动性越浅 → 相同交易规模造成的价格影响通常越大

这也是为什么专业交易者不会只看某个 Token 的“当前价格”,还会关注对应交易池的流动性深度。

六、AMM 中的价格为什么会不断变化?

因为每一笔交易都会改变池子的资产比例。

假设:

10 ETH + 30,000 USDC

有人买走 ETH 后:

ETH ↓

USDC ↑

池子的 ETH/USDC 比例发生变化,新的价格也随之产生。

如果连续很多用户都买 ETH:

ETH ↓↓↓

USDC ↑↑↑

那么 ETH 的池内价格就会持续上涨。

反过来,如果大量用户卖 ETH:

ETH ↑↑↑

USDC ↓↓↓

ETH 的池内价格就会持续下降。

因此 AMM 并不存在一个永远固定的价格。

更准确地说:

价格是池子状态的实时结果。

这也是 AMM 与传统固定报价系统之间的重要区别。

七、为什么 AMM 的价格可以和外部市场不一样?

这是很多新手第一次接触 AMM 时容易产生的疑问。

假设某个 Token 在外部市场的价格是 100 USDT,但某个 AMM 池因为交易行为变化,池内隐含价格暂时变成了 103 USDT。

这种价格差异通常不会一直保持。

如果套利者发现:

DEX:103 USDT

其他市场:100 USDT

就可能在价格较低的市场买入,再在价格较高的市场卖出。

大量套利交易会改变 AMM 池中的资产比例,使池内价格逐渐向其他市场价格靠拢。

因此:

套利交易并不是 AMM 的异常现象,而是链上市场价格发现机制的重要组成部分。

当然,实际套利是否值得执行,还要考虑 Gas、交易手续费、滑点以及交易规模等成本。

八、AMM 的手续费从哪里来?

AMM 不仅需要解决“怎么交易”,还需要解决一个问题:

为什么有人愿意把自己的资产放进流动性池?

答案之一就是交易手续费。

流动性提供者,也就是 LP(Liquidity Provider),向池子提供资产,让其他用户可以进行交易。

每当交易发生,协议会按照对应池子的规则收取 Swap Fee,其中一部分或全部按照规则归属于活跃流动性提供者。不同 Uniswap 版本和具体池子的费率机制并不完全相同。

以经典 Uniswap v2 为例,其池子的基础 Swap Fee 为 0.30%。当前协议费用机制已经发生变化,因此不能简单地把“0.30% 全部都是 LP 收入”当作今天所有 v2 池的实际分配方式。

因此,理解 AMM 收益时应该区分:

交易者支付手续费

↓

协议按照规则处理手续费

↓

符合条件的 LP 获得相应部分

手续费收入越高,并不意味着 LP 就一定盈利,因为 LP 同时承担价格波动等风险。

九、为什么提供流动性可能产生无常损失?

这是 AMM 中最容易被忽略的问题之一。

假设你向 ETH/USDC 池提供:

1 ETH + 3,000 USDC

此时 ETH = 3,000 USDC。

如果之后 ETH 大幅上涨,AMM 会通过交易自动调整池内 ETH 和 USDC 的比例。

当 ETH 价格不断上涨时,套利者会持续买走池中的 ETH。

最终,你在池子里的资产可能变成:

更少的 ETH + 更多的 USDC

也就是说,你提供流动性之后,资产组合会随着市场价格变化自动发生调整。

如果此时把资产取出,再与“单纯持有原始 ETH + USDC”的结果进行比较,就可能出现价值差异。

这就是无常损失(Impermanent Loss)。

因此:

LP 收到手续费 ≠ 一定获得净收益。

最终结果需要同时考虑:

手续费收入 + Token 价格变化 + 无常损失 + Gas 等成本

这也是 AMM 与单纯持有资产最大的区别之一。

十、为什么 Uniswap v3 不再是简单的“整个池子都用 x*y=k”?

很多文章会把 AMM 简化成:

x*y=k

这个理解对于学习经典 AMM 非常重要,但如果把它直接套到今天所有 AMM 上,就不够准确。

Uniswap v2 采用的是经典的恒定乘积模型,而 Uniswap v3 引入了集中流动性(Concentrated Liquidity)。

简单来说:

v2:

流动性分布在整个价格范围

v3:

LP 可以把流动性集中到自己选择的价格区间

例如,LP 可以选择一个特定价格范围,在这个范围内提供更密集的流动性。

这样做的好处是提高资本效率,让相同规模的资金能够在有效价格范围内提供更深的流动性。

但代价也很明显:

LP 需要管理价格区间。

如果市场价格离开 LP 设置的区间,该部分流动性可能不再处于活跃交易范围,因此也不会继续按照正常方式产生交易手续费,直到价格重新进入相应范围。

所以,现代 AMM 已经从简单的“把两种 Token 放进池子”发展成更加复杂的流动性管理系统。

十一、AMM 为什么不仅仅是一条公式?

x*y=k 很重要,但它只是理解经典 AMM 的入口。

一个完整的 AMM 实际上至少包含:

Liquidity Pool

决定市场中有多少可交易资产。

Pricing Formula

决定资产如何根据池子状态进行定价。

Swap Fee

决定交易者支付多少手续费,以及 LP 如何获得收入。

Liquidity Provider

为交易提供流动性。

Arbitrage

帮助不同市场之间的价格重新趋于一致。

Smart Contract

负责按照预设规则执行交易。

因此,一次简单的 AMM 交易实际上经历的是:

用户提交 Swap

↓

智能合约读取 Pool 状态

↓

根据定价机制计算输出数量

↓

扣除相应费用

↓

更新池中资产比例

↓

形成新的池内价格

这套机制完全可以在链上自动执行,不需要传统交易所人工撮合。

十二、AMM 与订单簿模式有什么区别?

文档内嵌表格

两种模式并不存在绝对的“谁更先进”。

AMM 的优势是机制开放、自动化程度高,并且能够让用户直接与链上流动性进行交互;订单簿则能够提供更精细的价格和订单管理方式。

不同资产、不同市场环境下,两种机制都有自己的适用场景。

amm constant product curve

十三、新手理解 AMM 最容易犯的 5 个错误

1. 认为 x*y=k 就代表价格永远不变

实际上恰恰相反。

k 是恒定乘积,而 Token 的价格会随着 x、y 的比例变化而变化。

2. 认为池子里的价格就是整个市场的真实价格

AMM 只是一个市场。

不同 DEX、不同池子以及中心化交易平台之间都可能出现价格差异。

3. 认为流动性越多就一定没有风险

流动性深可以降低某些交易的价格影响,但并不能消除智能合约、价格波动、无常损失等风险。

4. 认为 LP 收手续费就一定赚钱

LP 的最终结果需要同时考虑手续费收入和资产价格变化。

5. 认为所有 AMM 都使用完全相同的 x*y=k

经典 Uniswap v2 使用恒定乘积模型,但现代 AMM 已经发展出集中流动性、稳定币曲线、加权池等不同设计。

十四、普通用户如何判断一个 AMM 池是否值得交易?

如果只是进行 Token Swap,可以先检查以下几个指标:

第一,看流动性。

池子越浅,大额交易产生明显价格影响的可能性通常越高。

第二,看交易规模。

不要只看 Token 当前报价,还要看自己的交易金额占池子流动性的比例。

第三,看 Price Impact。

如果一笔普通金额的交易已经产生非常高的 Price Impact,需要谨慎判断池子深度是否足够。

第四,看手续费。

不同 AMM、不同池子可能存在不同的手续费结构。

第五,看 Token 本身。

流动性池并不会自动保证 Token 是安全或有价值的。用户仍然需要确认 Token 合约、项目来源以及交易限制。

第六,看最终交易条件。

交易提交前,需要确认预计获得数量、最低获得数量、Gas 和其他交易参数。

FAQ:AMM 常见问题

AMM 是什么意思?

AMM 是 Automated Market Maker 的缩写,即自动做市商。它通过智能合约和流动性池自动完成资产定价与交易,而不是依赖传统订单簿撮合。

x*y=k 为什么能用来交易?

因为当用户从池子中取出一种 Token 时,需要向池子加入另一种 Token,使池子的恒定乘积关系得到满足。随着两种 Token 数量发生变化,池内价格也会自动变化。

AMM 中的 k 是什么意思?

k 是恒定乘积模型中的不变量。在最基础的模型中,x 和 y 分别代表池中两种资产的数量,二者乘积形成 k。实际协议还需要结合手续费等规则进行计算。

为什么交易金额越大,滑点或价格影响可能越高?

因为交易本身会改变流动性池中的资产比例。当交易金额相对于池子深度较大时,对池内价格造成的影响通常也更明显。

提供 AMM 流动性一定能赚钱吗?

不一定。LP 虽然可以根据池子规则获得交易手续费,但同时需要承担资产价格变化、无常损失、智能合约以及流动性等风险。

Uniswap v3 还是 AMM 吗?

是。Uniswap v3 仍然属于 AMM,但相比经典 v2,它采用集中流动性机制,让 LP 可以选择具体价格范围,因此资金使用方式更加灵活,也更加复杂。

总结:x*y=k 是理解 AMM 的起点,而不是终点

AMM 最经典的数学表达式就是:

x × y = k

它用一个简单的数学关系解决了一个复杂的问题:

没有传统订单簿和人工撮合,链上用户如何完成资产交易?

答案就是:

流动性池 + 定价公式 + 智能合约 + LP

用户交易会改变池中的资产比例,资产比例变化又会改变价格;套利者进一步帮助不同市场之间的价格趋于一致;LP 则通过提供流动性获得相应的手续费收入。

从 Uniswap v2 的经典恒定乘积模型,到 v3 的集中流动性,再到更新的 AMM 架构,AMM 已经从最初的简单数学公式发展成复杂的链上交易基础设施。

所以,真正理解 AMM,不应该只记住一句 “x*y=k”。

更重要的是理解完整关系:

流动性 → 定价 → 交易 → 价格影响 → 手续费 → 套利 → LP 收益与风险

掌握这条逻辑,才能真正看懂 DEX 中一笔交易为什么会产生这样的价格,也才能进一步理解 Uniswap 等主流 DEX 的运行机制。

风险提示: AMM 和 DeFi 相关操作可能涉及加密资产价格波动、流动性不足、智能合约漏洞、Token 合约风险、无常损失、交易执行偏差以及网络费用等风险。本文仅用于区块链技术和 DeFi 知识学习,不构成任何投资或交易建议。

以上计算为便于理解的假设示例,不代表任何实际市场报价。

目录

推荐阅读

查看更多
Web3 域名:ENS 和 .eth 的价值与使用
Web3 域名:ENS 和 .eth 的价值与使用
DeFi 与链上生态
Web3 钱包新范式:MPC 钱包与 AA 智能合约钱包
Web3 钱包新范式:MPC 钱包与 AA 智能合约钱包
DeFi 与链上生态
滑点与 MEV:DEX 交易的隐藏成本
滑点与 MEV:DEX 交易的隐藏成本
DeFi 与链上生态