第一章:AMM 起源与核心思想

从订单簿到自动做市商

说实话,我第一次接触去中心化交易所时,第一反应是:这不就是把币安搬上链吗?

后来我发现,我错了。而且错得离谱。

传统交易所用的是订单簿模型。你想买,我正好想卖,咱们撮合一下,成交。这个模式在中心化交易所跑了十几年,很成熟。但把它搬到区块链上,问题就来了——

你想想看,以太坊每笔交易都要等矿工打包,区块间隔十几秒。如果我用订单簿,挂单、撤单、吃单,每一步都要等确认。这体验,说实话,比蜗牛还慢。

更致命的是,链上流动性极度分散。一个交易对可能只有几百 ETH 的深度,大单一来,滑点直接让你怀疑人生。

所以,AMM 的出现,本质上是在解决一个问题:如何在去中心化环境下,让用户随时能交易,而且价格还算合理?

核心洞察:AMM 放弃了「买卖双方直接撮合」的思路,转而用算法和资金池来提供流动性。你不需要等对手盘,你只需要跟合约做交易。

为什么需要 AMM?

我个人习惯把这个问题拆成三个层面来看:

  1. 用户体验层面:订单簿需要挂单、等待、撤单,操作复杂。AMM 只需要你选币、输入数量、确认,三步搞定。
  2. 技术实现层面:链上订单簿的 gas 成本高得吓人。每次挂单都要写状态,每次撤单也要写状态。AMM 把流动性集中到一个池子里,交易只需要跟池子交互,gas 省了一大截。
  3. 流动性层面:订单簿需要做市商持续报价,这在链上几乎不可能。AMM 让任何人都能成为流动性提供者,你存点 ETH 和 USDC 进去,就能赚手续费。

我在项目中遇到过一件事,印象很深。有个团队想做一个链上期权交易所,用的就是订单簿模型。结果上线第一天,gas 费就把用户吓跑了。后来他们改成 AMM 风格的资金池模式,用户量翻了十倍。

嗯,这里要注意:AMM 不是万能的。它有自己的问题,比如无常损失、资金利用率低。但至少在「让去中心化交易跑起来」这件事上,AMM 是当前最靠谱的方案。

AMM 的核心思想:用数学代替撮合

说白了,AMM 就是一条数学曲线。

你往池子里放两种代币,比如 ETH 和 USDC。合约规定一个公式,比如 x * y = k。x 是 ETH 数量,y 是 USDC 数量,k 是常数。

当你想用 USDC 买 ETH 时,你往池子里加 USDC,池子里的 USDC 变多,ETH 变少。公式自动算出新的价格。

这个过程不需要任何人批准,不需要等待对手盘。合约就是你的交易对手。

一个小技巧:我刚开始学 AMM 时,总把 x * y = k 当成一个静态公式。后来才意识到,k 其实会变——流动性提供者加池子时 k 变大,撤池子时 k 变小。交易本身不改变 k,只改变 x 和 y 的比例。

为什么这个公式能工作?因为它在数学上保证了:

  • 池子里永远有流动性(只要 k > 0)
  • 价格随买卖行为自动调整(买的人多,价格涨;卖的人多,价格跌)
  • 套利者会拉平链上价格和外部市场价格

我曾经踩过一个坑:以为 AMM 的价格就是「公允价格」。后来发现,如果外部市场价格剧烈波动,而套利者来不及操作,AMM 的价格会严重偏离。嗯,这就是为什么很多 DeFi 协议要加价格预言机。

一张图看懂 AMM 的核心逻辑

下面这张 SVG 图,是我自己画的。它展示了 AMM 最核心的运作流程:

AMM 核心运作流程 交易者 发送交易 AMM 智能合约 x * y = k 更新储备 流动性池 ETH: 100 USDC: 200,000 k = 20,000,000 返回代币 交易者向合约发送代币 A 合约按 x*y=k 计算应返回的代币 B 数量 池子储备更新,价格自动调整 套利者 拉平价格

避坑指南:我曾经在测试网上部署 AMM 时,忘记设置滑点保护。结果一个测试用户用 1 ETH 买走了池子里 80% 的 USDC。嗯,从那以后,我写的每个 AMM 合约都会加滑点检查和最小输出量验证。

AMM 的三种主流模型

不是所有 AMM 都用 x * y = k。我整理了一下,目前主流的有三种:

模型 公式 代表项目 特点
恒定乘积 x * y = k Uniswap V2 简单通用,适合长尾资产
恒定和 x + y = k 早期稳定币池 价格不变,但容易耗尽流动性
混合模型 自定义曲线 Curve, Uniswap V3 资金利用率高,适合稳定币或主流资产

我个人最常用的是恒定乘积模型。为什么?因为它简单。你写合约时,核心逻辑就一行代码:require(x * y == k)。但简单不代表弱,它在数学上保证了池子永远不会枯竭。

不过,如果你做稳定币交易对,比如 USDC/USDT,恒定乘积就不太合适了。价格波动极小,但滑点却很大。这时候 Curve 的混合模型更香。

一个小经验:选模型时,先想清楚你的目标用户是谁。如果是散户交易山寨币,用恒定乘积。如果是机构做稳定币兑换,用 Curve 那种。别想着一个模型打天下,我在项目里见过太多这种翻车案例了。

AMM 的代价:无常损失

说到 AMM,不能不提无常损失。这是流动性提供者最大的痛。

简单说:你往池子里存了 1 ETH 和 2000 USDC。ETH 价格涨到 3000 USDC。套利者会来买走你的 ETH,直到池子里的价格跟外部一致。最后你发现,你手里的 ETH 变少了,USDC 变多了。总价值算下来,比直接拿着 ETH 和 USDC 少了 5% 到 10%。

这个损失,就叫无常损失。说它「无常」,是因为只要你不撤池子,价格再跌回来,损失就消失了。但现实中,价格很少会完美回归。

我曾经在 Uniswap V2 上做过一个实验:存了 10 ETH 和 20000 USDC,放了一个月。ETH 涨了 30%,我赚了 500 USDC 的手续费,但无常损失吃掉了 800 USDC。算下来还亏了 300。

嗯,所以我现在做流动性提供时,会优先选波动小的交易对,或者用 V3 的集中流动性来规避这个问题。

总结一下

AMM 的核心思想,就是用一条数学曲线,替代了传统交易所的订单簿撮合机制。它让去中心化交易变得可能,但也带来了无常损失、资金利用率低等新问题。

我个人觉得,AMM 最大的贡献不是技术本身,而是它让「任何人都能做市」这件事变成了现实。你不需要几百万美元,不需要高频交易策略,只需要往池子里存点币,就能赚手续费。

当然,前提是你理解无常损失,知道怎么选池子,会看 k 值变化。这些内容,我们后面会慢慢展开。

一句话记住本章:AMM 用数学公式代替了订单簿,让去中心化交易从「不可能」变成了「可能但需谨慎」。


公众号:蓝海资料掘金营,微信deep3321