当前位置:首页 > 知识 >

解析Uniswap恒定乘积算法中K值设计的技术简介

Uniswap中的恒定乘积K值受到交易手续费、添加流动性和捐赠行为的影响。

恒定乘积算法是Uniswap中用来确定价格的算法。在Uniswap中,当第一个人添加一定数量的ETH和USDTK值(即x*y)起初被确定下来。在这个过程中,ETH和USDT一起构成了一个流动性池。

第一个添加流动性的人可以任意决定两种币的数量,从而决定K值的大小。添加完流动性后,ETH的价格等于USDT的数量除以ETH的数量(y/x)。如果这个价格与其他交易所存在差异,那么就可能会进行套利操作。

恒定乘积算法指的是在流动性池没有再添加或减少流动性的情况下,只有交易行为发生时,K值保持不变。换句话说,买入或卖出ETH并不会改变K值的大小。

但由于存在交易手续费,用户在使用Uniswap进行交易时需要支付0.3%的手续费。假设用户用dy个USDT购买ETH,Uniswap会首先扣除0.3%dy的手续费,并将这笔手续费添加到流动性池中,导致K值变为x*(y+0.3%dy)。

因此,恒定乘积算法中的K值并不真正恒定,每笔交易都会对其产生影响。

添加流动性也会影响K值。如果资金池中已有xETH/yUSDT,且K=x*y,如果有人添加了dx个ETH和dy个USDT,且dx/dy=x/y,那么在默认设定下,Uniswap会根据输入的ETH数量自动计算需要的USDT数量,以保持dx/dy=x/y的比例。添加流动性后,资金池中的ETH数量变为(x+dx),USDT数量变为(y+dy)。此时,(x+dx)*(y+dy)>x*y,所以K值增大了。同样地,减少流动性会减小K值。

此外,如果在添加流动性时,不按照K值比例去添加,而是直接将ETH转入合约地址(dx>0,dy=0),也会改变K值。这种行为被称为捐赠。捐赠行为存在套利的可能性,其他人可以根据K值比例的dy进行添加流动性操作,将捐赠的dx转移到自己的账户中。

总之,任何不按照K值比例添加流动性的行为都将产生捐赠。此外,在同一个区块中进行不同类型的交易(添加流动性、买卖)也会导致K值更为复杂的变化。

感谢PlanckerDao成员李世胜对本文的贡献。

猜你喜欢

关注我们

微信二维码

微信