记一次通缩代币在uniswap v2的套利

首先通过给到的交易进行分析

0x8e5b2e425f1dbed4289d7aa47a9e7ba01d0b779c0078ed6cafba803b2acf1429

记一次通缩代币在uniswap v2的套利

 

 交易看到确实是通过Mdex的pair合约转出WHT代币的,我们知道Mdexpair合约的代码

和uniswap的pair代码基本一致,那么要想转出代币的话,可以调用skim函数进行转出。

这里涉及到uniswap的一个功能,它允许用户调用它转出多余的代币。这里多余的代币

指的是pair合约中未添加到流动性的代币。但是这里的套利合约并没有调用skim函数领取,

它是先查询两种代币的余额,然后再调用getReserves获取两种代币添加流动性的数量,

最后多余的XSquid代币换成WHT。

记一次通缩代币在uniswap v2的套利

结合分析,确定了Mdex是没有问题的。带着疑问(为什么会多出XSquid代币),我们往下分析。

通过pair,找到了和WHT代币组成LP代币的XSquid代币。简单看了一下代码,发现该合约是仿造

safemoon编写的,但是写的有问题,代码中删除了添加奖励例外的。这里简单说一下safemoon

中的两种例外,如果添加了手续费例外,那么每次交易将不收取手续费。另一种例外是奖励例外,

如果添加奖励例外的话,持有safemoon类型代币将不收取奖励分红。那么多出来的XSquid代币

就是pair地址的分红。

看另外一笔交易就更加直观,这个是另外一个套利合约的交易:

记一次通缩代币在uniswap v2的套利

 

 记一次通缩代币在uniswap v2的套利

从上图,我们可以看到是调用skim函数领取的代币,这里因为pair地址没有加奖励例外,所以

当有交易的时候,pair地址将收取分红。任何人都可以调用skim函数领取pair的分红。

记一次通缩代币在uniswap v2的套利

 

 参考safemoon的设置。

记一次通缩代币在uniswap v2的套利

避免这种情况的话可以把pair地址加上奖励例外。

 

上一篇:一些规范与约定


下一篇:1内存地址