所謂的 51% 攻擊,就是「攻擊者控制全網 51% 以上的算力」,大多數人對 51% 攻擊有誤解,會以為控制了大部分的算力就可以隨意 “改寫” 帳本,把別人的錢變成我的錢,其實這是不對的,即使攻擊者控制了全網 90% 以上的算力,也不能把別人的錢變成他的錢,因為比特幣和其他加密貨幣的轉移需要有持有人的「數位簽章」才能完成,即使是攻擊者也無法擅自創建交易。
當比特幣所有者發起交易時,驗證後的交易會被放入等待打包的交易池中,礦工再從這些池中挑選交易打包成區塊。對挖礦不了解的人建議先閱讀這篇文章「什麼是挖礦」。總而言之,礦工的計算能力越強,取得計帳權的機會就越大。當礦工取得計帳權後,便開始打包區塊並將其廣播給其他礦工,其他礦工會根據現有的區塊鏈交易記錄驗證區塊內的交易是否有效。
51% 攻擊是如何進行的?
51% 攻擊的情況下,當一個惡意礦工取得計帳權時,他同樣打包交易,但是!他不將其廣播出去,於是出現了兩個版本的區塊鏈。
綠色區塊鏈為全網認可的真實區塊鏈,紅色區塊鏈是攻擊者維護的“秘密”版本。
舉個例子,惡意礦工用他所有的幣買了一台車。在真實的區塊鏈上,他的比特幣現在已經用完了。但在他的秘密版區塊鏈上,他並沒有將這筆交易打包,因此,他仍然擁有那些比特幣。
重點來了,區塊鏈存在著最長鏈共識(精確來說是”最困難” 或 “工作量” 最多的鏈,但我們將其簡單化),簡單來說,如果網路中出現兩個版本的區塊鏈,全網礦工會選擇最長的那一條為準。如果惡意礦工的算力只有全網的 30% ,那他維護的秘密區塊鏈的長度,很難超越真實區塊鏈的長度,因為他要跟其他 70% 的礦工競爭。
然而,如果惡意礦工擁有超過 51%的算力,他就有較大的機會比其他礦工更快地將區塊添加到區塊鏈。當惡意礦工創建的秘密區塊鏈比真實區塊鏈長時,他就會突然將這個版塊的區塊鏈廣播到網路上,其他礦工會發現這個區塊鏈版本比他們正在處理的版本更長,協議便會誘使他們切換到這個鏈,秘密區塊鏈因此被視為真實的區塊鏈,並且「此鏈上未包含的所有交易將立即被撤銷」。換句話說,攻擊者之前用來買車的那筆交易會被回溯,比特幣又重新回到攻擊者的錢包,攻擊者又能夠再次花費這些比特幣。
51% 攻擊成本高昂
以上就是一次成功的 51% 攻擊方式。不過,大家也不需要太過擔心,實際上這種攻擊非常難以執行。就像前面提到的,一個礦工必須要有超過全網一半的算力才能完成攻擊,考慮到比特幣區塊鏈上有數百萬的礦工,即使是地球上最強大的計算機也不能與該網絡上的總計算能力直接競爭。如果真的要攻擊,惡意礦工必須花費大量資金購買挖礦設備、廠房和其他固定成本,再加上電費等其他開銷,對攻擊者而言,進行 51% 攻擊未必划算,至少在比特幣區塊鏈的情況下是如此,但對其他總算力較小的區塊鏈而言,就不一定了。