ETH:分析 | Uniswap的恒定乘积算法里的K值是如何设计的?_SDT

作者:闪电黄世亮

本文介绍uniswap里的恒定乘积算法中的K值是怎么设计的。

我们拿uniswap里的一个交易对,ETH/USDT来举例说明K值是怎么设计的。

恒定乘积算法

uniswap里第一个人添加x个ETH和y个USDT的作为流动性时,决定了K值的初始大小,即K=x*y。

这时,ETH和USDT共同构成了一个流动性池。请记住这个概念,很重要。

第一个添加流动性的人,可以任意添加交易对中的两个币的数量,即可以任意决定K值。

分析 | 币价飞速上升,但场外资金仍在观察:OKEx平台BTC价格指数在上周上涨18.9%(截至香港时间10月27日24:00),收获了六月中旬以来最大的周涨幅;周振幅也达到39.34%,为2018年11月中旬以来最大值。上周比特币于$8200一线开盘,但在周三晚间出现快速下跌,最低曾至$7300附近;上涨行情于周五晚间政策面重大利好公布后启动,周五及周六比特币均有10%以上涨幅,周六更是短时间突破看一万美元关口。

OKEx合约大数据中“BTC多空持仓人数比”在周五币价的快速拉升中先降后升,并在周六达到1.9附近高点后回落,主要显示出大涨后散户跟随开多的走势;“BTC季度合约溢价”已经由周五前的负溢价转为正溢价$150左右,显示出市场极为乐观的情绪。但是值得注意的是人民币场外成交的USDT价格在比特币大涨中并未呈现较高正溢价,说明场外资金观察气氛仍然较重,目前USDT人民币场外成交价为正溢价0.7%左右。[2019/10/28]

添加完流动性后,ETH的价格就等于=y(USDT的数量)/x(ETH的数量)。如果这个价格和其他交易所之间有价差,那肯定会被人搬砖套利。

分析 | 比特币真实交易量增长 相关指数TAAR创28周以来新高:据CoinDesk消息,上周六(6月1日),一个用于衡量比特币网络活动数量和质量的实验性指标创下了28周以来的新高,这表明比特币最近的价格上涨可能比许多人预期的更为根本。如果该指数Transaction Amount to Active Addresses Ratio(TAAR)高,则意味着每个用户(活动地址)在高名义值下进行交易,换句话说,“质量”(有多少用户正在花费资金,即活动地址)对应着网络“数量”(花费多少,即交易量)高。当比特币网络的数量和质量都高的时候,人们会认为比特币市场会有积极的反应,反之亦然。 相关图表显示,比特币的价格随着的TAAR指数上升再次明显上涨,其模式与上一次熊市结束时相似,或暗示着只要网络活动持续上升,比特币的最新价格增长可能是可持续的。价格修正应该是在预期内的,但根据这个模型,只有在TAAR失去显著高度时多头才需要警醒起来。据了解,TAAR指数由Pugilist Ventures创始人Chris Brookins首先提出,该指数将比特币24小时调整交易量(美元)除以活跃地址的数量,以确定每个活跃地址平均每天在交易中花费了多少。[2019/6/6]

所谓的恒定乘积算法,指的是在流动性池没有再添加或减少流动性的情况下,只有交易行为发生的情况下,K值是不变的。

分析 | 金色盘面:XRP/USDT跟随ETH扩大跌幅:金色盘面综合分析:XRP/USDT跟随ETH一起下跌,24小时内跌幅达16.13%,上方阻力关注0.27-0.28,不破则看空不变。[2018/8/14]

即如果用户在ETH/USDT交易对里买入或卖出ETH,都无法改变K值的大小。

而交易行为会修改流动性池里的ETH和USDT的成分。比如用户买了dx个ETH,则流动性池里的ETH的数量就会变成,而usdt的数量则变成了K/(x-dx),即用户需要花dy=K/(x-dx)-y个Usdt来买dx个ETH。

交易手续费影响K值

但因为存在交易手续费,用户使用uniswap交易时,需要交0.3%的手续费。比如用户拿dy个usdt买ETH,uniswap会首先扣除0.3%dy的手续费,先将这0.3%dy的手续费丢在一边,完成交易后,这0.3%dy会被添加到流动性池里,此时K值就变成了x*(y+0.3%dy)。

所以,恒定乘积算法的K值并不恒定,每一笔交易都会影响K值。

添加流动性影响K值

如果现在资金池里有xETH/yUSDT,K=x*y。现在有人又添加了流动性,增加了dx个ETH和dy个usdt,并且dx/dy=x/y。

如果你使用Uniswap的默认设定,即你添加流动性时,先输入ETH的数量,然后uniswap会默认计算出需要多少usdt,这个默认计算就是保持dx/dy=x/y。

但,添加完流动性后,流动性池里的资金变成了:(x+dx)ETH/(y+dy)USDT。此时,(x+dx)*(y+dy)>x*y。所以添加流动性K值变大了。

同样的减少流动性,会减少K值。

捐赠影响K值

如果你在添加流动性时,不是按dx/dy=x/y的比例去添加,而是直接往合约地址里转了dx>0,dy=0,也是可以的。这同样会改变K值。

这样的事是经常发生的,有些人错误地将ETH转入一个uniswap流动性池合约地址里,就产生了捐赠行为,白白把币送给了所有原来的流动性所有者。

这种非K值比例添加流动性的行为,被uniswap称为捐赠。

但这种捐赠行为,在设计上是可以被其他人套利的。比如有人充值了dx>0,dy=0;此时另外的人可以充值按K值比例的dy,并且执行一个添加流动性的操作,就可以把那dx的捐赠给薅走。这个挺复杂的,细节我也搞不清楚。

任何不是按K值比例添加的流动性,都会产生捐赠。比如dx/dy>x/y,则先添加(dx-ddx)/dy=x/y的流动性,并返回给用户对应数量的LPtoken。然后ddx就变成了捐赠。

还有,在同一个区块里,可能即有交易是添加流动性的,也有交易是买卖,那K值就会更复杂的变化。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

大币网

[0:15ms0-4:115ms