更灵活的做市——UniSwap V3

This article is not available in the current language yet. Showing the original version.
自动做市商(AMMs)是汇集流动性并根据算法向交易员提供流动性的平台。 传统的自动做市商采用的是恒定乘积模型,这导致其存在无常损失。流动性提供者在其中注入资金,其收益可能无法覆盖无常损失。

自动做市商(AMMs)是汇集流动性并根据算法向交易员提供流动性的平台。

传统的自动做市商采用的是恒定乘积模型,这导致其存在无常损失。流动性提供者在其中注入资金,其收益可能无法覆盖无常损失。

Uniswap V3的推出,对V2进行了很多方面的改进。虽然依然存在无常损失,甚至在某些情况下,无常损失要比传统的做市模型更大,但是由于其特性,我们可以更灵活的设计做市策略。上线以来,Uniswap V3在短短的几个月里就已经跃居去中心化交易所(DEX)交易量的榜首位置。

在Uniswap v1和v2使用的恒定乘积做市商公式中,只有池中的一小部分资产在给定的价格下可用。这是低效的,尤其是当资产的交易价格一直在某一特定价格附近震荡的时候。传统的AMM要求给定资金池中的所有流动性提供者遵守单一的公式,如果流动性提供者希望在不同的价格范围内提供流动性,则可能导致流动性分散。

Uniswap V3的设计不依赖于任何关于代币价格行为的共同假设。Uniswap V3基于和早期版本相同的恒定乘积曲线,但提供了几个重要的新功能:

- 集中流动性:在V3中,LP可以将流动性集中在一个任意的价格范围内。这提高了资金池的资金利用率。V2的流动性在所有价格上是均匀的。但是对于用户来说,一般会在正态分布的一个区间进行交易,不是在所有价格的交易量都相等,所以V3对V2版本做了一个改良:可以灵活选择价格区间提供流动性(增强流动性)。

- Range Order范围订单:Uniswap V3 提供了全新的功能——范围订单,以补充现在的市价单,这个功能有点像是交易所里限价单的升级版。可以设置一个高于或低于市场价格的区间,只需要质押单币种,在市场价格达到设定的价格区间内,会不断成交为另一币种,在超出价格区间后全部置换成功,且赚取到价格区间内的手续费收入,适用于抄底或出货。

- 灵活的费率:Swap的费率不再锁定在0.3%,每个池的费率级别在初始化的时候设置,最初支持的费率等级为0.05%、0.3%、1%。通过Governance(提议和投票)可以添加其他的费率等级。

- 协议费治理:UNI治理在协议费占⼿续费⽐例的设置⽅⾯,拥有更多的灵活性。

- 改进的价格预言机:Uniswap V3提供了一种查询最近的价格累加器值的方法,从而避免了在计算TWAP的起始时间和结束时间检查累加器值的需要。

- 流动性预言机:合约能够显示时间加权平均流动性的预言。

Uniswap V3的无常损失计算相比V2要复杂一些。

上图是V2中的X token、Y token的变化曲线。这整条蓝色的线代表所有用户的流动性。

而在V3中,恒定乘积的公式为:

其中,L的平方是一个常数,相当于k。

[公式][公式]是虚拟出来的,是常数。

在V3中做市,相当于加了个杠杆,因为x余额加了一个数[公式],y余额也加了一个数[公式],所以会导致右边的[公式]会比原来的k大。如果选的价格区间的两个价格点比较近,杠杆就会比较高(因为[公式]更大),无常损失也会更大;如果两个加个点比较远,杠杆就会比较低。

下图是在UniSwap V3的ETH-USDT资金池中注入流动性的截图,可以看到如果我们设置的价格区间的最小值大于现在的价格,我们就只需要投入ETH。

相反,当我们设置的价格区间的最大值小于现在的价格,我们就只需要投入USDT。

Uniswap v3对Uniswap v2引入的时间加权平均价格(TWAP)预言机也进行了重大更改。

最重要的是,Uniswap v3消除了oracle用户从外部跟踪累加器先前值的需要。

Uniswap v2要求用户在想要计算TWAP的时候在其使用的时间段的开始和结束时检查累加器值。而Uniswap v3将累加器检查点引入核心,允许外部合约在最近一段时间内计算链上TWAP,而不存储累加器值的检查点。

另一个变化是,Uniswap v3没有累加价格之和来让用户计算算术平均TWAP,而是log price之和,允许用户计算几何平均TWAP。

最后,Uniswap v3添加了一个流动性累加器,它与价格累加器一起跟踪,价格累加器的值为[公式]每秒钟。这个流动性累加器对于希望在Uniswap v3之上实现流动性挖矿的外部合约非常有用。其他合约也可以使用它来判断哪个池对应的交易对有最可靠的TWAP。

除了时间加权平均价格,Uniswap V3 还在每个区块的开头,跟踪累计了当前的 值(在当前价格区间的虚拟流动性)。 链上其它合约使⽤它,可以使价格预⾔机更加健壮 (例如,在判断使⽤哪种⼿续费率的流动池作为价格预⾔机时)。流动性累加器的值和价格累加器同时存储。

在Uniswap V2中,每个流动池合约保存当前池中资产x和y。在V3中,合约可以被想象成在保存虚拟资产——x和y的值允许你用于描述合约的行为(在两个相邻tick之间),同样遵循固定乘积公式。

然而,不用于保存虚拟资产,流动性合约保存两个不同的值:liquidity(L)和sqrtPrice([公式])。这两个值与虚拟资产x,y之间的关系,可以用下列公式表达:

反过来,这两个值也可以被用于计算虚拟资产x,y,如下:

用L和[公式]非常便利,是因为每次交易只有其中一个会发生变化。在一个tick内交易时,价格(即[公式])变化;当越过一个tick,或者铸造或销毁流动性时,流动性L发生变化。这避免了如果保存虚拟资产,可能产生的一些舍入误差。

基于虚拟资产的流动性计算公式,类似于V2中,在获得手续费之前,基于实际资产初始化流动性ERC20 token数量的公式。某种角度看,流动性可以被认为是虚拟流动性token。

或者,流动性可以被认为是每单位[公式]变化,所对应的token1资产(无论是实际还是虚拟资产)数量变化:

我们保存[公式],而不是P,使得交易计算时无需计算平方根。

全局状态tick([公式])保存当前价格tick的下标,一个带符号整型数,代表当前tick(更具体的说,是低于当前价格最近的一个tick)。这是一种优化(也是避免对数计算精度问题的一种方法),因为在任何时候,都可以基于当前的sqrtPrice计算当前tick。具体而言,在任何时间点,下列等式都是成立的:


当前,已经有部分平台推出了基于Uniswap V3的工具或自动做市策略。

Visor:

Visor是NFT的一个另类应用,与DeFi深度结合。

Visor NFT 金库可以托管用户的个人 UniswapV3 的 LP NFT。Visor NFT 可以帮助用户管理全部的 LP 收益,可以聚合用户的多矿池挖矿收益。

项目方可以利用 Visor NFT,对用户存入的 LP 资产进行时间锁定,也可以作为一种挖矿策略。V3 的价格区间设置,让各 DeFi项目在分发代币时可以指定价格区间来分发奖励,比如高价值区间高奖励。Visor 将允许用户对其 LP NFT 进行质押,允许项目对这些特定价格区间的流动性提供者进行奖励。相比之下,基于 Chef 和 SNX 的两种最常见的奖励项目模式将不兼容 Uniswap LP NFT。

除了Visor,今年的7月3日,Yearn Finance创始人Andre Cronje也在推特上分享了一个在Uniswap上针对无常损失的现收现付制保护市场的原型,名为ProtectionMarket.sol。该合约指定了一个pERC20代币,其功能是一个独立的保险市场,用于保护无常损失,保费由供求关系决定。

相信未来会有更多基于Uniswap V3的合约或者平台出现,也会有更多的DEX转向V3的模式。

Share to:

Author: 火象趣交易

Opinions belong to the column author and do not represent PANews.

This content is not investment advice.

Image source: 火象趣交易. If there is any infringement, please contact the author for removal.

Follow PANews official accounts, navigate bull and bear markets together
PANews APP
US stocks closed higher across the board, with crypto stocks generally rising.
PANews Newsflash