​支撐POW安全性的不是算力,而是信仰

買賣虛擬貨幣
· 支撐POW安全性的不是算力,而是信仰;· 人們嚴重高估了POW的安全性;· POS的存在只需要一個理由:它能解決POW 51%攻擊的隱患;· Staking Economy 對POS是有害的,它會降低POS系統的安全性;· POS真正無解的問題是無利益攻擊……

這篇文章系統性地分析了POW與POS的安全性優劣之處,得出了很多不同的結論。文字資訊密度很大,讀下來需要不少耐心,推薦各位收藏後閱讀。大多數人用經驗理解POW和POS,而經驗往往是錯的。

本文作者:Maxdeath,任之劼博士,唯鏈區塊鏈高階研究員,主要研究方向包括區塊鏈共識演算法、擴容、應用,曾在國際學術會議上發表多篇區塊鏈論文。

最近正好是一些明星POW和POS專案準備主網上線的高峰期,於是,關於POW和POS優劣的比較又甚囂塵上。我之前看過了很多的這方面的文章,不知道為什麼,總是有種如鯁在喉,有些東西不吐不快的感覺——大部分人比較的POW和POS並不是一個層面上的東西。

POW是一個在現實中採用更多的演算法,而POS,尤其是現在意義中的POS(而非之前peercoin那類早期半成品)是一個目前僅存在於理論中的東西;同時,POW是一類演算法,POS也是一類演算法。因此,我們不能在考慮簡潔、考慮實用、考慮安全的時候,就拿比特幣的POW出來比,然後在考慮效率、考慮去中心化的時候,又拿出另一個不同的POW出來。

所以,在這裡,我想要從更根本性的角度來比較這兩者。換句話說,我們想要比較的不是比特幣的POW與以太坊的casper,也不是目前階段的POW和POS,而是POW和POS這兩種思路的未來和前景,哪個更加適用於區塊鏈的治理和執行。

因此,我們必須拋開現有的POW和現有的POS的一切限制,從本質上,或者說,從一個理想的狀態下探討,兩者根本的區別和侷限在哪裡。

1. POW與POS的本質

那麼首先,我們需要定義一下POW和POS。

首先,兩者都試圖達到一種“隨機選節點出塊,選中概率正比於節點的某種可驗證的資源,然後,由於我們採用最長鏈共識,於是想要推翻已經得到確認的塊需要掌握50%以上的資源”的狀態,只不過兩者的資源一個是工作量,一個是擁有的幣。

從這個角度,我們來看看兩者究竟有什麼是不可或缺的:

POW:能夠提供進行了某些工作量的證據的節點獲得出塊權。
POS:在某個時間之前提供自己擁有某些幣的證明的人獲得出塊權。

僅此而已。

在這篇文章中,我們進行的一切比較都僅僅基於以上這個定義,以及兩者的這一個不同點,然後透過邏輯推理來進行。

當然,我也無意於純從理論的角度來進行比較,因為其實兩者都有所謂的理論“安全性”、但實際上都建立在某些不那麼現實的假設之上。因此,我們也需要考慮兩者在現實,也就是我們所在的這個社會中,在目前以及不太遠的將來,應用於區塊鏈的優劣。

也就是說,我們假設,從功能上,我們可以在近幾年找到這樣兩個理想的演算法。如果我們希望用於一條公鏈,那麼,二者孰優孰劣?

2. POW與POS的安全性

POS最經常被人詬病的一點,是POS還沒有經過實踐的檢驗,而POW則已經在實踐中被證明是安全的了。

然而,正相反。

事實是——POS還沒有在實踐中被證明是不安全的,而POW則已經在實踐中暴露了極大的安全隱患——51%攻擊。

這不是天方夜譚,也不是杞人憂天,51%攻擊對於幾乎所有采用POW演算法的數字貨幣的威脅都是實實在在的。這也是為什麼我們在談論POS的最大原因——不是因為POW浪費電力,不是因為POS的經濟模型更加公平,不是因為POS聽起來更加炫酷,而是因為——

POW已經暴露出極大的安全隱患和問題,而POS可以解決這個問題。儘管在其他方面POS也許都並不一定優於POW,但是這一點就足以成為我們需要POS的理由。

51%攻擊的核心問題描述起來是這樣的:

在一個理想的區塊鏈中,從安全的角度考量,共識的參與者的利益應當與區塊鏈本身的利益一致。於是,51%攻擊才是不可行的,因為能夠在共識中佔有主導地位的參與者不會願意去攻擊這個區塊鏈,否則他們會損失自己的利益。

然而,這點對於POS成立,對於POW不成立。因為礦工在系統中所佔的利益實際上遠小於整個系統的價值。換句話說,當兩者有衝突的時候,POW礦工完全有可能因為自己的利益而進行惡意行為,這裡,“自己的利益”也許是對於區塊鏈的主導權控制,也許是對於區塊鏈發展未來的理念,也許,是雙重支付攻擊的獲益。

如果你認同這一點,你可以不用看以下的長篇大論。如果你不同意,下面我將對POW的這種安全性風險做一些詳細的分析。

2.1POW的安全性

實際上,POW的安全性遠小於大眾認知中的POW安全性。

在大眾認知之中,只要大多數算力是誠實的,比特幣就是安全的,而控制大部分算力是不可能的。

實際上,這個假設也被廣泛應用於幾乎所有共識演算法中——無論是POW,POS,BFT,還是其他的各種POx,我們都在採用類似這種假設——即,如果大部分節點或者資源,也許是1/2,也許是2/3,也許是算力,也許是權益,或者是別的什麼東西,是誠實的,那麼,系統就是安全的。

然而,這個假設本身並不天然成立——所以,在比特幣白皮書之中,中本聰並不是直接就說“我們假設50%以上的算力誠實”,而是說:

“如果有人能夠控制51%的算力,那麼他完全沒有必要進行51%攻擊,因為它能夠透過挖礦來獲得更好的收益,而51%攻擊會讓他之前所挖出的幣和他的礦機變得一文不值。”

也就是說,並不是POW不會被51%攻擊,而是對POW進行51%攻擊不划算。

那麼,對POW進行51%攻擊真的不划算嗎?

有人可能會說當然——“比特幣從沒受過攻擊,這是因為攻擊比特幣的代價高昂到你無法想象。”

然而,實際上稍微關注一些區塊鏈安全的都清楚,關於POW的51%攻擊已經不勝列舉——比較近的有Verge,BTG,ETC……這些都遭受過51%攻擊,並且他們都採用POW演算法,而且,是採用的跟比特幣和以太坊一樣的演算法。

從這個角度講,安全的究竟的是比特幣,還是POW?

有人會說我偷換概念:這些山寨幣能和比特幣(以太坊)一樣嗎?這些山寨幣價格本身就沒夠得上51%攻擊的門檻——我隨便自己做一個xx幣採用比特幣POW進行挖礦,然後被51%攻擊了,這也能說明POW不安全?

但這個解釋並不足夠——因為在之前的邏輯中,我們並不是說POW不會被51%攻擊,而是說51%攻擊不划算。如果我自己造了一個xx幣然後被51%攻擊了,攻擊者沒法從中獲益。但是之前的那些例子中,攻擊者可是實實在在地在攻擊中獲益了。

那麼這條邏輯哪裡出了問題?

難道Verge,BTG,ETC的礦工們,不知道自己可以透過挖礦賺更多的錢嗎?他們不知道如果攻擊了這些幣,會導致幣價降低,於是自己之前挖的礦會一錢不值嗎?

究竟比特幣和這些幣種之間的差別在哪?難道只有價格嗎?

2.2 POW的51%攻擊分析

“POW的安全支撐不是算力,而是信仰”

讓我們來分析一下這幾次攻擊真實的情況:

透過挖礦賺更多的錢是不存在的,51%攻擊會導致他們手中的幣值貶值也是不存在的,因為他們本身在攻擊之前就不需要和這個區塊鏈有任何瓜葛——他們的算力是從比特幣的礦池切過來的,而他們本身也並不持幣,只是需要從交易所購買一些幣,賣掉,然後在交易所還沒有察覺的時候進行雙重支付攻擊再賣一次而已。

所以,歸根結底,POW的邏輯問題在於,理想中擁有超過50%算力的礦工應該是和系統利益保持一致的。例如,對於數字貨幣而言,系統的利益就是安全性,而礦工的利益是挖礦收入,那麼挖礦的預期回報應該十分豐厚,使得礦工願意維護系統的安全性,所以不願意進行雙重支付攻擊。

然而,挖礦的回報要豐厚到什麼程度才能夠完全抵禦雙重支付攻擊呢?

我們來仔細分析一下挖礦的投入和收益,以及雙重支付的投入和收益。這裡,我們假設第一個條件已經成立,即礦機除了挖這種幣之外沒有其他用途。

· 挖礦投入:礦機費用+電費*時間。
· 挖礦收益:算力單位算力挖礦獲得的幣數幣價+收益帶來的利息(現實貨幣或者虛擬貨幣)
· 雙重支付投入:礦機費用(購買或者租用)+交易手續費+獲得算力和雙重支付期間造成的幣價波動
· 雙重支付收益:雙重支付獲利+利息-風險

首先,我們先把所有一次性的成本放在一旁——礦機費用,獲得算力和雙重支付攻擊期間幣價波動,以及雙重支付攻擊的風險。

兩者相比我們發現,考慮長期收入的話,當有礦工已經擁有超過50%算力的時候,幣價或者投資幣的收益並不是阻礙他進行51%攻擊的理由——因為他完全可以把進行51%攻擊的得利來進行別的投資。

於是,“幣價高”是不足以抵禦雙重支付攻擊的,“幣價持續走高”也不足以抵禦雙重支付攻擊,因為單位算力的獎勵幣數還會隨著總算力的提高而減少,甚至,“單位算力獲益持續提高”都不足夠,因為必須得是“單位算力的幣價走高的程度要超過其他投資品,即:攻擊者找不到比投資算力更合算的投資了”才能完全抵禦雙重支付攻擊。否則的話,從理論上講,總有某個程度的獲益足以誘使51%的算力鋌而走險進行雙重支付攻擊。

然而,如果預期挖礦收益能夠跑贏其他投資品,如果這個系統足夠去中心化,那麼應該會有更多的人來挖礦,導致單位算力的收益降低。除非正在挖礦的人對於挖礦收益的預期和沒有加入挖礦的人不一樣——也就是“信仰”。

由於有信仰加持,再加上沒有加入的人獲得了“沒有信仰”的減持,因此礦工認為投資算力是划算的,而沒加入的人認為投資算力是不划算的,在這樣的場景中,擁有了50%以上算力的礦工才不去進行雙重支付攻擊。

而相反,如果加密貨幣變得足夠主流而算力變成了正常投資品中的一種,那麼,正如大家在看到幣價高漲的時候把自己從銀行、股市、基金、理財中的錢拿出來投資虛擬貨幣一樣,當挖礦的回報不佳的時候,還有什麼可以驅使擁有51%的礦工不把自己的錢從算力市場抽出來投入別的行業呢?如果這個時候,他發現可以進行一次51%攻擊,而攻擊的獲利會超過自己把算力賣掉能夠抽出的錢,那麼,他有什麼理由不這麼做?

這個結論本身就已經足夠令人警醒了,但是它揭露出來的意義其實更加深遠:當礦工擁有51%算力的時候,我們一廂情願地認為他們的利益已經綁在這個區塊鏈上了。然而事實是,支援著他們繼續挖礦的理由和支援他們進行任何一個投資的理由的唯一區別,大概就只有信仰。

而這個“信仰”,其實也無非只是“挖礦能賺錢”,無論加密貨幣以後變得主流,還是最終變得式微,這個信仰都會慢慢褪掉。到了那個時候,只要當他們發現挖礦不划算的時候,撈一筆下車才是他們的最佳選擇,唯一的問題只是這一筆他們能撈多少。

“礦機成本不是攻擊成本的一部分”

那麼,問題來了——我們能透過一筆雙重支付撈多少呢?這個值不能太大,因為:1)你需要能夠從市場上收購到這麼多幣;2)賣掉這麼多幣不足以引起市場立刻的警覺。

於是,之前很多我們忽略掉的東西變得不可忽略了,例如——礦機費用,交易費,幣價波動,以及其他的風險……

而這裡,礦機費用實際上是直觀上最容易看到的門檻,也是很多人對於POW信心的根源——獲得50%的算力哪有那麼容易?你去看看現在這些POW鏈的算力然後去根據相應礦機的市場價格算一算就知道了。

但我們其實並不需要購買礦機,我們只要收購算力就夠了。換句話說,我們只要買通控制算力的人。而對於擁有算力的人來說,別忘了我們之前的分析——從利益的角度講,他們可並不是被綁在鏈上的,只要有足夠的回報,他們隨時可以下車。

這裡又有兩種情況:

1、他們的礦機除了挖這條鏈還有其他用途。
2、他們的礦機除了挖這條鏈沒有其他用途。

通常,我們認為後者是更安全的。用實際中的例子來說就是,如果我們要發個POW的新幣,那麼採用和主流貨幣一樣的演算法是不安全的,而採用特殊的POW演算法要更安全。

然而,實際上兩者同樣不安全——

首先,“有沒有其他用途”的判斷是完全主觀的,因為本身“攻擊者是否採用攻擊”的判斷就是主觀的。如果我們判斷這個礦機在攻擊之後還有其他用途,那麼礦機的成本不需要計入攻擊成本之中。如果他們判斷礦機在攻擊之後沒有其他用途,那麼,既然攻擊的前提條件是他們判斷礦機的投資從長期看不划算了準備下車,那這個時候,礦機已經是沉沒成本,並不需要計入攻擊成本之中。

有人可能會說我在偷換概念——即便是繼續挖礦不賺錢,也不代表礦工會把算力賣給攻擊者啊!

但事實是,本來礦工就在把他們的算力賣給礦池,那麼,誰能知道那些給你的獎勵比別的礦池多的礦池不是攻擊者呢?這點,我們會在後文中展開說。

“POW中,51%攻擊的成本僅相當於其市值的1/100,000”

現在,我們回到之前的結論——我們嚴重高估了POW的安全性。

1、首先,人們認為51%攻擊需要購買能夠提供這些算力的礦機,實際上並不用,只需要從算力所有者手中收購相應的算力即可,而收購算力的成本和礦機本身的成本無關,只和算力所有者的預期回報有關。這個收購可能會相當容易,因為只需要製造一個回報比別的礦池略高的礦池就好了。

2、其次,人們認為採取51%攻擊不划算因為挖礦也可以獲得更豐厚的回報,實際上也不是,因為攻擊之後你可以一次性獲得現金,而那這些現金你可以去進行其他投資,同樣可以獲得豐厚的回報。於是,不要說幣價下跌或者不漲這種事了,只要投資挖礦跑不贏其他投資,它的安全性就會下降。同時,無論是熊市導致礦工群體的信仰值下降,還是牛市導致民眾對於挖礦投資的信仰值上升,它的安全性都會下降——只有當挖礦的人覺得特別賺錢而不挖礦的人不願意進來的時候,挖礦獲益是最大的,而安全性也是最高的。

3、再次,POW剩下的唯一安全性,就在於幣價的波動,手續費和安全風險了——換言之,就是在將這些貨幣兌換出去的風險,然而,這些風險實際上都被交易所承擔了。因為交易所為了互相競爭,會盡可能提供更低的手續費,更好的流動性,以及更快捷的轉賬,也就是,削減雙重支付攻擊的成本,也削減了POW的安全性。

於是,再減去這些,我們得出了一個結論:其實POW的安全性,基本上約等於獲得50%算力的成本,而這個成本只和收益相關,而和算力本身的成本無關。

如果算力有一個相對公開透明和自由的市場,那麼,只要你去crypto51.app上去看一下,租賃一小時算力的成本,幾乎就是攻擊每個貨幣的成本。如果算力無法透過公開的市場得到而需要從算力控制者手中收購的話,那麼考慮到需要支付給所有者的溢價,這個值可能會高於crypto51上的估計。但無論如何,它和這個貨幣的總市值相比非常微不足道,大概在1/100,000這個級別。而這麼小的交易額造成的波動幾乎可以忽略不計。

根據這些分析,我們不難理解為什麼Verge,BTG和ETC會受到攻擊,我們甚至可以總結出什麼樣的幣種更加容易受到攻擊:

1. 算力易於獲得並且獲得成本低:這三種貨幣都採用和主流貨幣一樣的POW,從算力租賃的網站上就能簡單獲得足夠攻擊的算力。
2. 幣值漲勢不佳。
3. 被許多交易所接收。

2.3 POS的安全性

那麼,為什麼POS能夠抵禦51%攻擊呢?

其實說起來非常容易——我們根本不用進行類似於POW這麼詳盡的分析,POS也天然免疫類似於POW這種形態的51%攻擊,因為51%攻擊無論如何繞不開的成本是50%以上的持幣,而任何對於這個幣的攻擊導致的幣價下降,損失最大的都只會是50%以上的持幣者本人。

但這裡我們沒有考慮的一點是Staking Economy,也就是未來POS也會形成和POW一樣的“權益礦池”,即不願意花精力參與共識的持幣者把出塊權委託給某些更大的持幣者或者比較有聲望的機構,然後只收取挖礦獎勵(當然委託人會獲得一部分獎勵)。於是,對於POS進行51%攻擊就不再需要收購這些幣,而只需要暫時控制超過50%概率出塊的礦池就行了。

不過,即便是這樣,POS攻擊的成本也會遠高於POW。

因為首先,與POW需要持續投入電費,以至於小礦工必須加入礦池來獲得持續的收入不同,POS中持續投入的伺服器維護費用要遠小於POW,所以算力集中於大礦池的可能性會小於POW。也就是說,即便Staking Economy真的在POS鏈中出現,也未必一定會出現幾大礦池壟斷的情況。

並且,最重要的是,擁有一定數量的幣的節點也完全可以並且有意願自己維護一個節點,而不用依賴礦池。尤其是一些大的持幣者——你很難想象他們不願意維護全節點,也就是說他們並不關心這個鏈上出的塊。另一個最重要的原因是,與POW不同POS出塊是需要持幣人簽名的,因此POS礦池在作惡的時候可能會付出更大的社會代價,而對於POS礦池而言,由於他們實際上挖礦所需要的裝置投入遠小於POW,所以他們在現實之中社會地位和信譽的成本反而是最高的。

當然,其實這幾點都改變不了一個結論,就是Staking Economy這種委託進行共識的做法的確會削弱POS的安全性。

因此,我個人對於Staking Economy這種東西的觀感並不正面,同時,很多POS專案也同樣對於Staking Economy所帶來的安全隱患有所意識,所以會對相關機構進行規範,比如要求一定的持幣量。但無論如何,就如同POW礦池一樣,POS的Staking Economy也是無法避免的,但兩者相比的話,如果被委託的機構是大持幣人的話,那麼最終也只是把攻擊成本從50%變成了一個更小的比例,比如10%,但絕不會像是POW一樣,是1/100,000這樣的級別。

以上,我們說明了在POS中進行50%攻擊的成本很高——那麼從另一個角度講,如果花了這麼高的成本,攻擊者有可能獲利嗎?答案是幾乎沒有任何可能,因為你總得找到有個冤大頭願意和你進行這麼大筆的交易——交易所幾乎不可能對這麼大筆交易買單。所以說,唯一的可能是你找到兩個並不懂虛擬貨幣的冤大頭,然後進行一個真正意義上的場外的“雙重支付”……

不過如果真的存在這樣的人的話,似乎我們有簡單得多的方法可以忽悠他們。

然而,這還並不足以說明POS對於POW的安全優越性,因為我們只是說了在POW中適用的51%攻擊無法複製到POS,但POS本身會受到另外的兩種不存在於POW中的攻擊的威脅:長距離攻擊(Long range attack)和無利益攻擊(Nothing-at-stake attack)。

我們分別來分析一下這兩種攻擊。

2.4 POS的長距離攻擊分析

長距離攻擊的概念是,擁有不超過50%權益的節點可以透過某種方法生成一條更長的鏈,取代目前的最長鏈——這裡所謂的“某種方法”通常都需要一段比較長的時間。它涉及到POW和POS的一個重要區別——POW實際上不僅僅能夠生成隨機數,而且能夠實現在非同步系統中每隔一段時間生成一個隨機數,這個性質是POS不具備的,所以POS必須引入某些時間的概念。然而,這就給了惡意節點可乘之機,因為誠實節點獲得的出塊權是有時間限制的,而惡意節點沒有。

這一點本身,其實本不應該屬於我們這次的討論範疇,因為我們想要比較POW和POS的本質,而這一個問題其實並不是POS的本質缺陷,換句話說,POS可以透過一些方式,例如VDF,來解決這個問題。然而,有鑑於採用VDF解決這個問題的演算法還不成熟,以及我個人認為其實目前的解決方案也是完全夠用的,所以,這裡我還是詳細地講一講這個問題。

目前已知的長距離攻擊方法有三種:

1、向前腐化攻擊(Posterior Corruption Attack):當曾經的權益持有者賣掉權益之後,他們就不再受到持有的幣貶值的約束了,然而,如果超過50%的早期持幣者賣掉了手中的幣的話,攻擊者可以買通他們再重新生成一條他們沒有賣掉權益的歷史,然後有可能可以創造出一條更長的鏈。

2、權益流血攻擊(Stake Bleeding Attack):不到50%權益的節點可以透過“藏一條鏈自己的鏈”這一非常簡單的方式進行長鏈攻擊,因為在自己的鏈上,因為出塊的只有自己的節點,所以他們會一直獲得挖礦獎勵。雖然一開始他們生成的鏈一定短於外面的鏈,但是隻要他們藏的時間足夠長,他們的權益終將超過50%,並且慢慢地獲得更快的出塊頻率超過外面的鏈。

3、權益粉碎攻擊(Stake Grinding Attack):這種攻擊方式在不同的POS中有不同的形式,但總體來說,擁有不到50%權益的節點可以利用自己算力上的優勢,或者自己可以隨意改變區塊時間戳的優勢,獲得比誠實節點更多的出塊機會,然後利用這個優勢透過一段較長的時間生成比誠實節點更長的鏈。

通常應對這三種攻擊的應對是檢查點(Checkpoint),即一段時間需要生成一個由一些節點認證過的區塊來保證這個區塊之前的鏈不會再更改。

“如果能接受下載客戶端,那麼為什麼不能下載檢查點?”

對於很多更理想主義的區塊鏈支持者而言,檢查點機制是個不那麼“優雅”的權宜之策,因為它犯了幾個區塊鏈支持者不能接受的罪過:

1、理想狀態的區塊鏈中,任何人都不需要相信除了演算法和創世區塊之外的任何東西就可以獨立驗證任意交易的合法性。然而,檢查點相當於引入了一個另外的需要信任的東西。即便這個檢查點是所有持幣者簽名認證的,從理論上來講這也是不可接受的,因為對於新加入系統的節點而言,他們需要信任曾經的持幣者;

2、檢查點需要引入簽名,而簽名會破壞匿名性。

關於匿名性的問題,我們同樣放到後文中深入討論,這裡我們先說第一個問題。

這裡我想要闡述一下我對於檢查點這個機制的觀點——從現實的角度看,這個事真的不能接受麼?

實話實說,如果你是個剛剛進入網路的節點——下載創世區塊和演算法,以及下載下載創世區塊,演算法和歷史,有什麼本質上的區別?後者無非就是多了一種可能性,即惡意節點可以透過長鏈攻擊偽造一份歷史,於是儘管你獲知了正確的演算法和創世區塊,你其實並沒有獲得真正的鏈。

但問題在於,對於普通使用者而言,你怎麼知道你下載的客戶端用的是正確實現的演算法呢?雖然從理論上來說我們需要信任的只是演算法而已。但實際上,無論是現實,還是未來,我都有理由相信,沒有人會從頭開始做演算法的實現——實際上,每個人還是需要信任某些可信節點來提供的安全的客戶端,也就是軟體,而且,沒有人會去扒開程式碼看看這個軟體是否和論文相符。

那麼這樣,我們假設需要依賴可信節點來獲取區塊的歷史,這也不是什麼十惡不赦的事情。

“鏈外共識是客觀存在的”

然後,就有了第二個問題——的確,長距離攻擊是可能的,正如51%攻擊也是可能的一樣,我們不光要考慮這種攻擊理論上的可能性,也要討論它在實際之中的條件。

我們在前面論證了51%攻擊對於POW的危險性的時候,先是分析了它理論上的可能性,然後,再分析了它在現實中攻擊的條件,發現其實無論是在理論上還是實際上,條件都要比大眾認知中的低得多,於是,我才得出了POW有安全隱患的結論。

那麼,我們同樣分析一下以上幾種長距離攻擊在現實中生效的條件。

首先,無論是權益流血攻擊,還是權益粉碎攻擊,成功的概率都依賴於你擁有的權益比例。換句話說,雖然攻擊者沒有超過50%的權益所以沒法正常的生成一條更長的鏈,但是如果他們擁有,例如說40%的權益,那麼,他們可以透過以上兩種手段,以及一個比較長的時間來進行長距離攻擊。

於是,大家已經看出這種攻擊不實際的地方了——當惡意節點的權益比較小的情況下,他們發動一次長距離攻擊會長得不現實。如果他們佔有的權益比較多的時候,他們一沒有理由來攻擊這個系統,二所需要攻擊這個系統的成本並不比50%的權益低多少——這點本身就是POS的優勢。

唯一一種比較麻煩的長距離攻擊是“向前腐化攻擊”,而且,特指這些曾經的持幣者本身就是攻擊者的情況。因為如果這些攻擊者本身沒有想過要攻擊,只是再賣了幣之後被人買通這種情況是可以被一種叫做Key-Evolving Signature的東西解決的。所以,他們必須要從持幣的時候就已經開始做好了攻擊的準備,即偷偷開始私藏一條鏈才行。

這其實相當於一個長時間的51%攻擊的情況,即以前的大權益所有者(超過50%)一邊私藏一條鏈,一邊緩慢地把權益賣掉,在權益全部賣光之後,掏出私藏的鏈告訴大家說:“我胡漢三又回來了,你們吃了我的給我吐出來!”

然而,我對於區塊鏈的核心作用的一貫看法是——區塊鏈的意義在於用“機器的共識”代替“人的共識”,但是,在目前這個階段,有些“人的共識”是我們目前解釋不了的,也沒法去取代的。而這個時候,盲目的去假裝這種“鏈外共識”不存在而粗暴地想要用某個演算法在摒棄一切鏈外共識的情況下實現絕對的安全,是不實際的也是沒有意義的。

所以,我同意康奈爾大學Elaine Shi教授對於這個問題的看法——實際上,如果這種情況真的出現,其實某一種叫做“社會共識(social common knowledge)”的東西會自然而然地去糾正它。更簡單一點說,對於任何一個POS鏈,假設它的早期權益所有者突然某一天拿著一條更長的鏈回來,對於現在的權益所有者說:把你們的錢都給我,現在的權益所有者,甚至說,不要說現在的權益所有者了,大概所有這條鏈的利益相關方,都會同仇敵愾創造出一個新的規則不承認這條鏈的合法性,即便從演算法上這條鏈確實更加“合法”。

那麼,一條不會被大部分這條鏈使用者所接受的鏈,和一條新創造出來的分叉鏈又有多大的區別呢?又或者說,在以太坊經過了幾次升級後的現在,一條根據原規則合法的鏈,例如ETC,是不是也可以算作一個長距離攻擊呢?

所以,歸根結底,所謂“社會共識”,無論是在現在,還是我們可見的未來,都是客觀存在的,因此,無論是這種長距離攻擊,還是其他的幾種長距離攻擊,即便上有理論上的可能,實際上,只要它仍舊需要一個很長的時間來進行,例如數月或數年,那麼它的威脅其實非常有限。

然後,無論是引入檢查點,或者引入一個“委員會名單”,或者是引入“社會共識”,實際上都是引入一個“有某些可信的鏈外資訊存在”的假設。而在我看來,在現實之中,無論是現在還是可見的未來,這對於POS的安全性都不是個問題。

2.5 POS的無利益攻擊分析

真正無解的問題是無利益攻擊。

POS對於無利益攻擊是無解的,這其實在任何POS裡都一樣,因為根據POS的原理,它對於在這個系統中毫無利益或者利益很小的節點的約束就是很低的。

在一個極端狀況中,例如整個系統中有一億個節點所有人的利益都很小,那麼任何POS演算法都不安全,因為惡意節點行為造成的利益損失太少了,所以我們沒有理由認為50%以上的節點是誠實的,反而,如果他們能夠從惡意行為中獲益的話,根據公地悲劇(Tragedy of the Commons),他們是一定會作惡的。

懲罰機制並不能解決這個問題,因為懲罰必須要和獲益相當,而在這樣的一個所有節點利益微小的系統中,要不然懲罰也只能忽略不計,要不然懲罰太高導致沒有人願意進入這個系統。

因此,幾乎所有POS,都額外需要引入一個准入機制——要麼是透過抵押,要麼是有持幣數門檻,所有參與共識的節點必須保證他們擁有足夠讓他們在意從而約束他們行為的權益。

而這點在POW裡是不一樣的,因為POW中無論你的算力多少,你損失的電費是逃不掉的。並且,因為你獲益的唯一方式是雙重支付——所以,當你的算力在不超過50%的時候,你作惡是嚴格不划算的。

換句話說,實際上,對於POW而言,小礦工(挖到塊機率較小的礦工)的作惡行為會受到很重的懲罰,因為在浪費算力的同時幾乎不可能有回報;而對於大礦工(挖到塊機率較大的礦工),他們的作惡行為則有可能獲益,因為他們聯合起來進行50%攻擊的收益可以遠超成本。

然而,對於POS,小礦工的作惡行為受到的懲罰很輕微,於是,只要作惡能夠獲益,他們就有動力去作惡;然而POS對於大礦工作惡的懲罰則極其嚴重,因為越大的礦工代表他們的權益越多,於是惡意行為造成的損失就越大。

這兩點,才是POW和POS的根本性區別。

如果比較兩者優劣的話,我們可以很明顯地看到:

· 在一個算力(權益)更分散,更平均的系統中,POW更合適。
· 在一個算力(權益)更集中,更不平等的系統中,POS更合適。

我們已經比較了POW和POS的安全性問題,也得出了一些結論——但很遺憾的是,在一個非許可的公有鏈的環境中,實際上POW和POS最終都會趨向於一個算力(權益)更集中、更中心化和更不平等的系統。

為什麼呢?這個問題我們留給下一篇講。

https://bbs.vechainworld.io/topic/264/pow%E4%B8%8Epos

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;