0134 分钟
储备与曲线

AMM 池怎样提供报价?

用一次交换看懂储备如何移动、滑点从哪里来,以及 LP 为什么愿意提供流动性。

本章目标学完后,你应该能:
  • 用储备和恒定乘积解释 AMM 的报价
  • 观察交易规模、手续费与价格冲击如何互相影响
  • 解释 LP 收取手续费却承担库存风险的原因
章节位置第 1 / 4 章
  1. 上一章课程开始
  2. 本章AMM 池怎样提供报价?

    用一次交换看懂储备如何移动、滑点从哪里来,以及 LP 为什么愿意提供流动性。

  3. 下一章报价为什么会越换越差?
阅读前

先想一想这几个问题

展开答案前,可以先在心里做个判断。与预期不同的内容可以加入复习列表。

Q01池子没有挂单人,为什么还能一直和我交易?
简要回答

LP 预先放入两种资产,曲线把库存变成连续报价。它不是无限流动性:你买得越多,池中目标资产越少,下一单位就越贵。

和原先判断相比:

订单簿需要另一个人站在交易的另一边。AMM 把这个问题改写成:如果我们把两种资产放进一个公开资金池,能不能只靠储备比例给出下一笔报价?

先忘掉“找对手方”

在订单簿里,你提交 BUY YES,系统要等待某个卖单与它相遇。AMM 没有买一、卖一,也没有一个叫 Alice 的人必须在线。池子自己持有两种储备,任何人都可以按照同一条规则交换。

这里的两种资产叫 XY。实验室把它们显示成“积分 / TOKEN”:池子起初有 120,000 积分和 1,000 TOKEN,意味着现货价格约为 120 积分 / TOKEN。

SIMULATION ACTIVE0.30% 交易费
POOL 001 · CONSTANT PRODUCT

Credits / TOKEN

池子不需要等待另一个人挂单,它用储备比例给出下一笔报价。

现货价格120.00积分 / TOKEN
积分储备120,000X
TOKEN 储备1,000Y
手续费累计0池内资产
k 增长0.00%相对初始池子
储备正在移动x · y = 120,000,000
积分
120,000
TOKEN
1,000

交换手续费会留在池子里,让 k 缓慢增长;存入或取出流动性也会改变储备规模。

观察提示

先看池子的两种储备,再拖动交换数量。小额交易靠近现货价,大额交易会沿曲线越走越远。

池子事件1 EVENTS
  1. 01

    资金池创建:120,000 积分 + 1,000 TOKEN,初始价格为 120 积分 / TOKEN。

操作记录实验时间轴
1 个状态快照

拖动滑块可以回到此前的步骤。从那里继续操作时,后续记录会替换为新的操作序列。

初始状态
查看实验记录 →

x · y = k 不是价格公式,而是状态约束

恒定乘积池用两种储备的乘积描述当前状态:

x = 120,000 积分
y = 1,000 TOKEN
k = x · y = 120,000,000

当你用积分买 TOKEN,池子收到 X、送出 Y。为了让新的储备仍然满足约束,输出数量不能简单地按交易前的 120 兑换。你买得越多,池子里的 TOKEN 越稀缺,下一份 TOKEN 就越贵。

手续费为什么会让 k 变大

真实 AMM 通常不会把输入的全部数量用于计算输出。假设手续费是 0.30%,交易者输入 12,000 积分,其中 36 积分留在池子里,只有 11,964 积分参与曲线计算。

这带来两个结果:

  1. 交易者得到的 TOKEN 少于没有手续费时的报价;
  2. 手续费留在储备里,长期让 x · y 缓慢增长,成为流动性提供者的收入来源。

手续费不是“凭空奖励”。它来自交易者愿意为即时成交支付的成本,最终改变了 LP 持有的两种资产数量。

LP 提供的不是一笔存款,而是一份库存风险

任何人都可以把两种资产按接近当前比例存入池子,获得 LP 份额。之后交易产生的手续费会留在池子里,LP 可以按份额取回更多资产。

但 LP 并没有锁定一个固定的资产比例。交易者持续买走 TOKEN 时,池子会留下更多积分、减少 TOKEN;如果外部市场价格已经变化,套利者会继续交易,直到池内价格接近外部价格。LP 最后取回的资产组合,可能和最初存入的不一样。

这就是为什么“赚手续费”和“承担无常损失”必须放在同一张账上观察。只看到 APY,而不看库存变化,会漏掉 AMM 最重要的风险。

展开:这一步如何实现
fee = amountIn × 30 / 10,000
amountAfterFee = amountIn - fee
amountOut = reserveOut × amountAfterFee
             --------------------------
             reserveIn + amountAfterFee

reserveIn  += amountIn
reserveOut -= amountOut

实现中使用整数资产单位,并在每一步向下取整。生产合约还要处理舍入方向、极端储备、最小输出量和重入等安全问题。

理解检查

为什么一笔大额交换通常会比现货价更差?

把一个 AMM 读成四个问题

走完实验后,你应该能分别回答:

  • 池子里现在各有多少 X 和 Y?
  • 当前现货价和这笔交易的平均执行价差多少?
  • 手续费让谁获得了什么,k 为什么会增长?
  • 如果你是 LP,价格变化后取回的资产组合发生了什么?

这四个问题比背下 x·y=k 更重要。公式只是压缩规则,真正的机制藏在储备、交易者和 LP 之间的资产流动里。

本章小结完成练习和理解检查后,可以保存本章