區塊鏈的 “前世今生”
如今,區塊鏈已成為一個熱門詞匯。在一系列新興的分布式賬本技術中,區塊鏈已成為全球最豐富,發展最快的分布式網絡,例如比特幣,以太坊等,它們是可用于交易和資產交換的可信賴媒介。自2009年推出比特幣以來,區塊鏈技術在其價值、可行性、普及度等方面都經歷了許多起伏。但是,到2020年,區塊鏈的可行性已通過各種開創性的用例和技術得到證明。
回溯過去幾千年的發展歷程,賬本已經成為貿易的中心,賬本被用作各種資產記錄的保存載體,例如記錄商品、貨幣和財產的交換。分布式賬本作為這個概念的擴展,其本質是可以在多個站點、地理區域或機構之間共享的資產存儲載體。網絡中的所有參與者都有相同的副本,對賬本的任何更改都會反映給所有人。分布式賬本也已經存在了數千年,第一個實現是羅馬帝國使用的銀行系統,該系統允許人們參與其整個地區的交易。
九十年代開始,這些思想進一步擴展到了數字領域。1991年,一家冰淇淋廠提出了使用許多分散但相互關聯的共享賬本副本的概念。Stornetta與Haberto合作開發了一種密碼安全的存檔,可以在不泄露記錄內容的情況下驗證記錄。這種機制使協作創建數字分布式賬本的能力遠遠超過了基于紙張的賬本。這項早期工作促使了分布式賬本技術DLT概念的提出,DLT被定義為在沒有中央管理員或集中式數據存儲的情況下,在多個站點、國家或機構中復制、共享和同步數據的共識技術。其中,Distributed Ledger Technology(DLT)各個部分定義如下:
- Distributed:分布式反映了其分散而非集中的特性;
- Ledger:賬本代表了記錄的數據庫;
- Technology:技術定義了用于同步數據的協議,以便數據庫可以以分散的方式運行,而無需中央機構對其進行管理。
就像文中提到的那樣,DLT和區塊鏈經常被用作同義詞,但實際上,區塊鏈是DLT的一種特殊類型,它包含自己的一組規則和功能,包括將交易組織成一條由區塊組成的鏈條。區塊鏈定義了實現DLT的特定方式,而DLT通常具有更廣泛的范圍和靈活的結構。
像DLT一樣,區塊鏈是一種分布式賬本,無需交易中心即可永久存儲不可變也不可否認的交易記錄。區塊鏈中的算法將若干個交易組合形成一個個的區塊,并將每個區塊添加到現有的區塊序列中,顧名思義,形成一個鏈。與傳統的數據庫架構相反,區塊鏈要求參與者之間形成共識,新的信息被收集到區塊中并使用哈希加密簽名鏈接到前面的區塊后。此過程確保可驗證性,因為在不更改哈希值的情況下無法對信息進行操作,并且每個哈希值均構成該信息的一部分,被認為是唯一代表數據內容的數字指紋。
網絡上的每個節點都維護賬本的共享副本,并且為了進行同步,需要一個對等網絡以及一種共識算法來確保在節點之間添加和復制區塊。有一種共識算法稱為工作量證明(Proof of Work, PoW),參加該過程的是稱為礦工的特殊節點,將此證明過程稱為挖礦。在PoW中,礦工通過解決一個復雜的數學難題來相互競爭,第一個解決難題的人是獲勝的礦工。獲勝的礦工驗證新交易,將其記錄在區塊鏈上,并通過數字令牌獲得獎勵。但是,交易的記錄過程一般很慢,通常需要花費幾秒鐘來添加一個塊,比特幣就使用PoW機制。雖然區塊鏈作為比特幣背后的技術而聞名,但現在有數百種不同的區塊鏈提供了超越加密貨幣的多種功能。
此外,PoW是專為開放的公共網絡而設計的,因此通常不適合大多數企業的應用。特別是對于國防部的情況,網絡是私有且安全的,就可以使用除PoW之外的其他更有效的共識算法,這些算法不需要使用加密貨幣或令牌。例如,流行的Quorum企業區塊鏈中使用了權威證明、拜占庭容錯或基于Raft的共識,每秒可實現數千筆交易。
公鏈或私鏈?
區塊鏈可以是公共的(公鏈)也可以是私有的(私鏈)。顧名思義,公鏈不提供訪問許可要求,因此該網絡是完全公開的,就像比特幣一樣。與私鏈相比,公鏈往往分散得多,并且運行速度也較慢。
現在大多數的區塊鏈是私鏈,需要訪問權限才能參與,通常著重于兩個主要方面:誰可以加入網絡?以及誰有權訪問哪些交易?通常,私鏈的所有者可以定義誰可以參與網絡,還可以定義誰可以訪問網絡中的哪些內容。有關私鏈的信息通常僅由其批準的成員進行驗證。
對于私鏈,有許多不同的方法可以定義誰有權訪問什么。在更高級別上,可以使用現有的身份驗證和授權機制來確定誰可以訪問網絡以及每個用戶可以訪問網絡的哪些內容。但是,網絡本身可以定義更精細的粒度。例如,Quorum在節點層面和事務層面定義許可。它使用網絡許可來定義哪些節點可以連接到指定節點,以及該指定節點可以連接到哪些節點,這樣可以確保僅列出的節點成為網絡的一部分。其次,Quorum所謂的安全區加密技術對有效負載/事務進行加密,以使其僅對網絡的一個子集專用。
錢包和密碼簽名
大多數區塊鏈使用錢包的概念,最初以這種方式命名是因為它存儲了一個特殊的密鑰,該密鑰可以訪問加密貨幣。但是,現在即使是在不使用加密貨幣的網絡上,仍然使用錢包,并且該錢包包含標識網絡上用戶/錢包的加密憑據,并且允許用戶簽名交易,從而使每筆交易都可識別。一個簡單的錢包可以使用非對稱密鑰系統生成。這些系統有兩個密鑰:可以共享的公共密鑰和保密的私有密鑰。對于區塊鏈,它們構成了錢包的基礎,該錢包使用了這兩個密鑰和一個派生密鑰,即地址。它包含:
- 私鑰:不能公開的密鑰;
- 公鑰:可以公開的密鑰;
- 網絡上的地址:通常是利用公鑰的哈希碼生成的。由于哈希碼是單向函數,因此不可能從該地址反推出公鑰。
每個區塊鏈中的交易都有一個可以通過數字簽名來識別的所有者,該數字簽名是使用錢包中的私鑰和交易內容創建的。從技術上講,數字簽名是使用用戶的私鑰對交易內容的哈希碼進行加密。這提供了一種既可以標識事務的創建者,又可以驗證事務內容尚未更改的機制。實際上,在區塊鏈中,此哈希碼驗證執行兩次,每個事務一次,每個區塊一次。
在區塊鏈上存儲大數據?
如上所述,在區塊鏈上存儲數據可確保其完整性和不可否認性。但是,如果數據很大,該怎么辦?大數據將使得區塊鏈迅速膨脹,使其昂貴且效率低下。解決這個問題的方案是使用所謂的脫鏈數據。脫鏈數據允許將數據的指紋或哈希碼存儲在鏈上,并將數據存儲在外部存儲介質中。哈希碼是一種加密機制,可以為任何大小的文件生成一個固定大小的指紋。因此以這種方式,實際上可以確保兩個文件永遠不會生成相同的指紋,意味著哈希碼唯一地表示文件的內容。
因此,如果我們將文件的哈希碼存儲在區塊鏈上,然后將該文件存儲在另一存儲介質中,則可以確保兩件事:
- 文件的內容自存儲以來不會被更改:因為如果被更改的話,哈希碼將與外部存儲的文件不匹配;
- 標識存儲外部文件的用戶:因為每筆交易都是由用戶使用其錢包進行簽名的。
脫鏈是跟蹤區塊鏈上外部文件或數據集的絕佳策略,因為它可以最大程度地減少了鏈上的存儲,同時為外部數據提供了不可否認的審計線索。這意味著可以將區塊鏈與現有數據和系統無縫使用,極大地保證數據的完整性和可追蹤性,并且可以跨越不同的數據系統和應用程序聚合數據的多個副本。
就在幾年前,我們拋棄Web 2.0(即Google和Facebook等“大技術”公司)的想法幾乎是不切實際的。但是分布式共識協議的出現使對等交易可以取代依靠中央機構來保存或傳輸數據的方式。比特幣和以太坊證明了這一概念,并為未來的發展提供了極大的可能性。
注:本文翻譯自《POTENTIAL USES OF BLOCKCHAIN BY THE U.S.DEPARTMENTOF DEFENSE》