周寅峰, 郁曹一, 梅年松, 張學(xué)軍, 李惠蓉, 張自峰
1(鹽城市質(zhì)量技術(shù)監(jiān)督綜合檢驗(yàn)檢測(cè)中心 電子電器檢驗(yàn)部, 鹽城 224056)
2(中國(guó)科學(xué)院 上海高等研究院, 上海 200120)
3(中國(guó)科學(xué)院大學(xué), 北京 100049)
黨的十八大以來(lái)對(duì)政府提出了更高的監(jiān)管職能要求, 一方面要求政府“放、管、服”, 減輕企業(yè)的負(fù)擔(dān),另一方面又要求提高對(duì)產(chǎn)品質(zhì)量的有效監(jiān)管, 實(shí)施質(zhì)量提升工程[1]. 近年來(lái), 經(jīng)濟(jì)的快速發(fā)展使得商品的種類(lèi)數(shù)目大大增加, 市場(chǎng)監(jiān)督抽查規(guī)模和抽查范圍不斷地?cái)U(kuò)大, 傳統(tǒng)依托紙質(zhì)傳輸信息的抽樣檢測(cè)模式已無(wú)法滿(mǎn)足日益增長(zhǎng)的數(shù)據(jù)量, 無(wú)法適應(yīng)社會(huì)發(fā)展的要求[2].
我國(guó)目前抽樣檢測(cè)行業(yè)整體的信息化程度偏低[3,4].目前國(guó)內(nèi)與抽樣檢測(cè)領(lǐng)域相近的質(zhì)量管理領(lǐng)域較好地應(yīng)用了計(jì)算機(jī)技術(shù)、感應(yīng)技術(shù)和數(shù)據(jù)分析技術(shù)等信息技術(shù)[5–7], 但在抽樣檢測(cè)行業(yè)信息化程度一直停留在較低的層次, 主要體現(xiàn)在: (1)抽檢效率不高, 檢測(cè)數(shù)據(jù)還沒(méi)有實(shí)現(xiàn)自動(dòng)采集處理, 普遍采用人工錄入; (2)數(shù)據(jù)源不可信, 采用人工錄入數(shù)據(jù), 出現(xiàn)人為錯(cuò)誤的可能性大大增加, 另外中心化的系統(tǒng)中管理員權(quán)限較大, 數(shù)據(jù)上傳后可以被系統(tǒng)管理員輕易地更改.
中國(guó)通信標(biāo)準(zhǔn)化協(xié)會(huì)于2019 年11 月發(fā)布了《“物聯(lián)網(wǎng)”+“區(qū)塊鏈”應(yīng)用與發(fā)展白皮書(shū)》指出可利用區(qū)塊鏈技術(shù)進(jìn)行數(shù)據(jù)存儲(chǔ)管理, 解決傳統(tǒng)數(shù)據(jù)存儲(chǔ)模式的中心化、易被攻擊篡改等問(wèn)題[8]. 本文提出了一種基于區(qū)塊鏈與物聯(lián)網(wǎng)技術(shù)相結(jié)合的抽樣檢測(cè)管理平臺(tái), 通過(guò)物聯(lián)網(wǎng)終端設(shè)備對(duì)過(guò)程進(jìn)行智能感知, 結(jié)合區(qū)塊鏈的可溯源, 不可篡改等特點(diǎn), 建立數(shù)據(jù)安全可信, 過(guò)程可監(jiān)控的高效抽樣檢測(cè)管理平臺(tái).
2008 年中本聰在《Bitcoin: A peer-to-peer electronic cash system》中描述了一個(gè)去中心化的數(shù)字貨幣系統(tǒng)以及實(shí)現(xiàn)它的密碼學(xué)細(xì)節(jié), 作為底層技術(shù)的區(qū)塊鏈開(kāi)始受到學(xué)術(shù)界和工業(yè)界的追捧. 區(qū)塊鏈作為分布式的公共賬本, 具有以下特征:
(1) 去中心化
區(qū)塊鏈技術(shù)是一個(gè)去中心化的信息存儲(chǔ)機(jī)制, 這一特性決定了區(qū)塊鏈?zhǔn)怯杀姸喙?jié)點(diǎn)共同保持和維護(hù)數(shù)據(jù)的. 與傳統(tǒng)的中心化防偽系統(tǒng)相比, 分布式的數(shù)據(jù)存儲(chǔ)使得數(shù)據(jù)更加安全[9], 即使發(fā)生單點(diǎn)故障, 通過(guò)其他節(jié)點(diǎn)保存的副本依舊能維持整個(gè)區(qū)塊鏈網(wǎng)絡(luò), 保證數(shù)據(jù)安全性的同時(shí)也保證了完整性.
(2) 不可篡改
數(shù)據(jù)一旦經(jīng)由各節(jié)點(diǎn)共識(shí)后上傳至區(qū)塊鏈網(wǎng)絡(luò),則無(wú)法被篡改[10]. 原因在于區(qū)塊內(nèi)數(shù)據(jù)以默克爾樹(shù)的形式存儲(chǔ)在區(qū)塊體內(nèi), 數(shù)據(jù)作為默克爾樹(shù)的葉節(jié)點(diǎn), 兩兩節(jié)點(diǎn)不停進(jìn)行哈希運(yùn)算直至只剩一個(gè)樹(shù)根節(jié)點(diǎn), 樹(shù)根節(jié)點(diǎn)保存在區(qū)塊頭中, 當(dāng)葉節(jié)點(diǎn)保存的數(shù)據(jù)被篡改時(shí), 樹(shù)根節(jié)點(diǎn)發(fā)生變化引起區(qū)塊頭的更改, 這就導(dǎo)致了整個(gè)區(qū)塊鏈的發(fā)生變化, 而篡改整個(gè)網(wǎng)絡(luò)要付出極大的代價(jià), 比如以POW 為共識(shí)算法的區(qū)塊鏈, 要掌握全網(wǎng)50%以上的算力才能修改整條區(qū)塊鏈.
(3) 去信任化
智能合約是一段運(yùn)行在區(qū)塊鏈系統(tǒng)中的代碼, 也是一套數(shù)字形式的承諾. 鏈上參與方制定智能合約, 當(dāng)合約中條件被觸發(fā)則合約自動(dòng)生效并執(zhí)行. 大大減少中間人為因素所導(dǎo)致的延遲履約甚至不履約, 加強(qiáng)誠(chéng)信合作.
區(qū)塊鏈不可篡改的特性可從根本上改變信任方式,解決數(shù)據(jù)的信任和安全問(wèn)題. 區(qū)塊鏈包含3 大分支, 分別是公有鏈、私有鏈和聯(lián)盟鏈. 公有鏈項(xiàng)所有節(jié)點(diǎn)開(kāi)放, 加入公有鏈的各個(gè)節(jié)點(diǎn)都能參與共識(shí), 但這會(huì)導(dǎo)致Sybil 攻擊, 攻擊者大量創(chuàng)建節(jié)點(diǎn)干涉整個(gè)網(wǎng)絡(luò)的共識(shí),增加維護(hù)系統(tǒng)的開(kāi)銷(xiāo)[11]; 私有鏈僅對(duì)個(gè)人或單獨(dú)的實(shí)體開(kāi)放, 不具備面向公共的能力; 聯(lián)盟鏈采用多中心的方式, 數(shù)據(jù)僅在聯(lián)盟中的機(jī)構(gòu)極其用戶(hù)中傳遞, 相比公有鏈的海量節(jié)點(diǎn), 聯(lián)盟鏈中節(jié)點(diǎn)較少, 可以較快地達(dá)成共識(shí), 通過(guò)預(yù)先設(shè)定參與節(jié)點(diǎn)、權(quán)限控制等方式降低出現(xiàn)Sybil 攻擊的可能. 同時(shí)聯(lián)盟鏈具備多通道的特點(diǎn), 可將互相信任并可呈現(xiàn)敏感數(shù)據(jù)信息的節(jié)點(diǎn)加入同一通道中, 實(shí)現(xiàn)隱私保護(hù)[12], 種種特點(diǎn)使得聯(lián)盟鏈更適合本系統(tǒng).
物聯(lián)網(wǎng)通過(guò)嵌入式計(jì)算、嵌入式設(shè)備、通信技術(shù)、應(yīng)用程序等基礎(chǔ)技術(shù)使得普通設(shè)備轉(zhuǎn)變?yōu)橹悄茉O(shè)備, 實(shí)現(xiàn)設(shè)備與設(shè)備之間、設(shè)備與人之間信息交互[13].物聯(lián)網(wǎng)大致可以分為感知層、網(wǎng)絡(luò)層與應(yīng)用層. RFID標(biāo)簽、溫濕度傳感器、全球定位系統(tǒng)等各類(lèi)物聯(lián)網(wǎng)終端設(shè)備組成的感知層實(shí)現(xiàn)對(duì)外界的智能感知, 采集數(shù)據(jù)[14]. 然后使用網(wǎng)絡(luò)層中各類(lèi)通信技術(shù)將感知層采集到的數(shù)據(jù)傳輸?shù)綉?yīng)用層. 應(yīng)用層運(yùn)用大數(shù)據(jù)、數(shù)據(jù)挖掘等技術(shù), 對(duì)海量的感知數(shù)據(jù)和信息進(jìn)行分析并處理,實(shí)現(xiàn)智能化的決策和控制[15].
物聯(lián)網(wǎng)正將各行各業(yè)重塑為以數(shù)據(jù)分析為導(dǎo)向來(lái)制定決策的智能行業(yè), 醫(yī)療、旅游業(yè)、農(nóng)業(yè)等實(shí)時(shí)數(shù)據(jù)的獲取與分析使得各行各業(yè)的從業(yè)人員及時(shí)有效地制定方案. 同時(shí)物聯(lián)網(wǎng)打破一個(gè)又一個(gè)信息孤島, 以智慧城市為例, 城市管理人員和市民可以獲取大量城市環(huán)境的實(shí)時(shí)信息, 以此為基礎(chǔ)綜合考量相關(guān)數(shù)據(jù)后采取行動(dòng).
自物聯(lián)網(wǎng)概念提出以來(lái), 物聯(lián)網(wǎng)產(chǎn)業(yè)的迅猛發(fā)展使得越來(lái)越多的物聯(lián)網(wǎng)設(shè)備接入到整個(gè)網(wǎng)絡(luò)中, 預(yù)計(jì)2025 年連接數(shù)可能達(dá)到1000 億, 但中心化的數(shù)據(jù)處理方式使得物聯(lián)網(wǎng)發(fā)展到了瓶頸, 萬(wàn)物互聯(lián)不僅帶來(lái)了海量的數(shù)據(jù)還帶來(lái)了網(wǎng)間協(xié)作、隱私與安全、信任機(jī)制等挑戰(zhàn), 而區(qū)塊鏈去中心化、不可篡改、可溯源等特性, 為解決物聯(lián)網(wǎng)面臨的上述瓶頸和挑戰(zhàn)提供了新的思路, 成為學(xué)術(shù)界和工業(yè)界的焦點(diǎn).
國(guó)內(nèi)外對(duì)于區(qū)塊鏈物聯(lián)網(wǎng)相結(jié)合的研究大致分為兩類(lèi). 第一類(lèi)研究將區(qū)塊鏈與物聯(lián)網(wǎng)相融合, 解決物聯(lián)網(wǎng)發(fā)展面臨的問(wèn)題, 如海量物聯(lián)網(wǎng)設(shè)備的管理、產(chǎn)生的數(shù)據(jù)如何存儲(chǔ)、不同物聯(lián)網(wǎng)設(shè)備怎樣交互數(shù)據(jù)等,現(xiàn)行物聯(lián)網(wǎng)架構(gòu)所采用的中心化管理方式無(wú)法有效地處理這些問(wèn)題. Fakhri 等[16]提出一種基于區(qū)塊鏈的物聯(lián)網(wǎng)設(shè)備信息交互方案, 將區(qū)塊鏈作為信息交互平臺(tái)實(shí)現(xiàn)不同物聯(lián)網(wǎng)設(shè)備的安全交互. Quang 等[17]在研究了海量物聯(lián)網(wǎng)的管理方式與存在的問(wèn)題后, 提出了基于區(qū)塊鏈的可擴(kuò)展物聯(lián)網(wǎng)架構(gòu)以管理大規(guī)模物聯(lián)網(wǎng)設(shè)備, 結(jié)合智能合約實(shí)現(xiàn)物聯(lián)網(wǎng)設(shè)備的重配置. Wang等[18]提出了一種基于分層存儲(chǔ)的區(qū)塊鏈工業(yè)物聯(lián)網(wǎng)架構(gòu)以解決物聯(lián)網(wǎng)數(shù)據(jù)存儲(chǔ)問(wèn)題, 通過(guò)區(qū)塊鏈連接器與云連接器構(gòu)建分層存儲(chǔ)架構(gòu)將大部分區(qū)塊數(shù)據(jù)存儲(chǔ)在云中, 而將最新的區(qū)塊信息存儲(chǔ)在工業(yè)IoT 網(wǎng)絡(luò)中, 實(shí)現(xiàn)了在物聯(lián)網(wǎng)設(shè)備中管理與存儲(chǔ)區(qū)塊鏈. Pavithran 等[19]提出了一種能應(yīng)用于物聯(lián)網(wǎng)的基于分層身份加密(HIBE)的保護(hù)隱私區(qū)塊鏈架構(gòu), 解決了現(xiàn)存的區(qū)塊鏈結(jié)構(gòu)如比特幣無(wú)法直接融合進(jìn)物聯(lián)網(wǎng)中, 該方案同時(shí)能保證隱私安全.
第二類(lèi)研究偏向應(yīng)用領(lǐng)域, 將區(qū)塊鏈技術(shù)與物聯(lián)網(wǎng)技術(shù)相結(jié)合, 取長(zhǎng)補(bǔ)短, 解決實(shí)際生產(chǎn)生活中存在的問(wèn)題. 國(guó)內(nèi)外多數(shù)研究人員將目光放在供應(yīng)鏈上, 將RFID 芯片嵌入供應(yīng)鏈生產(chǎn)、倉(cāng)儲(chǔ)、運(yùn)輸、銷(xiāo)售的全流程中, 隨時(shí)獲取當(dāng)前的數(shù)據(jù)并監(jiān)控全流程, 同時(shí)將數(shù)據(jù)保存在區(qū)塊鏈中以保證數(shù)據(jù)的可信可溯源. Mo 等[20]選擇服裝行業(yè)作為應(yīng)用場(chǎng)景, Sun 等[21]選擇白酒行業(yè),Mondal 等[22]以食品供應(yīng)鏈為應(yīng)用場(chǎng)景, 結(jié)合上述方案實(shí)現(xiàn)生產(chǎn)、運(yùn)輸、倉(cāng)儲(chǔ)和銷(xiāo)售的全流程透明化管理,保證生產(chǎn)的物品都真實(shí)可靠. 但供應(yīng)鏈監(jiān)督不只是廠商的責(zé)任, 需要更有效的監(jiān)管, 且在一些特定的供應(yīng)鏈中, 如海鮮、農(nóng)產(chǎn)品等食品供應(yīng)鏈對(duì)溫度環(huán)境的要求更為苛刻, 所以陳飛等[23]在設(shè)計(jì)區(qū)塊鏈時(shí)引入食品藥品監(jiān)督局節(jié)點(diǎn), 實(shí)現(xiàn)了數(shù)據(jù)變更服務(wù)和食品召回功能.消費(fèi)者不僅能查詢(xún)食品的全流程溯源信息, 還能在該溯源系統(tǒng)中進(jìn)行維權(quán)投訴. 張森等[12]重點(diǎn)關(guān)注冷鏈運(yùn)輸時(shí)的溫度信息, 提高了冷鏈物流行業(yè)的可信性和數(shù)據(jù)的安全性. 此外, Malik 等[24]引入信譽(yù)系統(tǒng)參與整個(gè)供應(yīng)鏈的管理, 再通過(guò)智能合約整合資源, 提高整個(gè)供應(yīng)鏈的效率.
現(xiàn)場(chǎng)抽樣環(huán)節(jié)為抽樣檢測(cè)流程中的先序環(huán)節(jié), 具體流程為: 企業(yè)抽樣-出證索證-現(xiàn)場(chǎng)取樣-現(xiàn)場(chǎng)封樣-填寫(xiě)表單-簽字蓋章-樣品運(yùn)輸. 在現(xiàn)場(chǎng)抽樣環(huán)節(jié)需要追溯的信息包括: 包含企業(yè)廠牌、廠名的照片; 抽樣人員的檢驗(yàn)員證、企業(yè)營(yíng)業(yè)執(zhí)照或組織機(jī)構(gòu)代碼證等證書(shū);抽樣物品的詳細(xì)信息; 抽樣單位和檢驗(yàn)員信息. 在實(shí)際過(guò)程中, 由于沿用紙作為信息傳輸媒介, 不僅效率低下,而且容易在傳遞過(guò)程中丟失. 使用NFC 標(biāo)簽與區(qū)塊鏈技術(shù)相結(jié)合, 在移動(dòng)端錄入抽樣單信息的同時(shí), NFC 芯片關(guān)聯(lián)樣品, 最后將所有需要追溯的數(shù)據(jù)上傳至數(shù)據(jù)庫(kù)與區(qū)塊鏈. 在現(xiàn)場(chǎng)抽樣環(huán)節(jié)實(shí)現(xiàn)數(shù)據(jù)來(lái)源全部可信,可追溯, 提高現(xiàn)場(chǎng)抽樣的效率. 其現(xiàn)場(chǎng)抽樣過(guò)程圖如圖1 所示.
圖1 現(xiàn)場(chǎng)抽樣過(guò)程圖
抽樣完成后, 樣品會(huì)送到當(dāng)?shù)貦z驗(yàn)檢測(cè)機(jī)構(gòu), 分析樣品的成分、結(jié)構(gòu)和性能等. 子樣拆分是檢驗(yàn)前的必要環(huán)節(jié), 樣品檢驗(yàn)除了對(duì)樣品整體進(jìn)行評(píng)估檢測(cè)外, 樣品的各個(gè)組成部分也需要詳細(xì)的分析. 因此樣品檢驗(yàn)前, 將樣品的各個(gè)部分依次拆分并通過(guò)移動(dòng)端關(guān)聯(lián)標(biāo)簽, 然后送往不同的檢驗(yàn)的部門(mén). 各部門(mén)收到子樣后讀取子樣的NFC 標(biāo)簽, 再讀取檢驗(yàn)設(shè)備的標(biāo)簽, 進(jìn)入檢驗(yàn)記錄的界面. 檢驗(yàn)完成后在該頁(yè)面上填寫(xiě)檢驗(yàn)項(xiàng)目和檢驗(yàn)結(jié)構(gòu). 其子樣拆分與檢驗(yàn)過(guò)程圖如圖2、圖3.
圖2 子樣拆分過(guò)程圖
圖3 檢驗(yàn)過(guò)程圖
人員管理在市場(chǎng)監(jiān)督過(guò)程中是很重要的一環(huán). 移動(dòng)端: 現(xiàn)場(chǎng)抽樣, 子樣拆分, 檢驗(yàn)記錄和設(shè)備管理, 各個(gè)環(huán)節(jié)需要安排不同的人員進(jìn)行操作, 所以要對(duì)每個(gè)人的權(quán)限進(jìn)行區(qū)分. 在PC 端, 所有人員都可以登錄查看檢驗(yàn)檢測(cè)的進(jìn)度和結(jié)果, 但只有管理員可以審核檢測(cè)結(jié)果, 也可以對(duì)不同人員的權(quán)限進(jìn)行授權(quán). 人員管理細(xì)節(jié)分工如圖4 所示.
圖4 人員管理分工圖
各子樣送到不同部門(mén)檢測(cè)前, 為了保證獲取到的檢驗(yàn)數(shù)據(jù)真實(shí)可信, 需要掃描檢驗(yàn)設(shè)備的NFC 芯片獲取儀器的基本信息. 故在儀器正式投入使用前, 需要錄入儀器的基本信息: 名稱(chēng), 規(guī)格, 測(cè)量范圍等, 同時(shí)關(guān)聯(lián)到NFC 芯片, 未關(guān)聯(lián)的設(shè)備不能用于檢測(cè), 保證檢測(cè)的結(jié)果可追溯. 設(shè)備管理過(guò)程圖如圖5 所示.
圖5 設(shè)備管理過(guò)程圖
區(qū)塊鏈網(wǎng)絡(luò)的特點(diǎn)決定了無(wú)法保存大規(guī)模數(shù)據(jù),然而整個(gè)抽樣檢測(cè)流程中包含抽樣單、詳細(xì)樣品信息、子樣信息、檢驗(yàn)結(jié)果等大量需要存儲(chǔ)的數(shù)據(jù). 全部存儲(chǔ)在區(qū)塊鏈中不僅影響上鏈速度, 而且較高的硬件要求增加了運(yùn)維成本. 所以在本文中, 將采用區(qū)塊鏈與傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)相結(jié)合的方式[23], 當(dāng)各節(jié)點(diǎn)采集完數(shù)據(jù)后, 先將數(shù)據(jù)經(jīng)由SHA256 算法[25]提取數(shù)據(jù)摘要并存入?yún)^(qū)塊鏈網(wǎng)絡(luò), 上鏈成功后區(qū)塊鏈網(wǎng)絡(luò)返回一個(gè)哈希值, 區(qū)塊鏈網(wǎng)絡(luò)中保存該哈希值與數(shù)據(jù)摘要, 數(shù)據(jù)庫(kù)中則存儲(chǔ)完整的數(shù)據(jù)和數(shù)據(jù)摘要上鏈后返回的哈希值, 數(shù)據(jù)庫(kù)交由市場(chǎng)監(jiān)督局節(jié)點(diǎn)進(jìn)行維護(hù), 其余節(jié)點(diǎn)可以通過(guò)區(qū)塊鏈中的哈希值在數(shù)據(jù)庫(kù)中進(jìn)行檢索來(lái)獲取完整數(shù)據(jù), 同時(shí)根據(jù)數(shù)據(jù)摘要來(lái)判斷數(shù)據(jù)庫(kù)中的數(shù)據(jù)是否被篡改. 雙存儲(chǔ)結(jié)構(gòu)不僅能提高整個(gè)系統(tǒng)的運(yùn)行效率, 而且解決了區(qū)塊鏈存儲(chǔ)數(shù)據(jù)困難的問(wèn)題. 存儲(chǔ)結(jié)構(gòu)如圖6 所示.
圖6 存儲(chǔ)架構(gòu)圖
抽樣檢測(cè)主要由現(xiàn)場(chǎng)抽樣部門(mén)、子樣拆分部門(mén)、檢驗(yàn)檢測(cè)部門(mén)和審核結(jié)果的市場(chǎng)監(jiān)督局構(gòu)成, 每次抽樣檢測(cè)需要四方合作共同完成, 且保證數(shù)據(jù)可信可追溯. 本系統(tǒng)使用Hyperledger Fabric 搭建區(qū)塊鏈網(wǎng)絡(luò),Hyperledger Fabric 是Linux 基金會(huì)下應(yīng)用最廣泛的開(kāi)源聯(lián)盟鏈項(xiàng)目, 其模塊化架構(gòu)、高度保密性等特點(diǎn)使得用戶(hù)能夠快速搭建聯(lián)盟鏈網(wǎng)絡(luò)[26], 本系統(tǒng)的網(wǎng)絡(luò)結(jié)構(gòu)如圖7 所示.
圖7 Fabric 網(wǎng)絡(luò)結(jié)構(gòu)
本平臺(tái)區(qū)塊鏈網(wǎng)絡(luò)設(shè)計(jì)中, 以抽樣檢測(cè)的流程作為劃分節(jié)點(diǎn)方式, 以地級(jí)市為例, 各區(qū)縣檢驗(yàn)檢測(cè)中心以環(huán)節(jié)劃分為現(xiàn)場(chǎng)抽樣、子樣拆分與檢驗(yàn)檢測(cè)3 個(gè)部門(mén), 市場(chǎng)監(jiān)督管理局除了劃分以上3 個(gè)部門(mén)外, 單獨(dú)設(shè)置市場(chǎng)監(jiān)督局節(jié)點(diǎn), 相同部門(mén)構(gòu)成1 個(gè)組織, 市場(chǎng)監(jiān)督局節(jié)點(diǎn)單獨(dú)構(gòu)成1 個(gè)組織審核前3 環(huán)節(jié)產(chǎn)生的數(shù)據(jù).現(xiàn)場(chǎng)抽樣、子樣拆分、檢驗(yàn)檢測(cè)與市場(chǎng)監(jiān)督局4 個(gè)組織處于相互對(duì)等的地位, 四方共同參與聯(lián)盟鏈的管理.每個(gè)組織內(nèi)包含多個(gè)Peer, 分別承擔(dān)背書(shū)、與排序服務(wù)節(jié)點(diǎn)以及其他組織交互的任務(wù), 但所有節(jié)點(diǎn)都需要作為記賬節(jié)點(diǎn)維護(hù)整個(gè)賬本. 每個(gè)組織都有一個(gè)為客戶(hù)端生成證書(shū)的Fabric-CA 服務(wù)器, 客戶(hù)端只有向CA注冊(cè)后才能通過(guò)SDK 向Peer 發(fā)起交易. 本系統(tǒng)選擇具有高吞吐量易擴(kuò)展的Kafka[27]作為共識(shí)機(jī)制, 以提高系統(tǒng)效率.
經(jīng)過(guò)第2 節(jié)的抽樣檢測(cè)方案設(shè)計(jì)與第3.1 節(jié)、第3.2 節(jié)的存儲(chǔ)結(jié)構(gòu)與區(qū)塊鏈網(wǎng)絡(luò)設(shè)計(jì), 系統(tǒng)完整框架如圖8 所示.
圖8 系統(tǒng)完整架構(gòu)
引入關(guān)系型數(shù)據(jù)庫(kù)后解決了區(qū)塊鏈存儲(chǔ)數(shù)據(jù)困難的問(wèn)題, 將完整數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中, 區(qū)塊鏈網(wǎng)絡(luò)只存儲(chǔ)數(shù)據(jù)摘要. 數(shù)據(jù)庫(kù)由市場(chǎng)監(jiān)督管理局節(jié)點(diǎn)維護(hù), 區(qū)塊鏈網(wǎng)絡(luò)則由各功能對(duì)應(yīng)的節(jié)點(diǎn)和市場(chǎng)監(jiān)督管理局節(jié)點(diǎn)一起維護(hù).
現(xiàn)場(chǎng)抽樣、子樣拆分、檢驗(yàn)中心和市場(chǎng)監(jiān)督局節(jié)點(diǎn)信息錄入過(guò)程相同, 以現(xiàn)場(chǎng)抽樣為例, 將現(xiàn)場(chǎng)抽樣環(huán)節(jié)采集到的數(shù)據(jù)打包后, 先經(jīng)過(guò)SHA256 算法獲取該數(shù)據(jù)包的數(shù)據(jù)摘要并發(fā)送到區(qū)塊鏈網(wǎng)絡(luò), 上鏈成功后返回一條哈希值. 此時(shí)將返回的哈希值與打包完的數(shù)據(jù)同屬存入數(shù)據(jù)庫(kù)中. 而市場(chǎng)監(jiān)督局節(jié)點(diǎn)除了錄入信息外, 還負(fù)責(zé)處理其余節(jié)點(diǎn)更正數(shù)據(jù)的請(qǐng)求與維護(hù)數(shù)據(jù)庫(kù). 前3 個(gè)環(huán)節(jié)中, 由于數(shù)據(jù)錄入量較大, 存在操作失誤或其他因素導(dǎo)致的信息錄入錯(cuò)誤, 但因?yàn)閰^(qū)塊鏈中的數(shù)據(jù)無(wú)法隨意更改. 所以在本系統(tǒng)框架中將更改數(shù)據(jù)的權(quán)限給予市場(chǎng)監(jiān)督局節(jié)點(diǎn). 若前3 個(gè)環(huán)節(jié)中發(fā)現(xiàn)錄入信息錯(cuò)誤, 可以向市場(chǎng)監(jiān)督局節(jié)點(diǎn)提交更改信息請(qǐng)求, 節(jié)點(diǎn)審核通過(guò)后由它將更正后的信息上傳至區(qū)塊鏈網(wǎng)絡(luò)與數(shù)據(jù)庫(kù).
本方案基于區(qū)塊鏈與物聯(lián)網(wǎng)技術(shù), 將NFC 芯片應(yīng)用于抽樣檢測(cè)流程中的各個(gè)方面, 從源端采集數(shù)據(jù), 保證了數(shù)據(jù)來(lái)源可信, 數(shù)據(jù)可追溯. 同時(shí)減少傳統(tǒng)抽樣檢測(cè)過(guò)程中人工錄入的次數(shù), 不僅節(jié)約大量的人力成本, 而且大大降低了出現(xiàn)人為錯(cuò)誤的可能, 檢驗(yàn)結(jié)果審核完成后, 相關(guān)人員可直接下載檢驗(yàn)報(bào)告, 提高全過(guò)程的效率.
抽樣檢測(cè)平臺(tái)是為了保證各環(huán)節(jié)數(shù)據(jù)可靠, 可追溯, 按照抽樣檢測(cè)流程設(shè)計(jì)滿(mǎn)足需求的業(yè)務(wù)模塊. 抽樣檢測(cè)平臺(tái)的業(yè)務(wù)模塊設(shè)計(jì)如圖9 所示, 分為兩大交互端, 即移動(dòng)端和Web 端, 每端各有4 個(gè)功能模塊, 移動(dòng)端為: 現(xiàn)場(chǎng)抽樣模塊、子樣拆分模塊、檢驗(yàn)記錄模塊和設(shè)備管理模塊; Web 端為: 樣品管理模塊、檢驗(yàn)結(jié)果模塊、人員管理模塊、設(shè)備管理模塊. 每個(gè)模塊都具備各自的功能, 以下對(duì)各模塊進(jìn)行簡(jiǎn)要介紹.
圖9 業(yè)務(wù)模塊圖
現(xiàn)場(chǎng)抽樣模塊主要實(shí)現(xiàn)現(xiàn)場(chǎng)抽樣環(huán)節(jié)產(chǎn)生的信息錄入同時(shí)將抽樣單關(guān)聯(lián)NFC 標(biāo)簽, 具體為帶有企業(yè)廠牌廠名的照片、抽樣人員的檢驗(yàn)員證、企業(yè)營(yíng)業(yè)執(zhí)照或組織機(jī)構(gòu)代碼證等能夠證明單位資質(zhì)的證書(shū)、取樣和封樣時(shí)的照片、抽樣單信息、現(xiàn)場(chǎng)打印后簽字蓋章的抽樣單照片等信息進(jìn)行錄入, 錄入抽樣單信息后, 需要將該抽樣單與NFC 標(biāo)簽關(guān)聯(lián).
子樣拆封模塊主要為拆分后的樣品子樣關(guān)聯(lián)NFC標(biāo)簽, 并將子樣名稱(chēng)和NFC 標(biāo)簽編號(hào)錄入平臺(tái), 便于檢驗(yàn)部門(mén)后續(xù)對(duì)樣品進(jìn)行詳細(xì)分析.
檢驗(yàn)記錄模塊主要是各檢驗(yàn)人員收到樣品或子樣后, 對(duì)其進(jìn)行檢驗(yàn)和記錄結(jié)果, 將結(jié)果錄入系統(tǒng)中, 檢驗(yàn)人員需要依次掃描儀器和樣品的標(biāo)簽后, 才能進(jìn)入檢驗(yàn)記錄界面, 以保證樣品的檢驗(yàn)過(guò)程都可追溯.
樣品管理模塊主要對(duì)現(xiàn)場(chǎng)抽樣后的樣品進(jìn)行管理,包括對(duì)樣品信息的查詢(xún)、修改及刪除. 在現(xiàn)場(chǎng)抽樣環(huán)節(jié)因?yàn)槭д`造成錄入信息有誤, 可在這個(gè)環(huán)節(jié)對(duì)錯(cuò)誤信息進(jìn)行修改或刪除.
檢驗(yàn)結(jié)果管理模塊主要提供給抽樣檢測(cè)管理人員審核流程是否完備, 同時(shí)上傳報(bào)告附件, 報(bào)告附件包括檢驗(yàn)時(shí)的紙質(zhì)文件, 之后相應(yīng)人員可以下載檢驗(yàn)報(bào)告.
人員管理模塊主要是對(duì)各環(huán)節(jié)的工作人員進(jìn)行管理與授權(quán), Web 端管理員創(chuàng)建各環(huán)節(jié)的工作人員, 并給予權(quán)限, 各環(huán)節(jié)人員只對(duì)各自的環(huán)節(jié)負(fù)責(zé), 確保整個(gè)過(guò)程獲取的數(shù)據(jù)在可追溯的同時(shí)可信可靠.
移動(dòng)端與Web 端的設(shè)備管理模塊主要是對(duì)檢驗(yàn)設(shè)備關(guān)聯(lián)NFC 標(biāo)簽. 新設(shè)備投入使用前需要管理員在Web 端錄入設(shè)備信息, 然后設(shè)備管理員通過(guò)移動(dòng)端將設(shè)備與NFC 標(biāo)簽關(guān)聯(lián), 關(guān)聯(lián)后設(shè)備才能投入使用保證所有檢驗(yàn)的所有細(xì)節(jié)都已被追溯. 同Web 端還提供查詢(xún)、修改和刪除功能, 當(dāng)設(shè)備出現(xiàn)問(wèn)題時(shí), 能立即將設(shè)備移除允許使用的序列.
(1)發(fā)布修訂請(qǐng)求
各組織將數(shù)據(jù)保存到數(shù)據(jù)庫(kù)前, 需要先上傳至區(qū)塊鏈網(wǎng)絡(luò), 然而區(qū)塊鏈的特點(diǎn)決定了數(shù)據(jù)一經(jīng)上傳無(wú)法修改. 本系統(tǒng)將修改請(qǐng)求通過(guò)智能合約實(shí)現(xiàn), 當(dāng)各個(gè)組織發(fā)現(xiàn)錄入的數(shù)據(jù)有誤時(shí), 調(diào)用該合約請(qǐng)求市場(chǎng)監(jiān)督局節(jié)點(diǎn)重新將數(shù)據(jù)上傳至區(qū)塊鏈并更新數(shù)據(jù)庫(kù).
修訂請(qǐng)求包括修訂編號(hào)(樣品編號(hào)+發(fā)起組織編號(hào))、發(fā)起日期、修改名稱(chēng)、修改內(nèi)容、監(jiān)督局節(jié)點(diǎn)確認(rèn)信息、該請(qǐng)求當(dāng)前狀態(tài). 將樣品編號(hào)與發(fā)起組織編號(hào)合并為一個(gè)字段后作為key, 其余字段作為value,具體結(jié)構(gòu)如表1 所示.
修訂請(qǐng)求合約的生命周期如圖10 所示. 當(dāng)發(fā)布請(qǐng)求時(shí), 先將Confirm 值為false, Current_State 字段置為Issued. 發(fā)布修訂請(qǐng)求的算法如算法1.
算法1. 發(fā)布修訂請(qǐng)求輸入: 由樣品編號(hào)與發(fā)起組織編號(hào)組成的Issue_ID、合約發(fā)布的當(dāng)前時(shí)間Issue_Time、需要修改的字段Ex_Name、字段對(duì)應(yīng)的修改內(nèi)容Ex_Content輸出: 請(qǐng)求發(fā)布成功返回成功標(biāo)記, 發(fā)布失敗返回錯(cuò)誤信息1. Function addOrder(Issue_ID, Issue_Time, Ex_Name, Ex_Content)2. 輸入string 類(lèi)型的參數(shù)實(shí)例化結(jié)構(gòu)體Order 3. orderQuery = GetState(Order. Issue_ID+ Order. Issue_Time)4. If orderQuery 不為空 then 5. Return 請(qǐng)求已存在, 返回錯(cuò)誤信息6. End if 7. orderkey = CreateCompositeKey("Order", []string{Order.Issue_ID,Order.Issue_Time})8. orderJSONasBytes, err = json.Marshal(Order)9. err = PutState(orderkey, orderJSONasBytes)10. If err != nil then 11. Return 請(qǐng)求提交錯(cuò)誤, 返回錯(cuò)誤信息12. Else 13. Return 請(qǐng)求提交完成14. End if
字段描述Issue_ID修訂編號(hào)Issue_Time發(fā)布時(shí)間Ex_Name修改字段Ex_Content修改內(nèi)容Confirm監(jiān)督局節(jié)點(diǎn)是否同意Is_State修訂請(qǐng)求狀態(tài)
圖10 合約狀態(tài)圖
(2)審核修訂請(qǐng)求
市場(chǎng)監(jiān)督局節(jié)點(diǎn)收到請(qǐng)求后, 核準(zhǔn)請(qǐng)求的內(nèi)容, 如果同意修改, 將Confirm 字段置為true, 不同意修改就保持false, 同時(shí)修訂請(qǐng)求進(jìn)入Handled 狀態(tài).
審核修訂請(qǐng)求算法如算法2.
算法2. 審核修訂請(qǐng)求輸入: 由樣品編號(hào)與發(fā)起組織編號(hào)組成的Issue_ID、合約發(fā)布的當(dāng)前時(shí)間Issue_Time、市場(chǎng)監(jiān)督局節(jié)點(diǎn)同意與否Confirm輸出: 審核通過(guò)重新將數(shù)據(jù)打包上鏈, 修改數(shù)據(jù)庫(kù)內(nèi)容, 審核不通過(guò)返回失敗信息1. Function updataOrder(Issue_ID, Issue_Time, Confirm)
2. orderAsBytes = GetStateByPartialCompositeKey ("Order", []string{Issue_ID, Issue_Time})3. If orderAsBytes == nil then 4. Return 請(qǐng)求不存在, 返回錯(cuò)誤信息5. End if 6. 將orderAsBytes 實(shí)例化為Order 7. Order.Confirm = Confirm 8. Order.Is_State = Handled 9. orderkey = CreateCompositeKey("Order", []string{Order.Issue_ID,Order.Issue_Time})10. orderJSONasBytes, err = json.Marshal(Order)11. err = PutState(orderkey, orderJSONasBytes)12. If err != nil then 13. Return 請(qǐng)求提交錯(cuò)誤, 返回錯(cuò)誤信息14. Else 15. Return 請(qǐng)求提交完成15. End if?
在詳細(xì)設(shè)計(jì)平臺(tái)功能模塊并編碼實(shí)現(xiàn)后, 對(duì)平臺(tái)的關(guān)鍵功能進(jìn)行了測(cè)試. 如圖11, 圖12 是對(duì)于智能合約執(zhí)行模塊的測(cè)試, 從發(fā)布合約到處理合約, 測(cè)試正常;圖13, 圖14 屬于Web 端的樣品管理與測(cè)試結(jié)果模塊,主要展示抽樣樣品的詳細(xì)信息與樣品所處的檢驗(yàn)環(huán)節(jié),測(cè)試正常; 圖15 為移動(dòng)端主要功能模塊, 經(jīng)測(cè)試可以正常使用.
圖11 合約請(qǐng)求通過(guò)
圖12 合約請(qǐng)求未通過(guò)
圖13 樣品管理界面
圖14 檢驗(yàn)信息界面
圖15 移動(dòng)端主要功能
本文分析了抽樣檢測(cè)平臺(tái)的現(xiàn)狀, 針對(duì)信息化程度不高導(dǎo)致的效率低下問(wèn)題以及現(xiàn)存的數(shù)據(jù)篡改與來(lái)源不可信問(wèn)題, 將物聯(lián)網(wǎng)技術(shù)與區(qū)塊鏈技術(shù)相結(jié)合, 設(shè)計(jì)并實(shí)現(xiàn)了一種基于區(qū)塊鏈物聯(lián)網(wǎng)的抽樣檢測(cè)平臺(tái).考慮到區(qū)塊鏈無(wú)法存儲(chǔ)大規(guī)模數(shù)據(jù), 引入傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù), 既解決了數(shù)據(jù)存儲(chǔ)問(wèn)題, 又利用區(qū)塊鏈的特點(diǎn)實(shí)現(xiàn)了數(shù)據(jù)的不可篡改. 物聯(lián)網(wǎng)終端設(shè)備對(duì)于過(guò)程的智能感知使得大部分資料不再需要手工摘抄或后補(bǔ)錄入, 極大地減少了人為錯(cuò)誤出現(xiàn)的頻率. 即使出現(xiàn)錄入數(shù)據(jù)錯(cuò)誤, 通過(guò)設(shè)計(jì)的智能合約發(fā)送修改請(qǐng)求, 審核通過(guò)后數(shù)據(jù)再度上鏈, 兼顧區(qū)塊鏈不可篡改的同時(shí)保證了數(shù)據(jù)的正確性. 人員權(quán)限管理與設(shè)備管理使得檢驗(yàn)結(jié)果的可信程度進(jìn)一步提高. 區(qū)塊鏈與物聯(lián)網(wǎng)技術(shù)的結(jié)合, 提高了抽樣檢測(cè)工作的效率, 降低了人為錯(cuò)誤出現(xiàn)的可能, 也使得檢測(cè)結(jié)果更令人信服.