熱點丨以太坊黑暗森林中的「捕食者」

2021-01-12 巴比特資訊

作者 | Alex MenUskin

以太坊的黑暗森林怪物並不是開玩笑的。這些Frontrunning的機器人可以分析它們從未在智能合約中使用過的智能合約調用和功能,以獲取潛在利潤。

鑑於人們對這些機器人普遍缺乏了解,我們開始了一場狩獵之旅,來進一步了解這種情況,看看它們有多普遍。我們設法「捕獲」了一些通用的前端機器人,並分析了它們的行為。我們研究了它們的效率和交易被「追捕」的可能性。我們也測試了不同的方法來躲避它們。

什麼是Frontrunning(搶跑)?

通常,Frontrunning是在一個已知的未來事務發生之前,在執行隊列中第一個獲取事務的行為。

Frontrunning的一個簡單例子是交換競價。假設有人打算在Uniswap上購買大量ETH,這足以推高ETH的價格。從這種情況中獲益的一種方法是在購買大量ETH之前進行交易,同時價格保持較低。然後,在價格飆升之後,出售ETH獲利。

除了這個套利例子,Frontrunning進行許多其他交易也可能是有價值的,包括清算,購買罕見的NFT,或簡單的用戶錯誤。(從一個事務或事務順序中提取的值稱為MEV)。

在以太坊上Frontrunning是通過在交易中出價稍高的交易費來實現的,激勵礦工在構建區塊時更早地排序,較高的支付交易首先執行。因此,如果兩個從同一個合約調用中獲利的交易被放在同一個區塊中,只有第一個交易獲得利潤。

行為學

Dan Robinson和Georgios Konstantopoulos在《ETH是黑暗森林》的一篇博客文章中描述了一次試圖Frontrunning的行為,其中有1.2萬美元落入了一個複雜的「捕食者」的魔爪中。一個捕食者如此領先,它可以追蹤以太坊交易池中的任何有價值的交易,並通過Frontrunning的方式獲取收益。

《黑暗森林》的故事太「恐怖」了,一開始很難讓人相信。的確,我們有理由懷疑這種「食肉動物」的存在。資金如何從Uniswap這個被大量機器人嚴密監控的套利平臺中撤出?它可能是一個「常規的」套利者嗎?

今年早些時候,我們的深入分析證明事實並非如此。這可不是普通的機器人。它成功地調用了一個合約函數,據我們所知,這個函數以前從未調用過。儘管通過代理智能合約對交易進行了混淆,但這筆資金還是被抽走了。

至少可以說,這相當令人擔憂。監視交易池中的任何事務的能力是一種超級強大的武器。令人擔憂的是,一些服務開始公開提供「暗池」交易層。

「暗池」交易層不使用Infura這樣的服務,甚至也不使用私有節點,而是直接將交易發送給礦工,並承諾不會將交易傳播到網絡的其他部分,從而保證交易安全不受掠奪者的窺探。

samczun和co.在試圖從一份易受攻擊的合約中榨取960萬美元時,也使用了類似的方法。不難想像,礦工們開始自己使用Frontrunning的機器人,而只向那些支付額外費用的人提供安全通道。

與以太坊的其他元素(比如可以在開發環境或測試網上測試的智能合約)不同,這些機器人只存在於以太坊主網上。除了一些最初的試驗,他們嘗試並Frontrunning測試網交易在財務上沒有意義。此外,他們不必遵循與所有人相同的規則,因為他們的邏輯是隱藏的。

我們不知道這些Frontrunning的掠食者何時決定攻擊。所以,在某種程度上,追蹤這些捕食者就像追捕稀有動物一樣。我們不想只針對任何一個Frontrunning者,而只是特定的,一般化的那種。

為了確保我們抓到的Frontrunning者是「真正的」一般的Frontrunning者,我們需要一個獨特的陷阱。該陷阱是一個新創建的合約,由一個SHA256哈希秘密字符串發起,其中有一些資金可供獲取。只有提供了這個秘密,才能取出鎖定的資金,資金將直接被發送到提取交易的發送方。

他們的想法是發送一個提供正確秘密的「誘餌」交易,看看是否有人試圖複製它,然後自己提供秘密,從而獲得可用的資金。如果有人在誘餌交易之前拿到了資金,這就意味著有人能夠在交易還在交易池l的時候分析它,複製它的相關內容,並自己提供秘密。

有趣的是,他們將提供一個他們之前不知道的秘密,一份從未見過的合約,來獲得資金。

一般的Frontrunning者是如何工作的?

這個實驗的一個重要部分是了解Frontrunning者的工作原理。然而,如果有人建立了一個賺錢的機器,它可能不會在Github上分享。因此,我們只能觀察和按工程犯罪者的行為逆向分析。

構建一個通用的Frontrunning者通常需要兩個部分。第一個組件是一個以太坊帳戶,無論是否有智能錢包代理,修改後的交易都可以發送到該帳戶。第二個是「後端」,也就是操作的大腦,它大多發生在鏈下。操作符使用一些技術來檢查池中的每個事務,解析它,替換它的參數(例如,tx調用者),並確定它是否有任何利潤。

一個理性的機器人不會嘗試去做一筆費用超過潛在收益的交易。交易費用加起來可能會相當多,尤其是在交易費的時候。因此,要吸引機器人上鉤,就需要一個最小的利潤。

此外,由於需要對交易池中的每個事務(其中有許多事務)進行分析,所以時間也是至關重要的。挖掘一個以太坊區塊平均需要12秒。如果這筆交易的交易費足夠高,那麼必須在下一個區塊到來之前足夠快地對其進行分析和替換。

這是一個概率過程,有可能在一個事務被廣播後立即挖掘一個塊,讓機器人沒有時間成功地分析它並廣播一個正在運行的事務。

有了這些考慮和一些想法,我們測試了機器人抓住誘餌需要多少時間。

設置陷阱

我們的合約(授予者)的初始餘額為0.035 ETH,當時價值約20美元。任何向合約中存儲的Hash提供正確原像的人都可以獲得這些資金。為了獲得資金並作為掠奪者的觸發器,一個單獨的帳戶(獲得者)將試圖通過提供適當的"逆象"像來提取資金。

第一輪:直接調用合約

為了確保我們的基線陷阱能夠正常工作,我們首先使用獲得者帳戶來調用合約。第一次嘗試時,交易費相對較高(由ETH框架設定),我們成功收回了資金。

這可能是由於利潤過低,無法吸引捕食者,或者因為交易挖掘得太快,它們無法做出反應。顯然,這並不是我們想要的結果,因為捕獲捕食者是我們的目標。

第二輪:給他們時間思考

在這一輪中,我們解決了之前遇到的問題。我們增加了潛在利潤並降低了交易費,這樣交易就不會被挖得太快,給機器人時間去發現它。該合約還追加了0.04 ETH(比之前增加了0.005)。

這一次,我們成功了。該交易在被挖掘前等待了大約3分鐘,沒有從合約中獲得價值。根據合約的內部交易,我們可以發現資金流向了別人。

當前事務使用25.000001111 Gwei(.000001111Gwei高於我們所使用的值),並且與嘗試的「提取」在同一個塊中被挖掘。

培養追蹤者

既然我們已經成功地找到了一個機器人(付出了一些代價),我們可以得出一些有趣的見解。首先,事務表明對合約的調用沒有直接執行。機器人並不只是複製交易並盲目地從一個擁有的帳戶發送它,而是通過代理智能合約傳遞它,該代理智能合約充當一個智能錢包來執行這些交易。

現在,我們可以跟蹤以前和將來的事務地址,以查看機器人的成功程度及其操作方式。

反編譯合約有兩個主要功能:

「提款」,基本上就是把合約中的所有資金都交給合約的運營商。另一個函數接收一些參數:一個要調用的合約、一個參數列表和一個傳遞的值參數。

通過該功能,代理合約為運營商充當了智能錢包的角色。除了執行調用外部函數的能力,它還可以保證交易開始時的餘額至少和交易結束時的餘額一樣多,否則還可以恢復,從而避免在調用未知合約時可能出現的資金損失(當然,交易費用除外)。

使用Dune Analytics,我們可以看到自2018年5月開始機器人取得了多大的成功!

假設這個特定的機器人總是使用相同的代理和發送地址來發行交易,我們可以估計它的收益總計約17 ETH(在本文撰寫時約為1萬美元)。

第三輪:他們到底有多聰明?

現在我們已經確信機器人要攻擊我們了,我們想測試是否可以通過第二個合約(一個代理,它將調用一個函數來從給予者那裡提取誘餌)來混淆我們的調用,從而從我們的合約中提取誘餌。(合約中也有「收款」功能,可以將款項返還給我們)。

我們部署了ProxyTaker合約,並調用了適當的函數,試圖提取我們的資金。由於通過代理收取資金的成本略高,授予者合約的金額略高,為0.055 ETH。你瞧,我們的交易立刻被另一個機器人搶跑了。

這一次更令人印象深刻。機器人不僅能夠檢測我們的提取事務,而且它從一個內部調用中,從一個完全不同的合約中識別它!以破紀錄的速度完成了這一壯舉。我們的提取交易在幾秒鐘內就被挖掘出來了(機器人也一樣)。

機器人的身份也很有趣。bot的合約主要是由這個帳戶來操作的。該帳戶在Etherescan上發表了評論,將其與黑客試圖從一份脆弱的Bancor智能合約中提取用戶資金的案件聯繫起來。

考慮到機器人的相同行為模式(從帳戶A調用代理並將資金傳遞到帳戶B)和事件的臨近性,有理由認為機器人在該事件中也在對白人黑客進行普遍的Frontrunning操作。

這個機器人比前一個複雜得多。它不僅關注ETH,還進行各種套利交易。

從收集資金的帳戶餘額來看,它也要成功得多。目前,餘額約為300 ETH(撰寫本文時約為18萬美元)。我們也可以從合約地址中減去所有的資金流入和流出來估算其收益,總計為~900 ETH。這只是一個粗略的估計,因為該帳戶可能進行了與其前端運行活動無關的交易。(以下是所有有正值的機器人交易列表)。

最後一輪:成功提取

為了讓這個挑戰更有趣一點,我們又做了一次混淆的嘗試,這次使用了一個只有我們可以使用的代理合約,一個OwnedTaker。

設置類似於第三輪。授予合約追加了0.05 ETH。這筆資金也在同一筆交易中轉回給我們,而不是保留在合約中。

在第一次嘗試中,對OwnedTaker合約的交易花了大約1分鐘時間挖掘,我們成功地提取了資金。

實驗重複進行,這次用0.06 ETH重新填充了給予者合約,這是我們迄今為止使用的最高的支付,以確保較低的支付不是缺少Frontrunning嘗試的原因。

交易費也被故意設定在一個相對較低的水平。交易等待了大約7分鐘,但仍然成功提取了資金。

一個只允許所有者轉發交易的自有代理的組合,阻止了兩家Frontrunning者成功解析數據並為自己賺取利潤。

可能只允許合約所有者執行調用的要求,或者資金被發送到與調用合約不同的目標的事實,有助於避免搶先嘗試。

機器人很可能會首先考慮自我保護;畢竟,它們調用的是一個未知的合約,它可能執行任意代碼。有理由認為,如果利潤得不到保證,他們將避免不必要的風險或損失交易費用。

那麼,我們贏了嗎?

那要看你怎麼看了。我們籤了一份新合約,還有一個只有我們知道的秘密。很明顯,我們發現的兩家Frontrunning者都在交易池中操作所有的交易,從他們的利潤來看,他們做得很好。

上次我們為什麼能抵禦(Frontrunning)?

很難說。可能是機器人沒有冒著與經過身份驗證的合約通信的風險,或者資金被轉移到另一個地址的事實是意外的。當然,這並不意味著這是一種完全避免Frontrunning者的方法。最有可能的是,交易池l中潛伏著更複雜的機器人,它們根本不願意為了這麼小的利潤而冒險。

結論

在這個簡短的實驗中,我們能夠證明通用的前端運行機器人是存在的,而且它們是高度複雜的。

當然,我們知道我們的實驗還遠遠不夠完整或確定。還有許多其他機器人有著截然不同的觸發器和操作方式。諸如潛在的上行空間、溝通模式和最小複雜性(例如,交易費限制)等因素,可能會影響它們的運作方式。

然而,我們相信我們的工作提供了一個概念驗證,並進一步揭示了這些通用的前端機器人的操作方式。

現在可怕的現實是,如果有一份合約能夠產生利潤,任何人都可以調用它,即使它是非常模糊的,它很有可能會被某個Frontrunning的機器人搶先嘗試。

因此,了解這些機器人及其運作方式至關重要,這樣我們才能在現在和未來建立更安全的系統。像Flashbots這樣的項目試圖通過民主化MEV開採並使其成為一種公共資源來實現這一點。我們希望這項研究有助於實現這一目標。

如果您遇到過這些機器人,或者正在研究更複雜的迷惑技術,請隨時聯繫我們。通過分享您的經驗,我們將更好地了解這些機器人,並為我們所有人建立一個更安全的加密社區。

相關焦點

  • 以太坊的「黑暗森林」:混沌與生機
    引言在文章《以太坊:黑暗森林》(Ethereum is a Dark Forest) 中,Dan Robinson和Georgios Konstantopoulos將以太坊的對抗性環境與「黑暗森林」這一概念進行對比。該比喻出自一本同名書籍,用以描述「置身於這個環境之中,被高級掠食者發現就意味著必然的死亡」。
  • 以太坊黑暗森林加速蔓延,Flashbots 如何緩解「礦工可提取價值...
    小編:記得關注哦來源:鏈聞原文標題:以太坊黑暗森林加速蔓延,Flashbots 如何緩解「礦工可提取價值」危機?MEV 包括交易費和區塊獎勵這類「常規」獲利方式,也包括礦工對所生成區塊內交易重新排序、插隊、審查從中獲利這種「非常規」盈利方式。MEV 這個詞會讓人誤以為提取價值的是礦工。實際上,如今以太坊生態上的 MEV 主要由 DeFi 交易員通過結構化套利策略所獲的;而礦工則是通過獲得這些交易員付出的交易費間接獲利。
  • 探索以太坊黑暗森林MEV,誰在搶先交易?
    MEV(Miner Extractable Value),是指「礦工可以直接從智能合約中提取作為利潤的價值」。包括交易費用和區塊獎勵的常規利潤,以及礦工通過交易重組、交易插入以及交易審查的非常規利潤。以太坊上的MEV,主要是由DeFi交易員通過結構性套利交易策略獲得的,而礦工則間接從這些交易員的交易費用中獲利。
  • 黑暗森林:V神和Paradigm聯創都在玩的三體遊戲|項目介紹
    黑暗森林法則「斬盡殺絕,這是對一個文明最高的重視」——《三體 II:黑暗森林》在《三體》中,劉慈欣把整個宇宙比做一個黑暗森林,把每個文明都比做潛行在黑暗森林中的、帶槍的獵人,既要保證自己不被發現,又要想法設法找到並消滅其他的獵人,因為你不知道對方是天使還是魔鬼。
  • 一文了解以太坊姊妹鏈xDai的生態系統
    在我們的區塊鏈家族中,以太坊是一位很受尊敬的大姐姐,她很古怪,很酷,但很有責任感,並且她的成績非常好。加密貨幣社區的大多數人都知道並且喜歡以太坊,不過,今天我們來了解一下她的妹妹xDai。(圖片來自:pixabay)xDai和以太坊的相似之處沒有以太坊,就沒有xDai。xDai是一個EVM(以太坊虛擬機)側鏈,她獨立於以太坊運行,但依賴以太坊創建其原生代幣XDAI(從以太坊轉換的DAI)以及多用途治理代幣STAKE。
  • 以太坊2.0創世,在「寧靜」中沸騰
    相比於前者被市場以「機構牛「和「灰度牛」來做解讀的「明褒暗酸」;後者雖然只是以太坊2.0規劃中的很小一步,但其代表了以太坊正式走向了權益證明(PoS)和擴容的主線劇情。時光倒回至2015年,以太坊社區以前沿(Frontier)、家園(Homestead)、大都會(Metropolis)和寧靜(Serenity)這四個充滿遐想的詞來標記以太坊未來的技術階段。
  • 以太坊2.0合約存入ETH突破200萬枚|以太坊2.0|以太坊|波卡|filecoin
    本周技術周刊包含以太坊、波卡、Filecoin、BSN網絡的技術類新聞。以太坊網絡Sigma Prime發布以太坊2.0客戶端Lighthouse v1.0.5版本據官方消息,以太坊2.0客戶端Lighthouse開發團隊Sigma Prime 發布Lighthouse v1.0.5版本。
  • 以太坊中的Hybrid Casper是什麼 | 金色百科
    以太坊中的Hybrid Casper是什麼 | 金色百科 文/秦普嶽2018-05-08 14:19:10來源:金色財經 前幾日,以太坊的發起人V神提到了Hybrid Casper,它是一個新生名詞,下面小編就為大家科普一下什麼是Hybrid Casper。
  • 以太坊是什麼?10%是龐氏騙局,網友:以太坊第二層項目將成主流
    以太坊是什麼?10%是龐氏騙局,網友:以太坊第二層項目將成主流2018有爭議的是什麼?是區塊鏈,最大爭議則是以太坊!有人認為區塊鏈最具有顛覆的科技之一,有人認為區塊鏈是割韭菜、詐騙等,其中最大爭議就是以太坊,有人認為以太坊10%是龐氏騙局,今天說說是區塊鏈的以太坊。一以太坊發展以太坊誕生於2013年7月,短短的幾年就以他獨特的性能,成為區塊鏈的主流,以太坊主要是為開發人員提供了最為優質的資源和工具。
  • 以太坊雲算力挖礦原理
    如果說比特幣開啟了人們認識區塊鏈技術的大門,這是區塊鏈1.0的時代,那麼以太坊就開啟了區塊鏈2.0的時代。那麼它究竟是什麼?以太坊是區塊鏈的一個基礎設施,他是一個開源的有智能合約功能的公共的區塊鏈平臺,通過ETH提供去中心化的虛擬機來處理點對點合約,簡單來說就是可編程的區塊鏈。它並不是給用戶一系列的預先設定好的操作,例如比特幣。而是允許用戶按照自己的意願創建複雜的操作,這樣一來,它就可以作為多種類型去中心化區塊鏈應用的平臺。包括加密貨幣在內但並不僅限於此。生動舉例說明一下。
  • 以太坊本次幣市牛市行情的發動機
    以太坊基礎設施面臨的挑戰    儘管以太坊充滿了潛力的應用程式,但其基礎設施設計也有其自身的限制。除了下面提到的幾個問題之外,可擴展性、靈活性、出塊時間、奇偶性問題也是構建以太坊基礎設施時必須面臨的問題。    錢包初始化問題,智能合約問題,連接以太坊需要手動操作問題,構建未來證明架構方面的困難問題是最大的問題。
  • 以太坊2.0設計了那麼複雜的規則,到底為了啥
    小編:記得關注哦來源:彩雲比特自從比特幣減半之後,以太坊2.0重新獲得了大量幣圈人的關注,雖然有一部分原因是現在圈內也沒什麼熱點,而唯一的看點以太坊2.0的phase 0階段可能在今年內完成,加上以太坊目前是區塊鏈領域內非常知名的圖靈完備的公有鏈,而且市值也排名第二,
  • 以「狀態」 視角理解以太坊及其未來
    矛盾之處在於:對於合約及開發者來說,合約的狀態作為以太坊全局狀態的一部分,保存在以太坊的節點上,合約的狀態更新由以太坊節點來計算(而且還是由發起計算請求的用戶來付費的),這種 「無伺服器」 的架構非常舒服;但是,這些狀態只要一次付費就會永久保存在以太坊的全驗證節點中,雖然每次更新都需要付費,但無法避免節點本地保存的狀態數據會不斷累積、膨脹。
  • 鏈節點AMA丨Injective Protocol CEO Eric Chen:DeFi給以太坊的...
    對於當前受到關注的以太坊手續費高漲問題,Injective Protocol創始人兼CEO Eric Chen 表示,我個人認為這個轉帳費用高峰不會持久,尤其是Eth2.0以及其他擴容方案的出現。很多人都說DeFi的熱度會使得以太坊永遠都無法分叉,這個觀點我也是同意的。就算以後DeFi可能不是以太坊的主打應用,但是DeFi給以太坊的流通性會讓以太坊非常難被其他的鏈所取代。
  • [中文] 以太坊(Ethereum )白皮書
    在以太坊系統中,我們的目的是建立一個能夠同時具有這三種模式的所有優勢的通用框架。以太坊以太坊的目的是基於腳本、競爭幣和鏈上元協議(on-chain meta-protocol)概念進行整合和提高,使得開發者能夠創建任意的基於共識的、可擴展的、標準化的、特性完備的、易於開發的和協同的應用。
  • 以太坊周交易量首次超過比特幣
    根據市場分析公司Coin Metrics今天發布的一份新報告,自2018年初以來,以太坊的調整後每周交易價值已首次超過比特幣。上周六,以太坊「7天平均調整後轉移價值」達30.8億美元,而比特幣為30.1億美元。Coin Metrics將其歸因於DeFi的興起。
  • 馬斯克又一次改寫航天史,以太坊繼續表演別眨眼
    ——馬斯克熱點在留言中,ETH這兩天以太坊帶動了一番山寨行情,每次以太坊異動總能帶動一些山寨起飛前面我就說我個人就重倉了以太坊,現在的價格只能說小漲,下半年是以太坊表演的時刻,大家都擦亮眼看它繼續上漲吧!
  • 未來以太坊2.0將會面臨怎樣的問題?
    大家都知道12月1日以太坊2.0啟動了創世區塊,目前已進入正常運行階段,但是大家最關注的還是關於資金的問題,有的人認為現在以太坊價格已經很高了,有的人則認為還未迎來真正的牛市。 其實在此之前我已經寫過多篇關於以太坊2.0的文章了,再寫寓意為何?
  • CellETF:以太坊的優點和缺點分別是什麼?
    以太坊不僅僅是交易的加密貨幣。它的真正價值在於它的目的。以太坊的目的是讓擁有以太坊的人能夠使用由數千個節點驅動的分布式世界計算機。當然,因為每個微小的語句都必須由網絡中的每個節點執行,所以去中心化的分布式計算機運行緩慢且成本高昂。但是這裡的慢參照系是什麼呢?
  • SERO正式發布對以太坊的跨鏈功能
    著名的基於非交互式零知識證明(NIZK)並支持圖靈完備智能合約的隱私保護公鏈 SERO,在2021年1月8日正式發布了 SERO 公鏈到以太坊公鏈的資產跨鏈轉移的功能。該技術基於聚合籤名以及公證人技術,實現了以太坊和 SERO 公鏈之間的資產跨鏈轉移功能。同時,CoralSwap對這類跨鏈資產的交易支持,可以作為一種非常低Gas的Swap平臺,替代以太坊上的其它同類產品。