以为UniV3已经开启了AMM通用兑换的巅峰,没想到CurveV2是更为艰难的“冈仁波齐峰”。在为技术蝶变而惊喜的同时,我们更惊讶地发现这些头部DEX/AMM项目正在走向一种“大同归一”的演变模式,就像今天要讲的CurveV2实际上正是一种直接竞争Uniswap的通用兑换模式,而在这之前不久,UniV3也正式携全新的数学模型向CurveV1长期霸占的稳定币交易领域干涉和蚕食。本文尝试用逆向解构的方式呈现CurveV2的基本数学原理。
基础模型
简单来讲,CurveV2采用了一种跟UniswapV3非常类似的基本哲学——围绕“均衡点”聚集流动性。两者都并未依赖外部预言机来达成“均衡点”,而是依靠传统AMM系统内的交易博弈,直至系统均衡,在UniV3里叫“职业做市商LP紧跟市场变化调整range”,在CurveV3中其命名为“内部预言机internaloracle”。作为两大最顶尖的AMM项目,可见其对任何外部风险都十分敬畏。虽然没有依赖外部因子,但这两种模型,尤其是CurveV2,在通用兑换的道路上给出了非常优越的无常损失、集中流动性、提升资本效率、低滑点、动态费用等一系列难题的解决方案。这当然得益于其“变态”的数学模型。
数学模型最核心的部分是其创造了一条全新形态的曲线。从上图直观来看,两条虚线是恒定乘积曲线,蓝色线是著名的CurveV1稳定币兑换曲线,而CurveV2构造的黄色曲线具备两个基本特征——
介于恒定乘积曲线和CurveV1曲线之间;
其曲线尾部特征拥有明显的恒定乘积曲线拟合。
所以它可以解决什么问题:
继承了CurveV1在“均衡点”附近区域超低滑点和聚集流动性的优势;
通过介于恒定乘积曲线和CurveV1曲线之间,以及在曲线的中尾部区域向恒定乘积曲线拟合,获得恒定乘积曲线快速响应流动性变化的优势,避免池子流动性枯竭,灵活响应快速的市场变化。
直接来看表达式:
乍一看十分晦涩,这里再引用一张KurtBarry分享在twitter上的图:
稍微有点恍然大悟。没错,CurveV2的“变态”曲线其实也是脱胎于CurveV1表达式。
当K0趋近于1时,即从曲线形态上逼近“均衡点”范围时,整个CurveV2表达式将退化为CurveV1表达式,使得兑换曲线拥有CurveV1的优良特性。
公式里最复杂的引入变量是gamma,它的由来要从图1中的两条恒定乘积曲线来讲。上方恒定乘积曲线与CurveV1表达式共同成就了V2曲线的“均衡点”区域范围,而下方恒定乘积曲线是对上方恒定乘积曲线的一个参数化缩小,即
上方恒定乘积曲线:
下方恒定乘积曲线:
gamma是一个很小的正小数,在曲线形态上会比上方曲线更缩进原点。如前所述,CurveV2需要引入这么一条gamma曲线,使得V2曲线摆脱V1曲线在中、尾段的劣势,也就是让曲线拥有更大的后半段曲率。在这个基本原理的指引下,我们需要逆向来理解表达式的构成——
当坐标变化不断向横纵坐标轴的远方移动时,越趋近无穷大,V2曲线形态越向下方恒定乘积曲线拟合。即K0趋近gamma,CurveV2表达式reduction:
移项:
很明显,这将是一条偏向下方恒定乘积曲线的新曲线。
在这里,我们暂时只能从混合曲线的基本构造原理出发,逆向来解释CurveV2表达式的构成缘由,即以极限的思想分别向“均衡点”范围逼近以及向横纵远端逼近,表达式会分别reduction为CurveV1和恒定乘积曲线,以此来实现CurveV2将Uniswap和CurveV1融合的目的,使得这种复杂混合曲线可以支撑通用兑换,并且具备更好的集中流动性和滑点优势,同时保留Uniswap对流动性的保护以及对市场汇率突发变化的响应优势。
内部预言机
其实CurveV2还有一项非常重要的创新——内部预言机repegging机制。这项机制对实施更好的集中流动性以及减缓无常损失是十分有利的。
CurveV2引入了一种price_scale的价格度量,比如池子中有USDT和B_token两种资产,balance为b=,汇率上1B=2USDT,则price为p=,最后相乘获得一种scaledbalance为x=。
结合图1,在均衡点处,scaledbalance序列内元素相等——
随着市场汇率的变化、兑换的发生、LP做市行为的影响,系统坐标点会逐渐偏离原始“均衡点”,如果不加以纠正曲线形态,不仅会造成流动性的聚集性减弱,还会带来无常损失。CurveV2为此提出了MarketPriceUpdate机制——
i)exponentiallymovingaverage(EMA)priceoracle
ii)profitmeasurement
iii)repricingalgorithm(dependsoniandii)
概括来讲,系统会通过经典的内部预言机机制EMA不断捕获系统内汇率的移动序列,然后不断在每一次交易和做市行为后根据priceoracle来更新一种名为收益度量的变量Xcp。
这种变量可以理解为每一次价格偏移距离原始均衡点的幅度,可以直观理解为,如果汇率变化幅度不大,系统公式将依旧以原始均衡点为根基,如果汇率变化非常大,坐标点在曲线上偏移很大,则系统应该重建公式,更换新的“均衡点”根基,以此来缩小无常损失和重新聚集流动性。Xcp这个变量便是用来量化合适可以更换公式和均衡点的手段。
如上所述,当Xcp突破阈值后,系统会根据此时更新的oracleprice来更新price_scale,以此来为新公式定位新的均衡点位置,随后更新新的D值,获取新的表达式。
这样,原本固定的CurveV1曲线便会随着场内汇率的大偏移不断变换均衡点,使得永远在当前汇率附近具备最大的流动性,及时对抗套利者,减缓无常损失。论文中有关于此项机制非常详细的参数化定义,也是实现的复杂之处。
总结
MichaelEgorov一如既往地不愿意多说,所以我们看CurveV2非常晦涩。本文介绍了V2引领性的两大创新机制:新曲线和repegging。这条新曲线不仅静态复杂,还拥有了动态属性,可以根据EMA和Xcp智能响应系统偏移,让池子流动性最大化地聚集在当前汇率范围内,极大地提高了动态资本效率,这是可以超越UniV3的地方。我们最终会发现,CurveV2可以与UniV3再组合。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。