接着上一片的curve V1的钻研(https://segmentfault.com/a/11...),始终把curve V2的整顿利落到了当初。真的好难好难~~

背景

在Uniswap v3中,流动性提供者可能定义他们违心交易的价格来定义区间流动性。这很弱小,因为它容许AMM在人们可能想要交易的价格范畴内领有更多可用资金。以前,大宗交易可能会使AMM与市场重大脱节,以至于交易者可能会缩小交易量。Uniswap v3办法须要LP十分踊跃的治理。 curve v2提议将大致相同的零碎自动化。 基本上,它依据Curve上的交易确定一个外部价格挂钩,并将流动性集中在这个挂钩上。钉子能够挪动,但只有在挪动不会导致流动性提供者产生太大的损失时才会这样做。

简介

CurveV2采纳的根本理念与UniswapV3十分类似--围绕 "均衡点"汇集流动性。两者都不依附内部预测器来达到 "均衡点",而是依附传统的AMM零碎外部的交易博弈,直到零碎平衡,curve v2和uniswap v3一样,都非常重视任何内部危险。尽管不依赖于内部因素,但这两种模式,特地是Curve V2,为通向广泛替换路线上的一系列挑战提供了十分优越的解决方案,如极低的无常损失、集中流动性、进步资本效率、低滑点、动静费用等。这当然是因为其 "反常 "的数学模型。

该数学模型最外围的局部是其发明了一种全新的曲线模式。从上图的视觉效果来看,两条虚线是恒定的产品曲线(xy=k和curve v1),蓝线是驰名的curve V1稳固的硬币兑换曲线,而曲线V2结构的黄色曲线有两个基本特征--

(1) 它处于xy=1和curve V1曲线之间。

(2) curv1的尾部特色具备显著的xy=1曲线拟合。

所以,curve V2能够解决什么问题?

(a) 它继承了curve V1在 "平衡点 "左近区域的超低滑动性和汇集流动性方面的劣势。

(b) 通过在xy=1曲线和curve v1之间,以及在曲线的两头和尾部进行拟合,它取得了xy=1曲线对流动性变动快速反应的劣势,防止了池子里的流动性耗尽,对市场的疾速变动作出了灵便的反馈。

公式推导

在我上一篇Curve V1的数学模型(https://segmentfault.com/a/11...)中,拟合后的曲线的表达式是如下所示。

$$ An^n\sum{x_i} + D = ADn^n + \frac{D^{n+1}}{n^n\prod{x_i}} $$

Curve V2的数学模型和Curve V1相似:

$$K D^{N-1} \sum x_{i}+\prod x_{i}=K D^{N}+\left(\frac{D}{N}\right)^{N}$$

其中,和curve V1一样,Curve V2也有一个杠杠率$K$。这个\(K\)是用来和曲线xy=1拟合的。

$$K_{0}=\frac{\prod x_{i} N^{N}}{D^{N}}, \quad K=A K_{0} \frac{\gamma^{2}}{\left(\gamma+1-K_{0}\right)^{2}}$$

下面这个看起来比拟难了解。看下图可能就不难理解了。\( K_{stableswap} \) 是curve v1的常量,咱们能够看到curve V2中\( k_{0} \) 是\( K_{stableswap} \)当A=1的时候的非凡状况。所以, \( K_{curveSwap} = K_{StableSwap} \frac{\gamma^{2}}{\left(\gamma+1-K_{0}\right)^{2}} \)。艰深的解释就是,CurveSwap 就是 stableswap 算法中 w / decaying A。

当K0趋于1时,即当曲线状态靠近 "平衡点 "范畴时(对照图1了解),整个Curve V2的表达方式将进化为Curve V1的表达方式,从而使赎回曲线具备Curve V1的良好个性。

Gamma

公式中引入的最简单的变量是gamma,它来自图1中的两条恒积曲线。上常量积曲线和curve v1的表达式独特形成了V2常量积曲线的 "平衡点 "区域,而下常量积曲线是上常量积曲线的参数化还原,即

$$x \cdot y=\left(\frac{D}{N}\right)^{N}$$

咱们把常量乘以一个gamma值:

$$x \cdot y=\gamma \cdot\left(\frac{D}{N}\right)^{N}$$

gamma是一个十分小的正小数,在曲线形态上会比下面的曲线更缩进原点。CurveV2须要引入这样一条gamma曲线,使V2曲线在中段和尾段解脱curve v1的毛病(流动性枯竭和对汇率变动的快速反应),也就是说,使曲线在后半段有更大的弧度。随着坐标变动一直向横轴和纵轴的远方挪动,它们越是向无穷大收敛,V2的曲线形态就越合乎上面的常积曲线。也就是说,K0收敛到gamma,CurveV2的表达式就会缩小。

$$A \gamma^{3} D^{N-1} \sum x_{i}+\prod x_{i}=A \gamma^{3} D^{N}+\left(\frac{D}{N}\right)^{N}$$

很显著,这是一条新的曲线,它偏差于上面的恒定产品曲线。在这里,咱们只能从混合曲线的根本结构原理登程,反向解释曲线V2表达式的形成,即通过别离向 "均衡 "范畴和程度方向和垂直方向的远端凑近,使表达式别离还原为curve V1和恒积曲线。曲线,从而达到curve V2整合Uniswap和curve V1的目标,使这种简单的混合曲线可能反对广泛的可兑换性,具备更好的集中流动性和滑移性的劣势,同时保留Uniswap的流动性爱护和应答市场汇率忽然变动的劣势。

Internal Oracle

CurveV2提出了MarketPrice更新机制,这是一种更新市场的市场价格的机制。更新机制包含:

i)指数挪动平均线(EMA)价格

ii)估算利润 (Quantification of a repegging loss)

iii)从新定价算法(取决于i和ii)(Algorithm for repegging)

概括地说,零碎通过经典的外部预言机机制EMA一直捕获零碎内的汇率变动序列,而后在每次交易和做市口头后,依据priceoracle不断更新一个名为利润测量\( X_{cp} \)的变量:

$$X_{c d}=\left(\prod \frac{D}{N p_{i}}\right)^{\frac{1}{N}}$$

报价:

$$VirtualPrice=X_{CD} / lpsupply$$

监听OldPrice的价格变动,

$$profit = profit * NewVirtualPrice / OldVirtualPrice $$

这个变量能够解释为每次价格偏离原平衡点的幅度,能够直观地了解为,如果汇率变动不大,零碎公式仍以原平衡点为根底,如果汇率变动太大,导致坐标点在曲线上显著偏移,那么零碎就应该重建公式,用新的 "平衡点 "基数代替 变量Xcp用来量化扭转公式和平衡点的伎俩。

Adjust

当满足以下条件的时候,调整新的锚定/均衡价格点:

$$(VirtualPrice - 1) > (profit - 1)/2 + allowedExtraProfit $$

咱们能够基于新旧的oracle价格计算出scale值,当scale大于某个阈值的时候,就会更新价格。

$$\frac{p_{i}}{p_{i, p r e v}}=1+\frac{s}{\sqrt{\sum\left(\frac{p_{j}^{*}}{p_{j, p r e v}}-1\right)^{2}}}\left(\frac{p_{i}^{*}}{p_{i, p r e v}}-1\right)$$

如上所述,当Xcp冲破阈值时,零碎会依据此时更新的oracleprice更新price_scale,从而定位新公式的新平衡点地位,随后更新新的D值,失去新的表达式。

总结

Curve V2做出了两个翻新:新的curve曲线和repegging机制。这个新曲线不仅动态简单,而且具备动静个性,能够依据EMA和Xcp对系统的偏移做出主动反馈,使池子里的流动性在以后汇率范畴内失去最大水平的汇集,大大提高了动静资本效率,这是能够超过Uni V3的。

不愧是宇宙第一难defi协定。