曾詩欽,霍如,黃韜,3,劉江,3,汪碩,3,馮偉
(1.北京郵電大學網絡與交換國家重點實驗室,北京 100876;2.北京工業大學北京未來網絡科技高精尖創新中心,北京 100124;3.網絡通信與安全紫金山實驗室,江蘇 南京 211111;4.工業和信息化部信息化和軟件服務業司,北京 100846)
2008 年,中本聰提出了去中心化加密貨幣——比特幣(bitcoin)的設計構想。2009 年,比特幣系統開始運行,標志著比特幣的正式誕生。2010—2015 年,比特幣逐漸進入大眾視野。2016—2018 年,隨著各國陸續對比特幣進行公開表態以及世界主流經濟的不確定性增強,比特幣的受關注程度激增,需求量迅速擴大。事實上,比特幣是區塊鏈技術最成功的應用場景之一。伴隨著以太坊(ethereum)等開源區塊鏈平臺的誕生以及大量去中心化應用(DApp,decentralized application)的落地,區塊鏈技術在更多的行業中得到了應用。
由于具備過程可信和去中心化兩大特點,區塊鏈能夠在多利益主體參與的場景下以低成本的方式構建信任基礎,旨在重塑社會信用體系。近兩年來區塊鏈發展迅速,人們開始嘗試將其應用于金融、教育、醫療、物流等領域。但是,資源浪費、運行低效等問題制約著區塊鏈的發展,這些因素造成區塊鏈分類方式、服務模式和應用需求發生快速變化,進一步導致核心技術朝多樣化方向發展,因此有必要采取通用的結構分析區塊鏈項目的技術路線和特點,以梳理和明確區塊鏈的研究方向。
區塊鏈涵蓋多種技術,相關概念易混淆,且應用場景繁多,為此,已有相關綜述主要從技術體系結構、技術挑戰和應用場景等角度來梳理區塊鏈的最新進展、技術差異和聯系,總結技術形態和應用價值。袁勇等[1]給出了區塊鏈基本模型,以比特幣為例將非許可鏈分為數據層、網絡層、共識層、激勵層、合約層和應用層;邵奇峰等[2]結合開源項目細節,對比了多種企業級區塊鏈(許可鏈)的技術特點;Yang 等[3]總結了基于區塊鏈的網絡服務架構的特點、挑戰和發展趨勢;韓璇等[4]系統性歸納了區塊鏈安全問題的研究現狀;Ali 等[5]總結了區塊鏈在物聯網方面的應用研究進展、趨勢。上述文獻雖然歸納得較為完整,但是都沒有從許可鏈與非許可鏈共性技術的角度進行通用的層次結構分析,沒有體現出區塊鏈技術與組網路由、數據結構、同步機制等已有技術的關聯性,且缺少對區塊鏈項目的差異分析。本文則對有關概念進行區分,探討了通用的層次化技術結構及其與已有技術的關聯性,并針對該結構橫向分析相關學術研究進展;根據分層結構對比部分區塊鏈項目的技術選型;最后以智慧城市場景、邊緣計算和人工智能技術為代表介紹區塊鏈應用研究現狀,給出區塊鏈技術挑戰與研究展望。
隨著區塊鏈技術的深入研究,不斷衍生出了很多相關的術語,例如“中心化”“去中心化”“公鏈”“聯盟鏈”等。為了全面地了解區塊鏈技術,并對區塊鏈技術涉及的關鍵術語有系統的認知,本節將給出區塊鏈及其相關概念的定義,以及它們的聯系,更好地區分易使人混淆的術語。
中心化(centralization )與去中心化(decentralization)最早用來描述社會治理權力的分布特征。從區塊鏈應用角度出發,中心化是指以單個組織為樞紐構建信任關系的場景特點。例如,電子支付場景下用戶必須通過銀行的信息系統完成身份驗證、信用審查和交易追溯等;電子商務場景下對端身份的驗證必須依靠權威機構下發的數字證書完成。相反,去中心化是指不依靠單一組織進行信任構建的場景特點,該場景下每個組織的重要性基本相同。
加密貨幣(cryptocurrency)是一類數字貨幣(digital currency)技術,它利用多種密碼學方法處理貨幣數據,保證用戶的匿名性、價值的有效性;利用可信設施發放和核對貨幣數據,保證貨幣數量的可控性、資產記錄的可審核性,從而使貨幣數據成為具備流通屬性的價值交換媒介,同時保護使用者的隱私。
加密貨幣的概念起源于一種基于盲簽名(blind signature)的匿名交易技術[6],最早的加密貨幣交易模型“electronic cash”[7]如圖1 所示。
圖1 “electronic cash”交易模型
交易開始前,付款者使用銀行賬戶兌換加密貨幣,然后將貨幣數據發送給領款者,領款者向銀行發起核對請求,若該數據為銀行簽發的合法貨幣數據,那么銀行將向領款者賬戶記入等額數值。通過盲簽名技術,銀行完成對貨幣數據的認證,而無法獲得發放貨幣與接收貨幣之間的關聯,從而保證了價值的有效性、用戶的匿名性;銀行天然具有發放幣種、賬戶記錄的能力,因此保證了貨幣數量的可控性與資產記錄的可審核性。
最早的加密貨幣構想將銀行作為構建信任的基礎,呈現中心化特點。此后,加密貨幣朝著去中心化方向發展,并試圖用工作量證明(PoW,poof of work)[8]或其改進方法定義價值。比特幣在此基礎上,采用新型分布式賬本技術保證被所有節點維護的數據不可篡改,從而成功構建信任基礎,成為真正意義上的去中心化加密貨幣。區塊鏈從去中心化加密貨幣發展而來,隨著區塊鏈的進一步發展,去中心化加密貨幣已經成為區塊鏈的主要應用之一。
一般認為,區塊鏈是一種融合多種現有技術的新型分布式計算和存儲范式。它利用分布式共識算法生成和更新數據,并利用對等網絡進行節點間的數據傳輸,結合密碼學原理和時間戳等技術的分布式賬本保證存儲數據的不可篡改,利用自動化腳本代碼或智能合約實現上層應用邏輯。如果說傳統數據庫實現數據的單方維護,那么區塊鏈則實現多方維護相同數據,保證數據的安全性和業務的公平性。區塊鏈的工作流程主要包含生成區塊、共識驗證、賬本維護3 個步驟。
1)生成區塊。區塊鏈節點收集廣播在網絡中的交易——需要記錄的數據條目,然后將這些交易打包成區塊——具有特定結構的數據集。
2)共識驗證。節點將區塊廣播至網絡中,全網節點接收大量區塊后進行順序的共識和內容的驗證,形成賬本——具有特定結構的區塊集。
3)賬本維護。節點長期存儲驗證通過的賬本數據并提供回溯檢驗等功能,為上層應用提供賬本訪問接口。
根據不同場景下的信任構建方式,可將區塊鏈分為2 類:非許可鏈(permissionless blockchain)和許可鏈(permissioned blockchain)。
非許可鏈也稱為公鏈(public blockchain),是一種完全開放的區塊鏈,即任何人都可以加入網絡并參與完整的共識記賬過程,彼此之間不需要信任。公鏈以消耗算力等方式建立全網節點的信任關系,具備完全去中心化特點的同時也帶來資源浪費、效率低下等問題。公鏈多應用于比特幣等去監管、匿名化、自由的加密貨幣場景。
許可鏈是一種半開放式的區塊鏈,只有指定的成員可以加入網絡,且每個成員的參與權各有不同。許可鏈往往通過頒發身份證書的方式事先建立信任關系,具備部分去中心化特點,相比于非許可鏈擁有更高的效率。進一步,許可鏈分為聯盟鏈(consortium blockchain)和私鏈(fully private blockchain)。聯盟鏈由多個機構組成的聯盟構建,賬本的生成、共識、維護分別由聯盟指定的成員參與完成。在結合區塊鏈與其他技術進行場景創新時,公鏈的完全開放與去中心化特性并非必需,其低效率更無法滿足需求,因此聯盟鏈在某些場景中成為實適用性更強的區塊鏈選型。私鏈相較聯盟鏈而言中心化程度更高,其數據的產生、共識、維護過程完全由單個組織掌握,被該組織指定的成員僅具有賬本的讀取權限。
根據區塊鏈發展現狀,本節將歸納區塊鏈的通用層次技術結構、基本原理和研究進展。
現有項目的技術選型多數由比特幣演變而來,所以區塊鏈主要基于對等網絡通信,擁有新型的基礎數據結構,通過全網節點共識實現公共賬本數據的統一。但是區塊鏈也存在效率低、功耗大和可擴展性差等問題,因此人們進一步以共識算法、處理模型、交易模式創新為切入點進行技術方案改進,并在此基礎上豐富了邏輯控制功能和區塊鏈應用功能,使其成為一種新型計算模式。本文給出如圖2 所示的區塊鏈通用層次化技術結構,自下而上分別為網絡層、數據層、共識層、控制層和應用層。其中,網絡層是區塊鏈信息交互的基礎,承載節點間的共識過程和數據傳輸,主要包括建立在基礎網絡之上的對等網絡及其安全機制;數據層包括區塊鏈基本數據結構及其原理;共識層保證節點數據的一致性,封裝各類共識算法和驅動節點共識行為的獎懲機制;控制層包括沙盒環境、自動化腳本、智能合約和權限管理等,提供區塊鏈可編程特性,實現對區塊數據、業務數據、組織結構的控制;應用層包括區塊鏈的相關應用場景和實踐案例,通過調用控制合約提供的接口進行數據交互,由于該層次不涉及區塊鏈原理,因此在第5節中單獨介紹。
圖2 區塊鏈層次化技術結構
網絡層關注區塊鏈網絡的基礎通信方式——對等(P2P,peer-to-peer)網絡。對等網絡是區別于“客戶端/服務器”服務模式的計算機通信與存儲架構,網絡中每個節點既是數據的提供者也是數據的使用者,節點間通過直接交換實現計算機資源與信息的共享,因此每個節點地位均等。區塊鏈網絡層由組網結構、通信機制、安全機制組成。其中組網結構描述節點間的路由和拓撲關系,通信機制用于實現節點間的信息交互,安全機制涵蓋對端安全和傳輸安全。
1)組網結構
對等網絡的體系架構可分為無結構對等網絡、結構化對等網絡和混合式對等網絡[9],根據節點的邏輯拓撲關系,區塊鏈網絡的組網結構也可以劃分為上述3 種,如圖3 所示。
圖3 區塊鏈組網結構
無結構對等網絡是指網絡中不存在特殊中繼節點、節點路由表的生成無確定規律、網絡拓撲呈現隨機圖狀的一類對等網絡。該類網絡結構松散,設計簡潔,具有良好的容錯性和匿名性,但由于采用洪泛機制作為信息傳播方式,其可擴展性較差。典型的協議有Gnutella 等。
結構化對等網絡是指網絡中不存在特殊中繼節點、節點間根據特定算法生成路由表、網絡拓撲具有嚴格規律的一類對等網絡。該類網絡實現復雜但可擴展性良好,通過結構化尋址可以精確定位節點從而實現多樣化功能。常見的結構化網絡以DHT(distributed hash table)網絡為主,典型的算法有Chord、Kademlia 等。
混合式對等網絡是指節點通過分布式中繼節點實現全網消息路由的一類對等網絡。每個中繼節點維護部分網絡節點地址、文件索引等工作,共同實現數據中繼的功能。典型的協議有Kazza 等。
2)通信機制
通信機制是指區塊鏈網絡中各節點間的對等通信協議,建立在TCP/UDP 之上,位于計算機網絡協議棧的應用層,如圖4 所示。該機制承載對等網絡的具體交互邏輯,例如節點握手、心跳檢測、交易和區塊傳播等。由于包含的協議功能不同(例如基礎鏈接與擴展交互),本文將通信機制細分為3個層次:傳播層、連接層和交互邏輯層。
傳播層實現對等節點間數據的基本傳輸,包括2 種數據傳播方式:單點傳播和多點傳播。單點傳播是指數據在2 個已知節點間直接進行傳輸而不經過其他節點轉發的傳播方式;多點傳播是指接收數據的節點通過廣播向鄰近節點進行數據轉發的傳播方式,區塊鏈網絡普遍基于Gossip 協議[10]實現洪泛傳播。連接層用于獲取節點信息,監測和改變節點間連通狀態,確保節點間鏈路的可用性(availability)。具體而言,連接層協議幫助新加入節點獲取路由表數據,通過定時心跳監測為節點保持穩定連接,在鄰居節點失效等情況下為節點關閉連接等。交互邏輯層是區塊鏈網絡的核心,從主要流程上看,該層協議承載對等節點間賬本數據的同步、交易和區塊數據的傳輸、數據校驗結果的反饋等信息交互邏輯,除此之外,還為節點選舉、共識算法實施等復雜操作和擴展應用提供消息通路。
圖4 區塊鏈網絡通信機制
3)安全機制
安全是每個系統必須具備的要素,以比特幣為代表的非許可鏈利用其數據層和共識層的機制,依靠消耗算力的方式保證數據的一致性和有效性,沒有考慮數據傳輸過程的安全性,反而將其建立在不可信的透明P2P 網絡上。隨著隱私保護需求的提出,非許可鏈也采用了一些網絡匿名通信方法,例如匿名網絡Tor(the onion router)通過沿路徑的層層數據加密機制來保護對端身份。許可鏈對成員的可信程度有更高的要求,在網絡層面采取適當的安全機制,主要包括身份安全和傳輸安全兩方面。身份安全是許可鏈的主要安全需求,保證端到端的可信,一般采用數字簽名技術實現,對節點的全生命周期(例如節點交互、投票、同步等)進行簽名,從而實現許可鏈的準入許可。傳輸安全防止數據在傳輸過程中遭到篡改或監聽,常采用基于TLS 的點對點傳輸和基于Hash 算法的數據驗證技術。
4)研究現狀
目前,區塊鏈網絡層研究主要集中在3 個方向:測量優化、匿名分析與隱私保護、安全防護。
隨著近年來區塊鏈網絡的爆炸式發展以及開源特點,學術界開始關注大型公有鏈項目的網絡狀況,監測并研究它們的特點,研究對象主要為比特幣網絡。Decker 等[11]設計和實現測量工具,分析傳播時延數據、協議數據和地址數據,建模分析影響比特幣網絡性能的網絡層因素,基于此提出各自的優化方法。Fadhil 等[12]提出基于事件仿真的比特幣網絡仿真模型,利用真實測量數據驗證模型的有效性,最后提出優化機制BCBSN,旨在設立超級節點降低網絡波動。Kaneko 等[13]將區塊鏈節點分為共識節點和驗證節點,其中共識節點采用無結構組網方式,驗證節點采用結構化組網方式,利用不同組網方式的優點實現網絡負載的均衡。
匿名性是加密貨幣的重要特性之一,但從網絡層視角看,區塊鏈的匿名性并不能有效保證,因為攻擊者可以利用監聽并追蹤IP 地址的方式推測出交易之間、交易與公鑰地址之間的關系,通過匿名隱私研究可以主動發掘安全隱患,規避潛在危害。Koshy 等[14]提出識別比特幣地址和IP 地址之間映射關系的啟發式算法,學習了近1 000 對可能的映射關系。Biryukov 等[15]通過監測比特幣網絡的地址傳播信息來標識節點身份,進而提出一種客戶端去匿名化方法。Venkatakrishnan 等[16-17]從網絡拓撲、傳播層協議和作惡模型3 個方面對比特幣網絡進行建模,通過理論分析和仿真實驗證明了比特幣網絡協議在樹形組網結構下僅具備弱匿名性,在此基礎上提出Dandelion 網絡策略以較低的網絡開銷優化匿名性,隨后又提出Dandelion++原理,以最優信息理論保證來抵抗大規模去匿名攻擊。
區塊鏈重點關注其數據層和共識層面機制,并基于普通網絡構建開放的互聯環境,該方式極易遭受攻擊。為提高區塊鏈網絡的安全性,學術界展開研究并給出了相應的解決方案。Heilman 等[18]對比特幣和以太坊網絡實施日蝕攻擊(eclipse attack)——通過屏蔽正確節點從而完全控制特定節點的信息來源,證實了該攻擊的可行性。Apostolaki 等[19]提出針對比特幣網絡的 BGP(border gateway protocal)劫持攻擊,通過操縱自治域間路由或攔截域間流量來制造節點通信阻塞,表明針對關鍵數據的沿路攻擊可以大大降低區塊傳播性能。
區塊鏈中的“塊”和“鏈”都是用來描述其數據結構特征的詞匯,可見數據層是區塊鏈技術體系的核心。區塊鏈數據層定義了各節點中數據的聯系和組織方式,利用多種算法和機制保證數據的強關聯性和驗證的高效性,從而使區塊鏈具備實用的數據防篡改特性。除此之外,區塊鏈網絡中每個節點存儲完整數據的行為增加了信息泄露的風險,隱私保護便成為迫切需求,而數據層通過非對稱加密等密碼學原理實現了承載應用信息的匿名保護,促進區塊鏈應用普及和生態構建。因此,從不同應用信息的承載方式出發,考慮數據關聯性、驗證高效性和信息匿名性需求,可將數據層關鍵技術分為信息模型、關聯驗證結構和加密機制3 類。
1)信息模型
區塊鏈承載了不同應用的數據(例如支付記錄、審計數據、供應鏈信息等),而信息模型則是指節點記錄應用信息的邏輯結構,主要包括UTXO(unspent transaction output)、基于賬戶和鍵值對模型3 種。需要說明的是,在大部分區塊鏈網絡中,每個用戶均被分配了交易地址,該地址由一對公私鑰生成,使用地址標識用戶并通過數字簽名的方式檢驗交易的有效性。
UTXO 是比特幣交易中的核心概念,逐漸演變為區塊鏈在金融領域應用的主要信息模型,如圖5所示。每筆交易(Tx)由輸入數據(Input)和輸出數據(Output)組成,輸出數據為交易金額(Num)和用戶公鑰地址(Adr),而輸入數據為上一筆交易輸出數據的指針(Pointer),直到該比特幣的初始交易由區塊鏈網絡向節點發放。
圖5 UTXO 信息模型
基于賬戶的信息模型以鍵值對的形式存儲數據,維護著賬戶當前的有效余額,通過執行交易來不斷更新賬戶數據。相比于UTXO,基于賬戶的信息模型與銀行的儲蓄賬戶類似,更直觀和高效。
不管是UTXO 還是基于賬戶的信息模型,都建立在更為通用的鍵值對模型上,因此為了適應更廣泛的應用場景,鍵值對模型可直接用于存儲業務數據,表現為表單或集合形式。該模型利于數據的存取并支持更復雜的業務邏輯,但是也存在復雜度高的問題。
2)關聯驗證結構
區塊鏈之所以具備防篡改特性,得益于鏈狀數據結構的強關聯性。該結構確定了數據之間的綁定關系,當某個數據被篡改時,該關系將會遭到破壞。由于偽造這種關系的代價是極高的,相反檢驗該關系的工作量很小,因此篡改成功率被降至極低。鏈狀結構的基本數據單位是“區塊(block)”,基本內容如圖6 所示。
圖6 基本區塊結構
區塊由區塊頭(Header)和區塊體(Body)兩部分組成,區塊體包含一定數量的交易集合;區塊頭通過前繼散列(PrevHash)維持與上一區塊的關聯從而形成鏈狀結構,通過MKT(MerkleTree)生成的根散列(RootHash)快速驗證區塊體交易集合的完整性。因此散列算法和MKT 是關聯驗證結構的關鍵,以下將對此展開介紹。
散列(Hash)算法也稱為散列函數,它實現了明文到密文的不可逆映射;同時,散列算法可以將任意長度的輸入經過變化得到固定長度的輸出;最后,即使元數據有細微差距,變化后的輸出也會產生顯著不同。利用散列算法的單向、定長和差異放大的特征,節點通過比對當前區塊頭的前繼散列即可確定上一區塊內容的正確性,使區塊的鏈狀結構得以維系。區塊鏈中常用的散列算法包括SHA256 等。
MKT 包括根散列、散列分支和交易數據。MKT首先對交易進行散列運算,再對這些散列值進行分組散列,最后逐級遞歸直至根散列。MKT 帶來諸多好處:一方面,對根散列的完整性確定即間接地實現交易的完整性確認,提升高效性;另一方面,根據交易的散列路徑(例如Tx1:Hash2、Hash34)可降低驗證某交易存在性的復雜度,若交易總數為N,那么MKT 可將復雜度由N降為lbN。除此之外,還有其他數據結構與其配合使用,例如以太坊通過MPT(Merkle Patricia tree)——PatriciaTrie 和MerkleTree 混合結構,高效驗證其基于賬戶的信息模型數據。
此外,區塊頭中還可根據不同項目需求靈活添加其他信息,例如添加時間戳為區塊鏈加入時間維度,形成時序記錄;添加記賬節點標識,以維護成塊節點的權益;添加交易數量,進一步提高區塊體數據的安全性。
3)加密機制
由上述加密貨幣原理可知,經比特幣演變的區塊鏈技術具備與生俱來的匿名性,通過非對稱加密等技術既保證了用戶的隱私又檢驗了用戶身份。非對稱加密技術是指加密者和解密者利用2 個不同秘鑰完成加解密,且秘鑰之間不能相互推導的加密機制。常用的非對稱加密算法包括RSA、Elgamal、背包算法、Rabin、D-H、ECC(橢圓曲線加密算法)等。對應圖5,Alice 向Bob 發起交易Tx2,Alice使用Bob 的公鑰對交易簽名,僅當Bob 使用私鑰驗證該數字簽名時,才有權利創建另一筆交易,使自身擁有的幣生效。該機制將公鑰作為基礎標識用戶,使用戶身份不可讀,一定程度上保護了隱私。
4)研究現狀
數據層面的研究方向集中在高效驗證、匿名分析、隱私保護3 個方面。
高效驗證的學術問題源于驗證數據結構(ADS,authenticated data structure),即利用特定數據結構快速驗證數據的完整性,實際上MKT 也是其中的一種。為了適應區塊鏈數據的動態性(dynamical)并保持良好性能,學術界展開了研究。Reyzin 等[20]基于AVL 樹形結構提出AVL+,并通過平衡驗證路徑、缺省堆棧交易集等機制,簡化輕量級節點的區塊頭驗證過程。Zhang 等[21]提出GEM2-tree 結構,并對其進行優化提出GEM2*-tree 結構,通過分解單樹結構、動態調整節點計算速度、擴展數據索引等機制降低以太坊節點計算開銷。
區塊數據直接承載業務信息,因此區塊數據的匿名關聯性分析更為直接。Reid 等[22]將區塊數據建模為事務網絡和用戶網絡,利用多交易數據的用戶指向性分析成功降低網絡復雜度。Meiklejohn 等[23]利用啟發式聚類方法分析交易數據的流動特性并對用戶進行分組,通過與這些服務的互動來識別主要機構的比特幣地址。Awan 等[24]使用優勢集(dominant set)方法對區塊鏈交易進行自動分類,從而提高分析準確率。
隱私保護方面,Saxena 等[25]提出復合簽名技術削弱數據的關聯性,基于雙線性映射中的Diffie-Hellman 假設保證計算困難性,從而保護用戶隱私。Miers 等[26]和Sasson 等[27]提出Zerocoin 和Zerocash,在不添加可信方的情況下斷開交易間的聯系,最早利用零知識證明(zero-knowledge proof)技術隱藏交易的輸入、輸出和金額信息,提高比特幣的匿名性。非對稱加密是區塊鏈數據安全的核心,但在量子計算面前卻顯得“捉襟見肘”,為此Yin 等[28]利用盆景樹模型(bonsai tree)改進晶格簽名技術(lattice-based signature),以保證公私鑰的隨機性和安全性,使反量子加密技術適用于區塊鏈用戶地址的生成。
區塊鏈網絡中每個節點必須維護完全相同的賬本數據,然而各節點產生數據的時間不同、獲取數據的來源未知,存在節點故意廣播錯誤數據的可能性,這將導致女巫攻擊[29]、雙花攻擊[30]等安全風險;除此之外,節點故障、網絡擁塞帶來的數據異常也無法預測。因此,如何在不可信的環境下實現賬本數據的全網統一是共識層解決的關鍵問題。實際上,上述錯誤是拜占庭將軍問題(the Byzantine generals problem)[31]在區塊鏈中的具體表現,即拜占庭錯誤——相互獨立的組件可以做出任意或惡意的行為,并可能與其他錯誤組件產生協作,此類錯誤在可信分布式計算領域被廣泛研究。
狀態機復制(state-machine replication)是解決分布式系統容錯問題的常用理論。其基本思想為:任何計算都表示為狀態機,通過接收消息來更改其狀態。假設一組副本以相同的初始狀態開始,并且能夠就一組公共消息的順序達成一致,那么它們可以獨立進行狀態的演化計算,從而正確維護各自副本之間的一致性。同樣,區塊鏈也使用狀態機復制理論解決拜占庭容錯問題,如果把每個節點的數據視為賬本數據的副本,那么節點接收到的交易、區塊即為引起副本狀態變化的消息。狀態機復制理論實現和維持副本的一致性主要包含2 個要素:正確執行計算邏輯的確定性狀態機和傳播相同序列消息的共識協議。其中,共識協議是影響容錯效果、吞吐量和復雜度的關鍵,不同安全性、可擴展性要求的系統需要的共識協議各有不同。學術界普遍根據通信模型和容錯類型對共識協議進行區分[32],因此嚴格地說,區塊鏈使用的共識協議需要解決的是部分同步(partial synchrony)模型[33]下的拜占庭容錯問題。
區塊鏈網絡中主要包含PoX(poof of X)[34]、BFT(byzantine-fault tolerant)和CFT(crash-fault tolerant)類基礎共識協議。PoX 類協議是以PoW(proof of work)為代表的基于獎懲機制驅動的新型共識協議,為了適應數據吞吐量、資源利用率和安全性的需求,人們又提出PoS(proof of stake)、PoST(proof of space-time)等改進協議。它們的基本特點在于設計證明依據,使誠實節點可以證明其合法性,從而實現拜占庭容錯。BFT 類協議是指解決拜占庭容錯問題的傳統共識協議及其改良協議,包括PBFT、BFT-SMaRt、Tendermint 等。CFT 類協議用于實現崩潰容錯,通過身份證明等手段規避節點作惡的情況,僅考慮節點或網絡的崩潰(crash)故障,主要包括Raft、Paxos、Kafka 等協議。
非許可鏈和許可鏈的開放程度和容錯需求存在差異,共識層面技術在兩者之間產生了較大區別。具體而言,非許可鏈完全開放,需要抵御嚴重的拜占庭風險,多采用PoX、BFT 類協議并配合獎懲機制實現共識。許可鏈擁有準入機制,網絡中節點身份可知,一定程度降低了拜占庭風險,因此可采用BFT 類協議、CFT 類協議構建相同的信任模型[35]。
限于篇幅原因,本節僅以PoW、PBFT、Raft為切入進行3 類協議的分析。
1)PoX 類協議
PoW 也稱為Nakamoto 協議,是比特幣及其衍生項目使用的核心共識協議,如圖7 所示。
圖7 PoW 協議示意
該協議在區塊鏈頭結構中加入隨機數Nonce,并設計證明依據:為生成新區塊,節點必須計算出合適的Nonce 值,使新生成的區塊頭經過雙重SHA256 運算后小于特定閾值。該協議的整體流程為:全網節點分別計算證明依據,成功求解的節點確定合法區塊并廣播,其余節點對合法區塊頭進行驗證,若驗證無誤則與本地區塊形成鏈狀結構并轉發,最終達到全網共識。PoW 是隨機性協議,任何節點都有可能求出依據,合法區塊的不唯一將導致生成分支鏈,此時節點根據“最長鏈原則”選擇一定時間內生成的最長鏈作為主鏈而拋棄其余分支鏈,從而使各節點數據最終收斂。
PoW 協議采用隨機性算力選舉機制,實現拜占庭容錯的關鍵在于記賬權的爭奪,目前尋找證明依據的方法只有暴力搜索,其速度完全取決于計算芯片的性能,因此當誠實節點數量過半,即“誠實算力”過半時,PoW 便能使合法分支鏈保持最快的增長速度,也即保證主鏈一直是合法的。PoW 是一種依靠飽和算力競爭糾正拜占庭錯誤的共識協議,關注區塊產生、傳播過程中的拜占庭容錯,在保證防止雙花攻擊的同時也存在資源浪費、可擴展性差等問題。
2)BFT 類協議
PBFT 是BFT 經典共識協議,其主要流程如圖8 所示。PBFT 將節點分為主節點和副節點,其中主節點負責將交易打包成區塊,副節點參與驗證和轉發,假設作惡節點數量為f。PBFT 共識主要分為預準備、準備和接受3 個階段,主節點首先收集交易后排序并提出合法區塊提案;其余節點先驗證提案的合法性,然后根據區塊內交易順序依次執行并將結果摘要組播;各節點收到2f個與自身相同的摘要后便組播接受投票;當節點收到超過2f+1 個投票時便存儲區塊及其產生的新狀態[36]。
圖8 PBFT 協議示意
PBFT 協議解決消息傳播過程的拜占庭容錯,由于算法復雜度為O(n2)且存在確定性的主節點選舉規則,PBFT 僅適用于節點數量少的小型許可鏈系統。
3)CFT 類協議
Raft[37]是典型的崩潰容錯共識協議,以可用性強著稱。Raft 將節點分為跟隨節點、候選節點和領導節點,領導節點負責將交易打包成區塊,追隨節點響應領導節點的同步指令,候選節點完成領導節點的選舉工作。當網絡運行穩定時,只存在領導節點和追隨節點,領導節點向追隨節點推送區塊數據從而實現同步。節點均設置生存時間決定角色變化周期,領導節點的心跳信息不斷重置追隨節點的生存時間,當領導節點發生崩潰時,追隨節點自動轉化為候選節點并進入選舉流程,實現網絡自恢復。
Raft 協議實現崩潰容錯的關鍵在于領導節點的自選舉機制,部分許可鏈選擇降低可信需求,將拜占庭容錯轉換為崩潰容錯,從而提升共識速度。
4)獎懲機制
獎懲機制包括激勵機制與懲罰策略,其中激勵機制是為了彌補節點算力消耗、平衡協議運行收益比的措施,當節點能夠在共識過程中獲得收益時才會進行記賬權的爭奪,因此激勵機制利用經濟效益驅動各共識協議可持續運行。激勵機制一般基于價值均衡理論設計,具有代表性的機制包括PPLNS、PPS 等。為了實現收益最大化,節點可能采用不誠實的運行策略(如扣塊攻擊、自私挖礦等),損害了誠實節點的利益,懲罰策略基于博弈論等理論對節點進行懲罰,從而糾正不端節點的行為,維護共識可持續性。
5)研究現狀
隨著可擴展性和性能需求的多樣化發展,除了傳統的BFT、CFT 協議和PoX 協議衍生研究,還產生了混合型協議(Hybrid)——主要為PoX類協議混合以及PoX-BFT 協議混合。因此本節從PoX 類、BFT 類以及Hybrid 類協議歸納共識層研究進展。
如前文所述,PoX 類協議的基本特點在于設計證明依據,使誠實節點可以證明其合法性,從而實現拜占庭容錯。uPoW[38]通過計算有意義的正交向量問題證明節點合法性,使算力不被浪費。PoI(proof-of-importance)[39]利用圖論原理為每個節點賦予重要性權重,權重越高的節點將越有可能算出區塊。PoS(poof-of-stake)為節點定義“幣齡”,擁有更高幣齡的節點將被分配更多的股份(stake),而股份被作為證明依據用于成塊節點的選舉。Ouroboros[40]通過引入多方擲幣協議增大了選舉隨機性,引入近乎納什均衡的激勵機制進一步提高PoS 的安全性。PoRep(proof-of-replication)[41]應用于去中心化存儲網絡,利用證明依據作為貢獻存儲空間的獎勵,促進存儲資源再利用。
BFT 協議有較長的發展史,在區塊鏈研究中被賦予了新的活力。SCP[42]和Ripple[43]基于聯邦拜占庭共識[44]——存在交集的多池(確定規模的聯邦)共識,分別允許節點自主選擇或與指定的節點構成共識聯邦,通過聯邦交集達成全網共識。Tendermint[45]使用Gossip 通信協議基本實現異步拜占庭共識,不僅簡化了流程而且提高了可用性。HotStuff[46]將BFT 與鏈式結構數據相結合,使主節點能夠以實際網絡時延及O(n)通信復雜度推動協議達成一致。LibraBFT[47]在HotStuff 的基礎上加入獎懲機制及節點替換機制,從而優化了性能。
Hybrid 類協議是研究趨勢之一。PoA[48]利用PoW 產生空區塊頭,利用PoS 決定由哪些節點進行記賬和背書,其獎勵由背書節點和出塊節點共享。PeerCensus[49]由節點團體進行拜占庭協議實現共識,而節點必須基于比特幣網絡,通過PoW 產出區塊后才能獲得投票權力。ByzCoin[50]利用PoW 的算力特性構建動態成員關系,并引入聯合簽名方案來減小PBFT 的輪次通信開銷,提高交易吞吐量,降低確認時延。Casper[51]則通過PoS 的股份決定節點構成團體并進行BFT 共識,且節點可投票數取決于股份。
區塊鏈節點基于對等通信網絡與基礎數據結構進行區塊交互,通過共識協議實現數據一致,從而形成了全網統一的賬本??刂茖邮歉黝悜门c賬本產生交互的中樞,如果將賬本比作數據庫,那么控制層提供了數據庫模型,以及相應封裝、操作的方法。具體而言,控制層由處理模型、控制合約和執行環境組成。處理模型從區塊鏈系統的角度分析和描述業務/交易處理方式的差異??刂坪霞s將業務邏輯轉化為交易、區塊、賬本的具體操作。執行環境為節點封裝通用的運行資源,使區塊鏈具備穩定的可移植性。
1)處理模型
賬本用于存儲全部或部分業務數據,那么依據該數據的分布特征可將處理模型分為鏈上(on-chain)和鏈下(off-chain)2 種。
鏈上模型是指業務數據完全存儲在賬本中,業務邏輯通過賬本的直接存取實現數據交互。該模型的信任基礎建立在強關聯性的賬本結構中,不僅實現防篡改而且簡化了上層控制邏輯,但是過量的資源消耗與龐大的數據增長使系統的可擴展性達到瓶頸,因此該模型適用于數據量小、安全性強、去中心化和透明程度高的業務。
鏈下模型是指業務數據部分或完全存儲在賬本之外,只在賬本中存儲指針以及其他證明業務數據存在性、真實性和有效性的數據。該模型以“最小化信任成本”為準則,將信任基礎建立在賬本與鏈下數據的證明機制中,降低賬本構建成本。由于與公開的賬本解耦,該模型具有良好的隱私性和可拓展性,適用于去中心化程度低、隱私性強、吞吐量大的業務。
2)控制合約
區塊鏈中控制合約經歷了2 個發展階段,首先是以比特幣為代表的非圖靈完備的自動化腳本,用于鎖定和解鎖基于UTXO 信息模型的交易,與強關聯賬本共同克服了雙花等問題,使交易數據具備流通價值。其次是以以太坊為代表的圖靈完備的智能合約,智能合約是一種基于賬本數據自動執行的數字化合同,由開發者根據需求預先定義,是上層應用將業務邏輯編譯為節點和賬本操作集合的關鍵。智能合約通過允許相互不信任的參與者在沒有可信第三方的情況下就復雜合同的執行結果達成協議,使合約具備可編程性,實現業務邏輯的靈活定義并擴展區塊鏈的使用。
3)執行環境
執行環境是指執行控制合約所需要的條件,主要分為原生環境和沙盒環境。原生環境是指合約與節點系統緊耦合,經過源碼編譯后直接執行,該方式下合約能經歷完善的靜態分析,提高安全性。沙盒環境為節點運行提供必要的虛擬環境,包括網絡通信、數據存儲以及圖靈完備的計算/控制環境等,在虛擬機中運行的合約更新方便、靈活性強,其產生的漏洞也可能造成損失。
4)研究現狀
控制層的研究方向主要集中在可擴展性優化與安全防護2 個方面。
側鏈(side-chain)在比特幣主鏈外構建新的分類資產鏈,并使比特幣和其他分類資產在多個區塊鏈之間轉移,從而分散了單一鏈的負荷。Tschorsch等[52]利用Two-way Peg 機制實現交互式跨鏈資產轉換,防止該過程中出現雙花。Kiayias 等[53]利用NIPoPoW 機制實現非交互式的跨鏈工作證明,并降低了跨鏈帶來的區塊冗余。分片(sharding)是指不同節點子集處理區塊鏈的不同部分,從而減少每個節點的負載。ELASTICO[54]將交易集劃分為不同分片,每個分片由不同的節點集合進行并行驗證。OmniLedger[55]在前者的基礎上優化節點隨機選擇及跨切片事務提交協議,從而提高了切片共識的安全性與正確性。區別于OmniLedger,PolyShard[56]利用拉格朗日多項式編碼分片為分片交互過程加入計算冗余,同時實現了可擴展性優化與安全保障。上述研究可視為鏈上處理模型在加密貨幣場景下的可擴展性優化方案。實際上,鏈下處理模型本身就是一種擴展性優化思路,閃電網絡[57]通過狀態通道對交易最終結果進行鏈上確認,從而在交易過程中實現高頻次的鏈外支付。Plasma[58]在鏈下對區塊鏈進行樹形分支拓展,樹形分支中的父節點完成子節點業務的確認,直到根節點與區塊鏈進行最終確認。
一方面,沙盒環境承載了區塊鏈節點運行條件,針對虛擬機展開的攻擊更為直接;另一方面,智能合約直接對賬本進行操作,其漏洞更易影響業務運行,因此控制層的安全防護研究成為熱點。Luu等[59]分析了運行于EVM 中的智能合約安全性,指出底層平臺的分布式語義差異帶來的安全問題。Brent 等[60]提出智能合約安全分析框架Vandal,將EVM 字節碼轉換為語義邏輯關,為分析合約安全漏洞提供便利。Jiang 等[61]預先定義用于安全漏洞的特征,然后模擬執行大規模交易,通過分析日志中的合約行為實現漏洞檢測。
區別于其他技術,區塊鏈發展過程中最顯著的特點是與產業界緊密結合,伴隨著加密貨幣和分布式應用的興起,業界出現了許多區塊鏈項目。這些項目是區塊鏈技術的具體實現,既有相似之處又各具特點,本節將根據前文所述層次化結構對比特幣、以太坊和超級賬本Fabric 項目進行分析,然后簡要介紹其他代表性項目并歸納和對比各項目的技術選型及特點。
比特幣是目前規模最大、影響范圍最廣的非許可鏈開源項目。圖9 為比特幣項目以賬本為核心的運行模式,也是所有非許可鏈項目的雛形。比特幣網絡為用戶提供兌換和轉賬業務,該業務的價值流通媒介由賬本確定的交易數據——比特幣支撐。為了保持賬本的穩定和數據的權威性,業務制定獎勵機制,即賬本為節點產生新的比特幣或用戶支付比特幣,以此驅動節點共同維護賬本。
圖9 比特幣運行模式
比特幣網絡主要由2 種節點構成:全節點和輕節點。全節點是功能完備的區塊鏈節點,而輕節點不存儲完整的賬本數據,僅具備驗證與轉發功能。全節點也稱為礦工節點,計算證明依據的過程被稱為“挖礦”,目前全球擁有近1 萬個全節點;礦池則是依靠獎勵分配策略將算力匯集起來的礦工群;除此之外,還有用于存儲私鑰和地址信息、發起交易的客戶端(錢包)。
1)網絡層
比特幣在網絡層采用非結構化方式組網,路由表呈現隨機性。節點間則采用多點傳播方式傳遞數據,曾基于Gossip 協議實現,為提高網絡的抗匿名分析能力改為基于Diffusion 協議實現[33]。節點利用一系列控制協議確保鏈路的可用性,包括版本獲?。╒etsion/Verack)、地址獲?。ˋddr/GetAddr)、心跳信息(PING/PONG)等。新節點入網時,首先向硬編碼DNS 節點(種子節點)請求初始節點列表;然后向初始節點隨機請求它們路由表中的節點信息,以此生成自己的路由表;最后節點通過控制協議與這些節點建立連接,并根據信息交互的頻率更新路由表中節點時間戳,從而保證路由表中的節點都是活動的。交互邏輯層為建立共識交互通道,提供了區 塊獲取(GetBlock )、交易驗 證(MerkleBlock)、主鏈選擇(CmpctBlock)等協議;輕節點只需要進行簡單的區塊頭驗證,因此通過頭驗證(GetHeader/Header)協議和連接層中的過濾設置協議指定需要驗證的區塊頭即可建立簡單驗證通路。在安全機制方面,比特幣網絡可選擇利用匿名通信網絡Tor 作為數據傳輸承載,通過沿路徑的層層數據加密機制來保護對端身份。
2)數據層
比特幣數據層面的技術選型已經被廣泛研究,使用UTXO 信息模型記錄交易數據,實現所有權的簡單、有效證明,利用MKT、散列函數和時間戳實現區塊的高效驗證并產生強關聯性。在加密機制方面,比特幣采用參數為Secp256k1 的橢圓曲線數字簽名算法(ECDSA,elliptic curve digital signature algorithm)生成用戶的公私鑰,錢包地址則由公鑰經過雙重散列、Base58Check 編碼等步驟生成,提高了可讀性。
3)共識層
比特幣采用PoW 算法實現節點共識,該算法證明依據中的閾值設定可以改變計算難度。計算難度由每小時生成區塊的平均塊數決定,如果生成得太快,難度就會增加。該機制是為了應對硬件升級或關注提升引起的算力變化,保持證明依據始終有效。目前該閾值被設定為10 min 產出一個區塊。除此之外,比特幣利用獎懲機制保證共識的可持續運行,主要包括轉賬手續費、挖礦獎勵和礦池分配策略等。
4)控制層
比特幣最初采用鏈上處理模型,并將控制語句直接記錄在交易中,使用自動化鎖定/解鎖腳本驗證UTXO 模型中的比特幣所有權。由于可擴展性和確認時延的限制,比特幣產生多個側鏈項目如Liquid、RSK、Drivechain 等,以及鏈下處理項目Lightning Network 等,從而優化交易速度。
以太坊是第一個以智能合約為基礎的可編程非許可鏈開源平臺項目,支持使用區塊鏈網絡構建分布式應用,包括金融、音樂、游戲等類型;當滿足某些條件時,這些應用將觸發智能合約與區塊鏈網絡產生交互,以此實現其網絡和存儲功能,更重要的是衍生出更多場景應用和價值產物,例如以太貓,利用唯一標識為虛擬貓賦予價值;GitCoin,眾籌軟件開發平臺等。
1)網絡層
以太坊底層對等網絡協議簇稱為DEVP2P,除了滿足區塊鏈網絡功能外,還滿足與以太坊相關聯的任何聯網應用程序的需求。DEVP2P 將節點公鑰作為標識,采用Kademlia 算法計算節點的異或距離,從而實現結構化組網。DEVP2P 主要由3 種協議組成:節點發現協議RLPx、基礎通信協議Wire和擴展協議Wire-Sub。節點間基于Gossip 實現多點傳播;新節點加入時首先向硬編碼引導節點(bootstrap node)發送入網請求;然后引導節點根據Kademlia 算法計算與新節點邏輯距離最近的節點列表并返回;最后新節點向列表中節點發出握手請求,包括網絡版本號、節點ID、監聽端口等,與這些節點建立連接后則使用Ping/Pong機制保持連接。Wire 子協議構建了交易獲取、區塊同步、共識交互等邏輯通路,與比特幣類似,以太坊也為輕量級錢包客戶端設計了簡易以太坊協議(LES,light ethereum subprotocol)及其變體PIP。安全方面,節點在RLPx 協議建立連接的過程中采用橢圓曲線集成加密方案(ECIES)生成公私鑰,用于傳輸共享對稱密鑰,之后節點通過共享密鑰加密承載數據以實現數據傳輸保護。
2)數據層
以太坊通過散列函數維持區塊的關聯性,采用MPT 實現賬戶狀態的高效驗證。基于賬戶的信息模型記錄了用戶的余額及其他ERC 標準信息,其賬戶類型主要分為2 類:外部賬戶和合約賬戶;外部賬戶用于發起交易和創建合約,合約賬戶用于在合約執行過程中創建交易。用戶公私鑰的生成與比特幣相同,但是公鑰經過散列算法Keccak-256 計算后取20 B 作為外部賬戶地址。
3)共識層
以太坊采用PoW 共識,將閾值設定為15 s產出一個區塊,計劃在未來采用PoS 或Casper 共識協議。較低的計算難度將導致頻繁產生分支鏈,因此以太坊采用獨有的獎懲機制——GHOST 協議,以提高礦工的共識積極性。具體而言,區塊中的散列值被分為父塊散列和叔塊散列,父塊散列指向前繼區塊,叔塊散列則指向父塊的前繼。新區塊產生時,GHOST 根據前7 代區塊的父/叔散列值計算礦工獎勵,一定程度彌補了分支鏈被拋棄時浪費的算力。
4)控制層
每個以太坊節點都擁有沙盒環境EVM,用于執行Solidity 語言編寫的智能合約;Solidity 語言是圖靈完備的,允許用戶方便地定義自己的業務邏輯,這也是眾多分布式應用得以開發的前提。為優化可擴展性,以太坊擁有側鏈項目Loom、鏈下計算項目Plasma,而分片技術已于2018 年加入以太坊源碼。
超級賬本是Linux 基金會旗下的開源區塊鏈項目,旨在提供跨行業區塊鏈解決方案。Fabric 是超級賬本子項目之一,也是影響最廣的企業級可編程許可鏈項目;在已知的解決方案中,Fabric 被應用于供應鏈、醫療和金融服務等多種場景。
1)網絡層
Fabric 網絡以組織為單位構建節點集群,采用混合式對等網絡組網;每個組織中包括普通節點和錨節點(anchor peer),普通節點完成組織內的消息路由,錨節點負責跨組織的節點發現與消息路由。Fabric 網絡傳播層基于Gossip 實現,需要使用配置文件初始化網絡,網絡生成后各節點將定期廣播存活信息,其余節點根據該信息更新路由表以保持連接。交互邏輯層采用多通道機制,即相同通道內的節點才能進行狀態信息交互和區塊同步。Fabric 為許可鏈,因此在網絡層采取嚴苛的安全機制:節點被頒發證書及密鑰對,產生PKI-ID 進行身份驗證;可選用TLS 雙向加密通信;基于多通道的業務隔離;可定義策略指定通道內的某些節點對等傳輸私有數據。
2)數據層
Fabric 的區塊中記錄讀寫集(read-write set)描述交易執行時的讀寫過程。該讀寫集用于更新狀態數據庫,而狀態數據庫記錄了鍵、版本和值組成的鍵值對,因此屬于鍵值對信息模型。一方面,散列函數和MerkleTree 被用作高效關聯結構的實現技術;另一方面,節點還需根據鍵值驗證狀態數據庫與讀寫集中的最新版本是否一致。許可鏈場景對匿名性的要求較低,但對業務數據的隱私性要求較高,因此Fabric 1.2 版本開始提供私有數據集(PDC,private data collection)功能。
3)共識層
Fabric 在0.6 版本前采用PBFT 共識協議,但是為了提高交易吞吐量,Fabric 1.0 選擇降低安全性,將共識過程分解為排序和驗證2 種服務,排序服務采用CFT 類協議Kafka、Raft(v1.4 之后)完成,而驗證服務進一步分解為讀寫集驗證與多簽名驗證,最大程度提高了共識速度。由于Fabric 針對許可鏈場景,參與方往往身份可知且具有相同的合作意圖,因此規避了節點怠工與作惡的假設,不需要獎懲機制調節。
4)控制層
Fabric 對于擴展性優化需求較少,主要得益于共識層的優化與許可鏈本身參與節點較少的前提,因此主要采用鏈上處理模型,方便業務數據的存?。欢鳳DC 中僅將私有數據散列值上鏈的方式則屬于鏈下處理模型,智能合約可以在本地進行數據存取。Fabric 節點采用模塊化設計,基于Docker構建模塊執行環境;智能合約在Fabric 中被稱為鏈碼,使用GO、Javascript 和Java 語言編寫,也是圖靈完備的。
除了上述3 種區塊鏈基礎項目外,產業界還有許多具有代表性的項目,如表1 所示。
區塊鏈技術有助于降低金融機構間的審計成本,顯著提高支付業務的處理速度及效率,可應用于跨境支付等金融場景。除此之外,區塊鏈還應用于產權保護、信用體系建設、教育生態優化、食品安全監管、網絡安全保障等非金融場景。
根據這些場景的應用方式以及區塊鏈技術特點,可將區塊鏈特性概括為如下幾點。1)去中心化。節點基于對等網絡建立通信和信任背書,單一節點的破壞不會對全局產生影響。2)不可篡改。賬本由全體節點維護,群體協作的共識過程和強關聯的數據結構保證節點數據一致且基本無法被篡改,進一步使數據可驗證和追溯。3)公開透明。除私有數據外,鏈上數據對每個節點公開,便于驗證數據的存在性和真實性。4)匿名性。多種隱私保護機制使用戶身份得以隱匿,即便如此也能建立信任基礎。5)合約自治。預先定義的業務邏輯使節點可以基于高可信的賬本數據實現自治,在人-人、人-機、機-機交互間自動化執行業務。
鑒于上述領域的應用在以往研究中均有詳細描述,本文將主要介紹區塊鏈在智慧城市、邊緣計算和人工智能領域的前沿應用研究現狀。
表1 代表性區塊鏈項目
智慧城市是指利用ICT 優化公共資源利用效果、提高居民生活質量、豐富設施信息化能力的研究領域,該領域包括個人信息管理、智慧醫療、智慧交通、供應鏈管理等具體場景。智慧城市強調居民、設施等各類數據的采集、分析與使能,數據可靠性、管理透明化、共享可激勵等需求為智慧城市帶來了許多技術挑戰。區塊鏈去中心化的交互方式避免了單點故障、提升管理公平性,公開透明的賬本保證數據可靠及可追溯性,多種匿名機制利于居民隱私的保護,因此區塊鏈有利于問題的解決。Hashemi 等[62]將區塊鏈用于權限數據存儲,構建去中心化的個人數據接入控制模型;Bao 等[63]利用區塊鏈高效認證和管理用戶標識,保護車主的身份、位置、車輛信息等個人數據。
邊緣計算是一種將計算、存儲、網絡資源從云平臺遷移到網絡邊緣的分布式信息服務架構,試圖將傳統移動通信網、互聯網和物聯網等業務進行深度融合,減少業務交付的端到端時延,提升用戶體驗。安全問題是邊緣計算面臨的一大技術挑戰,一方面,邊緣計算的層次結構中利用大量異構終端設備提供用戶服務,這些設備可能產生惡意行為;另一方面,服務遷移過程中的數據完整性和真實性需要得到保障。區塊鏈在這種復雜的工作環境和開放的服務架構中能起到較大作用。首先,區塊鏈能夠在邊緣計算底層松散的設備網絡中構建不可篡改的賬本,提供設備身份和服務數據驗證的依據。其次,設備能在智能合約的幫助下實現高度自治,為邊緣計算提供設備可信互操作基礎。Samaniego 等[64]提出了一種基于區塊鏈的虛擬物聯網資源遷移架構,通過區塊鏈共享資源數據從而保障安全性。Stanciu[65]結合軟件定義網絡(SDN)、霧計算和區塊鏈技術提出分布式安全云架構,解決霧節點中SDN 控制器流表策略的安全分發問題。Ziegler 等[66]基于Plasma 框架提出霧計算場景下的區塊鏈可擴展應用方案,提升霧計算網關的安全性。
人工智能是一類智能代理的研究,使機器感知環境/信息,然后進行正確的行為決策,正確是指達成人類預定的某些目標。人工智能的關鍵在于算法,而大部分機器學習和深度學習算法建立于體積龐大的數據集和中心化的訓練模型之上,該方式易受攻擊或惡意操作使數據遭到篡改,其后果為模型的不可信與算力的浪費。此外,數據采集過程中無法確保下游設備的安全性,無法保證數據來源的真實性與完整性,其后果將在自動駕駛等場景中被放大。區塊鏈不可篡改的特性可以實現感知和訓練過程的可信。另外,去中心化和合約自治特性為人工智能訓練工作的分解和下放奠定了基礎,保障安全的基礎上提高計算效率。Kim 等[67]利用區塊鏈驗證聯合學習框架下的分發模型的完整性,并根據計算成本提供相應的激勵,優化整體學習效果。Bravo-Marquez 等[68]提出共識機制“學習證明”以減輕PoX 類共識的計算浪費,構建公共可驗證的學習模型和實驗數據庫。
區塊鏈存在“三元悖論”——安全性、擴展性和去中心化三者不可兼得,只能依靠犧牲一方的效果來滿足另外兩方的需求。以比特幣為代表的公鏈具有較高的安全性和完全去中心化的特點,但是資源浪費等問題成為拓展性優化的瓶頸。盡管先后出現了PoS、BFT 等共識協議優化方案,或側鏈、分片等鏈上處理模型,或Plasma、閃電網絡等鏈下擴展方案,皆是以部分安全性或去中心化為代價的。因此,如何將區塊鏈更好地推向實際應用很大程度取決于三元悖論的解決,其中主要有2 種思路。
1)層次優化
區塊鏈層次化結構中每層都不同程度地影響上述3 種特性,例如網絡時延、并行讀寫效率、共識速度和效果、鏈上/鏈下模型交互機制的安全性等,對區塊鏈的優化應當從整體考慮,而不是單一層次。
網絡層主要缺陷在于安全性,可拓展性則有待優化。如何防御以BGP 劫持為代表的網絡攻擊將成為區塊鏈底層網絡的安全研究方向[19]。信息中心網絡將重塑區塊鏈基礎傳輸網絡,通過請求聚合和數據緩存減少網內冗余流量并加速通信傳輸[69]。相比于數據層和共識層,區塊鏈網絡的關注度較低,但卻是影響安全性、可拓展性的基本因素。
數據層的優化空間在于高效性,主要為設計新的數據驗證結構與算法。該方向可以借鑒計算機研究領域的多種數據結構理論與復雜度優化方法,尋找適合區塊鏈計算方式的結構,甚至設計新的數據關聯結構。實際上相當一部分項目借鑒鏈式結構的思想開辟新的道路,例如壓縮區塊空間的隔離見證、有向無環圖(DAG)中并行關聯的糾纏結構(Tangle),或者Libra 項目采用的狀態樹。
共識機制是目前研究的熱點,也是同時影響三元特性的最難均衡的層次。PoW 犧牲可拓展性獲得完全去中心化和安全性,PoS 高效的出塊方式具備可擴展性但產生了分叉問題,POA 結合兩者做到了3 種特性的均衡。以此為切入的Hybrid 類共識配合獎懲機制的機動調節取得了較好效果,成為共識研究的過渡手段,但是如何做到三元悖論的真正突破還有待研究。
控制層面是目前可擴展性研究的熱點,其優勢在于不需要改變底層的基礎實現,能夠在短期內應用,集中在產業界的區塊鏈項目中。側鏈具有較好的靈活性但操作復雜度高,分片改進了賬本結構但跨分片交互的安全問題始終存在,而鏈下處理模型在安全方面缺少理論分析的支撐。因此,三元悖論的解決在控制層面具有廣泛的研究前景。
2)深度融合
如果將層次優化稱為橫向優化,那么深度融合即為根據場景需求而進行的縱向優化。一方面,不同場景的三元需求并不相同,例如接入控制不要求完全去中心化,可擴展性也未遇到瓶頸,因此可采用BFT 類算法在小范圍構建聯盟鏈。另一方面,區塊鏈應用研究從簡單的數據上鏈轉變為鏈下存儲、鏈上驗證,共識算法從PoW 轉變為場景結合的服務證明和學習證明,此外,結合5G 和邊緣計算可將網絡和計算功能移至網絡邊緣,節約終端資源。這意味著在嚴格的場景建模下,區塊鏈的層次技術選型將與場景特點交叉創新、深度融合,具有較為廣闊的研究前景。
加密貨幣以匿名性著稱,但是區塊鏈以非對稱加密為基礎的匿名體系不斷受到挑戰。反匿名攻擊從身份的解密轉變為行為的聚類分析,不僅包括網絡流量的IP 聚類,還包括交易數據的地址聚類、交易行為的啟發式模型學習,因此大數據分析技術的發展使區塊鏈隱私保護思路發生轉變。已有Tor 網絡、混幣技術、零知識證明、同態加密以及各類復雜度更高的非對稱加密算法被提出,但是各方法仍有局限,未來將需要更為高效的方法。此外,隨著區塊鏈系統的可編程化發展,內部復雜性將越來越高,特別是智能合約需要更嚴格、有效的代碼檢測方法,例如匿名性檢測、隱私威脅預警等。
工業區塊鏈是指利用區塊鏈夯實工業互聯網中數據的流通和管控基礎、促進價值轉換的應用場景,具有較大的研究前景。
工業互聯網是面向制造業數字化、網絡化、智能化需求,構建基于海量數據采集、匯聚、分析的服務體系,支撐制造資源泛在連接、彈性供給、高效配置的重要基礎設施?!肮I互聯網平臺”是工業互聯網的核心,通過全面感知、實時分析、科學決策、精準執行的邏輯閉環,實現工業全要素、全產業鏈、全價值鏈的全面貫通,培育新的模式和業態。
可以看到,工業互聯網與物聯網、智慧城市、消費互聯網等場景應用存在內在關聯,例如泛在連接、數據共享和分析、電子商務等,那么其學術問題與技術實現必然存在關聯性。區塊鏈解決了物聯網中心管控架構的單點故障問題,克服泛在感知設備數據的安全性和隱私性挑戰,為智慧城市場景的數據共享、接入控制等問題提供解決方法,為激勵資源共享構建了新型互聯網價值生態。盡管工業互聯網作為新型的產業生態系統,其技術體系更復雜、內涵更豐富,但是不難想象,區塊鏈同樣有利于工業互聯網的發展。
“平臺+區塊鏈”能夠通過分布式數據管理模式,降低數據存儲、處理、使用的管理成本,為工業用戶在工業APP 選擇和使用方面搭建起更加可信的環境,實現身份認證及操作行為追溯、數據安全存儲與可靠傳遞。能夠通過產品設計參數、質量檢測結果、訂單信息等數據“上鏈”,實現有效的供應鏈全要素追溯與協同服務。能夠促進平臺間數據交易與業務協同,實現跨平臺交易結算,帶動平臺間的數據共享與知識復用,促進工業互聯網平臺間互聯互通。
當然,工業是關乎國計民生的產業,將區塊鏈去中心化、匿名化等特性直接用于工業互聯網是不可取的,因此需要研究工業區塊鏈管理框架,實現區塊鏈的可管可控,在一定范圍內發揮其安全優勢,并對工業互聯網的運轉提供正向激勵。
區塊鏈基于多類技術研究的成果,以低成本解決了多組織參與的復雜生產環境中的信任構建和隱私保護等問題,在金融、教育、娛樂、版權保護等場景得到了較多應用,成為學術界的研究熱點。比特幣的出現重塑了人們對價值的定義,伴隨著產業界的呼聲,區塊鏈技術得到了快速發展,而遵循區塊鏈層次化分析方法,能夠直觀地區別各項目的技術路線和特點,為優化區塊鏈技術提供不同觀察視角,并為場景應用的深度融合創造條件,促進后續研究。未來的發展中,區塊鏈將成為更為基礎的信任支撐技術,在產業互聯網等更廣闊的領域健康、有序地發展。