葛 艷 黃朝良 陳 明 鄒一波
(1.上海海洋大學(xué)信息學(xué)院, 上海 201306; 2.農(nóng)業(yè)農(nóng)村部漁業(yè)信息重點實驗室, 上海 201306)
水產(chǎn)品的質(zhì)量安全一直是水產(chǎn)企業(yè)和消費者普遍關(guān)心的問題,也越發(fā)體現(xiàn)出溯源系統(tǒng)的重要性[1]。自區(qū)塊鏈技術(shù)問世以來[2],國內(nèi)外對區(qū)塊鏈溯源進行了諸多研究。
針對區(qū)塊鏈溯源系統(tǒng)模型,一些研究結(jié)合物聯(lián)網(wǎng)、隱藏網(wǎng)絡(luò)和可視化技術(shù)等,為區(qū)塊鏈溯源提供了高效、安全的分布式信息共享模型[3-5],面向溯源業(yè)務(wù)設(shè)計區(qū)塊鏈溯源架構(gòu)[6-7],實現(xiàn)高可用性平臺[8-13],滿足了溯源領(lǐng)域?qū)π畔⑼该餍?、可溯性的需求。另一些研究在模型設(shè)計中融入權(quán)限控制[14],大大提高了信息可信度。針對區(qū)塊鏈上的溯源查詢和寫入效率瓶頸等,諸多研究從存儲模型和共識算法優(yōu)化等多方面入手,如通過提出信譽監(jiān)督機制共識算法[15]、融合共識算法[16]及雙層架構(gòu)共識[17]來提升共識效率,通過“數(shù)據(jù)庫+哈希值”的存儲模式來提高查詢效率[18],通過使用側(cè)鏈技術(shù)來提高系統(tǒng)吞吐量[19],借助密碼分組鏈接模式來保證隱私安全[20]等。
上述研究從技術(shù)應(yīng)用和性能改進層面促進了區(qū)塊鏈溯源的發(fā)展。憑借其不可篡改及時間戳等特性[21-22],區(qū)塊鏈技術(shù)已廣泛應(yīng)用于食品溯源領(lǐng)域[23-24],利用區(qū)塊鏈從質(zhì)量保障層面更好地服務(wù)于食品溯源已成為一個重要研究分支。危害分析及關(guān)鍵控制點(HACCP)是食品質(zhì)量保證的重要指標之一[25-27]。文獻[28]提出,可將HACCP與區(qū)塊鏈結(jié)合,提高區(qū)塊鏈溯源質(zhì)量監(jiān)管水平,并從宏觀角度闡述了HACCP結(jié)合區(qū)塊鏈溯源的大體框架。將溯源系統(tǒng)建立在區(qū)塊鏈公鏈以太坊或者聯(lián)盟鏈平臺Hyperledger Fabric上,利用無線射頻識別技術(shù)和智能合約實現(xiàn)信息錄入,可提供質(zhì)量保障,在一定程度上實現(xiàn)了自動化[29]。但結(jié)合HACCP質(zhì)量體系和區(qū)塊鏈溯源、通過智能合約來保障產(chǎn)品質(zhì)量的研究卻鮮見報道。
本文以生食牡蠣為例,根據(jù)生食牡蠣加工HACCP質(zhì)量體系[30],提出基于區(qū)塊鏈的生食牡蠣加工HACCP 質(zhì)量溯源模型,并構(gòu)建基于該模型的原型系統(tǒng)。系統(tǒng)應(yīng)用區(qū)塊鏈技術(shù)監(jiān)控,并溯源牡蠣接收、牡蠣干法冷藏、牡蠣肉存儲3個關(guān)鍵質(zhì)量控制點,確保真實記錄病菌生長、病菌污染、環(huán)境化學(xué)污染和天然毒素等顯著危害,設(shè)計智能合約,增強質(zhì)量預(yù)警的自動化程度,在監(jiān)控質(zhì)量關(guān)鍵控制點(CCP)數(shù)據(jù)的同時,保證監(jiān)控數(shù)據(jù)的不可篡改性,以期實現(xiàn)質(zhì)量監(jiān)控數(shù)據(jù)的全過程可視化。
區(qū)塊鏈溯源對產(chǎn)品質(zhì)量保證手段、數(shù)據(jù)記錄內(nèi)容、產(chǎn)品質(zhì)量標準等問題缺乏關(guān)注,溯源更多記錄的是交易信息,缺少質(zhì)量監(jiān)管基礎(chǔ)數(shù)據(jù)。針對該不足,本研究提出基于區(qū)塊鏈的生食牡蠣加工HACCP質(zhì)量溯源系統(tǒng)。系統(tǒng)結(jié)合HACCP質(zhì)量體系設(shè)計生食牡蠣加工溯源流程,設(shè)計智能合約實現(xiàn)溯源業(yè)務(wù),并借助聯(lián)盟鏈平臺Hyperledger Fabric使該溯源體系得以實現(xiàn)。
本研究重點解決數(shù)據(jù)結(jié)構(gòu)設(shè)計、智能合約設(shè)計和區(qū)塊鏈底層系統(tǒng)架構(gòu)等問題(圖1)。
從技術(shù)實現(xiàn)層面看,總體設(shè)計分為3層:溯源邏輯層、區(qū)塊鏈系統(tǒng)層和溯源業(yè)務(wù)層。溯源邏輯層為設(shè)計最底層,在邏輯上形成溯源框架,從整體上設(shè)計溯源流程,根據(jù)HACCP規(guī)范提取數(shù)據(jù)結(jié)構(gòu),為上層系統(tǒng)和業(yè)務(wù)實現(xiàn)提供支撐。具體來說,數(shù)據(jù)結(jié)構(gòu)規(guī)定信息錄入格式和內(nèi)容,溯源流程確定溯源環(huán)節(jié)。區(qū)塊鏈系統(tǒng)層為設(shè)計核心層,用于實現(xiàn)底層溯源邏輯,設(shè)計智能合約滿足上層溯源業(yè)務(wù)需求。該層包含4個模塊,證書模塊、共識模塊、存儲模塊和智能合約模塊。智能合約模塊是系統(tǒng)設(shè)計的重點,模塊通過邏輯語句實現(xiàn)數(shù)據(jù)讀取和上鏈,并給用戶提供質(zhì)量反饋。溯源業(yè)務(wù)層是本模型設(shè)計最上層,用于提供應(yīng)用、實現(xiàn)業(yè)務(wù)。該層與區(qū)塊鏈系統(tǒng)層對接,調(diào)用智能合約接口寫入和讀取數(shù)據(jù)。區(qū)塊鏈系統(tǒng)層接收輸入數(shù)據(jù),運行智能合約,給溯源業(yè)務(wù)層提供產(chǎn)品質(zhì)量是否達標及所處狀態(tài)等提示,并把數(shù)據(jù)打包成區(qū)塊寫入數(shù)據(jù)庫,實現(xiàn)質(zhì)量監(jiān)控。
從業(yè)務(wù)功能角度看,總體設(shè)計分為2個板塊:質(zhì)量數(shù)據(jù)提取與監(jiān)測板塊、鏈上存儲與溯源板塊。質(zhì)量數(shù)據(jù)提取與監(jiān)測板塊提取HACCP質(zhì)量體系中的關(guān)鍵質(zhì)量指標生成數(shù)據(jù)結(jié)構(gòu),設(shè)計智能合約,完成數(shù)據(jù)上鏈,同時對數(shù)據(jù)實時監(jiān)測。該板塊在實現(xiàn)溯源數(shù)據(jù)上鏈同時,增強質(zhì)量監(jiān)測自動化程度。鏈上存儲與溯源板塊包含區(qū)塊鏈系統(tǒng)層證書、共識和存儲模塊,以及溯源業(yè)務(wù)層溯源模塊。證書、共識和存儲模塊構(gòu)成區(qū)塊鏈平臺,通過用戶注冊、信息同步和數(shù)據(jù)存儲功能實現(xiàn)上鏈數(shù)據(jù)存儲,為溯源業(yè)務(wù)提供真實、可信的數(shù)據(jù)支撐。
生食牡蠣加工HACCP質(zhì)量體系提出了3個關(guān)鍵控制點:牡蠣接收、牡蠣干法冷藏和牡蠣肉存儲。每個關(guān)鍵控制點包含危害分析(Hazard analysis, HA)、關(guān)鍵限值、監(jiān)控內(nèi)容、糾偏和驗證內(nèi)容等。
危害分析是對生食牡蠣加工過程中,各個關(guān)鍵控制點可能存在的顯著危害的評估與描述。關(guān)鍵限值、監(jiān)控內(nèi)容、糾偏和驗證為HACCP質(zhì)量體系核心,分別提供質(zhì)量合格閾值、質(zhì)量監(jiān)管內(nèi)容和信息真實性保證方法。
關(guān)鍵限值是質(zhì)量達標的標準,也是基于HACCP質(zhì)量監(jiān)控體系的重點監(jiān)控指標,利用這些指標可以在各關(guān)鍵控制點監(jiān)控該產(chǎn)品的真實質(zhì)量水準與規(guī)定的質(zhì)量標準之間的吻合度。首先對GB/T 19838—2005中3個關(guān)鍵控制點的關(guān)鍵限值指標進行提取,如表1所示。
表1 各關(guān)鍵控制點的關(guān)鍵限值指標
圍繞這些關(guān)鍵限值指標,根據(jù)監(jiān)控內(nèi)容設(shè)計合理的數(shù)據(jù)結(jié)構(gòu),記錄下各關(guān)鍵控制點的關(guān)鍵限值指標的定期觀測數(shù)據(jù),可以服務(wù)于質(zhì)量的監(jiān)控和質(zhì)量預(yù)警需求。以生食牡蠣接收關(guān)鍵控制點為例,可設(shè)置牡蠣批次標識BatchID、來自開放水域FromOpen、許可證Lisence、捕撈時間CatchTime、冷凍時間RefrigerateTime和監(jiān)管人Supervisor等字段,反映該關(guān)鍵控制點各關(guān)鍵限值指標。
糾偏和驗證內(nèi)容是HACCP質(zhì)量體系的重要部分,保證上傳頻率,記錄糾偏行為,可確保牡蠣質(zhì)量。通過批次標識BatchID字段對指定批次寫入糾偏驗證信息VerifyInfo和監(jiān)測時間CheckingTime,設(shè)置監(jiān)管人Supervisor字段實現(xiàn)責(zé)任究查。根據(jù)糾偏和驗證內(nèi)容的數(shù)據(jù)調(diào)節(jié)環(huán)境、丟棄未達標產(chǎn)品將大大節(jié)省人力物力。
對應(yīng)各關(guān)鍵控制點的關(guān)鍵限值指標(表1),設(shè)計3個關(guān)鍵控制點的數(shù)據(jù)結(jié)構(gòu),與糾偏和驗證內(nèi)容的數(shù)據(jù)結(jié)構(gòu)一同構(gòu)成生食牡蠣加工環(huán)節(jié)的數(shù)據(jù)結(jié)構(gòu),應(yīng)用于質(zhì)量溯源的業(yè)務(wù)流程,如圖2所示。
智能合約銜接底層區(qū)塊鏈平臺和上層業(yè)務(wù),支撐數(shù)據(jù)上鏈和讀取等眾多區(qū)塊鏈操作。
一方面,智能合約實現(xiàn)數(shù)據(jù)上鏈,上鏈后數(shù)據(jù)借助區(qū)塊鏈不可篡改和時間戳特性,成為真實且可溯信息。另一方面,智能合約本質(zhì)上屬于觸發(fā)式腳本,定義觸發(fā)事件和處理邏輯后,事件觸發(fā)時將執(zhí)行處理邏輯,進行自動化操作。這一特性保證智能合約調(diào)用時嚴格執(zhí)行定義操作。
就基于區(qū)塊鏈的生食牡蠣加工HACCP質(zhì)量溯源模型而言,智能合約實現(xiàn)2個功能:
(1)溯源數(shù)據(jù)上、下鏈。智能合約根據(jù)數(shù)據(jù)結(jié)構(gòu)提供數(shù)據(jù)上、下鏈接口,生食牡蠣加工信息一旦上鏈成為區(qū)塊內(nèi)容,將不可篡改且可溯。
(2)牡蠣質(zhì)量自動化判斷。生食牡蠣加工信息上鏈操作為觸發(fā)事件,數(shù)據(jù)內(nèi)容與關(guān)鍵限值比較為處理邏輯,一旦數(shù)據(jù)上鏈,智能合約將自動判斷上鏈生食牡蠣質(zhì)量是否滿足HACCP標準,嚴格控制產(chǎn)品質(zhì)量。
系統(tǒng)根據(jù)關(guān)鍵限值數(shù)據(jù)結(jié)構(gòu),設(shè)計了一個面向生食牡蠣HACCP的標準智能合約。智能合約讀取生食牡蠣數(shù)據(jù),與關(guān)鍵限值進行比較,得到質(zhì)量結(jié)果,并將輸入數(shù)據(jù)和質(zhì)量判斷結(jié)果一起寫入?yún)^(qū)塊鏈。標準智能合約算法如下:
輸入:牡蠣批次標識BatchID,冷藏庫溫度Temperature,溫度過高時長OverTime,運輸時間TransportTime,養(yǎng)殖信息BreedingInfo,監(jiān)管人Supervisor;功能:將(輸入數(shù)據(jù)args[]+溫度過高總時長tOvertime+質(zhì)量判斷結(jié)果message)上鏈。
1. function Contract( args[] ){
2. ifExit=Stub.GetState(BatchID) ∥查詢數(shù)據(jù)庫中是否存在BatchID記錄
3. if(ifExit == nil)
4.tOvertime=OverTime;
5. else
6.tOvertime=ifExit.tOvertime+OverTime;
7. If(BreedingInfo!=達標養(yǎng)殖信息BreedingStandard) ∥獲得生食牡蠣質(zhì)量監(jiān)測結(jié)果信息
8. message =“牡蠣來自未達標養(yǎng)殖廠家”;
9. If (TransportTime>達標運輸時間TransportStandard)
10. message=“牡蠣運輸時間過長”;
11. If (tOvertime>溫度過高達標時長TemStandard)
12. message =“牡蠣溫度過高總時長未達標”;
13.If (Temperature>達標冷藏庫溫度TemStandard)
14. message =“冷藏庫溫度過高”;
15.Stub.PutState (args[]+tOvertime+message) ∥將輸入以及監(jiān)測結(jié)果信息上鏈
}
通過標準智能合約,系統(tǒng)自動判斷食品質(zhì)量是否符合關(guān)鍵限值要求。牡蠣接收、牡蠣干法冷藏和牡蠣肉存儲3個關(guān)鍵控制點在標準智能合約基礎(chǔ)上,結(jié)合各自數(shù)據(jù)結(jié)構(gòu),選擇性繼承標準智能合約中的邏輯判斷,形成各關(guān)鍵控制點的智能合約,實現(xiàn)各關(guān)鍵控制點上不同的質(zhì)量監(jiān)控目標,如圖3所示。
3個智能合約記錄下基于HACCP的生食牡蠣加工溯源數(shù)據(jù),進行質(zhì)量判斷,將數(shù)據(jù)和質(zhì)量判斷結(jié)果寫入?yún)^(qū)塊后成為不可篡改的賬本信息。智能合約將HACCP質(zhì)量體系融入?yún)^(qū)塊鏈生食牡蠣溯源流程,提供質(zhì)量數(shù)據(jù)上鏈和自動化監(jiān)管工作。
系統(tǒng)底層采用聯(lián)盟鏈平臺Hyperledger Fabric,借助面向?qū)ο笮驼Z言Go語言開發(fā)智能合約。設(shè)計區(qū)塊鏈溯源系統(tǒng)底層架構(gòu)(圖4),通過應(yīng)用容器引擎技術(shù)Docker下載架構(gòu)中各模塊鏡像,實現(xiàn)一個通過智能合約上鏈數(shù)據(jù)的區(qū)塊鏈系統(tǒng)。
每個關(guān)鍵控制點相當(dāng)于一個組織,證書機構(gòu)服務(wù)器生成用戶證書,每個組織配置鍵值對數(shù)據(jù)庫CouchDB備份區(qū)塊鏈數(shù)據(jù),實現(xiàn)分布式存儲。
共識模塊由排序節(jié)點Kafka、管理節(jié)點Zookeeper和共識節(jié)點Orderer構(gòu)成。排序節(jié)點Kafka在聯(lián)盟鏈平臺Hyperledger Fabric中充當(dāng)消息隊列,將共識節(jié)點Orderer發(fā)來的交易進行排序;管理節(jié)點Zookeeper在共識中維護著排序節(jié)點Kafka的領(lǐng)導(dǎo)者和跟隨者的選舉流程,保證共識模塊正常運行;共識節(jié)點Orderer負責(zé)接收節(jié)點傳入的信息,將排序節(jié)點Kafka排序后的信息進行廣播。本系統(tǒng)布署4臺主機作為服務(wù)器,在實現(xiàn)分布式多機,不同宿主機能夠同步信息、共享數(shù)據(jù)的同時,具備較高穩(wěn)定性,減少了故障甚至崩潰現(xiàn)象。
本文系統(tǒng)提供溯源數(shù)據(jù)上下鏈和質(zhì)量判斷功能(圖5)。用戶經(jīng)前端寫入質(zhì)量數(shù)據(jù),智能合約讀取后根據(jù)數(shù)據(jù)結(jié)構(gòu)進行解析,隨后執(zhí)行邏輯,根據(jù)輸入的參數(shù)值判斷質(zhì)量。參數(shù)和得到的質(zhì)量判斷結(jié)果一起作為上鏈內(nèi)容,以JavaScript對象簡譜(JavaScript object notation,JSON)格式上傳至聯(lián)盟鏈平臺Hyperledger Fabric,經(jīng)共識模塊在全網(wǎng)達成共識后,以鏈數(shù)據(jù)結(jié)構(gòu)存入數(shù)據(jù)庫。
通過該溯源系統(tǒng)的客戶端可視化頁面(圖6)調(diào)用牡蠣干法冷藏智能合約,讀取“004”批次標識牡蠣歷史記錄,可查詢到該關(guān)鍵控制點的數(shù)據(jù)寫入記錄和質(zhì)量判斷結(jié)果。當(dāng)溫度過高總時長超過120 min,即超過HACCP質(zhì)量體系中的達標關(guān)鍵限值時,給出“未達標” 質(zhì)量判斷結(jié)果,說明質(zhì)量數(shù)據(jù)以及經(jīng)智能合約處理的質(zhì)量判斷結(jié)果上鏈和溯源均成功,體現(xiàn)了智能合約的數(shù)據(jù)讀寫和質(zhì)量判斷能力。
聯(lián)盟鏈平臺Hyperledger Fabric的區(qū)塊參數(shù)將在很大程度上影響系統(tǒng)整體性能。本系統(tǒng)將每個區(qū)塊的最大交易量設(shè)置為100筆、區(qū)塊最大打包時間間隔為5 s、每個區(qū)塊最大容量為32 MB,并采用性能測試軟件Caliper對反映系統(tǒng)性能的3個指標——交易吞吐量、平均交易成功率和平均交易延遲進行測試。
7輪試驗向系統(tǒng)發(fā)起共14 000筆交易,每輪的總交易量同為2 000筆,但每秒向系統(tǒng)并發(fā)的交易量不同,Caliper記錄下每輪試驗的每秒交易吞吐量和平均交易延遲,根據(jù)交易成功量計算出每輪試驗的交易成功率(圖7),最后可求得系統(tǒng)的平均交易成功率。
系統(tǒng)性能測試結(jié)果(圖7)表明:在并發(fā)交易量達到400筆/s前,系統(tǒng)吞吐量隨著并發(fā)交易量逐步增長,并在400筆/s交易時達到最大,隨后趨于穩(wěn)定,交易量保持在377筆/s左右;7輪試驗中,受網(wǎng)絡(luò)環(huán)境影響,兩輪出現(xiàn)失敗交易的情況,計算可得系統(tǒng)處理交易的平均成功率約為 99.96%;并發(fā)交易量為100、200、300、400筆/s時,處理每筆交易所需時間保持穩(wěn)定,平均交易延遲在0.5 s左右,隨后由于并發(fā)交易量過大,消息隊列堵塞,平均交易延遲明顯增長。
200筆/s的交易吞吐量可基本承載商業(yè)應(yīng)用[19],因此,該系統(tǒng)較為穩(wěn)定的377筆/s交易吞吐量,在性能上完全可應(yīng)用于生產(chǎn)實踐。
研究了基于區(qū)塊鏈的生食牡蠣加工HACCP質(zhì)量溯源模型及系統(tǒng)實現(xiàn),提出將HACCP質(zhì)量體系結(jié)合至區(qū)塊鏈溯源的模型架構(gòu)中。對引入的HACCP質(zhì)量體系進行規(guī)范提取,設(shè)計數(shù)據(jù)結(jié)構(gòu),記錄HACCP中關(guān)鍵質(zhì)量數(shù)據(jù),形成溯源鏈條;結(jié)合HACCP數(shù)據(jù)結(jié)構(gòu)設(shè)計智能合約;設(shè)計共識模塊拓撲結(jié)構(gòu),實現(xiàn)分布式數(shù)據(jù)同步。結(jié)果表明:基于HACCP質(zhì)量體系提取上鏈數(shù)據(jù),保證了質(zhì)量關(guān)鍵控制點業(yè)務(wù)數(shù)據(jù)的真實性,提高了上鏈數(shù)據(jù)的質(zhì)量安全相關(guān)度;基于HACCP質(zhì)量體系標準設(shè)計智能合約,對質(zhì)量進行自動判斷,在滿足質(zhì)量數(shù)據(jù)可溯源的同時,對溯源產(chǎn)品質(zhì)量進行自動化監(jiān)督,并實時記錄監(jiān)管結(jié)果;應(yīng)用聯(lián)盟鏈平臺Hyperledger Fabric實現(xiàn)了該模型的系統(tǒng)溯源,既保證了受監(jiān)管的關(guān)鍵質(zhì)量數(shù)據(jù)的可溯性,也保證了數(shù)據(jù)的可信度、不可篡改性,更好地保護了消費者的權(quán)益。性能測試表明,系統(tǒng)平均交易成功率為99.96%,交易吞吐量可相對平穩(wěn)地達到377筆/s,平均交易延遲為0.5 s,該系統(tǒng)具有的性能使其基本可應(yīng)用于實際生產(chǎn)。