雷志偉 朱 義 張 健 郭涑煒
(清華大學(xué)北京信息科學(xué)與技術(shù)國家研究中心 北京 100084)
2019年10月24日,習(xí)近平總書記在中共中央政治局第十八次集體學(xué)習(xí)時(shí)強(qiáng)調(diào)了區(qū)塊鏈技術(shù)的重要性和必要性[1]。在金融領(lǐng)域通過區(qū)塊鏈在托管人和客戶之間的賬簿分錄傳輸層創(chuàng)建一個(gè)全球統(tǒng)一的平臺(tái),則能夠大幅度提升結(jié)算效率[2]。國際掉期與衍生工具協(xié)會(huì)ISDA(Internat-ional Swaps and Derivatives Association)則借助一種區(qū)塊鏈DAML(Digital Asset Modeling Language)智能合約語言實(shí)現(xiàn)了交易數(shù)據(jù)的存儲(chǔ)[3]。
區(qū)塊鏈廣泛受到各行業(yè)和各互聯(lián)網(wǎng)公司的重視。比如亞馬遜配備區(qū)塊鏈數(shù)據(jù)副本數(shù)據(jù)庫Amazon Quantum Ledger Database(QLDB),該數(shù)據(jù)庫可用于跟蹤每次的應(yīng)用程序數(shù)據(jù)更改,并不斷維護(hù)完整且可驗(yàn)證的更改歷史記錄[4]。隨著區(qū)塊鏈業(yè)務(wù)的日益擴(kuò)大,必然存在涉及到兩條或多條區(qū)塊鏈之間的數(shù)據(jù)交互跨鏈需求。本文對(duì)相關(guān)區(qū)塊鏈跨鏈平臺(tái)作了調(diào)研,對(duì)其核心技術(shù)和功能作了分析和設(shè)計(jì)。
智能合約本質(zhì)是附加在交易上的可執(zhí)行代碼,它通過預(yù)言機(jī)技術(shù)來實(shí)現(xiàn)與現(xiàn)實(shí)世界的數(shù)據(jù)交互。預(yù)言機(jī)的分類,根據(jù)數(shù)據(jù)的輸入方向,入站預(yù)言(Inbound Oracles)允許網(wǎng)絡(luò)從外部數(shù)據(jù)源向智能合約發(fā)送信息,出站預(yù)言機(jī)(Outbound Oracles)允許智能合約向外部數(shù)據(jù)源發(fā)送數(shù)據(jù)[5]。蔡維德認(rèn)為預(yù)言機(jī)系統(tǒng)設(shè)計(jì)有兩個(gè)需求,一個(gè)是保證數(shù)據(jù)的可靠性,另外一個(gè)是監(jiān)管性和隱私性,這里面監(jiān)管性和隱私性是兩個(gè)相互矛盾的性質(zhì)。強(qiáng)監(jiān)管性必然導(dǎo)致弱隱私性,而強(qiáng)隱私性必然弱化監(jiān)管[6]。
另外。由于網(wǎng)絡(luò)、節(jié)點(diǎn)處理速度等原因,各節(jié)點(diǎn)直接獲取外界數(shù)據(jù)時(shí)可能會(huì)有偏差,從而造成結(jié)果不同,一種穩(wěn)定可靠的解決方案是通過發(fā)送一筆區(qū)塊鏈交易,交易中附加需要的數(shù)據(jù),智能合約通過回調(diào)函數(shù)獲取數(shù)據(jù)并同步到每個(gè)節(jié)點(diǎn),從而保證數(shù)據(jù)的完全一致。圖1的智能合約與預(yù)言機(jī)的通信過程[7]也是采用此機(jī)制。
圖1 智能合約與預(yù)言機(jī)的通信過程
針對(duì)區(qū)塊鏈?zhǔn)欠癫捎猛坏讓訁f(xié)議,跨鏈分為同構(gòu)區(qū)塊鏈和異構(gòu)區(qū)塊鏈。底層協(xié)議主要包括安全機(jī)制、共識(shí)算法、區(qū)塊生成驗(yàn)證等底層邏輯。正如交易在單個(gè)區(qū)塊鏈上有回滾的可能性,需要配套補(bǔ)償機(jī)制以確保交易完備性[8],跨鏈技術(shù)主要的挑戰(zhàn)為跨鏈?zhǔn)聞?wù)原子性,需要保證跨鏈交易的任意一方未生效,另一方可以及時(shí)回滾;同時(shí)還需要設(shè)計(jì)一套完整的尋址協(xié)議來解決跨鏈定位并執(zhí)行相關(guān)操作。
目前,國際上使用的主要技術(shù)有三大類:公證人機(jī)制(Notary Schemes)引入一個(gè)共同信任的第三方作為中介,由這個(gè)共同信任的中介進(jìn)行的驗(yàn)證和轉(zhuǎn)發(fā)。其優(yōu)點(diǎn)是靈活地支持各種不同結(jié)構(gòu)的區(qū)塊鏈[9]。公證人機(jī)制按模式分為單簽名公證人、多簽名公證人和分布式簽名公證人。單簽名公證人模式存在中心化問題,多方簽名需要每條鏈均支持多重簽名。分布式簽名公證人模式基于多方計(jì)算安全性更高,實(shí)現(xiàn)難度更大[10]。公證人角色在金融領(lǐng)域里好比CCP(Central Cou-nterparties)中央對(duì)手方。中央對(duì)手方是每一個(gè)賣方的買方和每一個(gè)買方的賣方,如果有一方交易對(duì)手違約,也能夠確保交易的正確完成[11]。
哈希時(shí)間鎖定合約HTLC(Hashed TimeLock Contract)最早出現(xiàn)在比特幣的閃電網(wǎng)絡(luò),采用哈希鎖和時(shí)間鎖技術(shù)。所謂哈希鎖既是一種基于哈希運(yùn)算的證明方式。資產(chǎn)的接收方需要在規(guī)定時(shí)間內(nèi)確定收款并產(chǎn)生一種收款證明給打款人,否則資產(chǎn)會(huì)歸還給打款人[12]。側(cè)鏈(Sidechains)是相對(duì)于主鏈的另外一條區(qū)塊鏈,通過雙向錨定技術(shù)(Two-way Peg),先將數(shù)字貨幣在主鏈中鎖定,同時(shí)將等價(jià)的數(shù)字資產(chǎn)在側(cè)鏈中轉(zhuǎn)移。側(cè)鏈常用的實(shí)現(xiàn)方式是SPV(Sim-plified Payment Verification)簡單支付驗(yàn)證模式,不用下載全部區(qū)塊數(shù)據(jù),僅通過驗(yàn)證部分交易來完成驗(yàn)證功能。BTC-Relay[13]基于以太坊的智能合約可安全驗(yàn)證比特幣的交易,其核心原理是在智能合約里保存一份輕量的比特幣交易數(shù)據(jù)。
圖2 是基于BTC-Relay側(cè)鏈的一個(gè)跨鏈轉(zhuǎn)賬的交易流程。Step1為Bob發(fā)送50ETH到BTCSwap合約進(jìn)行凍結(jié);Step2為Alice確認(rèn)Bob凍結(jié)信息后,將1BTC轉(zhuǎn)到Bob比特幣賬戶;Step3為BTC-Relay同步最新區(qū)塊頭數(shù)據(jù);Step4為BTC-Relay將最新比特幣區(qū)塊頭推送到BTCSwap合約;Step5為Alice將自己轉(zhuǎn)BTC給Bob的交易tx發(fā)給合約BTCSwap合約,請(qǐng)求50ETH;Step6為BTCSwap合約結(jié)合tx和區(qū)塊鏈數(shù)據(jù)進(jìn)行SPV驗(yàn)證,驗(yàn)證通過則將50ETH轉(zhuǎn)到Alice的以太坊地址。
圖2 BTC-Relay跨鏈交易流程
區(qū)塊鏈即服務(wù)BaaS(Blockchain as a Service,BaaS)平臺(tái)是為區(qū)塊鏈應(yīng)用開發(fā)者提供區(qū)塊鏈服務(wù)能力的平臺(tái),用來幫助用戶和企業(yè)創(chuàng)建、管理和維護(hù)區(qū)塊鏈業(yè)務(wù)。在國外,三星Nexledger平臺(tái)提供了一種數(shù)字簽章解決方案實(shí)現(xiàn)了客戶的身份認(rèn)證[14]。索尼區(qū)塊鏈通用數(shù)據(jù)庫移動(dòng)服務(wù)[15]面向交通運(yùn)輸并基于索尼的IC卡技術(shù)開發(fā)了一種非接觸式IC卡類型的“虛擬貨幣硬件錢包技術(shù)”。
在國內(nèi),天德鏈TDBC平臺(tái)內(nèi)置了常見業(yè)務(wù)場(chǎng)景的智能合約模板,用戶或應(yīng)用可根據(jù)具體需求,通過配置合約的初始化參數(shù)直接創(chuàng)建個(gè)性化智能合約[16]。招商銀行ABS區(qū)塊鏈平臺(tái)特色之一是隱私保護(hù),自動(dòng)清算過程中會(huì)對(duì)報(bào)文進(jìn)行加解密。另外基于分布式清算機(jī)制,報(bào)文解析后會(huì)進(jìn)行一個(gè)匯總,之后再將數(shù)據(jù)存儲(chǔ)到區(qū)塊鏈系統(tǒng)上,同時(shí)清算行得到數(shù)據(jù)并提交給總行匯總[17]。華大BGI區(qū)塊鏈通過個(gè)人基因ID技術(shù),解決區(qū)塊鏈技術(shù)中的數(shù)字身份無法安全關(guān)聯(lián)個(gè)人實(shí)體身份的問題[18]。
在圖3所示的區(qū)塊鏈BaaS系統(tǒng)架構(gòu)中,平臺(tái)包括區(qū)塊鏈核心、安全管理、運(yùn)營管理等多個(gè)模塊,針對(duì)前端應(yīng)用開發(fā)區(qū)塊鏈瀏覽器、合約IDE等客戶端工具,接入SDK支持GO、JAVA、JavaScript和Python等多種語言,底層以可插拔插件方式支持LevelDB、MySQL和RocketsDB和CouchDB等多種數(shù)據(jù)庫。通過簡單易用、成熟可擴(kuò)展和安全可靠的可視化運(yùn)維服務(wù),滿足區(qū)塊鏈開發(fā)者快速部署和高效開發(fā)的需求。
圖3 區(qū)塊鏈BasS系統(tǒng)架構(gòu)
在基于“主鏈+平行鏈”的跨鏈平臺(tái)的設(shè)計(jì)中,主鏈交易只做共識(shí)和存儲(chǔ),運(yùn)行一些基礎(chǔ)核心的合約。平行鏈依附于主鏈,共享主鏈的共識(shí)網(wǎng)絡(luò),通過GRPC或其他網(wǎng)絡(luò)協(xié)議接口同主鏈節(jié)點(diǎn)相連。實(shí)際的交易都在平行鏈上執(zhí)行,平行鏈各自執(zhí)行自己的交易,互不干擾。通過多條平行鏈共存,實(shí)現(xiàn)了交易的并行執(zhí)行。
中繼鏈(Relay chain)是公證人機(jī)制和側(cè)鏈機(jī)制的融合和擴(kuò)展。中繼鏈不從屬于某條區(qū)塊鏈,而是一個(gè)調(diào)度中心和通信樞紐,負(fù)責(zé)數(shù)據(jù)傳遞用來提供統(tǒng)一的共識(shí)和安全保障。
波卡(Polkadot)是一種集成平行鏈和中繼鏈的多層多鏈架構(gòu),其橋接鏈(Bridges)幫助第三方鏈接入系統(tǒng)[19]。Cosmos公鏈將節(jié)點(diǎn)功能分成Tendermint Core和應(yīng)用程序兩個(gè)部分,兩者之間使用特定通信協(xié)議進(jìn)行數(shù)據(jù)傳遞。前者負(fù)責(zé)在節(jié)點(diǎn)之間共享區(qū)塊和交易并對(duì)交易排序,后者負(fù)責(zé)賬本數(shù)據(jù)存儲(chǔ)。第三方鏈基于Tendermint SDK實(shí)現(xiàn)預(yù)定義好的區(qū)塊鏈接口以加入平臺(tái)[20]。
微眾銀行WeCross底層支持Hyperledger Fabric和自研鏈FISCO BCOS[21],趣鏈BitXHub平臺(tái)處理一筆系統(tǒng)合約需要30ms,處理一筆跨鏈交易平均延遲大于230ms[22]。百度XChain可信跨鏈平臺(tái)將可信中繼與可信計(jì)算技術(shù)進(jìn)行集成并內(nèi)置了TEE[23]。紙貴科技Zeus多鏈網(wǎng)絡(luò)是一種“一主鏈+N子鏈”架構(gòu),主鏈作為中繼鏈進(jìn)行子鏈間跨鏈通訊,主鏈?zhǔn)褂米匝蠥pollo共識(shí)算法,支持啟動(dòng)運(yùn)行不同邏輯的異構(gòu)子鏈,子鏈支持定制化實(shí)現(xiàn),并借助跨鏈通訊腳本Adapter在子鏈間完成跨鏈通訊[24]。螞蟻區(qū)塊鏈跨鏈服務(wù)特色在于支持賬本數(shù)據(jù)共享,另外其建立了一個(gè)統(tǒng)一區(qū)塊鏈域名模塊,每一個(gè)域名對(duì)應(yīng)一個(gè)私鑰,每一個(gè)應(yīng)用區(qū)塊鏈通過對(duì)應(yīng)一個(gè)域名獲得身份標(biāo)識(shí)[25]??挡┖?6]提出了一種基于組件式、模塊化設(shè)計(jì)的一種跨鏈通信服務(wù)框架,設(shè)計(jì)了一種三階段的事務(wù)提交驗(yàn)證機(jī)制。
華為BCS跨鏈方案具有跨鏈交易多方行為的一致性驗(yàn)證機(jī)制[27],仲裁節(jié)點(diǎn)可管理跨鏈交易驗(yàn)證結(jié)果。騰訊CCGP跨鏈平臺(tái)“以鏈治鏈”[28]。創(chuàng)世機(jī)構(gòu)持有“創(chuàng)世節(jié)點(diǎn)”承擔(dān)治理角色,其執(zhí)行創(chuàng)世合約部署管控、授權(quán)跨鏈業(yè)務(wù)方調(diào)用、協(xié)同治理等合約交易。業(yè)務(wù)方機(jī)構(gòu)經(jīng)過申請(qǐng)可成為“治理節(jié)點(diǎn)”。監(jiān)管審計(jì)機(jī)構(gòu)持有“審計(jì)節(jié)點(diǎn)”不參與共識(shí),可同步治理鏈上數(shù)據(jù)。
針對(duì)區(qū)塊鏈對(duì)合法性和監(jiān)管的需求,巫光福提出一種交易區(qū)塊鏈(TBC)和監(jiān)管區(qū)塊鏈(RBC)并行的雙鏈結(jié)構(gòu)區(qū)塊鏈監(jiān)管平臺(tái)。監(jiān)管區(qū)塊鏈提供智能合約,交易鏈根據(jù)智能合約的預(yù)定規(guī)則執(zhí)行交易。在交易鏈中,可以根據(jù)實(shí)際交易和智能合約組合更高效地去執(zhí)行交易[29]。為滿足KYC了解客戶(Know Your Customer)和AML反洗錢(Anti m-oney Laundering)規(guī)則,蔡維德提出一種熊貓區(qū)塊鏈模型,該模型將賬戶信息和交易信息分開,交易分成兩步操作,交易前可以確認(rèn)其合法性,交易后可以回滾和再次確認(rèn)交易[30]。進(jìn)而,為面向數(shù)字金融單位注冊(cè)和監(jiān)管服務(wù),蔡維德基于TRISA旅行規(guī)則信息共享架構(gòu)提出了一種新的架構(gòu),該架構(gòu)建設(shè)了一個(gè)區(qū)塊鏈數(shù)據(jù)湖(BDL)平臺(tái)用來備份存儲(chǔ)所有交易數(shù)據(jù)。BDL系統(tǒng)分為三種區(qū)塊鏈,個(gè)人賬戶鏈、交易數(shù)據(jù)鏈和映射信息鏈[31]。映射信息鏈用來存儲(chǔ)原始數(shù)據(jù)到新的區(qū)塊鏈數(shù)據(jù)的相關(guān)地址映射。
如圖4系統(tǒng)架構(gòu)所示,中繼鏈?zhǔn)且粋€(gè)跨鏈交易數(shù)據(jù)的分布式賬本,由于監(jiān)管需要,系統(tǒng)底層設(shè)計(jì)了監(jiān)管鏈用于跨鏈數(shù)據(jù)的溯源和存證。監(jiān)管鏈由賬戶信息鏈和交易數(shù)據(jù)鏈組成,賬戶信息鏈用來存儲(chǔ)用戶身份信息。交易數(shù)據(jù)鏈存儲(chǔ)了所有跨鏈交易以備監(jiān)管。由此,一方面可以對(duì)參與跨鏈的所有業(yè)務(wù)進(jìn)行異常行為和風(fēng)險(xiǎn)的審計(jì)服務(wù)。同時(shí)還可以進(jìn)行業(yè)務(wù)管控,既是執(zhí)行跨鏈交易的過程中,如果發(fā)現(xiàn)異常跨鏈治理業(yè)務(wù)可進(jìn)行限制處理。
圖4 系統(tǒng)架構(gòu)
平臺(tái)基于網(wǎng)關(guān)+中繼鏈的架構(gòu)模式實(shí)現(xiàn)異構(gòu)區(qū)塊鏈的跨鏈交互。在圖5所示的跨鏈網(wǎng)絡(luò)拓?fù)鋱D中,一個(gè)應(yīng)用鏈連接一個(gè)跨鏈網(wǎng)關(guān),并通過跨鏈網(wǎng)關(guān)與其他鏈完成跨鏈交易??珂溇W(wǎng)關(guān)通過跨鏈通信協(xié)議進(jìn)行數(shù)據(jù)傳遞。
圖5 跨鏈網(wǎng)絡(luò)拓?fù)?/p>
由于區(qū)塊鏈的架構(gòu)因鏈而異,為了適配不同區(qū)塊鏈的數(shù)據(jù)交互,每個(gè)接入平臺(tái)的應(yīng)用鏈需要提供一個(gè)適配器,其定義了一個(gè)統(tǒng)一的數(shù)據(jù)交互接口。為了模塊解耦,達(dá)到便捷接入的效果,設(shè)計(jì)了插件機(jī)制。每種應(yīng)用鏈配備相關(guān)鏈的插件,跨鏈網(wǎng)關(guān)通過接口與應(yīng)用鏈插件進(jìn)行數(shù)據(jù)通信,從而完成應(yīng)用鏈的跨鏈交易的監(jiān)聽、同步和執(zhí)行。
以太坊的ERC20標(biāo)準(zhǔn)統(tǒng)一了代幣協(xié)議和規(guī)范,符合標(biāo)準(zhǔn)的代幣可以被各種以太坊錢包支持。此標(biāo)準(zhǔn)定義了一系列的方法名稱和參數(shù),包括獲取代幣名稱、代幣總量、將代幣轉(zhuǎn)移等方法,并定義了代幣轉(zhuǎn)移觸發(fā)事件[32]。
系統(tǒng)設(shè)計(jì)了跨鏈的相關(guān)接口和事件,每種應(yīng)用鏈需要在其智能合約里面實(shí)現(xiàn)默認(rèn)接口。一方面要提供基于SPV輕節(jié)模式的交易驗(yàn)證接口,同時(shí)還需要跨鏈交易的接口,可以有兩個(gè),一個(gè)是發(fā)送跨鏈消息,一個(gè)是接收跨鏈消息。發(fā)送消息接口里面觸發(fā)跨鏈?zhǔn)录?/p>
比如發(fā)送跨鏈消息函數(shù)的參數(shù)可定義如下:
/*_destination:目標(biāo)區(qū)塊鏈名稱
*_receiver:接收消息的合約名稱
*_message:消息內(nèi)容*/
function sendMessage(string_destination,string_receiver,bytes_message);
接收跨鏈消息函數(shù)的參數(shù)可定義如下:
/*_source:來源區(qū)塊鏈名稱
*_sender:消息來源的合約名稱
*_message:消息內(nèi)容*/
function recvMessage(string_source,string_sender,bytes_message);
3.3.1 跨鏈網(wǎng)關(guān)
每個(gè)跨鏈網(wǎng)關(guān)節(jié)點(diǎn)運(yùn)行中繼鏈節(jié)點(diǎn),并運(yùn)行一個(gè)至多個(gè)應(yīng)用鏈插件。中繼鏈進(jìn)程與應(yīng)用鏈插件進(jìn)程使用socket進(jìn)行跨進(jìn)程通信,從而獲取應(yīng)用鏈的最新數(shù)據(jù)和狀態(tài)。每個(gè)跨鏈網(wǎng)關(guān)有一個(gè)輸入消息隊(duì)列和輸出消息隊(duì)列,輸入消息隊(duì)列用來接收跨鏈交易,輸出隊(duì)列用來發(fā)送跨鏈交易。在圖6所示的跨鏈網(wǎng)關(guān)圖中,跨鏈網(wǎng)關(guān)1支持應(yīng)用鏈A和應(yīng)用鏈B的跨鏈操作。
圖6 跨鏈網(wǎng)關(guān)
3.3.2 跨鏈交易流程
圖7 跨鏈通信流程
圖7 所示的跨鏈通信流程如下:
Step1.Alice調(diào)用應(yīng)用鏈A的合約方法;
Step2.合約方法被執(zhí)行,拋出跨鏈?zhǔn)录a;
Step3.應(yīng)用鏈A的跨鏈網(wǎng)關(guān)A監(jiān)聽到Ta,將其轉(zhuǎn)換成跨鏈消息,提交到中繼鏈;
Step4.中繼鏈依據(jù)相關(guān)規(guī)則對(duì)Ta進(jìn)行驗(yàn)證,并進(jìn)行路由轉(zhuǎn)發(fā)將消息發(fā)給跨鏈網(wǎng)關(guān)B;
Step5.跨鏈網(wǎng)關(guān)B接收到事件Ta并根據(jù)跨鏈消息進(jìn)行解析,轉(zhuǎn)換成應(yīng)用鏈B可識(shí)別的交易Tb,并將Tb提交到應(yīng)用鏈B上進(jìn)行執(zhí)行。
為解決數(shù)據(jù)安全問題,跨鏈網(wǎng)關(guān)在發(fā)送消息時(shí)可以使用對(duì)方的公鑰進(jìn)行加密。
3.3.3 跨鏈通信協(xié)議
跨鏈通信協(xié)議可借鑒傳輸層的TCP協(xié)議,實(shí)現(xiàn)面向連接的、可靠的跨鏈消息傳輸。跨鏈數(shù)據(jù)包的主要內(nèi)容為
type Packet struct{
SrcID string;//來源鏈ID
SrcSmart string;//來源鏈的合約名稱
SrcFunc string;//來源鏈的接口名稱
SrcSig string;//來源鏈簽名
GateSig string;//網(wǎng)關(guān)簽名
DstID string;//目標(biāo)鏈ID
DstSmart string;//目標(biāo)鏈的合約名稱
DstFunc string;//目標(biāo)鏈的接口名稱
Timestamp uint64;//時(shí)間戳
}
協(xié)議URI的語法可以定義為
[chainType]://[chainName]/[options]。“chain-Type”表示目標(biāo)鏈類型,“chainName”表示目標(biāo)鏈名字?!皁ptions”值可以為“l(fā)ang”或“contract_name”,前者表示目標(biāo)鏈合約語言,后者可表示目標(biāo)鏈合約名稱。比 如“Fabric://chain1?lang=wasm&contract_name=test”表示目標(biāo)鏈?zhǔn)荈abric、合約語言為wasm的名稱為test的智能合約。
3.3.4 跨鏈交易驗(yàn)證
交易驗(yàn)證包括驗(yàn)證交易的存在性和有效性,即是對(duì)交易憑證相關(guān)的用戶身份和節(jié)點(diǎn)身份包括來源鏈數(shù)字簽名、跨鏈網(wǎng)關(guān)簽名、跨鏈交互中的權(quán)限判斷等數(shù)據(jù)進(jìn)行安全判斷,確??珂湐?shù)據(jù)的可信和不可篡改。
3.3.5 事務(wù)管理
跨鏈的事務(wù)管理分為兩個(gè)子問題,即交易的最終確定性問題和交易的原子性問題。交易的原子性是跨鏈交易的基本要求和解決的難點(diǎn)[33]。
跨鏈網(wǎng)關(guān)在查詢到事務(wù)存在失敗或異常情況時(shí),必須停止本次跨鏈操作,并補(bǔ)齊事務(wù),可采用基于心跳抖動(dòng)的自動(dòng)補(bǔ)償或人工干預(yù)等多種補(bǔ)償處理方式,比如可以增加一個(gè)事務(wù)撤銷的合約接口,通過調(diào)用應(yīng)用鏈的該接口實(shí)現(xiàn)事務(wù)一致性。補(bǔ)償操作過程中,需要將最新的事務(wù)處理結(jié)果同步到中繼鏈中。
跨鏈服務(wù)主要包括對(duì)應(yīng)用鏈的管理,包括注冊(cè)、更新、審核和注銷等操作。用戶在后臺(tái)填寫資料進(jìn)行注冊(cè),并填寫跨鏈接口信息、跨鏈網(wǎng)關(guān)節(jié)點(diǎn)、智能合約類型和合約名稱等信息。平臺(tái)采用管理員人工審查和建立智能合約沙盒測(cè)試混合模式,管理員負(fù)責(zé)應(yīng)用鏈審核、更新操作,同時(shí)維護(hù)跨鏈網(wǎng)關(guān)。應(yīng)用鏈在加入中繼鏈之前,需要對(duì)其他鏈進(jìn)行跨鏈?zhǔn)跈?quán)操作,并由系統(tǒng)生成公私鑰對(duì)或者注冊(cè)時(shí)攜帶公鑰信息以具備簽名和加密功能。
中繼鏈?zhǔn)且粋€(gè)單獨(dú)的區(qū)塊鏈,用來記錄跨鏈交易數(shù)據(jù),它包含區(qū)塊鏈共識(shí)算法、P2P網(wǎng)絡(luò)、交易緩存池和消息隊(duì)列等模塊,其單個(gè)交易的數(shù)據(jù)結(jié)構(gòu)主要是跨鏈數(shù)據(jù)包的內(nèi)容。
3.6.1 賬戶信息鏈
2018年歐盟部署了歐洲區(qū)塊鏈服務(wù)基礎(chǔ)設(shè)施EBSI(European blockchain services infrastructure),EBSI的歐洲自主身份框架ESSIF(The E-uropean self sovereign identity framework)功能是一個(gè)用戶身份區(qū)塊鏈,既是將每個(gè)用戶的身份信息上鏈[34]。
圖8設(shè)計(jì)的賬戶信息區(qū)塊鏈由跨境分布在多個(gè)國家的節(jié)點(diǎn)組成,滿足了交易的KYC/AML原則,并可將黑名單用戶傳送給跨鏈網(wǎng)關(guān)以阻止非法交易。
圖8 賬戶信息區(qū)塊鏈
3.6.2 交易數(shù)據(jù)鏈
中繼鏈在創(chuàng)建一個(gè)新的跨鏈交易時(shí),將交易數(shù)據(jù)同步發(fā)送給交易數(shù)據(jù)鏈保存作為一個(gè)數(shù)據(jù)備份,并配備傳統(tǒng)數(shù)據(jù)庫方式實(shí)現(xiàn)數(shù)據(jù)的快速查詢。從而有利于監(jiān)管者線下對(duì)所有跨鏈交易進(jìn)行分析和檢測(cè),由于不觸碰原始交易數(shù)據(jù),跨鏈業(yè)務(wù)具備獨(dú)立安全性。為了實(shí)現(xiàn)權(quán)限、監(jiān)管和準(zhǔn)入等功能,可根據(jù)需要設(shè)計(jì)權(quán)限管理合約、業(yè)務(wù)監(jiān)管合約、業(yè)務(wù)準(zhǔn)入合約等模塊。
本文調(diào)研了諸多區(qū)塊鏈BaaS平臺(tái)和跨鏈平臺(tái),通過對(duì)相關(guān)核心功能比如跨鏈適配、跨鏈網(wǎng)關(guān)和通信協(xié)議等作了分析和設(shè)計(jì),并創(chuàng)造性地在基于中繼鏈跨鏈平臺(tái)的基礎(chǔ)上引入監(jiān)管鏈,并將監(jiān)管鏈分為賬戶信息鏈和交易信息鏈,有效保障了交易監(jiān)管性。未來將完善相關(guān)細(xì)節(jié)并進(jìn)行系統(tǒng)原型開發(fā),以實(shí)踐驗(yàn)證和進(jìn)行相關(guān)性能和指標(biāo)測(cè)試。