主要对升级点大致的介绍了下,产生的部分影响也描述了下
V3 采用了一种新的方式给用户进行流动性的区间选择提供:对于ETH/DAI
池可以选择将 100 美元价值的代币分配给 1,000-2,000 美元的价格区间,并将另外 50 美元价值的代币分配给 1,500-1,750 美元的区间。
用户选择投入流动性到 1,000-2,000 美元的价格区间,那么只有价格在此范围内进行的交易产生的手续费,用户才有资格得到。因此用户需要选择交易最经常发生的价格区间才能获得最大的收益
如此做法带来了什么好处呢?最直接是资金的利用率提升了:过去 V2 中池子中有部分不合理的价格也被强制分配了一部分流动性(如 1 eth = 0.1$
或者1 eth = 10^18$
),这无疑是对池子的资金的浪费,V3 通过用户指定流动性提供区间,提高了这个利用率(如果用户非要选择离谱的区间那用户就没办法获得手续费,毕竟那些区间没有交易产生)。
采用这种区间的方法就需要修改一些原本 V2 的设计了:首先就是 LP token。
在 V2 中采用的是 ERC20 代币作为 LP token,因为所有流动性添加用户添加的流动性是等价的(大家都是在零到正无穷这个区间添加流动性)。而到了 V3 就很明显的不一样了:每个用户选择的区间并不一定一样(也可以一样,但这种情况应该少数,即使是某些池子中大多一样,那也不影响),所以它们获得 LP token 无法等价起来,故采用 ERC721 来记录流动性提供者投入的流动性,而这个 LP token 也被称为头寸。
对于用户选择的区间和当前池子的价格之间的大小关系不同,有不同的投入要求(此处假设价格点连续):
1Y = 10X
,提供者选择的区间为:1:20
、1:30
,那么此时想添加流动性,就只能添加代币X
。(可以理解为认为X
币会跌/Y
币会涨,设置一个订单,在此范围内逐渐卖出/买入代币,当然前提是超出你设置的区间后及时取回流动性,不然随着价格回来又会转换回来)1Y = 10X
,提供者选择的区间为:1:5
、1:20
,那么此时想添加流动性,需要同时注入两种代币1Y = 10X
,提供者选择的区间为:1:5
、1:7
,那么此时想添加流动性,就只能添加代币Y
。其次的设计就是区间:区间的选择不能无限制,作为链上合约,实现不了这么复杂的事情。
V3 在价格这一射线上选择一系列不连续的价格点作为可以选择形成区间,这些价格点称为tick
,以此来减少计算关于流动性的计算,然后还设置了tickspacing
这一存在,要求两个tick
之间存在tickspacing
个tick
,而在 V3 中锁定唯一的代币对池子,需要通过:两种代币、tickspacing
这三个参数。tick
的大小是如何设置的呢?tick
本身是一个等幂数列 $p_i= {1.0001}^i$ ,其 i 的取值有范围[-887272, 887272]
。这使得在接0-1
的时候能提供一个很密集的tick
(很适合如稳定币对),远离 1 的时候能提供较分散的tick
给价格波动大的兑换合约(如两个山寨币对)。
V3 新增的多收费层级就是指不同档次的手续费,V2 中所有代币对合约的手续费统一0.3%
,这对于某些合约(稳定币对合约)收费太高,某些合约(山寨币对合约)收费低了些(币价波动大,很容易贬值)。V3 就因此设置了不同的手续费档次。
不同的收费层级通过前面所讲的tickspacing
结合决定:手续费低,则币价相对稳定,tickspacing
小;反之手续费高,币价波动大,tickspacing
大。具体设置如下:
费率 | tickspacing | 建议的使用范围 |
---|---|---|
0.05% | 10 | 稳定币交易对 |
0.3% | 60 | 适用大多数交易对 |
1% | 200 | 波动极大的交易对 |
在 V3 合约实现的时候为
tickspacing
扩充留下了代码,可以后续添加。
V3 中提出一个新的计算平均价格的方法,与V2 的预言机有所不同,但总体思路还是相近的。
在 V3 中tick
的计算为$pi= {1.0001}^i$,所以$i = \log {1.0001} p_i$
V3 中计算的不再是价格累积值而是tick
累积值,所以$aj = a{j-1} + \Delta t * i$,其中 i 就是上面tick
中指代的那个 i 。当我们计算平均价格时
$$ P{t1,t2} = \frac{a{t2} - a{t1}}{t2 - t1} = \frac{\sum{i =t1}^{t2}\log_{1.0001}Pi}{t2 - t1}=\log{1.0001}{(\Pi _{i = t2}^{t_2} P_i)^{\frac{1}{t2 - t1}}} $$
最后面那一步转换便称为价格 的几何平均值形式(数学不好,没能理解这个转换)。剩下的计算和 V2 也很相似了
参考文章:
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!