周華平, 周 潮
(安徽理工大學(xué)計算機科學(xué)與工程學(xué)院,安徽 淮南 232001)
煤礦的許多事故都是由于事故隱患未被及時發(fā)現(xiàn)或未得到有效治理而釀成的,因此建立科學(xué),完善的煤礦隱患管理系統(tǒng)對與解決煤礦隱患意義重大[1]。近年來,區(qū)塊鏈技術(shù)以去中心化、公開性、防篡改和可追溯[2]等特性,引發(fā)起了廣泛的關(guān)注,為數(shù)據(jù)的安全存儲、流通、共享提供了新的解決思路,在數(shù)據(jù)保護、資源共享等領(lǐng)域得到逐步運用。[4]研究將區(qū)塊鏈技術(shù)應(yīng)用到煤礦隱患管理中,通過區(qū)塊鏈技術(shù)完善現(xiàn)有隱患管理系統(tǒng)的不足,在保障煤礦隱患數(shù)據(jù)安全存儲的同時使各個煤礦企業(yè)共同構(gòu)建煤礦隱患庫,實現(xiàn)隱患解決方案的共享。力求通過創(chuàng)新模式的構(gòu)建解決現(xiàn)有隱患管理系統(tǒng)的局限,提高整體隱患處理能力,從而實現(xiàn)高效、安全的隱患管理。
區(qū)塊鏈技術(shù)是由多種技術(shù)結(jié)合形成的一種的全新應(yīng)用模型,通過結(jié)合密碼學(xué)、分布式存儲、共識機制和P2P網(wǎng)絡(luò)等技術(shù)實現(xiàn)了交易數(shù)據(jù)的透明、不可篡改以及可追溯等特性。與傳統(tǒng)數(shù)據(jù)庫相比,區(qū)塊鏈實現(xiàn)了數(shù)據(jù)的可靠性保障及數(shù)據(jù)的防篡改,并能夠?qū)?shù)據(jù)進行即時驗證和高效追溯。
區(qū)塊鏈本質(zhì)是一種將數(shù)據(jù)區(qū)塊以時間順序相連的一種鏈式數(shù)據(jù)結(jié)構(gòu)。如圖1所示,每個數(shù)據(jù)區(qū)塊包含區(qū)塊頭和區(qū)塊體兩部分,其中區(qū)塊頭包含前區(qū)塊的Hash,目標(biāo)哈希和Merkel根等信息,有效防止單個節(jié)點數(shù)據(jù)遭到篡改和遺失,區(qū)塊體作為交易的集合。
圖1 區(qū)塊結(jié)構(gòu)
根據(jù)網(wǎng)絡(luò)范圍和參與節(jié)點特性,可將區(qū)塊鏈分為公共鏈、聯(lián)盟鏈和私有鏈三類,不同性質(zhì)的區(qū)塊鏈對比表如表1所示。結(jié)合系統(tǒng)對隱患存儲和方案共享的需求,因此采用聯(lián)盟鏈的形式構(gòu)建煤礦隱患管理系統(tǒng),降低中心化程度保障效率。
表1 區(qū)塊鏈分類及特點
效率 低 高 高公開化程度 完全公開 公開或限定 公開或限定
在隱患管理中,煤礦安全隱患的閉環(huán)流程可以分為“錄入-整改-驗收-消解”,如圖2所示。其中各個環(huán)節(jié)數(shù)據(jù)都需要記錄在數(shù)據(jù)庫中,便于后續(xù)的追溯查詢,各個環(huán)節(jié)功能如下:
圖2 隱患處理流程
1)上報:當(dāng)發(fā)現(xiàn)隱患后,將其發(fā)現(xiàn)時間、隱患地點、隱患類型、隱患描述等詳細內(nèi)容上報系統(tǒng)。
2)整改:發(fā)現(xiàn)有隱患上報,并制定詳細的治理計劃并確定計劃完成時間和負責(zé)人。
3)驗收:安檢部門對隱患進行驗收,若處理不合格或逾期未處理,重新制定整改措施。
4)消解:安檢部門驗收完的隱患信息再返回排查處,由排查人員審核,消除隱患信息。
基于區(qū)塊鏈的煤礦隱患管理系統(tǒng)根據(jù)功能將其劃分為數(shù)據(jù)層、區(qū)塊鏈核心層和用戶層,如圖3所示。
圖3 系統(tǒng)總體框架
(1)數(shù)據(jù)層負責(zé)保存上傳的隱患信息,將錄入到的信息進行整理,以規(guī)定的格式存儲到最新區(qū)塊中,是整個系統(tǒng)查詢的數(shù)據(jù)的最終來源。
(2)區(qū)塊鏈核心層是煤礦隱患管理系統(tǒng)的核心,執(zhí)行關(guān)鍵的業(yè)務(wù)邏輯。包括根據(jù)用戶請求類型,執(zhí)行對應(yīng)智能合約;進行共識機制管理,保障節(jié)點數(shù)據(jù)的一致;同時也負責(zé)對查詢請求進行身份管理。
(3)用戶層是煤礦隱患管理系統(tǒng)與用戶交互的客戶端所在層,提供包括用戶的注冊、數(shù)據(jù)上鏈和數(shù)據(jù)查詢等服務(wù)。當(dāng)用戶注冊賬號由PKI(Public key Infrastructure,公鑰基礎(chǔ)結(jié)構(gòu))獲得數(shù)據(jù)證書,作為上傳數(shù)據(jù)和查詢數(shù)據(jù)的安全保障。
煤礦隱患管理系統(tǒng)中記錄各個煤礦的隱患處理的相關(guān)數(shù)據(jù)并上傳至區(qū)塊鏈網(wǎng)絡(luò),為監(jiān)管部門隱患處理溯源和各個煤礦的學(xué)習(xí)、參考提供可靠的依據(jù)。煤礦隱患管理系統(tǒng)的主要功能有:基本信息管理,各環(huán)節(jié)信息存儲和信息查詢等功能。
由于區(qū)塊鏈網(wǎng)絡(luò)中節(jié)點眾多,而且隱患涉及面廣,內(nèi)容量大,如果全存儲中區(qū)塊鏈中會導(dǎo)致上傳速度緩慢,對區(qū)塊鏈網(wǎng)絡(luò)中節(jié)點的硬件要求也會很高。因此采用“鏈上+鏈下”的雙存儲機制,如圖4所示,并采用隱私數(shù)據(jù)分級模式,將涉及到機密的數(shù)據(jù)進行設(shè)置權(quán)限,滿足不同權(quán)限的使用。各個環(huán)節(jié)的節(jié)點將相關(guān)信息上傳系統(tǒng),系統(tǒng)將詳細信息通過各節(jié)點的本地數(shù)據(jù)庫進行存儲,同時將詳細數(shù)據(jù)進行摘要提取生成對應(yīng)哈希值并通過智能合約設(shè)置數(shù)據(jù)權(quán)限后錄入?yún)^(qū)塊鏈。區(qū)塊記錄與數(shù)據(jù)庫之間數(shù)據(jù)相互映射,用戶可通過區(qū)塊鏈驗證數(shù)據(jù)庫數(shù)據(jù)是否被篡改。通過這種方式,既能實現(xiàn)提升區(qū)塊鏈的運行效率,同時也保證數(shù)據(jù)的安全可靠。
圖4 隱患數(shù)據(jù)上鏈流程
3.2.1 數(shù)據(jù)查詢流程
煤礦隱患管理系統(tǒng)中,查詢者通過智能合約進行數(shù)據(jù)查詢,如圖5所示。其中查詢者根據(jù)所屬單位的不同,可分為監(jiān)管部門、本企業(yè)人員和其他人員,不同身份的節(jié)點擁有不同的查詢權(quán)限。
圖5 隱患方案查詢流程
當(dāng)用戶需要查詢隱患數(shù)據(jù)庫時,構(gòu)造查詢請求R如式(1)所示,向聯(lián)盟鏈中的節(jié)點發(fā)送查詢請求等待查詢結(jié)果。被查詢的信息會使用查詢者的公鑰加密后返回給用戶,用戶使用自己的私鑰解密即可得到查詢的相關(guān)信息。
式(1)中,Query表示該請求為查詢請求;Type表示查詢的類型;Key表示查詢記錄類型的關(guān)鍵詞;Puk為查詢者公鑰。
3.2.2 數(shù)據(jù)查詢算法優(yōu)化
(1)倒排索引為提高信息的檢索效率,采用倒排索引機制的對區(qū)塊鏈中信息進行查詢。如圖6所示,將區(qū)塊記錄到關(guān)鍵詞的映射轉(zhuǎn)化為關(guān)鍵詞到區(qū)塊記錄的映射。通過關(guān)鍵詞能夠快速定位到信息編號,從而進一步查詢隱患的詳細信息。關(guān)鍵詞的索引結(jié)構(gòu)如式(2)所示:
圖6 隱患信息追溯流程
式(2)中,鍵Key為查詢的關(guān)鍵詞;ID為記錄編號;Stage為記錄所處隱患管理流程的環(huán)節(jié)。當(dāng)相同ID的記錄上鏈時,索引將進行用最新記錄替換上一階段記錄;block Num,transaction Num為記錄信息所處的區(qū)塊序號和區(qū)塊鏈編號。
(2)指針?biāo)饕?/p>
根據(jù)煤礦隱患不同階段間具有一定關(guān)聯(lián)性的特點,構(gòu)建指針機制,指針作為記錄的一部分存儲于記錄數(shù)據(jù)中,指向該記錄上階段在區(qū)塊鏈中的地址,通過查詢最新記錄便能得到該隱患的全部相關(guān)信息。
倒排索引和指針?biāo)饕餐M成新的索引機制INPTR(Inverted-Pointer)進行追溯查詢時,輸入所要查詢隱患進行追溯查詢,如圖7所示。
圖7 倒排索引
①通過根據(jù)查詢屬性的倒排索引找到所需信息的最新記錄TA2;
②然后通過TA2中的指針進行直接查詢上一階段記錄TA1;
③遞歸此操作直至記錄TA0指針為空,便可檢索出該隱患的全部信息,從而提高查詢效率。
基于INPTR索引機制的查詢算法的形式化描述如表2所示。
表2 隱患溯源查詢
區(qū)塊鏈系統(tǒng)實驗測試環(huán)境如表3所示,為驗證提出模型的可行性,使用開源的企業(yè)級許可分布式賬本技術(shù)平臺Hyperledger Fabric部署區(qū)塊鏈系統(tǒng)測試網(wǎng)絡(luò),部署2個Order節(jié)點,4個peer節(jié)點對煤礦隱患管理系統(tǒng)進行簡易模擬。
表3 系統(tǒng)測試環(huán)境
在搭建好的環(huán)境中,通過鏈碼將煤礦隱患數(shù)據(jù)進行數(shù)據(jù)上鏈,并進行對隱患編碼進行追溯查詢。圖8為系統(tǒng)進行相關(guān)數(shù)據(jù)的上鏈操作,圖9,圖10分別為根據(jù)隱患編碼和隱患類型進行追溯的示例。
圖8 隱患數(shù)據(jù)上鏈圖
圖9 編號查詢
圖10 隱患類型查詢
為測試系統(tǒng)性能,對數(shù)據(jù)上鏈和INPTR索引查詢進行測試。圖11為數(shù)據(jù)錄入響應(yīng)時間,在相同時間內(nèi)向系統(tǒng)發(fā)送10條、20條、30條、40條記錄信息。隨著記錄數(shù)量的增加,系統(tǒng)響應(yīng)時間增大,但整體上,滿足系統(tǒng)的使用需求。
圖11 上鏈時間
圖12記錄了不同區(qū)塊數(shù)量的情況下,常規(guī)查詢[6]與INPTR索引查詢的性能比較。常規(guī)查詢的時間呈現(xiàn)線性增長的趨勢,而INPTR索引的查詢的時間增長幅度十分緩慢。因為進行了大量的無效查詢,而INPTR索引查詢僅需要查詢到最近的相關(guān)記錄,便可根據(jù)記錄中的數(shù)據(jù)對相關(guān)數(shù)據(jù)進行直接查詢。
圖12 查詢時間比較
將區(qū)塊鏈技術(shù)嵌入煤礦隱患管理中,構(gòu)建了區(qū)塊鏈賦能煤礦隱患管理的創(chuàng)新模式。是將區(qū)塊鏈應(yīng)用于煤礦隱患管理系統(tǒng)的初步探索,為煤礦隱患管理系統(tǒng)的理論研究和實踐發(fā)展提供了新的思路。后續(xù)的研究是將二者更好的融合,對系統(tǒng)細節(jié)進行優(yōu)化,進一步發(fā)掘區(qū)塊鏈再煤礦隱患管理中的應(yīng)用價值。