长推:拨开云雾,看清「土狗项目」新套路

@gooo_robin热度: 12741

其实真正作恶的router函数并没有开源,并且在代币合约中也夹杂了很多作恶代码逻辑。

原文作者:@gooo_robin

原文来源:Twitter

注:原文来自@gooo_robin发布长推。

1/14

土狗新套路来了

@0xSunNFT DM讨论之后细看了下合约代码和交互路径,感叹链上钓鱼还是太会玩了,这次的迷惑性超过以前"做手脚欺骗监控工具"的套路,往下看。 (内容比较长,没时间的可以跳到12-14/14先看总结)

2/14

主要问题: 一个土狗 $PSY 从链上直观地看,代码开源,开始也把LP打入黑洞并丢掉了权限。但实际上还有个第三方地址拥有天量代币 (远超代币初始Supply),后面一次性砸盘全卖了,而这个第三方地址只有卖掉 (转出) $PSY 的记录,完全没有转入的记录。换句话说,这个第三方地址"凭空"出现了天量代币。

3/14

表象:

- $PSY 合约: 0x12b71eAC1e4ca3FB62A980C5FAE1442dD3Ea91Ea

- LP打入黑洞tx: 0xedb721e1ef43f60cb63341a7ba57f1c769da40c27db47b7c8c5c196fcfe81c2d

- $PSY 部署者放弃权限tx: 0xf13c902d597c96bc02592541b4cf3cc03149f80a8f293eb0c34dcf0d202c68c3

一切都看起来很正常。

UniswapUniswap

Uniswap

4/14

怪象:

大概20小时之后出现一个第三方地址0x61de69b7fe583E4547e67b4D0DA0cd9ecf526DC6,将10000000000B的代币直接砸盘归零,换出2个e,而 $PSY 的供应量仅仅为 100M,相当于这个地址砸出了Total Supply的100B倍的量。更奇怪的是这个地址只有转出记录,没有转入 $PSY 的痕迹:


UniswapUniswap

UniswapUniswap

5/14

6DC6这个地址也只有6条Transaction记录,没有任何一条是向该地址转移 $PSY ,所以是如何做到在LP打进黑洞并放弃权限的前提下,这个地址还能莫名其妙地多出这样"天量"的代币呢?

Uniswap

6/14

解析1:

把目光移回 $PSY 的合约代码,Constructor中定义了router和taxwallet_,_router是一个IUniswapV2Router02类型的变量,IUniswapV2Router02是Uniswap V2的路由器合约接口,但在这里被初始化为router参数的值,而router参数的值可以在源代码下方的"Constructor Arguments"找到,如下所示:

UniswapUniswap

7/14

解析2: 所以这里_router将指向Uniswap的路由器合约地址,这个地址是0x96e7AFd8829b2Ae5cCDaABeA04B63cBDf4961Cd8,但这并不是Uniswap V2主网路由器的标准地址。

标准地址为0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

8/14

解析3: 代币合约中可以看到_router被用于各种函数,例如在_transfer函数中,_router.transfer(to)和_router.Path(from),这些都是调用Uniswap路由器合约 (这里即1Cd8地址)的函数。transfer和Path并不是Uniswap路由器合约的标准函数,是这个欺诈者自定义的函数:

Uniswap

9/14

解析4:

于是追溯到这个router合约地址0x96e7AFd8829b2Ae5cCDaABeA04B63cBDf4961Cd8,果然源代码是未公开的。通过byte codes找到了和这个合约相同套路的另一个合约,地址为0x0D71773a5FD5E1Be5F28B8134797595B3E61e08b,同样源代码也没有公开,也是相同的部署者,在7月8日部署 $WPEPE 再次作恶。

UniswapUniswapUniswap10/14

解析5:

倒回到"解析3",可以看到taxwallet_被赋值为0x61de69b7fe583E4547e67b4D0DA0cd9ecf526DC6,而这个地址刚好就是最后天量抛售的地址。回归到 $PSY 合约的源代码,可以发现在_transfer函数后面还包含了一些作恶的条件语句和赋值操作,比如红框中将6DC6地址的余额设为最大的uint256值:

Uniswap

Uniswap

11/14) 解析6: 以及在转移过程中调用_router.transfer(to)和_router.Path(from),_router合约不开源,所以部署者可以任意魔改达到其掩人耳目的目的。以上对地址余额的修改和对_router的调用便造成了6DC6地址凭空多出了10000000000B的 $PSY:

Uniswap

Uniswap

12/14

总结1:

部署者通过表面将代币合约源代码公开,实际上 1. 将自己写的不开源router合约伪造设置成Uniswap V2主网路由器的标准地址。 2. 偷偷在Transfer函数后添加作恶代码,修改税收地址的代币余额,并且每次执行_transfer函数_router.transfer(to)和_router.Path(from)都会被调用,达到作恶目的。

13/14

总结2:

这种套路仅通过观察交易路径是无法辨别的,并且很容易被表面开源代币合约代码蒙蔽,其实真正作恶的router函数并没有开源,并且在代币合约中也夹杂了很多作恶代码逻辑。我们能做的也只有对代码多加审视,但这又会付出更多时间成本,可能会错过大量alpha,也可能逃过一劫,权衡利弊很重要。

14/14

总结3: 对于不懂代码的交易者来说,冲土狗真的风险极高,这样的混沌市场套路确实太多。 真心希望大家能对代码更加谨慎,有朋友DM我说怕问的问题太蠢,但其实完全没必要担心这个,有任何问题都可以评论一起研究! 如果有帮助的话欢迎转发关注,尽量帮到更多的人。

祝大家顺利度过深。

声明:本文为入驻“MarsBit 专栏”作者作品,不代表MarsBit官方立场。
转载请联系网页底部:内容合作栏目,邮件进行授权。授权后转载时请注明出处、作者和本文链接。未经许可擅自转载本站文章,将追究相关法律责任,侵权必究。
提示:投资有风险,入市须谨慎,本资讯不作为投资理财建议。
免责声明:本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况,及遵守所在国家和地区的相关法律法规。
关键字:Uniswap代码