头部 AMM 项目似乎正在走向聚集流动性的「大同归一」的演变模式。

原文标题:《逆向解构 Curve V2》
撰文:比原链研究院

本以为 Uniswap V3 已经开启了 AMM 通用兑换的巅峰,没想到 Curve V2 是更为艰难的「冈仁波齐峰」。在为技术蝶变而惊喜的同时,我们更惊讶地发现这些头部 DEX/AMM 项目正在走向一种「大同归一」的演变模式,就像今天要讲的 Curve V2 实际上正是一种直接竞争 Uniswap 的通用兑换模式,而在这之前不久,Uniswap V3 也正式携全新的数学模型向 Curve V1 长期霸占的稳定币交易领域干涉和蚕食。本文尝试用逆向解构的方式呈现 Curve V2 的基本数学原理。

基础模型

简单来讲,Curve V2 采用了一种跟 Uniswap V3 非常类似的基本哲学——围绕「均衡点」聚集流动性。两者都并未依赖外部预言机来达成「均衡点」,而是依靠传统 AMM 系统内的交易博弈,直至系统均衡,在 Uniswap V3 里叫「职业做市商 LP 紧跟市场变化调整 range」,在 Curve V3 中其命名为「内部预言机 internaloracle」。作为两大最顶尖的 AMM 项目,可见其对任何外部风险都十分敬畏。虽然没有依赖外部因子,但这两种模型,尤其是 CurveV2,在通用兑换的道路上给出了非常优越的无常损失、集中流动性、提升资本效率、低滑点、动态费用等一系列难题的解决方案。这当然得益于其「变态」的数学模型。

深度研究 | 逆向解构 Curve V2图 1

数学模型最核心的部分是其创造了一条全新形态的曲线。从上图直观来看,两条虚线是恒定乘积曲线,蓝色线是著名的 Curve V1 稳定币兑换曲线,而 Curve V2 构造的黄色曲线具备两个基本特征——

  • 介于恒定乘积曲线和 Curve V1 曲线之间;

  • 其曲线尾部特征拥有明显的恒定乘积曲线拟合。

所以它可以解决什么问题:

  • 继承了 Curve V1 在「均衡点」附近区域超低滑点和聚集流动性的优势;

  • 通过介于恒定乘积曲线和 Curve V1 曲线之间,以及在曲线的中尾部区域向恒定乘积曲线拟合,获得恒定乘积曲线快速响应流动性变化的优势,避免池子流动性枯竭,灵活响应快速的市场变化。

直接来看表达式:

深度研究 | 逆向解构 Curve V2图 2

乍一看十分晦涩,这里再引用一张 KurtBarry 分享在 twitter 上的图:

深度研究 | 逆向解构 Curve V2图 3

稍微有点恍然大悟。没错,CurveV2 的「变态」曲线其实也是脱胎于 Curve V1 表达式。

深度研究 | 逆向解构 Curve V2图 4:CurveV1 表达式

当 K0 趋近于 1 时,即从曲线形态上逼近「均衡点」范围时(对照图 1 来理解),整个 Curve V2 表达式将退化为 Curve V1 表达式,使得兑换曲线拥有 Curve V1 的优良特性。

公式里最复杂的引入变量是 gamma,它的由来要从图 1 中的两条恒定乘积曲线来讲。上方恒定乘积曲线与 Curve V1 表达式共同成就了 V2 曲线的「均衡点」区域范围,而下方恒定乘积曲线是对上方恒定乘积曲线的一个参数化缩小,即

上方恒定乘积曲线:

深度研究 | 逆向解构 Curve V2

下方恒定乘积曲线:

深度研究 | 逆向解构 Curve V2

gamma 是一个很小的正小数,在曲线形态上会比上方曲线更缩进原点。如前所述,CurveV2 需要引入这么一条 gamma 曲线,使得 V2 曲线摆脱 V1 曲线在中、尾段的劣势(流动性枯竭和快速响应汇率变化),也就是让曲线拥有更大的后半段曲率。在这个基本原理的指引下,我们需要逆向来理解表达式的构成——

当坐标变化不断向横纵坐标轴的远方移动时,越趋近无穷大,V2 曲线形态越向下方恒定乘积曲线拟合。即 K0 趋近 gamma,CurveV2 表达式 reduction:

深度研究 | 逆向解构 Curve V2

移项:

深度研究 | 逆向解构 Curve V2

很明显,这将是一条偏向下方恒定乘积曲线的新曲线。

在这里,我们暂时只能从混合曲线的基本构造原理出发,逆向来解释 Curve V2 表达式的构成缘由,即以极限的思想分别向「均衡点」范围逼近以及向横纵远端逼近,表达式会分别 reduction 为 Curve V1 和恒定乘积曲线,以此来实现 Curve V2 将 Uniswap 和 Curve V1 融合的目的,使得这种复杂混合曲线可以支撑通用兑换,并且具备更好的集中流动性和滑点优势,同时保留 Uniswap 对流动性的保护以及对市场汇率突发变化的响应优势。

内部预言机

其实 Curve V2 还有一项非常重要的创新——内部预言机 repegging 机制。这项机制对实施更好的集中流动性以及减缓无常损失是十分有利的。

Curve V2 引入了一种 price_scale 的价格度量,比如池子中有 USDT 和 B_token 两种资产,balance 为 b=[1000,500],汇率上 1 B = 2USDT,则 price 为 p=[1,2],最后相乘获得一种 scaledbalance 为 x=[1000,1000]。

深度研究 | 逆向解构 Curve V2

结合图 1,在均衡点处,scaledbalance 序列内元素相等(恒定乘积特性)——

深度研究 | 逆向解构 Curve V2

随着市场汇率的变化、兑换的发生、LP 做市行为的影响,系统坐标点会逐渐偏离原始「均衡点」,如果不加以纠正曲线形态,不仅会造成流动性的聚集性减弱,还会带来无常损失。

CurveV2 为此提出了 MarketPrice Update 机制:

  • exponentially moving average (EMA) price oracle

  • profit measurement

  • repricing algorithm (depends on i and ii)

概括来讲,系统会通过经典的内部预言机机制 EMA 不断捕获系统内汇率的移动序列,然后不断在每一次交易和做市行为后根据 priceoracle 来更新一种名为收益度量(profit)的变量 Xcp。

深度研究 | 逆向解构 Curve V2

这种变量可以理解为每一次价格偏移距离原始均衡点的幅度,可以直观理解为,如果汇率变化幅度不大,系统公式将依旧以原始均衡点为根基,如果汇率变化非常大,坐标点在曲线上偏移很大,则系统应该重建公式,更换新的「均衡点」根基,以此来缩小无常损失和重新聚集流动性。Xcp 这个变量便是用来量化合适可以更换公式和均衡点的手段。

深度研究 | 逆向解构 Curve V2

如上所述,当 Xcp 突破阈值后,系统会根据此时更新的 oracleprice 来更新 price_scale,以此来为新公式定位新的均衡点位置,随后更新新的 D 值,获取新的表达式。

这样,原本固定的 Curve V1 曲线便会随着场内汇率的大偏移不断变换均衡点,使得永远在当前汇率附近具备最大的流动性,及时对抗套利者,减缓无常损失。论文中有关于此项机制非常详细的参数化定义,也是实现的复杂之处。

总结

Michael Egorov 一如既往地不愿意多说,所以我们看 Curve V2 非常晦涩。本文介绍了 V2 引领性的两大创新机制:新曲线和 repegging。这条新曲线不仅静态复杂,还拥有了动态属性,可以根据 EMA 和 Xcp 智能响应系统偏移,让池子流动性最大化地聚集在当前汇率范围内,极大地提高了动态资本效率,这是可以超越 Uni V3 的地方。我们最终会发现,CurveV2 可以与 Uni V3 再组合。