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