李 琳,陳甲偉
(1.北京聯(lián)合大學(xué),北京100101;2.北方工業(yè)大學(xué),北京100144)
蔬菜是重要的日常食物之一,隨著人們生活質(zhì)量的提升,已經(jīng)從過去的溫飽問題轉(zhuǎn)為質(zhì)量問題,人們追求高質(zhì)量、安全的生活方式,因此蔬菜食品的安全問題愈來愈重要,建立蔬菜的溯源系統(tǒng)是一種保證蔬菜食品安全的模式。目前國(guó)內(nèi)對(duì)蔬菜食品信息溯源系統(tǒng)的研究也越來越成熟。王林生提出基于Android和QR碼的有機(jī)蔬菜溯源系統(tǒng)來避免蔬菜食品安全信息不對(duì)稱的問題;閻世江實(shí)現(xiàn)對(duì)蔬菜供應(yīng)鏈信息的溯源并提出基于二維碼以及web界面實(shí)現(xiàn)對(duì)信息的展示;趙璐瑩提出基于RFⅠD實(shí)現(xiàn)對(duì)蔬菜食品信息的追溯。綜上所述,蔬菜食品溯源系統(tǒng)都是中心化的,中心化系統(tǒng)易導(dǎo)致信息被篡改、偽造、刪除,區(qū)塊鏈?zhǔn)且环N去中心化數(shù)據(jù)庫(kù),可以避免數(shù)據(jù)被非法刪除、偽造、篡改,因此本文提出基于區(qū)塊鏈實(shí)現(xiàn)對(duì)蔬菜食品信息的溯源。
本文設(shè)計(jì)的蔬菜食品追溯系統(tǒng)的作用是對(duì)蔬菜的選種環(huán)節(jié)、種植環(huán)節(jié)、用藥環(huán)節(jié)、收獲環(huán)節(jié)、運(yùn)輸環(huán)節(jié)等環(huán)節(jié)信息實(shí)現(xiàn)采集,并對(duì)蔬菜食品的生長(zhǎng)環(huán)境信息進(jìn)行采集,保證信息的完整性,實(shí)現(xiàn)對(duì)蔬菜食品信息的溯源。為了保證信息的安全性,本文利用區(qū)塊鏈技術(shù)去中心化的特點(diǎn)實(shí)現(xiàn)對(duì)采集數(shù)據(jù)的安全存儲(chǔ),并且利用區(qū)塊鏈的分布式存儲(chǔ)模式實(shí)現(xiàn)多節(jié)點(diǎn)數(shù)據(jù)傳輸、同步存儲(chǔ),有效防止某個(gè)節(jié)點(diǎn)數(shù)據(jù)被偽造,避免出現(xiàn)蔬菜食品安全問題時(shí)責(zé)任難以劃分、不能快速定位的情況,提高了追溯蔬菜食品信息的效率。根據(jù)中國(guó)國(guó)情,建立適合中國(guó)蔬菜食品的溯源系統(tǒng):便于監(jiān)管部門追責(zé);參與企業(yè)信息透明化;消費(fèi)者有查詢產(chǎn)品溯源信息的權(quán)利,實(shí)現(xiàn)對(duì)蔬菜食品從種植環(huán)節(jié)到出售環(huán)節(jié)的所有信息的溯源,強(qiáng)化了監(jiān)管部門的能力與手段,提高了蔬菜食品的安全指數(shù),保障了消費(fèi)者的權(quán)益與健康。
目前國(guó)內(nèi)研究的追溯系統(tǒng)的參與企業(yè)在地理上呈分布式存在,并且數(shù)量較多,很難對(duì)參與企業(yè)的多源異構(gòu)數(shù)據(jù)進(jìn)行統(tǒng)一化、標(biāo)準(zhǔn)化的集合存儲(chǔ),因此難以實(shí)現(xiàn)參與企業(yè)之間溯源信息的共享。區(qū)塊鏈技術(shù)是一種新興技術(shù),相較于目前傳統(tǒng)的存儲(chǔ)方式,區(qū)塊鏈?zhǔn)且环N去中心化且分布式存儲(chǔ)的數(shù)據(jù)庫(kù),利用其分布式存儲(chǔ)的特點(diǎn),實(shí)現(xiàn)異構(gòu)多源數(shù)據(jù)的融合。
由于公有鏈、聯(lián)盟鏈和私有鏈的特點(diǎn)各不相同,因此適用于不同的行業(yè)溯源系統(tǒng)。私有鏈、聯(lián)盟鏈、公有鏈特點(diǎn)如表1所示。由表1可知,聯(lián)盟鏈相較于其他兩種,聯(lián)盟鏈的中心化程度低、追溯效率高,并且符合中國(guó)的國(guó)情,因此本文采用聯(lián)盟鏈中的Hyperledger Fabric技術(shù)實(shí)現(xiàn)對(duì)蔬菜食品信息的溯源,如圖1所示。蔬菜食品溯源系統(tǒng)主體框架包括了應(yīng)用層、合約層、共識(shí)層、網(wǎng)絡(luò)層、數(shù)據(jù)層以及采集層。
表1 私有鏈、聯(lián)盟鏈、公有鏈特點(diǎn)表
圖1 溯源系統(tǒng)主體框架圖
采集層:蔬菜食品包括種植環(huán)節(jié)、物流環(huán)節(jié)、加工環(huán)節(jié)。種植環(huán)節(jié)包括種子名稱、肥料名稱、藥物名稱等信息;物流環(huán)節(jié)包括裝車地點(diǎn)、物流時(shí)間、物流人員、卸貨地點(diǎn)等信息;加工環(huán)節(jié)包括加工人員、加工時(shí)間、加工地點(diǎn)等信息。此外對(duì)于數(shù)據(jù)的安全存儲(chǔ)設(shè)計(jì),本文利用區(qū)塊鏈技術(shù)保證上鏈數(shù)據(jù)的安全性、可靠性、完整性、真實(shí)性,避免了中心化系統(tǒng)數(shù)據(jù)被篡改、偽造、刪除,解決了多節(jié)點(diǎn)數(shù)據(jù)和信息整合困難的問題,但是為了保證數(shù)據(jù)來源的真實(shí)性,本文采用二維碼技術(shù)、物聯(lián)網(wǎng)技術(shù)進(jìn)行數(shù)據(jù)的采集,確保數(shù)據(jù)來源的真實(shí)性。
數(shù)據(jù)層:數(shù)據(jù)層包括區(qū)塊的數(shù)據(jù)結(jié)構(gòu),區(qū)塊由區(qū)塊體和區(qū)塊頭組成,區(qū)塊頭包含版本號(hào)、父區(qū)塊哈希值、默克爾根、時(shí)間戳、難度值、隨機(jī)數(shù),區(qū)塊體包括交易數(shù)量和交易數(shù)據(jù)。然后將區(qū)塊進(jìn)行鏈接組成區(qū)塊鏈,實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)。
網(wǎng)絡(luò)層:網(wǎng)絡(luò)層包括身份的認(rèn)證、節(jié)點(diǎn)接入的規(guī)則以及區(qū)塊鏈存儲(chǔ)信息通過網(wǎng)絡(luò)傳輸?shù)囊?guī)則。
共識(shí)層:鏈上各節(jié)點(diǎn)對(duì)上鏈信息進(jìn)行算法驗(yàn)證,保證信息同步存儲(chǔ)在鏈上的其他節(jié)點(diǎn)。目前主要包括如下共識(shí)算法,如實(shí)用拜占庭容錯(cuò)算法(practicalbyzantine fault tolerance,PBFT)、工作證明(Proof of Work,POW)、股權(quán)證明(Proof of Stake,Pos)等。
合約層:主要包括各類算法、腳本或智能合約,當(dāng)區(qū)塊鏈上的節(jié)點(diǎn)進(jìn)行的操作滿足預(yù)先設(shè)定好的規(guī)則或條件時(shí),智能合約自動(dòng)執(zhí)行,因此合約層是區(qū)塊鏈技術(shù)去中心化以及信任機(jī)制的基礎(chǔ)。
應(yīng)用層:基于區(qū)塊鏈技術(shù)的蔬菜食品溯源系統(tǒng)的Android終端應(yīng)用軟件,利用Android Studio進(jìn)行開發(fā),主要包括數(shù)據(jù)采集、查詢、展示等功能,實(shí)現(xiàn)對(duì)蔬菜視頻信息的追溯。
本文提出的蔬菜信息溯源系統(tǒng)主要包括如下環(huán)節(jié):種植環(huán)節(jié)、配送環(huán)節(jié)、加工環(huán)節(jié),各環(huán)節(jié)采集的溯源信息不同。蔬菜食品不同于單體牛、羊等畜類產(chǎn)品,不能進(jìn)行單體識(shí)別,所以本文對(duì)同一種植期和同一種植地的蔬菜食品進(jìn)行編碼標(biāo)識(shí),編碼格式為種植時(shí)間加場(chǎng)地序號(hào)。
由于蔬菜食品的參與組織多,因此需要在區(qū)塊鏈上對(duì)這些組織進(jìn)行身份驗(yàn)證,再授權(quán)加入?yún)^(qū)塊鏈。種植機(jī)構(gòu)將蔬菜食品的種植信息進(jìn)行上鏈,如種子名稱、肥料名稱、藥物名稱等信息。其他節(jié)點(diǎn)利用算法對(duì)上鏈的溯源信息進(jìn)行算法驗(yàn)證。當(dāng)算法驗(yàn)證成功,各節(jié)點(diǎn)對(duì)上鏈的信息進(jìn)行存儲(chǔ),實(shí)現(xiàn)數(shù)據(jù)在鏈上的多節(jié)點(diǎn)存儲(chǔ),便于追溯查詢,避免數(shù)據(jù)被篡改。
以A種植基地為例,種植機(jī)構(gòu)將A基地的蔬菜從種子培育成蔬菜,記錄種植環(huán)節(jié)的選種信息、施肥信息、用藥信息,當(dāng)蔬菜成熟收獲時(shí),為該批次蔬菜設(shè)定唯一編碼,再將種植環(huán)節(jié)的信息進(jìn)行上鏈存儲(chǔ),其他節(jié)點(diǎn)收到上鏈信息后,通過共識(shí)算法驗(yàn)證,完成分布式賬本信息同步存儲(chǔ)。隨后對(duì)A基地該批次蔬菜食品的運(yùn)輸環(huán)節(jié)的信息進(jìn)行上鏈存儲(chǔ),其他節(jié)點(diǎn)收到上鏈信息后,通過共識(shí)算法驗(yàn)證,完成運(yùn)輸信息分布式賬本同步存儲(chǔ),再對(duì)A基地該批次蔬菜食品的加工環(huán)節(jié)的信息進(jìn)行上鏈存儲(chǔ),其他節(jié)點(diǎn)收到上鏈信息后,通過共識(shí)算法驗(yàn)證,完成加工信息分布式賬本同步存儲(chǔ),通過對(duì)如上3個(gè)環(huán)節(jié)信息的采集,將A基地該編碼標(biāo)識(shí)的批次蔬菜產(chǎn)品完整溯源信息存儲(chǔ)在區(qū)塊鏈,如圖2所示。消費(fèi)者可以通過編碼獲取該批次食品的所有信息,保證信息透明化,也保障了消費(fèi)者的權(quán)益。此外,當(dāng)蔬菜食品出現(xiàn)安全問題時(shí),監(jiān)管部門通過查詢溯源信息,可以快速找到責(zé)任主體并追責(zé)、定責(zé)。
圖2 蔬菜食品追溯系統(tǒng)
將基地編號(hào)、時(shí)間、批次號(hào)進(jìn)行組合生成蔬菜食品的編碼,如01號(hào)基地,在2020-10-30種植了一批蔬菜,當(dāng)該蔬菜成熟時(shí)進(jìn)行運(yùn)輸、銷售,因此該蔬菜食品對(duì)應(yīng)編碼為0120201030。并采用二維碼作為載體對(duì)編碼進(jìn)行存儲(chǔ)呈現(xiàn),如圖3所示。
圖3 溯源編碼二維碼圖
基于區(qū)塊鏈的蔬菜食品追溯系統(tǒng)的應(yīng)用終端是基于Android studio開發(fā)的,終端軟件的載體設(shè)備要求:Android系統(tǒng)4.0以上、運(yùn)行內(nèi)存4 G以上、16 G存儲(chǔ)等主要要求。
區(qū)塊鏈部署在4臺(tái)linux系統(tǒng)的虛擬機(jī)上,在局域網(wǎng)下互相連接。其中1個(gè)為order節(jié)點(diǎn),3個(gè)為peer節(jié)點(diǎn)。虛擬機(jī)的環(huán)境設(shè)置為:1個(gè)CPU,2 GB運(yùn)行內(nèi)存和25 GB存儲(chǔ)內(nèi)存,保證hyperledger fabric能夠正常運(yùn)行。實(shí)現(xiàn)溯源數(shù)據(jù)的上鏈,避免數(shù)據(jù)被非法篡改、刪除、偽造,實(shí)現(xiàn)對(duì)數(shù)據(jù)的溯源。
本文完成溯源系統(tǒng)環(huán)境的搭建以及軟件的開發(fā),如圖4所示,利用開發(fā)的軟件實(shí)現(xiàn)對(duì)蔬菜食品溯源信息的采集、存儲(chǔ),實(shí)現(xiàn)了多源異構(gòu)數(shù)據(jù)的融合,并利用本文設(shè)計(jì)的溯源二維碼完成蔬菜食品溯源信息的查詢、展示。圖4(a)為信息查詢界面,消費(fèi)者可選擇輸入追溯碼或掃描追溯二維碼實(shí)現(xiàn)對(duì)蔬菜食品信息的查詢;圖4(b)為各參與機(jī)構(gòu)獲得監(jiān)管部門授權(quán)后,可通過該溯源系統(tǒng)對(duì)對(duì)應(yīng)階段信息進(jìn)行上鏈存儲(chǔ);圖4(c)為蔬菜信息展示界面,包括蔬菜的種子、施肥、用藥等信息,還包含物流環(huán)節(jié)、加工環(huán)節(jié)等信息。
圖4 溯源軟件
基于區(qū)塊鏈技術(shù)建立的蔬菜食品追溯系統(tǒng),相比目前傳統(tǒng)的中心化系統(tǒng)能夠防止數(shù)據(jù)被非法篡改、偽造、刪除,并且加入?yún)^(qū)塊鏈上的組織能夠有效解決多源數(shù)據(jù)問題,打破傳統(tǒng)企業(yè)數(shù)據(jù)不連通常規(guī),實(shí)現(xiàn)數(shù)據(jù)的互通共用,提高信息追溯的效率。