建立共識網路抵禦攻擊減少合謀,V神的「去中心化」結構、政治與邏輯三重含義解析
雷鋒網AI金融評論:日前V神在科技博客Medium發表文章,解釋了在區塊鏈領域備受關注的去中心化問題。V神認為,去中心化目前的定義是非常模糊而失敗的。雷鋒網AI金融評論為您做如下編譯:
「去中心化」是加密經濟學領域使用最頻繁的詞語之一,甚至常常被視為區塊鏈存在的全部理由,但它也是被定義的最差的詞語之一。人們花費數千小時的研究和價值數十億美元的哈希功率,只為一個目的:實現去中心化並保護和改進它。並且當爭論趨於白熱化之時,總有協議(或協議擴展)的某一方支持者聲稱,另一方的提案是「中心化」的,以此作為最終的擊倒性論點。
關於「去中心化」這個詞的實際意義,經常會有很多混淆。例如,下面這個圖實際上毫無幫助,但不幸的是卻常常被引用:
現在,我們可以參考一下果殼網上 「 分散式和分散式之間有什麼區別 」 的問題的兩個答案。第一個基本上複述了上面的圖,而第二個則提出了完全不同的主張,即「分布的意思是,所有的交易處理不都在同一個地方完成」,而「分散則意味著沒有一個單一的實體可以控制所有的交易」。同時,以太坊堆棧交換的最佳答案給出了一個非常相似的圖表,但「分散式」和「分散式」的標註卻交換了地方!顯然,這方面的澄清迫在眉睫。
三種去中心化
當人們談論軟體分散化時,實際上他們可能會談論的是三種不同的中心化/去中心化。雖然在某些情況下你很難相信如果沒有一個何以擁有另一個,但一般來說它們是完全獨立的。分類如下:
結構(去)中心化? -一個系統是由多少個實體計算機組成的?它單次可以容忍多少台電腦同時發生故障?
政治(去)中心化 ?- 一個人或組織同時控制組成系統的多少台計算機?
邏輯(去)中心化 - 系統呈現和維持的介面和數據結構是否更像一個單一對象會還是一個非晶群?一個簡單的啟發式提問:如果將系統減半,包括提供者和用戶,那麼這兩個部分是否會繼續作為獨立單元完全運行?
我們可以嘗試將這三個維度放入一個圖表中:
請注意,這個位置放置非常粗糙且有很大的爭議。不過,讓我們嘗試逐個看看:
傳統公司在政治上中心化(一位CEO),在架構上中心化(一個總部),邏輯上中心化(不能將他們分成兩半);
民法依賴於一個中心化的立法機構,而普通法則是由許多單個法官制定的先例。民法仍然有一些結構去中心化,因為雖然許多法院都有很大的自由裁量權,但普通法有更多的權力。兩者都是邏輯上中心化的(「法律就是法律」);
語言在邏輯上是去中心化的; 愛麗絲和鮑勃之間的英語口語以及查理和戴維之間口語完全不一樣。沒有一種語言存在所需的中心化基礎設施,而且英語語法規則不是由任何一個人創建或控制的(而世界語最初是由路德維希·扎門霍夫發明的,儘管現在它的功能更像是一種活躍的語言,逐漸演變沒有許可權);
BitTorrent在邏輯上是分散的,類似於英語。內容傳送網路也類似,但由一家公司控制;
區塊鏈在政治上是分散的(沒有人控制它們),架構上也是分散的(沒有中心化的故障點基礎設施),但是它們在邏輯上是中心的(有一個共同認可的狀態,整個系統像一台計算機一般運行)。
很多時候,當人們談論區塊鏈的優點時,他們描述的是擁有「一個中央資料庫」的便利優勢; 中心化是邏輯上的中心化,而且這種中心化在很多情況下都是很好的(雖然IPFS的Juan Benet也會儘可能推動邏輯分散化,因為邏輯上分散的系統往往能在網路分區的情況下生存,能夠在世界上連接性最差的地區良好的運行等等;另請參閱Scuttlebot的這篇文章,其中明確提倡邏輯去中心化)。
架構中心化通常會導致政治中心化,但是並不一定——因為即便是在正式的民主中,政治家也需要在一些實體管理機構內會晤並持有選票,但是這種機構的維護者並不會獲得大規模的決策權力。在計算機系統里,如果一個網上社區為了方便而使用中心化論壇,也是基於廣泛統一的社會契約之下,如果論壇所有者有惡意行為,那麼論壇上的用戶就會轉移到其他論壇上。
邏輯上的中心化使得結構去中心化變得更加困難,但也並非不可能——參見去中心化共識網路的運行。但是相比於維護比特流,它的難度可能會更大一些。邏輯中心化使得政治去中心化變得更加困難——在邏輯中心化的系統中,想要僅僅通過「求同存異」來解決爭端也更困難。
去中心化的三個理由:
接下來的一個問題是,為什麼去中心化這麼重要?答案通常會提出以下幾個觀點:
容錯——去中心化系統很少會因為某個局部故障而導致整個系統崩潰,因為它依賴於很多獨立工作的、不相似的組件。
抵抗攻擊——想要攻擊或操縱去中心系統的成本更高,因為他們基本上沒有敏感薄弱的「中心弱點」,而中心化系統的攻擊成本則要低得多。
抵制合謀——去中心化系統的參與者們很難合謀勾結在一起,而對於傳統企業和政府領導者而言,他們通常會為了自己的利益互相勾結,最終損害的是相對難以協調一致的公民、客戶、員工和廣大人民的利益。
上述這三點原因都是非常重要且有道理的,如果你用這三個觀點來思考協議決定,你會發現,這三個論點會導致一些有趣但不同的結論。下面,就讓我們逐一展開,仔細研究一下。
1、提升容錯
首先是容錯,核心問題其實很簡單。你認為哪一種狀況更容易發生:某一台計算機出現故障,還是十台計算機中的五台同時出現故障?這個問題的答案是毫無爭議的的,而且在許多情況下其實也適用於現實生活,包括噴氣發動機,備用發電機,特別是在醫院、軍事基礎設施、金融投資組合多樣化以及計算機網路等領域。
然而,雖然這種去中心化系統所具備的容錯能力不僅有效而且非常重要,但在某些情況下,它還不如一個簡單的數學模型有用。這裡的問題在於一個所謂「共模故障」原理。相比於一個噴氣發動機發生故障,四個噴氣發動機同時發生故障確實概率較小,但問題是,如果這四台噴氣發動機都由同一家製造廠生產,或者是由同一個不負責任的員工加工,那麼結果又會怎麼樣呢?
今天的區塊鏈是否能夠設法防止共模故障出現呢?不一定。讓我們考慮以下幾種情況:
區塊鏈中所有節點都運行相同的客戶端軟體,且該客戶端軟體已經被證明存在bug;
區塊鏈中所有節點都運行相同的客戶端軟體,且這個客戶端軟體的開發團隊互相勾結合謀;
提議升級協議的研發團隊互相勾結合謀,出現腐敗;
在一個工作量證明區塊鏈中,70%的礦工都來自於同一個國家,而這個國家政府以維護國家安全為理由把所有礦場都接管了;
大多數採礦硬體設備都是由同一家公司,而這家公司收到賄賂,或者被強制部署了後門軟體,會導致所有挖礦硬體設備可以被人為隨意關閉;
在一個權益證明區塊鏈中,70%的加密代幣都是由同一個交易所持有。
如果從容錯去中心化的整體觀點來考量的話,會需要考慮所有這些方面,這些問題需要儘可能地被減到最小。很容易得出一些自然而然的結論:
擁有多種競爭是至關重要的;
協議升級背後的技術考量和認識必須要民主化,以便讓更多人能夠共同參與研究、討論和批評一些有明顯問題的協議變化;
核心開發人員和研究人員必須要來自多個不同公司或組織(或者,其中大多數都是志願者);
挖礦演算法必須要按照將中心化程度降到最低的思路去設計;
理想情況下,我們使用POS(股權證明)能完全擺脫硬體中心化風險(儘管我們也應該謹慎對待由於PoS而出現的新風險)。
值得注意的是,當我們處理初級階段的容錯要求時,往往會側重於架構去中心化。不過,一旦你開始考慮更長遠的系統升級和發展時的容錯性,那麼政治去中心化也是非常重要的。
2、阻止攻擊
現在,讓我們來看看去中心化阻止攻擊的能力。在一些純粹的經濟模型之中,有時候你會發現去中心化其實並不那麼重要。如果你創建了一個協議,這個協議中只要發生51%的攻擊,驗證者就肯定會損失5000萬美元,那麼這個驗證者是被一家公司還是一百家公司控制,其實已經不那麼重要了。此時,5000萬美元其實就是確保這個協議安全穩定運行的邊際成本。事實上,根據博弈論的觀點,中心化系統甚至可以最大化這種安全邊際成本的概念(現有區塊鏈的交易選擇模型其實也反映出了這一觀點,因為礦工和區塊提議者將交易打包到區塊鏈中,實際上也算是一種非常快速運轉的獨裁)。
但是,一旦你採用了更豐富的經濟模型,特別是如果這個經濟模型里存在脅迫的可能(或者稍微溫和一點的:比如針對節點的DoS攻擊),去中心化就會變得更加重要。如果你用生命來威脅一個人,那麼5000萬美元其實根本無關緊要。但是如果把5000萬美元分散到十個人中,壞人如果要威脅勒索的話,就需要勒索威脅十個人,並且還要同時完成勒索這項「工作」。一般來說,現代社會裡有一個特點就是攻擊防禦的不對稱性,在這方面攻擊者通常更有優勢。舉個例子,一棟價值1000萬美元的高層建築,摧毀它的成本可能還不到10萬美元。不過,這種防禦攻擊的槓桿常常是次線性的,也就是說,如果花費1000萬美元的建築能夠用10萬美元的成本被摧毀,而100萬美元的建築可能需要3萬美元的成本被摧毀,最終,建築成本更低的建築可能需要更高的成本才能被摧毀。
這個推理能推出什麼結論?首先,它強烈支持了權益證明機制,因為計算機硬體容易被監測、調節和攻擊,同時數字代幣相比於硬體設備更容易隱藏;其次,開發區塊鏈技術的團隊分布在世界各地是有道理的,分布的範圍越廣就越有利,包括地理位置分布;第三,這也意味著在設計共識協議的時候,需要同時考慮經濟模型和容錯模型。
3、抵制合謀
最後,我們也許可以談談可能是三個原因中最複雜的一個:抵制合謀。合謀本身其實很難界定,或許唯一真正有效的是一個簡單的解釋:合謀就是我們不喜歡的那種「協作」。在現實生活中,很多時候儘管每個人之間的完美協調是理想的狀況,但是當某一組人可以協調,而別的組的人無法協調時,就會造成危險。
一個簡單的例子就是反托拉斯法——反壟斷法的目的,就是要在市場運行中設置監管障礙。為了讓市場某一方的參與者難以走到一起,並形成壟斷者的形式,以損害市場另一方和整體社會福利的代價來獲得超額利潤。
另一個例子是反積極協調規定,主要用在美國總統候選人和超級政治行動委員會上,防止在總統候選的時候互相勾結合謀。但是這些規則在實踐證明中其實是很難執行的。
還有一些更小的例子,就是在某些國際象棋比賽的時候,會有一個規則用來防止兩名特定棋手和對方進行多次比賽來幫助其中一名棋手獲得更多積分。
所以你會發現,無論從何種角度去看,已經有很多試圖防止複雜系統內出現勾結合謀問題的嘗試了。
在區塊鏈協議的案例中,共識安全背後的數學和經濟原理通常非常依賴於非協調選擇模型,或者基於「遊戲是由許多獨立作出決策的小型參與者組成的」這種假設。如果任何一個「玩家」在PoW系統中獲得超過三分之一的採礦權,他們就可以通過私自採礦獲得巨大利潤。然而,當90%的比特幣網路的挖礦力量已經協調到能夠坐在一起開會的地步,我們還能說這種不協調的選擇模式有存在的必要嗎?
區塊鏈的倡議者還指出,區塊鏈的結構更安全,因為它的規則不能因為某人一時興起就被更改。但這其實很難說,如果軟體和協議的開發者都服務於同一家公司、同屬於同一個家族、都在同一個辦公大樓上班的話。總而言之,這些制度不應該像自私自利的單一壟斷者那樣行事。因此,你可以得出這樣一個結論:如果區塊鏈整體的協調更少的話,它是更安全的。
但是,這其中還存在著一個根本性矛盾。很多社區(包括以太坊)之所以存在,是因為它們擁有一個強大的社區精神,在執行、發布和激活硬分叉上擁有快速協調的優勢,基本上能在六天內快速協調實施、發布和激活硬分叉以修復協議中拒絕服務的問題。但是,我們需要思考的問題是,應該如何去培育和改善這種良好的協調關係,同時,又要防範那些糟糕的協調關係,防止它們不小心演變成「互相勾結合謀」,比如,當礦工們試圖通過互相合謀,反覆進行51%的攻擊,這時候該怎麼辦?
有三種方法回答上面這個問題:
不要嘗試去減少勾結合謀,而是要去構建一個能夠抵抗它的協議;
嘗試找到一個令人滿意的媒介,使協議有足夠的協調關係,可以得到更好地發展前景,同時不會被輕易攻擊;
嘗試區分有益的協調和有害的協調,讓前者更容易執行,讓後者更難執行。
第一種方法是以太坊Casper設計理念的核心構成部分,僅它本身在很多方面是不夠的,因為僅僅依靠經濟學的方式是不能解決其他兩種類型的去中心化問題的;
第二種方法難以明確設計,特別是從長遠來看,確實也會經常發生意外。比如,比特幣的核心開發人員一般說英語,而礦工一般說中文,這樣導致在無意中創造出了一種類似「兩院制」的治理機制,一方面它讓彼此之間的勾結變得很困難,另一方面則減少了共模故障的風險因為英語和華人社區由於距離和交流困難而至少會有所分開,因此不太可能犯同樣的錯誤。
第三種方法是一個社會挑戰,這方面的解決方案可能包括:
社會幹預措施,提升參與者對整個區塊鏈社區的忠誠度,以取代或遏制市場某一方的參與者直接忠誠於彼此的可能性;
在同一背景下,促進不同市場參與者進行溝通,以減少驗證者、開發人員或礦工自認為屬於某一「階層」,並為了保護自己 「階層」的利益,而對抗其他「階層」;
在設計協議的時候,可以減少驗證者和礦工形成「一對一特殊關係」的動機,同樣也要避免出現中心化中繼網路和其他類似的超級協議機制;
明確規範協議應具備的基本屬性,以及不應該做什麼類型的事情,或者,哪些事情只有應該在非常極端的情況下才能做。
這第三種去中心化,也就是避免不受歡迎的協作的去中心化,可能是最難實現的,因此一些權衡也是不可避免的。也許最好的解決方案是依賴於去中心化程度最高的一個群體:協議用戶。
雷鋒網AI金融評論
TAG:雷鋒網 |