去中心化交易所(DEX)的简介

一、什么是AMM(自动做市商)

image

自动化做市商(AMM,Automated Market Maker)是去中心化金融(DeFi)中的一种协议,允许数字资产在去中心化交易所(DEX)上自动进行交易,而无需传统的订单簿。AMM使用数学公式来确定资产的价格,并依赖于流动性池(Liquidity Pool)来执行交易。
image

二、流动性池 (Liquidity Pool)

流动性池(Liquidity Pool)是一个智能合约,它托管着两种或多种代币(通常是成对出现,例如 ETH/DAI),并允许用户在其中进行代币交易。
uniswap2
上图从左往右分分别为:
  1. 流动性提供者 (LPs)
    1. 存入资产: 任何人都可以成为LP(Liquidity Provider)。他们必须按照智能合约设定的比例(通常是 50/50 的价值比例)存入两种代币 到流动性池中。
    2. 获得 LP 代币: 作为回报,流动性提供者会收到流动性代币(LP Token)。这些代币代表了他们在池子中的份额,LP Token 可以随时用来赎回他们在池中存入的原始资产以及积累的收益。
  2. 流动性池 (Liquidity Pool)
    1. 促进交易: 流动性池充当所有交易的对手方。当用户在Uniswap上进行交易时,他们实际上是在与流动性池进行交易,而不是与其他用户 —— 当你买入代币 A 时,实际上是从池中取出代币 A,并向池中存入等值的代币 B。
    2. 价格确定: 池中资产的相对比例决定了它们之间的兑换价格(Uniswap使用 x·y=k 恒定积公式)。
  3. 交易者(Traders)
    1. 付交易费: 每次在池中发生的交易都会向交易者收取一小笔费用(例如 0.3%)。
    2. 分配给 LP: 这些交易费用会累积在流动性池中,根据整个池中 LP Token 的持有比例奖励给 LP Token 的持有者。

三、定价机制:数学公式

最常见最经典的AMM模型是 恒定积(Constant Product),由 Uniswap 首创。
x · y = k(常数)
其中:
  • x:流动性池中代币 A 的数量;
  • y:流动性池中代币 B 的数量;
  • k:一个常数,在交易前后保持不变(忽略交易费用)。

3.1 即时价格(Spot Price / Marginal Price)

即时价格是指在交易发生前那一刻,流动性池中两种资产的理想理论兑换比率
image
 
P和 Py一个 token 相对于另一个 token 的价格。
例如,如果池中有 10 ETH 和 1000 DAI:
  • ETH 的价格(以 DAI 计)是 1000 / 10 = 100 DAI。
  • DAI 的价格(以 ETH 计)是 10 / 1000 = 0.01 ETH。
即时价格是无限小交易量下的理论价格,主要用于DEX 界面展示和计算。

3.2 滑动价格(Slippage Price / Execution Price)

滑动价格(或称为执行价格)是你的交易实际成交的平均价格。由于 AMM 的数学公式限制(如x · y = k),当你从池中取走一种资产时,它变得相对稀缺,价格会立即上涨。因此,你为整个交易支付的平均价格会高于交易开始时的即时价格。
假设一个交易者想用 Δx 数量的代币 A 买入 Δy 数量的代币 B:
  • 池中代币 A 增加: x -> x + Δx
  • 池中代币 B 减少: y -> y - Δy
  • 保持常数: (x + Δx) · (y - Δy) = k
通过这个数学约束,系统会自动计算出交易者可以从池中取走多少 Δy。那么,你实际成交的价格(即滑动价格)是你交易的输出总量输入总量的比率:
image
滑点(Slippage): 指的是即时价格你实际支付的滑动价格(平均执行价格)之间的差异。交易量越大,滑点通常越大。
 

举例,假设一个 ETH/DAI 池中有:
  • x = 10 ETH
  • y = 10000 DAI
  • k = x·y = 100000
现在,你用 1 ETH 去购买 DAI:
  1. 输入: x 增加到 10 + 1 = 11 ETH
  2. 目标 k 100000
  3. 计算输出 y' 11 · y' = 100000 得出 y' ≈ 9090.91 DAI
  4. 实际取出(Δy): 10000 - 9090.91 ≈ 909.09 DAI
 
数值
对比
即时价格
1 ETH = 1000 DAI
交易前的理论价格
滑动价格
1 ETH = 909.09 DAI
实际成交的平均价格,低于即时价格
 
你期望用 1 ETH 换 1,000 DAI,但由于你的交易消耗了池中 DAI 的流动性,DAI 的相对价格上涨(ETH 的相对价格下跌),导致你最终只换到了 909.09 DAI,这种差异就是滑点
 
uniswap-cp2
在实际交易中,你永远不会以即时价格成交(除非交易量无限趋近于零)。你总是以滑动价格成交,这个价格是你的交易量在 AMM 曲线上移动所产生的平均结果(交易量越大,斜率越大,价格越高)。
 

四、AMM 的优点与缺点

✅ 优点
特点 描述
无需许可 任何人都可以随时提供流动性或进行交易。
持续流动性 只要池中有资产,交易就可以随时进行。
简单高效 交易直接通过智能合约执行,无需复杂的订单匹配系统。
低准入门槛 成为做市商(LP)的门槛极低,只需持有两种代币。
 
❌ 缺点
特点 描述
滑点 (Slippage) 对于大额交易,由于资产比例变化剧烈,实际成交价可能与预期价差很大。
无常损失 (Impermanent Loss, IL) 当池中代币的价格偏离其外部市场价格时,LP 可能会损失一部分价值。如果他们只是持有资产,价值可能会更高。
资本效率低 在恒定乘积模型中,大部分流动性集中在远离当前市场价的区间,导致资本利用率不高。
 
恒定乘积模型(Uniswap V2)的缺陷,出现了多种 AMM 变体:
模型 特点 常见应用
集中流动性 (Concentrated Liquidity) 允许 LP 将流动性集中在特定价格区间,极大地提高了资本效率。 Uniswap V3
恒定和做市商 (Constant Sum) 适用于交易价格几乎保持 1:1 的资产(如稳定币)。通过 x + y = k 极大地减少滑点。 Curve Finance
曲线型(Hybrid) 结合了恒定乘积和恒定和的优势,适用于稳定币和低波动资产。 Balancer

 

 

参考:

Uniswap V2源码:https://github.com/Uniswap/v2-core

posted @ 2025-11-25 15:46  all-in-web3  阅读(4)  评论(0)    收藏  举报