編者按:本文來自以太坊愛好者,作者:Blocknative,翻譯:阿劍,Odaily星球日報經授權轉載。Blocknative已經找出了MakerDAO在3月12日和13日時的清算活動乃是有人刻意為之的證據。這些證據是從“Mempool”,即礦工打包區塊時候的備選交易池,中發現的。交易內存池是一個以太坊生態中經常被人忽略——也不受大家重視——的部分。作為交易內存池分析專家,Blocknative運營著一個由遍布全球且配置各不相同的Geth節點和Parity節點組成的網絡。這一基礎設施使我們能部署實時的交易監控服務,我們可以捕捉、規范化和歸檔內存交易池的狀態變化。Blocknative在“黑色星期四”時捕捉到了3000萬行數據,使我們能做一項開放式的研究;迄今為止,我們已經發現了數個似乎已被利用過的“漏洞”。雖然很多人都已寫過“黑色星期四”的結果,但在本文中我們會首次披露Blocknative內存池存檔中的數據,用新的數據和理論說話。我們也把分析要用的底層內存池交易數據集合開放出來了,供大家審閱。如果你是一位安全研究員,想了解更多我們的發現,或想發現其它潛在的交易池異常,請聯系我們。總結
Blocknative的內存池事后檢驗報告顯示,內存池中有三大因素影響到了3月12日和13日的事態:被阻塞的交易——內存池的擁堵極大地提高了交易卡殼率,讓同一地址連續發出的多筆交易都被卡住、不能得到處理;交易池“壓縮”——交易池中可上鏈部分比重的大幅減少,可能影響到了Gas價格的估計;“Hammerbot”——自動化的交易系統加劇了交易池堵塞,因此與交易池壓縮效應相疊加;我們出版這份分析以及相關的數據,是為了引起大家對動態交易風險的關注,這種風險在區塊鏈網絡擁堵期間可能會迅速出現。背景:“黑色星期四”概況
在2020年3月12日,密碼學貨幣市場上出現了有史以來最大的拋售潮,幾個小時里面,ETH價格暴跌43%,BTC的價格跌掉了39%。隨著價格下跌,一個負反饋循環出現,多種DeFi合約內都開始出現流動性降低和強制清算活動。在此期間,這種下行的壓力使得每一個嘗試在網絡上發送交易的個體都遇到了嚴酷的挑戰。
-UTC時間2020年3月12日到13日期間按小時加權的ETH平均價格。數據來源:cointelegraph.com-迅速的價格變化導致了以太坊交易池的持續擁堵,因為自動化的交易系統總是按照程序對波動性機械地作出反應。如此堵塞情形的一個負面后果是MakerDAO債倉清算活動中出現了“0價格拍賣”現象。在“黑色星期四”期間的3994個清算拍賣中,有1462個債倉的擔保品是被0價格拍走的。在大概12小時的時間里,鎖在債倉中、總計832萬美元的擔保品被0價格拍走,沒有讓系統回收到一分錢。更多細節請看MakerDAO自己發布的《2020年3月12-13日的價格暴跌及其對MakerDAO的影響》一文。1.由交易池堵塞導致的交易卡殼
律師觀點:美國稅收新規在實踐中存在多個問題:7月31日消息,美國兩黨此前提出一項基礎設施法案,計劃通過在交易所和其他各方應用新的信息報告要求,通過加密貨幣稅收籌集約280億美元。根據一份法案草案副本,轉讓任何數字資產的經紀人都需要根據修改后的信息報告制度提交申報表。在實踐中,這意味著加密礦工、權益證明網絡的驗證者,甚至可能是那些活躍于去中心化金融市場的人(比如清算人或治理代幣持有人)必須滿足IRS報告要求,并提交1099表格。這些表格包括客戶數據,如姓名、地址和稅務識別號(對于自營職業者,可以是社會保險號)。
DeFi借貸協議Compound的總法律顧問Jake Chervinsky在推特上對此評論稱:“對于礦工等非托管方來說,他們根本不可能獲得填寫1099表格所需的信息。實際上,這可能意味著美國(事實上)禁止挖礦。”加密貨幣和公民自由律師Marta Belcher則表示:“該法案可能使人們無法通過開源代碼(如智能合約和去中心化交易所)直接與他人進行加密貨幣交易的同時保持匿名。”Chervinsky補充說:“采納一項根本無法遵守的法規是不合邏輯的,除非其目標是扼殺整個行業。”了解該法案談判的消息人士表示,Chervinsky對形勢的解讀是正確的。然而,這一條款是否會被納入很可能會通過的最終法案尚不確定。Belcher補充稱:“盡管該法案的措辭正在迅速演變,但其定義足夠廣泛,可能也會納入加密領域的礦工和其他人。”(Decrypt)[2021/8/1 1:27:04]
3月12日時ETH價格的迅速變化導致用戶大量發送交易,產生了交易池內部的擁堵。對價格波動自動作出反應的機器人的活動加劇了這一情形。
-進入交易池的待打包交易計數vs.打包上鏈的交易計數-結果就是大量的交易通過網絡傳播,迫使使用默認交易池設置的節點通過下列手段來保護自己的系統資源:刪除,或者說丟棄掉許多有效的交易;拒絕,或者說無視掉許多有效的交易。交易池通常會用最低手續費門檻來選擇放棄哪些交易。雖說這些被丟掉的交易并沒在整個網絡中“完全丟失”,但被丟掉的交易可能會遭遇顯著的時延,直至網絡條件回歸正常。
觀點:Defi項目遲早將脫離以太坊網絡并轉移到中心化平臺上:9月8日消息,比特幣開發者Udi Wertheimer日前表示,Defi項目脫離以太坊并轉移到中心化平臺上只是時間問題。他為平臺緩慢的交易速度,高昂的手續費和復雜的MetaMask感到遺憾,但他對聯合創始人Vitalik Buterin和Joe Lubin沒什么好說的。Wertheimer建議DeFi不需要以太坊,他說:“在我看來,整個DeFi代表去中心化金融。實際上,并沒有真正去中心化的內容,因為總有人控制這些項目。”Wertheimer預測,DeFi在以太網絡上的時間不會太長。他說:“在我看來,它的發展方向是,如果它生存下來,它將離開以太坊,進入集中式平臺,因為它們更便宜,速度更快。”Udi Wertheimer說,雖然使用比特幣有金融和經濟利益,但他也對區塊鏈持懷疑態度。按照Wertheimer的說法,區塊鏈的好處是創建不受他人控制的數字資產。(Beincrypto)[2020/9/8]
-2020年3月11日至3月14日期間,到達交易池的被丟棄掉的交易和卡殼交易計數-更重要的是,丟棄交易還會帶來一個副作用:增加交易卡殼的可能性。刪掉一筆交易之后,該節點不會留下關于該筆交易的任何信息,比如發送地址和交易nonce。因此,當同一個地址的一筆新的交易到達交易池,該節點會發現該地址已處理交易和這筆新交易之間有nonce空缺,因此也不能處理這筆新交易。受此效果影響的交易就只能放到該節點的交易池中無法處理的隊列中。這些交易,無論所支付的交易手續費有多高,都一概會被卡住、無法處理。想了解更多細節,請看我們此前講解交易排序的文章:《節點是你通往內存池的網關》。與此同時,網絡的堵塞導致進入內存池的GasPrice門檻隨之迅速提高,因此最初的一些交易現在會因為GasPrice太低而被拒絕。而且,因為之前被刪除的交易不能回到交易池中來,交易的nonce空缺問題又變得更嚴重了。事實上,一些節點實現會在一段時間內主動無視掉這些被拒絕的交易,以保護自己不受點對點網絡中的泛濫攻擊影響。所以,nonce空缺實際上會鎖住這些受影響的地址,使得他們無法完成新的交易。卡殼交易更有可能影響會發出許多新交易的地址,包括自動化交易系統、支付網絡,甚至交易所。這些系統想回到正軌,但通常會加劇擁堵,因為越來越多交易被推遲處理。有沒有解決辦法?你得主動發現自己何時開始遭遇卡殼。這可能有點難,因為你的交易可能僅在某些節點處是卡殼的,但并不是在所有節點處都面臨卡殼。因此,你必須確定第一筆被丟棄、導致nonce空缺的交易,然后立即用可以得到打包的GasPrice加速讓這筆交易上鏈。最后,你還得繼續監控一開始發現卡殼的交易,確保它從不能處理的隊列中移回到了交易池的待打包部分中,并成功上鏈。如果你的交易還是卡殼,重復上述加速步驟,直到你可以確認所有導致nonce空缺的交易都已成功上鏈。當然,這也是我們開發并運營我們的NotifyAPI的理由之一。2.壓縮內存池中可上鏈的部分
觀點:ETH 2.0升級時的資產遷移對用戶而言可能會有一定風險:投資公司21Shares的研究助理Eliézer Ndinga在談及ETH 2.0升級時表示:“從目前的以太坊區塊鏈到以太坊2.0的過渡需要用戶在區塊鏈之間轉移其ETH,這可能會給嘗試自己這樣做的用戶帶來一定風險,盡管交易所和其他托管機構可能會在這個過程中提供幫助。”(Cointelegraph)[2020/6/21]
網絡阻塞的出現——及其導致的交易卡殼——使得交易池中可上鏈交易的比重迅速縮減。我們管這叫“交易池壓縮”。礦工的激勵分兩部分:區塊獎勵和交易的GasPrice;所以收益最大化需要打包GasPrice最高的那部分交易,挖礦時要根據交易池——即候選交易——的情況來決定打包哪些交易。在交易池擁堵時,多種行為會導致交易池壓縮,對礦工來說值得考慮的交易比重越來越小:資源耗盡:在某些節點實現中,卡殼交易數量的迅速上升會消耗掉可觀的交易內存池資源。這又反過來導致節點處理有效pending交易的可用資源進一步減少。不斷升高的GasPrice:ETH價格的下跌導致許多交易變得“高度緊急”,因為這些交易在構造時是希望能夠趕在ETH進一步下跌時上鏈確認的。這使得個體用戶也好、自動化機器人也好,都趕緊提高GasPrice。因為不是所有參與者都這樣密切關注著堵塞情形,待打包交易總體包含了反常比例的低價——因此不可能被打包的——交易。反應慢半拍的定價算法:交易池中待打包交易的GasPrice分布,以及近期被打包交易的GasPrice,使得一些預測合適GasPrice的服務的測算出現扭曲。但這就導致更多GasPrice過低的新交易出現,又進一步加劇了測算值與實際值的不一致。交易池堵塞出現時,讓交易打包上鏈所需付出的GasPrice會升高是意料中的事情。但是,因為并不是所有人都跟蹤到了GasPrice這種迅速的提高——包括,尤其是那些有GasPrice報告功能的服務——上鏈所需的平均Gas價格開始偏離進入交易池的交易平均Gas價格。而一般的出價上漲跟不上當時的價格上漲速率。在3月12日,我們的數據平臺發現了交易手續費定價的明顯偏離。在3月13日,交易池中部分交易的GasPrice與上鏈交易的GasPrice差額在可預料范圍內,但在3月12日,已挖出交易和未挖出交易的Gas出價簡直是天壤之別。不能上鏈的交易要成為可以上鏈的交易,一般來說標準的操作就是提高GasPrice。但是,在3月12日,這樣做根本就沒用。因為,大量交易池資源被以幾乎同樣的GasPrice重發的交易消耗掉了。
觀點:比特幣減半后 在短期內會面臨壓力:比特幣在完成第三次減半后,紐約OANDA高級市場分析師Edward Moya表示,“對于現在的礦工來說,開采比特幣的動機更少,他們可能會轉向利潤更高的加密貨幣。因此,短期內比特幣將面臨壓力。”Moya進一步說道,“但是從長遠來看,您可能會看到更高的價格。隨著所有財政和貨幣刺激政策都注入全球經濟中,機構交易者重新產生了尋找政府支持貨幣替代品的興趣。”(CNBC)[2020/5/12]
-2020年3月12日至13日每小時的GasPrice箱型圖。每個小時的箱型都劃分了1分位值和3分位值,兩者中間的線表示中值,而箱頂和箱底的線表示最大值和最小值。已忽略掉了異常值-這張圖反映了真實情形嗎?還是說這些出價過低的交易本身就是為了堵塞掉交易池呢?如果真是有意為之,為什么呢?3.Hammerbot交易導致內存池失真
我們的內存池存檔數據暗示,機器人成功地提高了堵塞情形,并扭曲了交易池中交易的Gas價格分布,而且還沒有導致交易手續費的相應提高。這樣做的凈效果就是交易卡殼率的提高和GasPrice報告服務扭曲,結果是交易池一場,使天平偏向了某些特定的交易——即,提高了清算CDP倉位的交易以0價格成功競拍的幾率。機器人用本來就無意提交上鏈的交易捶打交易池。這些Hammerbot通過發送置換率極高的交易消耗掉了交易池的資源。但是,交易池還有一種設計,是要求重發交易至少要提高10%的Gas價格,本身就是用來防止此類行為的。那這些交易是如何實現置換的呢?答案很簡單:異常高的交易丟棄率導致節點“失憶”。Hammerbot等待著——或者僅僅是預估——自己發出的交易從交易內存池中丟棄,然后立即用相同的Gas價格重發交易。因為節點“忘記掉了”之前被丟棄的交易,自然就盡職地把這些置換后的交易當成有效交易接了過來。當然,結果就是進一步的擁堵。Hammerbot用顯然是“自動化”的方式讓自己的交易變得畸形,每一次置換都包括了稍微更改過的合約輸出。因此,每一筆Hammerbot交易都有一個獨特的哈希值,可以繞過所有節點的點對點網絡協議中的泛濫攻擊過濾保護。如下圖中重點標出的粉色線所示,從UTC時間3月12日9點開始,我們的交易池數據平臺發現根本不可能被打包的待打包交易數量急劇上升。35分鐘后,此類不可能上鏈的交易產生的速度翻了一倍,在10點之后才降為線性增長的模式。
聲音 | 觀點:比特幣在大幅反彈之前,可能會跌至5,000美元:Adamant Capital聯合創始人 Tuur Demeester表示,在市場大幅反彈之前,比特幣價格可能會跌至5,000美元。(ambcrypto)[2019/12/5]
-從UTC時間8點到10點期間達到交易池的交易計數,以分鐘計。藍線表示最終上鏈了的交易計數;而橙線表示根本沒有上鏈的交易計數。-即使這些交易似乎沒有上鏈的意圖,這些從未被打包的Hammerbot交易的GasPrice還是顯得太低了:在市場要求給出30Gwei乃至更高價格時,這些交易幾乎總是只給5Gwei。Hammerbot交易既沒有像套利機器人經常做的那樣加速交易,又高效地消耗掉了節點的交易池資源。從整體上來看,雖然進入交易池的交易數量急劇增加,交易池中還是有很大一個比例的交易GasPrice被人為壓低了。
-從UTC時間8點到10點間的交易GasPrice箱型圖。藍線表示最終上鏈的交易的情形。橙線表示從未上鏈過的交易的情形。-拿出一筆Hammerbot交易作為例子,可能有說明價值。這里是最終的交易哈希值:0x5b00c13020b82c9e8a098393564feca976dbbd2e8da6c54263f6e492be56fbfb。僅僅用你慣用的區塊瀏覽器檢視這筆交易并不能給出除了其區塊確認信息以外的洞見。表面上來看,這筆交易平平無奇。但Blocknative的交易池數據平臺檢測到了這筆交易上鏈之前使用這個nonce值的418筆獨特交易。這些交易都是在一個小時內出現的,也就是這些置換交易平均每6.86秒重發一次,而某些置換交易之間的時間差不超過0.1秒。
-地址0x5cf2fa4e0c84e71fd2e4fa86d2fa64b7a50a6fc0從UTC時間9點開始在相連的4個nonce上發起的置換交易次數-大多數置換交易都使用同樣高的GasPrice,都是因為節點的交易丟棄機制才作為“新”交易成功進入到節點的交易池內。只有最后一筆想要上鏈的置換交易才需要給出更高的GasPrice,然后被打包到區塊內。
-地址0x5cf2fa4e0c84e71fd2e4fa86d2fa64b7a50a6fc0從UTC時間9點開始在相連的4個nonce上的平均GasPrice-這種模式使我們很難說這些Hammerbot交易到底是有心還是無意的。實際上,我們的系統在一分鐘之內記錄下了超過20個從UTC時間9:05開始活躍的可能的Hammerbot地址:
-如果你是上述任一地址的運營者,我們很希望跟您聊聊。請聯系我們-注意:這些特征明顯的、使用同樣的GasPrice重發被丟棄交易的Hammerbot行為,也可能跟最近大家討論的“backrunning”行為有關。見此處和此處。交易池漏洞對MakerDAO的影響
MakerDAO的擔保債倉是用戶生成穩定幣DAI時托管被鎖定的擔保品ETH的智能合約。因為ETH的價格有波動,而DAI希望能保持1美元的價格,所以維持一個開放的CDP所需的擔保品數量是不斷變動的。當3月12日ETH價格暴跌時,大量的CDP立即變成了擔保不足的狀態,需要被強制清算。系統為保證擔保品清算時可以獲得競爭性的市場價格,安排了折價機制:參與清算者可以以折價買到擔保品ETH;這就使得許多人都愿意運營多種多樣的Keeper機器人。清算活動的表現形式為拍賣。任何Keeper都可以用鏈上出價參與拍賣,而一個看護者出價之后,另一個看護者想要與之競爭必須在10分鐘之內發送競拍價更高的交易。每當有新的競拍交易到達,都會刷新10分鐘的競拍窗口期。如果10分鐘之內系統沒有收到更高的出價,則拍賣結束,最高出價者勝出。但是,當礦工節點因為網絡擁堵和交易池壓縮而以異常高的比例丟棄交易時,許多看護者的交易都被卡住了,因此根本沒能及時讓清算CDP的競拍交易成功上鏈。結果就是看護者們無法在由0價格競拍交易開啟的窗口中可靠地開展競爭,即使看護機器人正確地發現了0價格拍賣并發送出了更高出價的交易也沒用。最終,因為擁堵和實際手續費的混淆,看護者無法恰當地解讀出GasPrice的實際上漲幅度,看護者的交易也因此被節點丟棄。接下來是產生nonce空缺、交易在使用默認交易池設置的節點處卡殼。遭遇此種情形的看護者機器人為其他拍賣發出的所有后續競拍交易會全部被卡住,讓該看護者根本無法在10分鐘的競拍窗口內參與交易,最終讓0價格競拍交易得逞。下面我們用1866號拍賣作為例子來說明上述過程:一個“0價格競拍機器人”在UTC時間15:59:50時以200Gwei的價格發送一筆0價格競拍交易。該交易在26秒后成功上鏈,10分鐘倒計時就此開始。一個“誠信看護者機器人”在16:08:01時以450Gwei的GasPrice發送一筆競價交易。這筆交易是在10分鐘內發出的——之隔了8分11秒——而且Gas價格還是最初那筆0價格競拍交易的2.5倍。如果能在接下來的1分49秒內被打包到區塊中,1866號拍賣就會像大家預期的那樣進行。但是,這筆競拍交易因為這個好機器人之前發送的一筆交易被丟棄而被卡住了。這個好機器人在16:15:31又發出一筆4500Gwei的競價交易。但是哪怕GasPrice提高了10倍也無濟于事,因為這個地址被nonce空缺鎖死了。再然后,等到競價交易不再被卡的時候,已經過了10分鐘的窗口期,交易自然就失敗了。上述模式可能重復了一整天,最終導致總計832萬美元的擔保品被0價格拍走。值得指出的是,大多數Hammerbot的活動似乎都在當天較早的時候發生,這樣就造成了后來影響到Keeper機器人交易的擁堵情況。GasPrice的迅速上升、導致Gas價格估計失靈的交易池壓縮,同樣對其它價格信息傳輸機制造成了負面影響。這導致了定價方面的混亂,也有可能使得面臨清算風險的CDP持有者推遲了添加擔保品的決定。總結我們的發現
總結一下,我們對“黑色星期四”交易池狀況的事后檢驗暗示了下述情況:多種Hammerbot的活動導致挖礦節點的交易池飽和。這推高了以太坊網絡的擁堵程度并使之不斷上升。發送許多以同樣的GasPrice發出的置換交易在點對點gossip層和節點本身產生了巨大的開銷。正常交易的傳播受到阻礙,大量的交易被挖礦節點丟棄或者拒絕。這又反過來提高了出現nonce空缺和卡殼交易的幾率,還扭曲了對GasPrice的估計。雖然自動化的交易系統通常被設計成會自動提高交易的GasPrice,許多交易系統并不能很好地處理nonce空缺問題——甚至是完全束手無策。以上就是我們在研究過程中的發現。我們的數據集可能還能揭示出更多的證據以及/或者新的發現來支持或證否我們的結論。為加速這個發現過程,我們現在把那兩天的交易池存檔數據開放給社區,我們希望這能促進對交易池在“黑色星期四”及以太坊網絡其它類似事件中所扮演的角色的研究。建議:保護好你自己,以及你的用戶
交易池是區塊鏈生態系統非常關鍵的一環,雖然它瞬息萬變,常常被忽略。因此,交易池中藏著很多開發者和用戶“完全無知的未知之物”。現在,我們并不知道有多少人在開發這樣的利用交易池弱點的技術——只是顯然有人在利用交易池的特點。我們也不知道有多少這樣的弱點存在——只是那些復雜的利用方法似乎已經在現實中證明了其有效性。因此,我們建議所有交易、所有協議、所有錢包供應商和交易員:持續監控交易池的情況,注意發現交易池開始變得擁堵的時機;交易丟棄率和拒絕率的變化。理解交易nonce排序的細微差別。即使合理構造的交易也可能被卡在網絡的某個角落。主動觀察被卡殼的交易,并且要知道加速先前的哪一筆交易能使發送交易的地址脫困。基于交易池中對礦工有吸引力的部分來計算GasPrice。還需要知道你所依賴的GasPrice報告服務所用的算法。在高度擁堵期間,不要假設交易待打包的情形是可以預測的。先防范,你要監控每一筆交易,了解每一個細節,包括Gas是否充分,交易是不是被丟棄、被卡殼,會不會被人搶跑,等等。這些問題,如果你自己動手解決,是非常有挑戰性的、很耗時而且很昂貴的。Blocknative的全球數據平臺一直在往捕捉和規范化去中心化交易池的方向優化——也就是一直在實現上述的五個建議。我們的基礎設施和API提供了實時的交易池監控服務,保證你的交易能可靠、靈活、可預測地流動。……非常感謝評議本文初稿的各位,包括:SarahBaker-Mills、DmitriyBerenzon、SpencerBogart、NicCarter、Hsin-JuChuang、TomaszDrwi?ga,AndyGray、HudsonJameson、JonKol、CalvinLiu、JustinMart、GavinMcDermott、TaylorMonahan、AndraNicolau、CharlieNoyes、SimonaPop、AlexPruden、AustinRoberts、CuySheffield、LarrySukernik、ChrisWhinfrey,等等。我們非常感謝你們的反饋、洞見和指導。
編者按:本文來自藍狐筆記,Odaily星球日報經授權轉載。從6月份以來,DeFi越來越熱,說2020的夏天是DeFi的夏天不為過.
1900/1/1 0:00:007月24日,美聯邦法院“判定比特幣為貨幣”一事,在國內區塊鏈行業掀起了軒然大波,國內加密投資者紛紛驚呼,“2020年,比特幣10萬美金不是夢”、“見證從量變到質變”、“變天了”等不一而足.
1900/1/1 0:00:00本文來自TheBlock,作者:MichaelMcSweeneyOdaily星球日報譯者|余順遂Square周二表示.
1900/1/1 0:00:00市場要聞 1、交行行長劉珺:人民幣國際化需兼顧數字貨幣的發展和變化。2、Glassnode數據顯示,持有1000枚以上BTC的地址數量剛剛達到2170個,為9個月高點.
1900/1/1 0:00:00作者|如仔出品|奔跑財經由于DeFi市場發展迅速,無論是金融產品還是去中心化交易所都吸引了大批資金,DEX甚至主導了傳統交易所的上幣方向.
1900/1/1 0:00:00文|Nancy編輯|畢彤彤出品|PANews在今年以前,相比于較為龐大的CeFi市場,DeFi還尚未站穩腳跟。僅半年多內,經過“312”的洗禮后,DeFi異軍突起.
1900/1/1 0:00:00