張 斐,余建群,張澤建,吳 迅
(湖北物資流通技術(shù)研究所,湖北 襄陽 441002)
國家標準《物流術(shù)語》對冷鏈物流的定義是保持新鮮食品及冷凍食品的品質(zhì),使其在從生產(chǎn)到消費的過程中,始終處于低溫狀態(tài)的配有專門設備的物流網(wǎng)絡。我國冷鏈物流行業(yè)的痛點一是運輸過程不透明,物流企業(yè)為了降低成本,可能存在運輸過程中制冷機關(guān)閉、冷鏈在貨物運輸或裝卸過程中斷裂,或者巡查間隔時間不能保證等問題;二是數(shù)據(jù)存儲不透明,現(xiàn)有溫度數(shù)據(jù)大多數(shù)存儲在承運方和倉儲企業(yè)的中心化數(shù)據(jù)庫中,貨主獲取數(shù)據(jù)不方便,中心式數(shù)據(jù)庫記錄方式的可靠性差,重要數(shù)據(jù)需要冗余備份。
冷鏈物流集裝箱是冷鏈中普遍使用的器具,其裝載的貨物大致可分為兩類,一類為冷凍貨物,包括魚蝦牛豬等肉類貨物,溫度設定為-18℃及以下;另一類為冷藏貨物,包括柑橘類水果、落葉類水果、蔬菜類和其他冷藏貨物(藥品、化學品等)。集裝箱運輸需要合適和精準的溫濕度控制,在各個運輸環(huán)節(jié)都要監(jiān)控制冷機的運作情況。
冷鏈物流集裝箱的進出口流程分為貨物裝箱前、委托人裝箱、集裝箱裝船前、裝船與運送、集裝箱卸船、貨物卸箱以及貨物卸箱后七部分。集裝箱裝箱前流程包括貨主定艙位,告知船方運送地點、裝載貨物種類與數(shù)量,提空集裝箱等流程;托運人裝箱指貨主提空箱后的貨物裝箱作業(yè);裝船與運送是指集裝箱在集裝箱堆場等待通關(guān)和相關(guān)文件到齊后,開始搬運上船并開啟海上運輸航行的流程;集裝箱卸船、貨物卸箱以及貨物卸箱后這三個流程是指集裝箱到達目的港口后的搬運后續(xù)工作,具體流程圖如圖1所示。從流程圖中可以看到對箱內(nèi)貨物的溫濕度監(jiān)控主要采取以4h為間隔進行人工查看的方式,記錄方式主要為人工記錄,這種監(jiān)控方式存在的問題是監(jiān)控記錄容易改動,完全依賴監(jiān)控人員的責任心,所以有必要研究冷鏈物流集裝箱運輸?shù)臏貪穸葘崟r監(jiān)控問題。

圖1 冷鏈物流集裝箱進出口流程
國內(nèi)外目前對該問題的研究很多,本文主要參考下列文獻的觀點和架構(gòu):Wanganoo,等[1]提供了一個基于NB-IoT增強器的冷鏈解決方案,集成了溫度和其他環(huán)境變化的傳感器,具有能耗低和智能數(shù)據(jù)分析功能,有助于加強冷鏈物流中實時數(shù)據(jù)監(jiān)控和優(yōu)化;Yu,等[2]基于冷鏈運輸集中監(jiān)控、局部分布、整體機動的特點,設計了冷鏈運輸監(jiān)控系統(tǒng),采用STM32微處理器作為數(shù)據(jù)傳輸模塊的主控制器,利用基于SX1212芯片的無線模塊搭建點對點網(wǎng)絡,利用GPRS模塊向服務器上傳數(shù)據(jù),該系統(tǒng)可以監(jiān)控冷鏈運輸?shù)臏囟取穸取㈦姵厝萘俊⒙肪€等信息;Mohsin,等[3]通過GPS模塊和基于物聯(lián)網(wǎng)的傳感器平臺實現(xiàn)位置跟蹤和環(huán)境控制,傳感器數(shù)據(jù)通過Wi-Fi發(fā)射器發(fā)送,接收端包括監(jiān)測人員,監(jiān)測人員將定期收到有關(guān)受控環(huán)境參數(shù)、運輸機車位置的更新;Ji,等[4]設計了一種具有安全特性的微型電子標簽,這種溫度傳感器標簽支持數(shù)字簽名和驗證,確保收集的溫度數(shù)據(jù)是授權(quán)的和防篡改的,結(jié)合區(qū)塊鏈技術(shù)可追溯的特點,搭建了一個基于區(qū)塊鏈的食品安全保障平臺;Ahamed,等[5]論述了如何利用區(qū)塊鏈技術(shù)對易腐食品進行冷鏈管理,提出了從農(nóng)場到消費者的不可變分類賬,農(nóng)場到消費者都可以獲取這些數(shù)據(jù)并檢查細節(jié),例如易腐產(chǎn)品指定的溫度、食品生產(chǎn)廠家和日期等,通過使用區(qū)塊鏈技術(shù)可以永久存儲冷鏈物流中易腐食品的關(guān)鍵數(shù)據(jù);張森,等[6]針對訂單數(shù)據(jù)和環(huán)境數(shù)據(jù)分別設計上鏈系統(tǒng),實現(xiàn)了訂單數(shù)據(jù)安全上鏈、冷鏈環(huán)境數(shù)據(jù)實時上鏈以及物聯(lián)網(wǎng)設備的身份認證與權(quán)限控制機制;宋宇航[7]提出了基于區(qū)塊鏈技術(shù)的醫(yī)藥冷鏈物流追溯系統(tǒng),通過對疫苗冷鏈物流的流程分析,設計實現(xiàn)了將以太坊作為開發(fā)平臺的醫(yī)藥冷鏈物流追溯系統(tǒng),并對其功能進行驗證;錢聰[8]認為在冷鏈運輸過程中,因為商品環(huán)境的特殊性,傳感器輸出信號、質(zhì)量等容易出現(xiàn)問題,可能導致數(shù)據(jù)記錄不準確,設計并實現(xiàn)了中間件數(shù)據(jù)糾錯模塊,對溫濕度之類的數(shù)據(jù)使用卡爾曼濾波算法進行糾錯處理,使用隱馬爾可夫預測模型結(jié)合加權(quán)糾偏算法對原始軌跡數(shù)據(jù)進行糾偏;劉艷超[9]使用無線傳感網(wǎng)絡技術(shù)設計農(nóng)產(chǎn)品冷鏈物流信息采集系統(tǒng),構(gòu)建農(nóng)產(chǎn)品冷鏈物流無線傳感網(wǎng)絡,使用嵌入式技術(shù)、百度地圖API技術(shù)、數(shù)據(jù)庫程序設計與管理技術(shù)對農(nóng)產(chǎn)品冷鏈物流監(jiān)控系統(tǒng)進行設計,實現(xiàn)計算機終端的遠程農(nóng)產(chǎn)品冷鏈物流監(jiān)控、車輛地理位置定位和數(shù)據(jù)查詢查看等功能;白二龍[10]在冷鏈倉儲環(huán)節(jié)設計了基于分布式采集的上位機監(jiān)控系統(tǒng),在冷鏈運輸環(huán)節(jié)設計了基于云服務的遠程終端監(jiān)控系統(tǒng),實現(xiàn)了冷鏈物流全流程的信息檢測及可視化監(jiān)控。
(1)區(qū)塊鏈定義。區(qū)塊鏈技術(shù)最初由中本聰提出,是智能合約的基礎。它作為一個共享的去中心化分類帳來記錄交易。區(qū)塊鏈有三種類型:公有、私有和聯(lián)盟。公共區(qū)塊鏈主要用于去中心化網(wǎng)絡并提供安全的透明度,然而當需要更多的權(quán)限控制和隱私保護場景時,傾向采用私有和聯(lián)盟(半私有)區(qū)塊鏈。區(qū)塊鏈提供安全存儲,因為它通過proof-ofwork或?qū)嶋H拜占庭容錯等算法達成共識,再利用節(jié)點的共識或協(xié)議授權(quán)產(chǎn)生新區(qū)塊的鏈,它充當所有事務的總分類帳,在賬本中記錄產(chǎn)品從開始到當前狀態(tài)所經(jīng)歷的事件,這些日志是不可刪改的。區(qū)塊鏈還能夠?qū)崿F(xiàn)智能合約,智能合約是可以按照預定義條件觸發(fā)器自動執(zhí)行的代碼,相當于操作數(shù)據(jù)庫的SQL語言,可以進行讀寫操作,區(qū)塊鏈賬本ledger相當于數(shù)據(jù)庫。
(2)區(qū)塊鏈開發(fā)平臺。目前主流的區(qū)塊鏈開發(fā)平臺是Etherum和Hyperledger Fabric。Etherum是公開鏈平臺,它的特性是完全透明、高度匿名,其性能低于私有鏈,具有挖礦獎勵。Hyperledger Fabric是一個開源的私有鏈開發(fā)平臺,它不僅具有區(qū)塊鏈的去中心化賬本、不可變、群體共識等特點,還提供了更高效的共識機制、更高的吞吐量、智能合約以及對多個組織和賬本的支持。物聯(lián)網(wǎng)設備產(chǎn)生數(shù)據(jù)的速度比較快,所以不能使用帶有挖礦功能的開發(fā)平臺,這樣會導致生成交易效率不高,所以本文選用Hyperledger Fabric作為區(qū)塊鏈開發(fā)平臺。
將物聯(lián)網(wǎng)(IOT)與區(qū)塊鏈結(jié)合應用是供應鏈管理的大趨勢。物聯(lián)網(wǎng)設備產(chǎn)生的數(shù)據(jù)種類很多,例如攝像頭可以捕捉真實世界的圖像并生成圖片或視頻數(shù)據(jù);傳感器可以捕捉溫度、濕度、光線等物理信號,并將其轉(zhuǎn)換為數(shù)字信號數(shù)據(jù),等。這些數(shù)據(jù)大部分是非結(jié)構(gòu)化的,因此不能直接存儲在關(guān)系數(shù)據(jù)庫中。而且它們都是實時數(shù)據(jù),所以需要及時推送給授權(quán)用戶。一般來說,語音和視頻數(shù)據(jù)都是流數(shù)據(jù)。設備采集到的數(shù)據(jù)經(jīng)過編碼后通過Wi-Fi或4G推送到云服務器,然后生成一個資源URL,用戶可以根據(jù)HLS、RTMP等視頻傳輸協(xié)議通過URL提取流數(shù)據(jù),設備通過基于MQTT的服務或其他協(xié)議將傳感器數(shù)據(jù)發(fā)送到主題,客戶機被授權(quán)后,它訂閱相應的主題(可以用URL表示),服務器將主題下的消息推送給客戶機。此外,這類數(shù)據(jù)主要用于控制物聯(lián)網(wǎng)設備執(zhí)行綁定、解綁定、打開、關(guān)閉、調(diào)整等操作。一般情況下,客戶端可以通過基于HTTP(s)的restfulAPI向服務器發(fā)送請求,服務器驗證權(quán)限后,可以通過MQTT或其他協(xié)議向設備發(fā)送控制信號。
綜上所述,區(qū)塊鏈與物聯(lián)網(wǎng)結(jié)合的步驟如下:首先IOT設備生成包含設備ID和URL的消息,通過MQTT發(fā)送給智能網(wǎng)關(guān),然后智能網(wǎng)關(guān)解析消息并為區(qū)塊鏈生成一個待讀取響應消息,智能網(wǎng)關(guān)連接到區(qū)塊鏈客戶端來運行讀取操作,接著區(qū)塊鏈通過智能合約函數(shù)調(diào)用IOT硬件讀取設備資源的URL,將其保存在區(qū)塊鏈賬本中。
本文提出一種基于區(qū)塊鏈技術(shù)的冷鏈物流集裝箱監(jiān)控平臺,目的在于監(jiān)控冷鏈物流各個節(jié)點的關(guān)鍵信息,在數(shù)據(jù)采集層通過在集裝箱內(nèi)安裝傳感器持續(xù)監(jiān)控精確關(guān)鍵數(shù)據(jù)信息,并通過實時交換機制推送到IOT云平臺,IOT云平臺將原始數(shù)據(jù)存儲在阿里云中,阿里云將過濾數(shù)據(jù)傳遞給本地服務器redis存儲;經(jīng)過Fabric SDK中MSP審核過的冷鏈參與者可以加入Fabric網(wǎng)絡并分配channel通道,在channel通道中通信和投票,并且在檢測到異常情況時,智能合約通知MSP成員投票確認,一致確認異常情況后生成異常事務新區(qū)塊,同時發(fā)送警告通知短信到管理員手機,應用層中前端注冊用戶都可以通過網(wǎng)頁或應用查看集裝箱內(nèi)貨物的狀態(tài)和位置。
本系統(tǒng)框架分為五層:數(shù)據(jù)采集層、IOT云平臺、Fabric網(wǎng)絡層、服務層、應用層。其中數(shù)據(jù)采集層負責采集和上傳冷鏈物流集裝箱內(nèi)的關(guān)鍵數(shù)據(jù);IOT云平臺接收備份數(shù)據(jù),將處理數(shù)據(jù)發(fā)送到本地服務器redis存儲;Fabric網(wǎng)絡層負責劃分用戶權(quán)限、數(shù)據(jù)存儲和交易驗證;SDK服務層負責提供編寫應用程序的多種操作區(qū)塊鏈網(wǎng)絡的方式;應用層提供前端頁面與系統(tǒng)用戶進行交互,查詢數(shù)據(jù)和接收警告。系統(tǒng)框架圖如圖2所示。

圖2 系統(tǒng)框架圖
本文中數(shù)據(jù)采集層的硬件設備是安裝在冷鏈物流集裝箱內(nèi)的傳感器和定位器,傳感器監(jiān)測溫度、濕度水平,北斗定位器追蹤集裝箱的實時位置,只要違反了其中一個監(jiān)控指標,比如溫濕度異常,系統(tǒng)就會實時更新,用戶能通過移動設備立即得到通知。采集設備選取阿里云Haas 100微控制器開發(fā)板、BME280溫濕度模塊開發(fā)溫濕度傳感設備,以及包含北斗芯片的定位設備。
阿里云物聯(lián)網(wǎng)平臺可以與其他阿里云服務無縫集成,還支持MQTT、HTTPS、AMQP和web sockets,企業(yè)實例消息上下行TPS允許100條/s~10萬條/s消息,適合本系統(tǒng)的開發(fā)和測試。本系統(tǒng)中關(guān)鍵數(shù)據(jù)上傳到IOT平臺的流程如下:為了連接到IOT云平臺,IOT設備首先使用云上定義的用戶名和密碼連接到MQTT代理,使用自簽名證書對設備進行驗證,通過Haas 100的MQTT庫連接云平臺,將實時數(shù)據(jù)傳送給阿里云物聯(lián)網(wǎng)平臺。在溫濕度采集中,設定每秒鐘采集30次原始數(shù)據(jù),然后阿里云物聯(lián)網(wǎng)平臺再發(fā)送到阿里云服務器存儲,這樣可以將原始數(shù)據(jù)保存到云服務器上,經(jīng)過計算的平均值再上傳到區(qū)塊鏈上,可以減少區(qū)塊鏈上鏈的數(shù)據(jù),同時又備份了原始數(shù)據(jù)。違規(guī)事務的發(fā)送是先將主設備格式化,再向子設備發(fā)送一個字符串,該字符串包含函數(shù)名,該函數(shù)名確定違規(guī)類型,以及違規(guī)時的所有傳感器讀數(shù),每分鐘只發(fā)送一次違規(guī)信息,以避免干擾子設備,同樣的違規(guī)類型每十分鐘只發(fā)送一次,以避免重復上鏈,具體流程如圖3所示。

圖3 數(shù)據(jù)上傳IOT平臺流程圖
服務層主要負責為開發(fā)人員提供編寫應用程序的多種操作區(qū)塊鏈網(wǎng)絡的方式。應用程序可以部署/執(zhí)行chaincode,監(jiān)聽網(wǎng)絡中產(chǎn)生的事件,接收塊信息,把交易存儲到賬本中;提供編寫chaincode單元測試代碼,開發(fā)人員能夠在不把chaincode部署到網(wǎng)絡上的情況下快速測試chaincode。SDK以調(diào)用grpc的方式與Fabric網(wǎng)絡中指定的Peer節(jié)點和Order節(jié)點進行溝通,主要功能為:允許用戶創(chuàng)建或加入Fabric網(wǎng)絡中已經(jīng)存在的channel;為已認證用戶獲取交易證書提交交易;在節(jié)點中部署執(zhí)行Chaincode(智能合約);監(jiān)聽IOT平臺中的事件;提交違規(guī)事件數(shù)據(jù)存儲到賬本;查詢賬本中的數(shù)據(jù)。
本系統(tǒng)中的參與者主要是發(fā)貨方、物流方、收貨方和政府部門,所以將系統(tǒng)分為4個組織(Or),每個組織包含4個節(jié)點peer、4個channel通道、4個Couch-DB。為每個客戶組織創(chuàng)建一個特定的4個通道的目的是增加隱私,因為只有在通道中注冊的peer才能進行通信和交易,并擁有冷鏈運輸關(guān)鍵信息的財產(chǎn)權(quán)。每個組織有1個CA服務器和1個SDK,經(jīng)過CA驗證的用戶才能調(diào)用SDK的接口和區(qū)塊鏈的賬本。在每個peer節(jié)點上部署智能合約代碼,并為每個節(jié)點配備CouchDB,可以存放數(shù)據(jù)歷史記錄。Fabric網(wǎng)絡結(jié)構(gòu)如圖4所示。

圖4 Fabric網(wǎng)絡結(jié)構(gòu)圖
本系統(tǒng)實現(xiàn)一個Node.js開發(fā)的web應用程序,為用戶提供監(jiān)控和跟蹤功能。用戶可以查看主頁、實時狀態(tài)頁面、監(jiān)視和跟蹤頁面以及違規(guī)視圖頁面。用戶經(jīng)過身份驗證后,應用程序從主頁開始,這個頁面只是查詢用戶發(fā)貨基本信息,用戶可以選擇從這里跳轉(zhuǎn)到實時發(fā)貨狀態(tài)頁。實時狀態(tài)頁面向用戶顯示物聯(lián)網(wǎng)設備在云上收到的最新讀取數(shù)據(jù),顯示集裝箱的溫度、濕度、位置信息,該頁還有一個按類型展示區(qū)塊鏈上的違規(guī)記錄的餅狀圖,Node.js庫用于提取每個圖的事務數(shù)量,同時監(jiān)控運輸過程所有重要信息和位置、違規(guī)事務類型;用戶通過集裝箱ID和運輸路徑來檢索數(shù)據(jù),在后端服務器中用golang代碼調(diào)用Restful API來獲取最新的數(shù)據(jù),更新顯示的溫濕度數(shù)據(jù)和百度地圖位置;在集裝箱歷史數(shù)據(jù)狀態(tài)頁面,用戶可以使用頁面底部的按鈕導航到監(jiān)視、跟蹤頁面和違規(guī)頁面。為了監(jiān)視和跟蹤發(fā)貨過程,從阿里云數(shù)據(jù)庫服務器中提取發(fā)貨數(shù)據(jù),該頁記錄的是從發(fā)貨到現(xiàn)階段的整個歷史記錄,數(shù)據(jù)被分割成多個數(shù)組,分別保存每個關(guān)鍵信息(溫度數(shù)組、濕度數(shù)組等),然后將這些數(shù)組可視化,繪制成帶標簽的數(shù)據(jù)餅狀圖;在實時位置監(jiān)控頁面顯示運輸路線的地圖信息,路線是使用百度API中定義的折線繪制的,北斗經(jīng)度和緯度坐標用于在貨運實時位置顯示一個綠色標記,超出地理邊界的坐標被設置紅色,具體功能框架如圖5所示。

圖5 應用層功能框架圖
(1)區(qū)塊鏈網(wǎng)絡初始化需要管理員在內(nèi)網(wǎng)工作,需要為所有成員(如對等節(jié)點、訂單節(jié)點、通道、用戶等)創(chuàng)建證書,所有證書均由CA生成;然后將CA證書打包到docker映像中,保證Peer節(jié)點和order節(jié)點在docker容器中正常運行;再開始創(chuàng)建通道,使每個頻道都加入獨立的區(qū)塊鏈和總帳。
(2)通過上面的操作已經(jīng)建立了一個基本的Hyperledger Fabric網(wǎng)絡。為了構(gòu)建應用程序,需要設計智能合約(智能合約的具體實現(xiàn)將在下文詳述),它的源代碼是用Golang語言編寫的。管理員使用Hyperledger Fabric SDK或客戶端將智能合約安裝到所有的peer節(jié)點,然后進行初始化,調(diào)用函數(shù)用于初始化鏈代碼,每個實例化的智能合約鏈碼將作為背書保存在container中,整個Fabric網(wǎng)絡工作流如圖6所示。

圖6 Fabric網(wǎng)絡工作流
(1)管理員和用戶共同根據(jù)主體(用戶)、對象(設備資源)、操作和環(huán)境的屬性定義來制定控制策略。
(2)定義策略后,管理員將策略上傳到區(qū)塊鏈網(wǎng)絡。
(3)管理員通過運行訪問控制合約連接到區(qū)塊鏈來添加、修改和刪除策略。策略的值保存在世界狀態(tài)數(shù)據(jù)庫(world state dataase)中,操作記錄寫入帳本。
IOT設備將傳感信息URL上報給智能網(wǎng)關(guān),智能網(wǎng)關(guān)將傳感URL上傳到區(qū)塊鏈系統(tǒng),具體流程為:
(1)設備生成包含設備ID和URL的消息,并通過MQTT將其發(fā)送到智能網(wǎng)關(guān)。
(2)智能網(wǎng)關(guān)解析消息并為區(qū)塊鏈生成一個action。
(3)智能網(wǎng)關(guān)連接到區(qū)塊鏈客戶端來運行該操作。
(4)區(qū)塊鏈通過調(diào)用數(shù)據(jù)采集智能合約來保存設備資源的URL。
目前用來開發(fā)智能合約技術(shù)的主要是Ethereum和Hyperledger,其中Ethereum可以開發(fā)公開的、少限制的和私有鏈,而Hyperledger適合開發(fā)私有鏈,以go為開發(fā)語言,適合作為本系統(tǒng)合約代碼開發(fā)框架;在Hyperledger Fabric中,Chaincode是運行在隔離的安全Docker容器中的智能合約,Chaincode通過區(qū)塊鏈交易管理分布式賬本中的狀態(tài),Chaincode可以看作是使用Hyperledger Fabric包(如shim和peer)的一般Golang代碼。
(1)管理員為用戶定義ABAC(基于屬性的訪問控制策略),并向區(qū)塊鏈系統(tǒng)發(fā)送添加ABAC的請求,管理員用控制策略智能合約通道中的節(jié)點公鑰加密數(shù)據(jù),再用私鑰簽署請求,智能合約調(diào)用Auth()用其公鑰驗證管理員的身份,并用self的私鑰解密數(shù)據(jù)。
(2)CheckPolicy():控制策略智能合約需要檢查ABAC策略的有效性。
(3)AddPolicy():在CheckPolicy()驗證ABAC策略合法后,控制策略智能合約調(diào)用AddPolicy()將ABAC策略添加到SDB,同時所有的操作記錄將被寫入總賬。
(4)UpdatePolicy():某些情況下,管理員需要修改ABAC。UpdatePolicy()函數(shù)實現(xiàn)了SDB的接口更新,更新的操作記錄也將寫入?yún)^(qū)塊鏈。UpdatePolicy()類似于AddPolicy(),它也通過調(diào)用應用程序接口的put方法來覆蓋原有值。
(5)DeletePolicy():當管理員通過調(diào)用此函數(shù)主動刪除策略時,就會發(fā)生策略過期情況,另一種是在執(zhí)行CheckAccess()方法時發(fā)生過期情況,如果屬性“endTime”過期了,那么它將在控制策略中調(diào)用這個函數(shù)來刪除相關(guān)的策略。
(6)QueryPolicy():實現(xiàn)了數(shù)據(jù)庫查詢的接口,提供了一個函數(shù)來獲取其他Chaincode鏈碼的ABAC。我們選擇CouchDB作為SDB。
(1)IOT傳感器設備和定位設備采集溫濕度數(shù)據(jù),每秒鐘采集30次,以30個數(shù)據(jù)為一組,并將其通過MQTT協(xié)議上傳到阿里云IOT物聯(lián)網(wǎng)平臺,阿里云物聯(lián)網(wǎng)平臺再將數(shù)據(jù)存儲在阿里云數(shù)據(jù)庫服務器上。
(2)計算這組數(shù)據(jù)的平均值作為基礎數(shù)據(jù),通過https協(xié)議發(fā)送到本地服務器的redis數(shù)據(jù)庫中。
(3)基 于Node.js的Hyperledger Fabric Client SDK定義的api與網(wǎng)絡Network中的鏈碼交互,讀取數(shù)據(jù)到區(qū)塊鏈網(wǎng)絡中order消息隊列中,返回是否提交成功。
(4)消息隊列中數(shù)據(jù)排序后再發(fā)送到智能合約中,智能合約判斷采集數(shù)據(jù)是否是合規(guī)的數(shù)據(jù),如果違規(guī),則由client客戶端發(fā)起交易請求,將該筆交易發(fā)送背書peer節(jié)點,驗證背書節(jié)點簽名是否符合策略,再將交易廣播到排序服務(Order Service),order節(jié)點執(zhí)行共識過程生成新的區(qū)塊,將交易內(nèi)容(異常數(shù)據(jù))寫入新區(qū)塊,并通過channel發(fā)送給各Peer節(jié)點備份,同時更新world state;再判斷數(shù)據(jù)是否保存成功,如果成功則數(shù)據(jù)從消息隊列中刪除,不成功則等待下一次上鏈。
(5)智能合約向各管理節(jié)點發(fā)送報警信息。