周華平,張 晴*,姚尚軍,丁金虎,孫克雷
(1.安徽理工大學(xué) 計算機(jī)科學(xué)與工程學(xué)院,安徽 淮南 232001; 2.淮北礦業(yè)集團(tuán),安徽 淮北 235000)
計算機(jī)技術(shù)飛速發(fā)展,煤礦企業(yè)的信息化、數(shù)字化水平不斷提高,推動安全生產(chǎn)從靜態(tài)管理向動態(tài)管理、從被動管理向主動管理的轉(zhuǎn)變[1]。目前國內(nèi)煤礦企業(yè)在隱患管理方面采用中心化的管理方式,這存在以下幾大弊端:① 隱患數(shù)據(jù)存在被篡改風(fēng)險,事故發(fā)生后難以追查定責(zé);② 隱患整改落實情況不透明,各級監(jiān)管部門無法及時掌握整改動態(tài);③ 眾多煤礦在隱患方面具有極大相似性,隱患數(shù)據(jù)共享對于其他煤礦發(fā)現(xiàn)自身隱患具有極大的參考價值,而傳統(tǒng)中心化管理方式在共享方面有諸多不便。
區(qū)塊鏈技術(shù)具有去信任、去中心化、開放自治、匿名可追溯、信息不可篡改等特性[2],為數(shù)據(jù)的安全存儲、流通、共享等問題提供了新的解決思路。在電子檔案管理方面,蘇聯(lián)燈基于區(qū)塊鏈技術(shù)構(gòu)建了一種面向數(shù)字檔案系統(tǒng)的安全管理方法與機(jī)制[3]。在證據(jù)保全方面,李耀呈提出結(jié)合區(qū)塊鏈具有天然的信任性優(yōu)勢,將其應(yīng)用到電子證據(jù)的保全中[4]。在數(shù)字版權(quán)的保護(hù)與交易上,李超等人設(shè)計了一種數(shù)字版權(quán)保護(hù)和交易聯(lián)盟鏈,提取數(shù)字內(nèi)容的特征值加密后上鏈[5]。在醫(yī)療領(lǐng)域,Shae和Tsai提出了一種用于醫(yī)療數(shù)據(jù)共享和存儲應(yīng)用的區(qū)塊鏈架構(gòu)[6]。Xia等人設(shè)計了MedShare,一個針對醫(yī)療大數(shù)據(jù)保管人的病歷共享系統(tǒng)[7]。
基于區(qū)塊鏈技術(shù)在各行業(yè)的研究應(yīng)用,探索其在煤礦隱患信息管理方面的應(yīng)用潛力。改進(jìn)區(qū)塊鏈技術(shù)在數(shù)據(jù)存儲方面的不足,設(shè)計了一種將區(qū)塊鏈存儲和傳統(tǒng)數(shù)據(jù)庫相結(jié)合的存儲方式。鑒于區(qū)塊鏈系統(tǒng)數(shù)據(jù)同步慢的問題,設(shè)計把系統(tǒng)中節(jié)點分為共識服務(wù)節(jié)點和同步節(jié)點的方案,改善PBFT算法的可擴(kuò)展性和共識效率。
區(qū)塊鏈?zhǔn)嵌喾N技術(shù)的創(chuàng)新性組合利用,其中包括密碼學(xué)技術(shù)、對等網(wǎng)絡(luò)、共識機(jī)制以及智能合約等,實現(xiàn)去中心化的分布式基礎(chǔ)架構(gòu)和計算范式。從數(shù)據(jù)存儲角度看,區(qū)塊鏈?zhǔn)且粋€提供安全、可信數(shù)據(jù)管理功能的分布式賬本系統(tǒng)。
狹義上區(qū)塊鏈包含數(shù)據(jù)區(qū)塊以及區(qū)塊之間的鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu),如圖1所示。
圖1 區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)Fig.1 Blockchain data structure
數(shù)據(jù)區(qū)塊是一種大小固定的容器性質(zhì)的數(shù)據(jù)結(jié)構(gòu),包含3組元數(shù)據(jù):父塊哈希值(PreHash)、區(qū)塊內(nèi)數(shù)據(jù)哈希值(MerkleRoot)以及共識相關(guān)字段(ConsRelated)。區(qū)塊內(nèi)數(shù)據(jù)的存儲方式一般采取Merkel tree結(jié)構(gòu),區(qū)塊間的順序鏈接通過父區(qū)塊哈希值來實現(xiàn)。在去中心化的分布式系統(tǒng)中,節(jié)點間依靠基于信息傳遞的共識機(jī)制來達(dá)成一致,常用的共識算法有工作量證明PoW、權(quán)益證明PoS、股份授權(quán)證明DPoS、PBFT共識算法以及Raft等[8]。根據(jù)區(qū)塊鏈系統(tǒng)的去中心化程度不同,選擇適合的共識機(jī)制來確保各節(jié)點維持區(qū)塊鏈數(shù)據(jù)的一致性和不可篡改性。
煤礦安全隱患需及時治理,降低隱患事故發(fā)生的可能性,煤礦安全隱患的閉環(huán)管理流程如圖2所示,一般包含以下4個階段[9]:
① 隱患辨識排查。煤礦安全部門人員進(jìn)行煤礦安全隱患辨識、排查,形成隱患排查記錄,按時公布隱患排查信息。
② 隱患分析上報。煤礦的隱患排查記錄和治理流程等詳細(xì)信息,應(yīng)及時分析、上報,形成隱患排查電子賬簿。
③ 隱患整改。隱患的整改應(yīng)由專業(yè)人員進(jìn)行,煤礦安全部門應(yīng)對隱患治理進(jìn)行跟蹤監(jiān)督。
④ 驗收消解。安監(jiān)部門及時對已整治隱患進(jìn)行現(xiàn)場復(fù)查驗收,驗收資料應(yīng)齊全且備份存檔報備,驗收合格后閉合該隱患。
基于區(qū)塊鏈的煤礦安全隱患管理模型同樣按照閉環(huán)管理流程實施隱患信息管理,實現(xiàn)對煤礦安全隱患科學(xué)有效的處理。
圖2 煤礦安全隱患閉環(huán)管理流程Fig.2 Closed-loop management process of coal mine hidden risks
區(qū)塊鏈可以分為 3 類:公有鏈、聯(lián)盟鏈和私有鏈[10]。聯(lián)盟鏈可以根據(jù)應(yīng)用場景來決定開放程度,具有相對嚴(yán)格的準(zhǔn)入機(jī)制和監(jiān)管措施,其網(wǎng)絡(luò)由成員機(jī)構(gòu)共同維護(hù),節(jié)點通過成員機(jī)構(gòu)的網(wǎng)關(guān)節(jié)點接入?yún)^(qū)塊鏈網(wǎng)絡(luò),參與的多方實體基于一定的信任前提和利益關(guān)聯(lián),為目前各行業(yè)場景下多成員機(jī)構(gòu)對動態(tài)數(shù)據(jù)的安全存儲、管理、授權(quán)訪問和監(jiān)管提供了新的解決方案。煤礦隱患信息管理系統(tǒng)的應(yīng)用場景與聯(lián)盟鏈的特點契合,選用聯(lián)盟鏈作為煤礦隱患管理系統(tǒng)的基本區(qū)塊鏈架構(gòu)?;诼?lián)盟鏈的煤礦隱患管理架構(gòu)包含兩部分:服務(wù)層和區(qū)塊鏈網(wǎng)絡(luò),如圖3所示。
基于聯(lián)盟鏈的煤礦隱患信息管理架構(gòu)是由多個分布式節(jié)點(煤礦企業(yè)實體和監(jiān)管機(jī)構(gòu)實體等)組成。這些節(jié)點構(gòu)成了一個點對點(P2P)網(wǎng)絡(luò),通信層基于gRPC,并利用TLS進(jìn)行相互身份驗證,采用Gossip協(xié)議進(jìn)行節(jié)點間互相發(fā)現(xiàn)和數(shù)據(jù)傳輸。存儲模塊由兩部分組成:鏈上存儲和鏈下存儲,鏈上存儲采用CouchDB與LevelDB;鏈下存儲采用中心化數(shù)據(jù)庫來實現(xiàn)。利用改進(jìn)后的PBFT共識算法完成共識驗證服務(wù)。通過智能合約建立起各煤礦企業(yè)之間的數(shù)據(jù)共享關(guān)系以及監(jiān)管機(jī)構(gòu)對煤礦企業(yè)的安全隱患監(jiān)管關(guān)系,為服務(wù)層提供功能實現(xiàn)。服務(wù)層創(chuàng)建模塊化的應(yīng)用程序接口整合各個機(jī)構(gòu)的接入,優(yōu)化機(jī)構(gòu)間的協(xié)同操作。
圖3 隱患管理區(qū)塊鏈架構(gòu)Fig.3 Hidden risks management blockchain architecture
3.2.1 隱患數(shù)據(jù)存儲模型
區(qū)塊鏈本質(zhì)上是一個分布式賬本,理論上要求區(qū)塊鏈網(wǎng)絡(luò)中的每個節(jié)點同步區(qū)塊鏈網(wǎng)絡(luò)中產(chǎn)生的數(shù)據(jù),受限于區(qū)塊鏈存儲空間、效率以及區(qū)塊鏈網(wǎng)絡(luò)中信息同步效率的問題,區(qū)塊鏈本身并不適合記錄大量復(fù)雜信息。根據(jù)危害程度的不同,可將煤礦安全生產(chǎn)事故隱患分為一般事故隱患和重大事故隱患。在煤礦隱患管理鏈中采取一般事故隱患鏈下存儲,重大事故隱患鏈上存儲的方案,如圖4所示。
將標(biāo)準(zhǔn)化處理后的重大事故隱患及時上鏈,加強(qiáng)動態(tài)監(jiān)管、跟蹤治理以及輔助巡視整改驗收。一般事故隱患數(shù)據(jù)存儲到本地數(shù)據(jù)庫中,并對此類數(shù)據(jù)進(jìn)行哈希操作執(zhí)行SHA256算法[11],將哈希結(jié)果存儲到區(qū)塊鏈網(wǎng)絡(luò)中。這種存儲方式可以在有效地減少區(qū)塊鏈網(wǎng)絡(luò)中數(shù)據(jù)量的同時,保證煤礦隱患監(jiān)管系統(tǒng)要求的防篡改功能。
圖4 隱患數(shù)據(jù)安全分離存儲Fig.4 Safe and separate storage of hidden risks data
3.2.2 隱患數(shù)據(jù)格式設(shè)計
在確定隱患數(shù)據(jù)的存儲模型后,需要對隱患數(shù)據(jù)進(jìn)行分析和描述。設(shè)計一個通用五元組對重大事故隱患和一般事故隱患進(jìn)行表示:
當(dāng)數(shù)據(jù)項Type值為1時該條信息為重大事故隱患信息,其值為0時表示該條信息為一般事故隱患信息。M表示該條隱患相關(guān)信息(一般事故隱患信息時為簡要信息)。Hash(M)為M的哈希值主要用來防止隱患相關(guān)數(shù)據(jù)的篡改,同時也作為五元組的索引。Pre_Hash為該隱患上次整改信息的哈希值,主要用來對隱患整改過程進(jìn)行追蹤實現(xiàn)閉環(huán)管理。Sign為本條隱患信息中Hash(M)的數(shù)字簽名,通過Sign可以驗證本次操作的有效性和合法性。
PBFT共識算法以通信次數(shù)為代價換取可靠性,每一次操作都需要節(jié)點間交互協(xié)作去核驗消息,這產(chǎn)生了較高的通信負(fù)擔(dān)。在節(jié)點數(shù)目超過一定數(shù)量時通信負(fù)載量激增,共識效率明顯下降。PBFT共識算法的容錯能力為不超過總節(jié)點數(shù)1/3的惡意節(jié)點數(shù)[12],在基于聯(lián)盟鏈的煤礦隱患信息管理系統(tǒng)中,假設(shè)有f個拜占庭節(jié)點,選取3f+1節(jié)點為共識服務(wù)節(jié)點,其余節(jié)點作為同步節(jié)點只同步區(qū)塊不參與共識??紤]到安全性,共識服務(wù)節(jié)點和同步節(jié)點是動態(tài)變化的,通過預(yù)設(shè)規(guī)則設(shè)置更換頻率(比如每寫入一定數(shù)量的區(qū)塊),重新選擇共識服務(wù)節(jié)點。既可以把參與共識服務(wù)的節(jié)點數(shù)量控制在一定范圍內(nèi),又使所有節(jié)點都能輪流參與共識,保證了公平性和安全性。
在劃分共識服務(wù)節(jié)點和同步節(jié)點時,本文考慮了節(jié)點的可信度,包括靜態(tài)可信度(SCL)和動態(tài)可信度(ACL)。靜態(tài)可信度衡量指標(biāo)包括該節(jié)點對應(yīng)實體機(jī)構(gòu)的身份以及節(jié)點的CPU、存儲和網(wǎng)絡(luò)性能;動態(tài)可信度衡量指標(biāo)包括節(jié)點的活躍度與作惡情況。
算法一:共識服務(wù)節(jié)點選舉算法input:N(區(qū)塊鏈中節(jié)點集合),s(共識服務(wù)節(jié)點個數(shù))output:R(共識服務(wù)節(jié)點集合)(1) N’<—SortNodes (N,SCL+ACL);(2) R<—GetSortedNodes(s,N’);(3) return R.算法二:共識服務(wù)算法input:REQUEST(共識請求)output:共識結(jié)果(1) ClientSent
該煤礦隱患管理鏈,其功能被解耦為單獨的模塊化微服務(wù),這些服務(wù)使用智能合約構(gòu)建,并部署在各節(jié)點上。通過智能合約,建立起各煤礦企業(yè)之間的數(shù)據(jù)共享關(guān)系以及監(jiān)管機(jī)構(gòu)對煤礦企業(yè)的安全隱患監(jiān)管關(guān)系。智能合約保障了區(qū)塊鏈中所有節(jié)點行為都記錄在冊,具有溯源性。
煤礦隱患管理鏈模型構(gòu)建了3種智能合約,用以將日常隱患管理事務(wù)引入?yún)^(qū)塊鏈: ① 基于訪問權(quán)限的數(shù)據(jù)共享合約:訪問者通過該合約獲取到與其權(quán)限匹配數(shù)據(jù)空間,在該數(shù)據(jù)空間范圍內(nèi)獲取查詢結(jié)果;② 隱患數(shù)據(jù)上鏈合約:通過該合約進(jìn)行隱患數(shù)據(jù)上鏈,該合約對不同等級的安全隱患數(shù)據(jù)按預(yù)先設(shè)定的規(guī)則進(jìn)行不同的處理;③ 隱患整改提醒合約:針對臨近整改期限和未反饋的隱患進(jìn)行提醒。
在本地局域網(wǎng)內(nèi)部利用Docker部署16個節(jié)點,用來模擬聯(lián)盟鏈中的煤礦企業(yè)節(jié)點和監(jiān)管機(jī)構(gòu)節(jié)點,利用HyperledgerFabric2.2 工具[13]進(jìn)行煤礦安全隱患管理聯(lián)盟鏈的搭建。
將節(jié)點劃分功能加入到共識模塊,由于出塊時間與節(jié)點劃分頻率、總節(jié)點數(shù)量、拜占庭節(jié)點數(shù)量以及交易量相關(guān)?;诖耍疚脑O(shè)計以每5塊為一個恒定節(jié)點劃分頻率,總節(jié)點數(shù)為16個,每個區(qū)塊打包交易量為2 000筆。設(shè)置拜占庭節(jié)點個數(shù)f分別為1,2,3,4,5,進(jìn)行多次測試,得到節(jié)點劃分前后系統(tǒng)的平均出塊時間,對比結(jié)果如圖5所示。
圖5 改進(jìn)前后出塊時間圖Fig.5 Block time before and after improvement
從圖5可以看出,在拜占庭節(jié)點數(shù)目遠(yuǎn)小于系統(tǒng)容錯數(shù)量時,節(jié)點劃分前后出塊時間差異較大;隨著拜占庭節(jié)點數(shù)目接近系統(tǒng)容錯空間,節(jié)點劃分前后出塊時間差異越來越??;當(dāng)達(dá)到系統(tǒng)最大容錯數(shù)量時,改進(jìn)前后出塊時間趨于相等。
基于區(qū)塊鏈的煤礦隱患管理模型采用鏈上鏈下分離存儲方式,重大安全隱患信息與一般安全隱患信息的數(shù)據(jù)量以2:8的比例逐漸增加時,對比完全鏈上存儲和鏈上鏈下分離存儲兩種存儲方式添加數(shù)據(jù)時的響應(yīng)時間,結(jié)果如圖6所示,可以看出在添加數(shù)據(jù)時,鏈上鏈下分離存儲的方式響應(yīng)時間更快,表現(xiàn)更優(yōu)異。
圖6 兩種存儲方式響應(yīng)時間對比分析Fig.6 Comparison of the response time of the two storage modes
區(qū)塊鏈技術(shù)在數(shù)據(jù)管理與共享方面的優(yōu)勢受到廣泛的關(guān)注、研究與實踐。本文將區(qū)塊鏈技術(shù)與煤礦隱患數(shù)據(jù)管理創(chuàng)新結(jié)合,提出鏈上鏈下分離存儲的方案,解決了區(qū)塊鏈信息冗余和存儲空間不足的問題。采用節(jié)點劃分,提高PBFT共識算法的擴(kuò)展性和共識效率。這將有助于實現(xiàn)監(jiān)管機(jī)構(gòu)對煤礦隱患整改情況的實時動態(tài)監(jiān)管和隱患數(shù)據(jù)的共享,有利于充分挖掘隱患數(shù)據(jù)在安全生產(chǎn)方面的價值,形成隱患管理新模式,助力煤礦行業(yè)信息化、智能化改革。