Filecoin最近利好頻出,主要包括三件事:灰度公司3月17日正式宣布推出FIL信托產品、Filecoin“雙花”鬧劇以及SAFT六月公募到期。對此,我們一一展開分析,
一、Filecoin“雙花”鬧劇
那么這次Filecoin“雙花”事件到底是如何?前因后果又是如何?我們先回顧一下事情發生經過,
要完整了解本次“雙花”事件,我們要先知道什么是雙花攻擊,
何為雙花攻擊?
雙花,即雙重支付,指的是在數字資產體系里,由于數據的可復制性,使得系統可能存在同一筆數字資產因不當操作被重復使用的情況,簡而言之,一筆數字資產重復支付,一筆錢被花掉兩次或多次,如支付寶錢包(綁定的銀行卡)里有100塊錢,消費了100元,結果支付寶出了bug,這一筆錢并沒有被銀行同步,還留在銀行卡里,于是我們又能拿著100塊錢去繼續消費,這就屬于雙花問題。
雙花會導致“通貨膨脹”,使加密資產被貶值,一般該情況出現在中心化交易所較多,
以區塊鏈的加密資產為例:2018年5月,某黑客針對 Bitcoin Gold 密幣交易所的基礎設施發動了多次“雙花”攻擊,并設法攫取了價值1800萬美元的 BTG,直接導致整個屬于BTG的市場需要再消化這1800萬美元的 BTG,間接會使BTG單價貶值。
為了更好的回顧這次Filecoin,我們需要了解主流的雙花攻擊類型:51%攻擊和競賽攻擊。
51%攻擊:攻擊者通過控制超過50%的哈希算力,這使他們可以刪除或修改交易的順序。從而實現多次發送交易,該情形在比特幣網路上目前難以實現,難以符合經濟收益,
例如:我們支付寶的銀行卡只有100元,我們對外已經消費了100元,然后通過控制銀行主腦來刪除該記錄(可理解為51%的控制算力修改),然后銀行沒有我的交易記錄,但實際上支付寶已經使用了該100元,所以我的銀行卡仍然還有100元,故可以繼續消費,
BTG雙花攻擊就是51%攻擊的類型,主要是因為算力規模較小,當時黑客只需支付3400美元皆可順利完成攻擊,
競賽攻擊:使用相同的資金連續廣播(相同Nonce值)兩個沖突的交易,但只有一項高Gas費的交易得到確認,攻擊者的目標是通過驗證對他有利的交易來使另一個支付無效,如此以來相同的資金發送到他控制的地址。
例如:A向B轉賬100元(一般Gas費),同時也使用一樣的Nonce值發送另外一筆向B轉賬100元(高Gas費)。在區塊鏈世界,同一Nonce值只能確認一筆交易,因為第二筆Gas費更高會很順利轉賬給B 100元,而第一筆因為第二筆的成果而認定為失敗,所以會返還給A 100元,這樣以來,A和B各有兩個100元,
本次鬧劇不存在“雙花”攻擊
而這次Filecoin“雙花”事件就是在混淆概念,這次不可歸咎為競賽攻擊,而是一場人為的操作失誤,
從結果上看,以Filscan.io瀏覽器為例,該筆交易只有一筆轉賬成功,
61200枚FIL轉賬記錄,來源:Filscan.io,2021-3
以官方解釋說到,“lotus團隊所知問題源自于有兩條消息有相同的發送者/收到者詳細資訊、相同的Nonce但擁有不同的Gas參數——被包含在同一Tipset中。像這樣兩個類似的消息是非常常見的,比如以改變與消息的Gas費來替代消息就會形成這樣兩條類似的消息,這樣的情況會由Filecoin網路安全、正確地處理,不會導致兩次轉賬:兩條消息中的一條會被執行,另一條被忽略”。
官方解釋意思是,Filecoin主鏈之前就已經針對競賽攻擊(相同Nonce)針對做好正確的處理交易,并不會因為高Gas費的替代行為而出現雙花現象,所以這塊印證了Filscan.io的數據準確。
那么該場鬧劇是如何引起?
官方很好歸納:“錯誤使用API。然而,根據人們對鏈的檢查方式,這會呈現出消息被處理了兩次的樣子,具體來說,有關交易所使用了一種錯誤的處理鏈狀態的方式——在tipset的每個塊上調用ChainGetBlockMessages,然后在這些消息上調用StateGetReceipt”。
因為交易所調用錯了API接口,導致呈現出雙花現象(實際并不是),該現象不是Filecoin網路本身的bug,而是方法上錯誤,同時官方指出應該以ChainGetParentMessages和ChainGetParentReceipts來記賬,
同時交易所應以鏈上的真實數據源記賬,假若以某瀏覽器作為數據源,一旦其惡意修改數據,也會導致“中心化的惡意”雙花攻擊行為。
總的來說,該場鬧劇總的來說是交易所的操作不當,從而使有心之人有意而為之。那么回過頭來,掀起了一場無需有的波浪,那么這次誰“雙花”了誰?
下篇,我們會繼續分析灰度加倉FIL信托事件以及Filecoin SAFT六月公募到期,