一、AMM原理:从订单簿到自动做市商,为什么Uniswap选择了x*y=k?

大家好,我是你们的DeFi讲师。今天我们来聊聊AMM最核心的那个公式——x*y=k

说实话,我第一次看到这个公式时,心里想的是:「就这?一个反比例函数就能撑起几百亿美金的流动性市场?」

嗯,后来我被打脸了。而且打得很舒服。

1.1 传统订单簿:中心化交易所的「老办法」

在讲AMM之前,我们先看看传统交易所是怎么玩的。

你去Binance或者Coinbase,看到的是这样的界面:

买盘(Bids)         卖盘(Asks)
价格    数量         价格    数量
100.1   100          100.2   200
100.0   500          100.3   150
99.9    300          100.4   80

这就是订单簿(Order Book)。买方挂买单,卖方挂卖单。系统帮你撮合。

但这里有个问题——流动性依赖做市商。没人挂单,你就买不到币。我在2018年做OTC交易时,经常遇到深度不足的情况,一单砸下去滑点能到5%。

更麻烦的是,订单簿需要「连续报价」。做市商得24小时盯着盘,手动调价。这活儿,人干不了,只能上量化机器人。

所以,订单簿模式天然有门槛。它适合专业玩家,但不适合普通用户。

1.2 自动做市商:Uniswap的「反直觉」设计

Uniswap在2018年提出了一个完全不同的思路:不要订单簿,不要做市商,用公式定价

这个公式就是:

x * y = k

其中:

  • x = 池子中代币A的数量
  • y = 池子中代币B的数量
  • k = 常数(流动性总量)

什么意思呢?

假设一个ETH/USDC池子,里面有10个ETH和20000个USDC。那么:

x = 10 ETH
y = 20000 USDC
k = 10 * 20000 = 200000

现在你想用USDC买ETH。你往池子里塞了2000 USDC,池子的USDC变成22000。为了保持k=200000不变,ETH的数量必须减少:

新ETH数量 = 200000 / 22000 ≈ 9.09 ETH
你得到的ETH = 10 - 9.09 = 0.91 ETH

你看,价格就这样算出来了。不需要任何人报价,不需要任何订单簿。

核心洞察:AMM把「价格发现」变成了「公式计算」。流动性提供者只需要把币放进池子,剩下的交给数学。

1.3 为什么是x*y=k,而不是别的公式?

你可能会问:为什么偏偏选这个反比例函数?

我个人觉得,Uniswap团队选它有三个原因:

  1. 数学简单——加减乘除就能算,Gas费低。我在以太坊上部署过合约,一个复杂的幂运算能吃掉你几万Gas,而x*y=k只需要一次乘法和一次除法。
  2. 价格连续——无论交易量多大,价格都不会跳变。你买0.1个ETH和买1个ETH,价格是平滑变化的。
  3. 流动性永不枯竭——理论上,只要池子里还有币,你就能交易。哪怕只剩0.0001个ETH,公式也能算出价格。

但这里有个坑——滑点问题。因为公式是反比例函数,交易量越大,滑点越高。我曾在2020年Uniswap V2上做过一笔大额交易,滑点直接吃掉了我3%的资金。嗯,从那以后我再也不在V2上做市了。

避坑指南:如果你在Uniswap V2上做市,一定要关注「池子深度」。深度越浅,滑点越大。我建议至少看池子的总锁仓量(TVL)是否超过你交易额的100倍。

1.4 从订单簿到AMM:一场「去中介化」的革命

我们来对比一下两种模式:

维度 订单簿(CEX) AMM(Uniswap)
定价方式 买卖双方竞价 公式自动计算
流动性来源 做市商/用户挂单 LP存入资金池
交易对手 其他用户 智能合约(资金池)
滑点控制 深度好时滑点低 深度越浅滑点越高
上币门槛 需要交易所审核 任何人都可以创建池子
Gas成本 低(链下撮合) 高(链上计算)

说白了,AMM牺牲了「效率」换来了「去中心化」。你不需要信任任何做市商,不需要担心交易所拔网线。只要合约还在,你就能交易。

我记得2020年「312暴跌」时,中心化交易所纷纷宕机,但Uniswap一直在线。那一次,很多人第一次意识到AMM的价值。

1.5 核心逻辑:一张图看懂AMM

下面我用SVG画了一张图,展示AMM的核心工作流程:

AMM自动做市核心流程 交易者 发送交易 Uniswap 合约 x * y = k 计算价格 & 滑点 读取/写入 流动性池 代币A: 10 ETH 代币B: 20000 USDC k = 200000 输出代币 流程:交易者发起交易 → 合约执行 x*y=k 计算 → 更新资金池余额 → 返回代币 Δy = (k / (x + Δx)) - y 输入 Δx 个代币A,得到 Δy 个代币B

1.6 为什么这个公式「刚刚好」?

你可能觉得x*y=k太简单了。但恰恰是这种简单,让它成为DeFi的基石。

我见过很多项目尝试用更复杂的公式——比如带权重的、带动态参数的、甚至用机器学习定价的。结果呢?要么Gas费高到没人用,要么参数调不好导致池子被套利者抽干。

Uniswap的聪明之处在于:它把复杂留给了数学,把简单留给了用户

你不需要理解凸优化、不需要懂做市策略。你只需要知道:往池子里放两种币,然后收手续费。就这么简单。

⚠️ 注意:虽然公式简单,但「无常损失」是真实存在的。当外部市场价格剧烈波动时,LP可能会亏钱。这部分我们会在后面的章节详细讲。

1.7 小结

好了,我们来总结一下今天的内容:

  • 传统订单簿依赖做市商,有门槛、有中心化风险
  • AMM用x*y=k自动定价,去掉了中间人
  • 这个公式简单、连续、永不枯竭,但滑点随交易量增大而增加
  • Uniswap的选择不是「最优解」,而是「最实用的解」

我个人觉得,AMM最大的贡献不是技术上的创新,而是让普通人也能参与做市。以前做市商是华尔街的专利,现在你只要有一个钱包,就能成为全球流动性网络的一部分。

下一章,我们会深入代码层面,看看Uniswap V2的合约是怎么实现这个公式的。到时候我会带你们一行一行地读源码。


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