自动做市商核心功能的其中一项,就是自动定价而不依赖链外或线下的报价。
自动定价之所以成为核心功能,是因为它要具备两项功能,一获利,二平衡资产价值。获利就是交易双边的资产,其交易前总值应该等于或大于交易后总值。
这些可交易的资产称为流动池,有的流动池只有两种代币,有的流动池有三种以上代币,依照其交易理论公式的不同而定。
而我们今天要说明的是Curve Finance所使用的定价公式:StableSwap invariant,这是一种混合型恒定加总及恒定乘积公式。
说明StableSwap使用的公式之前,会先简介另外三个公式,恒定总和公式Constant Sum Invariant,恒定乘积公式Constant Product Invariant,恒定均值公式Constant Mean Invariant。
恒定乘积公式Constant Product
由Uniswap 所率先使用也最有名。公式如下:
其中R代表资产的数量,α及β代表资产种类,γ代表手续费,∆代表交易的资产,k是一个恒定常数。
以上的公式,表示用户使用β兑换出α ,所以流动池里的α资产是减少的,β资产是增加的。
而其中加入的β资产是扣掉手续费γ之后的数量。忽略手续费时,这个公式也被简化为X*Y=K 。
下图代表在这个公式下的价格变代。
这张图表示价格的变化,也就是资产的兑换数量关系。当资产A数量多的时候,可以兑换的资产B就减少,表示价格下降。当资产A数量少的时候,可以兑换的资产B增加,表示价格上升。而最重要的是这个兑换曲线是一个双曲线,这表示资产A或资产B在这个公式里,数量不会是零,理想中提供了永远可进行交易的可能性。
恒定总和公式Constant Sum
这个公式是最简单的,公式如下:
其中R是每种资产的数量, k 是常数。我们把价格变化绘制如下图:
这个公式的特点是零滑点,意思就是说,交换多少的资产,就会在兑换价格中呈现而不失真。在其他的公式中,单次交易量越大,当次的价格失真越高;滑点越大,价格的失真度越高,代表产生的损失可能越大。
然后这个公式不会产生无限的流动池。意思就是说,资产A或资产B兑换后,数量是有可能为0的。看上一个恒定乘积公式,在理论上是提供无限的流量池,每个交易结束后都还有资产进行下一个交易。因此,这个公式并不适合做为自动做市的公式。
恒定均值公式Constant Mean
这个公式是恒定乘积公式增加适用性而来的,这个公式允许2个以上的资产,并且加权不再是50/50 。第一个使用的做市商是Balancer ,在不计手续费的情况下满足以下公式。
什么是Dai stablecoin?为什么可以软锚定美元而不脱勾?
Dai是一个标准的ERC-20 Token ,软锚定美元价格的稳定币,由MakerDao创建及管理。任何人都可以透过Maker协议来抵押eth然后生成Dai,这里我就不再深入说明抵押资产的类型区别,
其中R 是每种资产的数量,w是该资产的权重,k 是常数。这个公式,维持了资产加权平均数的恒定,如Balancer 白皮书的封面所示,如下图
各种资产依资产的权重恒定乘积。以上图来说,如果三种资产等重,也就是各占1/3的话,公式为(x*y*z)^(1/3) = k
因为恒定均值做市可以允许多种资产,因此也有人称这种方式为多维度自动做市商( N Dimentional Automated Market Maker) , Balancer就是使用这种模式。
混合型恒定总合及恒定乘积公式Hybrid Constant Sum and Constant Product (aka StableSwap from Cruve whitepaper)
StableSwap 的价格曲线特性是:在代币平衡时较平坦像是恒定总加,代币不平衡时就过渡为类似恒定乘积。如下图中的蓝色曲线。
我们来看看StableSwap是如何推导出这个公式的。
以下是恒定总和公式(下图左)跟恒定乘积公式(下图右)
其中D是所有代币同等数量时,代币的总和。
StableSwap假设恒定总和要有无限杠杆,并且恒定总乘积有零滑点,并且具有放大的效果。因此用X来代表杠杆,乘上恒定总和公式,然后加进恒定乘积公式里面。
此公式当X为0时,是恒定总和,当X为无穷大时接近于恒定乘积,这样的属性是我们所需要的。其中n为代币种类,应为无因次数(dimensionless)不为无穷大。
然后我们让X动态,让资产处于平衡时,能够有一些流动性。
其中的A在资产达到平衡时会是一个常数,当资产越不平衡时则趋近于0。然后将X 代入之前的公式里面。
最终,StableSwap推导出这个混合型的公式。透过白皮书中对公推导的说明,我们了解这个公式想要达到的目的有两个
1、资产趋近平衡时,也能有流动性
2、无论资产是否平衡,都能具备低滑点
白皮书中也给了针对三种代币DAI, USDC及USTD(应该是USDT,这里可能是白皮书笔误) 2019年5月-10月的优化数据,
- 放大系数A 优化为85
- 每次交易手续费0.06%
- 流动利息312% APR
结论
不可讳言地,这个Curve导出的稳定币专用的混合型恒定加总及恒定剩积公式非常的晦涩难懂,在导出的过程之中部份公式也引用也略过了。但是我们虽然没有办法透过推导公式去清楚了解含意,但是透过每一步的推导的说明,在假设公式正确的前提之下,最后的公式的确可以达到Curve所想要的两个效果。
而我个对于这个公式的准确度,倒是抱着比较怀疑的态度,不是说这个公式错了,而是我在想,当资产偏离平衡时,滑点必然出现,而且极端的情况下,一样是会偏离实际价格很大,但我无法确定在这个极端的情况如何实现,但就是就如我在分析恒定乘积公式时所说的,在理论上提供无限的流动性。这里,也是应该同样的说明,在理论上还是会偏离实际价格。
具说另一个公式shell protocol ,也是稳定币公用的自动造市定价公式,不知道我有没有机会一窥究竟呢?
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
以太坊智能合约的生命周期
最近在写一个募资合约时,发现自己对合约的生命周期还不是很了解,该用一个合约管理所有发起的募资,还是一个募资发起一个合约呢?因此查询了官网跟几文章,然后在testnet上测试
原创文章,作者:掘金K,如若转载,请注明出处:https://www.20on.com/120111.html