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