okx

Uniswap中的恒定乘积算法:K值解析

时间:2023-08-10|浏览:166

本文介绍了uniswap中恒定乘积算法中K值的设计。

首先,我们拿uniswap中的一个交易对ETH/USDT就决定了K值的初始大小,即K=x*y。

这样,ETH和USDT一起构成了一个流动性池。这个概念很重要,请牢记。

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

添加完流动性后,ETH的价格等于y个USDT的数量除以x个ETH的数量。如果这个价格和其他交易所之间存在差异,那么一定会有人利用这个差异来套利。

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

换句话说,无论用户在ETH/USDT交易对中买入还是卖出ETH,都无法改变K值的大小。

但是,交易行为会修改流动性池中ETH和USDT的成分。比如,用户买了dx个ETH,那么流动性池中的ETH数量就会减少(x-dx),而USDT的数量则变为K/(x-dx),即用户需要用dy=K/(x-dx)-y个USDT来购买dx个ETH。

交易手续费也会影响K值。

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

因此,恒定乘积算法中的K值并非固定不变,每一笔交易都会对K值产生影响。

添加流动性也会影响K值。

假设当前资金池中有x个ETH和y个USDT,那么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的ETH,dy=0的USDT,这样也会改变K值。

这种捐赠行为经常发生,有些人错误地将ETH转入uniswap流动性池的合约地址,从而无意中将币捐赠给了原有的流动性提供者。

这种按非K值比例添加流动性的行为被称为捐赠,但是这种捐赠行为在设计上可以被其他人利用。例如,有人充值了dx>0,dy=0,那么另一个人可以按照K值比例充值dy,并执行添加流动性的操作,从而将dx的捐赠收入自己的账户。具体细节比较复杂,我也不太清楚。

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

在同一个区块中,有可能既有添加流动性的交易,又有买卖的交易,这会使K值变得更加复杂。

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

« 上一条| 下一条 »
区块链交流群
数藏交流群

合作伙伴

數字黃金 非小号行情 币圈论坛 玩票票财经 爱网站 聚币网 金色币圈 周公解梦 二手域名 起名取名网 币圈交流群 黄金行情 玩合约 元宇宙Web 借春秋 借春秋财经 谈股票 妈妈知道 装修装饰网 谷歌留痕 宠物丫 旅游资讯网 币圈ICO官网 百悦米 茶百科 趣开心资讯 宝宝起名 币圈官网 皮卡丘资讯 数字财经 百科书库 去玩呗SPA 兼职信息网 趣玩币 代特币圈 今日黄金 佩佩蛙官网 秒懂域名 免费电影 美白没斑啦 培训资讯网 币爸爸 减肥瘦身吧 天天财富
在区块链世界中,智能合约不仅是代码的信任,更是商业的革命。通过了解其在供应链、版权保护等领域的应用,您将真正体验到智能合约的无限可能性
区块链世界GxPiKaQiu.com ©2020-2024版权所有 桂ICP备16002597号-2