不可能三角:區塊鏈最大的謊言
2018-10-29 19:13
來源:
cc-value
“不可能三角”的提法很流行;“打破不可能三角”、“突破不可能三角”的宣稱也不絕于耳。
這很矛盾。科學意義上的“不可能”就是指無論如何也不可能,那它怎么可能“被打破”、“被突破”呢?
作者:李畫
編輯:秦晉
特別致謝:Genaro 吳為龍
這不是一篇要蓋棺定論的文章,它的出發點是為了探討,探討區塊鏈領域一個幾乎人人都知曉的概念:不可能三角。
我們要探討它是一個真概念,還是一個偽概念。因為只有當我們分辨出真偽,不再聚焦、不再利用、不再浪費開發能力在偽上,才有可能去探索區塊鏈中真正需要被關注、被解決的問題。
本文分為三個部分,分別是:不可能三角的演變史;對不可能三角的質疑;分布式系統CAP定理是真正的不可能三角。
區塊鏈不可能三角是指一個區塊鏈系統不可能同時滿足三個角,它必須以部分的犧牲某個角為代價,換取另外角的指標的提升。
1.長鋏版本
在中國,最早提出不可能三角理論的是長鋏。他在2014年發表了一篇名為《不可能三角形:安全,環保,去中心化》的文章,并引起了廣泛的討論。
不過,這篇文章討論的是加密貨幣的不可能三角,結論是“環保型密碼學貨幣”是不存在的。這與我們如今談論的不可能三角的適用領域完全不同。長鋏是這么描述不可能三角的:
在此,我提出一個三元悖論:去中心化、安全、環保構成一個不可能三角形。
設計一個既環保又安全的密碼學貨幣,它必然是中心化的,比如PPcoin、Nextcoin、Ripple,它們要么本身就是中心化的架構,要么其去中心化的架構不可維持,它們本質上仍是PayPal、網銀一樣的中心化驗證機制。
設計一個既環保又去中心化的密碼學貨幣,它必然是不安全的,比如IP投票制的P2P貨幣,中本聰起初就已排除了這種可能,他認為“如果決定大多數的方式是基于IP地址的,一IP地址一票,那么如果有人擁有分配大量IP地址的權力,比如僵尸網絡,就有可能主宰比特幣網絡”。
設計一個安全的去中心化貨幣,它必然是以付出能源與計算力為代價。工作量證明是以去中心化形式構建安全產權認證系統的第一個解決方案,也可能是唯一解決方案。
長鋏提出的“去中心化”和“安全”在用詞上與現今的流行版本一模一樣,但它們所代表的意義卻截然不同,長鋏版本中指的是貨幣的機制和貨幣的安全。
2. Vitalik Buterin版本
流行版本的不可能三角理論來自“Vitalik”,是指一個區塊鏈系統無法同時兼顧去中心化(Decentralization)、可擴展性(Scability)、安全性(Security),這個三角被廣泛地引用進了各種演講、報告、文章,甚至白皮書中。
但它真的是由Vitalik提出來的嗎?
該不可能三角發源于GitHub以太坊目錄下的一篇文章,名為《On sharding blockchains》,文中首次提出了這個三元悖論(trilemma)。
這篇文章隸屬于以太坊的《Sharding FAQs》系列,由一位名叫James Ray的團隊成員創建并維護。這個系列用來做什么?用來回答大家關于分片的種種問題。
也就是說,所謂的Vitalik提出的理論,其實只是以太坊團隊成員在一篇回答社區問題的文章中提及,不僅與Vitalik無關,不僅不是論文,它連主題性文章都算不上。但真相還不止于此。
為清晰起見,逐條說明關于“Vitalik”版不可能三角的一些事實。
1.原文用的是“This sounds like there’s some kind of scalability trilemma at play”,再結合上下文,會發現不可能三角這一理論的提出是沒有經過任何邏輯的、系統的論證,作者只是列舉了一些問題后就提出了這個觀點。而且作者在文中用的就是不確定的表達,卻在后來被人們當作了無疑的真理。
2.原文的上下文都在討論“scalability”,甚至作者也稱其為“scalability trilemma”,也就是說,這個三角本是針對“區塊鏈可擴展性”的,但卻被擴大到“區塊鏈”,從Scalability Trilemma演變成了Blockchain Trilemma。
3.對于三個角:Decentralization 、Scalabilit、Security,作者給出了明確的定義,比如安全是“being secure against attackers with up to O(n) resources”。也就是說,作者的三角是限定狀態下,并基于這種限定狀態進行討論,但卻被擴大到無限定條件的區塊鏈。
不過,“Vitalik”不可能三角最大的問題還不是上述事實,而是提出這個觀點的環境。它出現在用來介紹以太坊分片技術的文章中。
寫過論文的人知道,為了證明自己的研究解決了問題,第一步就是提出問題;為了證明自己的研究厲害,第一步就是把問題描述的很重要、很難解決。《On sharding blockchains》這篇文章的結構正是如此。
首先通過對現狀的描述,給出“不可能三角”這個問題;接下來分析多種方法,指出別人無法解決這個問題;最后提出自己的方案,論證該方法可以如何完美地解決問題。
沒錯,如果耐心一些,把“Vitalik”提出不可能三角理論的文章看完,就會發現以太坊已經通過它的分片技術解決掉這個三角難題了。所謂的“不可能”,在它誕生的第一天就被論證為“可能”了。
James Ray在文章中寫下這個不可能三角,只是為了論證以太坊通過分片技術可以實現可擴展性,只是為了證明we can break through scalability trilemma。
關于這個三角,文中定義清晰、描述嚴謹,并無問題,只是在后來被多維度誤解了。下圖是以太坊在這個問題上能實現的解決程度。
不可能三角得到廣泛的認可,除了與長鋏或Vitalik的知名度有關,更多的是因為這個理論看上去是正確的。但它真的經得起推敲嗎?
不妨問問自己三個問題:
1.什么叫 去中心化?什么叫可擴展性?什么叫安全性?能確切的回答它們各自的含義嗎?如果一個理論中的概念都無法準確定義,該理論有什么價值?
2.把三個角變成兩個角,“不可能”的矛盾關系還存在嗎?把三個角變成四個角,“不可能”的矛盾關系還存在嗎?如果存在,提“不可能”三角的獨特意義何在?
3.不可能三角對區塊鏈項目的工程實現有什么實際的指導作用?
“可擴展性”在少數版本中被替換成了“性能”,但即使沒被替換,人們在語義上也是用“可擴展性”來指“性能”。但這兩個概念是不具備等價性的,擴展性只是提高性能的方法之一,性能只是擴展性實現的功能之一。下圖是常見的不可能三角的版本。
EOS的21個節點常被用來證明不可能三角的正確性,人們認為它是犧牲了“去中心化”,換來了“性能”,但當我們擔心EOS的“去中心化”時,擔心的是什么?擔心的是EOS因為中心化而不夠“安全”,去中心化與安全是緊密相關的。
“去中心化”和“性能”是不可能兩角的說法反而比不可能三角更為精準,僅僅兩角就能說明區塊鏈現階段的狀況。
另一個角度,犧牲去中心化和可擴展性就能保證區塊鏈系統的安全嗎?顯然不是。安全很大一部分是純技術的解決方案。那么不可能三角中的安全指的是什么?提這種局限的安全的意義又何在?
除了用于“吹牛”,不可能三角似乎對區塊鏈項目的工程實現沒有任何實際的指導作用。我們無法想象一個項目的負責人對團隊成員說,“為了提高性能,我們可以對系統的安全性做一些犧牲”,也無法想象負責人會說“為了去中心化,這個系統不要求高性能”。
事實也正是如此。從來沒有一個項目說自己為了提高不可能三角的某個指標,而犧牲了其他的指標,他們說的是自己“突破了不可能三角”。
如果說不可能三角是真概念,那么它最大的意義恰恰就是告訴項目方,系統必須要在這三個指標間做出取舍,而不是“突破”,可以突破的都不叫“不可能”。
追究不可能三角的真偽,一方面是因為偽概念給了偽項目生存的土壤,這很糟糕;另一方面是希望人們能把焦點集中到真正的問題上。
在區塊鏈,有價值的不可能三角是分布式系統CAP定理。它是指分布式系統無法同時確保一致性(Consistency)、可用性(Availability)和分區容忍性(Partition Tolerance)。
Eric Brewer在ACM PODC會議(ACM Symposium on Principles of Distributed Computing,分布式計算領域的頂級學術會議)上首次提出了CAP 猜想,之后,麻省理工學院的Seth Gilbert和Nancy Lynch從理論上證明了該猜想,使之成為一個定理。
CAP定理是分布式系統領域最重要的原理之一,深刻影響著分布式計算與系統設計的發展。
CAP定理一致性、可用性和分區容忍性的具體含義如下:
1.一致性:如果系統對一個寫操作返回成功,那么之后的讀請求都必須讀到這個新數據;如果返回失敗,那么所有讀操作都不能讀到這個數據,對調用者而言數據具有強一致性。
2.可用性:所有讀寫請求在一定時間內可以得到響應,不會一直等待。
3.分區容忍性:系統中的網絡可能發生分區故障,即節點之間的通信無法保障,但這不影響系統正常服務。
CAP 定理認為分布式系統最多只能同時實現上述三個要素中的兩個。在某時刻如果滿足AP,即分隔的節點對外服務,但不能相互通信,這將導致狀態不一致,不能滿足C;如果滿足CP,那么在網絡分區的情況下為達成C,請求只能一直等待,這將無法滿足A;如果滿足CA,即在一定時間內要達到節點狀態一致,則要求不能出現網絡分區,這將不能滿足P。
這一結論告訴設計者不要浪費時間去研究如何兼顧這三要素,因為根本不可能,在進行分布式架構設計時,必須根據具體系統的需求做出取舍。
不可能三角并不是限制,它反而在正確的道路上開拓了設計師的思路,讓他們在多樣化的取舍方案下設計出了多樣化的系統。
過去十幾年里涌現出不計其數的分布式的新系統,正是基于數據一致性和可用性的相對關系產生的——對于分布式系統,分區容忍性必須滿足,否則該系統就毫無意義,因此其實是在一致性和可用性之間做選擇。
區塊鏈系統的設計也正是如此。
在區塊鏈中,一致性是保證各個鏈的各個節點讀出來的數據都一樣,可用性是保證各個鏈的各個節點可以在不同步完全的情況下實現交易,而因為節點是分布的,分區容錯性是必須要保證的。基于這三個要素和對三個要素的取舍,有了BFT類共識、PoW類共識和其他共識算法。
就像沒有一個通用的分布式系統,也沒有通用的共識算法。CAP定理指導著區塊鏈共識和治理的設計,決定著其分布式系統的功能和實現。
不可能三角的迷人之處在于:科學告訴我們什么是不可能的,而工程告訴我們可以付出一些代價,把它變成可行。CAP定理具有這種帶張力的美感,反觀流行版本的不可能三角,一點兒都不具備。

版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。