亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于區(qū)塊鏈的數(shù)據(jù)溯源可信查詢方法

        2021-03-24 02:04:36張學(xué)旺馮家琦殷梓杰林金朝
        關(guān)鍵詞:信息模型

        張學(xué)旺,馮家琦,殷梓杰,林金朝

        1.重慶郵電大學(xué)軟件工程學(xué)院,重慶400065

        2.重慶大學(xué)微電子與通信工程學(xué)院,重慶400044

        隨著信息技術(shù)的快速發(fā)展,數(shù)據(jù)的產(chǎn)生和流轉(zhuǎn)快速增長(zhǎng)。海量的數(shù)據(jù)通過網(wǎng)絡(luò)在不同應(yīng)用系統(tǒng)之間共享融合,使得數(shù)據(jù)的產(chǎn)生方式和流轉(zhuǎn)方式呈現(xiàn)出多樣性、復(fù)雜性的特點(diǎn)。對(duì)于一些對(duì)數(shù)據(jù)可信性和完整性要求較高的領(lǐng)域,如食品安全、司法取證、版權(quán)管理等,在查看和操作數(shù)據(jù)時(shí)都要驗(yàn)證數(shù)據(jù)的可信性和完整性。如果缺少對(duì)數(shù)據(jù)流轉(zhuǎn)過程的記錄,就不易發(fā)現(xiàn)數(shù)據(jù)被非法篡改,也不能保障數(shù)據(jù)的可信性和完整性。因此,利用數(shù)據(jù)溯源技術(shù)記錄和追蹤數(shù)據(jù)的流轉(zhuǎn)過程變得尤為重要。

        數(shù)據(jù)溯源可以理解為一種用來(lái)記錄數(shù)據(jù)流轉(zhuǎn)過程中變化的技術(shù)。Wang 等[1]在研究多源異構(gòu)數(shù)據(jù)庫(kù)之間的數(shù)據(jù)流轉(zhuǎn)時(shí),首次提出了一種可以解決“數(shù)據(jù)來(lái)自何處”以及“在追溯數(shù)據(jù)的過程中使用了哪些中間數(shù)據(jù)”這兩個(gè)問題的方案,從此開啟了數(shù)據(jù)溯源的研究。Buneman等[2]正式定義并使用了數(shù)據(jù)溯源術(shù)語(yǔ),豐富了數(shù)據(jù)溯源的含義,并從“why”和“where”兩個(gè)角度闡述數(shù)據(jù)溯源。

        傳統(tǒng)數(shù)據(jù)溯源系統(tǒng)的存儲(chǔ)和管理方式都是中心化的,盡管這種方式具有查詢速度較快和使用較簡(jiǎn)單等優(yōu)點(diǎn),但是存在著單點(diǎn)問題和管理權(quán)限中心化問題,可能會(huì)破壞溯源信息的完整性和可信性。引入?yún)^(qū)塊鏈技術(shù)后將數(shù)據(jù)溯源信息存儲(chǔ)在區(qū)塊鏈中,憑借區(qū)塊鏈的去中心化、時(shí)序數(shù)據(jù)、集體維護(hù)、可編程和安全可信等特點(diǎn),可以有效地保障數(shù)據(jù)溯源信息的可信性和完整性[3]。文獻(xiàn)[4] 提出了一種基于區(qū)塊鏈技術(shù)的云數(shù)據(jù)溯源模型框架ProvChain,將溯源數(shù)據(jù)存儲(chǔ)在區(qū)塊鏈中,保證了數(shù)據(jù)的安全性。文獻(xiàn)[5] 設(shè)計(jì)了一個(gè)基于區(qū)塊鏈的云服務(wù)提供商之間的數(shù)據(jù)共享模型,可以為云計(jì)算提供數(shù)據(jù)溯源和驗(yàn)證方法。文獻(xiàn)[6] 將開放溯源模型(open provenance model,OPM)與區(qū)塊鏈結(jié)合起來(lái),設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)科學(xué)溯源管理模型—SmartProvenance。文獻(xiàn)[7] 利用區(qū)塊鏈技術(shù)為物聯(lián)網(wǎng)中的射頻識(shí)別(radio frequency identification,RFID)數(shù)據(jù)設(shè)計(jì)了一種安全的數(shù)據(jù)溯源模型,提高了RFID 數(shù)據(jù)的安全性。文獻(xiàn)[8] 提出了一種雙鏈模型,也就是將實(shí)體多維授權(quán)信息和動(dòng)態(tài)數(shù)據(jù)分別存儲(chǔ)在兩條鏈上,并在此基礎(chǔ)上設(shè)計(jì)了一種物聯(lián)網(wǎng)動(dòng)態(tài)數(shù)據(jù)信息的分層溯源機(jī)制。文獻(xiàn)[9] 提出了一種基于區(qū)塊鏈的去中心化數(shù)據(jù)溯源方法,同時(shí)設(shè)計(jì)了一套溯源數(shù)據(jù)管理的智能合約,將溯源數(shù)據(jù)存儲(chǔ)到區(qū)塊鏈上,可以確保用戶獲得的溯源數(shù)據(jù)真實(shí)可靠。

        區(qū)塊鏈技術(shù)的引入雖然解決了溯源信息的可信存儲(chǔ)和管理問題,但是還不能有效解決如手機(jī)、物聯(lián)網(wǎng)設(shè)備等資源受限的輕節(jié)點(diǎn)在不可信網(wǎng)絡(luò)中驗(yàn)證溯源信息所需的證明數(shù)據(jù)過大的問題。在現(xiàn)有的區(qū)塊鏈系統(tǒng)中,輕節(jié)點(diǎn)驗(yàn)證一筆交易的有效性需要借助簡(jiǎn)單支付驗(yàn)證(simplified payment verification,SPV),而SPV 需要驗(yàn)證者(輕節(jié)點(diǎn))擁有完整的區(qū)塊頭信息才可以完成驗(yàn)證。一條區(qū)塊鏈中區(qū)塊頭的數(shù)量是隨著區(qū)塊的高度呈線性增長(zhǎng)的,因此對(duì)于一個(gè)區(qū)塊高度過高的區(qū)塊鏈,維護(hù)其完整的區(qū)塊頭信息會(huì)占用輕節(jié)點(diǎn)較多的存儲(chǔ)資源,顯然SPV 不太適用于溯源系統(tǒng)中輕節(jié)點(diǎn)的溯源信息驗(yàn)證。

        本文旨在解決在區(qū)塊鏈溯源系統(tǒng)中輕節(jié)點(diǎn)客戶端驗(yàn)證溯源信息需要占用過多存儲(chǔ)資源的問題,并提出一種基于區(qū)塊鏈的數(shù)據(jù)溯源系統(tǒng)的通用實(shí)現(xiàn)方案。

        1 相關(guān)技術(shù)

        1.1 區(qū)塊鏈

        區(qū)塊鏈由化名“中本聰”的學(xué)者于2008年提出并在比特幣中實(shí)現(xiàn)[10],是一種分布式共享數(shù)據(jù)賬本技術(shù),具有去中心化、不可篡改性、時(shí)序性等特點(diǎn)。

        1)去中心化

        在區(qū)塊鏈網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)都共同管理維護(hù)著一份數(shù)據(jù)賬本,賬本上的每一筆記錄都要經(jīng)過全網(wǎng)節(jié)點(diǎn)的合法性校驗(yàn);一筆交易只有得到足夠多節(jié)點(diǎn)的背書認(rèn)證才會(huì)寫入?yún)^(qū)塊鏈。

        2)不可篡改性

        區(qū)塊鏈以鏈?zhǔn)浇Y(jié)構(gòu)存儲(chǔ)數(shù)據(jù),除了創(chuàng)世區(qū)塊外,每個(gè)區(qū)塊都存儲(chǔ)了上一個(gè)區(qū)塊的Hash值。如果上游區(qū)塊A中的數(shù)據(jù)被修改,其Hash 值隨之改變,那么下游區(qū)塊B中的上一個(gè)區(qū)塊A的Hash 值也會(huì)發(fā)生改變,區(qū)塊B的Hash 值也就相應(yīng)地發(fā)生改變。

        3)時(shí)序性

        每個(gè)區(qū)塊中的時(shí)間戳字段賦予區(qū)塊鏈時(shí)序性,使得區(qū)塊鏈中存儲(chǔ)數(shù)據(jù)具有良好的溯源性。

        區(qū)塊鏈中的每個(gè)區(qū)塊都分為區(qū)塊頭(block head)和區(qū)塊體(block body),其中區(qū)塊頭中包含前一區(qū)塊的Hash 值(prev hash)、區(qū)塊高度(height)、時(shí)間戳(timestamp)、隨機(jī)數(shù)(nonce)以及Merkle 樹根(Merkle root)等字段,而完整的Merkle 樹則存放在區(qū)塊體中,如圖1所示。

        圖1 區(qū)塊數(shù)據(jù)結(jié)構(gòu)Figure 1 Block data structure

        1.2 Merkle 樹

        Merkle 樹(Merkle tree,MT)是Ralph Merkle[11]提出的一種二叉Hash 樹。Merkle 樹的結(jié)構(gòu)如圖2所示,其葉子節(jié)點(diǎn)存儲(chǔ)數(shù)據(jù)元素的Hash 值,而除葉子節(jié)點(diǎn)之外的節(jié)點(diǎn)存放的都是左右子節(jié)點(diǎn)的Hash 值。節(jié)點(diǎn)中Hash 值的計(jì)算公式為

        圖2 Merkle 樹Figure 2 Merkle tree

        式中,nodei,j表示第i層(自下而上)的第j個(gè)節(jié)點(diǎn)(從左向右)的值。

        根據(jù)式(1)依次上溯便可以生成一棵Merkle 樹,而Merkle 樹的根節(jié)點(diǎn)(Merkle root)便是整棵樹的摘要。

        Merkle 樹主要有2 個(gè)優(yōu)點(diǎn):1)對(duì)Merkle 樹中任意數(shù)據(jù)的篡改都會(huì)導(dǎo)致該節(jié)點(diǎn)的父節(jié)點(diǎn)及父節(jié)點(diǎn)以上的節(jié)點(diǎn)發(fā)生改變,最終導(dǎo)致根節(jié)點(diǎn)發(fā)生變化。2)在無(wú)需存儲(chǔ)數(shù)據(jù)集的情況下,可以驗(yàn)證指定數(shù)據(jù)元素是否存在于數(shù)據(jù)集中。

        Merkle 樹廣泛應(yīng)用于無(wú)法保證數(shù)據(jù)可信性的P2P 網(wǎng)絡(luò),例如在區(qū)塊鏈平臺(tái)中使用Merkle樹來(lái)存儲(chǔ)交易信息,并利用Merkle 證明來(lái)驗(yàn)證一個(gè)交易是否存在于區(qū)塊鏈中。Merkle 證明的詳細(xì)流程參見2.1 節(jié)。

        1.3 Merkle 山脈

        Merkle 山脈(Merkle mountain range,MMR)是Peter Todd[12]提出的一種Merkle 樹的變種數(shù)據(jù)結(jié)構(gòu)。在Merkle 山脈中,除葉子節(jié)點(diǎn)外其余節(jié)點(diǎn)的值都是其左右子節(jié)點(diǎn)的Hash值。Merkle 山脈可以提供類似于Merkle 證明的Merkle 山脈證明,能夠證明一個(gè)葉子節(jié)點(diǎn)是否存在于Merkle 山脈之中。與Merkle 樹的不同之處在于:Merkle 樹是一棵完美二叉樹,而Merkle 山脈允許出現(xiàn)不完美的情況,或者說(shuō)Merkle 山脈本身是由多個(gè)完美二叉樹組成的數(shù)據(jù)結(jié)構(gòu)。將Merkle 山脈設(shè)計(jì)成僅追加的數(shù)據(jù)機(jī)構(gòu),在插入時(shí)無(wú)需重構(gòu)Merkle 山脈。這個(gè)特點(diǎn)非常適用于對(duì)區(qū)塊鏈中區(qū)塊頭的承諾,只要構(gòu)建包含全部區(qū)塊頭的Merkle 山脈,就可以證明一個(gè)區(qū)塊是否存在于區(qū)塊鏈中。

        如圖3(a)所示,在一個(gè)Merkle 山脈中可以有多個(gè)子Merkle 樹(稱為山峰),這些Merkle樹的根稱為峰頂;多個(gè)山峰合起來(lái)形成一片山脈,這也是Merkle 山脈的由來(lái)。在B7后追加一個(gè)新區(qū)塊B8,可以發(fā)現(xiàn)Merkle 山脈的3 座山峰變成了整個(gè)山峰,這是因?yàn)樵贛erkle 山脈中出現(xiàn)兩個(gè)高度相同的山峰會(huì)觸發(fā)合并操作。合并操作是對(duì)兩個(gè)高度相同山峰的峰頂節(jié)點(diǎn)進(jìn)行Hash 運(yùn)算后生成一個(gè)新節(jié)點(diǎn),該節(jié)點(diǎn)的左右子節(jié)點(diǎn)是需要合并的兩座山峰的峰頂節(jié)點(diǎn)。一旦追加B8,B7和B8兩個(gè)區(qū)塊就會(huì)觸發(fā)合并操作,合并成峰頂為H5、高度為2 的新山峰。因?yàn)橐呀?jīng)存在一個(gè)高度為2、峰頂為H4的山峰,所以繼續(xù)觸發(fā)合并操作。依次執(zhí)行合并操作直到?jīng)]有兩個(gè)高度相同的山峰為止,最終形成一座如圖3(b)所示的山峰。

        圖3 Merkle 山脈追加節(jié)點(diǎn)Figure 3 MMR append node

        當(dāng)Merkle 山脈中只有一座山峰時(shí),峰頂節(jié)點(diǎn)是Merkle 山脈的根Hash。如圖3(a)所示,在Merkle 山脈中有多個(gè)山峰的情況,此時(shí)需將多個(gè)峰頂節(jié)點(diǎn)的Hash 值合并,得到一個(gè)新的Hash 值,這個(gè)Hash 值是Merkle 山脈的根Hash。例如計(jì)算圖3(a)中Merkle 山脈的根Hash,需依次計(jì)算Hash(H3,Hash(B7,H4)),獲得Merkle 山脈的根Hash。

        2 溯源數(shù)據(jù)的高效可信驗(yàn)證方法

        在基于區(qū)塊鏈的數(shù)據(jù)溯源系統(tǒng)中,全節(jié)點(diǎn)在本地維護(hù)了完整的區(qū)塊鏈,因此可以獨(dú)立地驗(yàn)證數(shù)據(jù)溯源信息的完整性和真實(shí)性。隨著時(shí)代的發(fā)展,溯源數(shù)據(jù)驗(yàn)證的發(fā)起設(shè)備越來(lái)越傾向于智能手機(jī)、物聯(lián)網(wǎng)設(shè)備等輕節(jié)點(diǎn)。這些設(shè)備的網(wǎng)絡(luò)帶寬、存儲(chǔ)等硬件資源有限,不能像全節(jié)點(diǎn)一樣實(shí)時(shí)維護(hù)完整的區(qū)塊鏈信息。區(qū)塊鏈系統(tǒng)如比特幣、以太坊等都為輕節(jié)點(diǎn)驗(yàn)證交易信息提供了SPV 方式,但SPV 不太適合于溯源系統(tǒng)中輕節(jié)點(diǎn)的溯源信息驗(yàn)證。例如在以太坊中一個(gè)區(qū)塊頭的大小約為508 字節(jié),截止到2020年9月,以太坊區(qū)塊的高度將近1 080 萬(wàn),全部區(qū)塊頭大概有5G。維護(hù)如此龐大的區(qū)塊頭信息對(duì)于輕節(jié)點(diǎn)來(lái)說(shuō)非常不友好。為解決此問題,需要分析以SPV 方法驗(yàn)證一條溯源數(shù)據(jù)的真實(shí)性和可信性的過程,驗(yàn)證過程可以分為兩個(gè)步驟:

        步驟1交易包含證明。采用Merkle 證明就可以證明一條溯源數(shù)據(jù)是否存在于一棵Merkle 樹中,從而證明這條溯源數(shù)據(jù)是否存在于包含這棵Merkle 樹的區(qū)塊中。

        步驟2區(qū)塊包含證明。將包含待驗(yàn)證溯源信息的區(qū)塊頭與本地維護(hù)的完整區(qū)塊頭中對(duì)應(yīng)高度的區(qū)塊頭進(jìn)行對(duì)比,從而判斷包含待驗(yàn)證溯源信息的區(qū)塊是否存在于區(qū)塊鏈中。

        步驟1 是為了驗(yàn)證一條溯源信息是否存在于一個(gè)區(qū)塊中,步驟2 是為了驗(yàn)證一個(gè)區(qū)塊是否屬于區(qū)塊鏈。在驗(yàn)證過程中,交易包含證明占用的資源并不多;區(qū)塊包含證明部分的驗(yàn)證需要完整的區(qū)塊頭信息,這會(huì)占用過多的設(shè)備資源。文獻(xiàn)[13] 在FlyClient 中采用Merkle山脈高效承諾機(jī)制,將區(qū)塊包含證明所需的完整區(qū)塊頭信息降低到對(duì)數(shù)級(jí)別。本文將借鑒FlyClient 使用的Merkle 山脈承諾機(jī)制完成區(qū)塊包含證明,降低了基于輕節(jié)點(diǎn)驗(yàn)證溯源信息所需要的資源,從而提高了驗(yàn)證效率。

        下面分別從交易包含證明和區(qū)塊包含證明兩方面介紹基于Merkle 山脈承諾機(jī)制的SPV方法。

        2.1 交易包含證明

        交易包含證明的核心是基于Merkle 樹的Merkle 證明,其過程可以通過如下的例子加以說(shuō)明。要證明圖4中的Tx6是否屬于Merkle 樹,需要提供圖4中圈出的節(jié)點(diǎn),這些節(jié)點(diǎn)組成的集合就是Merkle 證明集合。下面給出尋找Merkle 證明集合的步驟。

        圖4 Merkle 證明Figure 4 Merkle proof

        步驟1從待驗(yàn)證的葉子節(jié)點(diǎn)依次向其父節(jié)點(diǎn)上溯,直至到達(dá)Merkle 樹的根節(jié)點(diǎn),經(jīng)過的路徑稱為Merkle 路徑(Merkle path)。

        步驟2將Merkle 路徑上所有節(jié)點(diǎn)的兄弟節(jié)點(diǎn)按照從下而上的順序添加到Merkle 證明集合中。

        經(jīng)計(jì)算可以得出Tx6的Merkle 路徑為Tx6→C →F,如圖4中實(shí)線部分所示。這條路徑上所有節(jié)點(diǎn)的兄弟節(jié)點(diǎn)集合為{Tx5,D,E},此集合就是Tx6的Merkle 證明。將集合中的節(jié)點(diǎn)與Tx6一起進(jìn)行如下運(yùn)算:

        最終可以獲得Merkle root′,再將它與Merkle 樹真實(shí)的Merkle root 進(jìn)行比較,如果相等則證明Tx6存在于這棵Merkle 樹中且沒有被篡改。

        根據(jù)上述例子可以分析出Merkle 證明的大小等于m ?1,其中m表示Merkle 樹的高度。因?yàn)镸ekrle 樹的葉子節(jié)點(diǎn)的數(shù)目為N= 2m?1,所以可以推導(dǎo)出擁有N個(gè)葉子節(jié)點(diǎn)的Merkle 樹所包含證明信息的大小為lbN。

        2.2 區(qū)塊包含證明

        交易包含證明可以快速輕量地驗(yàn)證一筆交易是否存在于區(qū)塊中是因?yàn)椴捎昧薓erkle 樹的承諾機(jī)制。在區(qū)塊包含證明中,Merkle 樹數(shù)據(jù)結(jié)構(gòu)并不適合區(qū)塊頭的承諾,這是因?yàn)殡S著區(qū)塊鏈系統(tǒng)的運(yùn)行,區(qū)塊的高度不停地呈線性增長(zhǎng),而在Merkle 樹中追加數(shù)據(jù)需要重構(gòu)Merkle 樹。若在區(qū)塊包含證明中引入Merkle 證明,就需要引入支持動(dòng)態(tài)追加的Merkle 山脈承諾機(jī)制對(duì)區(qū)塊頭進(jìn)行承諾。每當(dāng)有新的區(qū)塊加入?yún)^(qū)塊鏈,只要在Merkle 山脈中動(dòng)態(tài)追加新區(qū)塊即可,而不必重構(gòu)Merkle 山脈。

        引入Merkle 山脈對(duì)區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)的改動(dòng)很小,只要在區(qū)塊頭中增加一個(gè)Merkle 山脈的根Hash 即可。如圖5所示,將從創(chuàng)世區(qū)塊block1開始到block(n?1)為止的全部區(qū)塊頭一起組成Merkle 山脈,并將Merkle 山脈根Hash 寫入blockn的MMR root 字段。只要blockn之前任意區(qū)塊頭的內(nèi)容發(fā)生改變都會(huì)引起blockn中MMR root 值的改變。利用Merkle 山脈承諾機(jī)制對(duì)區(qū)塊頭承諾后,就可以根據(jù)Merkle 山脈證明完成區(qū)塊包含證明。

        圖5 在區(qū)塊鏈中添加Merkle 山脈Figure 5 Add MMR to blockchain

        下面的例子可以說(shuō)明如何利用Merkle 山脈證明來(lái)完成區(qū)塊包含證明的過程。如圖6所示,若證明區(qū)塊頭B9存在于區(qū)塊鏈中,就需要提供圖6中圈出節(jié)點(diǎn)的Hash 值。這些圈出的節(jié)點(diǎn)集合稱為Merkle 山脈證明集合。

        圖6 Merkle 山脈證明Figure 6 MMR proof

        下面給出尋找Merkle 山脈證明集合的步驟。

        步驟1從待驗(yàn)證的節(jié)點(diǎn)出發(fā),自下而上地向其所在山峰的峰頂上溯,則經(jīng)過的路徑稱為Merkle 山脈路徑(MMR path)。

        步驟2將Merkle 山脈路徑上所有節(jié)點(diǎn)的兄弟節(jié)點(diǎn)按照自下而上的順序添加到Merkle山脈證明集合中。

        步驟3將待驗(yàn)證節(jié)點(diǎn)所在的右側(cè)山峰的峰頂加入Merkle 山脈證明集合。

        步驟4將待驗(yàn)證節(jié)點(diǎn)所在的左側(cè)山峰的峰頂加入Merkle 山脈證明集合。

        對(duì)于尋找圖6中B9的Merkle 山脈證明集合來(lái)說(shuō),步驟1 可以得到Merkle 山脈路徑為B9→H8,步驟2 得到Merkle 山脈證明集合為{B10,H9},步驟3 得到Merkle 山脈證明集合為{B10,H9,H11,B15},步驟4 可以獲得最終的Merkle 山脈證明集合為{B10,H9,H11,B15,H7}。將Merkle 山脈證明集合與待驗(yàn)證的區(qū)塊頭B9一起進(jìn)行如下運(yùn)算:

        式中,H() 表示Hash 函數(shù)。最終可以根據(jù)Merkle 山脈證明集合生成Merkle 山脈的根Hash為MMR root′,將它與真實(shí)的MMR root 進(jìn)行比較,如果相等則證明B9存在于區(qū)塊鏈中且沒有被篡改。

        本文借鑒了FlyClient[13]中的輕節(jié)點(diǎn)認(rèn)證方法,將SPV 中的區(qū)塊存在證明所需要的區(qū)塊頭數(shù)量N降低到lbN。輕節(jié)點(diǎn)只需在區(qū)塊鏈網(wǎng)絡(luò)中同步一個(gè)最新的區(qū)塊頭,再根據(jù)區(qū)塊頭中MMR root 的值并結(jié)合區(qū)塊包含證明和交易包含證明就可以有效地驗(yàn)證區(qū)塊鏈上是否包含一筆交易。

        3 基于區(qū)塊鏈的數(shù)據(jù)溯源系統(tǒng)設(shè)計(jì)

        3.1 系統(tǒng)架構(gòu)

        在第2 節(jié)的Merkle 樹和Merkle 山脈承諾機(jī)制的基礎(chǔ)上設(shè)計(jì)一個(gè)基于區(qū)塊鏈的通用數(shù)據(jù)溯源系統(tǒng),系統(tǒng)架構(gòu)如圖7所示,自底向上依次分為區(qū)塊鏈層、溯源模型層、通用溯源業(yè)務(wù)層和應(yīng)用層。

        圖7 數(shù)據(jù)溯源系統(tǒng)架構(gòu)Figure 7 Data provenance system framework

        1)區(qū)塊鏈層

        將區(qū)塊鏈的相關(guān)業(yè)務(wù)封裝在該層,包括用于加解密算法和Hash 算法的密碼算法模塊、用于保持網(wǎng)絡(luò)中各個(gè)節(jié)點(diǎn)賬本一致性的共識(shí)機(jī)制模塊、用于區(qū)塊鏈網(wǎng)絡(luò)中各節(jié)點(diǎn)間通信的P2P網(wǎng)絡(luò)模塊以及用于賬本持久化到本地存儲(chǔ)(區(qū)塊鏈文件系統(tǒng)或數(shù)據(jù)庫(kù)系統(tǒng))的數(shù)據(jù)持久化模塊等區(qū)塊鏈相關(guān)模塊。

        2)溯源模型層

        將ProVOC 溯源模型融入?yún)^(qū)塊鏈溯源,借助ProVOC 模型中各種構(gòu)件來(lái)描述數(shù)據(jù)溯源記錄,并將溯源信息序列化成JSON 格式存儲(chǔ)在區(qū)塊鏈中。

        3)通用溯源業(yè)務(wù)層

        為區(qū)塊鏈溯源系統(tǒng)提供通用的業(yè)務(wù)服務(wù),如對(duì)執(zhí)行實(shí)體和查詢用戶進(jìn)行權(quán)限認(rèn)證的身份管理模塊、將溯源數(shù)據(jù)提交到區(qū)塊鏈中的溯源數(shù)據(jù)提交模塊、查詢區(qū)塊鏈中溯源數(shù)據(jù)的查詢模塊以及驗(yàn)證溯源數(shù)據(jù)真實(shí)性和可靠性的驗(yàn)證模塊等。在通用溯源業(yè)務(wù)層將這些模塊封裝起來(lái),并以API 接口的形式開放給溯源應(yīng)用調(diào)用。

        4)應(yīng)用層

        本層與具體的溯源領(lǐng)域?qū)?,根?jù)溯源領(lǐng)域具體的需求和業(yè)務(wù)場(chǎng)景編寫應(yīng)用程序。在應(yīng)用中調(diào)用通用溯源業(yè)務(wù)層提供的API 接口以實(shí)現(xiàn)溯源數(shù)據(jù)上鏈、查詢、驗(yàn)證等操作。

        3.2 ProVOC 數(shù)據(jù)溯源描述模型

        數(shù)據(jù)溯源的描述模型旨在建立一套溯源信息的通用描述標(biāo)準(zhǔn)和規(guī)范。第1 個(gè)通用溯源模型是首屆國(guó)際溯源和標(biāo)注會(huì)議(international provenance and annotation workshop,IPAW)發(fā)布的OPM[14]。萬(wàn)維網(wǎng)聯(lián)盟(world wide Web consortium,W3C)對(duì)OPM 進(jìn)行重大修改后發(fā)布了PROV 溯源標(biāo)準(zhǔn)[15]。中國(guó)于2017年11月1日正式發(fā)布《數(shù)據(jù)溯源描述模型》[16]標(biāo)準(zhǔn),并于2018年5月1日起正式實(shí)施該標(biāo)準(zhǔn)。國(guó)家標(biāo)準(zhǔn)中的數(shù)據(jù)溯源描述(provenance vocabulary,ProVOC)模型相對(duì)于其他溯源模型來(lái)說(shuō),是一個(gè)較為輕量的模型,可以根據(jù)具體的溯源領(lǐng)域靈活擴(kuò)展。

        選取較為輕量的ProVOC 模型作為本文系統(tǒng)的溯源模型。ProVOC 模型由數(shù)據(jù)、活動(dòng)和執(zhí)行實(shí)體3 個(gè)一級(jí)類構(gòu)件組成。數(shù)據(jù)構(gòu)件是對(duì)需要溯源的事物的描述,包括參數(shù)和數(shù)據(jù)集2個(gè)二級(jí)類構(gòu)件,其中數(shù)據(jù)集可以根據(jù)具體的溯源領(lǐng)域進(jìn)行定制?;顒?dòng)構(gòu)件是由執(zhí)行實(shí)體發(fā)起或控制的一個(gè)或多個(gè)連續(xù)的動(dòng)作,主要用來(lái)描述數(shù)據(jù)是如何從上一個(gè)狀態(tài)轉(zhuǎn)換到下一個(gè)狀態(tài)的。執(zhí)行實(shí)體則是指活動(dòng)的發(fā)起者,包括人類執(zhí)行實(shí)體和非人類執(zhí)行實(shí)體。各個(gè)一級(jí)類構(gòu)件之間的關(guān)系如圖8所示。

        圖8 ProVOC 模型結(jié)構(gòu)Figure 8 ProVOC model structure

        3.3 溯源數(shù)據(jù)的可信存儲(chǔ)

        為了更好地保存并追蹤數(shù)據(jù)的溯源記錄,溯源信息需要依照ProVOC 溯源模型中的定義轉(zhuǎn)化為JSON 格式的格式化溯源數(shù)據(jù),然后保存到區(qū)塊鏈中。下列JSON 文件記錄了一條數(shù)據(jù)溯源信息,其內(nèi)容為人類執(zhí)行體“group1.user1”使用非人類執(zhí)行體“group1.computer1”,在時(shí)間為“2020-09-10T20:39:51”、坐標(biāo)為“29.532326,106.607960”的地點(diǎn),執(zhí)行了“合并”活動(dòng),操作“Hello”和“World”兩條數(shù)據(jù),最終將“Hello”和“World”合并為“Hello world”。

        JSON 溯源信息文件示例

        每個(gè)執(zhí)行實(shí)體都需要在溯源系統(tǒng)中注冊(cè)并使用非對(duì)稱加密算法生成一個(gè)公私鑰對(duì),其中私鑰用于數(shù)字簽名,公鑰用于驗(yàn)證數(shù)字簽名和標(biāo)識(shí)執(zhí)行實(shí)體的身份。執(zhí)行實(shí)體需要使用自己的私鑰對(duì)其操作數(shù)據(jù)的Hash 值進(jìn)行加密后生成數(shù)字簽名。數(shù)字簽名可用于驗(yàn)證該溯源信息是否為合法的執(zhí)行實(shí)體發(fā)起的操作,同時(shí)還可以驗(yàn)證溯源信息有沒有被篡改。該驗(yàn)證成立的前提是這條溯源數(shù)據(jù)必須存在于區(qū)塊鏈中;若這條溯源數(shù)據(jù)沒有通過可信性和真實(shí)性驗(yàn)證,其包含的證明信息是沒有用的。

        3.4 溯源數(shù)據(jù)的可信查詢和驗(yàn)證

        要實(shí)現(xiàn)第2 節(jié)中描述的可信查詢驗(yàn)證方法,就要在區(qū)塊頭中增加一個(gè)用于存儲(chǔ)Merkle 山脈根Hash 值的字段,同時(shí)在上鏈驗(yàn)證的過程中增加對(duì)Merkle 山脈根Hash 字段合法性的驗(yàn)證過程。

        圖9描述了溯源數(shù)據(jù)查詢流程。當(dāng)一個(gè)輕節(jié)點(diǎn)需要查詢溯源數(shù)據(jù)的真實(shí)性和可信性時(shí),只需向區(qū)塊鏈網(wǎng)絡(luò)中發(fā)起查詢請(qǐng)求即可;區(qū)塊鏈網(wǎng)絡(luò)中的全節(jié)點(diǎn)收到查詢請(qǐng)求后在本地維護(hù)的區(qū)塊鏈中查詢指定數(shù)據(jù)的溯源信息,并生成交易包含證明和區(qū)塊包含證明。將溯源信息、區(qū)塊包含證明和交易包含證明打包成溯源數(shù)據(jù)包,然后返回給發(fā)起查詢的輕節(jié)點(diǎn)用戶。輕節(jié)點(diǎn)在發(fā)起查詢的同時(shí)需要在區(qū)塊鏈網(wǎng)絡(luò)同步最新的區(qū)塊頭,以獲得最新的Merkle 山脈的根Hash 進(jìn)行MMR 驗(yàn)證。輕節(jié)點(diǎn)收到溯源數(shù)據(jù)包后,利用溯源數(shù)據(jù)包中的Merkle 證明集合和Merkle 山脈證明集合就可以在本地完成溯源信息的可信性和真實(shí)性的驗(yàn)證。

        圖9 溯源數(shù)據(jù)查詢流程Figure 9 Data provenance query process

        4 結(jié) 語(yǔ)

        本文針對(duì)區(qū)塊鏈數(shù)據(jù)溯源系統(tǒng)中輕節(jié)點(diǎn)查詢驗(yàn)證溯源信息占用設(shè)備資源過多的問題,引入可動(dòng)態(tài)追加數(shù)據(jù)的變體Merkel 樹數(shù)據(jù)結(jié)構(gòu)MMR。然后,基于MMR 提出一種高效的溯源數(shù)據(jù)可信驗(yàn)證查詢方法,將SPV 中需要的N個(gè)區(qū)塊頭信息減少到lbN,大大降低了查詢驗(yàn)證溯源信息所需要的設(shè)備資源。根據(jù)高效的溯源數(shù)據(jù)可信查詢方法設(shè)計(jì)了一種基于區(qū)塊鏈的數(shù)據(jù)溯源通用系統(tǒng),該系統(tǒng)基于ProVOC 溯源模型將溯源信息封裝成JSON 文件,利用非對(duì)稱加密和Hash 算法對(duì)執(zhí)行實(shí)體的身份進(jìn)行認(rèn)證,保證了溯源數(shù)據(jù)的可信存儲(chǔ)。通過API 接口將溯源服務(wù)提供給不同領(lǐng)域的數(shù)據(jù)溯源應(yīng)用。

        猜你喜歡
        信息模型
        一半模型
        重要模型『一線三等角』
        重尾非線性自回歸模型自加權(quán)M-估計(jì)的漸近分布
        訂閱信息
        中華手工(2017年2期)2017-06-06 23:00:31
        3D打印中的模型分割與打包
        FLUKA幾何模型到CAD幾何模型轉(zhuǎn)換方法初步研究
        展會(huì)信息
        一個(gè)相似模型的應(yīng)用
        信息
        健康信息
        祝您健康(1987年3期)1987-12-30 09:52:32
        国产av午夜精品一区二区入口| 中文字幕人妻丝袜美腿乱| 欧美成人免费高清视频| 精品999无码在线观看| 日本韩国三级在线观看| 国产av熟女一区二区三区| 日韩成人大屁股内射喷水| 任你躁国产自任一区二区三区| 福利视频自拍偷拍视频| 大陆老熟女自拍自偷露脸| 激情综合色综合久久综合| 亚洲午夜精品久久久久久人妖| 亚洲AV无码久久久久调教| 亚洲成人一区二区三区不卡| 国产免费无遮挡吸奶头视频 | 亚洲黄色电影| 亚洲AV秘 片一区二区三区| 国产精品一区二区三区四区亚洲 | 国产精品久久人妻无码| 亚洲一区欧美二区| 日本精品人妻一区二区三区| 亚洲美女av一区二区在线| 亚洲国产精品第一区二区| 国产偷国产偷高清精品| 亚洲一区二区视频免费看| 欧洲美女熟乱av| 亚洲另类精品无码专区| 国产AV秘 无码一区二区三区| 亚洲乱码一区二区av高潮偷拍的| 日韩av无码中文无码电影| 国产成人精品三级麻豆| 国产美女自拍国语对白| 成人国产激情自拍视频| 色综合视频一区中文字幕| 好爽受不了了要高潮了av| 日韩精品久久伊人中文字幕| 久久青青草原国产毛片| 亚洲欧洲偷自拍图片区| 无码免费午夜福利片在线| 毛片在线播放亚洲免费中文网| 国产狂喷潮在线观看|