一道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/
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!