水木清華區(qū)塊鏈基金袁曄:比特幣黃金被“雙花”
全球第26大加密貨幣BTG(比特幣黃金)近期遭51%攻擊。一名惡意礦工獲得了比特幣黃金網(wǎng)絡(luò)至少51%算力,臨時控制了BTG區(qū)塊鏈,在向交易所充值后迅速提幣,再逆轉(zhuǎn)區(qū)塊,成功實施雙花。攻擊者可能從交易所竊取超過388200個BTG,價值高達(dá)1860萬美元。
啥是“雙花攻擊”(double spend attack)?又叫“雙重消費(fèi)攻擊”,就是一筆資金,因為欺詐手段或者系統(tǒng)bug被花費(fèi)了兩次,并且取得了該筆資金的兩次服務(wù)。
為了應(yīng)對雙花問題,比特幣網(wǎng)絡(luò)是這樣處理的:每筆交易都需要先確認(rèn)對應(yīng)比特幣之前的狀態(tài),如果它之前已經(jīng)被標(biāo)記為花掉,那么新的交易會被拒絕。
如果先發(fā)起一筆交易,在它被確認(rèn)前,也就是這個時間段的交易還未被記賬成區(qū)塊block時,進(jìn)行矛盾的第二筆交易,那么在記賬時,這些交易會被拒絕。
如果欺詐者刻意把第一筆交易向一半網(wǎng)絡(luò)廣播,把第二筆交易向另一半網(wǎng)絡(luò)廣播,然后兩邊網(wǎng)絡(luò)正好有兩個礦工幾乎同時取得記賬權(quán),把各自記的區(qū)塊發(fā)布給大家的話,區(qū)塊鏈網(wǎng)絡(luò)可能會混亂,為此,區(qū)塊鏈的規(guī)則是這樣的:先選擇任意一個賬本都可以,這時候原來統(tǒng)一的賬本出現(xiàn)了分叉,但是在兩個賬本中各只有一筆交易,欺詐者也得不到好處。接下來,下一個礦工選擇在A基礎(chǔ)上繼續(xù)記賬的話,A分支就會比B分支更長,根據(jù)區(qū)塊鏈的規(guī)則,最長的分支會被認(rèn)可,短的分支會被放棄,賬本還是會回歸為一個,交易也只有一筆有效。
但是,如果欺詐者這么做:如果是A分支被認(rèn)可(B也一樣),相應(yīng)交易確認(rèn),拿到商品之后,立刻自己變身礦工,爭取到連續(xù)兩次記賬權(quán),然后在B分支上連加兩個區(qū)塊,就像這樣:于是B分支成為認(rèn)可的分支,A被舍棄,A分支中的交易不再成立,但他已經(jīng)拿到商品,欺詐成功。
在B分支落后的情況下要強(qiáng)行讓它超過A分支,其實是挺難的,假設(shè)欺詐者掌握了全網(wǎng)1%的計算能力,那么他爭取到記賬權(quán)的概率就是1%,兩次就是10的4次方分之一。這時,建議大家在一筆交易確認(rèn)后,也就是一個區(qū)塊被記下來之后,再等5個區(qū)塊,也就是等6個區(qū)塊被確認(rèn)后再把交易對應(yīng)的商品交付。這樣,欺詐者還能追上的概率就幾乎為0。
如果欺詐者掌握了全網(wǎng)50%以上的計算力,那么,即使落后很多,他追上也只是時間問題,這就是比特幣的“51%攻擊”——這是需要警惕的問題。雖然在比特幣網(wǎng)絡(luò)中,用戶已經(jīng)極多,全網(wǎng)算力總和非常大,如果真掌握50%以上,也不用靠這個高成本手段欺詐了,挖礦的收益更高,何必呢。
但是,在小的區(qū)塊鏈網(wǎng)絡(luò)(節(jié)點太少)中就非常危險。而且,即便沒有50%以上的算力,還是有機(jī)會成功的,只是概率低而已。
也許當(dāng)比特幣也被“雙花攻擊”的時候,我們一直猜測的“誰是中本聰”就有答案了。
信息首發(fā):水木清華區(qū)塊鏈基金袁曄:比特幣黃金被“雙花”