劉應(yīng),范洪博,馬首群,高志偉,劉錦江
(昆明理工大學(xué)信息工程與自動(dòng)化學(xué)院,云南 昆明 650500)
在各種奶類(lèi)產(chǎn)品中,生鮮奶因其營(yíng)養(yǎng)價(jià)值高、口感好、附加值大等特性,是我國(guó)奶類(lèi)產(chǎn)業(yè)發(fā)展的重點(diǎn),智研咨詢(xún)發(fā)布的《2020—2026年中國(guó)鮮奶行業(yè)市場(chǎng)研究分析及投資策略探討報(bào)告》的數(shù)據(jù)顯示:2019年,中國(guó)鮮奶銷(xiāo)售額/(鮮奶+常溫白奶銷(xiāo)售額)比值僅為26.71%,英國(guó)、澳大利亞、日本、美國(guó)對(duì)應(yīng)比值分別為94.15%、88.67%、98.30%、98.22%,這些數(shù)據(jù)體現(xiàn)了全球生鮮奶行業(yè)增長(zhǎng)的潛力與空間。
中國(guó)是奶制品安全問(wèn)題凸顯的國(guó)家,其中大頭娃娃奶粉[1]、黃曲霉毒素、三聚氰胺等事件[2],對(duì)中國(guó)的奶制品行業(yè)造成了難以挽回的損失,也嚴(yán)重影響了消費(fèi)者的消費(fèi)欲望。特別在生鮮奶領(lǐng)域,由于生鮮奶要求就近生產(chǎn)、就近消費(fèi),消費(fèi)者周?chē)饕哪淘礊橹行⌒湍虉?chǎng)等,消費(fèi)者對(duì)這些中小型奶場(chǎng)的奶制品的食品安全能力難以把控。傳統(tǒng)溯源體系建設(shè)中,要求所有的生產(chǎn)者、供應(yīng)鏈、消費(fèi)者均要完全相信溯源系統(tǒng)建設(shè)方,造成了昂貴的信用成本,同時(shí),中心化的溯源信息管理可能被篡改、被偽造,不僅損害了生產(chǎn)者的利益,還威脅人們的身體健康[3],且存在數(shù)據(jù)平臺(tái)運(yùn)營(yíng)費(fèi)用高昂、信息錄入不及時(shí)、追蹤信息不全面等諸多弊端。
2008年,伴隨著比特幣出現(xiàn)了區(qū)塊鏈技術(shù)[4],記錄在區(qū)塊鏈上的信息具有幾乎不可篡改、數(shù)據(jù)永久公開(kāi)透明可追溯、去中心化等優(yōu)勢(shì),已被證明是最優(yōu)的溯源體系底層技術(shù)。2019年5月,國(guó)務(wù)院發(fā)布的《關(guān)于深化改革加強(qiáng)食品安全工作的意見(jiàn)》中明確指出,推進(jìn)區(qū)塊鏈等技術(shù)在食品安全監(jiān)管領(lǐng)域的應(yīng)用,實(shí)施智慧監(jiān)管,2020年中央一號(hào)文件中指出,加快區(qū)塊鏈等現(xiàn)代信息技術(shù)在農(nóng)業(yè)領(lǐng)域的應(yīng)用。
本文分析了生鮮奶行業(yè)的特性,針對(duì)生鮮奶行業(yè)特點(diǎn),分析該領(lǐng)域和傳統(tǒng)農(nóng)產(chǎn)品溯源領(lǐng)域的重要區(qū)別,并進(jìn)行了針對(duì)性的設(shè)計(jì),利用超級(jí)賬本技術(shù)Fabric區(qū)塊鏈,設(shè)計(jì)了一種專(zhuān)門(mén)針對(duì)生鮮奶行業(yè)的溯源系統(tǒng)RMChain,該系統(tǒng)在保持區(qū)塊鏈技術(shù)幾乎不可篡改、低成本信用等優(yōu)勢(shì)上[5],有效針對(duì)生鮮奶的強(qiáng)時(shí)效性和問(wèn)題事后暴露等特點(diǎn),使用密碼學(xué)區(qū)塊鏈中的信息確保信息安全[6],進(jìn)行專(zhuān)門(mén)的溯源跟蹤。
(1)生鮮奶具有強(qiáng)時(shí)效性
經(jīng)過(guò)的加工程序不同,保存的環(huán)境不同,鮮奶的保質(zhì)期時(shí)間的長(zhǎng)短也會(huì)有所不同,具體要分情況而論。
未經(jīng)過(guò)加工處理的生鮮牛奶,即剛擠出來(lái)的牛奶,一般可以保存24~36 h。經(jīng)過(guò)巴氏殺菌處理的鮮奶,一般可以保存1~2周的時(shí)間。經(jīng)過(guò)超高溫殺菌技術(shù)處理的牛奶,儲(chǔ)存方便且保質(zhì)期會(huì)比較長(zhǎng),本文所描述的生鮮奶主要指這種牛奶。
(2)遇問(wèn)題常呈現(xiàn)事后暴露的情況
在生鮮奶中,常出現(xiàn)霉菌、金黃色葡萄球菌等感染情況[7-8],這些微生物感染將對(duì)飲用者造成嚴(yán)重的健康威脅,現(xiàn)有的沙門(mén)氏菌快速檢測(cè)技術(shù)也經(jīng)常要超過(guò)24 h才能有檢測(cè)結(jié)果[9]。而由于生鮮奶只有24~36 h的保質(zhì)期,當(dāng)檢測(cè)發(fā)現(xiàn)奶中存在問(wèn)題時(shí),消費(fèi)者已經(jīng)把問(wèn)題奶飲用掉了。
(3)問(wèn)題生鮮奶難以追蹤
奶類(lèi)產(chǎn)品是液體,無(wú)法在奶中加入傳感器、快速檢測(cè)技術(shù)等溯源信息收集裝置,典型的瓶裝生鮮奶,因奶瓶無(wú)法供電,無(wú)法安裝GPS定位等手段,也難以對(duì)奶的銷(xiāo)售流向進(jìn)行數(shù)據(jù)追溯[10]。
(4)監(jiān)管難以事后介入
生鮮奶的強(qiáng)時(shí)效性導(dǎo)致了監(jiān)管部門(mén)事后介入時(shí),主要的有效質(zhì)量數(shù)據(jù)已經(jīng)難以追蹤。應(yīng)在生鮮奶銷(xiāo)售就近建立大量微型質(zhì)量檢測(cè)網(wǎng)絡(luò),確保每個(gè)廠商每個(gè)批次的奶都有對(duì)應(yīng)的質(zhì)量檢測(cè)報(bào)告。
以上4點(diǎn)問(wèn)題是生鮮奶溯源行業(yè)與傳統(tǒng)農(nóng)產(chǎn)品溯源行業(yè)的主要區(qū)別,現(xiàn)有基于商品的溯源體系(哪怕是區(qū)塊鏈溯源體系)難以滿足生鮮奶行業(yè)的溯源需求,必須進(jìn)行針對(duì)性的設(shè)計(jì)。
區(qū)塊鏈技術(shù)的出現(xiàn)為供應(yīng)鏈管理引入了一種新的思維方式[11-14],是一種去中心化的方案[15],在生鮮奶供應(yīng)鏈中,信息的可溯性是涉及生產(chǎn)和分配商品的所有過(guò)程的連接,從原材料到制成品再到最終的消費(fèi)者,其牛奶的可追溯性系統(tǒng)可以定義為一種能夠保證生鮮奶在整個(gè)供應(yīng)鏈中的運(yùn)行可以被追蹤的系統(tǒng)[16]。
基于區(qū)塊鏈的可追溯性系統(tǒng)的想法最早于2015年11月出現(xiàn),Alexis Bateman認(rèn)為[17],由于缺乏標(biāo)準(zhǔn)化,區(qū)塊鏈將是解決跨供應(yīng)鏈信息挖掘和管理挑戰(zhàn)的現(xiàn)實(shí)技術(shù)選擇,區(qū)塊鏈技術(shù)可以確保對(duì)鮮奶鏈中的每個(gè)批次進(jìn)行可靠的跟蹤。在發(fā)現(xiàn)食源性疾病的情況下,區(qū)塊鏈可以很容易地找到有缺陷的產(chǎn)品并丟棄所有受影響的產(chǎn)品批次。目前,市場(chǎng)上已有美國(guó)最大牛奶公司Dairy Farmers of America與食品科技公司ripe.io展開(kāi)合作,擬利用后者開(kāi)發(fā)的區(qū)塊鏈來(lái)追蹤奶源、提升數(shù)據(jù)透明度,以此提高消費(fèi)者對(duì)于鮮奶安全的信心。
食品可追溯性已被視為確保食品安全和高質(zhì)量的重要方面[18],根據(jù)Deloitte的調(diào)查,2019年消費(fèi)品和制造業(yè)的公司中有42%計(jì)劃在區(qū)塊鏈技術(shù)上花費(fèi)至少500萬(wàn)美元。而在參考文獻(xiàn)[19]中,在供應(yīng)鏈管理中的區(qū)塊鏈預(yù)計(jì)將以87%的年增長(zhǎng)率增長(zhǎng),到2023年預(yù)計(jì)將從2018年的4 500萬(wàn)美元增加到3.346億美元。區(qū)塊鏈提供了不可更改的交易記錄,所有生產(chǎn)產(chǎn)品和運(yùn)輸詳細(xì)信息均通過(guò)不同的技術(shù)收集并經(jīng)過(guò)驗(yàn)證,在區(qū)塊鏈賬本上永久記錄[20],區(qū)塊鏈可追溯系統(tǒng)具有去中心化的特點(diǎn),并采用可靠的技術(shù)方法來(lái)記錄生鮮奶中的可追溯數(shù)據(jù)并存儲(chǔ)在共同的賬本上,通過(guò)智能合約保障交易的安全性[21-23],而且監(jiān)管機(jī)制也能參與整個(gè)過(guò)程,能在生鮮奶供應(yīng)鏈中對(duì)數(shù)據(jù)溯源起到至關(guān)重要的作用。
本系統(tǒng)大量涉及檢測(cè)報(bào)告等較大的數(shù)據(jù),傳統(tǒng)區(qū)塊鏈溯源系統(tǒng)中,所有數(shù)據(jù)都放在區(qū)塊鏈中,由于區(qū)塊鏈賬本相對(duì)昂貴且性能較低,各種數(shù)據(jù)放在一起的方式嚴(yán)重影響了系統(tǒng)的并發(fā)能力和吞吐率。參考文獻(xiàn)[24]提出etherQL系統(tǒng),該系統(tǒng)在區(qū)塊鏈之外設(shè)計(jì)了一個(gè)單獨(dú)的查詢(xún)層,將區(qū)塊鏈的原始數(shù)據(jù)復(fù)制到外部數(shù)據(jù)庫(kù),提高查詢(xún)效率。本系統(tǒng)中在此思想上,運(yùn)用多方存儲(chǔ)分離存儲(chǔ)的加速機(jī)制,同時(shí)保障了數(shù)據(jù)的快速訪問(wèn)和不可篡改性。
系統(tǒng)所有加入的數(shù)據(jù)可以根據(jù)其重要性進(jìn)行分級(jí)。對(duì)于產(chǎn)品保質(zhì)期、各方基本數(shù)據(jù)等在用戶(hù)查看數(shù)據(jù)時(shí)必須第一時(shí)間就要確保正確的數(shù)據(jù),數(shù)據(jù)直接存儲(chǔ)在Fabric網(wǎng)絡(luò)中。而對(duì)用戶(hù)非重要的數(shù)據(jù)(如奶牛的檢測(cè)報(bào)告、企業(yè)的資質(zhì)文件等),無(wú)須存儲(chǔ)在較為昂貴的區(qū)塊鏈中,區(qū)塊鏈中只存儲(chǔ)非重要數(shù)據(jù)Hash值,并將非重要數(shù)據(jù)同時(shí)存儲(chǔ)在訪問(wèn)速度較快的云數(shù)據(jù)庫(kù)和相對(duì)訪問(wèn)較慢但難以篡改的IPFS區(qū)塊鏈中。其中,IPFS也是一種面向文件存儲(chǔ)的區(qū)塊鏈技術(shù),雖然沒(méi)有智能合約等相關(guān)技術(shù)支持,但I(xiàn)PFS能快速存儲(chǔ)一些較大數(shù)據(jù),其存儲(chǔ)數(shù)據(jù)幾乎不可篡改。
目前用戶(hù)和企業(yè)都傾向于將數(shù)據(jù)存儲(chǔ)在云端服務(wù)器,但并沒(méi)有經(jīng)過(guò)加密處理,雖然提供了諸多便利,但仍存在各種安全問(wèn)題[25],本文的多方存儲(chǔ)查詢(xún)方式如圖1所示,基于數(shù)據(jù)的重要性,用戶(hù)查看非重要數(shù)據(jù)時(shí),通過(guò)異步查詢(xún)方式,數(shù)據(jù)由云數(shù)據(jù)庫(kù)提供,在向用戶(hù)展示前,先計(jì)算其Hash值,并與Fabric中記錄數(shù)據(jù)進(jìn)行比對(duì)。若比對(duì)通過(guò),則證明云數(shù)據(jù)庫(kù)中數(shù)據(jù)沒(méi)有被改動(dòng),可以向用戶(hù)展示;若比對(duì)失敗,則將云數(shù)據(jù)庫(kù)中的數(shù)據(jù)作廢,從IPFS區(qū)塊鏈中下載真實(shí)數(shù)據(jù)并展示。通過(guò)這種交叉訪問(wèn)的方式,在保障區(qū)塊鏈幾乎不可篡改的特性的同時(shí),又有云數(shù)據(jù)庫(kù)的高速訪問(wèn)能力,可明顯提高區(qū)塊鏈性能。
RMChain主要由UI層、管理層、數(shù)據(jù)層(鏈外)和區(qū)塊層(鏈上)組成,區(qū)塊鏈用作包含數(shù)據(jù)和業(yè)務(wù)邏輯的軟件連接器,涉及6個(gè)不同類(lèi)型的用戶(hù)。
· 生產(chǎn)方:奶牛牧場(chǎng)提供生鮮奶,并進(jìn)行灌裝包裝等必要加工。
· 運(yùn)輸方:負(fù)責(zé)生鮮奶的運(yùn)輸、倉(cāng)儲(chǔ)的運(yùn)輸方,考慮到物流端方便管理,系統(tǒng)引入了RFID輔助二維碼進(jìn)行運(yùn)輸端數(shù)據(jù)的管理。
· 銷(xiāo)售方:負(fù)責(zé)進(jìn)行生鮮奶銷(xiāo)售。
· 質(zhì)量監(jiān)控網(wǎng)絡(luò):第三方質(zhì)檢企業(yè),對(duì)生鮮奶質(zhì)量進(jìn)行質(zhì)檢,出具質(zhì)檢報(bào)告。
· 消費(fèi)者:購(gòu)買(mǎi)生鮮奶,需要了解生鮮奶的全流程,并在出現(xiàn)問(wèn)題時(shí)獲得賠償。
· 監(jiān)管方:對(duì)整個(gè)系統(tǒng)數(shù)據(jù)進(jìn)行管理。
圖1 多方存儲(chǔ)查詢(xún)方式
系統(tǒng)采用Hyperledger Fabric搭建聯(lián)盟鏈作為區(qū)塊鏈網(wǎng)絡(luò),其位于公共區(qū)塊鏈和私有區(qū)塊鏈之間,且都是通過(guò)獨(dú)特的結(jié)構(gòu)確保數(shù)據(jù)的難以篡改性[26],用于同時(shí)存在多個(gè)用戶(hù)角色,在本節(jié)的RMChain模型,用于整個(gè)生鮮奶供應(yīng)鏈平臺(tái)的追溯以及認(rèn)證,其目標(biāo)是監(jiān)視生鮮奶供應(yīng)鏈信息的整個(gè)過(guò)程,其體系結(jié)構(gòu)如圖2所示。
系統(tǒng)中,通過(guò)準(zhǔn)入機(jī)制,所有用戶(hù)提前在本系統(tǒng)CA中進(jìn)行注冊(cè)認(rèn)證,獲得訪問(wèn)區(qū)塊鏈系統(tǒng)的唯一私鑰,并由客戶(hù)端基于私鑰,經(jīng)不可逆計(jì)算,生成用戶(hù)公鑰和對(duì)外二維碼,對(duì)外二維碼中包含了公鑰信息,該二維碼用于系統(tǒng)間的身份認(rèn)證和數(shù)據(jù)交互。
用戶(hù)在注冊(cè)時(shí),需實(shí)名注冊(cè),提交身份證、個(gè)人聯(lián)系方式、地址等必要信息,若是企業(yè)還需提供企業(yè)資質(zhì)憑證,憑證不能通過(guò)審核者,CA拒絕向其發(fā)放私鑰。
在整個(gè)生鮮奶的生產(chǎn)、消費(fèi)、監(jiān)管過(guò)程中,系統(tǒng)的交互模式如圖3所示。
步驟1生產(chǎn)端生產(chǎn)生鮮奶,并完成奶質(zhì)自查,形成檢測(cè)報(bào)告,系統(tǒng)根據(jù)當(dāng)前批次,生成唯一的批次ID以及和瓶身綁定的溯源碼ID,生產(chǎn)端在系統(tǒng)中輸入批次ID和批次信息,包含(生產(chǎn)時(shí)間地點(diǎn)、奶牛信息、批次產(chǎn)量、生產(chǎn)端自檢檢測(cè)報(bào)告等)上鏈,并利用生產(chǎn)端私鑰對(duì)所錄入的信息進(jìn)行數(shù)字簽名。根據(jù)批次產(chǎn)量,生成唯一的瓶身溯源二維碼和RFID信息。瓶身溯源二維碼有可刮開(kāi)的密碼區(qū),生產(chǎn)端在瓶身張貼溯源二維碼,在包裝箱中加入已寫(xiě)數(shù)據(jù)的RFID,每瓶溯源二維碼對(duì)應(yīng)數(shù)據(jù)和批次數(shù)據(jù)進(jìn)行綁定,RFID數(shù)據(jù)和包裝箱內(nèi)各瓶生鮮奶溯源二維碼對(duì)應(yīng)數(shù)據(jù)進(jìn)行綁定。
步驟2運(yùn)輸端對(duì)已經(jīng)張貼溯源二維碼和RFID的生鮮奶進(jìn)行倉(cāng)儲(chǔ)和運(yùn)輸,通過(guò)讀寫(xiě)RFID的數(shù)據(jù),輸入運(yùn)輸時(shí)間、經(jīng)手人、運(yùn)輸源、目的地、出入庫(kù)信息、倉(cāng)儲(chǔ)信息等信息,數(shù)據(jù)上鏈并利用運(yùn)輸端私鑰對(duì)輸入數(shù)據(jù)進(jìn)行數(shù)字簽名。
圖2 RMChian系統(tǒng)架構(gòu)
圖3 數(shù)據(jù)交互圖
步驟3銷(xiāo)售端利用RFID數(shù)據(jù),完成產(chǎn)品的上架銷(xiāo)售工作,上架過(guò)程輸入上架時(shí)間、銷(xiāo)售資質(zhì)、銷(xiāo)售方式等信息,數(shù)據(jù)上鏈并數(shù)字簽名。根據(jù)數(shù)據(jù)錄入的時(shí)間戳,系統(tǒng)實(shí)時(shí)提醒本批次生鮮奶還能銷(xiāo)售的時(shí)間段,銷(xiāo)售端對(duì)超保質(zhì)期的生鮮奶可以直接拒收。當(dāng)超出保質(zhì)期時(shí)限后,要求廠商根據(jù)區(qū)塊鏈記錄銷(xiāo)售情況,將剩余未銷(xiāo)售的生鮮奶進(jìn)行回收銷(xiāo)毀,銷(xiāo)毀數(shù)據(jù)登記到區(qū)塊鏈。
步驟4消費(fèi)者在購(gòu)買(mǎi)生鮮奶時(shí),掃描瓶身溯源二維碼,在通過(guò)輸入溯源碼即可查看步驟1~步驟3所錄入的所有信息,并由系統(tǒng)自動(dòng)驗(yàn)證所有信息的數(shù)字簽名,確保信息的實(shí)名錄入。若消費(fèi)者認(rèn)可這些產(chǎn)品的溯源信息,需要進(jìn)行購(gòu)買(mǎi)時(shí),要求刮開(kāi)密碼區(qū),并在系統(tǒng)中輸入密碼,輸入密碼后,即完成了消費(fèi)者和對(duì)應(yīng)生鮮奶的綁定,綁定關(guān)系上鏈,并由消費(fèi)者自身私鑰進(jìn)行數(shù)字簽名。該綁定關(guān)系也是當(dāng)生鮮奶出現(xiàn)質(zhì)量問(wèn)題后,作為賠償?shù)膽{證。
步驟5每批次的生鮮奶要求送樣品給指定第三方檢測(cè)機(jī)構(gòu)進(jìn)行質(zhì)量檢測(cè),質(zhì)量檢測(cè)報(bào)告綁定每批次的生鮮奶,在檢測(cè)報(bào)告完成時(shí),上鏈并由第三方檢測(cè)機(jī)構(gòu)數(shù)字簽名,檢測(cè)報(bào)告推送購(gòu)買(mǎi)本批次生鮮奶的用戶(hù),讓消費(fèi)者能及時(shí)了解生鮮奶的質(zhì)量問(wèn)題。若檢測(cè)到沙門(mén)氏菌等問(wèn)題,告知用戶(hù)就醫(yī)方案和賠償方案,讓用戶(hù)有所準(zhǔn)備。檢測(cè)報(bào)告由監(jiān)督部門(mén)進(jìn)行復(fù)查,杜絕檢測(cè)機(jī)構(gòu)亂出檢測(cè)報(bào)告的可能。
步驟6監(jiān)督部門(mén)監(jiān)控鏈上數(shù)據(jù),對(duì)各方進(jìn)行現(xiàn)場(chǎng)抽查、數(shù)據(jù)復(fù)查和審計(jì),并在出現(xiàn)問(wèn)題時(shí)進(jìn)行有效協(xié)調(diào),對(duì)出現(xiàn)問(wèn)題或違規(guī)的各方,進(jìn)行警告處理,剔除節(jié)點(diǎn),嚴(yán)重者將通過(guò)記錄數(shù)據(jù)的信息追究法律責(zé)任。
根據(jù)參與者角色功能的制定,每個(gè)參與方只有執(zhí)行背書(shū)策略后的每筆交易才有效,其相關(guān)算法如下。
算法1生成生鮮奶溯源信息
在算法1中定義監(jiān)管部門(mén)為MP,各參與方信息為GE,生產(chǎn)方信息為I,運(yùn)輸方信息為L(zhǎng)O,銷(xiāo)售方為SE,檢測(cè)方信息為T(mén)E,其生產(chǎn)方生產(chǎn)完后提供每批生產(chǎn)的批次號(hào)ID以及溯源號(hào)MilkID,下面為智能合約如何將生鮮奶的基本信息打包成區(qū)塊以及數(shù)據(jù)存儲(chǔ)過(guò)程。
輸入MilkID,GE
輸出MP_Massage,TE
步驟1判斷輸入?yún)?shù)正確性,如果輸入數(shù)據(jù)不滿足設(shè)定數(shù)據(jù)參數(shù)值,則返回錯(cuò)誤,若參數(shù)輸入正確,則判斷其溯源ID(溯源MilkID∈批次ID)是否存在,若存在則獲取正確的溯源信息,反之則返回錯(cuò)誤,對(duì)拿到的數(shù)據(jù)進(jìn)行處理如下:
(1)Json.Unmarshal for I/LO/SE/TE //對(duì)數(shù)據(jù)信息反序列化*/
(2)GE.Generate(W) W∈I/LO/SE/TE //生成相關(guān)區(qū)塊數(shù)據(jù)*/
(3)select W1→networks(W1∈W為重要數(shù)據(jù))/*將重要數(shù)據(jù)存儲(chǔ)區(qū)塊鏈*/
(4)select W2→central database (W1∈W為非重要數(shù)據(jù))/*將非重要數(shù)據(jù)存儲(chǔ)數(shù)據(jù)庫(kù)*/
(5)W →IPFS //將數(shù)據(jù)備份到IPFS
步驟2各方參與信息對(duì)生成的數(shù)據(jù)進(jìn)行簽名(signature)并生成CA發(fā)送給MP進(jìn)行審核,MP驗(yàn)證簽名和CA無(wú)誤后則審核通過(guò),生成監(jiān)管信息MP_Massage;TE進(jìn)行鏈上標(biāo)記是否通過(guò),未通過(guò)將通知相關(guān)參與方整改,嚴(yán)重者啟動(dòng)法律程序。
算法2通過(guò)MilkID追溯數(shù)據(jù)信息
輸入MilkID
輸出I,LO,SE,TE,MP_Massage
步驟1通過(guò)關(guān)鍵的MilkID查詢(xún)生鮮奶的基本信息并追溯數(shù)據(jù)的歷史記錄。
步驟2通過(guò)MilkID 查詢(xún)并返回I/LO/SE/TE各方的數(shù)據(jù)結(jié)果并使用 GetState方法寫(xiě)入查詢(xún)區(qū)塊信息記錄。
步驟3通過(guò)數(shù)據(jù)庫(kù)中數(shù)據(jù)計(jì)算SHA256值,其結(jié)果Hash A和Fabric網(wǎng)絡(luò)中存儲(chǔ)的Hash B的結(jié)果做對(duì)比,其操作如下:
(1)get Hash Result A from Fabric //獲取哈希A的信息
(2)Json.Unmarshal for I/LO/SE/TE //進(jìn)行反序列化
(3)query data B from CentralDB and applying SHA256 /*獲取數(shù)據(jù)庫(kù)數(shù)據(jù)計(jì)算哈希*/
(4)Comparison HASH Results A and B /*A與B哈希結(jié)果對(duì)比判斷是否篡改*/
(5)If data B≠A,return err →MP/*數(shù)據(jù)被篡改,返回錯(cuò)誤提交給監(jiān)管方*/
(6)applying IPFS data //請(qǐng)求匹配存在IPFS中的數(shù)據(jù)備份*/
(7)else continue //若沒(méi)被篡改繼續(xù)執(zhí)行下一步
步驟4通過(guò)GetHistory 追溯歷史數(shù)據(jù)放入迭代器中。
步驟5對(duì)查詢(xún)到的歷史數(shù)據(jù),查看I、LO、SE、TE、MP_Massage數(shù)據(jù)來(lái)實(shí)現(xiàn)數(shù)據(jù)追溯。
算法3監(jiān)管部門(mén)監(jiān)管賬本信息(超級(jí)管理員)
輸入admin,MilkID
輸出MP_Massage
步驟1參與者通過(guò)準(zhǔn)入機(jī)制向MP申請(qǐng)注冊(cè)CA分發(fā)公鑰和私鑰成為賬本參與節(jié)點(diǎn)。
步驟2MP有對(duì)賬本進(jìn)行重要操作的權(quán)限,除了算法2中的相關(guān)權(quán)限以外,其他權(quán)限操作如下:
(1)get data from Fabric and CentralDB from/I/LO/SE/TE
(2)update / removedata →block /I/LO/SE/TE/*若果發(fā)現(xiàn)信息有誤可以從區(qū)塊鏈上及時(shí)更新和刪除節(jié)點(diǎn)信息,區(qū)塊會(huì)記錄所有操作記錄*/
(3)MP audit I/LO/SE/TE //對(duì)所有數(shù)據(jù)進(jìn)行審查和復(fù)查
步驟3如果發(fā)現(xiàn)違規(guī),將執(zhí)行算法1的步驟2。
本次溯源鏈均通過(guò)平臺(tái)注冊(cè)參與方用戶(hù)獲得相應(yīng)的CA和私鑰,成員身份基于標(biāo)準(zhǔn)的X.509證書(shū),密鑰使用的是ECDSA算法,利用PKI體系給每個(gè)參與方頒發(fā)數(shù)字證書(shū),均授權(quán)訪問(wèn)RMChain。根據(jù)實(shí)驗(yàn)生產(chǎn)商初始化信息假設(shè)將批次為P/N202008并綁定批次號(hào)溯源編號(hào)XN20200702和XN20200920的生鮮奶提供給運(yùn)輸方甲方,可掃碼后通過(guò)輸入溯源號(hào)碼查詢(xún)溯源信息,通過(guò)數(shù)據(jù)庫(kù)查詢(xún)并進(jìn)行Hash比對(duì),若正確,則追溯成功。
測(cè)試采用系統(tǒng)為64 bit的Ubuntu18.04、處理器為Intel Core i5(2.7 GHz)、內(nèi)存為8 GB的設(shè)備進(jìn)行運(yùn)行測(cè)試,并在Docker虛擬容器環(huán)境運(yùn)行,采用Fabric-sdk-go進(jìn)行客戶(hù)端開(kāi)發(fā),設(shè)定了兩個(gè)Org組織,Org1為監(jiān)管方、質(zhì)量監(jiān)控方以及消費(fèi)者組成的監(jiān)督節(jié)點(diǎn),Org2為運(yùn)輸方、生產(chǎn)方、銷(xiāo)售方、消費(fèi)者的源數(shù)據(jù)組織,通過(guò)超級(jí)管理員進(jìn)行權(quán)限控制,共有3個(gè)peer節(jié)點(diǎn),兩個(gè)CA節(jié)點(diǎn)認(rèn)證進(jìn)行測(cè)試。
圖4為生鮮奶追溯客戶(hù)端實(shí)現(xiàn),其生產(chǎn)端管理員數(shù)據(jù)接入部分上鏈流程。其用戶(hù)查詢(xún)包含各節(jié)點(diǎn)管理員更新的數(shù)據(jù)信息記錄以及關(guān)鍵數(shù)據(jù)信息,包括部分生產(chǎn)、運(yùn)輸、質(zhì)檢、銷(xiāo)售信息。
Hyperledger caliper是用于區(qū)塊鏈網(wǎng)絡(luò)的基準(zhǔn)測(cè)試工具,它支持各種超級(jí)賬本框架,通過(guò)對(duì)于此次試驗(yàn)交易處理時(shí)間內(nèi)交易的RMChain系統(tǒng)成員(生產(chǎn)方、運(yùn)輸方、銷(xiāo)售方、檢測(cè)方、消費(fèi)者、監(jiān)管方)的每輪寫(xiě)入超級(jí)賬本的網(wǎng)絡(luò)交易次數(shù)進(jìn)行了相關(guān)的性能測(cè)試,其交易時(shí)間決定了區(qū)塊鏈的性能。
圖4 生鮮奶追溯實(shí)現(xiàn)
圖5 RMChain性能測(cè)試
按每次執(zhí)行1 000筆交易,交易速率為80、160、240、320、400筆交易每秒(tps),如圖5所示,顯示了不同的網(wǎng)絡(luò)中配置交易所需花費(fèi)的必要時(shí)間,其中包含在網(wǎng)絡(luò)的異常配置中成功完成事務(wù)所花費(fèi)的時(shí)間。在1org1peer、2org1peer、2org2peer中,表示不同的性能,經(jīng)過(guò)5輪測(cè)試,每輪1 000筆交易,在10 s后,在Fabric網(wǎng)絡(luò)自帶couchDB中1org1peer完成1 800筆交易,2org1peer達(dá)到1 610筆交易,而2org2peer達(dá)到1 200筆交易。同樣,在數(shù)據(jù)不被篡改的情況下couchDB+MySQL中1org1peer完成3 200筆交易,2org1peer達(dá)到2 511筆交易,而2org2peer達(dá)到2 000筆交易,數(shù)據(jù)明顯提升,所以隨著組織的增加,執(zhí)行交易的時(shí)間也同樣增加了。而在數(shù)據(jù)被篡改的情況下,在啟用couchDB+IPFS備份可以看到性能有所下降,最高在1 000筆交易量時(shí)作用,這是由于隨著交易量增加,達(dá)到一定數(shù)量時(shí)IPFS就會(huì)出現(xiàn)延遲。
同樣在圖5中吞吐量與交易速率之間也有所體現(xiàn),其用MySQL的1org1peer可到300 tps,而2org1peer和2org2peer將吞吐量分別降低到200 tps和150 tps。這顯示了更高的時(shí)延,并帶來(lái)了通信間隙,以實(shí)現(xiàn)更好的性能,而在數(shù)據(jù)篡改的情況下交易量也同樣降低,這是由于IPFS文件較多時(shí)緩沖較慢但可保障數(shù)據(jù)的真實(shí)性,在其保證消費(fèi)者能夠查看正確信息的同時(shí),監(jiān)管方會(huì)介入查詢(xún)被篡改對(duì)象進(jìn)行相應(yīng)追責(zé)。
通過(guò)本次實(shí)驗(yàn)可以得出:區(qū)塊鏈技術(shù)能有效地解決傳統(tǒng)供應(yīng)鏈溯源項(xiàng)目中的偽造、摻假等問(wèn)題,包括如下幾點(diǎn)。
(1)對(duì)于具有強(qiáng)時(shí)效性的問(wèn)題,圖4以及實(shí)驗(yàn)分析可以看出用戶(hù)對(duì)生鮮奶進(jìn)行校驗(yàn)時(shí),會(huì)進(jìn)行時(shí)間戳的記錄,通過(guò)記錄的時(shí)間戳系統(tǒng)可以進(jìn)行時(shí)效性的追蹤,就可以判斷哪些鮮奶到用戶(hù)手中過(guò)了時(shí)效期。
(2)對(duì)于遇到問(wèn)題后無(wú)法追蹤以及事后暴露等問(wèn)題,通過(guò)區(qū)塊鏈對(duì)數(shù)據(jù)的實(shí)時(shí)記錄更新,其中那個(gè)負(fù)責(zé)的數(shù)據(jù)參與方就會(huì)追蹤到參與者??梢酝ㄟ^(guò)出問(wèn)題的產(chǎn)品溯源ID,找到參與者的生產(chǎn)方、檢測(cè)方等責(zé)任人。
(3)目前的溯源體系都是事后的監(jiān)管介入,本次設(shè)計(jì)的聯(lián)盟區(qū)塊鏈、監(jiān)管方節(jié)點(diǎn)和質(zhì)量監(jiān)管節(jié)點(diǎn)均已加入聯(lián)盟組織,可以對(duì)上鏈的數(shù)據(jù)進(jìn)行實(shí)時(shí)的監(jiān)管,如果發(fā)現(xiàn)問(wèn)題就會(huì)進(jìn)行節(jié)點(diǎn)的剔除和追責(zé),監(jiān)管方作為超級(jí)管理員的角色具有授權(quán)、剔除、審核等權(quán)限,可以由專(zhuān)門(mén)的政府監(jiān)管部門(mén)或者企業(yè)監(jiān)管部門(mén)參與。
通過(guò)實(shí)驗(yàn)分析,RMChain系統(tǒng)可以實(shí)現(xiàn)整個(gè)供應(yīng)鏈生鮮奶信息的可追溯性以及安全性,由于區(qū)塊鏈系統(tǒng)每次交易都有簽名和證書(shū)且分布在各個(gè)節(jié)點(diǎn)上同時(shí)進(jìn)行賬本的更新和記錄,因此RMChain具有很好的防篡改能力以及每個(gè)參與方在系統(tǒng)級(jí)的隱私保護(hù)和信息分散化方面具有一定的優(yōu)勢(shì)。
區(qū)塊鏈溯源是農(nóng)產(chǎn)品溯源的必然發(fā)展方向,其廣泛應(yīng)用對(duì)整個(gè)農(nóng)業(yè)發(fā)展具有重要的意義。本文所提出的RMChain生鮮奶供應(yīng)鏈溯源體系,針對(duì)生鮮奶行業(yè)的特點(diǎn)進(jìn)行有針對(duì)性的改進(jìn)和優(yōu)化,展示了較強(qiáng)的可行性和可落地性,聯(lián)盟鏈作為底層架構(gòu)許可節(jié)點(diǎn)的加入,可以保障數(shù)據(jù)質(zhì)量的安全性,為區(qū)塊鏈在其他領(lǐng)域中的廣泛應(yīng)用提供了一定的借鑒意義。
本文對(duì)于上鏈前的數(shù)據(jù)采用RFID作為保障進(jìn)行系統(tǒng)方案設(shè)計(jì),區(qū)塊鏈則保證上鏈后的數(shù)據(jù)無(wú)法篡改,目前區(qū)塊鏈技術(shù)必須結(jié)合物聯(lián)網(wǎng)以及其他技術(shù)保障上鏈前數(shù)據(jù)的不可篡改性。區(qū)塊鏈技術(shù)目前作為國(guó)家“新基建”在高速發(fā)展中,每秒百萬(wàn)級(jí)別交易的區(qū)塊鏈系統(tǒng)、更靈活高效的智能合約系統(tǒng)、區(qū)塊鏈預(yù)言機(jī)(Oracle自動(dòng)驗(yàn)證上鏈數(shù)據(jù)的正確性)等研究正在不斷地突破。隨著這些技術(shù)的落地和完善,未來(lái)區(qū)塊鏈的應(yīng)用范圍將更加廣泛,區(qū)塊鏈技術(shù)將更深層次地改變現(xiàn)實(shí)生活的底層邏輯。