區塊鏈可以是公開的,也可以是私有的,可以是被許可的,也可以是不可信的
IBM Hyperledger和R3 Corda是應用最廣泛的兩個企業區塊鏈
實際解決方案的部署仍然有限且不完整
這個空間正在繼續進化,并且處于早期階段
企業采用仍然很謹慎
導航區塊鏈空間可能非常具有挑戰性。
關于這個主題的文章很多,其中很多充斥著大量的空話和炒作。
在本文中,我們將解釋區塊鏈項目的兩個主要分支(公共和私有)之間的區別,以及與該領域相關的一些基本技術術語。
在區塊鏈空間中使用的一些最重要的術語是:
受信任第三方——某些事實(例如參與者的身份)不能被核實的系統,除非引用特權(通常是集中的)權威。
無信任——不依賴任何可信任的第三方進行任何操作的系統,包括交易確認或身份驗證。
工作證明(POW)——尋找沒有捷徑算法的數學難題(通常是哈希值問題)的解決方案,因此必須通過蠻力計算來解決。
未使用的交易輸出(UTXO)——在某些區塊鏈(如比特幣)中,交易消耗輸入,而留下一些輸出未使用。這些未使用的輸出可以成為未來事務的輸入。
· 虛擬機模型——一些區塊鏈(尤其是Ethereum)有一個抽象模型,用來表示系統的整體狀態,以及如何更新該狀態。該模型通常可以用虛擬狀態機的形式化模型來描述,例如Ethereum虛擬機(EVM)。
· 圖靈完備——一個小型的事件驅動程序,可以部署到支持程序執行的區塊鏈中。一旦部署,程序將繼續執行,使用區塊鏈事務作為輸入,并可以采取導致執行進一步事務的操作。程序的代碼是進行了加密保護的。
· 圖靈完備-一個計算機科學術語,可以理解為“完全有能力的編程語言”。所有主流語言如Java、Javascript、Python、Ruby、Go等都是圖靈完備的。出于技術原因,一些區塊鏈可能會選擇不把圖靈完備語言的全部功能提供給聰明的合同作者。
每一個術語都有更多的細節,但其中最重要的一些方面包括:
1. 大多數事務系統完全或部分依賴于某些受信任的第三方。另一方面,不信任是一種相當顯著的特性,但它不是廉價獲得的——必須付出相當大的額外復雜性和努力,才能使系統表現出不信任。關鍵是許多區塊鏈使用的POW算法。
2. 一旦找到了POW問題的解決方案(基本上是通過大規模的反復試驗),那么任何參與者都可以立即證明解決方案的正確性。好的POW問題具有統計特性,任何觀察者都可以可靠地估計在偶然發現一個解決方案時花費了多少計算時間。這使得它們適合作為公共區塊鏈(如比特幣)中的分布式共識機制使用。
3. UTXO模型提供了一個簡單的路由來確保交易的完整性,并防止相同的比特幣在兩個獨立的交易中被使用兩次(_double-spending問題_)。這是通過確保事務的所有輸入都必須出現在輸出集合(UTXO數據庫)中。
4. 相比之下,虛擬機模型(尤其是由Ethereum實現的)提供了一個重要的擴展——能夠存儲任意狀態,并在網絡中以一種不信任和完全分散的方式運行簡單程序。
隨著這些主要定義的闡明,我們現在可以看看當今世界上使用的一些主要的基于區塊鏈的技術。
比特幣
原始加密貨幣,它使用未使用事務輸出(UTXO)模型作為分類賬。它使用一個簡單的POW算法進行挖掘,該算法基于猜測一個隨機字符串,當該字符串與上一個事務塊組合時,會導致組合的SHA-256哈希值在數字上小于一個小閾值。
成功猜出答案的參與者被稱為“挖掘了一個塊”,塊中包含的交易被添加到分類賬中。
這樣就可以使用一種非常簡單的方法來確定共識——參與者只需同意,應該將最長的鏈視為挖掘下一個事務塊的基礎。
比特幣的設計初衷并不是為了滿足智能合約。因此,可用的功能非常有限,主要是通過對碰巧存在于協議中的側通道的新穎使用。由此產生的功能絕不是圖靈完備的,相反,大多數對比特幣的分析都忽略了它。
由此產生的系統是純粹的加密安全分類帳。
除了使用加密簽名來驗證事務的起源之外,它沒有任何身份語義,而且完全不可信任。
以太坊
這種分類賬建立在比特幣的一些思想基礎上,但它模擬的是單個全球虛擬機的狀態,而不是UTXO模型。關鍵的創新是增加了圖靈完備的智能合約能力。以太坊虛擬機(EVM),是一個專門為分布式賬本和智能契合約使用而創建的虛擬機。
在以太坊中,程序狀態是私有的,屬于單獨的合約地址,由一系列EVM字節碼指令改變,這些指令是智能合約的內容。
然后,通過聚合每個合約地址的程序狀態,可以得到總體的全局狀態。
以太坊網絡中的所有完整節點都遵循模型的規則。他們可以為他們機器上的任何合約地址的狀態進行計算,只要他們使用相同的事務(構成以太坊模型中的輸入數據),就會得到相同的結果。
由于以太坊使用全局一致算法,并且具有全局最新塊的概念,所以以太坊虛擬機的整體事務處理速率受到塊生成速率的限制。在以太坊網絡中增加更多的硬件和計算能力并不會使其更快或更強大,只是更能防止篡改。
使用Turing-complete智能合約允許在網絡之上添加額外的功能,而不需要所有參與者都知道它們。例如,這允許以太坊網絡發出在以太空間虛擬機中作為附加狀態持有的軟件代幣。這就是所謂的ICO的基礎。
EVM在表面上類似于JVM,但在一些重要領域進行了不同的設計。特別是,EVM字節碼的設計使得對已編譯代碼的靜態分析比對已建立的替代方案的靜態分析要困難得多。對于需要非常高的透明性和可驗證性的執行環境來說,這不是一個賣點。
低級的EVM環境也不是特別適合人類的編程環境。因此,創建了一些更高級的語言,這些語言可以編譯為EVM字節碼。并以穩定性著稱。
受主流編程語言(如Javascript和Java)的啟發,Solidity語言還集成了與以太坊區塊鏈交互的新特性。
在某些方面,以太方是自身成功的受害者。它作為ICO選擇平臺的出現,導致了ETH在2018年初的高價位。這種由以太坊團隊自己持有的加密貨幣的數量導致了這樣一種局面:許多主要參與者都對現狀有著巨大的既得利益,并希望實現他們的賬面利潤。
Corda
R3 Corda使用UTXO模型(類似于比特幣),但在設計中還包括圖靈完備的智能合合約。這些合約表示為JVM字節碼,具有可選的附加確定性保證,從而限制了合約語義。
該方法不使用單個全局鎖(塊高度)來控制分類帳狀態的進展,而是允許不沖突的事務并行進行。這有效地細化了鎖,但代價是需要更復雜和微妙的時間概念。在Corda模型中,簡單的“最長鏈獲勝”規則不再是一個足夠的共識算法。
參與者是已知和可信的,因為第三方身份驗證是Corda體系結構的自然組成部分。
作為移除全局賬本鎖的一個副作用,Corda包含了退出/進入語義,以從主鏈中分離事務,并防止所有事務隨時間的推移糾纏在一起。這是可能的,因為體系結構強烈依賴于受信任的第三方模型。
因此,某些參與者撤銷分類賬項目(相當于加密貨幣中的代幣)并將其替換為沒有交易歷史記錄的新鑄造的等價物的權力,可以得到身份當局的保證。
Corda的創建者并不認為它與加密貨幣有那么大的相似之處。
相反,他們認為技術是在整個市場層面上形成的共享基礎設施,而不是在單個公司層面上。
這將Corda定位為企業區塊鏈,旨在供那些能夠受益于公共基礎設施和對世界狀態的共同看法的組織使用,而不是維護不同版本的記錄,因為這不可避免地會導致協調問題。
HyperLedger
由IBM發起的HyperLedger項目是另一個領先的企業區塊鏈解決方案。
HyperLedger結構是一個區塊鏈框架實現,是Linux基金會托管的超級賬本項目之一。
IBM項目的主要設計目標包括機密性、彈性、靈活性和可伸縮性。
與Corda一樣,Hyperledger也使用一種許可的架構。
它實現了一種確定性的實用拜占庭式Faul容忍(PBFT)算法,該算法確保一旦接收到事務完成通知,事務就真正完成了。
IBM已經投資于可靠的Docker集成,包括容器內的測試。
HyperLedger的智能合約可以用Java編寫,有一個SDK (Go合同也是可能的)。
HyperLedger按角色劃分節點,這些角色包括完全對等的節點、證書頒發機構節點(許可所需的節點)和將事務分組為塊的定購者。
HyperLedger區塊鏈狀態建模為版本化的鍵值存儲(KVS),其中鍵是名稱(字符串),值是任意blob。
這是一個非常低級的接口,在該接口之上,Hyperledger提供了一個名為Ledger的層,它提供了所有成功狀態更改的可驗證歷史記錄。
HyperLedger的代碼和體系結構仍在快速發展,但實際的生產試驗已經開始出現,它與Corda一起出現,成為企業更可能使用的解決方案之一。
用例
區塊鏈的用例仍在熱烈討論中。
有一個明顯的例子,就是抵制審查的數字貨幣。
然而,2018年加密貨幣市場的波動性和分散性似乎表明,缺乏信任的數字貨幣的實際適用性有限。
從企業的角度來看,越來越清楚的是,他們還可以用于創建部署為一個共享的系統或網絡,并構造多個實體之間不一定相互信任還想分享數據和維護一種共識各方關心的問題。
在這些用例中,集中式的權限對于參與者來說是不可接受的,或者設置過于昂貴,這些用例仍然在出現。
盡管時間、精力和風險資本已經部署到迄今為止創建的眾多區塊鏈項目中,但情況還是如此。
隨著更多的項目進入2019年的市場,區塊鏈的前景是否會像它的支持者們在相當長的一段時間里所承諾的那樣產生重大影響,還有待觀察。
評論
查看更多