当前位置: 首页 > java >正文

【区块链】Uniswap之滑点(Slippage)

一、滑点是什么?

滑点(Slippage)是指你下单预期价格和最终成交价格之间的差距

在 DEX 中,你的交易会影响池子的价格(AMM机制),所以:

  • 下单越大,滑点越大;
  • 流动性越低,滑点越大。

二、滑点的本质来源:AMM定价函数(x * y = k)

Uniswap V2/V3 的核心是 AMM 机制,池内两种资产的乘积恒定

x ⋅ y = k x \cdot y = k xy=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 xy=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=xy=xy,解得:

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+Δxxy

所以:

  • 你拿到的 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=yy=yx+Δxxy=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=P0P0Pactual=1x+Δ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\% 110.909=0.0909=9.09%

这意味着你会以比池子初始价格低 9% 的价格成交


五、如何防止滑点带来的风险?

  1. 设置最大滑点容忍度(如:0.5%,Uniswap 允许用户设置);
  2. 分批交易,避免一次下大单;
  3. 流动性充足的池中交易,降低价格冲击;
  4. **使用聚合器(如 1inch、CowSwap)**自动找最低滑点路径。

六、总结说明

项目说明
滑点定义成交价格与预期价格的差距
数学本质来自 AMM 定价函数: x ⋅ y = k x \cdot y = k xy=k
滑点公式 Δ x x + Δ x \frac{\Delta x}{x + \Delta x} x+ΔxΔx,近似为 订单量 池中总量 \frac{订单量}{池中总量} 池中总量订单量
实战影响大单滑点高,低流动性滑点高

http://www.xdnf.cn/news/4204.html

相关文章:

  • Java 检查某个点是否存在于圆扇区内(Check whether a point exists in circle sector or not)
  • springBoot中自定义一个validation注解,实现指定枚举值校验
  • LINUX——例行性工作
  • 私有仓库 Harbor、GitLab
  • K8S使用--dry-run输出资源模版和兼容性测试
  • Django缓存框架API
  • 物理服务器紧急救援:CentOS系统密码重置全流程实战指南
  • 如何添加或删除极狐GitLab 项目成员?
  • JPress安装(Docker)
  • 如何在使用 docker-compose 命令时指定 COMPOSE_PROJECT_NAME ?
  • 概统期末复习--速成
  • 区块链交易所开发:开启数字交易新时代
  • TypeScript简介
  • LeetCode 热题 100 198. 打家劫舍
  • 【机器学习-线性回归-6】机器学习中的维度:从特征工程到降维艺术
  • Missashe考研日记-day33
  • 数字政府大模型应用方案
  • MySQL 8.4.5 源码编译安装指南
  • 国联股份卫多多与国术科技签署战略合作协议
  • 使用OpenCV 和Dlib 实现表情识别
  • AI量化解析:从暴跌5%到飙涨3%—非线性动力学模型重构黄金极端波动预测框架
  • 人工智能如何革新数据可视化领域?探索未来趋势
  • 调用七牛云对象存储,附工具类
  • 多层PCB板的地层分割技巧有哪些?
  • Pytorch 的模型保存
  • 数据结构(一)——线性表的顺序表示和实现
  • k8s术语之service
  • k8s pod request/limit 值不带单位会发生什么?
  • 浅谈 - GPTQ为啥按列量化
  • NGINX `ngx_http_browser_module` 深度解析与实战