基于区块链的煤矿隐患管理系统研究①
2022-08-24周华平
周华平, 周 潮
(安徽理工大学计算机科学与工程学院,安徽 淮南 232001)
0 引 言
煤矿的许多事故都是由于事故隐患未被及时发现或未得到有效治理而酿成的,因此建立科学,完善的煤矿隐患管理系统对与解决煤矿隐患意义重大[1]。近年来,区块链技术以去中心化、公开性、防篡改和可追溯[2]等特性,引发起了广泛的关注,为数据的安全存储、流通、共享提供了新的解决思路,在数据保护、资源共享等领域得到逐步运用。[4]研究将区块链技术应用到煤矿隐患管理中,通过区块链技术完善现有隐患管理系统的不足,在保障煤矿隐患数据安全存储的同时使各个煤矿企业共同构建煤矿隐患库,实现隐患解决方案的共享。力求通过创新模式的构建解决现有隐患管理系统的局限,提高整体隐患处理能力,从而实现高效、安全的隐患管理。
1 区块链及相关技术
1.1 区块链技术
区块链技术是由多种技术结合形成的一种的全新应用模型,通过结合密码学、分布式存储、共识机制和P2P网络等技术实现了交易数据的透明、不可篡改以及可追溯等特性。与传统数据库相比,区块链实现了数据的可靠性保障及数据的防篡改,并能够对数据进行即时验证和高效追溯。
1.2 区块结构
区块链本质是一种将数据区块以时间顺序相连的一种链式数据结构。如图1所示,每个数据区块包含区块头和区块体两部分,其中区块头包含前区块的Hash,目标哈希和Merkel根等信息,有效防止单个节点数据遭到篡改和遗失,区块体作为交易的集合。
图1 区块结构
1.3 区块链的分类
根据网络范围和参与节点特性,可将区块链分为公共链、联盟链和私有链三类,不同性质的区块链对比表如表1所示。结合系统对隐患存储和方案共享的需求,因此采用联盟链的形式构建煤矿隐患管理系统,降低中心化程度保障效率。
表1 区块链分类及特点
效率 低 高 高公开化程度 完全公开 公开或限定 公开或限定
2 煤矿隐患管理系统设计
2.1 隐患管理系统流程分析
在隐患管理中,煤矿安全隐患的闭环流程可以分为“录入-整改-验收-消解”,如图2所示。其中各个环节数据都需要记录在数据库中,便于后续的追溯查询,各个环节功能如下:
图2 隐患处理流程
1)上报:当发现隐患后,将其发现时间、隐患地点、隐患类型、隐患描述等详细内容上报系统。
2)整改:发现有隐患上报,并制定详细的治理计划并确定计划完成时间和负责人。
3)验收:安检部门对隐患进行验收,若处理不合格或逾期未处理,重新制定整改措施。
4)消解:安检部门验收完的隐患信息再返回排查处,由排查人员审核,消除隐患信息。
2.2 系统框架模型设计
基于区块链的煤矿隐患管理系统根据功能将其划分为数据层、区块链核心层和用户层,如图3所示。
图3 系统总体框架
(1)数据层负责保存上传的隐患信息,将录入到的信息进行整理,以规定的格式存储到最新区块中,是整个系统查询的数据的最终来源。
(2)区块链核心层是煤矿隐患管理系统的核心,执行关键的业务逻辑。包括根据用户请求类型,执行对应智能合约;进行共识机制管理,保障节点数据的一致;同时也负责对查询请求进行身份管理。
(3)用户层是煤矿隐患管理系统与用户交互的客户端所在层,提供包括用户的注册、数据上链和数据查询等服务。当用户注册账号由PKI(Public key Infrastructure,公钥基础结构)获得数据证书,作为上传数据和查询数据的安全保障。
3 设计系统功能模块
煤矿隐患管理系统中记录各个煤矿的隐患处理的相关数据并上传至区块链网络,为监管部门隐患处理溯源和各个煤矿的学习、参考提供可靠的依据。煤矿隐患管理系统的主要功能有:基本信息管理,各环节信息存储和信息查询等功能。
3.1 数据存储模型
由于区块链网络中节点众多,而且隐患涉及面广,内容量大,如果全存储中区块链中会导致上传速度缓慢,对区块链网络中节点的硬件要求也会很高。因此采用“链上+链下”的双存储机制,如图4所示,并采用隐私数据分级模式,将涉及到机密的数据进行设置权限,满足不同权限的使用。各个环节的节点将相关信息上传系统,系统将详细信息通过各节点的本地数据库进行存储,同时将详细数据进行摘要提取生成对应哈希值并通过智能合约设置数据权限后录入区块链。区块记录与数据库之间数据相互映射,用户可通过区块链验证数据库数据是否被篡改。通过这种方式,既能实现提升区块链的运行效率,同时也保证数据的安全可靠。
图4 隐患数据上链流程
3.2 数据查询模块
3.2.1 数据查询流程
煤矿隐患管理系统中,查询者通过智能合约进行数据查询,如图5所示。其中查询者根据所属单位的不同,可分为监管部门、本企业人员和其他人员,不同身份的节点拥有不同的查询权限。
图5 隐患方案查询流程
当用户需要查询隐患数据库时,构造查询请求R如式(1)所示,向联盟链中的节点发送查询请求等待查询结果。被查询的信息会使用查询者的公钥加密后返回给用户,用户使用自己的私钥解密即可得到查询的相关信息。
式(1)中,Query表示该请求为查询请求;Type表示查询的类型;Key表示查询记录类型的关键词;Puk为查询者公钥。
3.2.2 数据查询算法优化
(1)倒排索引为提高信息的检索效率,采用倒排索引机制的对区块链中信息进行查询。如图6所示,将区块记录到关键词的映射转化为关键词到区块记录的映射。通过关键词能够快速定位到信息编号,从而进一步查询隐患的详细信息。关键词的索引结构如式(2)所示:
图6 隐患信息追溯流程
式(2)中,键Key为查询的关键词;ID为记录编号;Stage为记录所处隐患管理流程的环节。当相同ID的记录上链时,索引将进行用最新记录替换上一阶段记录;block Num,transaction Num为记录信息所处的区块序号和区块链编号。
(2)指针索引
根据煤矿隐患不同阶段间具有一定关联性的特点,构建指针机制,指针作为记录的一部分存储于记录数据中,指向该记录上阶段在区块链中的地址,通过查询最新记录便能得到该隐患的全部相关信息。
倒排索引和指针索引共同组成新的索引机制INPTR(Inverted-Pointer)进行追溯查询时,输入所要查询隐患进行追溯查询,如图7所示。
图7 倒排索引
①通过根据查询属性的倒排索引找到所需信息的最新记录TA2;
②然后通过TA2中的指针进行直接查询上一阶段记录TA1;
③递归此操作直至记录TA0指针为空,便可检索出该隐患的全部信息,从而提高查询效率。
基于INPTR索引机制的查询算法的形式化描述如表2所示。
表2 隐患溯源查询
4 系统平台实现与测试
4.1 系统搭建
区块链系统实验测试环境如表3所示,为验证提出模型的可行性,使用开源的企业级许可分布式账本技术平台Hyperledger Fabric部署区块链系统测试网络,部署2个Order节点,4个peer节点对煤矿隐患管理系统进行简易模拟。
表3 系统测试环境
4.2 功能测试
在搭建好的环境中,通过链码将煤矿隐患数据进行数据上链,并进行对隐患编码进行追溯查询。图8为系统进行相关数据的上链操作,图9,图10分别为根据隐患编码和隐患类型进行追溯的示例。
图8 隐患数据上链图
图9 编号查询
图10 隐患类型查询
4.3 性能测试
为测试系统性能,对数据上链和INPTR索引查询进行测试。图11为数据录入响应时间,在相同时间内向系统发送10条、20条、30条、40条记录信息。随着记录数量的增加,系统响应时间增大,但整体上,满足系统的使用需求。
图11 上链时间
图12记录了不同区块数量的情况下,常规查询[6]与INPTR索引查询的性能比较。常规查询的时间呈现线性增长的趋势,而INPTR索引的查询的时间增长幅度十分缓慢。因为进行了大量的无效查询,而INPTR索引查询仅需要查询到最近的相关记录,便可根据记录中的数据对相关数据进行直接查询。
图12 查询时间比较
5 结 语
将区块链技术嵌入煤矿隐患管理中,构建了区块链赋能煤矿隐患管理的创新模式。是将区块链应用于煤矿隐患管理系统的初步探索,为煤矿隐患管理系统的理论研究和实践发展提供了新的思路。后续的研究是将二者更好的融合,对系统细节进行优化,进一步发掘区块链再煤矿隐患管理中的应用价值。