董云峰,張 新*,許繼平,王小藝,孔建磊,孫鵬程
(北京工商大學(xué)人工智能學(xué)院,食品安全大數(shù)據(jù)技術(shù)北京市重點(diǎn)實(shí)驗(yàn)室,北京 100048)
近年來,食品安全事故、安全問題屢見不鮮,“蘇丹紅鴨蛋”、“三聚氰胺奶粉”、“地溝油”、“鎘大米”等事件令人觸目驚心,消費(fèi)者的身體健康安全受到嚴(yán)重威脅,公眾對(duì)食品質(zhì)量安全的要求不斷提高[1-2]。糧油食品包括成品糧、原糧油脂及相關(guān)加工產(chǎn)品等,是人類賴以生存的必需品,保障糧油食品供應(yīng)的安全,對(duì)國民生命健康、社會(huì)和諧發(fā)展具有非常重大的意義。目前糧油食品供應(yīng)環(huán)節(jié)存在的安全問題很多,如農(nóng)藥殘留超標(biāo)、工業(yè)污染造成的食源性疾病問題,生產(chǎn)加工環(huán)節(jié)操作違規(guī)、違法使用食品添加劑,儲(chǔ)運(yùn)安全問題,產(chǎn)品假冒偽劣等。因此有必要提高食品供應(yīng)鏈的透明度,并進(jìn)行可信、準(zhǔn)確有效的食品安全追溯[3-6]。
目前建立的食品追溯系統(tǒng)的控制方式過于集中化[7-8],供應(yīng)鏈上的核心企業(yè)具有相關(guān)信息的管理、控制權(quán)利,數(shù)據(jù)安全性低,供應(yīng)鏈各環(huán)節(jié)企業(yè)之間流通的數(shù)據(jù)是否經(jīng)過篡改更難以驗(yàn)證;因此無法保證傳遞的信息真實(shí)有效,最終形成了一座座信息孤島,數(shù)據(jù)完整性無法辨別,消費(fèi)者對(duì)系統(tǒng)提供信息的真實(shí)性、可靠性存疑,追溯效果不理想。
為針對(duì)性地解決目前食品溯源系統(tǒng)面臨的問題,通過結(jié)合區(qū)塊鏈技術(shù),建立具有去中心化、數(shù)據(jù)安全不可篡改、信息可靠的食品安全溯源體系,可進(jìn)一步提高食品的可追溯性和供應(yīng)鏈的安全性,并提高食品供應(yīng)鏈的透明度[9-10]。Manevich等根據(jù)區(qū)塊鏈平臺(tái)Hyperledger Fabric的服務(wù),認(rèn)為應(yīng)用區(qū)塊鏈技術(shù)的分布式應(yīng)用程序潛力巨大,各方在互不信任的情況下不借助中央可信任的權(quán)威機(jī)構(gòu)依然能夠安全協(xié)作,因此可應(yīng)用到食品安全追溯領(lǐng)域[11];賈建華提出在食品安全追溯方面,區(qū)塊鏈?zhǔn)墙鉀Q食品透明度和控制問題的最好方案,可改善系統(tǒng)并降低欺詐風(fēng)險(xiǎn)[12];Ahmed等提出應(yīng)用區(qū)塊鏈技術(shù)為食品分配獨(dú)特的數(shù)字標(biāo)識(shí)符,消費(fèi)者通過追溯可以獲取食物的生態(tài)足跡,因此可以防止欺詐并可識(shí)別食源性疾病的來源[13];Tian Feng分析了利用射頻識(shí)別和區(qū)塊鏈技術(shù)構(gòu)建農(nóng)業(yè)食品供應(yīng)鏈追溯系統(tǒng),實(shí)現(xiàn)了整個(gè)農(nóng)業(yè)食品供應(yīng)鏈的可信追溯,可有效保障食品安全[14];陶啟等構(gòu)建了基于區(qū)塊鏈技術(shù)的大米全產(chǎn)業(yè)鏈質(zhì)量安全的風(fēng)險(xiǎn)評(píng)估與安全溯源技術(shù),實(shí)現(xiàn)了大米質(zhì)量安全的高效管控[15]。關(guān)于溯源系統(tǒng),目前具體實(shí)現(xiàn)的案例很少或者實(shí)現(xiàn)的系統(tǒng)尚不完整,還需要進(jìn)一步完善。一般食品供應(yīng)鏈追溯體系包括:食品加工企業(yè)發(fā)展的供應(yīng)鏈、物流公司發(fā)展的供應(yīng)鏈、零售商發(fā)展供應(yīng)鏈、批發(fā)或代理公司發(fā)展的供應(yīng)鏈等,普遍存在的情況是追溯環(huán)節(jié)較短,只對(duì)食品供應(yīng)鏈的一個(gè)或者某幾個(gè)環(huán)節(jié)進(jìn)行追溯,而糧油食品的供應(yīng)鏈?zhǔn)謴?fù)雜,其風(fēng)險(xiǎn)因素多、循環(huán)周期長(zhǎng)、涉及面廣,每個(gè)環(huán)節(jié)的分節(jié)點(diǎn)眾多,甚至不同環(huán)節(jié)交替重復(fù)流通,因此導(dǎo)致內(nèi)、外源危害物產(chǎn)生過程復(fù)雜多變、主動(dòng)針對(duì)性防控難度大。面對(duì)如此龐大的環(huán)節(jié)與數(shù)據(jù)量,傳統(tǒng)食品追溯系統(tǒng)的資源消耗大、速度慢、效率低,沃爾瑪公司曾對(duì)一家商店的芒果進(jìn)行追溯測(cè)試,用了6 d 18 h 26 min才追溯到芒果原產(chǎn)農(nóng)場(chǎng),而引入?yún)^(qū)塊鏈技術(shù)后,僅在2.2 s內(nèi)就完成了追溯并獲取了所有的相關(guān)信息。因此建立基于區(qū)塊鏈的糧油食品全供應(yīng)鏈的可信追溯模型,不僅可高效解決糧油食品供應(yīng)的安全問題,其覆蓋范圍大的特點(diǎn)亦可作為通用模型解決其他食品供應(yīng)鏈安全問題。區(qū)塊鏈技術(shù)面向糧油食品全供應(yīng)鏈并且把基于區(qū)塊鏈的智能合約應(yīng)用在糧油食品安全可信追溯模型構(gòu)建中沒有先例[16-19],需要進(jìn)一步研究。
本研究應(yīng)用區(qū)塊鏈技術(shù),設(shè)計(jì)了一套糧油食品全供應(yīng)鏈的可信追溯模型,提供從生產(chǎn)環(huán)節(jié)最終到消費(fèi)者手中整個(gè)過程的信息,并保證數(shù)據(jù)安全可靠。在發(fā)生食品安全事故時(shí),食品溯源系統(tǒng)可以快速準(zhǔn)確高效地定位問題發(fā)生的環(huán)節(jié),并找到問題的根源、追蹤問題產(chǎn)品去向,明確責(zé)任企業(yè)并追究責(zé)任,降低食品安全事故造成的不良影響,對(duì)解決食品安全問題具有十分重要的意義[20-22]。
區(qū)塊鏈可以理解為一種分布式數(shù)據(jù)庫,將存儲(chǔ)數(shù)據(jù)的區(qū)塊按照誕生時(shí)間以鏈條的形式不斷連接而成,數(shù)據(jù)的記錄與存儲(chǔ)都為分布式,所有節(jié)點(diǎn)均擁有并管理鏈上全部數(shù)據(jù),沒有中心機(jī)構(gòu)具有絕對(duì)控制權(quán)利,其涉及的對(duì)等網(wǎng)絡(luò)(peer to peer,P2P)、密碼學(xué)算法和共識(shí)算法等決定了區(qū)塊鏈技術(shù)具有去中心化、數(shù)據(jù)不可篡改、信息透明、可追溯等特性。
區(qū)塊鏈中的每個(gè)數(shù)據(jù)區(qū)塊都由區(qū)塊頭和區(qū)塊體組成[23],區(qū)塊頭包含當(dāng)前區(qū)塊版本、父級(jí)區(qū)塊的哈希值、Merkle根、時(shí)間戳以及隨機(jī)數(shù)等信息,區(qū)塊體中存放所有數(shù)據(jù)及交易信息。新生成的區(qū)塊將存儲(chǔ)上一區(qū)塊的哈希值并以此為區(qū)塊的標(biāo)識(shí),通過該方式形成一條從最新區(qū)塊追溯到初始區(qū)塊的數(shù)據(jù)鏈條;區(qū)塊體通過散列函數(shù)中的哈希算法對(duì)數(shù)據(jù)進(jìn)行運(yùn)算,最終得到一個(gè)根哈希值成為區(qū)塊頭的Merkle根,由于哈希算法的特性,兩個(gè)完全相同的Merkle根包含的數(shù)據(jù)也完全相同,若某一基礎(chǔ)數(shù)據(jù)發(fā)生改變,則Merkle根亦隨之改變,據(jù)此可逐級(jí)定位到發(fā)生變化的數(shù)據(jù)[24],保證了供應(yīng)鏈系統(tǒng)中各主體的每條數(shù)據(jù)都可以追溯,便于追責(zé)和監(jiān)管。
區(qū)塊鏈技術(shù)由共識(shí)算法來確保數(shù)據(jù)的一致性,單一節(jié)點(diǎn)的數(shù)據(jù)篡改行為會(huì)受到全網(wǎng)所有節(jié)點(diǎn)監(jiān)控和排斥,因此保證了信息流通和交易各方數(shù)據(jù)的公開透明,打破了傳統(tǒng)系統(tǒng)存在的信息孤島問題,實(shí)現(xiàn)供應(yīng)鏈的流通、交易、信息傳遞的數(shù)據(jù)記錄,能夠保證數(shù)據(jù)的可靠性、準(zhǔn)確性和透明性。
在食品供應(yīng)鏈領(lǐng)域,區(qū)塊鏈的架構(gòu)可分為:數(shù)據(jù)層、網(wǎng)絡(luò)層、共識(shí)層、合約層和應(yīng)用層(圖1)。
圖 1 食品供應(yīng)鏈區(qū)塊鏈體系架構(gòu)Fig. 1 Food supply chain blockchain architecture
數(shù)據(jù)層包括不同企業(yè)上傳經(jīng)過共識(shí)機(jī)制驗(yàn)證的食品相關(guān)數(shù)據(jù),存于分布式數(shù)據(jù)庫的數(shù)據(jù)區(qū)塊,數(shù)據(jù)區(qū)塊按時(shí)間順序銜接組成了區(qū)塊鏈系統(tǒng)。通過特定的哈希算法和Merkle樹數(shù)據(jù)結(jié)構(gòu),將一段時(shí)間內(nèi)接收到的食品流通數(shù)據(jù)、交易數(shù)據(jù)等存入帶有時(shí)間戳和根哈希值的數(shù)據(jù)區(qū)塊;網(wǎng)絡(luò)層封裝了區(qū)塊鏈系統(tǒng)的組網(wǎng)方式(P2P網(wǎng)絡(luò))和數(shù)據(jù)驗(yàn)證機(jī)制等要素;共識(shí)層建立共識(shí)機(jī)制,包含工作量證明(proof of work,PoW)、權(quán)益證明機(jī)制(proof of stake,PoS)、拜占庭容錯(cuò)(Byzantine fault tolerance,BFT)、實(shí)用拜占庭容錯(cuò)(practical BFT,PBFT)等共識(shí)算法[25],食品領(lǐng)域的聯(lián)盟區(qū)塊鏈系統(tǒng),應(yīng)用更加契合的委托權(quán)益證明(delegated proof of stake,DPoS)和PBFT等來實(shí)現(xiàn)各節(jié)點(diǎn)針對(duì)食品數(shù)據(jù)的有效性達(dá)成共識(shí)[26-27];合約層封裝了建立的食品供應(yīng)鏈上各節(jié)點(diǎn)執(zhí)行的合約腳本代碼,基于區(qū)塊鏈的智能合約的執(zhí)行在達(dá)到預(yù)期觸發(fā)條件時(shí)自動(dòng)執(zhí)行;應(yīng)用層包括食品供應(yīng)鏈各企業(yè)客戶端以及用戶和監(jiān)管部門進(jìn)行追溯查詢的客戶端。
由于涉及到的糧油食品數(shù)據(jù)多源異構(gòu)且十分復(fù)雜,存儲(chǔ)和管理工作困難,因此需要對(duì)所有環(huán)節(jié)采集上傳的數(shù)據(jù)進(jìn)行處理。
智能合約由尼克薩博最早提出,是通過傳統(tǒng)承諾合約應(yīng)用數(shù)字形式來定義的,封裝了預(yù)定義的預(yù)置狀態(tài)、轉(zhuǎn)換規(guī)則、觸發(fā)條件以及應(yīng)對(duì)操作等,但其需要可信的執(zhí)行環(huán)境,因此無法應(yīng)用到實(shí)際產(chǎn)業(yè)[28]。區(qū)塊鏈技術(shù)的出現(xiàn)使智能合約的執(zhí)行獲得了可信的環(huán)境,經(jīng)合約各方簽署后以程序代碼的形式部署在區(qū)塊鏈上,經(jīng)對(duì)等計(jì)算機(jī)網(wǎng)絡(luò)傳播和節(jié)點(diǎn)共同驗(yàn)證后存入各個(gè)節(jié)點(diǎn)的分布式賬本中,而不需要中心信用機(jī)構(gòu)來保證其有效性。食品溯源區(qū)塊鏈系統(tǒng)可以實(shí)時(shí)監(jiān)控整個(gè)智能合約的狀態(tài)[29],在滿足寫入的特定觸發(fā)條件后自動(dòng)執(zhí)行合約,因此能夠擴(kuò)大信任、弱化風(fēng)險(xiǎn)以及實(shí)現(xiàn)數(shù)據(jù)管理等,合約代碼、執(zhí)行過程以及執(zhí)行結(jié)果對(duì)鏈上各節(jié)點(diǎn)均公開透明,并通過所有節(jié)點(diǎn)的共識(shí)驗(yàn)證,其結(jié)果不可篡改,提升了系統(tǒng)的可信度。
糧油食品全供應(yīng)鏈由生產(chǎn)環(huán)節(jié)、加工環(huán)節(jié)、倉儲(chǔ)環(huán)節(jié)、物流環(huán)節(jié)和銷售環(huán)節(jié)組成。每個(gè)環(huán)節(jié)采集的信息通過驗(yàn)證之后存入系統(tǒng),從而建立真實(shí)可靠的完整數(shù)據(jù)庫,可以實(shí)現(xiàn)對(duì)同一批次產(chǎn)品的整個(gè)供應(yīng)流程進(jìn)行完備的監(jiān)管和追溯,供應(yīng)鏈環(huán)節(jié)如圖2所示。
圖 2 糧油食品全供應(yīng)鏈環(huán)節(jié)Fig. 2 Grains and oils supply chain
生產(chǎn)環(huán)節(jié)指對(duì)糧油食品進(jìn)行收獲,記錄其相關(guān)信息(種植時(shí)間、收獲時(shí)間、產(chǎn)品批次等),加工環(huán)節(jié)包括對(duì)收獲產(chǎn)品的干燥處理、去殼、加工等工作并記錄信息(產(chǎn)品編號(hào)、處理工序等),倉儲(chǔ)環(huán)節(jié)記錄其倉儲(chǔ)庫(庫房編號(hào)、入出庫時(shí)間等)信息,物流環(huán)節(jié)包括收獲產(chǎn)品以及加工后成品的物流運(yùn)輸(運(yùn)輸車輛、運(yùn)輸人員等),銷售環(huán)節(jié)指對(duì)加工完成的成品進(jìn)行銷售(銷售地點(diǎn)、銷售員等),從而完成從糧油食品收獲到成品銷售的整個(gè)供應(yīng)環(huán)節(jié)的監(jiān)管與追溯。
糧油食品生產(chǎn)及流通過程錯(cuò)綜復(fù)雜,生產(chǎn)環(huán)節(jié)亦包括干燥等初加工工藝、倉儲(chǔ)、運(yùn)輸?shù)裙ば?,而物流環(huán)節(jié)中,省、市、縣級(jí)的不同企業(yè)也需要貨倉來貯存產(chǎn)品,因此嵌套相應(yīng)的倉儲(chǔ)環(huán)節(jié)。針對(duì)如此的繁多的供應(yīng)鏈環(huán)節(jié),結(jié)合區(qū)塊鏈技術(shù)與目前其他食品相關(guān)領(lǐng)域中企業(yè)對(duì)應(yīng)區(qū)塊鏈網(wǎng)絡(luò)節(jié)點(diǎn)的研究,設(shè)計(jì)糧油食品全供應(yīng)鏈領(lǐng)域的監(jiān)管與追溯過程,與供應(yīng)鏈環(huán)節(jié)相對(duì)應(yīng)的企業(yè)節(jié)點(diǎn),建立覆蓋農(nóng)田到餐桌所有環(huán)節(jié)的糧油食品全供應(yīng)鏈可信追溯模型,如圖3所示。
由于糧油食品全供應(yīng)鏈?zhǔn)鞘称饭?yīng)鏈中最復(fù)雜的,基于其環(huán)節(jié)較多,從生產(chǎn)到銷售需要采集、記錄、上傳的數(shù)據(jù)量龐大且復(fù)雜,存在區(qū)塊鏈上會(huì)造成系統(tǒng)成本高、負(fù)擔(dān)大、效率低的問題,因此本模型設(shè)計(jì)“鏈上+云數(shù)據(jù)庫”的數(shù)據(jù)存儲(chǔ)模式,將龐大的產(chǎn)品基礎(chǔ)數(shù)據(jù)存入云數(shù)據(jù)庫,再將每個(gè)環(huán)節(jié)的全部數(shù)據(jù)經(jīng)哈希運(yùn)算得到的哈希值存入?yún)^(qū)塊鏈中,從而保證區(qū)塊鏈系統(tǒng)運(yùn)行的成本與效率。
糧油食品全供應(yīng)鏈大量的多源異構(gòu)數(shù)據(jù)十分繁瑣,因此本模型引入智能合約,各個(gè)節(jié)點(diǎn)上傳系統(tǒng)的糧油食品數(shù)據(jù)要遵循智能合約的規(guī)范,只有滿足智能合約條件要求的數(shù)據(jù)才能上傳成功。由于不同企業(yè)上傳的信息數(shù)據(jù)格式不盡相同,因此不同節(jié)點(diǎn)的數(shù)據(jù)通過智能合約來進(jìn)行判斷,再通過數(shù)字簽名技術(shù)對(duì)數(shù)據(jù)進(jìn)行驗(yàn)證并上傳存儲(chǔ)至數(shù)據(jù)庫。具體過程為:對(duì)產(chǎn)品數(shù)據(jù)進(jìn)行哈希運(yùn)算獲得數(shù)據(jù)摘要,系統(tǒng)通過非對(duì)稱密碼學(xué)來生成公鑰和私鑰,由私鑰對(duì)數(shù)據(jù)進(jìn)行加密,加密后的簽名數(shù)據(jù)上傳到數(shù)據(jù)庫后,數(shù)據(jù)庫會(huì)通過公鑰對(duì)收到的加密簽名數(shù)據(jù)進(jìn)行解密,解密完成后與用同樣哈希運(yùn)算方法獲得的數(shù)據(jù)摘要進(jìn)行對(duì)比,若對(duì)比結(jié)果一致則證明數(shù)據(jù)真實(shí)可靠未經(jīng)篡改,若結(jié)果不一致則數(shù)據(jù)未通過驗(yàn)證,無法存入數(shù)據(jù)庫。通過數(shù)字簽名技術(shù),各個(gè)企業(yè)節(jié)點(diǎn)存入云數(shù)據(jù)庫的數(shù)據(jù)均有效可信,因此云數(shù)據(jù)庫中大量基礎(chǔ)數(shù)據(jù)的真實(shí)性得到保證。
圖 4 區(qū)塊數(shù)據(jù)結(jié)構(gòu)示意圖Fig. 4 Schematic of block data structure
每個(gè)環(huán)節(jié)的產(chǎn)品簡(jiǎn)要信息與數(shù)據(jù)庫中基礎(chǔ)數(shù)據(jù)的哈希值共同運(yùn)算得到根哈希值,經(jīng)獨(dú)自維護(hù)的區(qū)塊鏈節(jié)點(diǎn)將摘要發(fā)送到區(qū)塊鏈上,隨后廣播至全網(wǎng),全網(wǎng)所有節(jié)點(diǎn)通過共識(shí)過程驗(yàn)證之后存入最新的數(shù)據(jù)區(qū)塊,并鏈接到上一級(jí)數(shù)據(jù)區(qū)塊從而完成將數(shù)據(jù)存入?yún)^(qū)塊鏈的過程,如圖4所示。其中區(qū)塊頭封裝父級(jí)區(qū)塊哈希值、當(dāng)前區(qū)塊版本號(hào)、時(shí)間戳、目標(biāo)哈希值等,區(qū)塊體包含通過驗(yàn)證的某一環(huán)節(jié)的簡(jiǎn)要信息數(shù)據(jù)(日期、產(chǎn)品批次等)和數(shù)據(jù)庫哈希值。追溯過程為:消費(fèi)者用戶或者監(jiān)管機(jī)構(gòu)通過系統(tǒng)輸入待查詢批次的產(chǎn)品代碼進(jìn)行追溯,產(chǎn)品代碼直接定位到包含本產(chǎn)品信息的特定區(qū)塊頭,調(diào)出本產(chǎn)品所有流通環(huán)節(jié)數(shù)據(jù)進(jìn)行產(chǎn)品追溯。
針對(duì)大量的多源異構(gòu)糧油食品數(shù)據(jù),通過智能合約來對(duì)數(shù)據(jù)進(jìn)行處理,將不同格式、不同類型、不同長(zhǎng)度的數(shù)據(jù)進(jìn)行判斷之后方可上傳,做進(jìn)一步的共識(shí)驗(yàn)證,智能合約的執(zhí)行過程如圖5所示。
圖 5 智能合約執(zhí)行過程示意圖Fig. 5 Schematic diagram of the smart contract execution process
供應(yīng)鏈中各環(huán)節(jié)的企業(yè)根據(jù)實(shí)際要求制定協(xié)議條款內(nèi)容,根據(jù)協(xié)議條款來設(shè)置智能合約對(duì)數(shù)據(jù)處理的預(yù)置觸發(fā)條件,數(shù)據(jù)上傳時(shí),判斷數(shù)據(jù)是否符合上傳的要求,若當(dāng)前節(jié)點(diǎn)采集上傳的數(shù)據(jù)符合系統(tǒng)的預(yù)置條件,則數(shù)據(jù)可以進(jìn)行上傳并繼續(xù)進(jìn)行下一步的完整性驗(yàn)證。若數(shù)據(jù)不符合預(yù)置條件,則通過預(yù)置代碼對(duì)數(shù)據(jù)處理后再進(jìn)行判斷,之后方可進(jìn)行下一步的數(shù)據(jù)完整性驗(yàn)證。對(duì)于糧油食品的全供應(yīng)鏈,各個(gè)環(huán)節(jié)的之間的交易、信息傳遞等均依照制定好的智能合約進(jìn)行,本系統(tǒng)中智能合約模型架構(gòu)如圖6所示。
圖 6 糧油食品中的智能合約模型Fig. 6 Smart contract model for grains and oils
合約各方指定合約內(nèi)容,編寫并生成代碼,編譯后發(fā)布到區(qū)塊鏈網(wǎng)絡(luò)節(jié)點(diǎn)上,各個(gè)節(jié)點(diǎn)對(duì)合約內(nèi)容的有效性進(jìn)行驗(yàn)證,所有節(jié)點(diǎn)通過共識(shí)驗(yàn)證后進(jìn)行全網(wǎng)播報(bào)完成部署,部署后的合約存于區(qū)塊鏈,每次達(dá)到觸發(fā)條件時(shí)會(huì)自動(dòng)調(diào)用并運(yùn)行。某個(gè)節(jié)點(diǎn)的數(shù)據(jù)驗(yàn)證通過調(diào)用智能合約接口來執(zhí)行,數(shù)據(jù)上傳時(shí)即達(dá)到觸發(fā)條件合約開始執(zhí)行,執(zhí)行完畢后各個(gè)節(jié)點(diǎn)驗(yàn)證結(jié)果是否正確,驗(yàn)證通過后,系統(tǒng)會(huì)將執(zhí)行的結(jié)果播報(bào)至全網(wǎng)各個(gè)節(jié)點(diǎn),并將此結(jié)果存入到各節(jié)點(diǎn)的區(qū)塊鏈中。
以糧油食品全供應(yīng)鏈可信追溯模型為核心,搭建糧油食品全供應(yīng)鏈可信追溯原型系統(tǒng)架構(gòu),其中包括糧油食品全供應(yīng)鏈環(huán)節(jié)的數(shù)據(jù)采集終端、分布式節(jié)點(diǎn)構(gòu)成的P2P網(wǎng)絡(luò)、云數(shù)據(jù)庫和溯源系統(tǒng)客戶端組成,具體如圖7所示。
圖 7 糧油食品供應(yīng)鏈可信追溯原型系統(tǒng)示意圖Fig. 7 Schematic diagram of the credible traceability prototype system for grains and oils supply chain
糧油食品全供應(yīng)鏈上的生產(chǎn)企業(yè)、加工企業(yè)、倉儲(chǔ)企業(yè)、物流企業(yè)、銷售企業(yè)通過數(shù)據(jù)采集終端采集數(shù)據(jù)并通過客戶端進(jìn)行數(shù)據(jù)上傳,每個(gè)企業(yè)節(jié)點(diǎn)均包含區(qū)塊鏈的全部?jī)?nèi)容,共同對(duì)數(shù)據(jù)進(jìn)行共識(shí)管理與維護(hù)。智能合約腳本代碼已部署到區(qū)塊鏈,數(shù)據(jù)上傳過程中達(dá)到合約觸發(fā)條件時(shí)會(huì)自動(dòng)執(zhí)行,在完成數(shù)據(jù)完整性驗(yàn)證后存入云數(shù)據(jù)庫,同時(shí)云數(shù)據(jù)庫中基礎(chǔ)數(shù)據(jù)的哈希值與糧油食品簡(jiǎn)要信息經(jīng)過全網(wǎng)所有節(jié)點(diǎn)簽名驗(yàn)證,最終達(dá)成共識(shí)之后存入?yún)^(qū)塊鏈。P2P網(wǎng)絡(luò)的方式實(shí)現(xiàn)了各節(jié)點(diǎn)間的點(diǎn)對(duì)點(diǎn)傳輸,數(shù)據(jù)驗(yàn)證機(jī)制可使得區(qū)塊鏈系統(tǒng)中生產(chǎn)、加工、倉儲(chǔ)、物流、銷售環(huán)節(jié)每一個(gè)對(duì)應(yīng)節(jié)點(diǎn)都能參與區(qū)塊數(shù)據(jù)的校驗(yàn)和存儲(chǔ)過程,當(dāng)區(qū)塊數(shù)據(jù)通過所有節(jié)點(diǎn)驗(yàn)證后,才能記入?yún)^(qū)塊鏈,用戶和監(jiān)管部門通過溯源系統(tǒng)客戶端對(duì)數(shù)據(jù)進(jìn)行查詢與追溯。
區(qū)塊鏈技術(shù)平臺(tái)分為:公有鏈、聯(lián)盟鏈、私有鏈[30]。公有鏈以比特幣為代表,可理解為公共區(qū)塊鏈,鏈上行為完全公開,不設(shè)訪問權(quán)限并且每個(gè)節(jié)點(diǎn)可自由的加入與退出,是完全去中心化的區(qū)塊鏈,但共識(shí)時(shí)間與資源消耗較大;私有鏈由一個(gè)實(shí)體(企業(yè)或組織等)建立,在實(shí)體內(nèi)部進(jìn)行訪問交易,且數(shù)據(jù)讀取權(quán)限可以選擇性開放,它為了安全和效率已經(jīng)演化成為一種“中心化”的技術(shù);聯(lián)盟鏈只允許預(yù)設(shè)的節(jié)點(diǎn)(聯(lián)盟成員)參與記賬及共識(shí),加入的節(jié)點(diǎn)需要身份驗(yàn)證和權(quán)限授予,實(shí)質(zhì)上是在確保安全和效率的基礎(chǔ)上進(jìn)行的“部分去中心化”;在聯(lián)盟鏈中,可訪問到賬本的合法用戶僅是被授權(quán)的指定節(jié)點(diǎn),權(quán)限以及規(guī)則可由成員鏈內(nèi)部進(jìn)行制定,并且由聯(lián)盟參與成員共同維護(hù),便于數(shù)據(jù)對(duì)接和傳遞,可增強(qiáng)系統(tǒng)可擴(kuò)展性與執(zhí)行效率,在食品供應(yīng)鏈的應(yīng)用上聯(lián)盟鏈?zhǔn)亲罴堰x擇。
表1為目前兩大區(qū)塊鏈平臺(tái)的對(duì)比分析[31]。以太坊首先實(shí)現(xiàn)了區(qū)塊鏈和智能合約的完整契合,與以太坊相比,Hyperledger區(qū)塊鏈?zhǔn)且环N更受歡迎的許可區(qū)塊鏈平臺(tái),其中的P2P節(jié)點(diǎn)形成了一個(gè)聯(lián)盟,且便于部署和二次開發(fā),且擴(kuò)展性強(qiáng),支持多種共識(shí)算法,它提供了強(qiáng)大的靈活性,可以比較自由地應(yīng)用商業(yè)邏輯。智能合約可直接在所有節(jié)點(diǎn)部署,因此選擇Hyperledger進(jìn)行開發(fā)。
表 1 區(qū)塊鏈平臺(tái)的對(duì)比分析Table 1 Comparative analysis of blockchain platforms
目前Fabric提供的共識(shí)算法有3 種,分別是solo、kafka和PBFT。其中solo是用于開發(fā)測(cè)試的單點(diǎn)共識(shí);kafka是一種支持多通道分區(qū)的集群時(shí)序服務(wù),可以容忍部分節(jié)點(diǎn)失效,但不能容忍惡意節(jié)點(diǎn),即無法識(shí)別和處理篡改或者無效的惡意數(shù)據(jù);PBFT是目前主流共識(shí)算法,BFT主要解決了缺少可信的中央節(jié)點(diǎn)和可信任的通道情況下,分布在網(wǎng)絡(luò)中的各個(gè)節(jié)點(diǎn)如何達(dá)成共識(shí)的問題,PBFT是BFT的改進(jìn),主要改進(jìn)了BFT效率不高的問題,故系統(tǒng)的共識(shí)機(jī)制選擇PBFT。
通過對(duì)河北某面粉廠進(jìn)行實(shí)地調(diào)研考察,獲取各個(gè)生產(chǎn)環(huán)節(jié)的數(shù)據(jù),對(duì)本糧油食品全供應(yīng)鏈可信追溯模型的可行性進(jìn)行分析驗(yàn)證。該面粉廠涉及從小麥到面粉銷售的完整供應(yīng)鏈環(huán)節(jié),包含小麥?zhǔn)斋@、干燥加工處理、儲(chǔ)存,面粉加工、包裝、倉儲(chǔ),產(chǎn)品運(yùn)輸以及銷售等。由于該面粉廠流通環(huán)節(jié)審查力度低、把關(guān)不嚴(yán),且企業(yè)內(nèi)部操作違規(guī)、利益驅(qū)使導(dǎo)致的管理不到位,最終導(dǎo)致面粉產(chǎn)品出現(xiàn)質(zhì)量問題;另外從生產(chǎn)到銷售的數(shù)據(jù)過于龐大,難以進(jìn)行數(shù)據(jù)查詢且存在質(zhì)量問題的某一批次產(chǎn)品無法定位到具體環(huán)節(jié),無法精確責(zé)任主體,造成的后果嚴(yán)重卻難以解決。結(jié)合本糧油食品全供應(yīng)鏈可信追溯模型,搭建糧油食品全供應(yīng)鏈可信追溯的原型系統(tǒng)(圖8),為上述問題提供解決方案。
圖 8 糧油食品全供應(yīng)鏈可信追溯平臺(tái)Fig. 8 Credible traceability platform for the whole supply chain of grains and oils
本系統(tǒng)由前端網(wǎng)頁、服務(wù)器和區(qū)塊鏈網(wǎng)絡(luò)組成。前端網(wǎng)頁采用前端語言(HTML、CSS、JavaScript)并輔以Bootstrap+AngularJS框架開發(fā),服務(wù)器部分由WebService技術(shù)實(shí)現(xiàn),區(qū)塊鏈網(wǎng)絡(luò)基于Hyperledger Fabric開源框架開發(fā)。在信息錄入環(huán)節(jié),對(duì)產(chǎn)品相關(guān)測(cè)試數(shù)據(jù)進(jìn)行上傳,數(shù)據(jù)合法時(shí),經(jīng)過驗(yàn)證后寫入數(shù)據(jù)庫。小麥?zhǔn)斋@之后,區(qū)塊鏈系統(tǒng)根據(jù)本測(cè)試批次產(chǎn)品數(shù)據(jù)制定出唯一的追溯碼(產(chǎn)品ID),追溯碼跟隨本批次產(chǎn)品的生產(chǎn)加工要求流通到下一環(huán)節(jié),加工、倉儲(chǔ)、物流和銷售環(huán)節(jié)均掃描上一環(huán)節(jié)的追溯碼,并將信息上傳到區(qū)塊鏈系統(tǒng)。在加工環(huán)節(jié)對(duì)追溯進(jìn)行人為修改,追溯碼由區(qū)塊頭中的哈希值得到,因此在倉儲(chǔ)環(huán)節(jié)掃描追溯碼時(shí)無法與數(shù)據(jù)庫中的哈希值對(duì)應(yīng),在區(qū)塊鏈系統(tǒng)中不能通過共識(shí)驗(yàn)證,數(shù)據(jù)無法存入數(shù)據(jù)庫。所以供應(yīng)鏈環(huán)節(jié)中任何數(shù)據(jù)篡改行為都會(huì)被檢測(cè)到,保證數(shù)據(jù)的真實(shí)有效。最終在檢測(cè)時(shí),通過追溯系統(tǒng)客戶端輸入追溯碼進(jìn)行查詢獲得產(chǎn)品的全部數(shù)據(jù),如圖9、10所示,由于倉儲(chǔ)環(huán)節(jié)處理不當(dāng),導(dǎo)致產(chǎn)品質(zhì)量不達(dá)標(biāo),通過數(shù)據(jù)對(duì)比,可以精準(zhǔn)定位到出現(xiàn)問題的倉儲(chǔ)環(huán)節(jié)。
圖 9 追溯碼查詢界面Fig. 9 Query interface of tracing codes
圖 10 溯源結(jié)果Fig. 10 Results of origin tracing
若面粉的檢驗(yàn)出現(xiàn)疏漏且問題產(chǎn)品未被監(jiān)管部門抽檢到,問題產(chǎn)品被銷售至消費(fèi)者手中,通過追溯對(duì)比產(chǎn)品ID是否一致,若消費(fèi)者手中的產(chǎn)品ID經(jīng)過篡改,在追溯結(jié)果頁面可迅速定位至對(duì)應(yīng)的問題發(fā)生環(huán)節(jié),召回問題產(chǎn)品來減小事故后果并對(duì)責(zé)任者進(jìn)行處罰,加強(qiáng)對(duì)問題發(fā)生環(huán)節(jié)的監(jiān)管,保證面粉產(chǎn)品的質(zhì)量安全。因此,通過本糧油食品全供應(yīng)鏈可信追溯模型實(shí)現(xiàn)產(chǎn)品溯源是可行的,能覆蓋面粉廠產(chǎn)品流通的所有環(huán)節(jié),保障糧油食品質(zhì)量以及消費(fèi)者權(quán)益和身體健康。
本研究應(yīng)用區(qū)塊鏈技術(shù),設(shè)計(jì)研究的糧油食品全供應(yīng)鏈可信追溯模型,實(shí)現(xiàn)了糧油食品從生產(chǎn)到銷售完整流通環(huán)節(jié)的監(jiān)管與產(chǎn)品溯源,使得糧油食品供應(yīng)鏈上所有環(huán)節(jié)的數(shù)據(jù)更加透明可靠,打破了不同環(huán)節(jié)企業(yè)之間的信息孤島,并且可以精確定位到問題發(fā)生環(huán)節(jié),可解決目前食品安全面臨的信任問題,改善當(dāng)前社會(huì)公眾對(duì)食品安全的信任度與政府監(jiān)督抽查合格率存在落差這一窘境,進(jìn)一步加強(qiáng)了食品可追溯性和安全性,提升中國糧油食品供應(yīng)鏈的透明度,本模型亦可作為通用模型應(yīng)用在其他食品領(lǐng)域的追溯,對(duì)保障食品質(zhì)量安全對(duì)保障國民飲食健康具有一定的意義。