【区块链】Uniswap之滑点(Slippage)
一、滑点是什么?
滑点(Slippage)是指你下单预期价格和最终成交价格之间的差距。
在 DEX 中,你的交易会影响池子的价格(AMM机制),所以:
- 下单越大,滑点越大;
- 流动性越低,滑点越大。
二、滑点的本质来源:AMM定价函数(x * y = k)
Uniswap V2/V3 的核心是 AMM 机制,池内两种资产的乘积恒定:
x ⋅ y = k x \cdot y = k x⋅y=k
-
假设池内有:
- x x x:Token A 的储备;
- y y y:Token B 的储备;
- k k k:常数;
-
交易发生时,你改变 x x x,导致 y y y 也必须变,以满足 x ⋅ y = k x \cdot y = k x⋅y=k。
三、滑点的数学推导
假设你想用 Δx 个 A 代币换 B,滑点来源如下:
👉🏻 1. 原始池状态:
- x x x:A 的数量;
- y y y:B 的数量;
- 初始价格 P 0 = y x P_0 = \frac{y}{x} P0=xy
👉🏻 2. 你加入 Δx:
- 交易后 A 增加,变为 x ′ = x + Δ x x' = x + \Delta x x′=x+Δx
- 要保持 k = x ⋅ y = x ′ ⋅ y ′ k = x \cdot y = x' \cdot y' k=x⋅y=x′⋅y′,解得:
y ′ = k x + Δ x = x ⋅ y x + Δ x y' = \frac{k}{x + \Delta x} = \frac{x \cdot y}{x + \Delta x} y′=x+Δxk=x+Δxx⋅y
所以:
-
你拿到的 B 数量:
Δ y = y − y ′ = y − x ⋅ y x + Δ x = y ⋅ Δ x x + Δ x \Delta y = y - y' = y - \frac{x \cdot y}{x + \Delta x} = \frac{y \cdot \Delta x}{x + \Delta x} Δy=y−y′=y−x+Δxx⋅y=x+Δxy⋅Δx
👉🏻 3. 实际成交价格:
P actual = Δ y Δ x = y x + Δ x P_{\text{actual}} = \frac{\Delta y}{\Delta x} = \frac{y}{x + \Delta x} Pactual=ΔxΔy=x+Δxy
👉🏻 4. 滑点率:
Slippage = P 0 − P actual P 0 = 1 − x x + Δ x = Δ x x + Δ x \text{Slippage} = \frac{P_0 - P_{\text{actual}}}{P_0} = 1 - \frac{x}{x + \Delta x} = \frac{\Delta x}{x + \Delta x} Slippage=P0P0−Pactual=1−x+Δxx=x+ΔxΔx
四、举个例子:
池内:
- A = 1000
- B = 1000
- 你想花 Δx = 100 A 换 B
计算滑点:
-
初始价格:1
-
实际价格:
P actual = 1000 1000 + 100 = 0.909 P_{\text{actual}} = \frac{1000}{1000 + 100} = 0.909 Pactual=1000+1001000=0.909
-
滑点:
1 − 0.909 1 = 0.0909 = 9.09 % \frac{1 - 0.909}{1} = 0.0909 = 9.09\% 11−0.909=0.0909=9.09%
这意味着你会以比池子初始价格低 9% 的价格成交!
五、如何防止滑点带来的风险?
- 设置最大滑点容忍度(如:0.5%,Uniswap 允许用户设置);
- 分批交易,避免一次下大单;
- 流动性充足的池中交易,降低价格冲击;
- **使用聚合器(如 1inch、CowSwap)**自动找最低滑点路径。
六、总结说明
项目 | 说明 |
---|---|
滑点定义 | 成交价格与预期价格的差距 |
数学本质 | 来自 AMM 定价函数: x ⋅ y = k x \cdot y = k x⋅y=k |
滑点公式 | Δ x x + Δ x \frac{\Delta x}{x + \Delta x} x+ΔxΔx,近似为 订单量 池中总量 \frac{订单量}{池中总量} 池中总量订单量 |
实战影响 | 大单滑点高,低流动性滑点高 |