崔蘭清,石磊,崔文靜
(1.太極計(jì)算機(jī)股份有限公司,北京 100083;2.山東信息職業(yè)技術(shù)學(xué)院,山東 濰坊 261061)
產(chǎn)業(yè)園區(qū)建設(shè)是我國(guó)目前很多地區(qū)經(jīng)濟(jì)發(fā)展的核心抓手,園區(qū)服務(wù)面向的對(duì)象包括園區(qū)管理者、運(yùn)營(yíng)商、政府部門(mén)、企業(yè)和業(yè)主[1]。園區(qū)服務(wù)內(nèi)容一般包括物流服務(wù)與追溯服務(wù)、園區(qū)金融服務(wù)、推廣活動(dòng)與跟蹤、商業(yè)綜合服務(wù)、桌面云服務(wù)、虛擬資源租用服務(wù)和中小企業(yè)軟件云服務(wù)等。多元的服務(wù)對(duì)象、種類(lèi)繁多的園區(qū)服務(wù),對(duì)園區(qū)信息化提出很大挑戰(zhàn)。
智慧園區(qū)是指通過(guò)各類(lèi)信息化技術(shù)的使用,為園區(qū)提供統(tǒng)一管理,應(yīng)急部署,互動(dòng)展示等方面的有效管理和集成,并為園區(qū)內(nèi)各類(lèi)服務(wù)對(duì)象提供各種信息化服務(wù),從而合理利用園區(qū)資源,提高園區(qū)成熟度,使園區(qū)運(yùn)營(yíng)者,環(huán)境和人形成有機(jī)的整體,促進(jìn)園區(qū)可持續(xù)發(fā)展。
智慧園區(qū)面臨的普遍問(wèn)題是存在大量孤立的煙囪式系統(tǒng),數(shù)據(jù)不互通,業(yè)務(wù)難融合。各類(lèi)園區(qū)系統(tǒng)數(shù)據(jù)很多來(lái)自園區(qū)服務(wù)對(duì)象,這些數(shù)據(jù)有的涉及園區(qū)服務(wù)對(duì)象的業(yè)務(wù)運(yùn)行數(shù)據(jù),具有隱私保護(hù)的需要;有的關(guān)注數(shù)據(jù)來(lái)源和流轉(zhuǎn)過(guò)程中的真實(shí)性、可靠性。
區(qū)塊鏈技術(shù)在一些園區(qū)業(yè)務(wù)系統(tǒng)建設(shè)中得到應(yīng)用,產(chǎn)生了很多區(qū)塊鏈系統(tǒng),這些系統(tǒng)底層協(xié)議各不相同,正在形成一個(gè)個(gè)新的數(shù)據(jù)孤島。無(wú)論這些孤島是基于相同的底層系統(tǒng)還是不同的底層系統(tǒng),其數(shù)據(jù)互通都非常困困難,因此,迫切需要解決多鏈之間融合的問(wèn)題,從而實(shí)現(xiàn)不同鏈園區(qū)系統(tǒng)之間的數(shù)據(jù)共享互通。本文采用跨鏈技術(shù)解決這一問(wèn)題。
區(qū)塊鏈數(shù)據(jù)互通,就是實(shí)現(xiàn)相對(duì)獨(dú)立的不同區(qū)塊鏈系統(tǒng)之間數(shù)據(jù)互通。目前,主要挑戰(zhàn)有[2]:
生效的原子性。對(duì)兩個(gè)網(wǎng)絡(luò)分別發(fā)起不同交易,如何保證要么都不生效,要么都生效的問(wèn)題。一般通過(guò)經(jīng)典的兩階段提交來(lái)完成,兩個(gè)交易互為錨點(diǎn)。如果超過(guò)一段時(shí)間錨點(diǎn)仍然無(wú)效,則進(jìn)行交易回滾。
錨點(diǎn)有效性校驗(yàn)。由于所有區(qū)塊鏈節(jié)點(diǎn)對(duì)錨點(diǎn)的有效性達(dá)成沒(méi)有分歧的判斷,因此不能依賴(lài)遠(yuǎn)程訪(fǎng)問(wèn)證明,這樣可能會(huì)造成驗(yàn)證難的問(wèn)題。
合約驗(yàn)證的不確定性。區(qū)塊鏈系統(tǒng)一般會(huì)在每個(gè)節(jié)點(diǎn)驗(yàn)證交易,但如果一個(gè)合約嵌入了外部鏈的合約調(diào)用,則在驗(yàn)證階段,需要確保各個(gè)節(jié)點(diǎn)驗(yàn)證的結(jié)果的一致性,外鏈的穩(wěn)定性也會(huì)對(duì)此產(chǎn)生影響。
目前跨鏈技術(shù)主要有公證人模式、側(cè)鏈/中繼模式和哈希鎖定模式。一般通過(guò)哈希時(shí)間鎖可以保證跨鏈交易的原子性。
根據(jù)不同鏈的交易是異步生效還是同步生效,可以分為異步模式和同步模式。
公證人模式由一個(gè)或者一組節(jié)點(diǎn)作為公證人參與到兩個(gè)區(qū)塊鏈,進(jìn)行雙方交易的收集和驗(yàn)證。優(yōu)點(diǎn)是簡(jiǎn)單,缺點(diǎn)是弱中心化。
側(cè)鏈/中繼鏈模式是BlockStream于2014年提出的一種方案。與公證人模式主要的區(qū)別是其驗(yàn)證是在目標(biāo)鏈中進(jìn)行,通過(guò)雙向錨定方式實(shí)現(xiàn)資產(chǎn)在不同鏈之間轉(zhuǎn)移。目標(biāo)鏈的驗(yàn)證方式一般各不相同。
異步模式是指發(fā)起調(diào)用的是一個(gè)函數(shù),處理調(diào)用結(jié)果的是另一個(gè)回調(diào)函數(shù)。以太坊上很多預(yù)言機(jī)類(lèi)DApp就采用此模式。異步調(diào)用模式下,一個(gè)完整流程需要3筆交易,其缺點(diǎn)是業(yè)務(wù)邏輯被迫拆成很多碎片,交互次數(shù)多[3]。
同步模式下,一般區(qū)塊鏈的上的合約在每個(gè)節(jié)點(diǎn)都會(huì)重復(fù)執(zhí)行,很多區(qū)塊鏈系統(tǒng),例如Fabric采取的是預(yù)執(zhí)行再提交的方式,如何保證重復(fù)執(zhí)行的結(jié)果確定性,且具備冪等性是一個(gè)重要問(wèn)題。
根據(jù)智慧園區(qū)業(yè)務(wù)應(yīng)用類(lèi)型多樣、應(yīng)用規(guī)模差異大、應(yīng)用變動(dòng)較頻繁等特點(diǎn),采用輕量級(jí)易于編程的跨鏈框架,便于適用于不同的智慧園區(qū)跨鏈應(yīng)用場(chǎng)景。智慧園區(qū)跨鏈數(shù)據(jù)共享場(chǎng)景主要包括只讀事務(wù)場(chǎng)景跨鏈、非事務(wù)場(chǎng)景跨鏈。
互通框架包括3層:基礎(chǔ)庫(kù)層、賬本層和合約層?;A(chǔ)庫(kù)層和賬本層是內(nèi)核層,提供跨區(qū)塊鏈域名解析協(xié)議、Markle Proof校驗(yàn)、異構(gòu)區(qū)塊頭解析協(xié)議、事務(wù)預(yù)鎖定等基礎(chǔ)能力。合約層包括區(qū)塊頭管理合約、鏈名解析合約、去中心化身份管理等。賬本層包括事務(wù)預(yù)鎖定、解鎖生效機(jī)制和超級(jí)回滾機(jī)制等實(shí)現(xiàn)跨鏈賬本操作的原子性[4]。
跨鏈涉及到不同鏈資源的互操作,由于不同的鏈的協(xié)議互不相同,通過(guò)定義跨鏈尋址協(xié)議,實(shí)現(xiàn)對(duì)不同鏈的資源進(jìn)行統(tǒng)一定義,結(jié)合鏈名解析合約,可以實(shí)現(xiàn)對(duì)任何協(xié)議鏈的統(tǒng)一資源尋址。
跨鏈尋址協(xié)議定義如下:
chain_scheme:跨鏈鏈類(lèi)型標(biāo)識(shí)符,用于標(biāo)識(shí)鏈的具體類(lèi)型;
chain_name:所跨鏈的鏈名,定位某一個(gè)具體的鏈,同一Scheme下鏈名是唯一的;
path:不同Scheme的鏈類(lèi)型擴(kuò)展字段;
query:用于定位某個(gè)鏈內(nèi)的某項(xiàng)資源,比如對(duì)于超級(jí)鏈,聲明調(diào)用的合約名、方法名和參數(shù)等信息。
為了實(shí)現(xiàn)跨鏈請(qǐng)求,需要在鏈名跨鏈尋址協(xié)議基礎(chǔ)上,在跨鏈發(fā)起的原鏈上部署鏈名解析合約,對(duì)鏈名進(jìn)行解析。解析合約主要包括如下內(nèi)容:
注冊(cè)一個(gè)網(wǎng)絡(luò),同時(shí)包含網(wǎng)絡(luò)初始meta信息;
定義目標(biāo)網(wǎng)絡(luò)meta信息、背書(shū)信息和目標(biāo)網(wǎng)絡(luò)CrossQuery完整信息;
更新網(wǎng)絡(luò)的meta信息,例如修改網(wǎng)絡(luò)的背書(shū)策略;
根據(jù)網(wǎng)絡(luò)名解析所有背書(shū)節(jié)點(diǎn);
插入一個(gè)背書(shū)節(jié)點(diǎn);
更新背書(shū)節(jié)點(diǎn)信息;
刪除背書(shū)節(jié)點(diǎn)。
只讀事務(wù)場(chǎng)景是從一個(gè)園區(qū)應(yīng)用鏈能夠查詢(xún)到另一個(gè)鏈的數(shù)據(jù),并且能夠滿(mǎn)足穩(wěn)定性、冪等性和安全性。典型場(chǎng)景如園區(qū)人員身份認(rèn)證、園區(qū)企業(yè)資質(zhì)認(rèn)證等。采用目標(biāo)鏈背書(shū)的方式,包括預(yù)執(zhí)行再提交的二階段處理過(guò)程。
預(yù)執(zhí)行階段,原鏈節(jié)點(diǎn)遠(yuǎn)程訪(fǎng)問(wèn)目標(biāo)鏈背書(shū)服務(wù),背書(shū)服務(wù)預(yù)執(zhí)行該合約,并且對(duì)合約結(jié)果進(jìn)行簽名背書(shū),原鏈會(huì)將該合約的結(jié)果和背書(shū)信息寫(xiě)進(jìn)寫(xiě)集中一個(gè)特殊的bucket中。
在提交階段,不需要再進(jìn)行遠(yuǎn)程調(diào)用,原鏈節(jié)點(diǎn)在驗(yàn)證合約時(shí),先解析出該特殊的寫(xiě)集中的跨鏈結(jié)果和背書(shū)簽名信息,以填充合約執(zhí)行的上下文環(huán)境,當(dāng)執(zhí)行到只讀跨鏈原語(yǔ)時(shí),原鏈節(jié)點(diǎn)不再進(jìn)行遠(yuǎn)程調(diào)用,而是驗(yàn)證預(yù)執(zhí)行的背書(shū)簽名,當(dāng)簽名滿(mǎn)足背書(shū)策略的要求后,就直接使用寫(xiě)集中的跨鏈合約結(jié)果繼續(xù)后續(xù)的合約邏輯,否則驗(yàn)證失敗[5]。
非事務(wù)場(chǎng)景跨鏈?zhǔn)侵缚珂溞袨椴⒉皇且蟛煌溕系慕灰拙邆涫聞?wù)性,即不要求不同鏈上的跨鏈交易同時(shí)生效或同時(shí)失敗,跨鏈交易只對(duì)當(dāng)時(shí)被跨鏈的交易狀態(tài)進(jìn)行確認(rèn),并根據(jù)目標(biāo)交易狀態(tài)執(zhí)行交易后續(xù)操作。
非事務(wù)跨鏈的典型園區(qū)應(yīng)用場(chǎng)景,例如園區(qū)不同企業(yè)資產(chǎn)跨鏈轉(zhuǎn)移等,主要強(qiáng)調(diào)跨鏈交易的存在性證明,不要求跨鏈交易的原子性。
非事務(wù)跨鏈通過(guò)中繼機(jī)制實(shí)現(xiàn),通過(guò)對(duì)目標(biāo)鏈的區(qū)塊頭同步,以及Markle驗(yàn)證技術(shù),可以做到在原鏈上直接驗(yàn)證目標(biāo)鏈的交易是否存在。
中繼機(jī)制主要包括鏈上中繼合約和中繼同步進(jìn)程。鏈上中繼合約是部署在原鏈上的一個(gè)智能合約,保存目標(biāo)鏈的所有塊頭信息,并提供基于Markle證明的目標(biāo)鏈交易存在性驗(yàn)證。在目標(biāo)鏈和原鏈之間,有一個(gè)或多個(gè)中繼進(jìn)程,持續(xù)監(jiān)聽(tīng)目標(biāo)鏈的最新出塊信息,并抽取出塊頭信息寫(xiě)入。
鏈上中繼合約是跨鏈存在性證明的核心,提供對(duì)目標(biāo)鏈中的區(qū)塊頭同步存儲(chǔ),并通過(guò)Markle驗(yàn)證技術(shù)提供交易查詢(xún)接口。鏈上中繼合約主要解決三個(gè)問(wèn)題,交易的真實(shí)性、及時(shí)性證明、區(qū)塊頭分叉管理。真實(shí)性證明證明交易確實(shí)存在,主要通過(guò)Merkle Proof證明交易是否真的存在于鏈中以及是否在主干上。及時(shí)性證明即證明交易是否確認(rèn),跟目標(biāo)鏈采用的共識(shí)算法相關(guān)。對(duì)于同步Byzantine類(lèi)共識(shí)算法,及時(shí)性是內(nèi)置的,只要交易在區(qū)塊頭中,那么交易必定在原鏈處于上鏈狀態(tài)。對(duì)于Pow類(lèi)共識(shí)算法,一般要求交易所在塊距主干最新高度相差6個(gè)塊以上。區(qū)塊頭分叉管理即對(duì)同步的區(qū)塊頭按照樹(shù)形結(jié)構(gòu)維護(hù)依賴(lài)關(guān)系,并根據(jù)目標(biāo)鏈的主干選擇算法即使調(diào)整目標(biāo)鏈的主干區(qū)塊狀態(tài)。
智慧園區(qū)應(yīng)用場(chǎng)景多樣,不同區(qū)塊鏈系統(tǒng)底層協(xié)議和框架也在不斷發(fā)展。智慧園區(qū)跨鏈數(shù)據(jù)共享需要增強(qiáng)不同區(qū)塊鏈協(xié)議的兼容能力,并進(jìn)一步輕量化框架,便于跨鏈數(shù)據(jù)互通和共享的快速實(shí)施和靈活運(yùn)維,這也是未來(lái)工作的重要方向。