简介
Uniswap V3 的改进
- 提⾼资⾦利⽤率(集中流动性),增加LP深度
- 增强价格预⾔机的⽅便性和准确性
- 灵活的⼿续费收取机制(0.05%/0.3%/1%)
主要是针对lp来说做出的改进,而不是用户
v2的资金利用是0到无穷,但实际生活中实际只需要其中一部分,例如图中的a到b的范围,而在ab之外的流动性就相当于是固定不变的,这部分的资金就相当于浪费了。
而在v3中,这部分则代表“虚拟流动性”。
Concentrated Liquidity 集中流动性
由此,v3提出了集中流动性这个概念,也就是只在某个价格区间内提供流动性。
应用场景
- 稳定币的兑换(0.99-1.01)
- Interest-bearing ASSET: xSushi/Sushi等
- 固定收益债券:
- IDO
- 保险
k值越大,交易深度越大
影响
- 波动⽐例⼤
- ⽆常损失⾼
- LP挖矿实现机制的更改
- ⼿续费计算复杂
- LP Token:ERC20-> ERC721
v3之集中流动性
求$x_v, y_v$
首先提供两个公式
$$x·y=l^2$$
$$p=\frac{y}{x}$$
用l表示流动性,也就是$\sqrt{k}$
可以推断出
$$x=\frac{l}{\sqrt{p}}$$
$$y=l\sqrt{p}$$
而在v3的协议中,通常使用$x_{real}, y_{real}$表示真实流动性,用$x_v, y_v$表示虚拟流动性(为了体现出跟v2的变化)
现在在c点(Virtual reserves的图)
$$x=x_{real}+x_v$$
$$y=y_{real}+y_v$$
在b点
$$x=x_{real}+x_v=\frac{l}{\sqrt{p_b}}$$
$$x_v=\frac{l}{\sqrt{p_b}}$$
在a点
$$y=y_{real}+y_v=l·\sqrt{p}$$
$$y_v=l·\sqrt{p_a}$$
现在将上面的$x, y$带入$x·y=l^2$公式中,就可以得到c点满足
$$(x_c+\frac{l}{\sqrt{p_b}})(y_c+l·\sqrt{p_a})=l^2$$
这也是v3白皮书中2.2公式的来源
由此,我们可以用图像表示。
其中virtual与real处于两个坐标系,只不过画在一个图中;是一条曲线的两个坐标系图表示,而不是一个图的两个曲线。
由2.2的公式,我们可以继续推导出以下内容
- 在P<=$P_a$时
$$L=\frac{\sqrt{P_a}·\sqrt{P_b}}{\sqrt{P_b}-\sqrt{P_a}}·x_{real}$$
- 在P>=$P_b$时
$$L=\frac{y_{real}}{\sqrt{P_b}-\sqrt{P_a}}$$
- 在$P_a$<P<$P_b$时
$$L=\frac{\sqrt{P}·\sqrt{P_b}}{\sqrt{P_b}-\sqrt{P}}·x_{real}=\frac{y_{real}}{\sqrt{P}-\sqrt{P_a}}$$
所以,对超出ab区间添加的流动性,只会导致L变大。
v3计算无常损失
初始条件
1ETH=4000DAI、c(1, 4000)、b(0.5, 8000)、a(2, 2000)、$P_c=4000$、$P_b=16000$、$P_a=1000$
拿1ETH 4000DAI添加流动性,从c到a,在v2、v3里的无常损失
$$v_0=1·4000+4000=8000$$
当ETH减价为1ETH=1000DAI时
$$v_{hodl}=1·1000+4000=5000$$
$$v_2=2·1000+2000=4000$$
$$loss_{v2}=v_{hodl}-v_2=1000$$
那$v_3$又怎么算呢?
根据上面的内容,可以先计算出
$$L=40\sqrt{10}$$
正好是v2中L的两倍。
所以:
$$x_v=1、y_v=4000$$
也就是v3中,虚拟出来了1ETH和4000DAI,那么在v3中“拟化”为v2就是c(2, 8000)、b(1, 16000)、a(4, 4000)
在a点
$$x_{real}=3, y_{real}=0$$
故:
$$v_3=3·1000=3000$$
$$loss_{v3}=5000-3000=2000$$
实际上v3中的无常损失更大,对此Uniswap通过给lp灵活设置手续费来弥补这部分损失
v3中无常损失函数量化
- $P_0、P_1\in [P_a, P_b]$
$$t_0\ (x_0, y_0)\ x_0·y_0=k_1, P_0=\frac{y_0}{x_0}$$
$$t_1\ (x_1, y_1)\ x_1·y_1=k_1, P_1=\frac{y_1}{x_1}$$
$$t_{hodl}\ (x_0, y_0)\ P_1=\frac{y_1}{x_1}$$
根据在v2中计算公式
$$IL(d)=f(d)=\frac{v_1}{v_{hodl}}-1$$
但在v3中,$v_1$发生了变化,因为有虚拟流动性的存在,在v3中
$$v_1=x_{real}·P_1+y_{real}=2\sqrt{k}·\sqrt{P_1}-\sqrt{k}·\frac{P_1}{\sqrt{P_b}}-\sqrt{k}·\sqrt{P_a}$$
$$v_{hodl}=\sqrt{k}(\frac{1}{P_0}-\frac{1}{P_b})P_1+\sqrt{k}(P_0-P_a)$$
故:
$$IL(d)=f(d)=\frac{2\sqrt{P_1}-\frac{P_1}{\sqrt{P_b}}-\sqrt{P_a}}{(\frac{1}{P_0}-\frac{1}{P_b})P_1+(P_0-P_a)}-1$$
详细可以参考这篇文章的推导过程
同时可以预见$[a,b]=[0, \infty]$时
$$f(d)=\frac{2\sqrt{d}}{d+1}-1$$
与v2是相等的。
- $P_1<P_a$
$$v_1=x_{real}·P_1+y_{real}=(x_1-x_v)·P_1=\sqrt{k}(\frac{1}{P_1}-\frac{1}{P_b})·P_1$$
- $P_1>P_b$
Staking Reward
本身是一种质押协议
基本原理如图(转载该视频)