当前位置:首页区块链技术简析 Uniswap 恒定乘积算法中的 K 值设计

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

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

原文标题:《Uniswap 的恒定乘积算法里的 K 值》
撰文:黄世亮

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

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

恒定乘积算法

Uniswap 里第一个人添加 x 个 ETH 和 y 个 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 的手续费,先将这 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)gt;x*y。所以添加流动性 K 值变大了。

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

捐赠影响 K 值

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

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

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

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

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

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

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

温馨提示:

文章标题:技术简析 Uniswap 恒定乘积算法中的 K 值设计

文章链接:https://www.btchangqing.cn/173301.html

更新时间:2021年01月05日

本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。

区块链

去中心化保险项目 UNION 即将上线 BitMax 交易所

2021-1-5 11:08:06

区块链

比特币锚定币超 15 万枚,了解 WBTC、tBTC、renBTC 与 sBTC

2021-1-5 11:12:58

20 条回复 A文章作者 M管理员
  1. 新安江人

    俄罗斯封杀比特币成功了

  2. 启琛论币

    币安矿池短短几个月,就从零爬到第四名了,厉害了

  3. BCVoice

    手握比特币,心里不慌

  4. 江宝?

    希望ok越来越好吧

  5. JAR

    发现挺多国家都开始了

  6. 小怪物

    这家伙还再申请比特币指数基金

  7. 周裕强

    等了几年,还算可以

  8. ?淑明?

    有点意思,关注

  9. 阿朴

    哈哈,大家在疯狂出货就对了

  10. 冯楚琁

    app没看到活动啊

  11.   

    韭菜们,盘子接起来

  12. amdy

    确实越来越来大卡开始投资区块链

  13. 晓晓

    回复一下区块链

  14. 未来

    有比特币的起来嗨

  15. 37度

    ok可以多学学火币的界面 看着ok的界面有点烦 特别是交易的时候滑来滑去 [doge]

  16. 高梁花

    继续拉,

  17. testabc

    比特币勤奋真能造就财富吗?比特币

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索