文 攀,王 濤,朱宇坤,陳瑞東
(1.電子科技大學,四川 成都 611731; 2.中國電子科技集團公司第五十四研究所,河北 石家莊 050081)
區 塊 鏈(Blockchain)[1]技 術 作 為 繼 云 計 算、物聯網、大數據、人工智能之后的又一項具有重大影響的技術,在金融、物流等領域已得到廣泛推廣,顯現出廣闊的應用前景。但在現實應用場景中,企業往往會基于自身的業務場景,而采用不同的區塊鏈平臺。這些業務往往需要與其他的業務進行交互,而不同的區塊鏈平臺所采用的共識算法往往是不同的,這就造成了區塊鏈平臺之間不能相互信任的問題。所以如何實現各種區塊鏈底層的互聯互通成為整個區塊鏈生態發展的極大挑戰。
早在2016年,以太坊的創始人Vitalik Buterin就針對跨鏈技術,總結出了三類跨鏈技術實現方式[2]——公證人機制、側鏈中繼鏈和哈希鎖定。之后隨著人們對跨鏈技術的深入研究,誕生出第4種跨鏈技術:分布式私鑰控制技術。此后,國內外跨鏈技術的研究,大多數都是圍繞這4種技術。而本文擬采用側鏈中繼鏈的方式,再通過文中設計的技術架構以及適配協議實現異構聯盟鏈之間的智能合約交互,讓兩異構聯盟鏈的互操作性成為一種可能。
跨鏈技術(Cross-chain Technology)[3],意圖突破鏈與鏈之間的信任障礙,使鏈與鏈之間具備進行相互操作的業務交易能力。跨鏈技術主要解決的問題有以下4點:
① 鏈間資產安全轉移。現階段的跨鏈資產轉移主要依靠第三方的中心化交易所,資產的安全性完全取決于第三方的中心化交易所。跨鏈技術利用技術手段來確保資產的安全,而不是依靠第三方的機構或人。
② 實現資產的鏈上凍結。類似于現實中金融行業的資產凍結,跨鏈技術提供一種在鏈上凍結資產的方式。
③ 跨鏈可信交互。不同的業務可能會使用各個平臺的智能合約,而不同的業務之間,又有可能會有關聯信息交互。跨鏈技術為基于異構區塊鏈底層之間的業務交互提供了置信可能。
④ 提升區塊鏈的應用可擴展性。區塊鏈的吞吐量以及可擴展性一直以來都是區塊鏈的性能瓶頸[4],而跨鏈技術是區塊鏈鏈間擴展業務模式和跨域業務信息可信交互的重要技術支撐。
目前,跨鏈技術主要有3個亟需解決的難題。一是保證跨鏈交易滿足原子交換[5]:即雙方的交易要么同時發生,要么同時不發生,二者是一個整體不可分割;二是跨鏈信任關系傳遞實現比較困難:跨鏈涉及到鏈與鏈之間的價值流動,同時又不能改變原鏈特性,因此跨鏈需要根據原鏈的相關特性進行適配性開發[6];三是交易速度提升:隨著區塊鏈技術的發展,跨鏈的需求會越來越強烈,但是目前的跨鏈技術很難滿足大規模的跨鏈交易。
現今的跨鏈技研究中,大多數的跨鏈項目用于解決鏈之間資產的轉移以及凍結等方面的問題。對于跨鏈智能合約的安全交互方面,研究相對較少。本文針對跨鏈智能合約的可信交互問題,基于中繼鏈的技術,提出一種適用于異構聯盟鏈的智能合約安全交互框架。
目前主流的跨鏈技術有4種,分別是公證人機制、側鏈中繼鏈機制、哈希鎖定技術以及分布式私鑰控制技術。從鏈之間的互操作性、信任模型、交易速度、跨鏈資產抵押以及實現難度等多方面進行分析,得出結果如表1所示。
表1 主流跨鏈技術對比
本文采用中繼鏈的方式主要基于以下三點原因:
① 安全性:公證人機制的安全性完全取決于跨鏈雙方共同信任的第三方,如果第三方作惡,跨鏈的安全性完全得不到保障。
② 實現難度:哈希鎖定以及分布式私鑰控制技術主要用于解決跨鏈資產轉移或者是凍結,要使用這兩種技術實現跨鏈智能合約的安全交互,實現難度非常困難。
針對目前異構聯盟鏈之間的交互困難,本文提出一種適用于異構聯盟鏈底層平臺的跨鏈模型,模型構建如圖1所示。
圖1 系統模型Fig.1 System mode
定義1 本文異構聯盟鏈的跨鏈模型(Cross-chain Model for Heterogeneous Alliance Chains,HAC-CCM)的最小五元組為HAC-CCM=(Ca,Pa-r,Cr,Pr-b,Cb)。式中,Ca為業務A所采用的聯盟鏈底層平臺A;Pa-r為連通聯盟鏈A與Cr的平行鏈;Cr為間接連接兩異構區塊鏈的中繼鏈;Pr-b為連接中繼鏈Cr與Cb的平行鏈;Cb為業務B所采用的聯盟鏈底層平臺B。其中,聯盟鏈底層平臺可以任意增加,為了避免聯盟鏈底層平臺通過平行鏈進行兩兩交互的復雜度出現組合級別的增加,在HAC-CCM中引入了中繼鏈,所有的平行鏈都通過中繼鏈Cr進行交互。
定義2 本模型需要構建原鏈與中繼鏈之間的平行鏈P,P=(Ca,Si,PR,Td),其中Si為智能合約集,智能合約集主要包含兩個智能合約S1和S2。其中S1是代理合約,S2是注冊合約;PR是一個輕客戶端,其作用是接收對方區塊頭的信息,以便于執行類似于SPV驗證;Td是開源的Tendermint[13]共識算法,平行鏈與中繼鏈采用相同的Tendermint共識算法,便于交互。
定義3 本模型中的中繼鏈Cr,Cr=(Td),Td是與平行鏈系相同的共識算法。
模型中,首先在平行鏈中集成對應聯盟鏈模塊,平行鏈就能與聯盟鏈進行交互。同時,通過平行鏈中設置處理聯盟鏈跨鏈請求的智能合約。由于區塊鏈是用于多主機狀態機復制的系統。區塊鏈接口(ABCI[14])定義了復制引擎(區塊鏈)和狀態機(應用程序)之間的邊界。使用套接字協議,在一個進程中運行的共識引擎可以管理在另一個進程中運行的應用程序狀態。在此利用ABCI接口協議可以方便平行鏈中集成的聯盟鏈模塊與Tendermint共識進程進行連接。
在HAC-CCM的運行過程中,中繼鏈與平行鏈之間的信息交互過程也較為重要。中繼鏈需要轉發平行傳來的跨鏈請求以及請求對應的簡單證明數據。
為了實現異構聯盟鏈中智能合約的交互,設計如圖2所示的系統架構。
圖2 系統架構Fig.2 System Structure
除去最下面的異構聯盟鏈的底層平臺,本系統分為3層:接口層、傳輸層和驗證層。為了降低跨鏈系統對原有系統的修改,設計了接口層,以實現系統的“非侵入式”開發。在接口層中主要有兩個接口:智能合約接口和ABCI接口。其中智能合約接口對跨鏈智能合約調用進行統一規范;而ABCI接口用于規范跨鏈信息交換的規范。傳輸層包含兩個協議:Gossip和grpc協議。其中Gossip協議用于平行鏈和中繼鏈節點間的通信,而grps協議用于消息的訂閱與廣播。驗證層也包含兩個模塊:Merkle-Tree驗證和身份驗證。Merkle-Tree結構可以快速歸納和校驗跨鏈交易區塊數據的完整性[15],身份認證用于驗證用戶身份,以確認用戶是否有權限調用智能合約。
不同的業務可能有不同的智能合約,為了能夠統一調用異構聯盟鏈中的智能合約,本文設計了統一的智能合約調用接口。使得用戶在調用異構聯盟鏈的智能合約時無需關注其具體使用的語言以及聯盟鏈底層架構,只需要傳入相應的參數,經過統一的處理之后獲取調用返回值。具體接口功能如表2所示。
表2 智能合約集接口描述表
智能合約調用接口,偽代碼如下所示。
智能合約集接口type SmartCode interface{∥只讀調用func Get(args string)∥讀寫調用func Set(args string) string∥注冊事件回調func Register(callback EventCallback)}
ABCI接口規定的函數接口非常多,但是主要需要實現的接口如表3所示。
表3 ABCI主要接口
系統引入Merkle樹結構,以便可以對交易信息的完整性和真實性進行快速校驗。當交易信息在進行跨鏈操作時,由于區塊鏈系統的封閉性,不能對其他區塊鏈的交易信息進行校驗,利用Merkle樹對其他鏈的交易進行校驗,可以保證傳入區塊鏈數據的正確性,保障整個系統的狀態始終處于正確狀態。
假設,使用Fabric的組織A需查詢位于FISCO BCOS上面的數據。以單邊交互為例,跨鏈交互的過程如圖3所示。
圖3 模擬跨鏈交互過程 Fig.3 Simulate Cross-chain Interaction Process
① 首先A調用Fabric上的智能合約,并進行鑒權;
② 通過Fabric 上的智能合約調用平行鏈A中的注冊智能合約,發送請求數據以及相應的交易證明;
③ 將請求信息以及相應的交易證明存儲到任務隊列;
④ 通過ABCI將Fabric中的請求及相應證明共識轉換到Tendermint共識系統中;
⑤ 平行鏈A傳輸經過Tendermint共識的請求及相應的證明;
⑥ 中繼鏈接收到的請求及相應的證明進行安全路由;
⑦ 向平行鏈B轉發請求及相應的證明;
⑧ 當平行鏈B接收到請求以及相應的證明之后,通過SPV輕客戶端對請求進行驗證,如果通過則進入步驟⑨,否則不處理;
⑨ 通過ABCI接口將Tendermint中的共識消息,轉換到中繼鏈B中的FISCO BCOS系統中;
⑩ 將收到的請求信息,作為參數傳入中繼鏈中的代理合約;
本文的測試的軟硬件環境如表4所示。
表4 軟硬件測試環境
本模型系統的性能,可以通過統計系統每秒處理的調用請求數量進行衡量。在測試過程中,以10次/s調用為步長進行增加,確定其交易所需要的時間。本次通過FISCO BCOS聯盟鏈調用Fabric的Fabcar智能合約,利用其提供的函數通過CarID查詢汽車的相關信息進行測試,得到圖4所示的結果。
圖4 調用處理時間Fig.4 Call processing time
從圖4可以看出,系統處理異構聯盟鏈的極限大致在100次/s。經過分析發現系統性能的主要是受到Tendermint共識效率以及根據ABCI接口進行共識轉化的影響。由于整個系統在一臺計算機上模擬進行,網絡條件較好,沒有涉及到網絡阻塞情況對系統的吞吐率的影響。同時,在模擬運行時CUP的使用率幾乎達到100%,可能會對系統的處理效率有較大的影響。
本文通過在區塊鏈網絡中引入中繼鏈,以及設計平行鏈的方式,構建了一種適用于異構聯盟鏈間的交互模型。本模型與其他跨鏈項目區別在于能夠實現異構聯盟鏈之間智能合約的相互調用交互,而其他模型基于中繼鏈的解決方案主要是解決跨鏈資產的轉移。本模型還處于初步探索階段,對于其安全性還未進行有效分析和驗證。同時,模型處理交互請求的效率以及吞吐量等也有待在后續的工作中進一步優化,希望今后在此方面與更多的學者一起共同努力。