楊信廷,王明亭,徐大明,羅 娜,孫傳恒
·農(nóng)產(chǎn)品加工工程·
基于區(qū)塊鏈的農(nóng)產(chǎn)品追溯系統(tǒng)信息存儲模型與查詢方法
楊信廷1,2,3,王明亭1,2,3,徐大明2,3,羅 娜2,3,孫傳恒2,3※
(1. 上海海洋大學信息學院,上海 201306; 2. 國家農(nóng)業(yè)信息化工程技術(shù)研究中心,北京 10097;3. 農(nóng)產(chǎn)品質(zhì)量安全追溯技術(shù)及應用國家工程實驗室,北京 100097)
針對區(qū)塊鏈追溯系統(tǒng)信息數(shù)據(jù)存儲負載過大、查詢效率低等問題,該文以果蔬菜類農(nóng)產(chǎn)品為例,基于Hyperledger Fabric設計了一種區(qū)塊鏈農(nóng)產(chǎn)品追溯信息存儲模型和查詢方法。提出“數(shù)據(jù)庫+區(qū)塊鏈”的鏈上鏈下追溯信息雙存儲設計,本地數(shù)據(jù)庫存儲追溯明文數(shù)據(jù),區(qū)塊鏈上存儲追溯數(shù)據(jù)加密后的哈希值,并在此基礎(chǔ)上建立了外聯(lián)數(shù)據(jù)庫索引的查詢方法。通過該方法與基于key鍵遍歷查詢和批次號字段查詢的2種傳統(tǒng)區(qū)塊鏈數(shù)據(jù)查詢方法進行對比測試,結(jié)果表明當區(qū)塊鏈追溯記錄總量達到11×104條,批次追溯記錄條數(shù)為400時,該方法查詢效率分別提高了70.56%和88.66%,有效解決了區(qū)塊鏈鏈式結(jié)構(gòu)中數(shù)據(jù)查詢效率低的問題,保證了數(shù)據(jù)隱私安全,提高了追溯信息的可靠性與時效性。
農(nóng)產(chǎn)品;追溯;區(qū)塊鏈;Hyperledger Fabric;索引存儲;快速查詢
從農(nóng)田到餐桌的農(nóng)產(chǎn)品及食品供應鏈涉及生產(chǎn)、加工、包裝、運輸、倉儲、銷售等不同環(huán)節(jié),每個環(huán)節(jié)都可能存在不安全因素。近年來被曝光的“鎘大米”[1]、“過水蟹”、廣東“走私凍肉”、鱸魚“孔雀石綠”[2]、南京“小龍蝦”[3]等事件,不僅損害了消費者的利益,食品生產(chǎn)企業(yè)也遭受沉重打擊,引發(fā)了消費者與食品產(chǎn)業(yè)之間的信任危機[4-5]。追溯系統(tǒng)以其降低質(zhì)量安全風險、提高產(chǎn)品召回效率、保障公眾健康水平[6-8],成為農(nóng)產(chǎn)品供應鏈質(zhì)量管理的有效手段[9-11],研究并建立農(nóng)產(chǎn)品質(zhì)量追溯體系,實現(xiàn)從生產(chǎn)到消費全過程的有效監(jiān)管,已經(jīng)成為各國的共識和普遍關(guān)注的熱點問題[12]。
農(nóng)產(chǎn)品追溯涉及農(nóng)資供應商、農(nóng)戶等生產(chǎn)商、加工商、中間商(包括物流服務提供商、批發(fā)商、分銷商、零售商等)和末端消費者等,具有點多、線長、面廣、錯綜交叉的特點[13-14],這使食品安全監(jiān)管和追溯在操作中尤為困難[15]。傳統(tǒng)的追溯系統(tǒng)在實際應用中數(shù)據(jù)中心化,依賴于權(quán)威機構(gòu)來管理中心數(shù)據(jù)庫,各個供應鏈節(jié)點上的追溯數(shù)據(jù)由企業(yè)自行管理,易被篡改。同時供應鏈中各角色間信息傳遞的可靠性問題尚有待解決。
區(qū)塊鏈技術(shù)具有不可篡改、分布式、去中心化、可追溯、高可用等特點,利用區(qū)塊鏈這些特性,將區(qū)塊鏈技術(shù)與農(nóng)產(chǎn)品追溯相結(jié)合,為解決目前傳統(tǒng)的農(nóng)產(chǎn)品追溯體系所存在的問題提供了可能。近幾年國內(nèi)外學者[16-20]在農(nóng)產(chǎn)品追溯領(lǐng)域都進行了探索研究,現(xiàn)有的方法多基于現(xiàn)有的常用區(qū)塊鏈系統(tǒng)如Bitcoin、Ethereum、Hyperledger Fabric系統(tǒng)進行應用開發(fā),在數(shù)據(jù)存儲方面存在查詢效率低、數(shù)據(jù)存儲壓力大且數(shù)據(jù)安全性差等限制區(qū)塊鏈系統(tǒng)在農(nóng)產(chǎn)品追溯應用的瓶頸問題。實際應用過程中區(qū)塊鏈作為追溯應用的數(shù)據(jù)管理平臺時,隨著節(jié)點和數(shù)據(jù)的增加,底層存儲系統(tǒng)需要面對用戶的頻繁訪問,這對數(shù)據(jù)存儲系統(tǒng)的功能和性能均提出了較高的要求。
因此,本文從提高農(nóng)產(chǎn)品追溯系統(tǒng)信息高效存儲與快速查詢效率的角度,設計了一種區(qū)塊鏈農(nóng)產(chǎn)品追溯信息存儲模型,同時與傳統(tǒng)查詢優(yōu)化方法進行了對比分析,為實現(xiàn)基于農(nóng)產(chǎn)品追溯信息數(shù)據(jù)存儲與快速查詢提供參考。
區(qū)塊鏈是一種通過密碼學算法將數(shù)據(jù)區(qū)塊按照時間順序組成的鏈式結(jié)構(gòu),能夠?qū)崿F(xiàn)去中心化、不可篡改、可追溯、多方共同維護的分布式數(shù)據(jù)庫[21]。任何一方都必須按照事先約定的規(guī)則對更新數(shù)據(jù)達成共識,實現(xiàn)多方之間的信息共享和監(jiān)督。區(qū)塊鏈集成了P2P網(wǎng)絡、密碼學[22]、智能合約[23]、共識機制[24]、時間戳、塊鏈結(jié)構(gòu)等多種技術(shù),無需依賴第三方,就能實現(xiàn)數(shù)據(jù)的自我驗證與管理。
區(qū)塊鏈是以區(qū)塊為單位的有序鏈狀數(shù)據(jù)塊結(jié)構(gòu),每個區(qū)塊由區(qū)塊頭和區(qū)塊體組成[25],如圖1所示,每個區(qū)塊頭都包含上一個區(qū)塊頭的Hash值,從創(chuàng)始區(qū)塊開始連接到當前區(qū)塊,形成鏈式數(shù)據(jù)存儲結(jié)構(gòu)。區(qū)塊中利用Merkle樹結(jié)構(gòu)的特性以及時間戳和區(qū)塊之間的聯(lián)系,確保每個區(qū)塊是按時間順序相連且數(shù)據(jù)不易被篡改,一旦篡改,也能快速定位,為追溯系統(tǒng)數(shù)據(jù)的可靠性和可信度提供了保證[26]。
圖1 區(qū)塊數(shù)據(jù)結(jié)構(gòu)圖
哈希算法是通過哈希函數(shù)可以將任一長度的數(shù)據(jù)映射為較短的固定長度的二進制值[27],是一個從明文到密文的不可逆的映射,相同的輸入永遠得到的是相同的輸出。利用哈希函數(shù)的特性,不僅可以用于校驗追溯數(shù)據(jù)是否被篡改,還保證了數(shù)據(jù)的安全問題。本文采用的是MD5[28]算法,對于任意長度字符串的輸入,會生成一個32位十六進制的序列值。
根據(jù)區(qū)去中心化程度,區(qū)塊鏈主要分為公有鏈、聯(lián)盟鏈和私有鏈三大類[29],如表1所示。在追溯系統(tǒng)中,農(nóng)產(chǎn)品供應鏈的責任主體屬于協(xié)作關(guān)系但同時又不能完全信任,在現(xiàn)實中原本就有關(guān)聯(lián),存在橫向互聯(lián)合作關(guān)系或者縱向交易關(guān)系,所以農(nóng)產(chǎn)品追溯系統(tǒng)研究選用聯(lián)盟鏈[30]。
表1 區(qū)塊鏈分類
農(nóng)產(chǎn)品追溯系統(tǒng)主要是對農(nóng)產(chǎn)品從生產(chǎn)、加工、運輸?shù)戒N售過程中,通過物聯(lián)網(wǎng)等各種采集方式,把農(nóng)產(chǎn)品的生產(chǎn)信息、加工信息、運輸信息以及銷售信息按照一定的格式和方式存儲并進行管理。通過追溯系統(tǒng),向消費者展示農(nóng)產(chǎn)品的詳細信息,增加消費者的信任度,實現(xiàn)農(nóng)產(chǎn)品安全消費。當出現(xiàn)農(nóng)產(chǎn)品質(zhì)量安全事故時,執(zhí)法機構(gòu)可以追溯到問題環(huán)節(jié),確定責任主體。區(qū)塊鏈追溯是在追溯系統(tǒng)中引入?yún)^(qū)塊鏈技術(shù),利用區(qū)塊鏈的去中心化、不可篡改、可追溯等特性,保證了農(nóng)產(chǎn)品追溯系統(tǒng)的追溯信息真實透明,實現(xiàn)了有效追溯的真實性和可靠性。
以果蔬類農(nóng)產(chǎn)品為例,根據(jù)供應鏈每個環(huán)節(jié)的特點,構(gòu)建了農(nóng)產(chǎn)品追溯區(qū)塊鏈結(jié)構(gòu)體,確定種植、加工、物流、銷售每個階段追溯記錄結(jié)構(gòu)。如圖2所示,將供應鏈中的生產(chǎn)、加工、物流、銷售信息存儲在本地數(shù)據(jù)庫,并通過MD5算法對其進行哈希計算,將哈希值存儲到區(qū)塊鏈系統(tǒng)中,不僅能夠驗證數(shù)據(jù)是否能被篡改,還能減小區(qū)塊鏈存儲負載壓力,提高數(shù)據(jù)隱私安全性。
圖2 農(nóng)產(chǎn)品區(qū)塊鏈追溯系統(tǒng)存儲結(jié)構(gòu)圖
現(xiàn)有的區(qū)塊鏈追溯系統(tǒng)的存儲方式是將農(nóng)產(chǎn)品各節(jié)點的追溯信息直接寫入?yún)^(qū)塊鏈,隨著節(jié)點的數(shù)量的增加,交易數(shù)據(jù)越來越多,區(qū)塊鏈存儲負載壓力也越來越大。由于區(qū)塊鏈特有的鏈式結(jié)構(gòu),查詢效率十分低下;在同一區(qū)塊鏈網(wǎng)絡的成員都可以訪問賬本上所有數(shù)據(jù),對于競爭企業(yè)來說,存在數(shù)據(jù)安全問題。本文針對這些不足對農(nóng)產(chǎn)品區(qū)塊鏈追溯系統(tǒng)存儲方式進行改進,設計了“數(shù)據(jù)庫+區(qū)塊鏈”的鏈上鏈下追溯信息雙存儲方法。
具體將溯源明文信息存儲在各節(jié)點本地數(shù)據(jù)庫,各自管理;將本地數(shù)據(jù)存儲的溯源信息的每個字段作為字符串直接拼接起來,考慮到存儲空間的問題,追溯信息加密中采用了位長較短的MD5算法,對于任意長度字符串的輸入,經(jīng)過MD5算法會生成一個32位十六進制的值,并將哈希之后的值寫入?yún)^(qū)塊鏈。查詢時用同樣的方式對本地數(shù)據(jù)庫的溯源信息再次哈希,與從區(qū)塊鏈上查詢的哈希值進行對比,驗證溯源信息是否被篡改。以果蔬類生產(chǎn)履歷信息為例,存儲在本地數(shù)據(jù)庫溯源信息的字段包括:id、BatchNum、CropName、VarietyName、OperationContent、Amonut、OperationTime、Operator、Blocknum。其中id是作為記錄信息的唯一標識,BlockNum是溯源信息的哈希值在區(qū)塊鏈上的區(qū)塊號,具體的本地數(shù)據(jù)庫溯源字段如表2所示。
表2 本地數(shù)據(jù)庫溯源字段
存儲在區(qū)塊鏈上的追溯信息數(shù)據(jù)結(jié)構(gòu)包括區(qū)塊頭和區(qū)塊體,區(qū)塊頭主要有當前區(qū)塊號、前一個區(qū)塊哈希值、時間戳等信息。區(qū)塊體主要是追溯相關(guān)信息,采用Key-Value的方式進行存儲,其存儲格式如表3所示(以id為例),Value是寫入?yún)^(qū)塊鏈的值,包括docType、id、Infohash。docType是對Value自定義的結(jié)構(gòu)體的名稱,id是溯源信記錄的id,與本地數(shù)據(jù)庫存儲的溯源信息的id 一一對應,InfoHash是對溯源信息哈希計算之后的值。Key鍵是Value值中對應的id作為索引和唯一標識。
表3 區(qū)塊鏈上追溯信息數(shù)據(jù)結(jié)構(gòu)
農(nóng)產(chǎn)品區(qū)塊鏈溯源系統(tǒng)流程圖如圖3所示,溯源信息通過物聯(lián)網(wǎng)設備或者人工采集,用戶將生產(chǎn)、加工、物流、銷售等溯源信息存儲到供應鏈各節(jié)點本地數(shù)據(jù)庫中,通過MD5算法對溯源信息進行Hash計算,將得到的Hash值存儲到區(qū)塊鏈系統(tǒng)中,并返回其所在的區(qū)塊號,將區(qū)塊號更新至本地數(shù)據(jù)庫對應的溯源信息記錄中,若需要對農(nóng)產(chǎn)品信息進行修改,需要對溯源信息的哈希值重新寫入?yún)^(qū)塊鏈,更新其區(qū)塊號。消費者可以通過掃描二維碼從本地數(shù)據(jù)庫中獲取溯源信息和區(qū)塊號,對獲取的溯源信息進行哈希計算,并與通過區(qū)塊號獲取存儲在區(qū)塊鏈上的哈希值進行一致性對比,判斷產(chǎn)品溯源信息是否被篡改。
圖3 農(nóng)產(chǎn)品區(qū)塊鏈溯源防偽流程圖
在實現(xiàn)了上述追溯系統(tǒng)設計的基礎(chǔ)上,最終需要將農(nóng)產(chǎn)品生長、加工、流通等信息展現(xiàn)給消費者,因此需要對農(nóng)產(chǎn)品批次的信息進行快速追溯查詢。根據(jù)區(qū)塊鏈追溯數(shù)據(jù)存儲方式的不同,常用的查詢方法有以下3種。
第1種方法是Key鍵遍歷查詢,將農(nóng)產(chǎn)品生長、加工、物流和銷售的數(shù)據(jù)信息逐一寫入?yún)^(qū)塊鏈,將追溯信息的id作為Key值,追溯信息作為Value值存儲到區(qū)塊鏈中;查詢時,把Key鍵作為索引,從最新區(qū)塊依次向前一個區(qū)塊遍歷,獲得相匹配的Value值。結(jié)合果蔬類農(nóng)產(chǎn)品追溯業(yè)務,農(nóng)產(chǎn)品批次的追溯信息上傳記錄存在多條,通常在查詢時獲取批次信息,需要多次根據(jù)Key對區(qū)塊進行遍歷,遍歷次數(shù)與農(nóng)產(chǎn)品批次追溯記錄條數(shù)有關(guān)。
第2種方法是按批次號字段查詢,具體是將農(nóng)產(chǎn)品生長、加工、物流和銷售信息都寫入?yún)^(qū)塊鏈,將追溯信息的id作為Key值,追溯信息作為Value值存儲到區(qū)塊鏈中;而查詢時利用CouchDB的富查詢,通過對Value里面的批次號字段來從最新區(qū)塊依次向前一個區(qū)塊遍歷,獲取農(nóng)產(chǎn)品一批次的所有追溯信息,只需要對所有區(qū)塊遍歷一次就可以得到農(nóng)產(chǎn)品一批次所有的追溯信息。
第3種方法是本文設計外聯(lián)數(shù)據(jù)庫索引查詢,將追溯信息的ID作為Key值,追溯信息的哈希值作為Value值存儲到區(qū)塊鏈中,并得到其所在區(qū)塊的區(qū)塊號;同時,將追溯信息和區(qū)塊號一一對應存儲在本地數(shù)據(jù)庫。查詢時通過從本地數(shù)據(jù)讀取農(nóng)產(chǎn)品一批次的追溯信息和區(qū)塊號,將追溯信息逐條進行哈希計算,并通過區(qū)塊號獲得存儲在區(qū)塊鏈上的哈希值,將每條追溯信息的兩個哈希值進行比較,從而判斷信息被篡改。
試驗是在虛擬機中進行模擬測試,其環(huán)境基礎(chǔ)為Centos 7.5、Docker 18.09、fabric-sdk-node 1.4。系統(tǒng)運行內(nèi)存為4GB,硬盤為20GB,帶寬為100Mb/s。Fabric聯(lián)盟網(wǎng)絡包括4個Peer節(jié)點,1個Orderer節(jié)點。Fabric中的默認數(shù)據(jù)庫LevelDB查詢形式單一,而CouchDB能滿足現(xiàn)實需求,支持富查詢, 對組合鍵進行建模,以支持針對多個參數(shù)的等價查詢,因此本文試驗數(shù)據(jù)庫選擇CouchDB。在具體實現(xiàn)中采用Node SDK開發(fā)測試程序,采用REST接口對資源進行調(diào)用。
本文分別對以上3種方法查詢進行測試并對比,在試驗過程中,在相同情況下執(zhí)行相同查詢操作,查詢時間都會在一定區(qū)間上下浮動,為了保證數(shù)據(jù)的客觀性,對每組數(shù)據(jù)都執(zhí)行10次,計算出其平均值作為最終值。
通過上述方法對試驗進行測試,對試驗結(jié)果進行相關(guān)性分析,如圖4所示。圖4 a-f為追溯記錄總量分別為104、3×104、5×104、7×104、9×104、11×104條記錄情況下3種不同方式查詢時間對比圖,橫坐標為批次追溯記錄條數(shù),分別為1、200、400、600、800條,縱坐標表示查詢所需要的時間。key表示通過對Key鍵遍歷查詢,content表示通過批次號進行查詢,block表示外聯(lián)數(shù)據(jù)庫索引存儲方法。表示相關(guān)系數(shù),表示顯著性水平0.05情況下的顯著性值。其中相關(guān)性系數(shù)計算公式為
式中(,)為,的協(xié)方差,()、()分別為、的方差。
從批次追溯記錄角度分析,如圖4所示,為3種方法在特定的追溯記錄總量下,查詢時間與批次追溯記錄條數(shù)的關(guān)系對比圖。key方法和block方法的查詢時間和批次追溯記錄條數(shù)正相關(guān),相關(guān)系數(shù)均>0.89,顯著檢驗值均<0.05(=0.05)。而content方法的查詢時間與批次追溯記錄的相關(guān)系數(shù)均<0.5,呈弱相關(guān)。
從追溯記錄總量角度分析,如圖5所示,為3種方法在特定的批次追溯記錄條數(shù)下,查詢時間與追溯記錄總量的關(guān)系對比圖。content方法的相關(guān)系數(shù)均>0.9,顯著檢驗值均<0.05(=0.05),反映content方法的查詢時間與追溯記錄總量呈顯著正向相關(guān)關(guān)系。而key方法和content方法的相關(guān)系數(shù)絕對值均<0.4,呈弱相關(guān)。
從以上不同角度分析得出:key方法和block方法的查詢時間與批次追溯記錄條數(shù)正相關(guān),content方法的查詢時間與追溯記錄總量正相關(guān)。
在分析上述相關(guān)性的基礎(chǔ)上,進一步分析了3種方法的查詢效率提升率,其計算公式為
式中A,B表示A比B的效率提升率,%;A,B分別表示A,B所需要的時間,ms。
注:Key:通過對Key鍵遍歷查詢;Content:通過CouchDB數(shù)據(jù)庫的富查詢對批次號進行查詢;Block:外聯(lián)數(shù)據(jù)庫索引存儲方法。:相關(guān)系數(shù),:顯著性水平=0.05情況下的顯著性值。下同。
Notes: Key: traversal query performed using the value of key attributes; Content: query performed using the batch number of agricultural products through the rich query of the CouchDB database; Block: index storage method for the outreach database;: correlation coefficient;: probability value of the significance test when significance levelis 0.05.The same below.
圖4 3種方法在不同追溯記錄總量情況下的查詢時間對比圖
Fig.4 Comparison chart of query time for different total traceability records of three methods
圖5 3種方法在不同批次追溯記錄條數(shù)下的查詢時間對比圖
從結(jié)果表4中可以看出,當查詢單條追溯記錄時,block方法比content方法效率提升在97.70%~99.78%之間,block方法比key方法的查詢效率提升呈波動狀態(tài),這是由于單條查詢需要時間值較小,數(shù)據(jù)波動區(qū)間大造成查詢時間差異較大;當批次追溯記錄條數(shù)大于200條時,block方法比key方法的查詢效率提升基本呈穩(wěn)定在59.76%~72.32%之間,而block方法與content方法相比,提升效率是隨著追溯記錄總量增加,隨著批次追溯記錄條數(shù)減小的。在實際應用中,農(nóng)產(chǎn)品批次記錄在200-400條左右,而區(qū)塊鏈系統(tǒng)中的追溯記錄總量是隨著節(jié)點和時間的增加而增加。當批次追溯記錄條數(shù)為200時,追溯記錄總量為104、3×104、5×104、7×104、9×104、11×104時,block方法比key方法查詢效率提升分別為69.76%、70.42%、68.52%、68.57%、68.19%和66.72%,block方法比content方法查詢效率提升分別為16.28 %、73.86%、84.46%、88.65%、91.65%、93.33%;當批次追溯記錄條數(shù)為400時,追溯記錄總量為104、3×104、5×104、7×104、9×104、11×104時,block方法比key方法查詢效率提升分別為69.34%、72.32%、69.90%、68.81%、68.15%和70.56%,block方法比content方法查詢效率提升分別為?57.74%、51.44%、71.97%、78.14%、83.73%、88.66%。從批次追溯記錄條數(shù)角度看,block方法查詢效率隨著追溯記錄總量的增加而增加。
表4 效率提升對比表
本方法成功應用于山東煙臺某蘋果公司的區(qū)塊鏈追溯系統(tǒng)設計過程中。通過對該企業(yè)蘋果供應鏈進行實地調(diào)研,從種植和倉儲環(huán)節(jié)、加工環(huán)節(jié)、運輸和銷售環(huán)節(jié)分設計了蘋果追溯系統(tǒng)采集方法,并采用本文提出的“數(shù)據(jù)庫+區(qū)塊鏈”的鏈上鏈下追溯信息雙存儲設計,當區(qū)塊鏈系統(tǒng)追溯記錄總量達到7×104時,查詢響應平均時間為5001.09 ms,實現(xiàn)了蘋果區(qū)塊鏈追溯信息的高效存儲和查詢。
系統(tǒng)運行頁面如圖6所示,圖6為系統(tǒng)工作界面圖,為供應鏈各節(jié)點提供信息采集服務和產(chǎn)品溯源服務,其中圖6a~d為種植、倉儲、加工、運輸信息采集界面,用戶可以通過信息采集功能上傳供應鏈數(shù)據(jù)信息,系統(tǒng)會自動對數(shù)據(jù)進行相應處理,將溯源信息和其Hash值分別存儲到本地數(shù)據(jù)庫和區(qū)塊鏈系統(tǒng)中。圖6e為消費者通過掃描二維碼查詢產(chǎn)品溯源信息以及數(shù)據(jù)的存證信息。
圖6 系統(tǒng)工作界面
與傳統(tǒng)蘋果供應鏈管理系統(tǒng)相比,區(qū)塊鏈驅(qū)動的蘋果供應鏈追溯系統(tǒng)具備去中心化的特性,不依賴某個組織和個人,解決了蘋果供應鏈管理中的“信任問題”,同時采用本文提出的外聯(lián)數(shù)據(jù)庫索引存儲方式,在一定程度上緩解了因數(shù)據(jù)不斷增加帶給區(qū)塊鏈系統(tǒng)的存儲壓力,使查詢效率明顯提升。
本文主要探討基于區(qū)塊鏈的農(nóng)產(chǎn)品安全防偽追溯系統(tǒng)存儲與查詢設計,針對區(qū)塊鏈追溯系統(tǒng)隨著數(shù)據(jù)的增長存在的數(shù)據(jù)負載壓力大、查詢效率低以及數(shù)據(jù)安全性差等問題,提出了一種外聯(lián)數(shù)據(jù)庫索引存儲方式:對追溯信息的哈希值進行數(shù)字簽名后寫入?yún)^(qū)塊鏈,同時返回哈希值所在區(qū)塊鏈上的區(qū)塊號,然后將追溯信息和區(qū)塊號存儲在各個節(jié)點的本地數(shù)據(jù)庫中。查詢時從本地數(shù)據(jù)庫讀取追溯信息和區(qū)塊號,對獲取的追溯信息進行哈希計算,并與通過區(qū)塊號獲取存儲在區(qū)塊鏈上的哈希值進行一致性對比,從而判斷追溯信息是否被篡改。通過將該方法與現(xiàn)有的兩種區(qū)塊鏈追溯系統(tǒng)存儲查詢方法進行試驗對比,結(jié)果表明:
1)針對區(qū)塊鏈數(shù)據(jù)不可刪除,隨著節(jié)點和數(shù)據(jù)的增加,區(qū)塊鏈存儲負載容量也要求越來越高的現(xiàn)狀,本文提出了“數(shù)據(jù)庫+區(qū)塊鏈”的鏈上鏈下追溯信息雙存儲設計,本地數(shù)據(jù)庫存儲原始數(shù)據(jù),鏈上存儲原始數(shù)據(jù)的哈希值,減輕了存儲負載壓力,解決數(shù)據(jù)隱私安全問題,同時能夠保證數(shù)據(jù)的真?zhèn)涡浴?/p>
2)本文提出的MD5加密是在數(shù)據(jù)上鏈之前對數(shù)據(jù)內(nèi)容加密,將加密后的數(shù)據(jù)再傳入?yún)^(qū)塊鏈系統(tǒng)中,配合現(xiàn)有的區(qū)塊鏈系統(tǒng)中的用于CA認證的底層加密技術(shù)如SHA256,一方面解決了追溯信息造成的存儲負載壓力,另一方面解決了追溯數(shù)據(jù)的隱私安全問題。同時采用MD5加密成32位十六進制的密文,在一定程度上,節(jié)省了區(qū)塊鏈的存儲空間。
3)隨著追溯記錄總量的增加,本文提出的外聯(lián)數(shù)據(jù)庫索引方法效率明顯提升,當追溯記錄總量11×104條,批次追溯記錄條數(shù)400時為例,本文方法的查詢效率較key查詢方法和content查詢方法效率分別提高了70.56%和88.66%。
本文的方法對建立完善區(qū)塊鏈農(nóng)產(chǎn)品追溯系統(tǒng)具有一定的參考依據(jù),存在不足之處是本文的研究是以文本數(shù)據(jù)的結(jié)構(gòu)化數(shù)據(jù)為研究對象,對于視頻等非結(jié)構(gòu)化數(shù)據(jù)存儲和查詢是下一步研究重點。在下一步研究中,將結(jié)合物聯(lián)網(wǎng)技術(shù)重構(gòu)完善區(qū)塊鏈農(nóng)產(chǎn)品追溯系統(tǒng)模型,在實際應用中不斷提高完善現(xiàn)有方法和系統(tǒng)。
[1]李國慶. 從廣東“鎘大米”事件看我國糧食質(zhì)量安全的監(jiān)管[J].河南工業(yè)大學學報:社會科學版,2013,9(3):20-23.
Li Guoqing. On Chinese supervision of grain quality safety from “Cadmium Rice” event in Guangdong[J]. Journal of Henan University of Technology: Social Science Edition, 2013, 9(3): 20-23. (in Chinese with English abstract)
[2]傅武勝,邱文倩,鄭奎城. 養(yǎng)殖魚孔雀石綠及其代謝物殘留量的調(diào)查與溯源[J]. 食品安全質(zhì)量檢測學報,2013,4(1):177-182.
Fu Wusheng, Qiu Wenqian, Zheng Kuicheng.Investigation and traceability of residual malachite green and its metabolite in freshwater fish[J]. Food Safety and Quality Detection Technology, 2013, 4(1): 177-182. (in Chinese with English abstract)
[3]韓麗嵐,徐榮靖. 南京“小龍蝦事件”調(diào)查處理分析[J].中國衛(wèi)生監(jiān)督雜志,2012,19(1):75-78.
Han Lilan, Xu Rongjing. Investigation and analysis of “Crayfish” in Nanjing[J]. Chinese Journal of Health Inspection, 2012, 19(1): 75-78. (in Chinese with English abstract)
[4]Jin S, Zhang Y, Xu Y. Amount of information and the willingness of consumers to pay for food traceability in China[J]. Food Control, 2017, 77: 163-170.
[5]Kim Y G , Woo E . Consumer acceptance of a quick response (QR) code for the food traceability system: Application of an extended technology acceptance model (TAM)[J]. Food Research International, 2016, 85: 266-272.
[6]Wang J, Yue H, Zhou Z. An improved traceability system for food quality assurance and evaluation based on fuzzy classification and neural network[J]. Food Control, 2017, 79: 363-370.
[7]曾祥衛(wèi),李引,郭暢. 分布式水產(chǎn)品流通全環(huán)節(jié)追溯體系的設計與實現(xiàn)[J]. 計算機與現(xiàn)代化,2018(6):108-110,115,126.
Zeng Xiangwei, Li Yin, Guo Chang. Design and realization of distributed traceability system of aquatic products’ circulation[J]. Computerand Modernization, 2018(6): 108-110, 115, 126. (in Chinese with English abstract)
[8]Aung M M, Chang Y S. Traceability in a food supply chain: Safety and quality perspectives[J]. Food Control, 2014, 39: 172-184.
[9]涂傳清,王愛虎. 我國農(nóng)產(chǎn)品質(zhì)量安全追溯體系建設中存在的問題與對策[J]. 農(nóng)機化研究,2011,33(3):16-20.
Tu Chuanqing, Wang Aihu. Problems and suggestions on the construction of traceability system for quality and safety of agricultural food in China[J]. Journal of Agricultural Mechanization Research, 2011, 33(3): 16-20. (in Chinese with English abstract)
[10]傅澤田,邢少華,張小栓. 食品質(zhì)量安全可追溯關(guān)鍵技術(shù)發(fā)展研究[J]. 農(nóng)業(yè)機械學報,2013,44(7):144-153.
Fu Zetian, Xing Shaohua, Zhang Xiaoxuan. Development trend of food quality safety traceability technology[J]. Transactions of The Chinese Society of Agricultural Machinery, 2013, 44(7): 144-153. (in Chinese with English abstract)
[11]楊信廷,錢建平,孫傳恒,等. 農(nóng)產(chǎn)品及食品質(zhì)量安全追溯系統(tǒng)關(guān)鍵技術(shù)研究進展[J]. 農(nóng)業(yè)機械學報,2014,45(11):212-222.
Yang Xinting, Qian Jianping, Sun Chuanheng, et al. Key technologies for establishment agricultural products and food quality safety traceability systems[J]. Transactions of the Chinese Society for Agricultural Machinery, 2014, 45(11): 212-222. (in Chinese with English abstract)
[12]錢建平,楊信廷,吉增濤,等. 農(nóng)產(chǎn)品追溯系統(tǒng)的追溯粒度評價模型構(gòu)建及應用[J]. 系統(tǒng)工程理論與實踐,2015,35(11):2950-2956.
Qian Jianping, Yang Xinting, Ji Zengtao, et al. Model for traceability granularity evaluation of traceability system in agricultural products[J]. System Engineering Theory and Practice, 2015, 35(11): 2950-2956. (in Chinese with English abstract)
[13]劉曉云,王曉春. “物聯(lián)網(wǎng)+區(qū)塊鏈”的農(nóng)產(chǎn)品質(zhì)量溯源體系研究[J]. 常州工學院學報,2018,31(5):60-65.
Liu Xiaoyun, Wang Xiaochun. Research on the traceability system of agricultural product quality based on “Internet of Things + Block Chain”[J]. Journal of Changzhou Institute of Technology, 2018, 31(5): 60-65. (in Chinese with English abstract)
[14]楊信廷,孫傳恒,錢建平,等. 基于流程編碼的水產(chǎn)養(yǎng)殖產(chǎn)品質(zhì)量追溯系統(tǒng)的構(gòu)建與實現(xiàn)[J]. 農(nóng)業(yè)工程學報,2008,24(2):159-164.
Yang Xinting, Sun Chuanheng, Qian Jianping, et al. Construction and implementation of fishery product quality traceability system based on the flow code of aquaculture[J]. Transactions of the Chinese Society of Agricultural Engineering (Transactions of the CSAE), 2008, 24(2): 159-164. (in Chinese with English abstract).
[15]Juan F Galvez, Mejuto J C, Simal-Gandara J. Future challenges on the use of blockchain for food traceability analysis[J]. TrAC Trends in Analytical Chemistry, 2018, 107: 222-232.
[16]于立娜,張國鋒,賈敬敦,等. 基于區(qū)塊鏈技術(shù)的現(xiàn)代農(nóng)產(chǎn)品供應鏈[J]. 農(nóng)業(yè)機械學報,2017,48(S1):387-393.
Yu Lina, Zhang Guofeng, Jia Jindun, et al. Modern agricultural product supply chain based on block chain technology[J]. Transactions of the Chinese Society for Agricultural Machinery, 2017, 48(S1): 387-393. (in Chinese with English abstract)
[17]李明佳,汪登,曾小珊,等. 基于區(qū)塊鏈的食品安全溯源體系設計[J]. 食品科學,2019,40(3):279-285.
Li Mingjia, Wang Deng, Zeng Xiaoshan, et al. Food safety tracing technology based on block chain[J]. Food Science, 2019, 40(3): 279-285. (in Chinese with English abstract)
[18] 趙磊,畢新華,趙安妮. 基于區(qū)塊鏈的生鮮食品移動追溯平臺框架重構(gòu)[J/OL].食品科學. [2019-01-11]. http://kns.cnki. net/kcms/detail/11.2206.TS.20190110.1258.010. html.
Zhao Lei, Bi Xinhua, Zhao Anni. Frame reconstruction of mobile traceability information system for fresh food based on blockchain[J/OL]. Food Science. [2019-01-11]. http://kns.cnki. net/kcms/detail/11.2206.TS.20190110.1258.010. html.
[19]Tian F. An agri-food supply chain traceability system for China based on RFID & blockchain technology[C]// 2016 13th International Conference on Service Systems and Service Management (ICSSSM). Kumming, China, IEEE, 2016: 1-6.
[20]Tian F. A supply chain traceability system for food safety based on HACCP, blockchain & Internet of things[C]//2017 14th International Conference on Service Systems and Service Management (ICSSSM). Dalian, China, IEEE, 2017.
[21]邵奇峰,金澈清,張召,等. 區(qū)塊鏈技術(shù):架構(gòu)及進展[J].計算機學報,2018,41(5):969-988.
Shao Qifeng, Jin Cheqing, Zhang Zhao, et al. Blockchain: Architecture and research progress[J]. Chinese Journal of Computers, 2018, 41(5): 969-988. (in Chinese with English abstract)
[22]吳明航. DES和RSA混合加密算法的研究[D]. 哈爾濱:哈爾濱工業(yè)大學,2013.
Wu Minghang. Reseach on DES and RES Hybrid Encryption Algorithm[D]. Harbin: Harbin Institute of Technology, 2013. (in Chinese with English abstract)
[23]賀海武,延安,陳澤華. 基于區(qū)塊鏈的智能合約技術(shù)與應用綜述[J]. 計算機研究與發(fā)展,2018,55(11):2452-2466.
He Haiwu, Yan An, Chen Zehua. Survey of smart contract technology and application based on blockchain[J]. Journal of Computer Research and Development, 2018, 55(11): 2452-2466. (in Chinese with English abstract)
[24]李劍鋒. 基于拜占庭容錯機制的區(qū)塊鏈共識算法研究與應用[D]. 鄭州:鄭州大學,2018.
Li Jianfeng. Research and Application of Blockchain Consensus AlgorithmBased on Byzantine Fault Tolerance Mechanism[D]. Zhengzhou: Zhengzhou University, 2018. (in Chinese with English abstract)
[25]袁勇,王飛躍. 區(qū)塊鏈技術(shù)發(fā)展現(xiàn)狀與展望[J]. 自動化學報,2016,42(4):481-494.
Yuan Yong, Wang Feiyue. Blockchain: The state of the art and future trends[J]. Journal of Automatica Sinica, 2016, 42(4): 481-494. (in Chinese with English abstract)
[26]何蒲,于戈,張巖峰,等. 區(qū)塊鏈技術(shù)與應用前瞻綜述[J].計算機科學,2017,44(4):1-7,15.
He Pu, Yu Ge, Zhang Yanfeng, et al. Survey on blockchain technology and its application prospect[J]. Computer Science, 2017, 44(4): 1-7, 15. (in Chinese with English abstract)
[27]焦通,申德榮,聶鐵錚,等. 區(qū)塊鏈數(shù)據(jù)庫:一種可查詢且防篡改的數(shù)據(jù)庫[J]. 軟件學報,2019,30(9):2671-2685.
Jiao Tong, Shen Derong, Nie Tiezheng, et al. Blockchain DB: a querable and immutable database[J]. Journal of Software, 2019, 30(9): 2671-2685. (in Chinese with English abstract)
[28]張裔智,趙毅,湯小斌. MD5算法研究[J]. 計算機科學,2008,35(7):295-297.
Zhang Yizhi, Zhao Yi, Tang Xiaobin. MD5 algorithm[J]. Computer Science, 2008, 35(7): 295-297. (in Chinese with English abstract)
[29]張亮,劉百祥,張如意,等. 區(qū)塊鏈技術(shù)綜述[J]. 計算機工程. 2019,45(5):1-12 .
Zhang Liang, Liu Baixiang, Zhang Ruyi, et al. Overview of blockchain technology[J]. Computer Engineering, 2019, 45(5):1-12 .
[30]王千閣,何蒲,聶鐵錚,等. 區(qū)塊鏈系統(tǒng)的數(shù)據(jù)存儲與查詢技術(shù)綜述[J]. 計算機科學,2018,45(12):12-18.
Wang Qiange, He Pu, Nie Tiezheng, et al. Survey of data storage and query techniques in blockchain systems[J]. Computer Science, 2018, 45(12): 12-18. (in Chinese with English abstract)
Data storage and query method of agricultural products traceability information based on blockchain
Yang Xinting1,2,3, Wang Mingting1,2,3, Xu Daming2,3, Luo Na2,3, Sun Chuanheng2,3※
(1.,,201306,; 2.,100097,; 3.,100097,)
Food safety has become an important topic in people’s daily lives. In recent years, the frequent occurrence of food safety incidents have caused a crisis of trust between consumers and the food industry. Accordingly, there is an urgent need to establish an efficient and trusted traceability system for agricultural products. In the practical application of the traditional traceability system, the data of the production, processing, packaging, transportation, storage and sales of agricultural products are stored in the local database of each node, data in traditional traceability systems is centralized, and authoritative agencies manage the central database of the traceability system. Because the traceability data of each supply chain node is managed by the enterprise itself, the data is easy to be tampered with. Therefore, it is necessary to improve the reliability of information transmission between different roles in agricultural supply chain.Blockchain has the characteristics of decentralization, non-tampering, traceability, and high availability. Using these characteristics of blockchain and using blockchain technology to trace agricultural products, it is possible to solve the problems existing in the current traditional traceability system.At present, Scholars in China and abroad have studied the application of blockchain in the field of traceability. However, the traceability system of blockchain have some problems, such as low query efficiency, high data-storage load, and poor data privacy and security. In order to solve the above problems, this study designed a storage structure for a blockchain-based traceability system for agricultural products based on Hyperledger Fabric and proposed an index storage and query method for gtraceability information. In this method, “On chain and off chain” data storage technology is used, the enterprise first digitally signs the hash value of the traceability information of agricultural products, writes the hash value into the blockchain, and returns the block number to the blockchain where the hash value is located. Then, the traceability information of agricultural products and the block number are stored in the local database of each node. If the information of agricultural products needs to be modified, it is necessary to rewrite the hash value of the traceability information to the blockchain and update the block number. When consumers scan the QR code of agricultural products, the traceability information and block number is obtained from the local database, the value is calculated by hash algorithm for the acquired traceability information, and compare it with this newly acquired hash value with the hash value stored in the blockchain by block number to verify the authenticity of traceability information of agricultural products. The result showed that, when the number of total traceability records reached 11×104in the blockchain and the number of batch traceability records was 400 respectively, the query efficiency of the newly proposed method was increased by 70.56% and 88.66% compared to two traditional blockchain-based data query methods of query performed using the value of key attribute and querying performed using the batch number of agricultural products through the rich query of the CouchDB database, respectively. The approach of this paper effectively solves the problem of excessive load pressure of blockchain data storage, ensures data privacy and security, and improves the reliability and timeliness of traceability information.
agricultural products; traceability; blockchain; Hyperledger Fabric; index storage; efficient query
楊信廷,王明亭,徐大明,羅 娜,孫傳恒. 基于區(qū)塊鏈的農(nóng)產(chǎn)品追溯系統(tǒng)信息存儲模型與查詢方法[J]. 農(nóng)業(yè)工程學報,2019,35(22):323-330.doi:10.11975/j.issn.1002-6819.2019.22.038 http://www.tcsae.org
Yang Xinting, Wang Mingting, Xu Daming, Luo Na, Sun Chuanheng. Data storage and query method of agricultural products traceability information based on blockchain[J]. Transactions of the Chinese Society of Agricultural Engineering (Transactions of the CSAE), 2019, 35(22): 323-330. (in Chinese with English abstract) doi:10.11975/j.issn.1002-6819.2019.22.038 http://www.tcsae.org
2019-07-23
2019-11-05
國家自然科學基金項目(31871525);北京自然科學基金面上項目(4182023);廣東省農(nóng)業(yè)科技創(chuàng)新及推廣項目(2018LM2168)
楊信廷,博士,研究員,主要從事農(nóng)產(chǎn)品質(zhì)量安全關(guān)鍵技術(shù)研究。中國農(nóng)業(yè)工程學會會員(E041200352S)。Email:yangxt@nercita.org.cn
孫傳恒,博士,副研究員,主要從事農(nóng)業(yè)信息化及農(nóng)產(chǎn)品質(zhì)量安全控制研究。Email:sunch@nercita.org.cn
10.11975/j.issn.1002-6819.2019.22.038
TP311.13
A
1002-6819(2019)-22-0323-08