張召,田繼鑫,金澈清
1. 華東師范大學(xué)數(shù)據(jù)科學(xué)與工程學(xué)院,上海 200062;2. MCT Technology,上海 200023
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,以及數(shù)據(jù)和關(guān)鍵信息的采集、傳輸、存儲(chǔ)和處理的自動(dòng)化,越來越多的數(shù)據(jù)信息以電子資源的形式記錄和存儲(chǔ),這些基礎(chǔ)數(shù)據(jù)是企事業(yè)單位的核心數(shù)字資產(chǎn),可以為各行各業(yè)的決策支持和精準(zhǔn)營(yíng)銷奠定數(shù)據(jù)基礎(chǔ)。然而,由于不同企業(yè)或者不同政府部門之間缺乏互信,鑒于數(shù)據(jù)泄露以及不正當(dāng)使用的風(fēng)險(xiǎn),以及企業(yè)之間或者政府部門之間行政利益的不同,很多數(shù)據(jù)擁有者不愿意共享數(shù)據(jù),從而形成一個(gè)個(gè)數(shù)據(jù)孤島[1],數(shù)據(jù)的價(jià)值無法得到應(yīng)有的利用,對(duì)數(shù)據(jù)資源造成了極大的浪費(fèi)。
數(shù)據(jù)流通過程涉及的主體包括數(shù)據(jù)生產(chǎn)者、數(shù)據(jù)收集者、數(shù)據(jù)使用者、數(shù)據(jù)處理者和數(shù)據(jù)監(jiān)管者等。為了打通業(yè)務(wù)流程,更大程度地發(fā)揮數(shù)據(jù)隱藏的價(jià)值,通過數(shù)據(jù)共享讓數(shù)據(jù)流通起來是一個(gè)非常有效的方法。根據(jù)數(shù)據(jù)共享應(yīng)用的業(yè)務(wù)場(chǎng)景,數(shù)據(jù)的共享模式可以分為如下3類。
(1)數(shù)據(jù)不離開私有域,通過授權(quán)實(shí)現(xiàn)遠(yuǎn)程訪問共享
該模式下,基于某種業(yè)務(wù)邏輯,需要訪問多個(gè)數(shù)據(jù)提供者的共享數(shù)據(jù),其基本特點(diǎn)是按需共享。這一般屬于協(xié)同業(yè)務(wù),對(duì)于共享的數(shù)據(jù),參與方一般預(yù)先簽訂授權(quán)或者法律法規(guī)授權(quán),根據(jù)業(yè)務(wù)的需要,隨時(shí)訪問共享數(shù)據(jù)。如對(duì)新型冠狀病毒肺炎確診患者居家隔離的監(jiān)控及活動(dòng)軌跡的流控,授權(quán)機(jī)構(gòu)可以通過隨時(shí)訪問授權(quán)用戶的相關(guān)數(shù)據(jù)(如手機(jī)用戶的移動(dòng)軌跡、支付平臺(tái)的消費(fèi)地點(diǎn)、監(jiān)控?cái)?shù)據(jù)等)來實(shí)現(xiàn)。
(2)數(shù)據(jù)離開私有域,通過數(shù)據(jù)移動(dòng)匯聚實(shí)現(xiàn)在匯聚點(diǎn)上的集中數(shù)據(jù)共享
該模式下,由多個(gè)數(shù)據(jù)提供方提供的數(shù)據(jù)經(jīng)規(guī)范化處理、匯總、分析后,形成新的共享數(shù)據(jù)。比較典型的應(yīng)用是征信平臺(tái),其從各類銀行類金融機(jī)構(gòu)、公共事業(yè)、保險(xiǎn)公司、支付平臺(tái)獲取企業(yè)或個(gè)人的信貸信息、支付信息、交易信息,經(jīng)過匯總、處理后形成企業(yè)或個(gè)人的信用信息,信用信息可供各類授權(quán)企業(yè)或個(gè)人訪問,并作為業(yè)務(wù)的參考依據(jù)。
(3)數(shù)據(jù)離開私有域,并且所有權(quán)也隨之發(fā)生轉(zhuǎn)移,在此過程中需要對(duì)數(shù)據(jù)進(jìn)行確權(quán)
共享數(shù)據(jù)交易是該模式的典型應(yīng)用,其基礎(chǔ)是數(shù)據(jù)確權(quán),在確權(quán)的基礎(chǔ)上,共享數(shù)據(jù)的某些權(quán)利發(fā)生轉(zhuǎn)移,同時(shí)數(shù)據(jù)提供方獲得經(jīng)濟(jì)利益。交易的進(jìn)行需要雙方或多方的認(rèn)可,并且共享數(shù)據(jù)的獲得方必須在合約規(guī)定的權(quán)限內(nèi)使用共享數(shù)據(jù)。如果數(shù)據(jù)獲得方需要將共享數(shù)據(jù)交易給其他第三方,必須得到原權(quán)利人的許可。
從以上3個(gè)典型的數(shù)據(jù)共享模式可以看到,在數(shù)據(jù)共享流通的過程中,為了避免數(shù)據(jù)隱私泄露和數(shù)據(jù)濫用等問題,在共享過程的多個(gè)參與方之間建立互信的協(xié)作關(guān)系是非常必要的。作為一種由互不可信的多方共同維護(hù)的分布式賬本,區(qū)塊鏈具有防篡改、可追溯、去中心化的特點(diǎn)。區(qū)塊鏈技術(shù)支撐的數(shù)據(jù)共享流通可以保證數(shù)據(jù)從收集到使用、共享乃至銷毀的過程都公開透明、有據(jù)可查,并可以通過追溯問責(zé)的方式來避免數(shù)據(jù)共享過程中某一參與方的消極怠工問題[2]。而數(shù)據(jù)存儲(chǔ)、處理和共享流通等過程公開透明可查使得企業(yè)或者部門賴以決策的數(shù)據(jù)來源更可信,從而使得決策結(jié)果更精確。
起源于比特幣的區(qū)塊鏈技術(shù)是一種按照區(qū)塊產(chǎn)生的時(shí)間順序?qū)^(qū)塊以密碼學(xué)哈希順序相連的鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu),其中密碼學(xué)哈希鏈接方式可以保證數(shù)據(jù)的難以篡改和難以偽造,拜占庭容錯(cuò)的共識(shí)協(xié)議保證在存在惡意節(jié)點(diǎn)的網(wǎng)絡(luò)環(huán)境下,數(shù)據(jù)仍能在多節(jié)點(diǎn)間達(dá)成一致。區(qū)塊鏈系統(tǒng)中包含交易(transaction)、區(qū)塊(block)和鏈(chain)3個(gè)基本概念。其中,交易是指對(duì)賬本的操作導(dǎo)致的賬本狀態(tài)的改變,可以是一次轉(zhuǎn)賬或者一次智能合約調(diào)用;區(qū)塊中記錄了一段時(shí)間內(nèi)發(fā)生的所有交易和狀態(tài)結(jié)果,是交易執(zhí)行的基本單元,是多節(jié)點(diǎn)間對(duì)當(dāng)前賬本狀態(tài)一致性的一次共識(shí);鏈?zhǔn)怯蓞^(qū)塊按照生成順序以密碼學(xué)哈希鏈串聯(lián)而成的,可以被理解為整個(gè)賬本狀態(tài)變化的日志記錄[3]。
圖1是一個(gè)節(jié)點(diǎn)包含的簡(jiǎn)單的區(qū)塊日志數(shù)據(jù)和狀態(tài)數(shù)據(jù)的示意圖。系統(tǒng)以追加的方式記錄了6條交易日志,假定每個(gè)區(qū)塊只包含1條交易(如圖1(a)所示,假設(shè)A、B和C的賬戶初始余額來自外部系統(tǒng)),需要注意的是,以未花費(fèi)的交易輸出(unspent transaction output,UTXO)模型為代表的比特幣系統(tǒng)如果要查詢數(shù)據(jù)的當(dāng)前狀態(tài),必須重做所有6條交易日志,才能得到A、B、C 3個(gè)賬戶的當(dāng)前余額(如圖1(b)所示),即數(shù)據(jù)的當(dāng)前狀態(tài)。而以賬戶模型為代表的以太坊以及以無賬戶模型為代表的超級(jí)賬本Fabric則同時(shí)存儲(chǔ)和維護(hù)區(qū)塊日志數(shù)據(jù)和狀態(tài)數(shù)據(jù)。
作為一種難以篡改、歷史數(shù)據(jù)可追溯的分布式賬本,區(qū)塊鏈系統(tǒng)雖然可以為不可信的多個(gè)參與方提供方便的數(shù)據(jù)共享服務(wù),但如果直接將需要共享的數(shù)據(jù)上鏈,通過區(qū)塊鏈系統(tǒng)在多方之間分享,則會(huì)帶來如下幾個(gè)問題。
● 在全復(fù)制數(shù)據(jù)分布下,共享數(shù)據(jù)的存儲(chǔ)開銷太大。在區(qū)塊鏈系統(tǒng)中,為了避免惡意節(jié)點(diǎn)對(duì)數(shù)據(jù)的篡改,每個(gè)節(jié)點(diǎn)都存儲(chǔ)一份完整的數(shù)據(jù)副本,如果將所有共享數(shù)據(jù)上鏈,則很快會(huì)突破單個(gè)節(jié)點(diǎn)的存儲(chǔ)容量上限。
● 在對(duì)等(peer to peer,P2P)網(wǎng)絡(luò)模式下,網(wǎng)絡(luò)傳輸代價(jià)太大,影響了系統(tǒng)吞吐量。在區(qū)塊鏈系統(tǒng)中,所有節(jié)點(diǎn)都采用對(duì)等模式組網(wǎng)。在由n個(gè)節(jié)點(diǎn)組成的區(qū)塊鏈網(wǎng)絡(luò)中,任何一方待共享的原始數(shù)據(jù)均要通過P2P網(wǎng)絡(luò)將數(shù)據(jù)傳輸至其他n-1個(gè)節(jié)點(diǎn),節(jié)點(diǎn)之間傳輸太大的數(shù)據(jù)會(huì)導(dǎo)致網(wǎng)絡(luò)帶寬資源的急劇減少,并大大降低系統(tǒng)的吞吐量。
● 共享數(shù)據(jù)采用明文記錄方式,導(dǎo)致數(shù)據(jù)的隱私得不到保護(hù)。在當(dāng)前大多數(shù)區(qū)塊鏈系統(tǒng)(如以太坊和超級(jí)賬本Fabric)中,僅采用密碼學(xué)簽名來防止交易被篡改,交易內(nèi)容仍以明文存儲(chǔ),所有參與者都可以看到,但這種依賴區(qū)塊鏈的數(shù)據(jù)共享方式會(huì)帶來隱私泄露的風(fēng)險(xiǎn)。
因此,考慮到數(shù)據(jù)共享流通系統(tǒng)的計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)開銷,以及數(shù)據(jù)隱私保護(hù)方面的問題,基于現(xiàn)有的區(qū)塊鏈系統(tǒng),將全部待共享數(shù)據(jù)直接上鏈的方式并不能滿足大規(guī)模的數(shù)據(jù)共享需求。本文針對(duì)數(shù)據(jù)共享的應(yīng)用場(chǎng)景特征,提出了一種鏈上共享存證、鏈下數(shù)據(jù)傳輸?shù)幕趨^(qū)塊鏈的新的數(shù)據(jù)共享架構(gòu)。
不同于只支持有限腳本的比特幣系統(tǒng)[4],隨著以支持智能合約為代表的區(qū)塊鏈2.0平臺(tái)的出現(xiàn),區(qū)塊鏈技術(shù)不僅可以為數(shù)字貨幣領(lǐng)域提供服務(wù),也可以為包括數(shù)據(jù)共享場(chǎng)景在內(nèi)的很多傳統(tǒng)業(yè)務(wù)提供服務(wù)。其中,任何業(yè)務(wù)邏輯都可以被編程為智能合約,并以去中心化應(yīng)用(decentralization application,DApp)的方式公開透明地部署到不同的節(jié)點(diǎn)上[5],所有的數(shù)據(jù)和智能合約代碼通過全復(fù)制的方式在不同節(jié)點(diǎn)間實(shí)現(xiàn)共享,通過共識(shí)達(dá)成一致。而通常所說的區(qū)塊中的一筆交易就是對(duì)智能合約相關(guān)功能的一次調(diào)用。
圖2所示是一個(gè)典型的區(qū)塊鏈系統(tǒng),包含A、B和C 3個(gè)全節(jié)點(diǎn)(保存完整區(qū)塊鏈數(shù)據(jù)),以及A’、B’和C’ 3個(gè)輕客戶端(只保存區(qū)塊頭),其中全節(jié)點(diǎn)A和B各自有一個(gè)隸屬于自己的輕客戶端A’和B’,而輕客戶端C’不隸屬于任何全節(jié)點(diǎn)。因?yàn)楦髯粤?chǎng)的不同,A、B和C 3個(gè)全節(jié)點(diǎn)之間并不完全互相信任。全節(jié)點(diǎn)既可以發(fā)起交易,也可以接收交易(無中心化),交易被操作者簽名后在P2P網(wǎng)絡(luò)中傳播,最終交易被共識(shí)協(xié)議所確定的主節(jié)點(diǎn)成批打包成區(qū)塊,繼續(xù)通過P2P網(wǎng)絡(luò)傳播給其他驗(yàn)證節(jié)點(diǎn),驗(yàn)證節(jié)點(diǎn)確認(rèn)無誤后,在本地以區(qū)塊為單位記賬,其中區(qū)塊與區(qū)塊之間通過密碼學(xué)哈希指針連接[6]。這樣,每個(gè)節(jié)點(diǎn)都能保存一份完整的區(qū)塊鏈數(shù)據(jù)(全復(fù)制分布)。這種交易帶簽名、成批打包進(jìn)區(qū)塊,區(qū)塊以哈希鏈方式追加存儲(chǔ),且最終采用全復(fù)制方式分布的數(shù)據(jù)存儲(chǔ)模式保證了交易數(shù)據(jù)的難以篡改和可追溯。
從第2.1節(jié)的敘述可知,區(qū)塊鏈系統(tǒng)是一種全新的分布式基礎(chǔ)架構(gòu)與計(jì)算范式。在單節(jié)點(diǎn)上,區(qū)塊鏈系統(tǒng)使用密碼學(xué)哈希鏈串聯(lián)的鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)來驗(yàn)證與存儲(chǔ)數(shù)據(jù);在節(jié)點(diǎn)間,每個(gè)節(jié)點(diǎn)獨(dú)立保存完整的區(qū)塊數(shù)據(jù),利用分布式共識(shí)協(xié)議使對(duì)數(shù)據(jù)的修改達(dá)成一致;利用密碼學(xué)方法保證數(shù)據(jù)傳輸和訪問的安全;利用可編程的智能合約來靈活操作數(shù)據(jù)。而從數(shù)據(jù)管理的角度來看,區(qū)塊鏈的本質(zhì)是一個(gè)網(wǎng)絡(luò)上節(jié)點(diǎn)獨(dú)立對(duì)等,數(shù)據(jù)以日志方式記錄,并通過全復(fù)制分布實(shí)現(xiàn)數(shù)據(jù)記錄共享,采用哈希鏈數(shù)據(jù)結(jié)構(gòu)保證數(shù)據(jù)難以篡改,采用共識(shí)算法實(shí)現(xiàn)不同節(jié)點(diǎn)間數(shù)據(jù)副本一致性的分布式數(shù)據(jù)管理系統(tǒng)[7-9]。
從數(shù)據(jù)管理的角度看,與傳統(tǒng)的數(shù)據(jù)庫(kù)管理系統(tǒng)相比,區(qū)塊鏈系統(tǒng)主要涉及的關(guān)鍵技術(shù)包括以下4個(gè)。
● 開放透明,數(shù)據(jù)全復(fù)制分布。節(jié)點(diǎn)間采用全復(fù)制的數(shù)據(jù)分布,即每個(gè)節(jié)點(diǎn)保存一份完整的數(shù)據(jù)副本。在區(qū)塊鏈系統(tǒng)中,單個(gè)節(jié)點(diǎn)存儲(chǔ)的數(shù)據(jù)包括兩類,一類是區(qū)塊數(shù)據(jù),另一類是狀態(tài)數(shù)據(jù)。其中區(qū)塊數(shù)據(jù)就是通常所說的記錄一批交易的鏈?zhǔn)絽^(qū)塊數(shù)據(jù),一般被存儲(chǔ)在原始文件或者keyvalue數(shù)據(jù)庫(kù)中。狀態(tài)數(shù)據(jù)則保存以區(qū)塊為單位的一批交易執(zhí)行后的最新世界狀態(tài)(world state),也是執(zhí)行智能合約時(shí)要訪問的數(shù)據(jù)。因此,高效的數(shù)據(jù)存儲(chǔ)和組織是區(qū)塊鏈系統(tǒng)的關(guān)鍵技術(shù)之一。
● 存在惡意節(jié)點(diǎn),節(jié)點(diǎn)間數(shù)據(jù)的一致性需要拜占庭容錯(cuò)共識(shí)協(xié)議來保證。由于區(qū)塊鏈系統(tǒng)中的節(jié)點(diǎn)間數(shù)據(jù)是全復(fù)制分布的,因此在分布式環(huán)境下必須要有共識(shí)算法保證位于不同節(jié)點(diǎn)的數(shù)據(jù)之間的一致性。因?yàn)樵趨^(qū)塊鏈系統(tǒng)中,節(jié)點(diǎn)可能會(huì)主動(dòng)作惡(拜占庭節(jié)點(diǎn),多方互不可信),包括發(fā)送假消息、給不同的節(jié)點(diǎn)發(fā)送不同的消息等主觀惡意行為,所以拜占庭容錯(cuò)的共識(shí)協(xié)議是區(qū)塊鏈系統(tǒng)中的關(guān)鍵技術(shù)之一。
● 可編程智能合約,支持去中心化應(yīng)用。智能合約為區(qū)塊鏈系統(tǒng)提供了靈活的編程語義,支持用戶在區(qū)塊鏈系統(tǒng)上搭載自定義的應(yīng)用程序,使得區(qū)塊鏈技術(shù)可以被應(yīng)用在數(shù)字貨幣以外的很多其他領(lǐng)域。以智能合約編寫的DApp的運(yùn)行邏輯、狀態(tài)都會(huì)經(jīng)過共識(shí)機(jī)制的協(xié)商確認(rèn),保證了執(zhí)行過程的完整性。智能合約的安全高效運(yùn)行也是區(qū)塊鏈系統(tǒng)的關(guān)鍵技術(shù)之一。
打破數(shù)據(jù)孤島、實(shí)現(xiàn)數(shù)據(jù)共享可以發(fā)揮數(shù)據(jù)更大的價(jià)值,然而在實(shí)際的業(yè)務(wù)場(chǎng)景中,由于在需要對(duì)數(shù)據(jù)進(jìn)行共享的不同參與方之間缺乏互信,導(dǎo)致數(shù)據(jù)確權(quán)困難,使得數(shù)據(jù)共享過程產(chǎn)生很多不必要的壁壘。數(shù)據(jù)確權(quán)就是對(duì)數(shù)據(jù)所有權(quán)和使用權(quán)的確認(rèn)。其中,所有權(quán)的歸屬可以是個(gè)人(如隱私數(shù)據(jù)所有者),也可以是機(jī)構(gòu)(數(shù)據(jù)提供者),所有權(quán)和使用權(quán)都可以交易,或者通過法律法規(guī)轉(zhuǎn)讓和授予。具有去信任化、去中心化以及防篡改、可追溯等特點(diǎn)的區(qū)塊鏈系統(tǒng)可以便捷地為參與數(shù)據(jù)共享的多方之間建立互信,并通過其上的智能合約來實(shí)現(xiàn)靈活多樣的數(shù)據(jù)共享規(guī)則,為公開透明、可信、無爭(zhēng)議的數(shù)據(jù)確權(quán)提供技術(shù)平臺(tái)。
通過區(qū)塊鏈來共享數(shù)據(jù),最直接的方法是將共享數(shù)據(jù)直接上鏈,具體如圖3所示。如果D節(jié)點(diǎn)的數(shù)據(jù)需要共享給A、B和C,則通過區(qū)塊鏈網(wǎng)絡(luò)直接上鏈,并完成同步。同樣,如果其他節(jié)點(diǎn)的數(shù)據(jù)要應(yīng)答數(shù)據(jù)共享的請(qǐng)求,也只能借助區(qū)塊鏈網(wǎng)絡(luò)對(duì)數(shù)據(jù)進(jìn)行移動(dòng),從而使得數(shù)據(jù)分享流程公開透明,數(shù)據(jù)確權(quán)無爭(zhēng)議。由于現(xiàn)有的區(qū)塊鏈系統(tǒng)采用全復(fù)制數(shù)據(jù)分布的方式,這種共享數(shù)據(jù)直接上鏈的方法會(huì)使得A、B、C、D 4個(gè)節(jié)點(diǎn)保存通過區(qū)塊鏈網(wǎng)絡(luò)分享的所有數(shù)據(jù),造成系統(tǒng)中存儲(chǔ)、計(jì)算和網(wǎng)絡(luò)資源的極大消耗和浪費(fèi),并嚴(yán)重影響數(shù)據(jù)共享的交易吞吐量。更重要的是,數(shù)據(jù)直接上鏈也會(huì)引起隱私泄露的問題,這是由于區(qū)塊鏈僅使用簽名的方式防止數(shù)據(jù)被惡意篡改,而共享數(shù)據(jù)仍以明文的形式保存。但是如果以加密的方式進(jìn)行數(shù)據(jù)上鏈傳輸,又會(huì)影響鏈上智能合約的數(shù)據(jù)正常讀取。
因此,這種數(shù)據(jù)直接上鏈的方式雖然能保證共享公開透明,但數(shù)據(jù)隱私得不到應(yīng)有的保護(hù)??紤]到系統(tǒng)吞吐量以及數(shù)據(jù)隱私保護(hù)的問題,本文提出了一種鏈上存證、鏈下數(shù)據(jù)傳輸?shù)臄?shù)據(jù)共享方式。在這種模式下,只有對(duì)共享數(shù)據(jù)的請(qǐng)求和應(yīng)答會(huì)被記錄在區(qū)塊鏈上,而真正的共享數(shù)據(jù)通過鏈下傳輸,具體鏈下共享數(shù)據(jù)的傳輸可以通過可信的云服務(wù)器中轉(zhuǎn),也可以直接通過點(diǎn)對(duì)點(diǎn)傳輸。由于所有對(duì)共享數(shù)據(jù)的請(qǐng)求和應(yīng)答響應(yīng)都被記錄在區(qū)塊鏈上,而區(qū)塊鏈又能保證其難以篡改、公開透明、可追溯,因此任何參與方如果對(duì)數(shù)據(jù)確權(quán)有異議,都可以通過查詢區(qū)塊鏈記錄來對(duì)數(shù)據(jù)的使用權(quán)和所有權(quán)的遷移過程進(jìn)行追溯,并且追溯過程不受任何一方人為干擾。另外,共享數(shù)據(jù)的傳輸通過鏈下進(jìn)行,一方面保護(hù)了數(shù)據(jù)隱私,另一方面也減輕了鏈上負(fù)載,從而提高系統(tǒng)的吞吐量。如果對(duì)共享數(shù)據(jù)的隱私保護(hù)有很高的要求,可以采用加密和點(diǎn)對(duì)點(diǎn)共享密鑰的方式來實(shí)現(xiàn)鏈下共享數(shù)據(jù)傳輸?shù)陌踩碗[私保護(hù)。
圖4展示了一個(gè)鏈上存證、鏈下數(shù)據(jù)傳輸?shù)膽?yīng)用場(chǎng)景,在該場(chǎng)景中共有A、B、C、D 4個(gè)參與方,各參與方擁有屬于自己的數(shù)據(jù),其中原始數(shù)據(jù)以密文的形式存儲(chǔ)在云服務(wù)器上,原始數(shù)據(jù)的元數(shù)據(jù)(即數(shù)據(jù)目錄信息,包括數(shù)據(jù)的基本描述、類別、擁有者等)及其哈希摘要?jiǎng)t存儲(chǔ)在區(qū)塊鏈上。假設(shè)某些業(yè)務(wù)需要D節(jié)點(diǎn)獲取數(shù)據(jù)集R,D節(jié)點(diǎn)的客戶端通過查詢鏈上的目錄信息發(fā)現(xiàn)B節(jié)點(diǎn)擁有數(shù)據(jù)集R。此時(shí),D節(jié)點(diǎn)的客戶端向B節(jié)點(diǎn)發(fā)起數(shù)據(jù)獲取請(qǐng)求,B節(jié)點(diǎn)根據(jù)預(yù)先定制的智能合約,檢查數(shù)據(jù)請(qǐng)求的合法性,并按照預(yù)先制定的規(guī)則將數(shù)據(jù)集R在云存儲(chǔ)服務(wù)器上的鏈接、數(shù)據(jù)集R的哈希摘要以及對(duì)數(shù)據(jù)集R解密的密鑰等,以加密的方式發(fā)送給D節(jié)點(diǎn)的客戶端,最終D節(jié)點(diǎn)的客戶端根據(jù)接收到的信息到云服務(wù)器下載數(shù)據(jù),并驗(yàn)證其哈希摘要,驗(yàn)證通過后,合法使用數(shù)據(jù)集R。需要注意的是,為了保障數(shù)據(jù)擁有者和數(shù)據(jù)使用者各自的權(quán)利,來自D節(jié)點(diǎn)的客戶端的數(shù)據(jù)請(qǐng)求和B節(jié)點(diǎn)的應(yīng)答均被記錄在區(qū)塊鏈上,其中A、B、C、D 4個(gè)節(jié)點(diǎn)都是本次數(shù)據(jù)請(qǐng)求和應(yīng)答的見證者。值得一提的是,從功能的角度看,該平臺(tái)可以部署在任何成熟的聯(lián)盟鏈系統(tǒng)中,如超級(jí)賬本Fabric或者Quorum等。但從性能的角度看,已有的聯(lián)盟鏈系統(tǒng)很難滿足本文要解決的數(shù)據(jù)請(qǐng)求和應(yīng)答的高吞吐需求,需要對(duì)已有的開源系統(tǒng)進(jìn)行進(jìn)一步改造,第4節(jié)將就這一點(diǎn)進(jìn)行討論。
基于鏈上對(duì)數(shù)據(jù)共享的請(qǐng)求和應(yīng)答進(jìn)行存證、鏈下對(duì)待分享數(shù)據(jù)進(jìn)行安全傳輸?shù)幕舅枷耄P者設(shè)計(jì)了一個(gè)如圖5所示的基于區(qū)塊鏈的可信的數(shù)據(jù)共享平臺(tái)。該平臺(tái)自底向上一共4層,包括存儲(chǔ)層、共識(shí)層、智能合約層和應(yīng)用層。
存儲(chǔ)層包括鏈上的區(qū)塊數(shù)據(jù)和狀態(tài)數(shù)據(jù),以及為鏈下數(shù)據(jù)傳輸做準(zhǔn)備的鏈外數(shù)據(jù)云平臺(tái)。鏈上的區(qū)塊數(shù)據(jù)主要為數(shù)據(jù)共享請(qǐng)求和應(yīng)答做存證,而狀態(tài)數(shù)據(jù)是為各種數(shù)據(jù)共享和確權(quán)規(guī)則編寫的智能合約準(zhǔn)備的。對(duì)于大數(shù)據(jù)共享來說,往往數(shù)據(jù)量巨大,需要較大的帶寬、存儲(chǔ)空間、處理能力等資源,本平臺(tái)采用云存儲(chǔ)的方式將待共享的原始數(shù)據(jù)存儲(chǔ)在云端。
共識(shí)層可以根據(jù)不同的應(yīng)用場(chǎng)景,選擇不同的共識(shí)協(xié)議,比如應(yīng)用于公有鏈的工作量證明(proof of work,PoW)、權(quán)益證明(proof of stake,PoS),應(yīng)用于聯(lián)盟鏈和私有鏈的實(shí)用拜占庭容錯(cuò)(practical byzantine fault tolerance,PBFT)協(xié)議。如果是企事業(yè)內(nèi)部或者企事業(yè)之間的數(shù)據(jù)共享,為了避免算力的浪費(fèi),一般采用基于投票機(jī)制的PBFT協(xié)議;如果是在更廣的范圍內(nèi)的缺乏行政約束力的主體之間的數(shù)據(jù)共享,為了能抵御各種網(wǎng)絡(luò)攻擊,也可采用PoW或者PoS。
智能合約層主要用來定義各種與數(shù)據(jù)共享和確權(quán)有關(guān)的業(yè)務(wù)流程和規(guī)則。這一層與應(yīng)用場(chǎng)景密切相關(guān),是最重要的一層,其中包括共享目錄服務(wù)合約、共享確權(quán)服務(wù)合約、共享交易服務(wù)合約以及共享服務(wù)訪問合約。其中共享目錄服務(wù)合約是關(guān)于元數(shù)據(jù)管理的,主要讓各參與方之間互通有無,知道從哪里可以獲取需要的數(shù)據(jù),每個(gè)參與方有哪些數(shù)據(jù)可以共享。共享確權(quán)服務(wù)合約則主要負(fù)責(zé)在數(shù)據(jù)流通過程中根據(jù)合同以及相應(yīng)的法律法規(guī)對(duì)數(shù)據(jù)進(jìn)行確權(quán),以及對(duì)權(quán)利轉(zhuǎn)移過程產(chǎn)生的費(fèi)用進(jìn)行計(jì)算和支付。共享交易服務(wù)合約主要用來定義數(shù)據(jù)買賣和交易的規(guī)則。共享服務(wù)訪問合約主要用于訪問控制驗(yàn)證和權(quán)限驗(yàn)證。
(3)一定量的鋁分別與一定量的鹽酸和NaOH溶液反應(yīng),若產(chǎn)生H2的體積比為,則必定是:鋁與鹽酸反應(yīng)時(shí),鋁過量而鹽酸不足;鋁與NaOH溶液反應(yīng)時(shí),鋁不足而NaOH溶液過量。
最上層是應(yīng)用層,包括輕客戶端訪問、共享數(shù)據(jù)溯源、共享數(shù)據(jù)確權(quán)和共享數(shù)據(jù)授權(quán)。應(yīng)用層主要為應(yīng)用程序提供服務(wù)和訪問接口,以及查詢和跟蹤數(shù)據(jù)共享的進(jìn)展和結(jié)果。其中輕客戶端訪問要保證查詢結(jié)果的完整性,因?yàn)閿?shù)據(jù)來自不可信的全節(jié)點(diǎn),需要保證查詢結(jié)果的保真和完備,即返回的數(shù)據(jù)沒有被惡意篡改,并且返回的數(shù)據(jù)既不能多也不能少。共享數(shù)據(jù)溯源主要負(fù)責(zé)對(duì)有爭(zhēng)議的數(shù)據(jù)確權(quán)進(jìn)行過程溯源,要求給出數(shù)據(jù)權(quán)限遷移時(shí)間線及相關(guān)的證據(jù)。共享數(shù)據(jù)確權(quán)用來查詢當(dāng)前某個(gè)已共享數(shù)據(jù)項(xiàng)的擁有權(quán)或者使用權(quán)歸屬。共享數(shù)據(jù)授權(quán)用來為共享數(shù)據(jù)設(shè)置訪問控制和權(quán)限管理規(guī)則。
使用筆者設(shè)計(jì)的基于區(qū)塊鏈的可信的數(shù)據(jù)共享平臺(tái)在不可信的多方之間共享數(shù)據(jù),需要注意以下幾點(diǎn)。首先,區(qū)塊鏈的難以篡改性使得智能合約一旦執(zhí)行即不可挽回,在數(shù)據(jù)共享流通的過程中,這一特性要求共享規(guī)則和與之相匹配的智能合約的設(shè)計(jì)需要特別精細(xì),例如,確保轉(zhuǎn)讓后的使用權(quán)在未經(jīng)授權(quán)的情況下不能再擅自轉(zhuǎn)讓給第三方。其次,因?yàn)閿?shù)據(jù)共享的過程采用鏈下傳輸、鏈上存證的方式,所以鏈下數(shù)據(jù)傳輸?shù)陌踩砸残枰溕向?yàn)證,在鏈下傳輸?shù)墓蚕頂?shù)據(jù)需多方加密,并將數(shù)據(jù)摘要通過交易上鏈,訪問時(shí)通過智能合約獲取公鑰和數(shù)據(jù)摘要,確保共享數(shù)據(jù)是數(shù)據(jù)提供者共享的原始數(shù)據(jù)。再次,由于監(jiān)管的需要,或者受存儲(chǔ)和計(jì)算資源所限,有些參與方只保存了區(qū)塊的頭部信息,為了使這類輕客戶端用戶對(duì)共享交易過程及確權(quán)結(jié)果進(jìn)行跟蹤和追溯,系統(tǒng)需要提供可驗(yàn)證的查詢處理,以保證查詢結(jié)果的可信和完整。最后,數(shù)據(jù)擁有者需要對(duì)共享數(shù)據(jù)進(jìn)行控制,只有獲得共享數(shù)據(jù)相關(guān)權(quán)限的用戶才能使用相關(guān)的共享數(shù)據(jù),并行使相應(yīng)的權(quán)利。
綜上所述,與傳統(tǒng)的數(shù)據(jù)共享平臺(tái),以及原始數(shù)據(jù)直接上鏈的基于區(qū)塊鏈的數(shù)據(jù)共享平臺(tái)相比,筆者提出的鏈上存證、鏈下數(shù)據(jù)傳輸?shù)目尚诺臄?shù)據(jù)共享平臺(tái)具有如下優(yōu)點(diǎn):一是鏈上負(fù)載輕,原始數(shù)據(jù)隱私方便保護(hù);二是共享流程和權(quán)利轉(zhuǎn)移公開透明,不可抵賴;三是共享規(guī)則和權(quán)利轉(zhuǎn)移智能合約化,避免人為干預(yù),自動(dòng)完成不可逆轉(zhuǎn)。
筆者提出的鏈上存證、鏈下數(shù)據(jù)傳輸?shù)姆椒茉谝欢ǔ潭壬媳苊夤蚕頂?shù)據(jù)直接上鏈造成的存儲(chǔ)資源、計(jì)算資源以及網(wǎng)絡(luò)資源方面的大量消耗和開銷,從而緩解系統(tǒng)負(fù)載壓力,這對(duì)于區(qū)塊鏈系統(tǒng)中資源受限的單個(gè)節(jié)點(diǎn)的擴(kuò)展性尤為重要。
但是,隨著平臺(tái)參與節(jié)點(diǎn)和數(shù)據(jù)分享請(qǐng)求越來越多,系統(tǒng)負(fù)載越來越大,用戶需求對(duì)系統(tǒng)吞吐的要求也會(huì)越來越高,已有的區(qū)塊鏈技術(shù)仍然很難保證系統(tǒng)的正常運(yùn)行。下面從存儲(chǔ)、共識(shí)、智能合約執(zhí)行以及輕客戶端可驗(yàn)證查詢4個(gè)方面闡述該平臺(tái)面臨的挑戰(zhàn)和需要進(jìn)一步改進(jìn)的方向。
首先,已有的數(shù)據(jù)全復(fù)制分布方式成為數(shù)據(jù)存儲(chǔ)的瓶頸。全復(fù)制的數(shù)據(jù)分布方式使得每個(gè)節(jié)點(diǎn)都需要保存一份完整的數(shù)據(jù)副本,系統(tǒng)的存儲(chǔ)容量受到單個(gè)節(jié)點(diǎn)存儲(chǔ)能力的限制。TPS(transaction per second)只有20筆/s左右的以太坊在運(yùn)行了不到三年半的時(shí)間以后,存儲(chǔ)容量已經(jīng)超過了1 TB。那么,在交易吞吐率為幾百甚至上千筆每秒的聯(lián)盟鏈中,系統(tǒng)所需的存儲(chǔ)容量會(huì)以更快的速度增長(zhǎng),極有可能在短時(shí)間內(nèi)就突破單節(jié)點(diǎn)存儲(chǔ)能力的上限。因此,全復(fù)制的數(shù)據(jù)分布方式制約了系統(tǒng)存儲(chǔ)的可擴(kuò)展性,也制約了系統(tǒng)的擴(kuò)展性。
其次,已有的共識(shí)算法很難滿足系統(tǒng)對(duì)交易處理時(shí)延和吞吐率的要求。PoW[9]系列共識(shí)算法由于需要消耗大量算力,且吞吐率提高以后會(huì)引起更多區(qū)塊鏈分叉進(jìn)而導(dǎo)致私自挖礦等安全方面的問題[9],并不適合上述企業(yè)級(jí)聯(lián)盟鏈的應(yīng)用場(chǎng)景。而以PBFT協(xié)議[10]為代表的面向聯(lián)盟鏈的共識(shí)協(xié)議,TPS也只有400筆/s左右,所能支持的共識(shí)節(jié)點(diǎn)數(shù)目也不能超過20個(gè),因此,已有的共識(shí)算法很難滿足數(shù)據(jù)共享請(qǐng)求的高吞吐率的要求。
再次,已有的智能合約以串行執(zhí)行方式運(yùn)行,這會(huì)成為系統(tǒng)吞吐性能的瓶頸。在面向數(shù)據(jù)分享和確權(quán)應(yīng)用的區(qū)塊鏈系統(tǒng)中,智能合約的業(yè)務(wù)邏輯往往比簡(jiǎn)單的轉(zhuǎn)賬操作更復(fù)雜。尤其是在系統(tǒng)共識(shí)算法效率提高、出塊速度加快以后,智能合約的執(zhí)行更有可能拖慢系統(tǒng)的整體吞吐性能。在采用IBFT(istanbul byzantine fault tolerant)共識(shí)算法的以太坊平臺(tái)上做的一組實(shí)驗(yàn)表明,當(dāng)一個(gè)區(qū)塊中包含100筆調(diào)用智能合約的交易時(shí),合約執(zhí)行時(shí)間是共識(shí)時(shí)間的6倍,而當(dāng)智能合約的交易數(shù)目達(dá)到200筆時(shí),合約的執(zhí)行時(shí)間是共識(shí)時(shí)間的20倍。而在相同的系統(tǒng)上采用PoW這種吞吐率很低的共識(shí)算法時(shí)發(fā)現(xiàn),與共識(shí)時(shí)間相比,智能合約的執(zhí)行時(shí)間幾乎可以忽略。這進(jìn)一步驗(yàn)證了共識(shí)效率提高以后,智能合約的執(zhí)行效率會(huì)成為系統(tǒng)新的瓶頸[11-12]。而現(xiàn)有的智能合約的串行執(zhí)行方式嚴(yán)重制約了其執(zhí)行的效率。
最后,對(duì)于輕客戶端發(fā)起的查詢,現(xiàn)有的區(qū)塊鏈系統(tǒng)無法保證其查詢結(jié)果的正確性[13]。輕客戶端被分為兩類,一類隸屬于某個(gè)全節(jié)點(diǎn),如隸屬于某個(gè)部門的輕客戶端;另一類不隸屬于任何全節(jié)點(diǎn),如普通終端用戶。來自前者的查詢響應(yīng)比較簡(jiǎn)單,可以直接在它所隸屬的全節(jié)點(diǎn)執(zhí)行;而來自后者的查詢并沒有一個(gè)完全信任的節(jié)點(diǎn),系統(tǒng)需要保證其查詢結(jié)果的正確性[14-15]。但是已有的區(qū)塊鏈系統(tǒng)僅能驗(yàn)證輕客戶端發(fā)起的交易或者賬號(hào)是否存在,無法對(duì)復(fù)雜查詢返回的結(jié)果集的正確性和完整性予以驗(yàn)證。對(duì)于面向數(shù)據(jù)分享和確權(quán)應(yīng)用的區(qū)塊鏈數(shù)據(jù)管理系統(tǒng),無信任輕客戶端的存在不可避免,對(duì)其查詢結(jié)果正確性的驗(yàn)證也是必須要面對(duì)的問題。
因此,需要在上述4個(gè)關(guān)鍵技術(shù)點(diǎn)進(jìn)行突破,構(gòu)建高吞吐的區(qū)塊鏈系統(tǒng),以應(yīng)對(duì)大規(guī)模節(jié)點(diǎn)參與下系統(tǒng)對(duì)吞吐率和時(shí)延方面日益增長(zhǎng)的需求。
鑒于區(qū)塊鏈的可追溯、難以篡改等特性,區(qū)塊鏈系統(tǒng)可以解決在供應(yīng)鏈數(shù)據(jù)管理、醫(yī)療數(shù)據(jù)分享等領(lǐng)域進(jìn)行數(shù)據(jù)分享時(shí)面臨的可信問題。但是現(xiàn)有的基于區(qū)塊鏈的數(shù)據(jù)分享系統(tǒng)大多面向某一特定的具體應(yīng)用,通用的基于區(qū)塊鏈的數(shù)據(jù)分享平臺(tái)還比較少見。
Tian F等人[16]提出了一種不僅能夠?qū)崟r(shí)提供供應(yīng)鏈管理系統(tǒng)中食品的追蹤信息,同時(shí)還能保證信息的可靠公開的系統(tǒng)。Hua J等人[17]提出了一種基于區(qū)塊鏈的農(nóng)產(chǎn)品追蹤系統(tǒng),能夠記錄生產(chǎn)、存儲(chǔ)、運(yùn)輸、加工、分配以及相關(guān)供應(yīng)鏈的各種信息,同時(shí)向第三方(如政府、保險(xiǎn)公司、顧客等)公開。Yue X等人[18]提出了一個(gè)基于區(qū)塊鏈的智能應(yīng)用HDG,病人不需要通過第三方就能控制和分享自己的病歷。Azaria A等人[19]開發(fā)了一個(gè)去中心化的大規(guī)模病歷數(shù)據(jù)管理系統(tǒng)MedRec。在這個(gè)系統(tǒng)中,通過區(qū)塊鏈記錄的綜合日志能夠?qū)崿F(xiàn)醫(yī)療記錄的保密、認(rèn)證和追溯。Xia Q等人[20]開發(fā)了一個(gè)可靠的基于區(qū)塊鏈的系統(tǒng)MeDShare,專門用來處理在云端存儲(chǔ)大量冗余的醫(yī)療信息時(shí)遇到的數(shù)據(jù)追溯問題。Rifi N等人[21]討論了區(qū)塊鏈技術(shù)應(yīng)用于醫(yī)療數(shù)據(jù)共享領(lǐng)域的優(yōu)缺點(diǎn)。
綜上所述,在數(shù)據(jù)共享和流通過程中由于缺乏信任而形成的數(shù)據(jù)孤島,使得數(shù)據(jù)的價(jià)值難以最大化。區(qū)塊鏈系統(tǒng)雖然能夠?yàn)樵跀?shù)據(jù)共享中涉及的多方構(gòu)建信任的基礎(chǔ)設(shè)施,但是共享數(shù)據(jù)直接上鏈的方式仍然會(huì)面臨系統(tǒng)負(fù)載重、隱私得不到保護(hù)的問題。本文提出了一種數(shù)據(jù)共享請(qǐng)求和應(yīng)答記錄鏈上存證、共享數(shù)據(jù)鏈下傳輸?shù)臄?shù)據(jù)共享平臺(tái)架構(gòu)。該架構(gòu)在一定程度上可以緩解系統(tǒng)負(fù)載過重的問題,但是隨著參與節(jié)點(diǎn)的增多,以及每秒需要處理的數(shù)據(jù)共享請(qǐng)求的應(yīng)答增多,將已有的區(qū)塊鏈技術(shù)應(yīng)用到數(shù)據(jù)分享和確權(quán)領(lǐng)域時(shí),仍然需要從以下4個(gè)方面努力:首先,設(shè)計(jì)高效的可驗(yàn)證、可恢復(fù)的數(shù)據(jù)可擴(kuò)展存儲(chǔ)方法;其次,在確保所有節(jié)點(diǎn)都能公平對(duì)等地參與共識(shí)過程的前提條件下,提高確定性共識(shí)協(xié)議的效率,并保證協(xié)議的安全性和活性;再次,有效利用區(qū)塊鏈智能合約的特點(diǎn),提高智能合約的并發(fā)執(zhí)行效率;最后,以減少網(wǎng)絡(luò)開銷和計(jì)算代價(jià)為目標(biāo),設(shè)計(jì)精巧的驗(yàn)證結(jié)構(gòu)、高效的驗(yàn)證查詢算法來響應(yīng)輕客戶端查詢。