一道Uni V2的组LP题目分享

  • jusonalien
  • 更新于 2022-06-29 15:29
  • 阅读 2302

一道Uni V2的组LP题目分享

背景

群里大佬出了一道据说是Web3的面试题目

一个uni v2交易对 项目方冲入了 100ETH和10000 Token,获得1000枚LP。现在老哥手里有10个ETH,想all in做市,请问他该换多少个eth为token去搭配lp(手续费不计)

题目分析

这道题主要考察Uni V2的两个知识点

1、AMM的数学模型,做交易的时候LP上的两种资产的数值要保持乘积不变

2、组LP的逻辑,组LP的时候两类资产需要与当前LP上的比例保持一致,组完后常数K会做一次更新

变量描述

T : Token 10000

E : Eth 100

A: 老哥手头上的初始Eth 10

$$ T*E=K (T=10000, E=100) $$

用手头的Eth兑换出T

$$ 1、(T-\Delta{T})(E + \Delta{E}) = K $$

将获得的 $\Delta{T}$ 跟剩余的 $A-\Delta{E}$ 去增加流动性做市,得到第二个方程,其中$ 0<\Delta{E} < A $

$$ 2、\Delta{T}/(A-\Delta{E}) = (T-\Delta{T})/(E + \Delta{E}) $$

通过公式1、2消元获得一元二次方程:

$$ \Delta{E}^2+200\Delta{E}-1000=0 (0<\Delta{E} < A) $$

对其求解得到$\Delta{E}$存在两个解分别为4.8809和110.084(舍弃)

$$ \Delta{E} = 4.8809, \Delta{T}=465.3754 $$

所以最终用手头上的4.8809个Eth换取 465.3754个Token,将剩下的5.1191个Eth和获取的Token组LP

原题目是不考虑手续费的版本,那如果考虑手续费呢,我们假设手续费率为$\beta$,在第一步兑换的时候需要将手续费考虑进去,因为手续费是不纳入到LP里面做流动性的,得到方程3

$$ 3、(T-\Delta{T})(E + \Delta{E}* (1-\beta{}) ) = K $$

在将剩余的Eth和获得的Token拿去组LP,就得到方程4

$$ 4、\Delta{T}/(A-\Delta{E}) = (T-\Delta{T})/(E + \Delta{E}* (1-\beta{})) $$

解法与上面的类似,就不做重复计算了,留给读者去练习一下。

博客原文链接:https://jusonalien.github.io/post/uni-v2-interview-problem/

点赞 0
收藏 4
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

4 条评论

请先 登录 后评论
jusonalien
jusonalien
0x3730...4a7a
在找Solidity开发岗 个人博客: https://jusonalien.github.io/