去中心化究竟是什么意思?
“去中心化”是加密經濟學(加密貨幣)領域使用頻率最高的詞之一,甚至被認為區塊鏈就是為了去中心化而存在,但它卻是一個基本沒有明確定義的名詞之一。 當今世界為了保護和改進去中心化網絡,人們不僅花費了成千上萬小時去研究它,同時也耗費了幾十億美元為它產生哈希算力。更有甚者,當正反雙方討論變得更加激烈時,對于某個協議的支持者來說打擊提案反對者的終極秘密武器就是可以說反對者的論點是”中心化“的。
“去中心化” 這個名詞的實際含義確實也經常會出現很多混淆的情況。 例如,參考下面三個經常被用來解析“去中心化”的圖形:
去中心化的狹義理解
我們先討論一下美國版知乎(Quora)社交平臺上關于“分布式和去中心化之間有什么區別”的兩個主要答案。 第一個基本上模仿了上圖,而第二個則提出了完全不同的主張,“分布式意味著并非所有交易處理都在同一個地方完成”,而“去中心化意味著沒有一個單一實體可以控制所有會話”。 同時,“以太坊堆棧”社交論壇上的一個最佳答案也給出了一個與上圖非常相似的圖表,只是“去中心化”和“分布式”這兩個詞互換了位置! 顯然,這樣的解析還是不夠的,我們需要進一步澄清一下“去中心化”這個詞。
三種類型的去中心化
當人們談論軟件去中心化時,實際上他們可能在談論三種相互獨立的中心化/去中心化軸。 雖然在某些情況下很難讓一種去中心化中不包括另一種去中心化,但總的來說,它們彼此還是完全獨立的。 以下是對三種去中心化的描敘:
- 架構(去)中心化——一個系統由多少臺物理計算機組成? 它可以容忍多少臺計算機在同一時刻發生故障?
- 政治(去)中心化——個人或者公司完全控制的計算數量分別是多少臺?
- 邏輯(去)中心化——系統對外的接口和數據結構看起來更像是一個單一的整體,還是一個無特定形式的群體呢? 這里給出一個簡單的提示以幫助你理解什么是邏輯(去)中心化:如果你將某個系統分成兩半,里面都包括服務和用戶的情況下,在這兩半都各自獨立時,他們能否可以在不需要對方的情況下而繼續獨立完整的運行?或者再舉個通俗且很有意思的例子,有一種海洋生物,它的名稱是海星,它很有意思。如果你把用刀把海星從中間切成兩半,它的每一半是可以立即獨立存活下來的,它們都可以再長成一個獨立的海星,這就是我們這里討論的,海星的生物架構在邏輯上是去中心化的。
我們可以嘗試把這三種“去中心化”放到三個維度中來解析,見下圖:
去中心化的三個維度
注意,上圖很多說明文字的展示位置雖然非常隨意(這個可以調整),但卻可以通過當中的任意一個來得出如下結論:
- 傳統公司在政治上是中心化的(只有一個 CEO),它的架構上也是中心化的(一個總部,很多情況下各部門也在一個辦公區),在邏輯上也是中心化的(把公司分成兩半,任何一半將無法正常運營)。
- 民法系依賴于一個中心化的立法機構,而普通法系則建立在許多法官個人的經驗之上。但民法系有時也有一些在架構上是去中心化的,即有許多法院仍然有自由裁量權,當然普通法系卻擁有比民法系更多的自由裁量權。兩種法律體系在邏輯上都是中心化的(即“法律它就是指法律”體系)。
- 英語語言在邏輯上是去中心化的;例如愛麗絲和鮑勃他們倆之間說的英語和查理和大衛之間說的英語他們不需完全一樣(例如聲音大小等)。某種語言的存在也不需要中心化的基礎設施來保障,而且英語語法規則也不是由任何一個人創建或擁有的(世界語最初是由 Ludwig Zamenhof 發明的,盡管現在它的功能更像是一種不斷進化的活語言且不需要授權)
- BT下載在邏輯上類似于英語語言,它是去中心化的。內容傳遞網絡也類似,但它卻是由一家中心化的公司控制著。
- 區塊鏈在政治上(沒有人可以控制它們)和架構上都是去中心化的(也不會有中心化那種單點故障),但它們在邏輯上卻是中心化的(因為所有節點最終都會達到一致的狀態它才是原來的那條區塊鏈,如果節點不能全部達成一致就會導致區塊鏈分叉,分叉后它將不再是原來的狀態了,整個區塊鏈系統的這種行為就像在一臺計算機運行一樣。)
很多時候,當人們談論區塊鏈的優點時,他們描述了擁有“一個中央數據庫”的便利優勢; 這種中央便是邏輯中心化,在許多場景下就可以認為它是一種好的中心化。
架構中心化通常會導致政治中心化,盡管并不全部是這樣——在正式的民主場景下,政客們在某個實體會議廳開會并舉行投票,結果這個會議廳的擁有者卻最終并沒有獲得任何實質性的決策權。在計算機化系統中,如果有一個在線社區為了方便而使用了中心化的論壇,則可能會發生架構中心化但政治卻是去中心化的情況,但是如果存在廣泛同意的社會契約,如果論壇所有者惡意行事,那么每個人都會轉移到不同的論壇去(在實踐中可能展現出這種屬性,在這另一個論壇上圍繞著他們反對的審查制度而形成另一個社區,)。
邏輯中心化后很難使架構變成去中心化,但并非不可能——去中心化共識型網絡被證明是是成功的,但它比維護 BT下載網絡要更加困難些。邏輯中心化使政治去中心化更加困難——在邏輯中心化的系統中,通過簡單地同意“活下去,讓活下去”來解決爭論問題也變得更加困難。
去中心化的三個理由
下一個問題是,為什么去中心化首先有用?一般有幾個論點:
- 容錯——去中心化系統不太可能意外失敗,因為它們依賴的許多獨立組件不可能同時失效。
- 抗攻擊性——想攻擊、破壞或者操縱去中心化的系統成本很高,因為它們沒有敏感的可以比周圍系統的經濟規模低得多的成本進行攻擊的關鍵中心點。
- 抗共謀——去中心化系統中的參與者更難串通一氣以損害其他參與者的利益而使共謀者受益,然而中心化公司中的主管或者政府的領導則可以很方便的串通起來采取有利于自己卻損害其他溝通能力較弱的公民、客戶、員工或者公眾的利益來使自己受益。
這三個論點都很重要且有效,當你開始在腦海里用這三種獨立且不同的觀點開始考慮協議決策的時候,這三個觀點確會導致一些有趣且不同的結論。接下來讓我們嘗試著一一展開和討論一下這些觀點。
關于容錯的核心論點很簡單。 一臺計算機和十分之五的計算同時出現故障的概率相比,哪種情況更少? 該結論應該是無可爭議且在現實生活的許多場景中都在使用,例如備用發電機在醫院、軍事基礎設施、多樣化的金融投資組合、也包括計算機網絡等地方都被采用。
然而,雖然這種去中心化的方式仍然效且也非常重要,但事實證明它往往還不如一個幼稚的數學模型能更準確的預測出故障所在。原因是存在共模故障。 當然,四臺噴氣發動機同時發生故障的可能性會比一臺噴氣發動機發生的可能性更小,但如果所有四臺發動機都是在同一廠家制造的且這四臺發動機都由同一個流氓員工植入了相同的缺陷怎么辦?
區塊鏈像現在這樣是否都已經設法預防了這種共模故障了呢?我看不見得,看看以下的情況:
- 區塊鏈中的所有節點都運行相同的客戶端軟件,而這個客戶端軟件有錯誤。
- 區塊鏈中的所有節點都運行相同的客戶端軟件,但開發該軟件的團隊被證明是有社會腐敗問題。
- 提議升級協議的科研團隊被證明有社會腐敗問題。
- 在工作量證明區塊鏈中,70% 的礦工都在同一個國家,這個國家的政府出于國家安全的目的決定搶奪沒收所有的礦場。
- 大多數挖礦硬件都是由同一家公司制造的,這家公司被證明被迫賄賂且強制增加后門允許隨意關閉該硬件。
- 在權益證明區塊鏈中,70% 的權益代幣在一個交易所持有。
為了容錯而設計的去中心化應用,整體上會著重于考慮所有這些問題,并且很清楚該如何把他們的影響降到最低程度。 一些自然而然就會得出的結論就很明顯了:
- 確保多個方案相互競爭就相當重要。
- 協議升級背后所需要要的技術功底知識必須要大眾化,以便更多的人可以無障礙地放心參與研究討論和批評明顯不當的協議修改。
- 核心研發人員應同時為多家公司或組織工作(備選方案也可以是確保他們中的許多人員是志愿參與者)。
- 挖礦算法的設計應盡量避免中心化風險
- 理想情況下,我們使用權益證明來完全擺脫硬件中心化的風險(雖然我們也應該警惕由于采用權益證明算法而可能導致新風險的出現)。
注意最簡單的容錯設計要求主要是側重于架構去中心化,但是,一旦您開始考慮管理協議持續發展的社區也需要擁有容錯能力時,那么政治去中心化也同時變得非常重要了。
接下來,讓我們看看攻擊抗性。在一些純粹的經濟模型中,你會得到這樣的結果,去中心化壓根就不重要。假如你設計了一個協議,當發生 51% 攻擊(即確定性反轉),區塊鏈驗證者100%會損失 5000 萬美元,那么這這些區塊鏈驗證者是否是由一家公司或 100 家公司控制其實都不重要了——5000 萬美元的經濟安全保證金它就是 5000 萬美元的經濟安全保證金。事實上,中心化甚至可以最大限度地提高經濟安全的觀點也有很深的博弈論的原因(現有區塊鏈的交易選擇模型會反映這種內幕,由于存在很深層的博弈考量,這就是為什么中心化可以甚至放大這樣的經濟安全,其實通過礦工/區塊創建者將交易包含在區塊中的操作,實際上是一種非常快速輪換的獨裁統治)。
然而,一旦你采用更加豐富的經濟模型,尤其是承認可能存在強制(或者更溫和的事情,例如針對特定節點的 DoS 攻擊)的經濟模型,去中心化就變得更加重要。如果你用死亡威脅一個人,突然間 5000 萬美元對他們來說就不再那么重要了。但是如果把這 5000 萬美元分攤給十個人,那么你必須同時威脅十倍的人。一般來說,現代世界在許多情況下的特點是攻擊/防御不對稱,有利于攻擊者——建造成本為 1000 萬美元的建筑物可能只需花費不到 10萬 美元來摧毀,攻擊者的杠桿力度通常是次線性的:如果一座建筑成本是1000萬美元,只需10萬 美元來摧毀,那么造成本為 100 萬美元的建筑物實際上可能只需要花費 3萬美元來摧毀。小的值會得出更好的比率。
這種推理會導致什么? 首先會導致更強烈支持權益證明而不是工作量證明的觀點,因為計算機硬件易于檢測、調節或攻擊,而代幣更容易隱藏(在其他原因方面權益證明也有很強的抗攻擊性)。 其次,有利于擁有廣泛分布的,包括地理分布的開發團隊。 第三,這意味著在設計共識協議時需要同時考慮經濟模型和容錯模型。
最后,我們討論這三個論點中最復雜的論點,即抗共謀。共謀很難定義;也許唯一真正有效的且簡單地解析共謀就是“大家并不喜歡的惡意合作”。現實生活中有很多情況,即使每個人之間都有完美的合作也是一種理想的情況,如有團隊中一個小組能夠合作但其他小組又不能合作也是很危險的。
一個簡單的例子是反壟斷法——故意設置監管障礙,以使市場一方的參與者更難團結起來,像壟斷者一樣行事,以犧牲市場另一方的利益為代價獲得外部利潤市場和一般社會福利。另一個簡單的例子是美國反對候選人和超級政治行動委員會之間積極協調的規則,盡管這些規則在實踐中被證明難以執行。一個更小的例子是一些國際象棋錦標賽中的一條規則,該規則禁止兩名棋手進行多次對戰以試圖提高一名棋手的分數。無論你在哪里看,在復雜的場景中防止惡意的合作的嘗試無處不在。
在區塊鏈協議的情況下,共識安全性背后的數學和經濟推理通常主要依賴于不使用的選擇模型,或者假設游戲是由許多獨立做出決策的個體參與者組成。如果任何一個參與者在工作量證明系統中獲得超過 1/3 的算力,他們就可以通過自我挖礦獲得巨額利潤。然而,當比特幣網絡擁有 90% 的算力者合作到足以同時出現在同一個會議上時,我們真的可以說選擇不合作模型是最理想的嗎?
區塊鏈倡導者認為區塊鏈的架構相對來說更加安全,因為他們不能隨心所欲地隨意更改規則。但是卻很難預防這種情況 ,區塊鏈軟件和協議的開發人員都是為一家公司工作,屬于一個家庭,坐在一個房間里。總而言之就是這些系統不應該壟斷且自私的只服務一個對象。在這樣的情況下,您就可以說,區塊鏈間各方越不合作就區塊鏈就越安全。
然而,這是一種悖論。包括以太坊在內的許多社區因具有強烈的社區精神,它們因能夠在幾天內快速實施合作、發布和激活硬分叉以解決協議中的DDOS問題而經常受到稱贊。我們怎樣才能鼓勵和促進這種良好的合作,同時防止類似礦工試圖反復合作來達到 51% 攻擊目的的這種“惡意合作”來損害其他人的利益?
有三種答案可以回答這個問題:
- 不要刻意費力去阻止惡意合作; 相反應該是想辦法構建可以抵制它的協議。
- 嘗試找到一種更受歡迎的方式,它允許足夠的合作以推動協議向前發展,卻不致于會形成攻擊條件。
- 盡量區分有益合作和有害合作,讓前者更容易,后者更難。
第一種方法是卡斯帕設計哲學的主要組成部分。 然而,依靠它自己是不夠的,因為單獨依靠經濟激勵是無法解決其他兩種去中心化類型的。 第二種很難從工程角度明確下來,特別是從長遠來看更是如此,可是它確實經常在意外情況下發生。 例如,比特幣的核心開發人員大部分說英語而礦工卻一般說中文這一事實可以被視為是很好的意外,因為它創造了一種“兩院制”治理,使兩種社區彼此在一起合作更加困難,但是它確實降低了開發者和礦工他們共謀導致比特幣失敗的風險,主要因為他們由于距離上和溝通方面的困難,英語和中文社區至少會在某些程度上會分開進行分析和推理相關的問題,因此這兩種社區就不太可能同時犯同樣的錯誤。
第三種方法的社會挑戰性遠大于其他一切; 可能有以下的解決辦法:
- 施加社會干預試圖提高參與者對整個區塊鏈社區的忠誠度,同時替代或阻止市場一方的參與者直接彼此相互忠誠的可能性。
- 在同一背景下促進不同“市場方”之間的交流,以盡可能減少驗證者、開發人員或礦工三方共同把他們自己視為一個“階級”,聯合起來捍衛自己的利益免受其他階級侵害的可能性。
- 設計協議時應該盡量減少驗證者/礦工形成一對一的“特殊關系”、中心化形態的中繼網絡和其他類似超級協議機制。
- 明確協議應該具有哪些基本特性,哪些事情不應該做,或者至少應該只在非常極端的情況下才能做。
因此,這第三種去中心化,即避免惡意合作的去中心化,可能是最難實現的,因此必須要折衷考慮。 也許最可靠的方法是去重度依賴一個100%去中心化的群體:即使用協議的用戶。