你真的懂區塊鏈的“去中心化”是什么嗎?

Words
4588
Reading
21 min
Listen
Play
9y

區塊鏈大火,除了中本聰之外,Vitalik同樣功不可沒。

Vitalik在20歲就創辦了以太坊,在思維方式上,他就表現得和許多年輕人並不一樣。“去中心化”是一個普通人大都會選擇性略過的概念,人們認為自己能夠完全理解這四個字的含義,但 Vitalik 選擇揪住這個詞,試圖給它一個更標准化的定義。

定義「去中心化」

大部分人在面對提問時,習慣舉出下面這三張圖來解釋所謂的“去中心化”:
u=1561702329,441895686&fm=27&gp=0.jpg

但很遺憾,上面這三張圖作為一種常見的解釋,基本是無效的。

我們需要一種更底層的方式,也需要一種更明確的判斷標准,來定義「去中心化」。

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

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

1、架構層: 在物理世界裏,一個系統由多少台計算機組成?在這個系統運行的過程中,可以忍受多少台計算機的崩潰而系統依然不受影響?

2、政治層: 有多少個人或者組織,對組成系統的計算機擁有最終的控制權?

3、邏輯層: 從這個系統所設計的接口和數據結構來看,它更像一台完整的單一設備,還是更像一個由無數單位組成的集群?——這個維度可能比較抽象,不太好理解,我們可以用另一種比較簡單的方式來做判斷: 如果把這個系統分成兩半,兩部分裏同時包含生產者和消費者,那么這兩部分能繼續作為獨立單元完整地運行下去嗎?
168.jpg

圖表裏這些例子的分類和排放暫時還比較粗糙,在邏輯上也許還有不少爭議,不過我們還是可以嘗試捋順一遍這些例子:

傳統公司: 傳統公司在政治層上是中心化的(每個公司都有一個CEO),在架構層上也是中心化的(每個公司都有一個總部),在邏輯層上,仍然是中心化的(你沒辦法真正把公司拆成兩半)。

法律: 現代法律有兩種體系,一個是大陸法,一個是普通法。大陸法依賴於一個中心化的立法機構,在架構層上它是中心化的;對比普通法來看,普通法是由很多個法官,他們作為個人,所做出的很多先例來構成的。盡管現在許多法院享有有很大的自由權力,可以自己定法,因此大陸法在架構層上也有一小部分的”去中心化“,但對比普通法這種由許多個法官個體組成的體系,普通法的去中心化程度顯然更高。當然,兩者在邏輯層上都是中心化的(法律就是法律)。

語言: 語言在邏輯層上是去中心化的。沒有任何一種語言的存在需要中心化的基礎設施作支撐,英語的語法規則,也不是由任何一個單一的個人創造的,也不受任何組織的控制(你可能會說,世界英語最初是 Ludwig Zamenhof 發明的,但從現在來看,英語的溝通功能,更像是一種不斷自我進化的生活化語言,它是逐漸自我生長出來的)。

BT: 類似英語,BitTorrent 在邏輯層上也是去中心化的。內容分發網絡(cdn)也是這樣,但它們都受某一家公司的獨立控制。

區塊鏈: 區塊鏈在政治層上是去中心化的(沒有人或組織可以控制區塊鏈),在架構層上也是去中心化的(沒有一個統一的服務器可以被攻擊), 但在邏輯層上,區塊鏈是中心化的(每個區塊鏈網絡都存在自己的一個普遍性的共識,同時系統的行為更像一台單獨的計算機)。

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

借助我們的三把尺子所提供的標准來看,很容易就明白了: “中央數據庫”這裏的所謂中心化,其實是邏輯層的中心化。

在大多數情況下,邏輯層的中心化代表了比較好的選擇。不過,也有不少人主張邏輯層也需要盡可能地去中心化。

為什么需要“去中心化”?

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

容錯性

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

但是,去中心化的這種容錯能力雖然很有效、也很重要,但它有時遠不如一個簡單的數學模型來得有用。原因就在於“共模故障”。

四個噴氣發動機比起一個噴氣發動機來看確實更不容易出故障,但如果這四個噴氣發動機都是同一個工廠制造的呢?或者說,這四個噴氣發動機都是被同一個不合格的員工制作的呢?這就是共模故障。

那么,現在的區塊鏈,能夠抵禦共模故障嗎?

還真不一定。

看看下面這些例子:

一個區塊鏈的所有節點都運行相同的客戶端軟件,而這個客戶端軟件有一個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%的攻擊,以此實行欺詐)。

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

別試圖減少勾結,要用協議的方式徹底消滅勾結。

試著找到一個平衡點,這個平衡點可以提供足夠的協調關系幫助協議更好的發展,但同時又不足以演變成勾結關系、發動進攻。

試著去區分清楚“好的協調關系”和“有害的協調關系”,然後想辦法讓前者更容易,讓後者更難。

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

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

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

社會幹預措施,即試圖提升參與者對該區塊鏈社區整體的忠誠度,以替代或抑制市場各個參與者對彼此產生的直接的忠誠度的影響。

促進不同的的市場參與者在同樣的語境下進行溝通,這樣一來,不管是驗證者、開發者還是礦工,他們就不太會把自己歸類為某一種階層,這樣就能減少他們協調起來對抗其他階層、保護自己階層利益的可能性。

在設計協議時,盡量避免或者減少驗證者和礦工彼此形成一對一的“特殊關系”,或者是形成中心化的中繼網絡,以及其他類似的超級協議機制。

關於協議應具備的基本屬性,以及哪些事情不該做,或者哪些事情只能在非常極端的情況下才能做,這些協議本身都應該規范得非常清晰、清楚。

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

你真的懂區塊鏈的“去中心化”是什么嗎? | Ecency