从 Uniswap v3 到 crvUSD LLAMMA

0xmc等热度: 16022

当 ETH 价格上涨时,矿池购买 ETH。当 ETH 下跌时,矿池出售 ETH。

原文作者:0xmc, 0xjezex, 0xstan@0xreviews , [email protected]

原文来源:curve.wiki

作者介绍:

0xmc@0xreviews : 机制审计、产品设计、密码经济学独立研究员。

0xjezex@0xreviews : 代币经济学独立研究员,初级 Solidity 工程师,伦敦帝国理工学院金融科技硕士生。

0xstan@0xreviews : 独立开发者,DappLearning 核心贡献者。

[email protected] : Solidity 开发者、安全研究员、DeFi 爱好者。

前言

Curve 稳定币最难的部分是 LLAMMA(AMM for continuous liquidation/deliquidation)。LLAMMA 参考了 Uniswap v3 中的一些原则。但是,白皮书中的价格与 Uniswap v3 白皮书中的算法不同。我们将统一这两个项目,并尝试了解 Curve CEO 是如何设计这个演算法。


用 Uniswap v3 作为参考

本文中价格的定义与 Uniswap v3 互为倒数。因此,我们修改了 Uniswap v3 白皮书中的公式,让它与本文保持一致。简而言之,LLAMMA 试图让 Uniswap v3 中的一切都变得动态,以便为 crvUSD 债务人和清算人提供更适当的价格。


恒定乘积公式 (Constant Product Fomula) 比较

Uniswap v3 白皮书中的公式 (2.2):


uniswap

uniswap

图一:Uniswap v3 虚拟流动模拟


Curve 稳定币白皮书中的公式 (1):


uniswap

uniswap

图二: 有外部价格来源的 AMM


在这裡 Pcd 代表 Pcurrent_down, Pcu 代表 Pcurrent_up

而对应关係为:


uniswap


对应的恒定乘积公式为:


uniswap


而在这之间:


uniswap


流动性计算公式对应


Uniswap v3 白皮书中的公式 (6.7) :


uniswap


由于它们的价格定义之间存在倒数关係,对应的公式为:


uniswap


此公式的一个具体应用是:


uniswap


平方展开可以得到:


uniswap


从上面的公式我们很容易的可以了解,当 y0 保持不变,Pcd 和 Pcu 数值越接近,相对应的流动性 I 则越大。


换句话说:


uniswap


流动性不可能是无限的,在 Uniswap V3 中对应最小的 tick 会限制 L 的大小。

由此可以推断在 LLAMMA 中,我们还需要定义一个指标来衡量价格之间的最小差异,来继续 Uniswap v3 和 Curve 的类推。

对应最小差价


uniswap


从 A 的定义中可以看出 , 当 p↓ 和 p↑ 越接近时 , A 则越大,流动性集中度越高:


uniswap


Uniswap v3 中,只有能被 tickSpacing 整除的 tick 才能被预设。因此,tickSpacing 决定了 LP 分配流动性的最低价格范围。tickSpacing 越小,价格范围越窄、越精确。在 Uniswap v3 中,不同的费用等级决定了不同的 tickSpacing。

然而,crvUSD LLAMMA 不需要那麽多 tickSpacing。由于 LLAMMA 仅有 ETH-crvUSD, 因此只需要让每一个 tickSpacing = 100basepoint。 

来自 Uniswap v3 的公式 (6.1):


uniswap


在 LLAMMA 中,A=100,来自 Curve 稳定币白皮书的公式 (11):


uniswap


设置 n = -i, A=100, 我们会得到:


uniswap


设计 Pcd 和 Pcu


我们希望 LLAMMA 具有以下属性:当 ETH 价格上涨时,矿池购买 ETH。当 ETH 下跌时,矿池出售 ETH。在这样的机制下,我们把 Pcd 和 Pcu 定义为 Po 的函数并且比线性函数更陡峭,因此它们的增长率会比 Po 更快。 同时从图中可以看出两条曲线 Pcu 和 Pcd 分别通过两点 ( P↓ , P↓ ) 和 ( P↑ , P↑ ) 。满足以上要求的 Pcd 和 Pcu 其实有很多曲线。通用公式为:


uniswap


当 m < n

让我们从最简单的例子开始:


uniswap


把 Pcu 和 Pcd 带入 I 的平方展开:


uniswap


然后 f² 可以计算为:


uniswap


不难发现 f² 在这种假设下很难理解和计算。如果 Pcu 和 Pcd 是 Po 的三次函数:


uniswap


把 Pcu 和 Pcd 带入 I 的平方展开:


uniswap


重新计算 f²:


uniswap


可以看出,当 Pcu 和 Pcd 是 Po 的三次函数,整个数学形式就简单多了。去掉了平方根项,计算方便多了。如果接受更高的订单,则 AMM 的价格和 Po 将相差很大,因此购买 ETH 的成本(当价格上涨时)会更高,而导致更大的清算损失。总之,把 Pcu 和 Pcd 定义为 Po 的三次函数是一个更好的选择。


其他参数的推导

Pcu 和 Pcd 是关于 Po 的三次函数, 取特别数值 Po = P↑, 不难得到 Y = Y0 和 X = 0,于是:


uniswap


鉴于 I 的公式,我们可以计算 f 和 g:


uniswap


在这边,我们最终得到完整的恒定乘积公式:


uniswap


将上方公式转化为 Y0 二次方程式:


uniswap


用一个未知数的二次方程求解 Y0:


uniswap


如果价格变动的够慢让预言机价格 Po 完全有能力遵循它,给定 X 和 Y,使用 Uniswap v3 的计算公式,是有可能计算出 ETH 的 Y↑ 是多少(如果价格上涨)或美元的 X↓ 最终将处于的区间内(如果价格下跌):


uniswap


参考出处:
Adams, Hayden, et al. "Uniswap v3 core." Tech. rep., Uniswap, Tech. Rep, 2021 from https://uniswap.org/whitepaper-v3.pdf
Egorov, Michael, and Curve Finance. Curve stablecoin design. Technical report, Curve Finance, Tech. Rep, 2022 from
https://github.com/curvefi/curve-stablecoin/blob/master/doc/curve-stablecoin.pdf


声明:本文为入驻“MarsBit 专栏”作者作品,不代表MarsBit官方立场。
转载请联系网页底部:内容合作栏目,邮件进行授权。授权后转载时请注明出处、作者和本文链接。未经许可擅自转载本站文章,将追究相关法律责任,侵权必究。
提示:投资有风险,入市须谨慎,本资讯不作为投资理财建议。
免责声明:本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况,及遵守所在国家和地区的相关法律法规。
关键字:uniswapcurve