前言
Uniswap是DeFi领域的头部去中心化交易所,其在今年5月上线了V3版本协议。V3版本与之前V2版本相比存在诸多差异,如集中流动性、多个费用等级、新的预言机等等。
在这些多样的特点背后,究竟藏着怎样的数学奥秘,同时是否真的能为用户带来更大的收益,减少无常损失?
知道创宇区块链安全实验室?将带你从数学原理角度在UniswapV3集中流动性方面进行剖析。
何谓集中流动性
在UniswapV3中,流动性提供者可以将其提供的流动性"限制"在任意的价格区间内来集中其流动性。
为了解释这一概念,首先我们关联到UniswapV2的自动做市商曲线。在该曲线中,用户的流动性被均匀的分布在整个(0,正无穷大)之中。
图1
在V2版本中,由于许多池子的价格变动没有那么的频繁,比如UDST/DAI池子中。由于其价值均锚定美元,发生的交易将会聚集在上图中的A点附近,这就意味着流动性池中的大部分资产是永远不会被触及到的。
因此在V3中,用户可以将其流动性聚集在某一个线段。如下图B到C点:
图2
这样,由于大量用户的流动性被集中,对于B点到C点的线段的流动性将会变得非常"厚",这样的池子将使得来交易的人交易滑点得以显著减小,并有效提高资本效率。
如何将流动性集中
在具体实现的过程中,V3依靠了资产的杠杆。将一部分用户资产虚拟出来,导致了坐标轴图像的平移,虚拟资产假设对应x'和y'。
在原始的UniswapV2中,曲线公式为:x*y=k
UniswapV3通过引入x'和y'资产升级了该公式。此处x'我们将其称为x资产的虚拟储备,y'称为y资产的虚拟储备,于是引入了如下式子:
由于为资产添加了杠杆,使下图中原本在下面的曲线,能够平移到上面储备量更大的曲线中去,这也意味着在有限的的价格范围内,一组较小的储备x、y能够充当更大的储备x+x'、y+y'。
同时,上方为虚拟资产被添加后的虚拟AMM曲线。在实际交易曲线中,下方才是流动性提供者资产的真实变化曲线。
于是,在B点或C点时,处于强势的资产将被损耗为0,也就是说将会全部兑换成劣势资产并停止做市。
如下图3:
图3上方为虚拟平移的AMM曲线
根据V2的自动做市曲线方程。让L被定义为k=L^2,于是有该式:x*y=k=L^2
对其开根号,即有
而对于价格来说,当前的价格P(用y对x资产定价)有:
根据式3,对其取平方根,即有:
联立式4与式2,我们可以消去y,对于闭区间任一点,则有:
同理可消去y,对于任一点,则有:
于是,我们只要知道P(x的价格),在流动性没有改变时(L不改变),则可以得到对应的x资产量和y资产量。
计算虚拟资产(x'/y')
图4虚拟资产x'与y'
考虑极端情况,在上图中,经过平移后上方的AMM图形由于在B点时,用户提供的x资产由于在实际中已全部损耗。
也就是说x=0,剩余的x均为虚拟出来的,即x'。
根据式5去计算。此时计算x资产量对于B点有:
同理,我们计算C点,此时用户提供的y资产由于在实际中已全部损耗,即有y=0,剩余的y均为虚拟出来的,即y'。则有
由上可知,xb?与?yc?则是Uniswap为用户虚拟出来的Token量,即x'与y',这也是Uniswap中为用户开的杠杆的Token数量。
于是,我们得到完整UniswapV3的AMM曲线,见式9:
同时,对于选定的区间中的任意一点,由用户提供的真实的资产见下图:
注:下图摘自UniswapV3白皮书,区间为,任意一点被选择为c
图5用户提供的真实资产与虚拟储备AMM曲线
隐患-无常损失
由于V3在用户的选择下将流动性使用添加杠杆的方式进行了集中,而对于流动性提供者来说本质上是在与用户做对手盘,即越跌越买,越高越卖,这将导致无常损失的加剧。
根据上述分析,只要价格达到设定的区间临界点,流动性提供者的代币将会完全转换为另一种处于劣势的代币,并且在价格重新进入该临界点之前不会赚取交易费用。
世上没有什么免费的午餐。风险越高,收益越高。你提供的流动性越集中,你获得的手续费收入就越高,同时也将承担更多的无常损失。——Uniswap创始人,HaydenAdams
UniswapV3--添加流动性
具体而言,假设现有一UniswapV3交易池,交易对ETH/DAI,池中X与Y储备比例10:800,L2为8000,P为80即交易价格80DAI/ETH。
当前价格对应点A(10,800),若一流动性提供商,尝试在P=进行做市。对应的点B(5,1600),P=320。点C(20,400),P=20
该流动性提供商想投入3个ETH,这3个ETH会被全部用于xreal,由于当前价格在选定区间内。
根据白皮书,有以下式子:
由式10,投入△x=3,投入的ETH将改变池子的L。经过计算△L为:
再通过△L计算△y:
于是投入3个ETH,时,计算投入的DAI应为240个。新的L'约为143.11(仅限于在闭区间P=)。
UniswapV3--Swap
对于该UniswapV3池子,若ETH突然上涨,价格到达1ETH=100DAI,此时就会有套利者在该DEX中用DAI兑换ETH来套利,为了将其达到与外部平衡,将有P=80==>P'=100,根据白皮书,Swap计算价格变化如下:
将根号后的起始价格P和结束价格P'带入,可以计算得到△y≈151.09,而△x≈1.689。
若Swap的资产假设该流动性提供者按照L比例划分了37.5%,于是该流动性提供者分摊x≈0.6334,y≈56.66
于是我们得出如下表格:
我们将其百分比化:IL_V3=(540-533.31)/540≈1.239%
集中流动性放大了资产L的占比,提高资产效率的同时承担了更多的无常损失。当然,这只是选择做市区间比较小,同时分摊比例较大的情况,现实会有许多人根据投入的L占比大小来分摊这笔swap。并且该笔swap由于本身比较大,几乎占了总资产的21.113%,进而显得无常损失的百分比很大,这也印证了盲目做市所带来的亏损。另外,价格波动对其也存在影响,只上涨到P=85时IL_V3约为0.58%。
UniswapV2--添加流动性
而对于UniswapV2,假设原池中的资产量为10个ETH和800个DAI,即P为80DAI/ETH。
流动性提供者投入了3ETH和240DAI,此时则存在13个ETH与1040个DAI,价格仍为80DAI/ETH,比重占23.077%,新的K为13520。
UniswapV2--Swap
当ETH突然上涨,价格到达1ETH=100DAI,此时就会有套利者用DAI兑换ETH来套利。
设共用△y个DAI兑换△x个ETH后,AMM池中ETH:DAI价格达到与外部平衡的1:100
不考虑手续费等因素,则有:
解得dx≈1.3724,dy≈122.76,即套利者给了122.76个DAI,换走了1.3724个ETH。池子-1.3724个ETH,+122.76个DAI
这将在所有比重中分担,于是提供者分担23.077%,即失去0.3167个ETH,换取28.33个DAI,我们得出如下表格:
IL_V2=(540-536.66)/540≈0.6185%
具体将会取决于在V3做市区间,越小则杠杆越多,x'和y'越大,同时无常损失和手续费收益也会越多。
当然,用户也可以如V2一样将流动性分摊到整个曲线中去而不是某个线段,即在0到正无穷进行做市:
后记
由于篇幅原因,本篇仅就集中流动性进行了讨论。UniswapV3创新了很多的新功能,其复杂程度相较于V2增加了非常多。
无可否认,UniswapV3的创新使得UniswapV2被加强,用户可以选择将其流动性集中在任何一个区间以获得更多的手续费。
但与此同时这也将导致更多的无常损失和更大的资金转换为劣势资产速度,而这也产生了许多新特性如限价单swap等功能。
因此,在选择做LP之前,需要认真思考自己的需求,切忌盲目做市。
参考
UniswapV3白皮书
UniswapV3新特性解析
来源:金色财经
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。