劉孝保,楊 林,易 斌,陰艷超,*,孫海彬,顧文娟
(1.昆明理工大學(xué)機(jī)電工程學(xué)院,云南 昆明 650500;2.云南中煙工業(yè)有限責(zé)任公司技術(shù)中心,云南 昆明 650231)
水果、蔬菜作為人類維生素和礦物質(zhì)的重要來源,為人體提供大量的營養(yǎng)[1],但是近年來農(nóng)藥殘留超標(biāo)、過量使用食品添加劑、違規(guī)使用化學(xué)藥品、生產(chǎn)環(huán)境不達(dá)標(biāo)[2]等事件頻發(fā),嚴(yán)重危害了消費(fèi)者的健康安全,造成社會公眾信任度降低。食品質(zhì)量安全溯源系統(tǒng)利用自動識別和IT技術(shù)記錄食品從生產(chǎn)到餐桌整個過程的關(guān)鍵信息,當(dāng)發(fā)生食品安全意外事件時,可以快速地定位到出現(xiàn)問題的環(huán)節(jié),明確責(zé)任主體,及時召回問題產(chǎn)品,這是有效保障食品質(zhì)量安全的方法之一[3-4]。然而傳統(tǒng)農(nóng)產(chǎn)品溯源系統(tǒng)依靠中心化數(shù)據(jù)庫來存儲、傳輸和共享信息[5-7],存在供應(yīng)鏈數(shù)據(jù)不透明、信息易被篡改、監(jiān)管效率低、社會公信力不足等問題[8-10]。區(qū)塊鏈技術(shù)具有去中心化、無法篡改、可編程和安全可信等特點(diǎn)[11-14],將區(qū)塊鏈技術(shù)融入到傳統(tǒng)溯源體系中,能夠有效保證食品追溯信息的安全性和可靠性[15]。
近年來,國內(nèi)外學(xué)者利用區(qū)塊鏈技術(shù)在農(nóng)產(chǎn)品質(zhì)量安全溯源領(lǐng)域進(jìn)行了較為深入的探索。Abijaude等[16]提出了一種基于區(qū)塊鏈的可可溯源方法,以提高可可行業(yè)的可持續(xù)供應(yīng)鏈透明度。An等[17]提出了一種面向農(nóng)產(chǎn)品供應(yīng)鏈安全管理的區(qū)塊鏈模型,通過以太坊平臺設(shè)計(jì)了農(nóng)產(chǎn)品追溯系統(tǒng),有效解決了傳統(tǒng)溯源系統(tǒng)數(shù)據(jù)易被篡改和透明度低的問題。陶啟等[18]構(gòu)建了基于區(qū)塊鏈技術(shù)的食品質(zhì)量安全管理系統(tǒng),開發(fā)了基于危害因子的風(fēng)險評估和安全溯源技術(shù),有效提高了食品質(zhì)量安全的監(jiān)管效率。于麗娜等[19]分析了農(nóng)產(chǎn)品供應(yīng)鏈溯源需求,提出了基于區(qū)塊鏈的農(nóng)產(chǎn)品供應(yīng)鏈信息追溯模型,用以保障供應(yīng)鏈信息的安全存儲和共享。孫俊等[20]為了解決傳統(tǒng)水產(chǎn)品追溯系統(tǒng)數(shù)據(jù)存儲不安全的問題,將區(qū)塊鏈技術(shù)融入現(xiàn)有水產(chǎn)品溯源系統(tǒng),提高了追溯數(shù)據(jù)的可靠性。許繼平等[21]通過分析稻米供應(yīng)鏈信息流轉(zhuǎn)特點(diǎn),構(gòu)建了基于區(qū)塊鏈的稻米供應(yīng)鏈監(jiān)管模型,定制化設(shè)計(jì)了多業(yè)務(wù)邏輯監(jiān)管智能合約,并結(jié)合實(shí)際案例對系統(tǒng)進(jìn)行驗(yàn)證分析。上述研究通過區(qū)塊鏈技術(shù)實(shí)現(xiàn)了農(nóng)產(chǎn)品質(zhì)量安全溯源,有效解決了傳統(tǒng)溯源系統(tǒng)存在的問題,但是將農(nóng)產(chǎn)品追溯信息直接寫入?yún)^(qū)塊鏈后,隨著節(jié)點(diǎn)數(shù)量的拓展和交易數(shù)據(jù)的劇增,區(qū)塊鏈數(shù)據(jù)查詢效率低和存儲負(fù)載過大的問題也隨之出現(xiàn)[22]。
為解決上述問題,部分學(xué)者將區(qū)塊鏈技術(shù)與數(shù)據(jù)庫相結(jié)合。楊信廷等[23]設(shè)計(jì)了基于區(qū)塊鏈的果蔬溯源數(shù)據(jù)存儲模型,提出了“區(qū)塊鏈”+“數(shù)據(jù)庫”鏈上鏈下協(xié)同存儲架構(gòu),鏈上鏈下協(xié)同驗(yàn)證溯源數(shù)據(jù)的安全性,有效提高了區(qū)塊鏈數(shù)據(jù)的查詢效率。劉雙印等[24]采用區(qū)塊鏈技術(shù)構(gòu)建了農(nóng)產(chǎn)品質(zhì)量安全追溯系統(tǒng),提出了鏈上鏈下雙模協(xié)同存儲策略,解決了區(qū)塊鏈網(wǎng)絡(luò)中節(jié)點(diǎn)負(fù)載過大和查詢效率低的問題。許繼平等[25]構(gòu)建了基于糧油供應(yīng)鏈的鏈上鏈下雙模存儲機(jī)制,提高了區(qū)塊鏈的運(yùn)行效率。鏈上鏈下協(xié)同存儲方案雖然緩解了存儲壓力,但系統(tǒng)中心化程度也隨之提高[26]。部分學(xué)者通過多鏈架構(gòu)擴(kuò)充了區(qū)塊鏈溯源總體容量。于華竟等[27]采用多鏈架構(gòu)構(gòu)建了雜糧區(qū)塊鏈追溯系統(tǒng),以追溯鏈為主鏈,各企業(yè)間多鏈為從鏈,將公開信息存儲在主鏈,隱私數(shù)據(jù)存儲在從鏈,緩解了單鏈存儲壓力。孫傳恒等[28]將區(qū)塊鏈多鏈架構(gòu)運(yùn)用到果蔬溯源應(yīng)用場景中,在供應(yīng)鏈各環(huán)節(jié)間創(chuàng)建多條追溯鏈,將追溯信息隔離存儲在多條鏈上以緩解數(shù)據(jù)存儲壓力。此外,部分學(xué)者提出了有向無環(huán)圖(directed acyclic graph,DAG)區(qū)塊鏈[29-31],通過將傳統(tǒng)區(qū)塊鏈單鏈結(jié)構(gòu)變成DAG的網(wǎng)狀拓?fù)浣Y(jié)構(gòu),有效提升了區(qū)塊鏈的并發(fā)性和可擴(kuò)展性。上述研究在果蔬質(zhì)量安全溯源方面取得了一些顯著的成果,利用區(qū)塊鏈技術(shù)構(gòu)建具有去中心化、數(shù)據(jù)不可篡改、安全可信的果蔬質(zhì)量安全溯源體系,成功提高了農(nóng)產(chǎn)品供應(yīng)鏈的可追溯性和安全性。但目前基于區(qū)塊鏈的食品溯源系統(tǒng)僅存儲食品流通過程中的部分信息,溯源信息的深度不足,且傳統(tǒng)區(qū)塊鏈采用順序表的存儲結(jié)構(gòu),溯源數(shù)據(jù)無法關(guān)聯(lián)地存儲,導(dǎo)致了溯源數(shù)據(jù)間關(guān)聯(lián)性缺失及數(shù)據(jù)查詢效率低等問題。
基于以上問題,本研究提出了一種圖區(qū)塊鏈模型。首先構(gòu)建果蔬供應(yīng)鏈深度溯源圖區(qū)塊鏈模型,利用圖理論設(shè)計(jì)圖狀區(qū)塊數(shù)據(jù)結(jié)構(gòu),將傳統(tǒng)區(qū)塊鏈結(jié)構(gòu)中順序表的存儲結(jié)構(gòu)改變?yōu)楸阌谏疃人菰葱畔⒋鎯Φ膱D結(jié)構(gòu),以實(shí)現(xiàn)深度溯源信息的關(guān)聯(lián)存儲。在此基礎(chǔ)上,設(shè)計(jì)圖區(qū)塊鏈映射模型,通過該模型建立物理區(qū)塊數(shù)據(jù)與圖區(qū)塊鏈模型之間的映射關(guān)系。然后根據(jù)果蔬供應(yīng)鏈流程邏輯結(jié)構(gòu)建立“圖區(qū)塊頂點(diǎn)”“圖區(qū)塊邊”“圖區(qū)塊標(biāo)簽”以及“圖區(qū)塊屬性”組成的圖區(qū)塊數(shù)據(jù)架構(gòu),設(shè)計(jì)并編寫數(shù)據(jù)存儲、查詢與權(quán)限管理智能合約。最后,基于XuperChain平臺開發(fā)圖區(qū)塊鏈模型,并與傳統(tǒng)區(qū)塊鏈進(jìn)行性能對比。本研究可為實(shí)現(xiàn)基于區(qū)塊鏈的果蔬供應(yīng)鏈深度溯源、數(shù)據(jù)的快速查詢和開銷平衡的研究提供新的方法和思路。
果蔬供應(yīng)鏈?zhǔn)窃诠呱a(chǎn)原料供應(yīng)商、生產(chǎn)企業(yè)、收儲企業(yè)、加工企業(yè)、物流公司、銷售商、消費(fèi)者等眾多參與者之間建立的一種協(xié)作關(guān)系。果蔬供應(yīng)鏈溯源信息具有高深度、高關(guān)聯(lián)性的特點(diǎn)。供應(yīng)鏈包括生產(chǎn)、收儲、加工、運(yùn)輸、銷售5 個環(huán)節(jié),每個環(huán)節(jié)又包含多個亞環(huán)節(jié),每個亞環(huán)節(jié)又包含多個步驟,例如生產(chǎn)環(huán)節(jié)包括選種、播種、施肥、打藥、灌溉、修枝、采收等亞環(huán)節(jié),其中施肥亞環(huán)節(jié)又包含一次施肥、追加施肥等多個步驟。供應(yīng)鏈溯源信息主要由參與實(shí)體及產(chǎn)品之間復(fù)雜的關(guān)系構(gòu)成[32],例如農(nóng)民與農(nóng)場之間是工作關(guān)系、肥料與農(nóng)作物之間是施肥關(guān)系、各企業(yè)之間是交易關(guān)系等。因此,本研究提取了供應(yīng)鏈各環(huán)節(jié)關(guān)鍵信息并將其劃分為實(shí)體數(shù)據(jù)與關(guān)系數(shù)據(jù),如表1所示。
表1 果蔬供應(yīng)鏈關(guān)鍵信息分類Table 1 Key information classification of the fruit and vegetable supply chain
果蔬供應(yīng)鏈深度溯源是對供應(yīng)鏈全流程、全生命周期所涉及的數(shù)據(jù)以及數(shù)據(jù)之間的關(guān)系進(jìn)行溯源。目前通過傳統(tǒng)區(qū)塊鏈構(gòu)建的果蔬供應(yīng)鏈溯源系統(tǒng)主要存在以下問題:1)溯源信息深度不足。果蔬供應(yīng)鏈溯源信息具有高深度的特點(diǎn)。對于果蔬產(chǎn)品來說,亞環(huán)節(jié)所涉及的深度溯源信息較一般商品更為重要,但現(xiàn)有通過區(qū)塊鏈技術(shù)構(gòu)建的果蔬供應(yīng)鏈溯源系統(tǒng)并沒有存儲供應(yīng)鏈各環(huán)節(jié)的深度信息,多數(shù)僅限于上鏈單段果蔬產(chǎn)品流通過程中的部分?jǐn)?shù)據(jù)。當(dāng)發(fā)生食品安全問題時,難以實(shí)現(xiàn)全產(chǎn)業(yè)鏈的追蹤溯源,無法快速確定出現(xiàn)問題的環(huán)節(jié)。2)溯源數(shù)據(jù)關(guān)聯(lián)性不足。果蔬供應(yīng)鏈追溯數(shù)據(jù)具有高信息關(guān)聯(lián)性。傳統(tǒng)區(qū)塊鏈只能實(shí)現(xiàn)串行化的賬本增加操作,數(shù)據(jù)存儲具有隨機(jī)性,無法將溯源數(shù)據(jù)之間的關(guān)聯(lián)性很好地進(jìn)行表征與存儲,導(dǎo)致數(shù)據(jù)之間缺少關(guān)聯(lián)關(guān)系,進(jìn)而無法將供應(yīng)鏈各環(huán)節(jié)數(shù)據(jù)和業(yè)務(wù)進(jìn)行有效串聯(lián),增加了供應(yīng)鏈數(shù)據(jù)處理和監(jiān)管的難度。3)查詢效率低。果蔬供應(yīng)鏈溯源系統(tǒng)需要存儲果蔬全生命周期的大量數(shù)據(jù),消費(fèi)者進(jìn)行一次溯源查詢操作涉及生產(chǎn)、收儲、加工、運(yùn)輸、銷售多個環(huán)節(jié),需要查詢多條記錄。然而傳統(tǒng)區(qū)塊鏈系統(tǒng)查詢功能較為單一,查詢結(jié)果具有局限性[33],查詢操作非常消耗系統(tǒng)資源和時間,相較于傳統(tǒng)數(shù)據(jù)庫查詢效率低。
由于傳統(tǒng)區(qū)塊鏈在果蔬供應(yīng)鏈區(qū)塊鏈模型構(gòu)建中存在問題,本研究提出基于圖區(qū)塊鏈的果蔬供應(yīng)鏈深度溯源模型(圖1)。其基本思路為:首先通過物聯(lián)網(wǎng)設(shè)備采集供應(yīng)鏈各參與主體溯源數(shù)據(jù),并將其規(guī)整為實(shí)體數(shù)據(jù)和關(guān)系數(shù)據(jù)的形式來表征數(shù)據(jù)之間的關(guān)聯(lián)性;然后調(diào)用智能合約將數(shù)據(jù)上傳到區(qū)塊鏈網(wǎng)絡(luò),網(wǎng)絡(luò)中的節(jié)點(diǎn)對數(shù)據(jù)進(jìn)行打包排序后生成物理圖區(qū)塊;最后通過圖區(qū)塊鏈映射模型建立物理區(qū)塊數(shù)據(jù)與圖區(qū)塊鏈模型之間的映射關(guān)系,將物理區(qū)塊中實(shí)體數(shù)據(jù)映射成圖區(qū)塊的區(qū)塊頂點(diǎn),關(guān)系數(shù)據(jù)映射成圖區(qū)塊的區(qū)塊邊。供應(yīng)鏈各企業(yè)主體、監(jiān)管部門與消費(fèi)者都可以通過調(diào)用合約向圖區(qū)塊鏈網(wǎng)絡(luò)發(fā)起溯源查詢請求,不同主體可在權(quán)限范圍內(nèi)查詢果蔬供應(yīng)鏈信息,以實(shí)現(xiàn)果蔬產(chǎn)品的深度溯源。
圖1 果蔬供應(yīng)鏈深度溯源圖區(qū)塊鏈模型Fig.1 In-depth traceability graph blockchain model of the fruit and vegetable supply chain
2.1.1 圖區(qū)塊結(jié)構(gòu)
圖區(qū)塊由區(qū)塊頂點(diǎn)集和區(qū)塊邊集組成(圖2)。在此基礎(chǔ)上,定義屬性集P=(Property1,Property2,…,Propertyn)來擴(kuò)展區(qū)塊頂點(diǎn)和區(qū)塊邊,定義標(biāo)簽對區(qū)塊頂點(diǎn)進(jìn)行分類,標(biāo)簽的類型由具體的業(yè)務(wù)場景定義,例如果蔬供應(yīng)鏈不同環(huán)節(jié)頂點(diǎn)定義為不同類型標(biāo)簽。每個區(qū)塊頂點(diǎn)集中的元素在基于業(yè)務(wù)交易的圖區(qū)塊賬本中對應(yīng)一筆實(shí)體型交易,而在基于圖區(qū)塊的賬本中對應(yīng)一個區(qū)塊頂點(diǎn)。區(qū)塊邊集中的每個元素可以用一個二元組(m,n)表示,其中m代表起始區(qū)塊頂點(diǎn),n代表目標(biāo)區(qū)塊頂點(diǎn),區(qū)塊邊定義的屬性集表示兩頂點(diǎn)之間的關(guān)系,每個區(qū)塊邊集中的元素在基于業(yè)務(wù)交易的圖區(qū)塊賬本中對應(yīng)一筆關(guān)系型交易,而在基于圖區(qū)塊的賬本中對應(yīng)一個區(qū)塊邊。
圖2 圖區(qū)塊結(jié)構(gòu)Fig.2 Graph block structure
在一個圖區(qū)塊G=(V,E)(E為區(qū)塊邊集(edge))中,區(qū)塊邊具有方向性,區(qū)塊頂點(diǎn)集中任意兩元素之間的邊存在單向和雙向兩種情況,單向情況時,每個區(qū)塊頂點(diǎn)m&V擁有一個出度或一個入度。出度Sout=|{e=(m,n)|e∈E}|,表示區(qū)塊頂點(diǎn)引用數(shù)量(m“引用”了n),入度Sin=|{e=(m,n)|e∈E}|,表示m被引用的次數(shù)。當(dāng)Sin=0時,稱m為一個端區(qū)塊頂點(diǎn)。雙向情況時,每個區(qū)塊頂點(diǎn)m&V∪n&V擁有一個出度或一個入度。圖區(qū)塊G=(V,E)具有復(fù)雜性,一般而言,基于圖區(qū)塊的賬本對每個區(qū)塊頂點(diǎn)的出度和入度沒有要求,通常一個區(qū)塊頂點(diǎn)能夠同時被多個新生成區(qū)塊頂點(diǎn)引用,從而能夠清晰地存儲具有復(fù)雜業(yè)務(wù)關(guān)系場景的數(shù)據(jù)。同時,新生成的區(qū)塊頂點(diǎn)可以引用圖區(qū)塊中任意一個端區(qū)塊頂點(diǎn)。
2.1.2 圖區(qū)塊鏈存儲模型
由于圖區(qū)塊鏈存儲了深度溯源信息,較傳統(tǒng)單一溯源信息在數(shù)據(jù)量上有所增加,所以存儲冗余率有所增加。因此,本研究設(shè)計(jì)了圖區(qū)塊鏈存儲模型,該模型的核心思想是在保證圖區(qū)塊鏈安全性的前提下,減少圖區(qū)塊鏈網(wǎng)絡(luò)中的副本數(shù)量以減少存儲冗余。圖區(qū)塊鏈存儲模型中包含用戶節(jié)點(diǎn)、驗(yàn)證節(jié)點(diǎn)、排序節(jié)點(diǎn)、全節(jié)點(diǎn)4 種角色(圖3)。用戶節(jié)點(diǎn)為原始數(shù)據(jù)的擁有者,需要對原始數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化和規(guī)范化處理;驗(yàn)證節(jié)點(diǎn)負(fù)責(zé)驗(yàn)證交易的合法性;排序節(jié)點(diǎn)負(fù)責(zé)交易的排序打包;全節(jié)點(diǎn)負(fù)責(zé)存儲所有用戶節(jié)點(diǎn)的數(shù)據(jù);一個節(jié)點(diǎn)可以同時擁有多種角色。其中最核心的是全節(jié)點(diǎn),其是完整副本的保存者,其余節(jié)點(diǎn)只存儲部分副本數(shù)據(jù),網(wǎng)絡(luò)中只有一少部分節(jié)點(diǎn)為全節(jié)點(diǎn)。圖區(qū)塊鏈網(wǎng)絡(luò)中完整副本的數(shù)量減少,攻擊者只需要在控制少于50%節(jié)點(diǎn)數(shù)的情況下即可篡改圖區(qū)塊鏈數(shù)據(jù),在一定程度上降低了圖區(qū)塊鏈的安全性。但果蔬供應(yīng)鏈場景有海量的節(jié)點(diǎn)不斷地加入圖區(qū)塊鏈系統(tǒng),攻擊者想控制圖區(qū)塊鏈系統(tǒng)中少部分節(jié)點(diǎn)也幾乎不可能實(shí)現(xiàn)。
圖3 圖區(qū)塊鏈存儲模型Fig.3 Graph blockchain storage model
2.1.3 物理圖區(qū)塊結(jié)構(gòu)
果蔬供應(yīng)鏈各節(jié)點(diǎn)通過物聯(lián)網(wǎng)設(shè)備采集數(shù)據(jù),并基于此數(shù)據(jù)構(gòu)建物理圖區(qū)塊鏈模型。如圖4所示,物理圖區(qū)塊分為兩部分。第1部分包含前一圖區(qū)塊哈希(pre hash)、圖區(qū)塊身份(graph block ID)、圖哈希根(graph hash root,GR)、圖區(qū)塊哈希(graphblock hash)、數(shù)字簽名(digital signature)以及時間戳(timestamp)等。其中Graph block hash=Hash(Pre hash+Graph block ID+Graph hashroot+Digital signature+Timestamp),采用SHA-256哈希算法計(jì)算出圖區(qū)塊哈希值,無論圖區(qū)塊中任何部分發(fā)生細(xì)微的改變,均會引起輸出值(graph block hash)的明顯改變。第2部分包含若干業(yè)務(wù)數(shù)據(jù),業(yè)務(wù)數(shù)據(jù)分為實(shí)體數(shù)據(jù)(標(biāo)注為V1,V2,……)和關(guān)系數(shù)據(jù)(標(biāo)注為R1,R2,……)兩類。
圖4 物理圖區(qū)塊結(jié)構(gòu)Fig.4 Physical graph block structure
2.1.4 圖區(qū)塊加密算法
區(qū)塊鏈技術(shù)的安全性通常從數(shù)據(jù)、網(wǎng)絡(luò)、共識、合約4 個方面分析。圖區(qū)塊鏈基于傳統(tǒng)區(qū)塊鏈的技術(shù)架構(gòu)對區(qū)塊數(shù)據(jù)結(jié)構(gòu)進(jìn)行改進(jìn),保留了傳統(tǒng)區(qū)塊鏈網(wǎng)絡(luò)、共識、合約技術(shù)的底層框架。因此,本研究主要考慮圖區(qū)塊鏈數(shù)據(jù)的安全性,根據(jù)圖區(qū)塊數(shù)據(jù)結(jié)構(gòu)構(gòu)建圖區(qū)塊加密算法,圖區(qū)塊內(nèi)所有業(yè)務(wù)數(shù)據(jù)根據(jù)圖區(qū)塊加密算法得到最終的哈希值,稱之為圖哈希根。任意一個業(yè)務(wù)數(shù)據(jù)被篡改時,圖哈希根均會發(fā)生改變,通過此方式保障圖區(qū)塊鏈數(shù)據(jù)的安全。以圖4物理圖區(qū)塊為例,圖區(qū)塊加密運(yùn)算過程為:
步驟1)首先計(jì)算圖區(qū)塊中某個實(shí)體數(shù)據(jù)V1的哈希值,稱為hash VI。
V1→Hash V1
步驟2)找到剛訪問的實(shí)體數(shù)據(jù)V1的第一個未被訪問的鄰接實(shí)體數(shù)據(jù),計(jì)算出該實(shí)體數(shù)據(jù)與兩實(shí)體數(shù)據(jù)之間連接的關(guān)系數(shù)據(jù)的哈希值,然后將計(jì)算得到的哈希值進(jìn)行串接,再進(jìn)行哈希運(yùn)算,得到新的哈希值。接著再遍歷V1未被訪問到的鄰接實(shí)體數(shù)據(jù),重復(fù)此步驟,直到V1所有鄰接實(shí)體數(shù)據(jù)全部被訪問為止。
V2→Hash V2
R1→Hash R1
步驟3)依次訪問步驟2未被訪問的鄰接實(shí)體數(shù)據(jù),然后依次訪問各鄰接實(shí)體數(shù)據(jù)未被訪問的鄰接實(shí)體數(shù)據(jù),直到所有實(shí)體數(shù)據(jù)都被訪問為止,并計(jì)算出最終的圖哈希根。
Hash V1V2R1V3R2V4R3R4V5R5R6→GR
在圖區(qū)塊鏈網(wǎng)絡(luò)中,用戶節(jié)點(diǎn)發(fā)起交易提案請求后,交易被提交至驗(yàn)證節(jié)點(diǎn)進(jìn)行合法性驗(yàn)證后簽名;將帶有簽名的交易發(fā)送給排序節(jié)點(diǎn)進(jìn)行排序打包;打包的交易被發(fā)送到全節(jié)點(diǎn),全節(jié)點(diǎn)接收交易并將其放入緩存區(qū)中,當(dāng)緩存區(qū)中交易達(dá)到一定數(shù)量時,將交易寫入自己賬本并通過映射機(jī)制將交易信息映射到圖區(qū)塊中。映射過程主要由以下2 個部分組成:1)建立物理圖區(qū)塊到圖區(qū)塊的數(shù)據(jù)映射協(xié)議;2)通過區(qū)塊頂點(diǎn)映射和區(qū)塊邊映射配置方案構(gòu)建圖區(qū)塊鏈。具體映射規(guī)則和映射流程如下。
物理圖區(qū)塊和圖區(qū)塊數(shù)據(jù)類型和格式存在一定的差異,會影響圖區(qū)塊鏈構(gòu)建的完整性和一致性。因此,首先需要設(shè)計(jì)物理圖區(qū)塊數(shù)據(jù)到圖區(qū)塊的數(shù)據(jù)映射協(xié)議,保證圖區(qū)塊鏈構(gòu)建前后數(shù)據(jù)的一致性和完整性。在物理圖區(qū)塊中,追溯數(shù)據(jù)以JSON文檔的形式存儲,因此本研究設(shè)計(jì)的映射協(xié)議中,物理圖區(qū)塊JSON文檔中的鍵名稱在圖區(qū)塊中映射為屬性名稱,值字段類型映射為該屬性的類型,每一行用來描述該屬性的具體值映射為對應(yīng)區(qū)塊頂點(diǎn)或區(qū)塊邊該屬性的具體值。除此之外,還需解決數(shù)據(jù)類型和格式異構(gòu)問題。本研究通過對物理圖區(qū)塊中存在的屬性類型進(jìn)行整理分析后,定義了圖區(qū)塊數(shù)據(jù)映射協(xié)議(表2),以最大程度地保留元數(shù)據(jù)。特別地,本研究對物理圖區(qū)塊中數(shù)組數(shù)據(jù)類型進(jìn)行了特殊處理,數(shù)組用于將多個值存為一個鍵。在映射到圖區(qū)塊之后,對于作為屬性的數(shù)組,將數(shù)組數(shù)據(jù)用逗號隔開作為字串存儲,表示其屬性值。
表2 物理圖區(qū)塊-圖區(qū)塊數(shù)據(jù)映射Table 2 Physical graph block-graph block data mapping
根據(jù)圖區(qū)塊的映射協(xié)議進(jìn)行圖區(qū)塊的模式構(gòu)建,包括區(qū)塊頂點(diǎn)模式構(gòu)建和區(qū)塊邊模式構(gòu)建。區(qū)塊頂點(diǎn)模式構(gòu)建:獲取選定的物理圖區(qū)塊賬本中實(shí)體數(shù)據(jù)的元數(shù)據(jù),按照映射協(xié)議建立所有的屬性字段,實(shí)體數(shù)據(jù)的所有屬性映射成為區(qū)塊頂點(diǎn)的所有屬性,實(shí)體數(shù)據(jù)的lable字段屬性映射成為區(qū)塊頂點(diǎn)的lable屬性。以圖5中JSON文檔為例,以JSON數(shù)據(jù)中l(wèi)abel字段來創(chuàng)建區(qū)塊頂點(diǎn)的標(biāo)簽,其區(qū)塊頂點(diǎn)為生產(chǎn)類區(qū)塊頂點(diǎn)。JSON數(shù)據(jù)中屬性對象3 個屬性映射為該區(qū)塊頂點(diǎn)的所有屬性,其對應(yīng)的屬性值一一映射為區(qū)塊頂點(diǎn)屬性的具體屬性值。
圖5 圖區(qū)塊頂點(diǎn)映射Fig.5 Graph block vertex mapping
區(qū)塊邊模式構(gòu)建:基于關(guān)系數(shù)據(jù)字段配置構(gòu)建區(qū)塊邊模式,提取關(guān)系中的指向信息,明確關(guān)系的起始區(qū)塊頂點(diǎn)信息。以圖6中施肥區(qū)塊邊為例,首先建立一個施肥的關(guān)系類型,然后根據(jù)基于字段配置的方法(如圖7中賬本的start字段指向施肥邊的起始區(qū)塊頂點(diǎn),end字段指向施肥邊的目標(biāo)區(qū)塊頂點(diǎn)),確定施肥區(qū)塊邊的指向信息,從平衡復(fù)合肥17-17-17區(qū)塊頂點(diǎn)指向陽光玫瑰葡萄區(qū)塊頂點(diǎn)。JSON數(shù)據(jù)中relationship(關(guān)系)對象3 個屬性映射為該區(qū)塊邊的所有屬性,其對應(yīng)的屬性值一一映射為區(qū)塊邊屬性的具體屬性值。
圖6 圖區(qū)塊邊映射Fig.6 Graph block edge mapping
圖7 某果蔬供應(yīng)鏈圖區(qū)塊數(shù)據(jù)架構(gòu)示意圖Fig.7 Schematic diagram of graph block data architecture of the fruit and vegetable supply chain
果蔬供應(yīng)鏈參與主體主要是生產(chǎn)企業(yè)、收儲企業(yè)、加工企業(yè)、物流企業(yè)、銷售企業(yè)等。根據(jù)果蔬供應(yīng)鏈涉及的主體,本研究按照區(qū)塊頂點(diǎn)、區(qū)塊邊、區(qū)塊頂點(diǎn)標(biāo)簽、區(qū)塊頂點(diǎn)與區(qū)塊邊屬性集進(jìn)行時間和空間層面的劃分,果蔬供應(yīng)鏈圖區(qū)塊數(shù)據(jù)架構(gòu)如圖7所示。
按照實(shí)體數(shù)據(jù)建立圖區(qū)塊頂點(diǎn)。果蔬供應(yīng)鏈各參與主體將采集的業(yè)務(wù)數(shù)據(jù)解析成實(shí)體數(shù)據(jù)和關(guān)系數(shù)據(jù),圖區(qū)塊頂點(diǎn)由實(shí)體數(shù)據(jù)構(gòu)建,如在圖7中有農(nóng)民、農(nóng)場、種子、農(nóng)作物等圖區(qū)塊頂點(diǎn),并根據(jù)實(shí)體數(shù)據(jù)具體內(nèi)容構(gòu)建圖區(qū)塊頂點(diǎn)的屬性集合,例如農(nóng)場頂點(diǎn)包含名稱、地址、聯(lián)系方式3 個屬性。
按照流程建立圖區(qū)塊頂點(diǎn)標(biāo)簽。根據(jù)果蔬供應(yīng)鏈的流程環(huán)節(jié),將圖區(qū)塊頂點(diǎn)分為“生產(chǎn)”“收儲”“加工”“運(yùn)輸”“銷售”5 個類型。它們以不同顏色進(jìn)行區(qū)分,如圖7所示。
按照關(guān)系數(shù)據(jù)建立圖區(qū)塊邊。不同區(qū)塊頂點(diǎn)之間通過具有方向的區(qū)塊邊連接起來組成復(fù)雜的圖區(qū)塊,根據(jù)關(guān)系數(shù)據(jù)的內(nèi)容構(gòu)建圖區(qū)塊邊,例如施肥邊由肥料頂點(diǎn)指向農(nóng)作物頂點(diǎn),其中劑量、人員、時間組成施肥邊的屬性集。
智能合約是一種用算法和程序來編制合同條款部署在區(qū)塊鏈上且可按照規(guī)則自動執(zhí)行的計(jì)算機(jī)協(xié)議[34],可為去中心化的果蔬供應(yīng)鏈主體之間搭建自信任的交易環(huán)境,通過智能合約將傳統(tǒng)供應(yīng)鏈上通過人的信任主導(dǎo)的業(yè)務(wù)往來替換為以計(jì)算機(jī)信任的交易模式。在圖區(qū)塊鏈模型中,用戶的業(yè)務(wù)信息存儲和查詢操作都通過智能合約來實(shí)現(xiàn)。本研究根據(jù)限值數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)了溯源數(shù)據(jù)存儲智能合約,智能合約讀取果蔬溯源數(shù)據(jù)并與限值進(jìn)行對比,通過判斷溯源數(shù)據(jù)是否在限值內(nèi)來嚴(yán)格管控果蔬產(chǎn)品質(zhì)量安全,最終得到的判斷結(jié)果與溯源數(shù)據(jù)一起打包寫入圖區(qū)塊鏈,寫入成功后,返回當(dāng)前交易哈希,其偽代碼設(shè)計(jì)如算法1所示。
算法1 溯源數(shù)據(jù)存儲算法輸入:溯源數(shù)據(jù)TraceData(農(nóng)藥殘留抑制率inhibition ratio)輸出:交易哈希Tx 1.節(jié)點(diǎn)peer調(diào)用合約的invoke上鏈請求2.ctx->arg(admin) //獲取節(jié)點(diǎn)公鑰地址3.if(!isadmin(id)) //判斷是否擁有寫入權(quán)限4.if(admin!=fetcher)5.return false//返回失敗6.ctx->put_object(inhibition ratio) //讀取上鏈數(shù)據(jù)7.if(!isarg(inhibition ratio)) //ctx->arg(inhibition ratio) //判斷上鏈數(shù)據(jù)格式是否符合要求8.return format error //返回上鏈?zhǔn)≡?.elseif (!isarg(inhibition ratio)> inhibition ratio limit) //判斷上鏈數(shù)據(jù)是否在限制內(nèi)10.return“抑制率超標(biāo)”//返回上鏈?zhǔn)≡?1.return ok(id) //上鏈成功返回交易id
數(shù)據(jù)成功寫入圖區(qū)塊鏈系統(tǒng)后,供應(yīng)鏈各企業(yè)主體、監(jiān)管部門與消費(fèi)者通過查詢合約讀取圖區(qū)塊鏈中數(shù)據(jù)及用戶的查詢請求信息,查詢請求信息包括區(qū)塊頂點(diǎn)和區(qū)塊邊的屬性集合,根據(jù)查詢請求信息遍歷圖區(qū)塊鏈后返回查詢結(jié)果,其偽代碼設(shè)計(jì)如算法2所示。
算法2 溯源數(shù)據(jù)查詢算法輸入:數(shù)據(jù)查詢請求request list[]輸出:查詢結(jié)果result 1.節(jié)點(diǎn)peer調(diào)用合約的query查詢請求2.ctx->arg(admin) //獲取節(jié)點(diǎn)公鑰地址3.if(!isadmin(id)) //判斷是否擁有寫入權(quán)限4.if(admin!=fetcher)5.return false 6.ctx->arg(list[MATCH(N:lable)-[key value]]) //獲取查詢請求7.procedure BFS(graph,start_vertex) //根據(jù)屬性值進(jìn)行深度優(yōu)先遍歷區(qū)塊頂點(diǎn)8.if start vertex in end vertices[]//遍歷起始頂點(diǎn)9.return true 10.for temp vertex in currentN vertex//遍歷目標(biāo)頂點(diǎn)11.if !visit[temp_vertex]//判斷已遍歷頂點(diǎn)12.set visit ture(temp vertex)//標(biāo)記以遍歷頂點(diǎn)13.DFS(temp_vertex,end_vertices[])14.set_visit_true(temp_vertex)//遍歷成功15.return true 16.End procedure//結(jié)束遍歷17.traceinfo:= QueryState(records) //遍歷全部數(shù)據(jù)18.return result
身份權(quán)限管理算法是圖區(qū)塊鏈重要的組成部分,直接關(guān)系到圖區(qū)塊鏈的數(shù)據(jù)安全管理。合約根據(jù)訪問者身份信息來判斷節(jié)點(diǎn)權(quán)限,其偽代碼設(shè)計(jì)如算法3所示。
算法3權(quán)限管理算法輸入:節(jié)點(diǎn)身份ID輸出:權(quán)限等級1.節(jié)點(diǎn)peer調(diào)用合約的permissions權(quán)限判斷請求2.ctx->arg(admin) //獲取節(jié)點(diǎn)公鑰地址3.if(!is企業(yè)節(jié)點(diǎn)(id)) //判斷是否是企業(yè)節(jié)點(diǎn)4.可查詢相鄰企業(yè)的全部產(chǎn)品關(guān)聯(lián)信息5.elseif(!is消費(fèi)者節(jié)點(diǎn)(id)) //判斷是否是消費(fèi)者節(jié)點(diǎn)6.可查詢其購買產(chǎn)品的關(guān)聯(lián)信息7.elseif(!is監(jiān)管節(jié)點(diǎn)(id)) //判斷是否是監(jiān)管節(jié)點(diǎn)8.可查詢?nèi)啃畔?/p>
實(shí)驗(yàn)開發(fā)環(huán)境為Intel?CoreTMi7-10875H CPU@2.30GHz的主機(jī),利用VMware Workstation16軟件建立虛擬機(jī)來模擬真實(shí)節(jié)點(diǎn)。其中,圖區(qū)塊鏈系統(tǒng)基于百度的超級鏈系統(tǒng)(XuperChain v5.1軟件)開源項(xiàng)目搭建環(huán)境,選擇go、C++語言作為測試的主要編程語言,具體的環(huán)境配置如表3所示。為了更好地驗(yàn)證所提圖區(qū)塊鏈模型的性能,選擇百度超級鏈系統(tǒng)進(jìn)行對比實(shí)驗(yàn),圖區(qū)塊鏈系統(tǒng)和百度超級鏈系統(tǒng)在同一環(huán)境下運(yùn)行,圖區(qū)塊鏈和百度超級鏈網(wǎng)絡(luò)均包含3 個節(jié)點(diǎn)、2 個Orderer節(jié)點(diǎn),且均采用Tdpos共識排序服務(wù),本實(shí)驗(yàn)數(shù)據(jù)來自廣西某農(nóng)業(yè)有限公司陽光玫瑰葡萄溯源檔案。
表3 實(shí)驗(yàn)環(huán)境配置Table 3 Experimental environment configuration
首先準(zhǔn)備好百度超級鏈編譯運(yùn)行的環(huán)境,然后在此基礎(chǔ)上建立圖區(qū)塊鏈網(wǎng)絡(luò)。圖8A展示了圖區(qū)塊鏈的區(qū)塊配置信息,包括圖區(qū)塊鏈名稱、圖區(qū)塊鏈賬本信息、節(jié)點(diǎn)IP信息等。圖8B展示了圖區(qū)塊鏈節(jié)點(diǎn)配置信息,包括圖區(qū)塊鏈版本、圖區(qū)塊鏈共識方法、排序節(jié)點(diǎn)信息等。圖8C展示了圖區(qū)塊鏈P2P網(wǎng)絡(luò)配置信息,主要包括節(jié)點(diǎn)端口、節(jié)點(diǎn)cert目錄、種子節(jié)點(diǎn)netUrl信息等。圖8D展示了圖區(qū)塊鏈智能合約賬號配置信息,包括賬號名稱、賬號訪問控制列表(access control lists,ACL)等。圖8E、F分別展示了圖區(qū)塊鏈存儲智能合約和查詢智能合約的部分代碼。
圖8 圖區(qū)塊網(wǎng)絡(luò)配置Fig.8 Graph block network configuration
通過構(gòu)建供應(yīng)鏈生產(chǎn)環(huán)節(jié)的圖區(qū)塊鏈驗(yàn)證本研究提出的面向果蔬供應(yīng)鏈圖區(qū)塊鏈的可行性。實(shí)驗(yàn)通過加入圖區(qū)塊鏈網(wǎng)絡(luò)的2 個節(jié)點(diǎn)(peer1、peer2)進(jìn)行,peer1節(jié)點(diǎn)測試寫入生產(chǎn)環(huán)節(jié)的實(shí)體數(shù)據(jù)信息,peer2節(jié)點(diǎn)測試寫入生產(chǎn)環(huán)節(jié)的關(guān)系數(shù)據(jù)信息。通過測試節(jié)點(diǎn)終端發(fā)出相應(yīng)的指令,如圖9所示。其中peer1節(jié)點(diǎn)發(fā)出寫入“實(shí)體數(shù)據(jù)信息”指令,上傳所涉及到的實(shí)體數(shù)據(jù)信息,經(jīng)過圖區(qū)塊鏈網(wǎng)絡(luò)驗(yàn)證節(jié)點(diǎn)驗(yàn)證提案信息的合法性。驗(yàn)證通過后,由存儲智能合約將提交的業(yè)務(wù)信息寫入物理圖區(qū)塊鏈中,隨后通過映射模型將相關(guān)的實(shí)體數(shù)據(jù)信息生成圖區(qū)塊鏈中對應(yīng)的區(qū)塊頂點(diǎn)。peer2節(jié)點(diǎn)發(fā)出寫入“關(guān)系數(shù)據(jù)信息”指令,首先需要對提案信息進(jìn)行驗(yàn)證,驗(yàn)證通過后,仍由存儲智能合約將提交的業(yè)務(wù)信息寫入物理圖區(qū)塊鏈中,隨后通過映射模型將相關(guān)的關(guān)系數(shù)據(jù)信息生成圖區(qū)塊中對應(yīng)的區(qū)塊邊。
圖9 圖區(qū)塊終端發(fā)出測試指令Fig.9 Graph block terminal issue for test instruction
農(nóng)場提供的陽光玫瑰葡萄供應(yīng)鏈生產(chǎn)環(huán)節(jié)部分信息如表4所示。將表4生產(chǎn)環(huán)節(jié)信息明細(xì)作為物理圖區(qū)塊鏈的基礎(chǔ)數(shù)據(jù)。
表4 陽光玫瑰葡萄供應(yīng)鏈生產(chǎn)環(huán)節(jié)相關(guān)信息Table 4 Information about Shine Muscat production
生產(chǎn)環(huán)節(jié)用戶節(jié)點(diǎn)向相關(guān)信息發(fā)起提案,經(jīng)過驗(yàn)證排序之后寫入物理圖區(qū)塊賬本,通過映射機(jī)制將實(shí)體數(shù)據(jù)映射成圖區(qū)塊中的頂點(diǎn),關(guān)系數(shù)據(jù)映射成圖區(qū)塊中的邊,各頂點(diǎn)和邊連接形成供應(yīng)鏈生產(chǎn)環(huán)節(jié)的圖區(qū)塊,如圖10所示。
圖10 圖區(qū)塊生成Fig.10 Graph block generation
由于果蔬供應(yīng)鏈溯源信息具有高深度、高關(guān)聯(lián)性的特點(diǎn),因此對果蔬供應(yīng)鏈的深度信息進(jìn)行關(guān)聯(lián)存儲是實(shí)現(xiàn)深度溯源的關(guān)鍵。然而傳統(tǒng)區(qū)塊鏈并沒有存儲全供應(yīng)鏈的深度信息,且只能實(shí)現(xiàn)串行化的賬本增加操作,數(shù)據(jù)的寫入具有隨機(jī)性,導(dǎo)致數(shù)據(jù)之間缺失關(guān)聯(lián)關(guān)系。圖區(qū)塊鏈利用圖理論對區(qū)塊數(shù)據(jù)結(jié)構(gòu)進(jìn)行改進(jìn),將傳統(tǒng)區(qū)塊鏈結(jié)構(gòu)中順序表的存儲結(jié)構(gòu)改變?yōu)楸阌谏疃人菰葱畔⒋鎯Φ膱D結(jié)構(gòu)。如圖10所示,該圖區(qū)塊存儲了陽光玫瑰葡萄生產(chǎn)環(huán)節(jié)的深度信息,包含農(nóng)場、農(nóng)民、農(nóng)作物、肥料等15 個頂點(diǎn)和工作、生長、施肥、施藥等16 個邊,分別代表存儲了15 條實(shí)體數(shù)據(jù)和16 條關(guān)系數(shù)據(jù),其中施肥邊關(guān)聯(lián)肥料與農(nóng)作物頂點(diǎn)、工作邊關(guān)聯(lián)農(nóng)民與農(nóng)場頂點(diǎn),溯源數(shù)據(jù)在區(qū)塊中以圖的形式存儲,通過區(qū)塊邊將區(qū)塊頂點(diǎn)連接在一起,實(shí)現(xiàn)數(shù)據(jù)的關(guān)聯(lián)存儲,關(guān)系數(shù)據(jù)直接地將各環(huán)節(jié)實(shí)體數(shù)據(jù)整合集成起來。用戶進(jìn)行一次追溯查詢操作可以快速遍歷供應(yīng)鏈過程中涉及的全部實(shí)體數(shù)據(jù)和關(guān)系數(shù)據(jù),從而實(shí)現(xiàn)對果蔬供應(yīng)鏈的深度溯源。
分別在圖區(qū)塊鏈和百度超級鏈系統(tǒng)上進(jìn)行多組對比實(shí)驗(yàn),通過查詢數(shù)據(jù),對比分析圖區(qū)塊鏈模型的查詢效率性能。圖區(qū)塊鏈和百度超級鏈系統(tǒng)分別寫入相同的溯源數(shù)據(jù),然后分別進(jìn)行查詢操作,記錄一次查詢的響應(yīng)時間,進(jìn)行對比實(shí)驗(yàn),再通過更改查詢數(shù)量,觀察分析圖區(qū)塊鏈模型在不同查詢數(shù)量情況下的查詢效率是否比傳統(tǒng)區(qū)塊鏈系統(tǒng)有所優(yōu)化。
圖11中橫坐標(biāo)是查詢數(shù)量,縱坐標(biāo)是查詢時間,能夠反映圖區(qū)塊鏈和百度超級鏈進(jìn)行查詢操作的響應(yīng)時間,為了減小隨機(jī)誤差的影響,每次實(shí)驗(yàn)均測試10 次取平均值。通過對實(shí)驗(yàn)結(jié)果進(jìn)行分析,當(dāng)查詢數(shù)量為100 條時,百度超級鏈查詢時間為750 ms,而圖區(qū)塊鏈查詢時間為65 ms,當(dāng)查詢數(shù)量增加至1 000 條時,超級鏈查詢時間為6 273 ms,而圖區(qū)塊鏈查詢時間僅為425 ms,圖區(qū)塊鏈模型比超級鏈模型查詢效率提升大約13 倍,可以看出圖區(qū)塊鏈系統(tǒng)的查詢效率比傳統(tǒng)區(qū)塊鏈系統(tǒng)明顯提升。
圖11 數(shù)據(jù)查詢時間Fig.11 Data query time
通過Stress軟件測試查詢數(shù)量1~1 000 條期間圖區(qū)塊鏈系統(tǒng)和傳統(tǒng)區(qū)塊鏈環(huán)境下系統(tǒng)查詢開銷的情況,結(jié)果如表5所示。圖區(qū)塊鏈系統(tǒng)在查詢操作時,查詢效率相對傳統(tǒng)區(qū)塊鏈環(huán)境大幅提升,且查詢開銷不但沒有明顯增加,甚至比傳統(tǒng)區(qū)塊鏈環(huán)境更低。因此本研究提出的圖區(qū)塊鏈模型實(shí)現(xiàn)了數(shù)據(jù)快速查詢和開銷的平衡。
表5 1~1 000 次查詢期間區(qū)塊鏈系統(tǒng)查詢開銷Table 5 Query overhead of blockchain system during the period of 1–1 000 queries
本研究在果蔬供應(yīng)鏈圖區(qū)塊鏈深度溯源模型的基礎(chǔ)上,以某陽光玫瑰葡萄供應(yīng)鏈為應(yīng)用對象,構(gòu)建了果蔬圖區(qū)塊鏈信息溯源系統(tǒng)。該葡萄供應(yīng)鏈包含葡萄的生產(chǎn)、收儲、加工、運(yùn)輸、銷售多個環(huán)節(jié),記錄了葡萄的生長信息、環(huán)境信息、人員信息、農(nóng)事信息、加工信息、存儲信息、保鮮信息、運(yùn)輸信息、銷售信息等。若采用傳統(tǒng)結(jié)構(gòu)區(qū)塊存儲溯源信息,存在溯源數(shù)據(jù)關(guān)聯(lián)性不足、查詢效率低等問題,因此采用本系統(tǒng)進(jìn)行優(yōu)化。本系統(tǒng)部分運(yùn)行頁面如圖12所示,圖12A為用戶登錄頁面,用戶通過上傳個人信息注冊賬號即可登錄本系統(tǒng),圖12B為數(shù)據(jù)上鏈頁面,用戶可通過該頁面上傳溯源數(shù)據(jù),圖12C為信息查詢頁面,用戶可通過該頁面查看歷史上鏈數(shù)據(jù)。
圖12 系統(tǒng)運(yùn)行界面Fig.12 System working interface
針對傳統(tǒng)區(qū)塊鏈構(gòu)建的果蔬溯源系統(tǒng)存在追溯信息不全面、數(shù)據(jù)關(guān)聯(lián)性不足、查詢效率低等問題,本研究提出了一種基于圖區(qū)塊鏈的果蔬深度溯源模型,設(shè)計(jì)了圖狀結(jié)構(gòu)的區(qū)塊數(shù)據(jù)結(jié)構(gòu)與物理圖區(qū)塊鏈模型,并由映射模型建立物理圖區(qū)塊與圖區(qū)塊中區(qū)塊頂點(diǎn)和區(qū)塊邊的對應(yīng)關(guān)系。根據(jù)果蔬供應(yīng)鏈流程邏輯結(jié)構(gòu)建立“圖區(qū)塊頂點(diǎn)”“圖區(qū)塊邊”“圖區(qū)塊標(biāo)簽”以及“圖區(qū)塊屬性”組成的圖區(qū)塊數(shù)據(jù)架構(gòu),并定制化設(shè)計(jì)智能合約,保障果蔬供應(yīng)鏈上各主體之間正常的業(yè)務(wù)協(xié)作。該模型解決了傳統(tǒng)果蔬供應(yīng)鏈區(qū)塊鏈模型存在的溯源信息深度不足、溯源數(shù)據(jù)關(guān)聯(lián)性不足、查詢效率低等問題,實(shí)現(xiàn)了對果蔬供應(yīng)鏈的深度溯源。
目前的研究獲得了階段性的成果,但仍然存在一些問題需要進(jìn)一步探討,如還需要對圖區(qū)塊鏈所涉及的共識機(jī)制算法進(jìn)行深入研究,從而克服圖區(qū)塊鏈的安全性、可擴(kuò)展性障礙,相較于傳統(tǒng)區(qū)塊鏈,圖區(qū)塊共識要求難度有所提升,實(shí)現(xiàn)圖區(qū)塊共識應(yīng)是未來重點(diǎn)研究的方向之一。