你真的理解“去中心化”嗎?

導語:

編譯完這篇文章,我有點明白爲什麼Vitalik Buterin 這個94年出生的小夥子能在20歲的時候創辦以太坊了。

我不敢說 Vitalik 的認識都是正確的,但我的確從這篇文章中感受到了他的某種過人之處。在思維方式上,Vitalik 表現得和許多年輕人並不一樣。“去中心化”是一個普通人大都會選擇性略過的概念,人們認爲自己能夠完全理解這四個字的含義,但 Vitalik 選擇揪住這個詞,試圖給它一個更標準化的定義。

我很慶幸 Vitalik 把他的這些思考表達了出來,因爲不論最終的觀點正確與否,對這種基本概念的回溯和討論,都是目前這個充斥各種區塊鏈新奇概念的語境下所稀缺的內容。

系統的設計,從來都是一件龐大而又迷人的事情。小到一個社區、一家公司,大到一座城市、一個國家,我們生活的世界被各種各樣精密複雜的系統包圍。但這些龐大機器的內部,有時並不完善,甚至可以說很簡陋。

區塊鏈的信奉者就認爲,關乎全球經濟系統運行的鑄幣權掌握在脆弱而不可靠的人性裏,它存在漏洞,因此需要另一種去中心化的方式進行替代。而 Vitalik 從“去中心化”這一概念入手,向我們揭示了設計一個完善的去中心化系統究竟有多複雜,它需要對抗多少阻力,掃除多少障礙。

我們生活的世界非常複雜,越來越多的系統被封裝成一個黑箱,外面的人很難看到箱子內部的齒輪究竟是如何運轉的。 Vitalik 藉助去中心化這個概念的討論,讓我們可以從中多少瞄到一眼。因此,如果你對區塊鏈沒有興趣、但對複雜系統的設計有不少好奇心,也可以讀一讀這篇文章。

本文爲了便於讀者理解,在編譯時對部分內容進行了少量刪改和調整。如果你想閱讀原汁原味的英文文章,歡迎點擊“閱讀原文”。

 

“去中心化”或許是區塊鏈被提到過的最高頻的一個詞了,但這個詞的定義也是最不清楚的。

想想這件事其實挺不可思議的。區塊鏈消耗了計算機大量寶貴的哈希算力,正是爲了保證網絡的去中心化,但當人們彼此在爭論某個代幣或者某個區塊鏈網絡究竟好不好的時候,“去中心化”這個詞卻常常被拿來當槍使,簡單粗暴的說一句“你這個東西不是去中心化的”,就可以輕鬆結束一段爭論。

那麼,“去中心化”這個詞到底是什麼意思?

並沒有多少人能真正說清楚。 事實上,也沒有多少人有意識、或者願意,去深究這個詞的真實含義。

大部分人在面對提問時,習慣舉出下面這三張圖來解釋所謂的“去中心化”:

但很遺憾,上面這三張圖作爲一種常見的解釋,基本是無效的。 它對我們理解“去中心化”並沒有本質上的幫助。

我們需要一種更底層的的方式,也需要一種更明確的判斷標準,來定義「去中心化」。因爲只有理解了這個詞的真實含義,我們才能更好的理解區塊鏈。

 

判斷“去中心化”的三把尺子

在軟件世界裏,所謂的“去中心化”,實際上是可以分成三個維度進行討論的。這三個維度,也是判斷一個東西是否是“去中心化”的三把尺子。

需要說明的是,這三把尺子,初看起來似乎缺一不可,但總體來說,它們彼此之間相互獨立。

  1. 架構層: 在物理世界裏,一個系統由多少臺計算機組成?在這個系統運行的過程中,可以忍受多少臺計算機的崩潰而系統依然不受影響?
  2. 政治層: 有多少個人或者組織,對組成系統的計算機擁有最終的控制權?
  3. 邏輯層: 從這個系統所設計的接口和數據結構來看,它更像一臺完整的單一設備,還是更像一個由無數單位組成的集羣?——這個維度可能比較抽象,不太好理解,我們可以用另一種比較簡單的方式來做判斷: 如果把這個系統分成兩半,兩部分裏同時包含生產者和消費者,那麼這兩部分能繼續作爲獨立單元完整地運行下去嗎?

這三把尺子,一把用來測量架構層的系統設計、一把用來測量政治層的掌控權力、一把用來測量邏輯層的所屬形態。

把它們總結起來,用一張圖表來表現可能會更清楚一點:

可以看到,圖表裏已經有一些代表例子了。需要說明的是,這些例子的分類和排放暫時還比較粗糙,在邏輯上也許還有不少爭議,不過我們還是可以嘗試捋順一遍這些例子,這對幫助我們理解“爲什麼是這三個判斷標準”有好處:

  • 傳統公司: 傳統公司在政治層上是中心化的(每個公司都有一個CEO),在架構層上也是中心化的(每個公司都有一個總部),在邏輯層上,仍然是中心化的(你沒辦法真正把公司拆成兩半)。
  • 法律: 現代法律有兩種體系,一個是大陸法,一個是普通法。大陸法依賴於一箇中心化的立法機構,在架構層上它是中心化的;對比普通法來看,普通法是由很多個法官,他們作爲個人,所做出的很多先例來構成的。儘管現在許多法院享有有很大的自由權力,可以自己定法,因此大陸法在架構層上也有一小部分的”去中心化“,但對比普通法這種由許多個法官個體組成的體系,普通法的去中心化程度顯然更高。當然,兩者在邏輯層上都是中心化的(法律就是法律)。
  • 語言: 語言在邏輯層上是去中心化的。Alice 與 Bob 之間所講的英語,和 Charlie 與 David 之間所講的英語,可以不需要一致。同時,沒有任何一種語言的存在需要中心化的基礎設施作支撐,英語的語法規則,也不是由任何一個單一的個人創造的,也不受任何組織的控制(你可能會說,世界英語最初是 Ludwig Zamenhof 發明的,但從現在來看,英語的溝通功能,更像是一種不斷自我進化的生活化語言,它是逐漸自我生長出來的)。
  • BT: 類似英語,BitTorrent 在邏輯層上也是去中心化的。內容分發網絡(cdn)也是這樣,但它們都受某一家公司的獨立控制。
  • 區塊鏈: 區塊鏈在政治層上是去中心化的(沒有人或組織可以控制區塊鏈),在架構層上也是去中心化的(沒有一個統一的服務器可以被攻擊), 但在邏輯層上,區塊鏈是中心化的(每個區塊鏈網絡都存在自己的一個普遍性的共識,同時系統的行爲更像一臺單獨的計算機)。

好了,我們成功捋順了一遍各種各樣的事物究竟是不是去中心化的。

 

捋順一遍後,你應該已經有了第一個發現:

``` 在談到區塊鏈的優點時,很多人常常會提到“中央數據庫”(或者叫公共賬本)所帶來的好處。但區塊鏈不是去中心化的嗎,爲什麼還有“中央數據庫”的概念,這是不是矛盾了?

藉助我們的三把尺子所提供的標準來看,很容易就明白了: “中央數據庫”這裏的所謂中心化,其實是邏輯層的中心化。 在大多數情況下,邏輯層的中心化代表了比較好的選擇。

不過,也有不少人主張邏輯層也需要儘可能地去中心化,比如來自 IPFS 的 Juan Benet 就是這樣認爲的。他的理由是,邏輯層的去中心化系統,往往在網絡分區上更有生存能力。用說人話的方式來解釋,就是“邏輯層的去中心化”在連接性比較差的世界裏(比如偏遠地區),它的運行情況會比較好。 ```

 

爲什麼需要“去中心化”?

我們已經掌握瞭如何判斷“去中心化”的方法。接下來的問題是,爲什麼去中心化很重要?它的好處在哪?

去中心化有三個優點:

  1. 容錯性: 去中心化系統不太可能因爲某一個局部的意外故障而停止工作,因爲它依賴於許多獨立工作的組件,它的容錯能力更強。
  2. 抗攻擊性: 對去中心化系統進行攻擊破壞的成本相比中心化系統更高。從經濟效益上來說,這是搶劫一個房子和搶劫一片村莊的差別。
  3. 抗勾結性: 去中心化系統的參與者們,很難相互勾結。而傳統企業和政府的領導層,往往會爲了自身的利益,以損害客戶、員工和公衆利益的方式,相互勾結。

我們試着把以上三點,更詳細的逐一展開講講。

 

容錯性

容錯性的核心,其實就是“可以承受出現錯誤的能力,以此降低系統崩潰的概率”。 一臺計算機出現故障的概率,和十臺計算機的其中五臺同時出現故障的概率,哪一個更大? 顯然是前者。這其實也是分散風險的一種方式,在現實生活中,這種容錯能力已經得到了廣泛的應用,比如噴氣發動機、備用發電機,以及醫院、軍事的基礎設施、多樣化金融投資組合、計算機網絡等等。

但是,去中心化的這種容錯能力雖然很有效、也很重要,但它有時遠不如一個簡單的數學模型來得有用。 原因就在於“共模故障”。 四個噴氣發動機比起一個噴氣發動機來看確實更不容易出故障,但如果這四個噴氣發動機都是同一個工廠製造的呢?或者說,這四個噴氣發動機都是被同一個不合格的員工製作的呢?這就是共模故障。

那麼,現在的區塊鏈,能夠抵禦共模故障嗎? 還真不一定。

不信的話看看下面這些例子:

  • 一個區塊鏈的所有節點都運行相同的客戶端軟件,而這個客戶端軟件有一個BUG。
  • 一個區塊鏈的所有節點都運行相同的客戶端軟件,而這個客戶端軟件的開發團隊互相勾結,出現腐敗。
  • 提議升級區塊鏈網絡協議的研究團隊,互相勾結,出現腐敗。
  • 在一個工作量證明(POW)的區塊鏈中,70%的礦工都在同一個國家,而這個國家的政府爲了國家安全,決定接管所有礦場。
  • 大部分挖礦硬件都由同一家公司生產,而這家公司被賄賂或者被威脅,在挖礦硬件上開了一個後門,使得所有的挖礦硬件可以被隨意關閉。
  • 在一個權益證明(POS)的區塊鏈中,70%的幣由一個交易所持有。

很明顯,爲了保證去中心化的容錯能力,以上這些問題都應該儘可能把它最小化。

怎麼最小化呢?

下面這些措施可能會有一些幫助:

  • 儘可能保持多方競爭關係;
  • 升級協議的技術和知識必須是民主化的,這樣更多的人就可以共同參與研究、討論和批評一些明顯不良的協議變化;
  • 核心的開發和研究人員應該由多個公司或組織僱傭(或者,他們中的許多人可以是志願者);
  • 挖礦算法應該以最低程度的中心化思路去設計;
  • 理想情況下,我們使用權益證明的方法(POS)來擺脫硬件的中心化風險(當然權益證明可能也會帶來新的風險)。

值得注意的一點是,當我們着眼於比較初級的容錯能力的時候,我們往往會去關注架構層上的去中心化設計,但如果當你開始考慮一個系統更長遠的升級和發展時的容錯性,那麼政治層上的去中心化也很重要。

 

抗攻擊性

現在,讓我們來看看抗攻擊性。

在純經濟模型中,去中心化其實並不重要。 如果你創建了一個“一旦發生51%攻擊,驗證者就會損失5000萬美元”的協議,那這個驗證者是由一家公司還是由100家公司控制並不重要。5000萬美元是保證這個協議的經濟安全的邊際成本,那麼5000萬美元就是5000萬美元。事實上,博弈論還會告訴我們,中心化系統甚至可以最大化這種經濟安全邊際成本的概念(現有的區塊鏈的交易選擇模型也反映了這一觀點,因爲礦工/區塊提出者將交易打包到區塊中,實際上正是一個非常迅速的輪換獨裁的過程)。

但如果是在一個更豐富的經濟模型中,特別是如果這個經濟模型裏存在脅迫的可能性(或者說針對節點的目標 DOS 攻擊),那麼,去中心化就會變得非常重要。 當一個人的生命安全受到威脅時,5000萬美元對他而言就是身外之物,你可以很容易搶走他的錢,但如果這5000萬美元是十個人分散持有的,那麼你必須威脅勒索的人數,瞬間就飆到了10倍,而且這10倍的工作量,還要在同一時間裏完成,這對任何一個搶劫犯來說,都是噩夢。

不過有趣的一點是,在大部分情況下,我們所生活的這個世界,有一個特點是: “攻擊/防禦”具有不對稱性,攻擊者往往更佔優勢。 比如,一幢花費1000萬美元建造起來的大樓,可能10萬美元的攻擊成本就可以輕鬆摧毀它。但這種攻擊/防禦的槓桿效應往往是次線性的:摧毀1000萬美元的大樓需要10萬美元,100萬美元的大樓則需要3萬美元,再往下,更小型的大樓則需要更高的比率。

等等,知道了以上這些東西,對我們瞭解區塊鏈來說,有什麼用嗎? 當然有用。這個道理至少可以讓我們懂得區塊鏈機制設計的三個關鍵點:

  • 第一,相比工作量證明機制(POW),權益證明機制(POS)更安全。POW需要挖礦的計算機,這些硬件很容易被檢測、管理或攻擊,而POS針對的則是權益證明,也就是代幣,而幣相對計算機硬件而言更容易隱藏;
  • 第二,開發區塊鏈的團隊,分佈得越廣泛(包括地理位置上的分佈)就越有利;
  • 第三,在設計共識協議時,需要同時考慮經濟模型和容錯模型。

抗勾結性

最後,我們終於可以討論以上三點中最複雜的一點了:抗勾結性。

抗勾結性這個詞聽起來有點怪,因爲“勾結”這個詞本身就挺難定義的。簡單點說,我們可以認爲, “勾結”就是“我們所不喜歡的協調方式”。 在理想狀態下,我們希望每個人之間都能擁有完美的協調關係,但當某一部分人能夠完美協調、而另一部分人無法協調時,情況就會變得很危險。

``` 比如,反壟斷法就是一個例子。爲了防止市場的參與者聚集起來,互相勾結、實施壟斷,損害市場消費者和社會的利益、以此獲得超額利潤,反壟斷法就在市場運行中故意設置了監管上的障礙。

另一個例子是在美國總統候選人和超級政治行動委員會之間的反積極協調規則。超級政治行動委員會相當於一個獨立的支持候選人的社團,主要用來幫助候選人無限募集大選所需要的資金。爲了防止它和候選人有勾結在一起,美國規定超級政治行動委員會和被選舉的政黨不能有直接的聯繫,也就是一種反積極協調的規則。當然話說回來,這些規則在實踐中中其實是很難執行的。

還有一個更小的例子是一些象棋比賽制定的規則,這些規則用來防止兩名選手爲了提高各自的分數而頻繁和對方進行比賽。 ```

可以看到,這種“反勾結”的嘗試,在現實世界的各種複雜系統裏其實無處不在。

而在區塊鏈協議裏,建立共識安全背後的數學原理和經濟學原理,通常也依賴於這種“反勾結”的設定。

“反勾結”就是儘可能避免節點之間相互產生協調,換句話說,它假設一個區塊鏈網絡是由許多獨立決策的節點組成的。

區塊鏈的擁護者相信區塊鏈更安全,因爲區塊鏈網絡中的任何個體都不能任意去改變協議本身的規則。但如果軟件和協議的開發者都服務於同一家公司、同屬於同一個家族、都在同一個辦公大樓上班,這種情況下其實是很難防範的。

要真正保證安全,最關鍵的一點是防止系統變成一個自私自利的集權壟斷體。 因此,如果一個區塊鏈網絡越鬆散,它們就越難相互勾結在一起,也就安全。

但是,這裏面其實揭示了一個根本性的矛盾。

很多社區(包括以太坊)之所以存在,是因爲它們擁有一個強大的社區精神,在執行、發佈和激活硬分叉上擁有快速協調的優勢。 我們需要思考的問題是,應該如何去培育和改善這種良好的協調關係,同時,又要防範那些糟糕的協調關係,防止它們不小心演變成“互相勾結” (比如,礦工們試圖通過互相勾結,反覆進行51%的攻擊,以此實行欺詐)。

要解決這個問題,可能需要做到以下三點:

  1. 別試圖減少勾結,要用協議的方式徹底消滅勾結。
  2. 試着找到一個平衡點,這個平衡點可以提供足夠的協調關係幫助協議更好的發展,但同時又不足以演變成勾結關係、發動進攻。
  3. 試着去區分清楚“好的協調關係”和“有害的協調關係”,然後想辦法讓前者更容易,讓後者更難。

其中的第一個方法,在以太坊的 Casper 機制的設計中,有很多地方都用到了這種指導思想。但是,只有第一點本身是不夠的,因爲僅僅依靠經濟學的方式並不能解決去中心化的其他兩類困擾;

第二個方法很難進行明確的設計,但它經常會自己意外產生。比如, 比特幣的核心開發人員一般說英語,而礦工一般說中文,這幾乎可以被稱作爲一個“幸福的意外”了,因爲它在無意中創造了一種“兩院制”的治理機制,一方面它讓彼此之間的勾結變得很困難,另一方面則減少了共模故障的風險 ——英文社區和中文社區,因爲溝通困難,從某種程度上來說,他們更容易擁有各自的獨立的思考,因此不太可能同時犯相同的錯誤。

第三個方法則代表了一個社會學挑戰,它需要做到的可能包括:

  • 社會干預措施,即試圖提升參與者對該區塊鏈社區整體的忠誠度,以替代或抑制市場各個參與者對彼此產生的直接的忠誠度的影響。
  • 促進不同的的市場參與者在同樣的語境下進行溝通,這樣一來,不管是驗證者、開發者還是礦工,他們就不太會把自己歸類爲某一種階層,這樣就能減少他們協調起來對抗其他階層、保護自己階層利益的可能性。
  • 在設計協議時,儘量避免或者減少驗證者和礦工彼此形成一對一的“特殊關係”,或者是形成中心化的中繼網絡,以及其他類似的超級協議機制。
  • 關於協議應具備的基本屬性,以及哪些事情不該做,或者哪些事情只能在非常極端的情況下才能做,這些協議本身都應該規範得非常清晰、清楚。

防止勾結、抗勾結性的去中心化,可能是目前最難實現的了。 要真的實現它,一些權衡和取捨也是不可避免的。或許,最好的解決方案,可能是去重度依賴於最能夠保證去中心化程度的一個羣體:也就是協議的用戶。

 

總結

好了,如果你讀到了這裏,恭喜你已經擊敗了其他99%的讀者。

讓我們再來回顧一遍“去中心化”的一些要點:

  1. 三把衡量“去中心化”程度的尺子,三個獨立的判斷標準:架構層、政治層、邏輯層;
  2. 三個“去中心化”帶來的好處:容錯性、抗攻擊性、抗勾結性;
  3. 其中,容錯性目前還需要解決共模故障所帶來的難題;
  4. 抗攻擊性在純經濟模型裏不重要,在更豐富的經濟模型裏則非常重要;
  5. “反勾結”是三個去中心化的優點裏最難被實現的,它需要不斷的權衡和取捨。

值得注意的是,這篇文章的觀點或許並不一定是正確的,但至少它已經幫助你重新審視了一遍“去中心化”這四個簡簡單單的字了。

無論所謂的幣圈和鏈圈,它們的時差和現實世界是一天還是一年,在各種新名詞、新概念的狂轟亂炸下,對很多人認爲的、理所當然的一些基本概念進行剖析和討論,我們認爲還是有一定價值的。

任何新生的詞語,應該都能應用已有的詞語,進行最樸素的解釋。這篇文章鑑於我們自身的能力有限,在編譯時或許還是做得不夠好,但如果能爲你帶來一些啓發,我們也很滿足了。

你是怎麼理解去中心化的?歡迎在評論裏分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章