吳曉彤 柳平增 王志鏵
(山東農(nóng)業(yè)大學(xué)信息科學(xué)與工程學(xué)院 山東 泰安 271018)
農(nóng)產(chǎn)品溯源系統(tǒng)作為一種對農(nóng)產(chǎn)品質(zhì)量進(jìn)行監(jiān)督與控制的有效方法,已成為國內(nèi)外農(nóng)產(chǎn)品質(zhì)量安全監(jiān)管的有效手段[1]。但由于傳統(tǒng)農(nóng)產(chǎn)品溯源系統(tǒng)依賴于中心數(shù)據(jù)庫存儲和管理數(shù)據(jù),系統(tǒng)中心化嚴(yán)重,導(dǎo)致信息在記錄過程中易被篡改、數(shù)據(jù)不公開透明、信息易丟失等問題,系統(tǒng)在數(shù)據(jù)存儲安全方面面臨著眾多挑戰(zhàn)。
區(qū)塊鏈?zhǔn)且环N分布式賬本技術(shù),具有去中心化、公開透明、分布式存儲、不可篡改、安全可靠等技術(shù)特點,被認(rèn)為是一種與生俱來的信任機(jī)器,可用于解決傳統(tǒng)溯源系統(tǒng)產(chǎn)生的中心化、信任危機(jī)等問題,提高溯源的可靠性與安全性[2-4]。
本文在總結(jié)和分析傳統(tǒng)農(nóng)產(chǎn)品溯源系統(tǒng)問題的基礎(chǔ)上,構(gòu)建基于區(qū)塊鏈的農(nóng)產(chǎn)品溯源模型和溯源系統(tǒng)架構(gòu),利用區(qū)塊鏈的分布式存儲、智能合約等技術(shù)實現(xiàn)了去中心化的農(nóng)產(chǎn)品溯源模式,將農(nóng)產(chǎn)品溯源信息分布式的存儲在鏈上的每一個節(jié)點中,并通過HyperledgerFabric框架實現(xiàn)了基于區(qū)塊鏈的農(nóng)產(chǎn)品溯源系統(tǒng)。該系統(tǒng)提高了農(nóng)產(chǎn)品溯源信息的透明度與安全性。
國內(nèi)外許多學(xué)者在物聯(lián)網(wǎng)、網(wǎng)絡(luò)信息、數(shù)據(jù)庫等技術(shù)方面,對農(nóng)產(chǎn)品溯源系統(tǒng)進(jìn)行創(chuàng)新性的研究并取得顯著成效[5-17]。傳統(tǒng)農(nóng)產(chǎn)品溯源以種植、倉儲、加工及物流等流程為主線,記錄和管理從種植到銷售所有環(huán)節(jié)的產(chǎn)品信息,溯源模型如圖1所示。
圖1 傳統(tǒng)農(nóng)產(chǎn)品溯源系統(tǒng)模型
可以看出:傳統(tǒng)的農(nóng)產(chǎn)品溯源系統(tǒng)一般以中心數(shù)據(jù)庫為基礎(chǔ),采取分段、分環(huán)節(jié)的溯源模式;在農(nóng)產(chǎn)品流通過程中,國內(nèi)多部門實行切塊分段共管的運行機(jī)制,分段監(jiān)管步調(diào)不一;部分系統(tǒng)基礎(chǔ)建設(shè)缺乏標(biāo)準(zhǔn)化,信息不規(guī)范、系統(tǒng)不兼容;對于監(jiān)管部門和消費者來說,所有信息需要從中心數(shù)據(jù)庫中獲取[18-23]。傳統(tǒng)溯源系統(tǒng)依賴于中心數(shù)據(jù)庫會導(dǎo)致以下問題:
(1) 系統(tǒng)中心化嚴(yán)重,信息真實性無法驗證。傳統(tǒng)溯源系統(tǒng)大多采用中心數(shù)據(jù)庫實現(xiàn)信息存儲,信息存在人為篡改的可能,使得消費者對于溯源信息的真實性有較大的質(zhì)疑。
(2) 農(nóng)產(chǎn)品信息不公開透明,導(dǎo)致交易雙方出現(xiàn)信任問題。不同環(huán)節(jié)的用戶作為不同的角色參與溯源過程,角色間缺乏信息反饋,信息不公開透明,導(dǎo)致各角色掌握的信息不對稱,交易雙方缺乏信任,容易產(chǎn)生信任危機(jī)問題。
(3) 農(nóng)產(chǎn)品責(zé)任主體難確定。由于傳統(tǒng)溯源系統(tǒng)各環(huán)節(jié)分散、碎片化嚴(yán)重,一旦產(chǎn)品出現(xiàn)質(zhì)量問題,需從每個環(huán)節(jié)逐步進(jìn)行溯源,過程較為繁瑣,無法快速準(zhǔn)確定位責(zé)任主體。
區(qū)塊鏈?zhǔn)且环N分布式賬本技術(shù),是一串利用加密算法相關(guān)聯(lián)而產(chǎn)生的鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu),通過去中心化和去信任的方式集體維護(hù)一個可靠數(shù)據(jù)庫,具有去中心化、共識機(jī)制、開放透明、匿名性四個特點[24-26],區(qū)塊鏈連接示意圖如圖2所示。
圖2 區(qū)塊鏈接示意圖
區(qū)塊鏈?zhǔn)且环N大家共同參與信息的記錄和存儲的技術(shù)。在之前,人們通過中心化的機(jī)構(gòu)進(jìn)行信息記錄和存儲的工作,區(qū)塊鏈技術(shù)的出現(xiàn)則允許系統(tǒng)中的每個節(jié)點都能夠參與信息的記錄和存儲,即使系統(tǒng)中的部分參與節(jié)點失效或作假也不能改變區(qū)塊鏈的完整性,更不能篡改區(qū)塊鏈中的信息[27]。目前區(qū)塊鏈作為一種去中心化的核心技術(shù),被廣泛應(yīng)用于金融、政務(wù)、物聯(lián)網(wǎng)等領(lǐng)域。
2.2.1分布式存儲
區(qū)塊鏈分布式存儲是一種數(shù)據(jù)存儲的技術(shù),它將網(wǎng)絡(luò)上每臺機(jī)器的磁盤空間作為分散的存儲資源形成虛擬的存儲設(shè)備,數(shù)據(jù)被分散存儲在鏈的每一個節(jié)點中,并完整地保存下來。
區(qū)塊鏈的分布式存儲過程如圖3所示,可以分為以下六個步驟:(1) 創(chuàng)建數(shù)據(jù)分片;(2) 加密每個分片;(3) 為每個分片生成哈希;(4) 復(fù)制每個分片;(5) 分發(fā)復(fù)制的分片;(6) 記錄事務(wù)到分類帳。
圖3 區(qū)塊鏈分布式存儲過程
區(qū)塊鏈的分布式存儲打破了傳統(tǒng)溯源系統(tǒng)數(shù)據(jù)存儲中心化的局面,使信息分布式存儲在多個節(jié)點,每個節(jié)點都保持完整的信息副本,鏈上信息對所有參與成員都是透明且可驗證的,同時增強了產(chǎn)業(yè)鏈各環(huán)節(jié)的信息互通性,其去中心化、透明性、可恢復(fù)性和防篡改性的特點也使得其與農(nóng)產(chǎn)品溯源領(lǐng)域極為契合。
2.2.2智能合約
智能合約又稱為智能合同,是事件驅(qū)動的、有狀態(tài)的、多方識別的、運行在區(qū)塊鏈上的、能夠根據(jù)預(yù)設(shè)條件自動處理資產(chǎn)的合約。智能合約的最大優(yōu)點是使用程序算法來代替仲裁和合同的執(zhí)行[28]。
如果說區(qū)塊鏈?zhǔn)且粋€數(shù)據(jù)庫,那么智能合約就是將區(qū)塊鏈技術(shù)應(yīng)用于現(xiàn)實的應(yīng)用層。智能合約是在區(qū)塊鏈數(shù)據(jù)庫上運行的一種計算機(jī)程序,能在滿足源代碼編寫條件的情況下自動執(zhí)行。智能合約為傳統(tǒng)農(nóng)產(chǎn)品溯源系統(tǒng)標(biāo)準(zhǔn)不同、流通性不強的問題帶來了解決辦法,實現(xiàn)了信息的連續(xù)實時傳遞和跟蹤,且進(jìn)一步增強了系統(tǒng)的去中心化。目前,智能合約在選舉、供應(yīng)鏈優(yōu)化、電子商務(wù)等場景中都得到了有效應(yīng)用。
農(nóng)產(chǎn)品溯源涉及種植、倉儲、加工、物流、銷售、查詢等多個環(huán)節(jié),各環(huán)節(jié)之間的高效協(xié)作能夠保障農(nóng)產(chǎn)品信息的有效溯源。本文根據(jù)農(nóng)產(chǎn)品溯源的實際需求對區(qū)塊鏈技術(shù)在產(chǎn)業(yè)鏈各環(huán)節(jié)的應(yīng)用進(jìn)行了設(shè)計,使區(qū)塊鏈中的智能合約和分布式存儲技術(shù)能夠確保產(chǎn)品信息流的正常傳遞,保證了產(chǎn)品的流通、溯源和信息的分布式存儲。
(1) 種植(生產(chǎn))環(huán)節(jié)。主要節(jié)點為農(nóng)場或企業(yè)。節(jié)點需要將生產(chǎn)資料和產(chǎn)品信息錄入并上傳到區(qū)塊鏈中,創(chuàng)建初始區(qū)塊。在此過程中系統(tǒng)調(diào)用智能合約實現(xiàn)對節(jié)點的認(rèn)證和信息上鏈,并通過數(shù)據(jù)分片的方式實現(xiàn)信息的分布式存儲。當(dāng)產(chǎn)品隨著產(chǎn)業(yè)鏈流動進(jìn)入下一環(huán)節(jié)即倉儲環(huán)節(jié)時,當(dāng)前節(jié)點會向下一個節(jié)點發(fā)送交易請求,雙方利用密鑰對區(qū)塊進(jìn)行驗證,并根據(jù)內(nèi)嵌在區(qū)塊鏈中的智能合約進(jìn)行交易過程,在全員審核通過后完成交易,倉庫便成為新的授權(quán)角色。在交易過程中,監(jiān)管部門作為鏈中的節(jié)點有權(quán)對種植信息進(jìn)行訪問及審查,審查合格后以私鑰方式簽名來認(rèn)證種植環(huán)節(jié)合乎規(guī)范。算法偽代碼如算法1所示。
算法1智能合約中的農(nóng)產(chǎn)品交易操作
已知節(jié)點編號為user_id,節(jié)點角色為user_name,交易編號為tran_id,時間戳為timestamp,產(chǎn)品信息為pro_info。
//注冊用戶并生成私鑰
user.id=user_id,user.name=user_name,;
newKeyPair() (user_id,[]byte);
//進(jìn)行產(chǎn)品信息的錄入和區(qū)塊的生成
protected List
pro_hash=sha256(pro_info),pro_time=timestamp;
generateBlock(pro_info);
//節(jié)點驗證
if proving(user_id).equal==0 then
return false;
//區(qū)塊廣播及驗證
else public boolean broadcast(Block pro_info);
isBlockValid(Block pro_info);
AddBlockchain();
return ture;
(2) 倉儲環(huán)節(jié)。此環(huán)節(jié)的主要節(jié)點為倉庫(冷庫)。倉庫接受了來自種植環(huán)節(jié)的產(chǎn)品之后,獲得訪問和維護(hù)產(chǎn)品信息的權(quán)限,并且將該環(huán)節(jié)特定信息寫入?yún)^(qū)塊中,在轉(zhuǎn)移產(chǎn)品的過程中調(diào)用智能合約將變更的溯源編碼進(jìn)行更新。這個過程中節(jié)點之間通過共識算法進(jìn)行區(qū)塊的廣播和數(shù)據(jù)的同步,使得鏈中的其他節(jié)點也可以實現(xiàn)自身區(qū)塊的信息更新和對該環(huán)節(jié)區(qū)塊的訪問。
(3) 加工環(huán)節(jié)。作為消費者最關(guān)心的環(huán)節(jié),在收到來自于上一環(huán)節(jié)的產(chǎn)品后,需要寫入加工信息。其中:檢驗合格信息需要有監(jiān)管部門參與檢驗并通過數(shù)字簽名對產(chǎn)品的合格與否來進(jìn)行認(rèn)證,與產(chǎn)品信息一同寫入?yún)^(qū)塊中,同時生產(chǎn)資料的供應(yīng)商作為節(jié)點加入到鏈中,防止產(chǎn)品溯源過程中產(chǎn)生斷鏈現(xiàn)象。最后的產(chǎn)品包裝過程中,除了必要的包裝信息外,還需要為產(chǎn)品生成溯源碼或二維碼,便于消費者進(jìn)行產(chǎn)品的溯源查詢。
(4) 物流環(huán)節(jié)。主要節(jié)點為物流公司。在更新產(chǎn)品信息時需要提供物流信息,運輸中每個包裝上應(yīng)包含產(chǎn)品的標(biāo)識,以便于當(dāng)前節(jié)點與下一節(jié)點的對接管理。
(5) 銷售環(huán)節(jié)。主要節(jié)點為超市等銷售企業(yè)。農(nóng)產(chǎn)品經(jīng)過物流環(huán)節(jié)的運輸后,會發(fā)往不同地區(qū)的銷售企業(yè),所以區(qū)塊中的產(chǎn)品信息須添加當(dāng)前節(jié)點的企業(yè)信息;銷售企業(yè)同樣也需要明確產(chǎn)品的來源信息、銷售信息等,確保產(chǎn)品信息的完整性,由于以上環(huán)節(jié)的代碼邏輯與生產(chǎn)環(huán)節(jié)較為相似,故此處不再闡述。
(6) 查詢環(huán)節(jié)。主要節(jié)點是消費者和監(jiān)管部門。消費者可以通過掃描所購買產(chǎn)品包裝上的一維碼和二維碼對產(chǎn)品進(jìn)行溯源,獲取產(chǎn)品的相關(guān)信息;在查詢過程中系統(tǒng)首先會對消費者的身份進(jìn)行驗證,通過驗證后系統(tǒng)將通過溯源碼進(jìn)行區(qū)塊鏈地址查詢,查詢成功后返回地址,后臺接口將該地址的區(qū)塊信息反饋給消費者,完成逆向溯源的過程。該算法偽代碼如算法2所示。
算法2智能合約中的農(nóng)產(chǎn)品信息查詢
已知節(jié)點編號為user_id,產(chǎn)品批次號為tran_id,時間戳為timestamp,產(chǎn)品信息為pro_info。
//節(jié)點驗證
if proving(user_id).equal==0 then
return false;
//遍歷區(qū)塊
Else
mineTxList=blockStoreProvider.loadRelatedTransactions();
for
(TransactionStore.getTransactionStore:mineTxList)
If
(TransactionStore.getTransaction().getHash.equals(pro_hash))
List
//遍歷查詢輸出
For(int i=0;i TransactionOutput output=outputs.get(i); Break; return output; 基于傳統(tǒng)農(nóng)產(chǎn)品溯源和區(qū)塊鏈技術(shù)各自的特點,本文設(shè)計了基于區(qū)塊鏈的農(nóng)產(chǎn)品溯源系統(tǒng)模型,如圖4所示。為便于敘述,本文將基于區(qū)塊鏈的農(nóng)產(chǎn)品溯源系統(tǒng)包含的產(chǎn)業(yè)鏈環(huán)節(jié)分為六個,分別為種植、倉儲、加工、物流、銷售、查詢環(huán)節(jié),考慮到產(chǎn)業(yè)鏈可能還存在眾多分支環(huán)節(jié),此處僅取主鏈進(jìn)行分析。 圖4 基于區(qū)塊鏈的農(nóng)產(chǎn)品溯源系統(tǒng)模型 從生產(chǎn)到銷售的流通過程中,農(nóng)產(chǎn)品會經(jīng)歷眾多環(huán)節(jié),而產(chǎn)品信息傳遞的關(guān)鍵在于其環(huán)節(jié)參與節(jié)點。本文給每個參與節(jié)點設(shè)置密鑰,密鑰就像是區(qū)塊鏈錢包,上面包含其農(nóng)產(chǎn)品的詳細(xì)信息,使得產(chǎn)業(yè)鏈每一環(huán)節(jié)的參與節(jié)點都能夠利用自身的密鑰對信息進(jìn)行加密;在兩個環(huán)節(jié)進(jìn)行產(chǎn)品交易時,發(fā)起者首先通過自身密鑰進(jìn)行節(jié)點認(rèn)證,認(rèn)證通過后開始整個交易流程,此時兩節(jié)點需要利用非對稱加密技術(shù)達(dá)成一致協(xié)議,使產(chǎn)品所屬關(guān)系被轉(zhuǎn)移。通過共識算法保證交易的一致性,例如在某個節(jié)點進(jìn)行信息的存儲后,會對全網(wǎng)發(fā)送一個廣播,鏈上所有節(jié)點確認(rèn)廣播后,使產(chǎn)品信息分布式存儲于各節(jié)點的分布式賬本中,通過密碼學(xué)和共識算法的結(jié)合能夠保證信息不可篡改。通過編寫智能合約,保證農(nóng)產(chǎn)品的每一次信息傳遞、位置變更等都會被記錄在區(qū)塊鏈上,并且真實有效。比如:當(dāng)生產(chǎn)者將農(nóng)產(chǎn)品交付給物流環(huán)節(jié)的過程就是一個合同,物流將農(nóng)產(chǎn)品運送到銷售店面同樣也會有一個合同。在整個流程過程中有無數(shù)個合同要簽約,把這一系列的合同通過代碼的形式在區(qū)塊鏈上實現(xiàn),就是通過智能合約來完成。通過此模型實現(xiàn)的產(chǎn)品溯源全過程信息透明且不可篡改,解決了傳統(tǒng)溯源的誠信問題。 若某個環(huán)節(jié)的參與節(jié)點發(fā)生了故障,系統(tǒng)仍然能夠正常運行,且故障節(jié)點的數(shù)據(jù)可以恢復(fù)。這些參與節(jié)點在系統(tǒng)中都享有數(shù)據(jù)寫入和讀取的權(quán)限,并且鏈中的區(qū)塊能夠進(jìn)行數(shù)據(jù)同步,這意味著每個節(jié)點間可以共享產(chǎn)品信息,在保證數(shù)據(jù)真實的前提下,實現(xiàn)農(nóng)產(chǎn)品信息的有效跟蹤和溯源,真正達(dá)到系統(tǒng)去中心化的效果。 由于區(qū)塊鏈農(nóng)產(chǎn)品溯源系統(tǒng)所涉及到的參與節(jié)點眾多,并且這些節(jié)點都是特定的或是簽訂協(xié)議的組織,不同節(jié)點所享有的權(quán)限不同,因此每個節(jié)點都可以作為一個中心參與到溯源過程中,系統(tǒng)在運行過程中所需要的數(shù)據(jù)承載能力也較高。結(jié)合不同類型區(qū)塊鏈技術(shù)特點的分析,本文選用聯(lián)盟鏈作為區(qū)塊鏈溯源系統(tǒng)的底層架構(gòu)支撐。 根據(jù)上述模型所設(shè)計的區(qū)塊鏈溯源系統(tǒng)的總體架構(gòu)如圖5所示,主要分為用戶層、系統(tǒng)層、數(shù)據(jù)存儲層、智能合約層、數(shù)據(jù)傳輸層、物理層。其中,區(qū)塊鏈技術(shù)主要用于數(shù)據(jù)存儲層和智能合約層。 圖5 區(qū)塊鏈農(nóng)產(chǎn)品溯源系統(tǒng)架構(gòu)圖 物理層主要包含物聯(lián)網(wǎng)傳感器和感知、處理和傳輸模塊等,承擔(dān)數(shù)據(jù)自動采集與物聯(lián)網(wǎng)遠(yuǎn)程控制等功能,用于將環(huán)境感知信息、產(chǎn)品信息等通過協(xié)議上傳到區(qū)塊中,可以通過設(shè)備中的加密技術(shù)和完整性驗證確保采集到的信息的安全性。 數(shù)據(jù)傳輸層提供網(wǎng)絡(luò)數(shù)據(jù)傳輸服務(wù),包含WLAN、數(shù)據(jù)網(wǎng)絡(luò)、藍(lán)牙等方式。主要目的是實現(xiàn)區(qū)塊鏈網(wǎng)絡(luò)節(jié)點之間的信息交互,區(qū)塊鏈的本質(zhì)是一個P2P(點對點)網(wǎng)絡(luò),每一個節(jié)點既能夠接受信息,又能夠發(fā)布信息,節(jié)點之間通過維護(hù)一個共同的區(qū)塊鏈來保持通信。在區(qū)塊鏈的網(wǎng)絡(luò)中,每一個節(jié)點都可以創(chuàng)造出新的區(qū)塊,在新區(qū)塊被創(chuàng)造出以后會通過廣播的形式通知其他節(jié)點,而其他節(jié)點則反過來會對這個節(jié)點進(jìn)行驗證,當(dāng)區(qū)塊鏈網(wǎng)絡(luò)中超過半數(shù)的用戶驗證通過以后,這個新的區(qū)塊就會被添加到主鏈上了。 智能合約層則根據(jù)企業(yè)間的商業(yè)合同編寫,定義了一系列的事務(wù)處理流程,包括數(shù)據(jù)操作模塊、資金周轉(zhuǎn)模塊、安全預(yù)警模塊。數(shù)據(jù)操作模塊是對數(shù)據(jù)的添加、查詢等操作;資金交易模塊是自動執(zhí)行企業(yè)間事先協(xié)商好的資金交易過程,例如供貨企業(yè)向進(jìn)貨企業(yè)提供原料,原料到達(dá)后進(jìn)貨企業(yè)檢測無誤后會自動支付供貨企業(yè)貨款;安全預(yù)警模塊是如果區(qū)塊鏈系統(tǒng)檢測到有非法訪問或數(shù)據(jù)異常,會自動向系統(tǒng)管理員發(fā)送警報。 數(shù)據(jù)存儲層中主要指對分布式數(shù)據(jù)庫的操作,系統(tǒng)將數(shù)據(jù)記錄到區(qū)塊主體的Merkle樹中后,會對其進(jìn)行Hsah求值,形成鏈?zhǔn)浇Y(jié)構(gòu),在對其進(jìn)行時間戳的加蓋后,區(qū)塊便開始生效,上傳到區(qū)塊鏈中的數(shù)據(jù)經(jīng)過完整性驗證后都可以供任何鏈中的節(jié)點用戶進(jìn)行訪問。而節(jié)點管理是指針對于不同類型的鏈,鏈中每個節(jié)點設(shè)置的訪問權(quán)限不同,例如公有鏈中的信息可以對鏈中的所有節(jié)點公開,而聯(lián)盟鏈或私有鏈中各節(jié)點的訪問權(quán)限可能不同,權(quán)限的設(shè)置根據(jù)實際的需求來決定。數(shù)據(jù)存儲層中的存儲介質(zhì)分為兩部分:普通數(shù)據(jù)庫和基于超級賬本的區(qū)塊鏈系統(tǒng)。非溯源數(shù)據(jù)存入?yún)^(qū)塊鏈會占用不必要的系統(tǒng)資源,所以此類數(shù)據(jù)會被存入各企業(yè)自己的數(shù)據(jù)庫中,而關(guān)鍵的溯源數(shù)據(jù)會上傳至區(qū)塊鏈系統(tǒng)中安全保存。 系統(tǒng)層和用戶層主要是面向用戶,而用戶分為政府、企業(yè)和公眾,不同用戶所擁有的職能和權(quán)限也不同,同時增加數(shù)據(jù)可視化的方式,提高溯源系統(tǒng)的實用性。 本文研究基于上述的系統(tǒng)架構(gòu)和區(qū)塊鏈溯源模型,設(shè)計并實現(xiàn)了一個基于區(qū)塊鏈的農(nóng)產(chǎn)品溯源系統(tǒng),系統(tǒng)拓?fù)浣Y(jié)構(gòu)如圖6所示。該系統(tǒng)由區(qū)塊鏈后臺系統(tǒng)、溯源前臺系統(tǒng)兩個子系統(tǒng)組成,并利用組件式開發(fā),將視頻監(jiān)控、環(huán)境感知、政府管理、電商平臺等模塊融合,是一個面向政府、農(nóng)戶和消費者的農(nóng)產(chǎn)品可信溯源系統(tǒng)。 圖6 區(qū)塊鏈農(nóng)產(chǎn)品溯源系統(tǒng)拓?fù)浣Y(jié)構(gòu)圖 本文是在Ubuntu操作系統(tǒng)環(huán)境下,采用Hyperledger Fabric 1.0底層架構(gòu)和Docker、Git等工具,利用Go語言通過GoLand編譯器進(jìn)行區(qū)塊鏈后臺環(huán)境的部署,區(qū)塊鏈后臺環(huán)境部署成功如圖7所示。前臺系統(tǒng)的Web應(yīng)用是在Windows操作系統(tǒng)環(huán)境下,利用SSH框架、MySQL數(shù)據(jù)庫及Tomcat服務(wù)器,使用Java語言在MyEclipse編譯器中進(jìn)行部署。 圖7 區(qū)塊鏈環(huán)境部署 系統(tǒng)查詢界面如圖8所示,消費者可以點擊企業(yè)介紹和網(wǎng)上商城來了解企業(yè)信息和購買農(nóng)產(chǎn)品。另外系統(tǒng)還提供政府和企業(yè)兩個不同的管理入口,政府能夠?qū)ζ髽I(yè)的資質(zhì)和操作規(guī)范進(jìn)行監(jiān)督,企業(yè)享有內(nèi)部人員和企業(yè)效益的管理權(quán)限。當(dāng)消費者輸入產(chǎn)品包裝上的溯源碼或掃描二維碼后,即可跳轉(zhuǎn)到系統(tǒng)的產(chǎn)品信息溯源界面,獲取到該產(chǎn)品從種植到銷售的溯源信息,以及對應(yīng)的人員信息和區(qū)塊鏈地址等,如圖9所示。 圖8 系統(tǒng)查詢界面 圖9 產(chǎn)品信息溯源界面 區(qū)塊鏈技術(shù)的去中心化、不可篡改、分布式存儲的天然特性,使其在農(nóng)產(chǎn)品溯源系統(tǒng)中具有廣泛的應(yīng)用前景。本文分析了傳統(tǒng)農(nóng)產(chǎn)品溯源系統(tǒng)存在的問題,提出了基于區(qū)塊鏈的農(nóng)產(chǎn)品溯源系統(tǒng)研究,對區(qū)塊鏈溯源系統(tǒng)模型和系統(tǒng)架構(gòu)進(jìn)行了構(gòu)建和分析,利用區(qū)塊鏈數(shù)據(jù)分片的方式實現(xiàn)信息的分布式存儲,對智能合約進(jìn)行設(shè)計使其滿足農(nóng)產(chǎn)品產(chǎn)業(yè)鏈的實際需求,解決了傳統(tǒng)農(nóng)產(chǎn)品溯源系統(tǒng)中心化嚴(yán)重導(dǎo)致的信息易被篡改、信息不透明、存儲安全性低等問題。在此基礎(chǔ)上利用HyperledgerFabric平臺實現(xiàn)了該區(qū)塊鏈系統(tǒng),該系統(tǒng)與傳統(tǒng)的溯源系統(tǒng)相比,具有去中心化、數(shù)據(jù)分布式存儲的特點,且建立了新的信托機(jī)制,保障了信息的安全性及可信性,打破傳統(tǒng)溯源系統(tǒng)中的技術(shù)壁壘,為農(nóng)產(chǎn)品溯源提供了一個不依賴于第三方的可信平臺。 由于目前區(qū)塊鏈技術(shù)還處于尚未完全成熟的階段,區(qū)塊鏈溯源系統(tǒng)的性能和節(jié)點達(dá)成共識的效率亟待提高。因此,如何提高區(qū)塊鏈系統(tǒng)的性能和共識效率是后續(xù)研究中應(yīng)著重解決的問題。3.2 區(qū)塊鏈溯源模型設(shè)計
3.3 系統(tǒng)架構(gòu)設(shè)計
4 系統(tǒng)實現(xiàn)
4.1 環(huán)境部署
4.2 功能實現(xiàn)
5 結(jié) 語