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