Curve V1数学模型

curve,uniswap是Defi Developer的必学协议。在亮神的指导下我把白皮书和源码都过了一遍,但私底下还是要把最重要的部分整理一下。

背景

Curve V1要解决的问题就是稳定兑换问题。Uniswap V2的AMM公式xy=k的滑点太高了。Curve V1其实希望可以没有滑点1:1兑换。但是这个明显不太现实。如下图,红色虚线的 Constant Price是 x + y = const。紫色虚线就是 uniswap的AMM公式,xy=const。我们可以看到,红色线的兑换的价格滑点比紫色的小得多。所以,curve希望构建一个蓝色的曲线,“尽可能贴合”红色虚线。这就是curve的最核心的思想。

image.png

公式推导

假设在有n个组合的交易池中进行交易,考虑极端无滑点情况即永远1:1兑换,即存在守恒量

$$ \sum{x_i} = D $$

其中xi为第i个代币数量,所有代币数量和为常量。方便起见假设xi = D/n,考虑uniswap中存在滑点的常量积公式为
$$\prod{x_i} = (\frac{D}{n})^n$$

公式1是一种考虑极端无滑点的情况,可以理解为无穷杠杠;公式2是一种考虑了滑点的情况,等价于0杠杠。我们要去思考在两种极端的情况下取平衡。所以,设置了杠杠率X,让公式1和公式2进行线性加权。将以上两个极端情况进行线性组合成为适合稳定币的报价函数,组合系数选取为$$\chi{D^{n-1}}$$以满足量纲要求。最终得到
$$\chi{D^{n-1}}\sum{x_i} + \prod{x_i} = \chi{D^n} + (\frac{D}{n})^n$$

同时,如果上式始终成立,公式会依赖参数杠杠率X进行交易。 但是,参数X不支持远离理想价格 1.0 的价格。(上面的公式只支持当价格为$1的流动性支持)为了保证在任意价格都能提供流动性,这里取组合系数为变量,适当增加了交易数量对价格的影响。curve工程师们对参数X进行了函数定义:

$$ \chi = \frac{A\prod{x_i}}{{(D/n)}^n} $$

这里A为常数。由公式可知当每个代币数量均相等时$$\chi=A$$为常数,当不相等时$$\chi$$变小产生更多滑点,公式趋向amm形式。最终得到

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

把上面的公式移项目就可以得到AMM的最终求根公式:

$$ y^{2}+\left(\frac{D}{A n^{n}}+\sum_{j \neq \text { out }} x_{j}^{\prime}-D\right) y-\frac{D^{n+1}}{A n^{2 n} \prod_{j \neq \text { out }} x_{j}^{\prime}}=0 $$

求解方法

虽然我们得到了上面的求根公式,但是实际代码里是用牛顿法来求解的:

image.png

如图所示,不断在xi点做切线,其与横轴交点横坐标得x{i+1},通过这种不断迭代的方式逼近函数零点。迭代公式为
$$x_{i+1} = x_i-\frac{f(x_i)}{f'(x_i)}$$

最后

vyper这个语言跟python好像~~~

说服自己已经很难了,哪还有精力去说服你~

4 声望
4 粉丝
0 条评论
推荐阅读
解剖最深奥的Defi协议-- curve V2
在Uniswap v3中,流动性提供者能够定义他们愿意交易的价格来定义区间流动性。这很强大,因为它允许AMM在人们可能想要交易的价格范围内拥有更多可用资金。以前,大宗交易可能会使AMM与市场严重脱节,以至于交易者...

晨曦夕阳阅读 1.4k

【牛客小白月赛70】A-F题解【小d和超级泡泡堂】【小d和孤独的区间】【小d的博弈】【小d和送外卖】
🎈 作者:Eriktse🎈 简介:19岁,211计算机在读,现役ACM银牌选手🏆力争以通俗易懂的方式讲解算法!❤️欢迎关注我,一起交流C++/Python算法。(优质好文持续更新中……)🚀🎈 阅读原文获得更好阅读体验:[链接]

Eriktse阅读 546

JSBI-Calculator——兼容IE11的高精度大数值四则计算JS库组件
JSBI-Calculator是一个IE11兼容的计算器JS库组件,用于实现高精度(至多18位小数)大数值四则运算,基于由谷歌Chrome实验室出品的JSBI封装的BigDecimal。

冒泡的马树阅读 408评论 3

竟然支持在流程图、架构图中添加数学公式,安利一款纯免费的画图工具,真不错!
考虑到在绘图中需要添加数学表达式的场景,PDDON提供了LaTeX表达式编辑能力,可以在任何可以编辑的组件上启用LaTeX功能,使用LaTeX语法编写数学公式即可。

PDDON阅读 395

封面图
21根灵感棒的组合分析
一、预备知识如上图所示根据灵感棒的长短对灵感棒进行编号。盒中共有3层,每层有3个仓位,一共有9个仓位。如果一个仓位满了,我们称为满仓位;如果一个仓位不满(大约剩余一个圆柱的直径),我们称为半仓位。我们称...

DuDo阅读 355

C语言实现模重平方算法
以2^5 mod 7 举例计算由后半部分蓝字可看出算法的原理即将2^5 mod 7 拆分成 (2^1 mod 7)*(2^4 mod 7) mod 7对于大指数,即将很大的数如1234567890123转化为二进制数只有41位,大大减少mod运算的数量(若按顺序做...

Way阅读 308

【ACM博弈论】SG函数入门(1):从巴什博奕到尼姆游戏
其实博弈题是有比较套路的解题方法的,那就是利用SG函数,第一节不会讲到SG函数的具体用法,我们先来博弈入个门,学习一下最基本的博弈类型:Nim游戏。

Eriktse阅读 276

说服自己已经很难了,哪还有精力去说服你~

4 声望
4 粉丝
宣传栏