51%攻擊”是一個充滿著想像力的詞,總讓人有一種刀光劍影看小說的感覺,但其實很多人對這個詞的理解是不太準(zhǔn)確的。
最常見的理解是按照這個詞的字面意思:認(rèn)為只要算力超過51%,就能對某個系統(tǒng)發(fā)動攻擊,這個系統(tǒng)就存在中心化或者被攻破的可能性。
比如,我今天隨便查了兩篇相關(guān)的文章,分別是這么說的:
1、當(dāng)?shù)V池的算力過大,超過全網(wǎng)51%的哈希力,就會發(fā)生51%攻擊。
2、51%攻擊,就是有人掌握了全網(wǎng)51%以上的算力之后,就可以像賽跑一樣,搶先完成一個更長的、偽造交易的鏈。比特幣只認(rèn)最長的鏈。所以偽造的交易也會得到所有節(jié)點的認(rèn)可,假的也隨之變成真的了。這是由比特幣的共識機制PoW(工作量證明)決定的。
在追究這些說法是不是正確之前,我們先來研究一下到底51%攻擊是指什么呢?它的概念又是怎么定義的呢?
事實上,比特幣白皮書全文中并沒有出現(xiàn)“51%攻擊”這個詞,不過倒是有過相關(guān)的描述,算是最接近對51%攻擊的定義了:The system is secure as long as honest nodes collectively control more CPU power than any cooperaTIng group of attacker nodes. 只要誠實的計算節(jié)點在總體上比任何一個攻擊群控制更多的計算能力,那么系統(tǒng)就是安全的。
從這句話可以推論一下,要想一方的計算能力超過另外一方,最好是一方的算力超過50%,比如達到51%時,那它就肯定比另一方多。如果誠實節(jié)點擁有51%算力,那系統(tǒng)就是安全的;如果作惡節(jié)點擁有51%算力,那它就能對另一方發(fā)動51%攻擊,那系統(tǒng)就是不安全的,我估計51%攻擊就是從這里來的。
江卓爾在《天下大義,當(dāng)混為一——算力戰(zhàn)》中有專門提到他的定義:大家都知道 “51%算力攻擊”: 1、攻擊者通過優(yōu)勢算力,挖掘一條比原鏈更長的攻擊鏈。 2、攻擊鏈向全網(wǎng)廣播后,節(jié)點按規(guī)則,將接受更長的鏈,丟棄原鏈。 下圖中的直線鏈(上面的藍(lán)色鏈和下面的紅色鏈),表示被中立節(jié)點接受的主鏈。
下面,我將把51%攻擊拆成“51%”與“攻擊”這兩個詞來分別講解。
一、51%的算力不是絕對的
1、即使沒有51%的算力,比如只有30%,40%的算力,也能發(fā)動“51%攻擊”; 并不是超過了51%的算力,就一定會發(fā)動51%攻擊,只是存在這種可能性。
事實上,即使你只有30%的算力,你也有可能連續(xù)出5-6個塊,也已經(jīng)可以開始發(fā)動很有威脅的“51攻擊”了; 即使你有51%的算力,你也有可能半天出不了一個塊,而攻擊失敗,只不過長久看來,你出塊的概率等于你算力的權(quán)重。
如果把節(jié)點分為誠實節(jié)點、中立節(jié)點、作惡節(jié)點的話,那么你只需要比誠實節(jié)點的算力多即可,而不必一定需要51%的算力。
2、算力只是這場競賽的一個方面,還有網(wǎng)絡(luò)傳播等方面因素。
在出塊有先后的情況下,基本上誰先出塊誰就有很大概率成為最長鏈。
在同時出塊的情況下,誰能更快的傳播到51%的網(wǎng)絡(luò)節(jié)點并被接受,并在此基礎(chǔ)上進行進一步的擴展和記賬,誰就是最長鏈。
從這個角度說,51%指的不僅是算力,更是指網(wǎng)絡(luò)節(jié)點的接受度。 從這個角度說,更重要的不僅是51%算力,而是利用優(yōu)勢算力搶先出塊后的“最長鏈法則”。
當(dāng)然,這些都是對同一條鏈上的競爭而言; 對于已經(jīng)分裂成不同的兩條鏈而言,比如BCH和BTC,那么無論其中一條領(lǐng)先多少區(qū)塊,都沒有太大意義。
二、算力競爭本身并不是攻擊
這里說的是“51%攻擊”,而不是說的“51%競爭”,“51%爭奪”。
這兩者有什么區(qū)別呢?
競爭是為了從中獲益,而攻擊是為了摧毀這條鏈。
競爭是合理的,即使你擁有超過51%的算力,只要你在規(guī)則允許的范圍下,正常出塊,正常挖礦,那么這就是正常的競爭,仍然是以誰先出塊,誰的鏈最長為判斷標(biāo)準(zhǔn),不能算攻擊。
但是,像在ABC與BSV的算力大戰(zhàn)中發(fā)生的事,比如BSV最初的宣傳就是要“用算力摧毀BCHABC”,“讓BCH上兩年沒有任何交易”(雖然最終都沒有達成),這種行為就是明確的攻擊,而不是單純的競爭。
一旦51%攻擊達成,某條鏈將被摧毀,攻擊方和防守方都會一無所獲。
這也就是為什么江卓爾說“攻擊方不管勝負(fù),必然損失攻擊成本,而防御方有防守優(yōu)勢,如果獲勝還可以獲得挖礦收入作為補償”的原因。
有人會問,花那么大的代價,摧毀一條鏈有什么好處呢?一般來說沒什么好處,大部分攻擊行為都是弊大于利。一般來說,算力越大越會主動維護整個系統(tǒng),而這也正是比特幣系統(tǒng)內(nèi)置的博弈論發(fā)揮作用的地方。
但在這個案例中,BSV方希望通過摧毀BCHABC,建立自己的BSV正統(tǒng),這就是摧毀的意義;這也是他曾經(jīng)說過最終將通過算力戰(zhàn)摧毀BTC,從而統(tǒng)一BTC的原因所在。
三、51%攻擊的本質(zhì)
總結(jié):無論是中本聰還是江卓爾對51%攻擊的定義,都沒有出現(xiàn)51%這個詞,我個人認(rèn)為,51%攻擊的更準(zhǔn)確的理解是通過優(yōu)勢算力(并不要求51%)實現(xiàn)對最長鏈的爭奪。
畢竟正如白皮書里面最明確的定義:Nodes always consider the longest chain to be the correct one and will keep working on extending it. 最長鏈勝出,其它節(jié)點在這條鏈基礎(chǔ)上擴展。