去中心化這個概念在區塊鏈構架中起這絕對重要的作用,而正是由於類似比特幣這樣的電子貨幣的流行,去中心化這個詞被大家所接受。他很好理解,但是很難定義。很多團隊、企業花大價錢來改造自身系統去適應去中心化構架,帶來的確實事半功倍的效果。那麼,去中心化到底能帶來什麼?筆者認為,去中心化並不是一個構架或者技術上的概念。其實,他更體現在組織結構、社會層面的內容上。本文就為你揭開去中心化的面紗。
去中心是分散式嗎
去中心化和分散式是很容易混淆的概念。分散式指的是所有交易並不是在一臺中心伺服器上完成的,但這並不是說這些伺服器不是在一個控制中心下工作的。一加油站為例,在高速公路旁可以看到很多箇中石化加油站,他們是分散式分佈在各個不同的地點,但是他們都由一個總公司控制。而去中心化指的是,在分散式的節點中,沒有一箇中心控制節點。
#中心化的型別
當我們談起中心化的時候,通常值的是下面三種型別,他們之間可以互動也可以獨立存在。
- 構架層面的中心化系統結構有多臺伺服器搭建,類似微服務系統。當有若干個伺服器當機並不會影響整個系統的工作狀態。
- 政治層面的中心化有多少個機構或者組織來控制整個系統的執行。
- 邏輯層面的中心化系統的介面和資料結構是不是一個整體存在的還是可以切分成若干個互相獨立的實體。
如何理解上面的三種中心化型別呢,當然上面提到的中心化型別對應了三種去中心化型別,只是一個反義詞的概念,下面我給出幾個例項為大家分析一下他們的區別:
- 傳統企業是具備了上面三種型別的中心化結構。CEO總管公司的運營方向,這是政治層面的中心化,企業會有一個總部,這體現了構架上的中心化,邏輯層面的中心化體現在這個企業是不可分割的一個整體,我們不能把他切分成如果幹小公司
- 語言是一種邏輯上的去中心化結構。英語是很多歐美國家的官方語言,即便一下非英語母語國家,很多人也都可以熟練的用英文進行交流。所以,英語的語法不是由一個人或者一個組織定義的。
- BitTorrent是一種內容分發協議,他是基於邏輯去中心化的構架協議。
- 區塊鏈是在邏輯層面和構架層面的去中心化構架。沒有任何一個機構可以控制他,也沒有一箇中心伺服器來管理所有網路節點。
#為什麼要去中心化
下面的問題就是為什麼我們要進行去中心化,一下列出的幾點給出了去中心化的原因。
- 容錯性去中心化的系統容錯效能往往要高於基於一箇中心服務的系統應用。因為去中心化系統中各個服務依賴於不同的元件,某一個元件失效不會對整個系統造成過大的傷害。
- 免疫攻擊網路安全一直是老生常談的話題,在基於中心伺服器的應用中,攻擊者只要瞄準都一臺伺服器就可以對整個系統造成毀滅性的打擊。在去中心化的系統中,攻擊者往往找不到具體的目標,這加大了黑客入侵的成本。即便在某些服務被攻擊的情況下,系統中的部分功能仍然可以繼續執行、使用。
- 抵禦合謀在去中心化的系統中,人們很難通過幾個人的投票或者干預而達到損害其他人的目的。中心化的組織結構中,領導層對整個結構有著絕對話語權,他們可以根據自身的利益而對其他沒有話語權的員工、客戶、供應鏈等方面進行損害其利益的行為而不收到指責。
上面的三個因素是去中心化裡很重要的三個要點,他們各自又有自身的缺陷,接下來我們逐一的分析他們的特點。 ##容錯性 容錯性的概念是顯而易見的,他已經被應用在很多的場景中。一臺或者多臺伺服器當機,容錯性可以保證在這樣的環境下系統仍然可以正常工作。在現實生活中也充斥了這樣的例子,比如飛機一般都配有兩個以上的發動機,當一個出現故障另一個可以承擔整個機身引擎的作用;醫院中的急救室的電源;銀行等金融機構的賬本儲存等等都囊括了容錯性的構架設計。但是在這樣的去中心化的實現中,我們真的可以保證容錯性嗎?如果一架飛機配備了四臺引擎,但是這四臺引擎都是來自一家廠商,如果這家廠商的引擎都具有某種缺陷從而導致引擎失效,那麼飛機的容錯性只能是紙上談兵。 回到區塊鏈中,區塊的構架也能保證系統容錯性嗎?並不見得,看下面的幾個場景:
- 如果區塊鏈網路中的所有節點都執行了一套有Bug的程式軟體,整個去中心網路的容錯性是很難保證的。
- 如果區塊鏈中所有檢點都執行一個軟體程式,而這個軟體程式的開發團隊收了賄賂。
- 區塊鏈中大部分節點都來自一個國家,而這個國家的政府掌控者所有該國家節點的執行環境,那這個政府是可以操作區塊鏈網路的。
- 如果大部分網路挖掘機的硬體是來自一個廠商,而改廠商在設計硬體時留了一個後門,他們可以利用這個後門做任何想做的事情。
在設計一個去中心環境的系統構架時,這些因素都是應當考慮進去的,針對上面的問題筆者給出了下面一些設計上的思考:
- 一個技術理論誕生以後是要允許存在多個具有競爭力的實現產品,從而避免了一家獨大的局面。
- 協議的制定應當在民主自由的環境下協商進行。從而更多的民主人士可以參與到討論中來,避免了在協議制定上的腐敗和墮落。
- 技術的核心開發人員應當來自多個國家或民族,保證他們是客觀的開發軟體。
經過上面的思考,我認為容錯性雖然是一種通過技術解決問題的方法,但是在去中心化的構架中我們仍要考慮政治上的去中心化。
##免疫攻擊 在一些簡單的金融模型中,去中心化可能不是那麼的重要。例如,你建立了一個協議,其他交易都在這個協議下操作,如果你確定當有超過51%的網路節點受到攻擊則使用者交易將失效,那麼使用者並不關心在這個網路協議是中心化的還是去中心化的,因為他們終將損失交易所得。然而,在一個更為複雜的經濟模型中,特別是網路攻擊不可避免的情況下,去中心化就顯得特別重要了。如果你以性命威脅受害人交出一百萬,那麼一百萬對他來說顯得微不足道。但是,如果這一百萬分佈在十個人手中,那你要威脅十個人才能拿到這一百萬。我們的世界其實充滿了各種不均衡,有一種不平衡體現在攻擊和防禦的博弈中,例如,一個造價一百萬的房子可能要花掉一萬元來摧毀它,有趣的是建造和防禦並不成線性關係,同樣一個造價十萬元的房子,可能要花掉三千元來毀掉它,一百萬對一萬和十萬對三千這兩種非線性關係造就了去中心化在免疫攻擊中的優勢。
##抵禦合謀
最後我們看看抵禦合謀。合謀這個詞通常指的是貶義的意思。簡單來說,合謀就是我們不願意看到的合作方式。在一個團隊裡大家都在一起工作,一起開會,一起協商,但是不論多大或者多小的機構都會出現小的團體,小團體的出現必然會產生不一樣的想法和有奇異的觀點。當這個小團體的聲音逐漸強大,大到一定規模,例如51%,的時候,他的影響必然會左右整個團體最終的利益。在區塊鏈構架中,比特幣一直強調他可以安全的保護使用者交易不受干擾,防止重複交易的產生,但是不可避免的,當超過三分之一的挖掘機節點達成一致時,他們就可以左右比特幣的交易。如果我們要消除這種不合適的“合謀”,是不是說要取消所有節點之間的合作,或者說加大節點之間交流的力度呢?我覺得有三個方法可以降低這種“合謀”的可能性。
- 不要試圖調節不和諧的聲音,相反通過協議上的定義加強這種聲音。
- 找到一種可以加強協作的媒介,但是不允許在協作之上進行“合謀”從而產生攻擊的可能。例如,比特幣的開發者通常都說英語,而挖掘機的工作者都說中文,由於英文和中文這兩種溝通介質本身具備了一定的排斥性,因此他為溝通製造了一定的障礙,從而減少了錯誤的產生。
- 儘量在有意溝通和“合謀”溝通之間創造差異,讓前者更容易,後者更復雜。 #小結 在去中心化的道路上也許會走很多彎路,在沒有弄清楚其真正含義的情況下不建議大家輕易嘗試其構架方案。大家常犯的錯誤是去中心化的概念不僅僅侷限於技術層面,對於政治、企業組織結構同樣適用,一個去中心化的企業結構應該是一種分散形式存在的實體,這對於企業轉型來說無疑創造了很大的麻煩。 從技術上說,在傳統中心化、單體構架中,所消耗的開發成本較低,要求開發人員掌握的知識與去中心化相比好小很多。對於初創型公司或者技術例項不強的開發團隊來說,個人不建議做這樣的嘗試。區域塊無疑是一個炙手可熱的技術構架,很多痴迷技術的開發者往往希望嘗試新鮮的技術方案,但前提一定要先了解其負面影響,以及應用場景,切記不要為了區域塊而區域塊。只有有了相應的業務支撐的情況下,再去實踐對於研發成本來說是一個比較合理的分配方式。 #作者簡介 趙翼,畢業於北京理工大學,目前就職於SouthbankSoftware,從事大資料,Blockchain方面的開發工作。曾在GE,ThoughtWorks,Jump!,TheBigCrunch,元氣兔擔任專案開發,技術總監等職位,接觸過的專案種類繁多,有Web,Mobile,醫療器械,社交網路,大資料儲存等。