原力研究 | 灰度、“雙花”、減產(chǎn)讓Filecoin火了一把(上)

本文由IPFS原力區(qū)原作
Filecoin最近利好頻出,主要包括三件事:灰度公司3月17日正式宣布推出FIL信托產(chǎn)品、Filecoin“雙花”鬧劇以及SAFT六月公募到期。對(duì)此,我們一一展開(kāi)分析。
一、Filecoin“雙花”鬧劇
那么這次Filecoin“雙花”事件到底是如何?前因后果又是如何?我們先回顧一下事情發(fā)生經(jīng)過(guò)。


要完整了解本次“雙花”事件,我們要先知道什么是雙花攻擊。
何為雙花攻擊?
雙花,即雙重支付,指的是在數(shù)字資產(chǎn)體系里,由于數(shù)據(jù)的可復(fù)制性,使得系統(tǒng)可能存在同一筆數(shù)字資產(chǎn)因不當(dāng)操作被重復(fù)使用的情況。簡(jiǎn)而言之,一筆數(shù)字資產(chǎn)重復(fù)支付,一筆錢(qián)被花掉兩次或多次,如支付寶錢(qián)包(綁定的銀行卡)里有100塊錢(qián),消費(fèi)了100元,結(jié)果支付寶出了bug,這一筆錢(qián)并沒(méi)有被銀行同步,還留在銀行卡里,于是我們又能拿著100塊錢(qián)去繼續(xù)消費(fèi),這就屬于雙花問(wèn)題。
雙花會(huì)導(dǎo)致“通貨膨脹”,使加密資產(chǎn)被貶值,一般該情況出現(xiàn)在中心化交易所較多。
以區(qū)塊鏈的加密資產(chǎn)為例:2018年5月,某黑客針對(duì) Bitcoin Gold 密幣交易所的基礎(chǔ)設(shè)施發(fā)動(dòng)了多次“雙花”攻擊,并設(shè)法攫取了價(jià)值1800萬(wàn)美元的 BTG,直接導(dǎo)致整個(gè)屬于BTG的市場(chǎng)需要再消化這1800萬(wàn)美元的 BTG,間接會(huì)使BTG單價(jià)貶值。
為了更好的回顧這次Filecoin,我們需要了解主流的雙花攻擊類型:51%攻擊和競(jìng)賽攻擊。
51%攻擊:攻擊者通過(guò)控制超過(guò)50%的哈希算力,這使他們可以刪除或修改交易的順序。從而實(shí)現(xiàn)多次發(fā)送交易,該情形在比特幣網(wǎng)絡(luò)上目前難以實(shí)現(xiàn),難以符合經(jīng)濟(jì)收益。
例如:我們支付寶的銀行卡只有100元,我們對(duì)外已經(jīng)消費(fèi)了100元,然后通過(guò)控制銀行主腦來(lái)刪除該記錄(可理解為51%的控制算力修改),然后銀行沒(méi)有我的交易記錄,但實(shí)際上支付寶已經(jīng)使用了該100元,所以我的銀行卡仍然還有100元,故可以繼續(xù)消費(fèi)。
BTG雙花攻擊就是51%攻擊的類型,主要是因?yàn)樗懔σ?guī)模較小,當(dāng)時(shí)黑客只需支付3400美元皆可順利完成攻擊。
競(jìng)賽攻擊:使用相同的資金連續(xù)廣播(相同Nonce值)兩個(gè)沖突的交易,但只有一項(xiàng)高Gas費(fèi)的交易得到確認(rèn)。攻擊者的目標(biāo)是通過(guò)驗(yàn)證對(duì)他有利的交易來(lái)使另一個(gè)支付無(wú)效,如此以來(lái)相同的資金發(fā)送到他控制的地址。
例如:A向B轉(zhuǎn)賬100元(一般Gas費(fèi)),同時(shí)也使用一樣的Nonce值發(fā)送另外一筆向B轉(zhuǎn)賬100元(高Gas費(fèi))。在區(qū)塊鏈?zhǔn)澜?,同一Nonce值只能確認(rèn)一筆交易,因?yàn)榈诙PGas費(fèi)更高會(huì)很順利轉(zhuǎn)賬給B 100元,而第一筆因?yàn)榈诙P的成果而認(rèn)定為失敗,所以會(huì)返還給A 100元,這樣以來(lái),A和B各有兩個(gè)100元。
本次鬧劇不存在“雙花”攻擊
而這次Filecoin“雙花”事件就是在混淆概念,這次不可歸咎為競(jìng)賽攻擊,而是一場(chǎng)人為的操作失誤。
從結(jié)果上看,以Filscan.io瀏覽器為例,該筆交易只有一筆轉(zhuǎn)賬成功。

61200枚FIL轉(zhuǎn)賬記錄,來(lái)源:Filscan.io,2021-3
以官方解釋說(shuō)到,“l(fā)otus團(tuán)隊(duì)所知問(wèn)題源自于有兩條消息有相同的發(fā)送者/收到者詳細(xì)信息、相同的Nonce但擁有不同的Gas參數(shù)——被包含在同一Tipset中。像這樣兩個(gè)類似的消息是非常常見(jiàn)的,比如以改變與消息的Gas費(fèi)來(lái)替代消息就會(huì)形成這樣兩條類似的消息。這樣的情況會(huì)由Filecoin網(wǎng)絡(luò)安全、正確地處理,不會(huì)導(dǎo)致兩次轉(zhuǎn)賬:兩條消息中的一條會(huì)被執(zhí)行,另一條被忽略”。
官方解釋意思是,F(xiàn)ilecoin主鏈之前就已經(jīng)針對(duì)競(jìng)賽攻擊(相同Nonce)針對(duì)做好正確的處理交易,并不會(huì)因?yàn)楦逩as費(fèi)的替代行為而出現(xiàn)雙花現(xiàn)象,所以這塊印證了Filscan.io的數(shù)據(jù)準(zhǔn)確。
那么該場(chǎng)鬧劇是如何引起?
官方很好歸納:“錯(cuò)誤使用API。然而,根據(jù)人們對(duì)鏈的檢查方式,這會(huì)呈現(xiàn)出消息被處理了兩次的樣子。具體來(lái)說(shuō),有關(guān)交易所使用了一種錯(cuò)誤的處理鏈狀態(tài)的方式——在tipset的每個(gè)塊上調(diào)用ChainGetBlockMessages,然后在這些消息上調(diào)用StateGetReceipt”。
因?yàn)榻灰姿{(diào)用錯(cuò)了API接口,導(dǎo)致呈現(xiàn)出雙花現(xiàn)象(實(shí)際并不是),該現(xiàn)象不是Filecoin網(wǎng)絡(luò)本身的bug,而是方法上錯(cuò)誤,同時(shí)官方指出應(yīng)該以ChainGetParentMessages和ChainGetParentReceipts來(lái)記賬。
同時(shí)交易所應(yīng)以鏈上的真實(shí)數(shù)據(jù)源記賬,假若以某瀏覽器作為數(shù)據(jù)源,一旦其惡意修改數(shù)據(jù),也會(huì)導(dǎo)致“中心化的惡意”雙花攻擊行為。
總的來(lái)說(shuō),該場(chǎng)鬧劇總的來(lái)說(shuō)是交易所的操作不當(dāng),從而使有心之人有意而為之。那么回過(guò)頭來(lái),掀起了一場(chǎng)無(wú)需有的波浪,那么這次誰(shuí)“雙花”了誰(shuí)?
下篇,我們會(huì)繼續(xù)分析灰度加倉(cāng)FIL信托事件以及Filecoin SAFT六月公募到期。
PS:本篇文章僅做研究分析,不做投資建議。
/End.


