● 軟體系統的架構決定了其中的節點計算機如何被組織,以及如何與其他計算機連接。
● 中心化和去中心化的軟體系統可以看作系統架構的南北極。
● 分佈式系統由許多獨立的計算機組成,它們通過使用通信介質相互協作,以實現特定的目標,且沒有任何計算機能控制整個系統。
● 根據經驗,可以指出只要有一個單一的組件可能導致整個系統崩潰,那麼不管系統的架構多麼複雜,它都不是去中心化的。
● 區塊鏈是去中心化軟體系統實現層的一部分。
● 區塊鏈的意義在於確保去中心化軟體系統中一個特殊的非功能性特徵:實現並維護系統的完備性。
點對點系統相對於中心化系統的優勢在於其直接在交易雙方之間進行互動,而不通過中介,因此處理時間更短,成本也更低。
點對點系統的優勢並不限於轉帳,幾乎所有虛擬商品和服務的生產者和客戶之間的中介都易受到點對點系統的替代。隨著數位化的發展,將會出現越來越多虛擬化的商品和服務,它們都將受益於點對點系統效率的提升。點對點系統的倡導者認為,我們生活的各個方面幾乎都將受到數位化技術和點對點系統的影響,如支付、儲蓄、貸款、保險、出生證明、駕駛證、護照、身份證、教育證書、專利和勞動合同。它們中的大多數已經以數位化的形式存在於夾在提供者和消費者之間的機構的中心化系統中了。
去除中介人也被稱為 “脫媒現象”,其對很多商業公司來說構成了嚴重的威脅。因為這些公司存在的基礎是能在不同人群之間成為主要的中介,例如在買家和賣家、借貸者和放貸者或生產者和消費者之間。
點對點系統是由若干節點(個人計算機)組成的分佈式軟體系統,系統中單一節點的計算資源(例如 CPU 處理能力、存儲容量)可直接被其他節點調用。當加入點對點系統時,用戶按照其權限和角色將其計算機轉換為系統的節點。儘管用戶對系統貢獻的資源可能有所不同,但系統中的所有節點具有相同的功能和責任。因此,所有用戶的計算機都是資源的供應者和消費者。
例如,在點對點文件共享系統中,各個文件均存儲在各個用戶的計算機上。當有人想在這樣的系統中下載文件時,他直接從另一個人的計算機上下載即可,這個人可能是隔壁的鄰居或世界上任何的其他人。
點對點系統的架構
點對點系統是分佈式計算機系統,它們由共享計算資源的各個節點組成。然而,還有一些仍然利用中心化設計思想的點對點系統。中心化系統通過維護中心節點以促進系統成員之間的互動,同時維護描述不同節點提供的服務目錄,或執行節點的查找和識別等任務。中心化點對點系統通常使用圖 2-2 左側所示的混合架構,這種架構集合了中心化系統和去中心化系統的優點。另一方面,完全分佈式的點對點系統沒有中央節點進行控制或協調,因此系統中的所有節點都執行相同的任務,既作為資源和服務的提供者,也同樣是消費者。
中心化點對點系統的一個例子是 Napster,它維護著與系統連接的所有節點上可用歌曲的中央數據庫。
點對點系統和區塊鏈之間的關係
所述,區塊鏈可被認為是實現和維護分佈式系統完備性的工具。完全分佈式的點對點系統可使用區塊鏈技術來實現和維護系統的完備性。
區塊鏈的潛力
完全去中心化點對點系統和區塊鏈之間的聯繫是,後者為前者提供了實現並維護完備性的工具。完全去中心化的點對點系統具有極大的商業潛力,因為它們可以取代中心化系統下靠信息中介建立起來的商業模式。既然完全去中心化點對點系統可以使用區塊鏈來實現並維護完備性,區塊鏈就變得非常重要了。而真正主要的原因是,當我們為去中心化的產業模式感到無比興奮的時候,會發現區塊鏈是能夠幫助我們實現目標的唯一手段。
因為它們在軟體系統中的應用與在其他地方的應用有些不同。
● 身份認證。
● 鑑定。
● 授權。
三者的含義和相互關係,可以通過現實世界中的例子來加以說明。打個比方,你準備去超市買一瓶紅酒,而超市不允許向未成年人出售含酒精飲料。那么超市如何確定他們只向正確的人群出售了酒呢?他們通過身份認證、鑑定以及授權這 3 個步驟來實現。接下來我們會做進一步的介紹。
身份認證
身份認證指的是通過提供可以作為標識符的相關信息來確認使用者的身份。在買酒的例子中,你可以提供一個身份證,但是身份認證並無法證明你就是你說的這個人,也無法證明你已經成年,身份認證只是意味著申明你是某一個人。
鑑定
鑑定的目的是為了阻止有人冒充他人。鑑定就意味著要核實你的確是你聲稱的這個人。這個鑑定過程可以通過提供一些能證明你身份信息的事物來進行,比如身份證或駕駛證。在這個過程中很重要的一點是,你所提供的對你身份的證明信息必須具備一些和你相關的獨一無二的東西,如照片、指紋等。在買酒的例子中,可以出示包含了你照片的駕駛證,通過比對你和駕駛證上的照片可以完成鑑定工作。對駕駛證上照片的檢查是為了防止出現駕駛證被盜用的情況。
授權
授權意味著根據對應人的身份特徵准許其訪問特定資源或使用特定服務。授權產生於一次成功的鑑定,以及對其所擁有權利的準確評估。在買酒的例子中,授權意味著在檢查過你駕駛證上的出生日期之後,允許你購買酒。如果你的年齡過小,店員有權拒絕向你提供酒。注意在這個例子中,發生拒絕出售酒的情況並不是因為鑑定失敗,此時身份認證與鑑定都已成功完成,只是因為在授權過程中店員發現你年齡過小才未進行授權。因此,授權通常意味著要將鑑定後的結果與一些規則進行比對評估。
█ 備註: 身份認證指的是確認使用者的身份。鑑定指的是證明你確實是你所聲稱的這個人。授權指的是讓你根據之前的身份鑑定能訪問特定的資源或得到特定的服務。
賬本的性質與意義#
所有權的證明和變更與賬本功能之間的關係
一個賬本必須同時履行兩種相對的功能。一方面能夠通過閱讀賬本中的數據來證明所有權,另一方面賬本需要記錄每一次所有權的轉移,也就意味著新的數據需要被寫入賬本。這兩個功能最重要的不同可以歸結為公開與隱私的不同。
當賬本對每個人開放時,證明所屬權就比較容易了。因此,公開是證明所屬權的基礎,好比在法庭上證人進行公開的指證。但是,所屬權的轉讓應該專門限定開放給合法的轉讓對象(所有者),因此隱私是所有權變更的基礎。向賬本寫入數據意味著更改所有權,因此我們只希望絕對可信的實體,才能夠具有對賬本進行寫入數據的操作權限。
隱私和公開,證明所屬權和轉移所屬權,以及閱讀賬本和寫入賬本這 3 類矛盾同樣可以在區塊鏈中找到,於是我們在這裡指出:區塊鏈是一個能夠被任何人訪問,擁有類似賬本功能的巨大去中心化點對點系統,也可將它理解為一個去中心化的賬本。
所有權與區塊鏈
以政府出具的證明文件作為見證的形式,是很多高價值事物確定所有權的關鍵。但當政府保存的信息被破壞或銷毀時,會發生什麼呢?或者說,有人故意在更新賬本信息時犯了錯誤或乾脆未對證明信息進行更新又會發生什麼呢?一旦發生這種情況,政府出具的證明信息將無法反映真實情況。
只擁有一個賬本用來證明所有權所帶來的問題,可以採用讓法庭審判的方式來解決。只依靠一個證人的證詞來下定論,需要面對證人可能不誠實的風險,那麼更多的證人顯然是更好的。越多的獨立證人參與進來,他們證詞中的主要一致部分為真的可能性就越大。這也可以通過大數定理或統計學知識進行證明,而在這個過程中,接近並找到真相的關鍵在於擁有大量相互獨立的證人,並確保這些證人各自獨立且相互之間沒有影響。
去中介化的簡單相加
本講是區塊鏈知識之旅的終點站。第 9 講至第 20 講介紹了組成區塊鏈的各個概念,本講會將所有這些概念組合在一起。因此,你不僅會獲得對區塊鏈的整體理解,還會看到不同的概念是如何協作的。本講從回顧區塊鏈的主要概念開始,之後解釋了區塊鏈如何應用前面各講中介紹的各種技術來創造信任。最後,還提供了對區塊鏈技術的整體回顧,從而為介紹區塊鏈可應用的領域打下基礎。
點對點架構
系統架構方式決定了節點是如何相互關聯並相互連接的。如圖 21-5 所示,區塊鏈使用了純粹的分佈式點對點的系統架構。該系統由稱為節點的獨立計算機組成。這些節點通過互聯網彼此連接。每個節點都維護自己的區塊鏈賬本,其中包含交易數據的整個歷史記錄。節點之間通過使用一種類似八卦在人與人之間傳遞的方式來相互通信。這種傳遞信息的方式可確保最終每個節點都能接收到所有的信息。
一致性邏輯及其基本概念
獲得抽象的區塊鏈技術套件抽象是通過識別和區分區塊鏈的組成部分來獲得的。這與我們在第 5 講中討論的 “區塊鏈技術套件” 的內容是一致的。顯然,所有權邏輯和交易數據是特定應用的組成部分,因為它們決定了如何用交易數據描述所有權,以及所有權如何被明確和轉讓。另一方面,交易安全性和交易處理邏輯對應用目標的依賴性較小。前者使用了標識符、身份驗證、授權和數字簽名等通用概念,這些概念可以在任何其他應用中使用。圖 21-3 展示的是一個龐大的數據處理過程,其大部分概念與應用無關。唯一與應用緊密耦合的概念是交易數據的驗證。所有其他概念,如競爭、控制、獎勵、懲罰和區塊頭的驗證都無須知道特定的數據是否被處理。
區塊鏈是天才的傑作。然而,區塊鏈並不完美,也存在缺陷。因此,本講將介紹區塊鏈的一些主要缺陷,並說明這些缺陷為其商業應用所帶來的阻礙。
面臨的挑戰
區塊鏈是一個完全分佈式的點對點系統,允許所有人查看歷史交易記錄,並添加新的交易記錄到節點共同維護的賬本中。開放性以及沒有中央控制機構是這一系統的特徵。這一系統中,節點作為獨立見證人來解決確權的問題。然而,開放性以及中央控制和協調機構的缺失同時也會造成一些不必要的影響,從而限制該系統的應用。因此,我們面臨的挑戰就在於了解這一系統可能存在的缺陷,並有針對性地來制定解決這些缺陷的方案。
區塊鏈的技術缺陷
區塊鏈最主要的技術缺陷包括以下幾點。
● 缺乏隱私。
● 安全模式。
● 延展性的限制。
● 高成本。
● 隱藏的中心化屬性。
● 缺乏靈活性。
● 臨界值。
缺乏隱私
區塊鏈是一種完全分佈式的點對點賬本系統,負責維護完整的歷史交易記錄。所有交易細節,比如貨物數量以及轉帳金額、涉及的賬戶,還有轉帳時間等信息,所有人都能查得到。這一點是很有必要的,這樣才能讓所有人明確所有權並且驗證新的交易(比如識別雙花攻擊)。因此,缺乏隱私成為了區塊鏈的一個缺陷。失去了透明性,區塊鏈就無法履行其職責。然而,這種透明性通常被視作實現其應用的一個限制因素,尤其是實際應用於對隱私要求較高的情況下。
安全模式
區塊鏈採用了非對稱加密算法進行用戶身份的驗證,以及交易的授權。區塊鏈賬戶實際上可看作公鑰,只有持有對應私鑰的用戶才能獲取賬戶中的資產。只有包含數字簽名的交易數據才是有效的,且能夠實現賬戶間的資產轉移,而數字簽名是通過私鑰生成的。私鑰是證明所有權的唯一工具。只要某賬戶的私鑰被故意洩露,那麼這個獨立賬戶的安全性就無法得到保障。
除此之外,保護賬戶資產的其他安全措施是不存在的。這裡需要指出的是,區塊鏈採用的非對稱加密算法是迄今為止最好也是最強大的加密方式。因此,區塊鏈的安全性本身是很強的。然而,除此之外區塊鏈系統並沒有其他安全措施能夠防止用戶丟失或洩漏私鑰。這和日常生活中保護房子、車子、信用卡和借記卡的 PIN 碼一樣。一旦你把鑰匙給了別人,無論背後的原因是什麼,你的資產安全性就無法繼續得到保障,只有真正拿著鑰匙或知道 PIN 碼的人才能開走你的車或者取走你的錢。區塊鏈賬戶的私鑰也不例外。然而,也有人認為過於單一的安全措施是限制區塊鏈應用的主要因素之一。
延展性的限制
區塊鏈這個點對點系統旨在實現兩個目標:
其一,允許所有人在共同維護的歷史記錄中添加新的交易記錄;
其二,確保交易數據的歷史記錄不會被控制或偽造。區塊鏈平衡這兩個目標的方式是:採用不可更改、且只允許添加新數據的數據結構,在新增區塊添加時要求給出哈希難題的解答(解答哈希難題是非常耗時的)。解答哈希難題是一種有效防止歷史交易記錄被操控的方式,因為要實現這一點需要極高的成本。不幸的是,採用這一安全措施的代價就是交易處理速度的下降,因此也就限制了區塊鏈的延展性。區塊鏈的這一特點被視為其在高處理速度、高延展性以及高吞吐量環境中應用的重大阻礙。
高成本
高成本問題和延展性問題有關。解答哈希難題或確保工作量證明算法正常運行都需要極高的計算成本。正是這一安全措施才能保證歷史交易記錄具有不可更改性。這裡所說的計算成本包括時間、電力等方面的投入。然而,最終的結果始終是不變的:工作量證明成本極高。因此,整個區塊鏈系統的運作都需要付出成本。至於成本的高低則取決於哈希難題的難度。
隱藏的中心化屬性
在區塊鏈數據結構中添加區塊所需解答的哈希難題,以及為系統完備性做出貢獻所需的獎勵分配規則,都需要節點之間進行競爭。那些擁有必要金融資源的人會投資專業的硬體用於解決哈希難題,從而對系統做出貢獻,最終取得獎勵。另一方面,沒有專業硬體的人要想為系統驗證交易並添加新區塊就會變得無利可圖,最終只會讓他們選擇退出,不再為系統貢獻計算資源。因此,原本數量龐大且成員多樣化的節點最終會演變為小部分由企業控制的節點。它們因為能夠獲取專業硬體而持有大量的算力,最終會壟斷系統。與其他行業的壟斷行為一樣,這一小部分企業可能濫用權力(比如故意忽略特定交易或區別對待用戶)。這就構成了潛在的中心化屬性,會對整個系統的分佈式特性構成威脅。從技術角度來看,這類系統仍然是分佈式的,但其完備性卻只能依靠一小部分企業來維護。
缺乏靈活性
區塊鏈是一個複雜的技術組合,由一系列經優化後相互兼容的協議組成。改變這個井然有序的系統是極具挑戰性的。事實上,一旦區塊鏈開始運作之後,沒有任何一個有效方法能夠改變或升級其主要部件。這一點就要求區塊鏈系統有一個較長的使用壽命。舉個例子,所用加密算法必須在區塊鏈的可用期限內保持有效性,這很可能是好幾個世紀。對區塊鏈算法以及衝突解決方式來說同樣如此。由於區塊鏈的不可更改性,會使得連開發區塊鏈的人也很難修復漏洞或對區塊鏈協議進行調整。這些特點都導致了整個區塊鏈系統在靈活性方面無法與其他系統相比。
臨界值
區塊鏈防操縱的特點,以及共同維護歷史交易記錄的可信性都基於這樣一個假設,即系統中的大多數算力都是由誠實節點控制的。然而,在算力有限的小型點對點系統中,前文所說的大多數可能仍是少數,因此很可能導致 51% 攻擊的出現。對於用戶數量不足以及市值較低的 “加密貨幣” 來說,這個問題尤其重要。因此,所有區塊鏈都需要確保擁有一定的誠信節點以防止遭到算力攻擊。達到一個特定的節點規模來防止 51% 算力攻擊的出現,是每個新區塊鏈系統必須應對的挑戰。
區塊鏈的非技術性缺陷
區塊鏈最主要的非技術缺陷包括以下兩點。
● 缺乏法律認可。
● 缺乏用戶接受度。
缺乏法律認可
區塊鏈能夠讓用戶在公開和完全分佈式的點對點系統中對所有權進行管理和轉移。獨立節點通過分佈式共識參與管理所有權的方式也引來了質疑,因為人們對在區塊鏈中生成的交易的合法性存疑。無論這項技術的安全性和複雜程度如何,區塊鏈中交易的合法性都是需要解決的問題。這是關於如何在現有法律系統中融合一種新的所有權管理方式的問題。那些見證互聯網興起並發展的人,可能會發現如今區塊鏈的法律地位的不清晰與 20 世紀 90 年代的互聯網很相似。
缺乏用戶接受度
用戶接受度的缺失是另一個不可忽視的問題。區塊鏈法律地位的不確定性將會造成用戶的懷疑,最終打消其使用區塊鏈系統的念頭。用戶接受度的另一方面在於教育成本。當用戶不了解區塊鏈所用的基礎技術時,要想讓他們使用並信任區塊鏈是不現實的。
克服缺陷
上述技術和非技術類缺陷都是區塊鏈在現實世界得到應用的重大阻礙。如何克服特定缺陷,依然是設計者需要積極探索的方向。對於這類活動的討論不在本書的介紹範圍之內。不過,下文簡要描述了如何解決區塊鏈的缺陷。
技術性缺陷
解決區塊鏈技術性缺陷會涉及各個技術層面的问题。解決區塊鏈技術缺陷的重大挑戰之一,就是了解技術改進和技術創新的區別。下一講將深入討論這個話題。
非技術性缺陷
區塊鏈的非技術性缺陷,可以被視作採用一項新技術所需考慮到的社會、經濟、法律和心理層面的问题。互聯網和電商就是證明時間能夠解答新技術面臨的法律問題的最好例子,用戶也需要時間去理解、信任以及嘗試使用新技術。幸運的是,互聯網和電商的例子同樣證明了時間對新技術普及的重要性,隨著時間的推移,新技術在用戶間的接受度和普及度會逐漸提升,並且也可為人們提出法律方面的解決方案留出時間。
區塊鏈兩大主要技術局限產生的兩大主要衝突。
區塊鏈的主要衝突
區塊鏈面臨著以下兩大衝突。
● 透明度與隱私。
● 安全與速度。
透明度與隱私
區塊鏈根據交易數據的全部歷史記錄來明確所有權,且這些交易數據的歷史記錄對所有人都是可見的。因此,區塊鏈就類似於一種公共交易登記簿或公共賬本。開放和透明是區塊鏈驗證所有權的核心。每個人都可以審計其他人的交易,從而可以十分輕鬆地發現雙花攻擊,因此這種開放性是解決雙花問題的基礎。
然而,這種解決方案與隱私性背道而馳。隱私性意味著要保證除交易雙方外的人無法接觸交易數據中包含的信息(例如涉及賬戶或轉帳金額等信息)。由此產生的衝突就在於一方面需要透明度來明確所有權,另一方面系統用戶又需要有一定的隱私。
安全與速度
可以毫不誇張地說,交易數據的歷史記錄是區塊鏈的核心。可以將交易數據的歷史記錄存儲在不可變且僅可添加數據的區塊鏈數據結構中,而這個結構又會要求被添加或重寫的每個區塊都要解決哈希難題,從而保證歷史交易數據不會被操縱,也不會被偽造。這不僅會使操縱或偽造歷史交易數據的成本變得極高,還減慢了新交易數據被添加到區塊鏈數據結構的速度。這就與商業環境中許多應用程序對速度和可擴展性的要求形成對比。由此產生的衝突就在於一方面要根據耗時的工作量證明算法來確保歷史交易記錄的安全,另一方面又面臨著用戶對速度及系統可擴展性的要求。
衝突的根源
這兩大衝突的根源就在於區塊鏈的兩個基本操作:閱讀或寫入交易數據。開放性與隱私性的衝突可以追溯到閱讀區塊鏈數據的操作,而安全性與速度的衝突則可以追溯到向區塊鏈數據結構寫入數據的操作。總結了兩個主要技術局限、潛在衝突以及區塊鏈的相應基本功能之間的關係。
解決衝突
可以選擇找一個平衡所有衝突的折中方案,也可以選擇讓其中一方以壓倒性的優勢削弱另一方從而解決衝突。正如前文所述,區塊鏈支持透明度以及安全性,從而削弱了隱私與速度。有其他方法可解決這些衝突,我們将在下面的內容中做更詳細的介紹。
在透明度與隱私之間做出選擇
在透明度與隱私之間做出選擇,實際上意味著決定向誰授予查看交易數據的權限。如果僅考慮授予讀取權限的極端情況,則有兩種選擇:將讀取權限授予所有人,或者授予有限的節點或用戶。人們可以根據哪些用戶或節點有權閱讀區塊鏈數據或創建新交易來區分以下類型的區塊鏈。
● 向所有用戶或節點授予讀取權限以及創建新區塊權限的為公有鏈。
● 向預先選定的一組用戶或節點授予有限讀取權限以及創建新區塊權限的為私有鏈。
在安全性與速度之間做出選擇
在安全性與速度之間做出選擇,實際上就意味著決定向誰授予寫入交易數據的權限。如果僅考慮授予寫入權限的極端情況,則有兩種選擇:將寫入權限授予所有人,或者向預先選定的一組被確定可信任的用戶或節點授予寫入權限。我們可以基於寫入權限的授予情況來區分以下兩種類型的區塊鏈。
● 向所有人授予寫入權限的無須許可的區塊鏈。每個用戶或節點都可以驗證交易,向並向區塊鏈添加新區塊。
● 僅向預先選定被確定為可信任的一組數量有限的節點或用戶授予寫入權限的許可區塊鏈。因此,只有具有寫入權限的一組節點才能夠驗證交易,並參與分佈式系統的共識過程。
4 種類型的區塊鏈
區塊鏈,以及上述所有各講中討論的區塊鏈都是公有無須許可的區塊鏈。對於讀取或創建交易權限的任何限制都將產生其中一種類型的區塊鏈。私有許可類的區塊鏈有較高的處理速度,以及對交易數據進行保密的能力,被認為是最適合用於商業環境中的。
影響限制歷史交易記錄的讀取或寫入權限會對區塊鏈以下幾個方面的特徵產生影響。
● 點對點架構。
● 分佈式性質。
● 用途。
點對點架構
在第 3 講中,我們了解了點對點系統及其性質。點對點系統的一個主要特徵就是其包括了在權利與作用方面完全平等的節點(計算機)。儘管單個節點就其貢獻的資源而言可能會有所不同,但系統中的所有節點都具有相同的功能和責任。然而,如上所述的 4 種類型的區塊鏈在向組成系統的節點授予讀取及創建交易權限時卻存在不同。如果節點在讀取或創建交易時的能力不同,那麼它們就不再平等。因此,對系統的讀取及寫入權限進行限制,似乎違反了點對點系統的一大重要特性。
分佈式性質
在第 2 講中,我們了解了分佈式系統及其性質。不存在任何類型的中央控制或協調機構,常被認為是分佈式系統的一個主要特徵。然而,如上所述的 4 種不同類型區塊鏈的出現卻基於向預先選定的一組節點或用戶授予讀取或寫入權限,而不是向所有人都授予這些權限。誰來決定授予或拒絕授予系統的讀取或寫入權限呢?誰又來制定授予或拒絕授予讀取及寫入權限的規則呢?
讀寫權限分配的規則不是由純粹的分佈式系統來管理和執行的,那麼系統就將擁有一個中央要素,這反過來又會與區塊鏈的分佈式特性產生矛盾。
中顯示了通過中央要素管理並執行讀寫權限分配規則的分佈式系統的大致架構。這就意味著,要麼存在一個隱藏的中央控制機構,要麼系統成為所有擁有有限權限節點組成的中心化系統,但同時又在內部使用分佈式的組織方式。在這兩種情況下,整個系統就十分類似於由分佈式與中心化要素組成的一個混合系統。
用途
在第 4 講中,我們了解到區塊鏈解決的核心問題就是在由數量未知、可靠性和可信度也未知的對等節點組成的純粹分佈式點對點系統中實現並維持誠信(即達成共識)。對讀取及寫入權限設限不僅改變了分佈式點對點系統的構成屬性,還改變了節點的可信度。如果對能夠向區塊鏈寫入數據的節點的可信度進行評估,那麼最終系統中可能不包括可信度未知的節點。因此,可以得出結論:這樣的系統本身不再需要區塊鏈在不可信賴的環境中創建信任的這一能力了。
由於以下原因,區塊鏈即使在由數量已知、可靠性及可信度也大概已知的節點組成的系統中也能創造價值。首先,由於技術故障,此類系統中的節點數量可能會有所變化。其次,每個分佈式系統都會面臨一些可讓單獨消息層面的通信變得不可靠的網絡問題。最後,即使通過適應過程也不能保證節點百分之百可信。此外,由於技術故障,即使可信節點也可能會得出錯誤的結果。
重新審視區塊鏈的用途
由於就讀取與寫入權限對節點做出了限制,我們可能會改變對區塊鏈用途的看法。然而,即使在私有許可這一最受限制的情況下,區塊鏈也可用來保持系統完備性。因此,我們可能會決定放寬區塊鏈創造信任的條件。與其堅持區塊鏈的用途是保持開放的、純粹分佈式點對點系統的完備性,倒不如說它的用途是實現和保持一般分佈式系統的完備性。
區塊鏈能夠如何發揮作用,提供哪些服務以及用戶如何與之互動。以下是幾個重要區塊鏈概念的演進。
● 使用權。
● 隱私。
● 共識。
● 交易。
● 存儲數據。
● 數據結構。
使用權
對區塊鏈的讀寫限制可催生出對各種區塊鏈版本的需求。我們在第 23 章中提到過,對數據讀取的限制演化出公有鏈和私有鏈,而對寫入數據權限的限制又誕生出了開放和不開放的區塊鏈。
這 4 種區塊鏈就可以看成是概念上的演進,因為它們改變了區塊鏈的主要特徵,有著不同的用途、分佈式屬性和構架方式。
隱私
區塊鏈的開放性一直都是重點討論的話題,因為這種特徵在某些使用情景下影響了用戶對隱私的需求。私有鏈限制讀取功能,任何人都不能憑藉歷史交易記錄來獲得對交易數據的控制權。其他保護隱私的方法包括把隱私數據存儲在專業保護隱私的分佈式計算平台上。另外,零知識證明可以不用獲取所有的數據就能證明聲明的正確性(比如證明一種數據類商品的所有權)。這種技術使用在區塊鏈上可以讓任何人不用閱讀所有的交易細節就可以證實與所有權相關的聲明。
共識
工作量證明通過計算機計算提供一些基本的衡量標準來選擇一種交易數據的歷史記錄,解決不同歷史版本的衝突問題。但是這種依據計算能力的方式讓很多計算機科學家不滿,他們認為計算能力是可以被攻破的。
因此,區塊鏈演進出了多種不同的共識算法。股權證明(POS)和股權授權證明(DPOS)就是另外兩種共識算法,具體操作原理是把投票權和商品的所有權或者移交權聯系起來。另外一些 “替代” 的共識算法包括 Paxos 和 Raft。這些算法在區塊鏈誕生前就存在了。但是,要把這些算法講清楚可就不簡單了,也超出了本書的範疇。工作量證明(POW)之外的其他共識算法的問題在於它們概念上非常複雜,難以證實。如果這些算法存在理論上的漏洞,就會導致區塊鏈系統中 “腐敗” 的發生,從而影響區塊鏈創造出的信任。
交易
交易就是從一個賬戶轉移所有權到另一個賬戶。事實上,交易本身就是一個自治合約。交易本身包含一切實現所有權轉移所需的信息。這種理念促進了智能合約的發展,並且讓人們嘗試通過區塊鏈來執行智能合約。與交易數據相似,智能合約是使用機器可以讀取的語言來描述各參與方意志的方法。但是與簡單的交易數據不同,智能合約針對不同的物體、主題、行為和條件對如何實現所有權轉移的操作非常靈活。從技術角度而言,智能合約就是用特定編程語言寫在區塊鏈裡的自治計算機程序。寫入智能合約後,區塊鏈可通過執行合約中的代碼來實現拓展。這種拓展實現了區塊鏈從存儲數據的分佈式系統到執行智能合約的虛擬機的轉變。
能夠在區塊鏈上運行代碼意味著可以在上面構建應用,而不只是簡單地用來存儲數據。在討論智能合約時,我們需要意識到這個術語並不是指不同交易方之間的合同,而是指區塊鏈上管理和執行合同的一段代碼。
智能合約的靈活性,使它的使用範圍變得非常廣:如定期支付房租、借貸、還貸,以及在出現危害時支付保險賠償。所以未來幾年智能合約將是最重要的區塊鏈發展方向。
存儲數據
之前我們都在討論如何把新數據存儲進來,並維護整個歷史交易記錄的完整性。但是我們在第 9 講中討論過可以通過交易數據或歷史交易數據來管理所有權。前者多用來管理少量數據,後者多用在有智能合約的場景中,整個系統包含多種隨機信息,如賬戶餘額、保險合同,或者代表物理世界物體的數據。這樣一來,整個系統的狀態都被存儲在歷史交易數據當中,並且可通過智能合約來實現狀態轉變。
數據結構
區塊鏈的數據結構不是由區塊構成的一條直線;相反,區塊鏈的數據結構實際上是樹狀的,不同的分支代表交易數據的不同歷史版本。區塊鏈算法的主要挑戰就在於讓分佈式系統的節點挑選一條分支來作為權威鏈。另外一種存儲交易數據的方法就是使用有向無環圖表來展示這個樹狀的數據結構。我們可以假設這個有向無環圖就是樹狀的區塊鏈數據結構。使用這種有向無環圖來存儲歷史交易記錄對區塊鏈的性能、所有權歸屬和節點間達成共識的方式都具有深遠影響。
區塊鏈的主要發展方向
眾所周知,大眾習慣高估技術的短期影響,而忽視其長期影響。互聯網的演進和它對人類社會的影響就是上述道理的最好證明,這也意味著要預估技術創新的長期影響是非常困難的。以下幾點或許是區塊鏈長期發展的重要方向。
● 去中介化。
● 自動化。
● 標準化。
● 流水線處理。
● 提高處理速度。
● 降低成本。
● 信任協議和共識。
● 讓信任變成一種商品。
● 提高技術意識。
去中介化區塊鏈並沒有消滅中介,而是自己充當了嚴格遵守規則的數字中介。從一種中介轉移到另外一種並沒有什麼了不起,但是取代掉依賴用戶信任的人類組織,把信任編碼到軟體系統當中還是一個很重大的成就。此外,能夠取代大批中介,實現節點和節點之間以安全的方式直接互動,確實稱得上是一個巨大的成就。因此,去中介化是區塊鏈未來發展需要保留的一個特徵。
自動化
為了能夠更好地扮演數字中介的角色,區塊鏈需要依賴自動化。區塊鏈的使用場景越多,越是能夠通過點到點之間的自動互動來替代中介之間的手動操作。因此,區塊鏈的另一大未來發展方向就是鞏固自動化。
標準化
區塊鏈通過運行特定規則和標準實現交易的自動操作。因為區塊鏈使用得越多,相關交易方之間的交易和互動就要越標準化。所以進一步加強標準化也是區塊鏈發展之路的一個重要課題。
流水線處理
由於標準化和自動化,商業流程會變得更加透明和流水線化。很多組織都準備好使用區塊鏈來處理業務。所以,了解現有的商業處理模式,並對其進行重新設計以實現流水線式的操作也是一個重要的方向。
提高處理速度
去中介化、標準化、流水線處理和自動化促進了處理速度的大幅提升。因此,我們可以期待區塊鏈得到越來越多的使用,同時交易雙方的互動也會越多並越高效。如何用高速自動處理的系統改進過去那種耗時的手工處理系統也是一個重要的課題。
降低成本
自動化、去中介化和標準化往往帶來的結果就是成本的降低。歷史已經反覆告訴我們自動化所帶來的成本降低已經重塑了很多行業,讓更多的人能夠買得起各式各樣的商品。當然,成本降低不只會對汽車製造、電視、手機和服裝等產業產生深遠的影響。因此,這也是在經濟層面上需要重點關注的區塊鏈發展方向。
信任協議和共識
區塊鏈把人類對人類組織的信任轉移到對計算機共識的信任。這或許會改變我們對信任的理解,改變我們對個人乃至整個社會信任的理解。因此,信任協議將會是區塊鏈在社會學方面的重要發展方向。
讓信任變成一種商品
自動化和標準化不僅減少了多個行業的生產時間和成本,同樣讓過去消費者承擔不起的商品走進千家萬戶。你還記得 30 年前一台計算機或者一部手機有多貴嗎?現在,手機都是商場促銷免費贈送的東西了。現在花不多的錢就可以買到一台有超高運算能力的計算機。這是因為自動化和標準化可讓計算機芯片的製造成本大幅下降。可以預見隨著區塊鏈發展,商業互動中所需的信任、安全和結算的成本都將會大幅降低。這對日常商業往來中需要發起交易、執行交易並結算的行業是長期的剛需。
提高技術意識
區塊鏈是一種高度複雜的技術,它借助極難篡改的數據結構和共識算法來解決信任問題,實現點對點系統的一致性。這些並不一定能夠吸引到商業世界的注意。但事實上,區塊鏈已經獲得了各行各業的矚目。越多的人開始關注區塊鏈技術,並試圖了解這項技術在現實生活中的應用。這是至關重要的因為在很多行業中要獲得成功和社會財富的關鍵點就在於能否攻克技術上的難題。
潛在劣勢
除了正面的影響,區塊鏈同樣也存在負面影響,以下是其潛在的劣勢。
● 缺少隱私性。
● 缺少責任制。
● 減少就業。
● 再中介化。
缺少隱私性
公有鏈不隱藏交易數據,任何人都可以讀取歷史交易數據。這對那些想保護自己隱私的人而言是非常恐怖的一件事情。這些擔憂是可以理解的,尤其考慮到大公司已經收集了這麼多的個人數據。這種擔心可能會促進私有鏈的發展,或者促進其他一些具有高度安全性的協議的產生。此外,這會引發大家的思考:是否人人都可以做自己數據的主人,都有能力去出售數據的讀取或者使用權。這樣一來,搜索引擎服務商和社交媒體等其他中介就會失去一定的用戶和市場份額。
缺少責任制
去中介化會導致個人責任的缺失。中介通過合同約束各方,並給出相應的擔保。中介還會在交易無法順利進行時做好調解工作,履行自己的義務。人對人類組織的信任轉移到對協議和技術的信任後,用戶就無法在發生、執行和