1. 程式人生 > >區塊鏈的前世今生:走向高可靠企業應用

區塊鏈的前世今生:走向高可靠企業應用

watermark [1] 技術 核心 小米 per iba aide HERE

2009年一個筆名為中本聰的人在密碼學論壇中發布了一篇名為《比特幣----一種點對點的電子現金系統》的文章,比特幣這一概念就此誕生。而其背後的區塊鏈技術則在近十年的時間長河中逐漸浮出水面:從密碼學極客範圍內流傳的實驗性概念,到各金融機構和科技企業間爭相布局的前沿技術,再到媒體宣傳火熱的信任機器,區塊鏈成了科技圈近年來的弄潮兒,風頭一時無兩。我國也將區塊鏈納入了《“十三五”國家信息化規劃》,其重要性不言而喻。

然而,區塊鏈概念雖然火熱,實際落地則取決於企業使用區塊鏈的程度和規模。目前區塊鏈的發展可謂“百鏈爭鳴”,繼比特幣之後各類區塊鏈技術平臺層出不窮,如何選擇合適的區塊鏈技術平臺以滿足業務需求是擺在企業探索區塊鏈應用之前的重要問題之一。

基於這種現狀,本文首先對區塊鏈技術和發展現狀進行概述,並指出開源對於區塊鏈技術的重要性;隨後結合企業運用區塊鏈技術的需求和特點,對目前現存的幾個重要區塊鏈開源技術平臺進行對比。

源起比特幣:公賬與共識構築的區塊鏈

解釋區塊鏈的概念應該從其最早的應用—-比特幣談起。在傳統的電子支付系統中,一筆交易的真實性需要一個中心機構(如銀行)來驗證,以防止一筆錢被重復花費了兩次,即所謂的“雙花“問題:對於一個電子系統來說,錢只是數字意義上的一種符號,必須保證一串字符在發給a的同時沒有發給b。這種情況下系統中用戶賬戶的余額和資金流向其實可以視為一個賬本,而該賬本的記賬權在中心機構手中。

而比特幣則通過區塊鏈技術實現了一個不需要第三方來驗證交易真實性的去中心化電子現金交易系統:

技術分享圖片

圖一:比特幣運行機制圖

首先,系統內任意一筆交易的發生需要向全網進行廣播,其他節點隨機的將自己聽到的若幹交易打包進一個區塊。你可以將此時的區塊理解成一段時間內已發生但還未被系統判定為真實有效的交易集合,且由於廣播的隨機性,不同節點打包的交易集合並不相同。

接下來系統中打包區塊的節點會對自己區塊內的交易記錄進行一次驗證。以a轉給b一個比特幣這筆交易為例,驗證這筆交易的真實性需要判斷a是否擁有一個比特幣,以及該枚比特幣是否只發給了b。

如果上述驗證通過,則所有打包區塊的節點要開始一場競賽:大家爭先恐後的嘗試解一道難於計算但易於驗證的計算題,而這場計算競賽的勝出者所打包的區塊將被系統判定為有效,進而該區塊中的所有交易將被判定為真實合法。作為獎勵,該打包區塊的節點將會被系統獎勵一定數量的比特幣,這種節點也被俗稱為礦工。

隨後該區塊將向全網進行廣播,其他節點在收到該區塊後也可以對區塊中的交易和計算題的答案進行驗證,系統中的節點將先後同步該區塊並認可區塊中交易的真實性。可以預見,在一段時間之後,全網節點對歷史交易記錄將達成一致,因為他們都驗證並同步更新了相同的區塊。而一段時間間隔之後新發生的交易則按照上述同樣的方法打包進區塊,通過計算競賽的勝出結果使得其他節點承認該塊的真實有效,進而承認另一批交易的有效性。同時通過哈希指針鏈和時間戳,將區塊之間進行連接,以保證下一個區塊發生的交易內容是基於歷史區塊的交易內容。

通俗來說,區塊鏈就是一個公共賬本,系統中的所有參與者都擁有這個賬本,且賬本上已經寫下的交易往來都經過了所有參與者的共識並被判定為真實有效。區塊即賬本中的每一頁,記錄了一段時間內發生的交易內容;而鏈則可以理解為翻頁的方式,它將賬本的每一頁以時間順序串連起來,並且賬本下一頁發生的交易內容總是以上一頁的內容為基礎。通過公共賬本的設計,系統中的所有參與者達到了去中心化的信任,即人人都擁有相同的一本賬,並對記錄內容和記賬規則達成了共識。

同源不同途:公有鏈和聯盟鏈競相發展

比特幣證明了區塊鏈可以以去中心化的方式來解決轉賬中的信任問題。但轉賬只是諸多價值轉移中的一種。人們逐漸意識到,區塊鏈並不僅限於在轉賬和支付中使用,它更可以作為一種普適的底層技術機制來解決廣義價值轉移中的信任問題:事物狀態/價值的變化都可以記錄在區塊鏈中,如房產所有權的更叠,供應鏈各環節商品信息的更新等,各相關方共同維護該狀態的更新並對更新結果達成共識。

然而,由於比特幣系統設計的非圖靈完備性,其底層的區塊鏈系統難以承載除轉賬之外的其他功能,區塊鏈更廣闊的應用前景受到了限制。基於這種現狀,同時由於比特幣的代碼開源,開發者們先後對比特幣底層的區塊鏈技術進行著不斷的改良和創新,逐漸形成了多種區塊鏈技術共同發展的局面:

一類針對比特幣交易性能低,挖礦算法資源消耗大,無法做到完全匿名等缺點進行改良,如萊特幣,達世幣,門羅幣和Zcash等成百上千的數字貨幣,但其應用場景仍僅限於使用數字貨幣進行轉賬交易,每一種新的數字貨幣背後都對應著經過改進的區塊鏈系統;

另一類則是將數字貨幣作為系統中的一種token(通證),而非單純用作如比特幣那樣的轉賬和交易:創建業務需要以消耗token作為代價,執行業務以事先設置好的智能合約為基礎並通過預置條件來觸發,業務結果和狀態變更則記錄在區塊鏈中,典型代表如以太坊等。

此外一類區塊鏈不從數字貨幣出發,一般不存在token但專註於為企業運用區塊鏈或分布式賬本技術搭建平臺,使得企業能夠根據自己的業務需求方便快捷的部署自己的應用,典型代表如支持功能可插拔的通用區塊鏈底層框架Hyperledger fabric和專註於金融機構之間對賬應用的corda等。

總的來看,存在數字貨幣或token且沒有準入機制的區塊鏈一般被稱為公有鏈,而專註於解決若幹企業間信任問題的區塊鏈被稱為聯盟鏈,在此不同的技術平臺上,根據主要運行業務環境的不同,業界也對應著“幣圈”和“鏈圈”。

技術分享圖片

圖二:幣圈和鏈圈及主要發展趨勢

殊途卻同歸:開源成為企業布局區塊鏈的必然選擇

雖然區塊鏈發展的路徑存在區別,但有一個現象不容忽視:無論是公有鏈還是聯盟鏈,它們都選擇了開源去構建自己的技術平臺。深究其原因,可以發現開源區塊鏈的存在是一種必然之選:

首先,區塊鏈創造了一種信任機制,開源才能讓該信任機制本身變的可信。想象一個聲稱能用去中心化方式解決信任問題但閉源的區塊鏈。如果僅采納技術提供方的方案而無法對其代碼進行審閱,那麽這個區塊鏈無異於魔術師手上的戲法,效果神奇但讓人懷疑其真實性。因為這種情況下參與方只能依賴技術提供方的聲譽和背書對區塊鏈形成有限的信任,這與區塊鏈本身去中心化的信任模式相違背。

其次,開源增加了多方參與的意願,區塊鏈的生態更容易發展壯大。多方參與是區塊鏈技術的重要特征之一,但是否決定參與則是區塊鏈能否落地的先覺條件。開源讓區塊鏈變得透明和友好,參與者可以提前對將要加入的區塊鏈從技術和功能上進行全方位的評估和審視,直接降低了參與方對陌生技術信任成本。

更為重要的是,開源已經成為各公司布局區塊鏈的重要手段。科技公司如IBM,Intel,微軟以及華為等已先後加入區塊鏈開源社區,通過發布或參與開源的區塊鏈解決方案來吸引合作夥伴加入,從而壯大自己的區塊鏈生態,以求在競爭中取得優勢。對企業級的商用場景來說,目前兩個較大的開源區塊鏈解決方案為超級賬本項目(Hyperledger)、企業以太坊聯盟(Enterprise EthereumAlliance)

技術分享圖片

圖三:超級賬本和EEA

超級賬本(Hyperledger)項目由Linux基金會牽頭在2015年12月成立,創始會員包括IBM,Intel,思科,埃森哲,J.P.Morgan等,目前已有150余位來自世界各地的會員,國內公司如華為、百度、騰訊、小米等也位列其中。超級賬本項目的意圖是建立一個跨行業的、開放的、標準的、領先的分布式加密賬本技術,改變全球商業交易進行的模式。該項目提供通用的區塊鏈底層框架,使得用戶可以簡單方便的在框架上部署應用,滿足企業對分布式賬本技術的需求。IBM、Digital Asset、Intel等公司在該項目的早期貢獻了大量的代碼和開發資源,項目規模也不斷擴張。截止目前為止,超級賬本項目已經擁有了4個區塊鏈框架子項目和5個輔助開發工具項目,生態日益完善。子項目中的Fabric擁有較高的知名度,在設計上貼近聯盟鏈的思想,是企業搭建區塊鏈選用較多的技術平臺。

企業以太坊聯盟(Enterprise EthereumAlliance,下稱EEA)於去年成立(2017年2月),主要牽頭者是微軟,創始會員也包括了Intel,埃森哲和J.P.Morgan等,但目前成員規模與超級賬本相近,發展勢頭迅猛。EEA中所有孵化的項目都是以開源的以太坊公有鏈為基礎版本,意圖通過以太坊的公鏈技術來解決企業級的區塊鏈部署和使用需求。該項目已成立技術指導委員會和針對不同行業的工作組,相關子項和標準後續也會公之於眾。

概念需落地:開源區塊鏈解決方案的對比

拋開概念的炒作和資本的狂歡,區塊鏈的本質仍是一種新的技術。技術的落地永遠離不開企業的大規模使用和布局。

為了滿足商業場景的需求,企業在部署和應用區塊鏈的過程中更多的需要考慮架構設計、節點設計、性能、權限管理、隱私等各方面的實際問題。並非所有企業都有強大的技術實力來自研區塊鏈,因此選用開源的區塊鏈解決方案或技術平臺以滿足上述需求就成為了企業布局區塊鏈的上佳選擇。下文將對目前市場上具有代表性的兩大開源區塊鏈解決方案Hyperledger Fabric和以太坊從不同的技術維度進行對比,為企業布局區塊鏈的技術選型提供參考。

整體架構設計:

Fabric在系統的架構設計上采用了可插拔的方案,對區塊鏈核心組件如共識算法,身份驗證等進行模塊化分類,好處是用戶可以根據自己的需求靈活的選擇和搭配對應模塊,做到了系統上的松耦合。相較而言以太坊在架構設計上偏向緊耦合,共識、合約及應用層中不存在可以插拔的設計;對整個系統的靈活性而言,目前以太坊的網絡狀態更新依賴於單節點處理事務再進行全網廣播,後續以太坊計劃實施分片機制,同一片內的節點達到處理的同步性和一致性,而不同分片之間可以存在異步。因此從總體架構設計來看,Fabric更為靈活,企業可以進行更多的個性化配置。

節點類型:

一般區塊鏈的節點從大功能上來說可以分為記賬節點和客戶端節點。記賬節點負責對區塊鏈中系統中的交易進行驗證,並對交易狀態的變更達成共識並進行記錄,進而同步到全網;客戶端節點可以不必考慮共識和賬本方面的事務,只需要能夠順利執行交易即可。Fabric和以太坊中都有記賬節點和客戶端節點,但Fabric中劃分的更細,將記賬節點按照不同的角色分為了背書節點和驗證節點,前者專門對客戶端發起的交易請求進行預處理,後者則對預處理後的交易進行驗證。這樣的設計解耦了區塊鏈中交易處理節點的功能,可以減輕節點的工作負擔。

共識機制與性能:

Fabric目前主要采用Kalfka共識算法,其本身是一種分布式消息隊列中間件,基於zookeeper進行Paxos算法進行選舉達成共識。該共識算法允許網絡中的節點失效,但不能允許惡意節點的出現。在系統中存在f個失效節點的情況下,只要節點總數大於2f+1,系統仍能夠安全運行並達成共識,即Kalfka能夠容忍半數節點失效。在上述共識算法下,Fabric的TPS(每秒交易量)在10000左右,平均交易確認速度在幾百毫秒左右。以上數據基本能滿足企業部署區塊鏈進行商用的需求。同時Fabric支持共識算法可拔插機制,方便企業可以加入其他共識算法如拜占庭容錯共識算法PBFT,滿足不同場景需求。

以太坊前期采用了同比特幣一致的PoW(工作量證明)算法,即通常所說的挖礦。該算法在靈活性上優於PBFT,系統中的記賬節點可以隨時下線和退出,並不影響其他節點達成共識;但與PoW相伴的則是交易確認速度的緩慢和TPS的下降:以太坊的區塊鏈每隔12秒產生一個區塊,一筆交易被驗證有效的時間也是12秒左右;受制於CPU的單線程,其TPS在50左右,難以滿足一些高頻交易的商業場景需求。目前以太坊的共識算法正在由PoW向PoS(權益證明)轉變,後者的交易效率更高;同時以太坊也正在部署Raiden(雷電網絡)解決方案,力求將交易確認時間控制在毫秒級。可以預見未來以太坊的性能將會變得更加優秀,但從目前來看Fabric更適合企業商用。

權限與隱私方面:

在權限控制方面,Fabric按照聯盟鏈的思路來設計,對系統中的成員能否發起交易進行了嚴格的權限控制。系統參與者需要從RA(註冊中心)處取得註冊許可,然後通過CA(認證中心)頒發的證書來獲取交易安全證書。只有被上述註冊中心和驗證中心簽名後的節點才有權力發起交易。而以太坊則以公有鏈設計思路出發,對用戶身份做了匿名處理,系統中的用戶很難匹配到其自然人的身份。理論上參與者都有權發起交易,只需支付一定量的以太幣即可。可以看出以太坊通過其自帶的以太幣作為Token來作為發起交易所需付出的代價和資源,通過經濟性的設計來控制用戶發起交易的權限,但其權限控制力是要弱於Fabric的。

在安全隱私方面,Fabric提供Channel的設計允許系統中的參與方擁有多個交易通道而業務內容則互不可見,這種設計為企業間的業務安全和隔離性創造了良好的空間。與之對應的是以太坊提供State Channel(狀態旁路)方案,區塊鏈賬本上記錄的只是粗顆粒度的“批發”,可以理解為出入備付金操作,真正細顆粒度的雙邊或者多邊交易的明晰,則不作為交易出現在賬本中,而僅僅作為有爭議時進行核查的證據,通過狀態旁路的方式“曲線執行”。這樣就在一定程度上使得其他的賬本所有者無法通過查閱賬本獲取到交易內容的明細,保證了交易方的安全性和隱私。因此對比來看,Fabric和以太坊都有著安全隱私的保護方案,難以評估孰優孰劣。

綜上以表來概括,可以看出Fabric在初期各技術維度上更加適合企業進行采用。

技術分享圖片

表一:Fabric和以太坊各方面對比

結語

區塊鏈撬動多個行業,甚至將互聯網轉變成了基礎設施,在多個方面引起關註。區塊鏈技術仍在發展之中,後續一定會有更多的技術革新和改良。目前公有鏈和聯盟鏈爭相發展的格局預計將在一段時間內保持不變。在聯盟鏈方面,目前Fabric已經逐漸成為企業級開源區塊鏈解決方案的事實標準,業內玩家先後入局,相關概念驗證和商用項目不斷湧現,它也將成為企業探索區塊鏈業務進行技術選型的重要參考之一。同時,華為等領先廠商均推出了BaaS(Blockchain asa Service)方案,其中華為雲近期推出的企業級區塊鏈雲服務產品BCS(Blockchainservice),優勢明顯:

l 簡單幾步配置後,幾分鐘就能構建好一條區塊鏈,這對不太懂區塊鏈底層技術的企業是一大福音。

l 支持Solo,kafka,PBFT等多種共識算法用戶可以在不同階段有不同選擇。

l 可視化支持鏈代碼的查看、安裝和實例化,這對不習慣腳本操作的小白也是利好消息。

l 同時支持私有鏈和聯盟鏈也給用戶更多的選擇。

參考文獻:

[1] Bengio Y. Learning Deep Architectures for AI[J]. Foundations & Trends? in Machine Learning, 2009, 2(1):1-127.

[2] Hinton G E, Salakhutdinov R R. Reducing the Dimensionality of Data with Neural Networks[J]. Science, 2006, 313(5786):504-507.

[3] He K, Zhang X, Ren S, Sun J. Deep Residual Learning for Image www.wanmeiyuele.cn Recognition. arXiv:1512.03385, 2015.

[4] Srivastava R K,www.cnzhaotai.com Greff K, www.yibaoyule1.com Schmidhuber J. Highway networks. arXiv:1505.00387, 2015.

正確利用BaaS平臺可以幫助有意使用區塊鏈進行創新的企業,大幅降低區塊鏈使用的難度和開發、部署以及運行成本,助力商業成功。

參考文獻:

1. 《好風借力,直上青雲—區塊鏈平臺調研與分析》,安永咨詢報告

2. 《區塊鏈技術指南》,yeasy,gitbook

3. 《比特幣-一種點對點的電子現金系統》,中本聰

區塊鏈的前世今生:走向高可靠企業應用