Uniswap V3核心技术解析:集中式流动性、资金利用率及计算公式详解

2025-04-17 07:04:52

V3发行后立即引起广泛的关注。与V2相比,逻辑和代码更为复杂。 V3的核心是通过市场范围提供流动性(集中流动性),以解决LP提供流动性时的资本利用问题。什么是资本利用率?如何得出V3中间隔流动性的计算公式?如何了解流动性?如何计算交换费?本文以V3技术白皮书的详细分析开始。

首先,提供有关V3的一些官方信息:

建议先仔细检查技术白皮书,然后查看智能合约代码,最后将其与官方介绍进行比较。在了解技术白皮书之后,该代码非常容易理解。技术白皮书的第一章总结了V3的技术特征,最核心的概念是“”(集中流动性)。

基金利用率

让我们看一下V2的资本利用率:

图片

上图显示了基金库中X/Y的数量变化曲线。基金池中的当前价格是在C点,并假设它将在价格A和价格b之间波动。从点C到A点A的滑动最大,并且从点C到B点滑动的消耗量最高。换句话说,如果当前价格C在点A和B点之间振荡,则仅需要最大消耗。从理论上讲,只是提供并且足​​够。实际上,如上图所示,在价格C,X和Y上分别提供了上述。可以清楚地看出,在这种情况下,X和Y的资金将永远不会使用,这称为“空闲资金”。

在这种情况下,资本利用率为 /x或 /y。如果价格的波动很小,那么资本利用率就非常低。 V3试图解决低资本利用的问题。这个想法相对简单。所有资金只能将其添加到一定范围内,只能添加到价格可能波动的范围内。如何在一定范围内添加流动性并提供掉期功能是V3的重点。让我们从它开始。

虚拟基金池()

产品固定模型(x*y = k)用于交易。所谓的虚拟基金池()是指仍在产品固定曲线上的基金池,仅在一定范围内提供流动性:

图片

该图中的深绿色曲线是虚拟资本池遇到的产品固定曲线。实际上,所需资金的曲线与图片一样橙色。橙色曲线公式如下:

图片

您可以想象虚拟资本曲线在X/Y轴上翻译,因此A/B点和X/Y轴重合。换句话说,一定数量的资金可以达到“虚拟”交易曲线的效果。

如何计算如何在一定范围内提供虚拟基金池,我们必须首先从深入了解流动性开始。

流动性(-L)

固定产品交易模型满足基金池中的两个令牌金额:x*y = k。如果设置了k = l^2,则x*y = l^2。 L是我们所说的流动性。以下公式来自固定产品交易模型:

图片

在已知L和SQRT(P)的情况下,也可以得出资本需求X和Y。

图片

通过公式6.6,当流动性保持不变(不增加和删除流动性)时,流动性可以视为资金单位“价格波动”数量的变化。 “价格波动”被引用为报价,因为它实际上是SQRT(P)的变化。

图片

这是V3(6.7)的核心公式,它使用相对值(资本和价格的相对值)来计算流动性。所谓的流动性是单位“价格变化”的资金数量。在一定的交易量下,如果流动性良好,价格的变化将很小,如果流动性不足,价格会大大波动。

图片

特别指出的是,一个范围内的流动性与V2的普遍流动性不同。范围内的流动性着重于“范围”。不同范围内没有可比的流动性。 V2的流动性与该范围的流动性之间的差异如下:

图片

V2的流动性是“通用”,在所有价格点上流动性都是相同的。 V3的流动性由不同间隔内的一系列流动性组成。相对而言,流动性在目前的价格附近相对较高。流动性提供商有限公司只有在提供可用于交易的流动性时才能获得交易费用。为了获得更多的交易费用,为了增加资金的利用,流动性提供商将在合理的价格波动范围内提供资金。换句话说,只有间隔的流动性提供商才能在交易中获得交易的处理费。为了计算每个间隔获得的处理费,介绍了刻度的概念和计算方法。

打钩

在间隔上提供流动性带来了许多复杂的情况:间隔和间隔的重叠覆盖范围。由于不同范围中的流动性是不可比的,因此不能将一定的交易费用混入流动性中,并且在删除流动性时将一起撤回。为了解决这个问题,V3介绍了tick的概念。交易费用实时结算并单独记录,并且不混合到流动性中。尽管整个间隔和间隔的流动性不可比较,但在特定价格点(价格表上)的流动性是可比的。 V3将整个价格范围(无限为正无穷大)划分为壁虱(价格点):

后一个价格点的价格是基于上一个价格点的浮动价格的十分之一。

图片

每个刻度也都有一个唯一的序列号。 ()可以用两个tick表示。从逻辑上讲,交易费用可以一一计算,并且可以根据流动性的比例在每个刻度上分配事务。让我们首先看一下在刻度范围内的互换的计算。

交换tick

假设有很少的y,并且需要交换为x。通过6.13中的公式,可以计算由Y变化引起的价格变化。

图片

然后使用公式6.15来计算交换的X量。

图片

V3为同一交易对设定了不同的交易费用:0.05%,0.3%和1%(可以添加其他费率)。如果您从y将其交换为X,则将在交易交易之前扣除上述交换。

在同一交易池中仅支持一个率。也就是说,交易池中支持不同的价格范围,但它们的价格都是相同的。如果您需要为同一交易对添加具有不同交易费用的交易池,则必须创建一个新的交易池。

接下来,让我们深入解释添加/删除流动性和交易费用的计算逻辑。

添加/删除流动性

V3的增加/删除流动性是在当前价格情况下的一定范围内增加或删除流动性。所有流动性的流动性增加/流动性均用作以下公式:

图片

请注意,价格变化不是指该范围的大小,而是在一定范围内提供流动性。与当前价格相比,价格变化对应于“需要相应的资本变化”。

它分为三种情况:您要添加的流动性范围与当前价格之间的关系。

图片

由于价格在范围内,如果价格落到IL,则需要提供Y资金。如果价格滑到IU,则需要提供相应的X资金。因此,为了价格变化,是SQRT(P)-SQRT(P(iL));为了价格,更改为1/sqrt(p)-1/sqrt(p(iu))。

图片

由于目前的价格远低于IL,即使您从当前价格滑到IU,您也只需要X资金,而不是Y资金。因此,在这种情况下,= 0。因为从IL滑到IU需要在整个范围内为X提供资金,因此价格更改为1/sqrt(il)-1/sqrt(p(iu))。

与第一种情况相似,未重复分析。

交易费用

最复杂的逻辑是计算交易费用并分配它们。在添加和删除流动性之前,需要撤回相应的交易费用。

某个tick上可能会有多个间隔。计算交易费用时,有必要在此刻度上以多个间隔将这些费用传播给所有总流动性。在每个间隔的边界的刻度上记录记录(所有间隔的流动性的总和作为边界)。

有一个全球状态:节省与tick相对应的当前价格的流动性总和。当价格波动时,流动性将增加或减少(取决于价格波动的方向)。例如,价格从左到右通过间隔。当它通过间隔的第一个刻度时,流动性需要增加。当它超越最后一个壁虱时,流动性需要减少。中间的壁虱没有增加或减少流动性(0)。

图片

计算范围内的交易费率,并使用减去范围之外的费率的方法。记录一个间隔的边界刻度。所谓的是“其他方向”的总成本率。另一个方向是相对于通过当前壁虱的方向。当价格从左到右通过一个滴答作用时,它是指tick左侧的所有间隔的成本率。简而言之,价格应该朝着所有范围的方向相反。由fo表示。由于FO是两个方向的两个方向上的总费用,因此两个方向的费用率的总和绝对等于FG(全球费用率)。因此,当您通过tick时,需要翻转此滴答的FO:

创建间隔时,需要初始化间隔边界上的tick fo:

图片

如果目前的价格大于tick价格,因为即使当前价格在设定范围内,也不会分配以前的费用,因此您可以简单地想象所有费用发生在tick价格以下,即FO = FG。如果tick的价格大于当前价格,则假设所有先前发生的费用都出现在tick价格以下,则价格尚未通过tick,因此tick上方没有费用,因此fo = 0。基于理解这些逻辑,在交换过程中,价格在一定范围内波动,费用超过最高tick的费用,而费用率低于最低刻度的费用,可以通过以下方式计算以下方式:

图片

以低于最低刻度的费率计算为例,如果IC> = i(当前价格高于最低刻度),则低于tick的所有费率均为FO(SO定义)。如果IC

根据获得的费率,将费用乘以间隔的流动性可以计算在间隔中收取的费用。

总结:

V3版本的核心思想是流动性集中。流动性提供者可以在一定范围内提供流动性,以增加资本利用。在该范围内的所有流动性提供者平均分配了在一定范围内获得的交易费用。 V3设计了间隔粒度钉,并得出了流动性增加/删除和成本计算的过程。基于此,V3还更新了价格的实施。

图片

明星的想法

技术改变了世界

标签: uniswap
首页
欧意注册
欧意下载
联系