AMM(Automated Market Maker,自动做市商)是一种不依赖传统订单簿的链上交易机制,用户直接与流动性池进行代币兑换。最经典的 AMM 模型就是 x*y=k 恒定乘积公式,它通过池中两种资产的数量变化自动调整价格,让买卖双方不需要彼此匹配也能完成交易。
传统中心化交易所通常采用订单簿模式。
例如 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 王者的进化之路。
理解经典 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 最有意思的地方就在这里:
它不需要有人告诉池子“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 与固定价格兑换最大的区别。
假设有一个完全由两种资产组成的模拟池:
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 的“当前价格”,还会关注对应交易池的流动性深度。
因为每一笔交易都会改变池子的资产比例。
假设:
10 ETH + 30,000 USDC
有人买走 ETH 后:
ETH ↓
USDC ↑
池子的 ETH/USDC 比例发生变化,新的价格也随之产生。
如果连续很多用户都买 ETH:
ETH ↓↓↓
USDC ↑↑↑
那么 ETH 的池内价格就会持续上涨。
反过来,如果大量用户卖 ETH:
ETH ↑↑↑
USDC ↓↓↓
ETH 的池内价格就会持续下降。
因此 AMM 并不存在一个永远固定的价格。
更准确地说:
价格是池子状态的实时结果。
这也是 AMM 与传统固定报价系统之间的重要区别。
这是很多新手第一次接触 AMM 时容易产生的疑问。
假设某个 Token 在外部市场的价格是 100 USDT,但某个 AMM 池因为交易行为变化,池内隐含价格暂时变成了 103 USDT。
这种价格差异通常不会一直保持。
如果套利者发现:
DEX:103 USDT
其他市场:100 USDT
就可能在价格较低的市场买入,再在价格较高的市场卖出。
大量套利交易会改变 AMM 池中的资产比例,使池内价格逐渐向其他市场价格靠拢。
因此:
套利交易并不是 AMM 的异常现象,而是链上市场价格发现机制的重要组成部分。
当然,实际套利是否值得执行,还要考虑 Gas、交易手续费、滑点以及交易规模等成本。
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 与单纯持有资产最大的区别之一。
很多文章会把 AMM 简化成:
x*y=k
这个理解对于学习经典 AMM 非常重要,但如果把它直接套到今天所有 AMM 上,就不够准确。
Uniswap v2 采用的是经典的恒定乘积模型,而 Uniswap v3 引入了集中流动性(Concentrated Liquidity)。
简单来说:
v2:
流动性分布在整个价格范围
v3:
LP 可以把流动性集中到自己选择的价格区间
例如,LP 可以选择一个特定价格范围,在这个范围内提供更密集的流动性。
这样做的好处是提高资本效率,让相同规模的资金能够在有效价格范围内提供更深的流动性。
但代价也很明显:
LP 需要管理价格区间。
如果市场价格离开 LP 设置的区间,该部分流动性可能不再处于活跃交易范围,因此也不会继续按照正常方式产生交易手续费,直到价格重新进入相应范围。
所以,现代 AMM 已经从简单的“把两种 Token 放进池子”发展成更加复杂的流动性管理系统。
x*y=k 很重要,但它只是理解经典 AMM 的入口。
一个完整的 AMM 实际上至少包含:
Liquidity Pool
决定市场中有多少可交易资产。
Pricing Formula
决定资产如何根据池子状态进行定价。
Swap Fee
决定交易者支付多少手续费,以及 LP 如何获得收入。
Liquidity Provider
为交易提供流动性。
Arbitrage
帮助不同市场之间的价格重新趋于一致。
Smart Contract
负责按照预设规则执行交易。
因此,一次简单的 AMM 交易实际上经历的是:
用户提交 Swap
↓
智能合约读取 Pool 状态
↓
根据定价机制计算输出数量
↓
扣除相应费用
↓
更新池中资产比例
↓
形成新的池内价格
这套机制完全可以在链上自动执行,不需要传统交易所人工撮合。

两种模式并不存在绝对的“谁更先进”。
AMM 的优势是机制开放、自动化程度高,并且能够让用户直接与链上流动性进行交互;订单簿则能够提供更精细的价格和订单管理方式。
不同资产、不同市场环境下,两种机制都有自己的适用场景。

实际上恰恰相反。
k 是恒定乘积,而 Token 的价格会随着 x、y 的比例变化而变化。
AMM 只是一个市场。
不同 DEX、不同池子以及中心化交易平台之间都可能出现价格差异。
流动性深可以降低某些交易的价格影响,但并不能消除智能合约、价格波动、无常损失等风险。
LP 的最终结果需要同时考虑手续费收入和资产价格变化。
经典 Uniswap v2 使用恒定乘积模型,但现代 AMM 已经发展出集中流动性、稳定币曲线、加权池等不同设计。
如果只是进行 Token Swap,可以先检查以下几个指标:
第一,看流动性。
池子越浅,大额交易产生明显价格影响的可能性通常越高。
第二,看交易规模。
不要只看 Token 当前报价,还要看自己的交易金额占池子流动性的比例。
第三,看 Price Impact。
如果一笔普通金额的交易已经产生非常高的 Price Impact,需要谨慎判断池子深度是否足够。
第四,看手续费。
不同 AMM、不同池子可能存在不同的手续费结构。
第五,看 Token 本身。
流动性池并不会自动保证 Token 是安全或有价值的。用户仍然需要确认 Token 合约、项目来源以及交易限制。
第六,看最终交易条件。
交易提交前,需要确认预计获得数量、最低获得数量、Gas 和其他交易参数。
AMM 是 Automated Market Maker 的缩写,即自动做市商。它通过智能合约和流动性池自动完成资产定价与交易,而不是依赖传统订单簿撮合。
因为当用户从池子中取出一种 Token 时,需要向池子加入另一种 Token,使池子的恒定乘积关系得到满足。随着两种 Token 数量发生变化,池内价格也会自动变化。
k 是恒定乘积模型中的不变量。在最基础的模型中,x 和 y 分别代表池中两种资产的数量,二者乘积形成 k。实际协议还需要结合手续费等规则进行计算。
因为交易本身会改变流动性池中的资产比例。当交易金额相对于池子深度较大时,对池内价格造成的影响通常也更明显。
不一定。LP 虽然可以根据池子规则获得交易手续费,但同时需要承担资产价格变化、无常损失、智能合约以及流动性等风险。
是。Uniswap v3 仍然属于 AMM,但相比经典 v2,它采用集中流动性机制,让 LP 可以选择具体价格范围,因此资金使用方式更加灵活,也更加复杂。
AMM 最经典的数学表达式就是:
x × y = k
它用一个简单的数学关系解决了一个复杂的问题:
没有传统订单簿和人工撮合,链上用户如何完成资产交易?
答案就是:
流动性池 + 定价公式 + 智能合约 + LP
用户交易会改变池中的资产比例,资产比例变化又会改变价格;套利者进一步帮助不同市场之间的价格趋于一致;LP 则通过提供流动性获得相应的手续费收入。
从 Uniswap v2 的经典恒定乘积模型,到 v3 的集中流动性,再到更新的 AMM 架构,AMM 已经从最初的简单数学公式发展成复杂的链上交易基础设施。
所以,真正理解 AMM,不应该只记住一句 “x*y=k”。
更重要的是理解完整关系:
流动性 → 定价 → 交易 → 价格影响 → 手续费 → 套利 → LP 收益与风险
掌握这条逻辑,才能真正看懂 DEX 中一笔交易为什么会产生这样的价格,也才能进一步理解 Uniswap 等主流 DEX 的运行机制。
风险提示: AMM 和 DeFi 相关操作可能涉及加密资产价格波动、流动性不足、智能合约漏洞、Token 合约风险、无常损失、交易执行偏差以及网络费用等风险。本文仅用于区块链技术和 DeFi 知识学习,不构成任何投资或交易建议。
以上计算为便于理解的假设示例,不代表任何实际市场报价。