APP下载

区块链技术在煤矿隐患管理中的应用

2021-06-10周华平姚尚军丁金虎孙克雷

无线电通信技术 2021年3期
关键词:共识隐患区块

周华平,张 晴*,姚尚军,丁金虎,孙克雷

(1.安徽理工大学 计算机科学与工程学院,安徽 淮南 232001; 2.淮北矿业集团,安徽 淮北 235000)

0 引言

计算机技术飞速发展,煤矿企业的信息化、数字化水平不断提高,推动安全生产从静态管理向动态管理、从被动管理向主动管理的转变[1]。目前国内煤矿企业在隐患管理方面采用中心化的管理方式,这存在以下几大弊端:① 隐患数据存在被篡改风险,事故发生后难以追查定责;② 隐患整改落实情况不透明,各级监管部门无法及时掌握整改动态;③ 众多煤矿在隐患方面具有极大相似性,隐患数据共享对于其他煤矿发现自身隐患具有极大的参考价值,而传统中心化管理方式在共享方面有诸多不便。

区块链技术具有去信任、去中心化、开放自治、匿名可追溯、信息不可篡改等特性[2],为数据的安全存储、流通、共享等问题提供了新的解决思路。在电子档案管理方面,苏联灯基于区块链技术构建了一种面向数字档案系统的安全管理方法与机制[3]。在证据保全方面,李耀呈提出结合区块链具有天然的信任性优势,将其应用到电子证据的保全中[4]。在数字版权的保护与交易上,李超等人设计了一种数字版权保护和交易联盟链,提取数字内容的特征值加密后上链[5]。在医疗领域,Shae和Tsai提出了一种用于医疗数据共享和存储应用的区块链架构[6]。Xia等人设计了MedShare,一个针对医疗大数据保管人的病历共享系统[7]。

基于区块链技术在各行业的研究应用,探索其在煤矿隐患信息管理方面的应用潜力。改进区块链技术在数据存储方面的不足,设计了一种将区块链存储和传统数据库相结合的存储方式。鉴于区块链系统数据同步慢的问题,设计把系统中节点分为共识服务节点和同步节点的方案,改善PBFT算法的可扩展性和共识效率。

1 区块链技术

区块链是多种技术的创新性组合利用,其中包括密码学技术、对等网络、共识机制以及智能合约等,实现去中心化的分布式基础架构和计算范式。从数据存储角度看,区块链是一个提供安全、可信数据管理功能的分布式账本系统。

狭义上区块链包含数据区块以及区块之间的链式数据结构,如图1所示。

图1 区块链数据结构Fig.1 Blockchain data structure

数据区块是一种大小固定的容器性质的数据结构,包含3组元数据:父块哈希值(PreHash)、区块内数据哈希值(MerkleRoot)以及共识相关字段(ConsRelated)。区块内数据的存储方式一般采取Merkel tree结构,区块间的顺序链接通过父区块哈希值来实现。在去中心化的分布式系统中,节点间依靠基于信息传递的共识机制来达成一致,常用的共识算法有工作量证明PoW、权益证明PoS、股份授权证明DPoS、PBFT共识算法以及Raft等[8]。根据区块链系统的去中心化程度不同,选择适合的共识机制来确保各节点维持区块链数据的一致性和不可篡改性。

2 煤矿安全隐患闭环管理

煤矿安全隐患需及时治理,降低隐患事故发生的可能性,煤矿安全隐患的闭环管理流程如图2所示,一般包含以下4个阶段[9]:

① 隐患辨识排查。煤矿安全部门人员进行煤矿安全隐患辨识、排查,形成隐患排查记录,按时公布隐患排查信息。

② 隐患分析上报。煤矿的隐患排查记录和治理流程等详细信息,应及时分析、上报,形成隐患排查电子账簿。

③ 隐患整改。隐患的整改应由专业人员进行,煤矿安全部门应对隐患治理进行跟踪监督。

④ 验收消解。安监部门及时对已整治隐患进行现场复查验收,验收资料应齐全且备份存档报备,验收合格后闭合该隐患。

基于区块链的煤矿安全隐患管理模型同样按照闭环管理流程实施隐患信息管理,实现对煤矿安全隐患科学有效的处理。

图2 煤矿安全隐患闭环管理流程Fig.2 Closed-loop management process of coal mine hidden risks

3 基于联盟链的煤矿隐患信息管理模型

3.1 隐患管理区块链系统架构

区块链可以分为 3 类:公有链、联盟链和私有链[10]。联盟链可以根据应用场景来决定开放程度,具有相对严格的准入机制和监管措施,其网络由成员机构共同维护,节点通过成员机构的网关节点接入区块链网络,参与的多方实体基于一定的信任前提和利益关联,为目前各行业场景下多成员机构对动态数据的安全存储、管理、授权访问和监管提供了新的解决方案。煤矿隐患信息管理系统的应用场景与联盟链的特点契合,选用联盟链作为煤矿隐患管理系统的基本区块链架构。基于联盟链的煤矿隐患管理架构包含两部分:服务层和区块链网络,如图3所示。

基于联盟链的煤矿隐患信息管理架构是由多个分布式节点(煤矿企业实体和监管机构实体等)组成。这些节点构成了一个点对点(P2P)网络,通信层基于gRPC,并利用TLS进行相互身份验证,采用Gossip协议进行节点间互相发现和数据传输。存储模块由两部分组成:链上存储和链下存储,链上存储采用CouchDB与LevelDB;链下存储采用中心化数据库来实现。利用改进后的PBFT共识算法完成共识验证服务。通过智能合约建立起各煤矿企业之间的数据共享关系以及监管机构对煤矿企业的安全隐患监管关系,为服务层提供功能实现。服务层创建模块化的应用程序接口整合各个机构的接入,优化机构间的协同操作。

图3 隐患管理区块链架构Fig.3 Hidden risks management blockchain architecture

3.2 隐患数据安全分离存储

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可以验证本次操作的有效性和合法性。

3.3 改进的PBFT共识算法

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) ClientSenttoPrimary;(2) if (signatures,v=current v,isOnly,h;(4) Add(,)toLog;(5) if (signature,v=current v,handAddIttoLog;(7) if (m,,count(match)>= 2f)inLog(8) prepared(m,v,n,i)isTrue;(9) if (signature,v=current v,handAddIttolog;(11) if (prepared (m,v,n,i) isTrue,count(match)>= 2f+1))(12) committed-local(m,v,n,i)isTrue;(13) if (count (prepared(m,v,n,i)isTrue) >= f+1))(14) committed(m,v,n)isTrue;(15) ReplicasPerformTheRequestAndSend toClient;(16) if (count()>=f+1)(17) Finish.

3.4 智能合约设计

该煤矿隐患管理链,其功能被解耦为单独的模块化微服务,这些服务使用智能合约构建,并部署在各节点上。通过智能合约,建立起各煤矿企业之间的数据共享关系以及监管机构对煤矿企业的安全隐患监管关系。智能合约保障了区块链中所有节点行为都记录在册,具有溯源性。

煤矿隐患管理链模型构建了3种智能合约,用以将日常隐患管理事务引入区块链: ① 基于访问权限的数据共享合约:访问者通过该合约获取到与其权限匹配数据空间,在该数据空间范围内获取查询结果;② 隐患数据上链合约:通过该合约进行隐患数据上链,该合约对不同等级的安全隐患数据按预先设定的规则进行不同的处理;③ 隐患整改提醒合约:针对临近整改期限和未反馈的隐患进行提醒。

4 实验

在本地局域网内部利用Docker部署16个节点,用来模拟联盟链中的煤矿企业节点和监管机构节点,利用HyperledgerFabric2.2 工具[13]进行煤矿安全隐患管理联盟链的搭建。

4.1 共识效率测验

将节点划分功能加入到共识模块,由于出块时间与节点划分频率、总节点数量、拜占庭节点数量以及交易量相关。基于此,本文设计以每5块为一个恒定节点划分频率,总节点数为16个,每个区块打包交易量为2 000笔。设置拜占庭节点个数f分别为1,2,3,4,5,进行多次测试,得到节点划分前后系统的平均出块时间,对比结果如图5所示。

图5 改进前后出块时间图Fig.5 Block time before and after improvement

从图5可以看出,在拜占庭节点数目远小于系统容错数量时,节点划分前后出块时间差异较大;随着拜占庭节点数目接近系统容错空间,节点划分前后出块时间差异越来越小;当达到系统最大容错数量时,改进前后出块时间趋于相等。

4.2 两种存储方式对比分析

基于区块链的煤矿隐患管理模型采用链上链下分离存储方式,重大安全隐患信息与一般安全隐患信息的数据量以2:8的比例逐渐增加时,对比完全链上存储和链上链下分离存储两种存储方式添加数据时的响应时间,结果如图6所示,可以看出在添加数据时,链上链下分离存储的方式响应时间更快,表现更优异。

图6 两种存储方式响应时间对比分析Fig.6 Comparison of the response time of the two storage modes

5 结论

区块链技术在数据管理与共享方面的优势受到广泛的关注、研究与实践。本文将区块链技术与煤矿隐患数据管理创新结合,提出链上链下分离存储的方案,解决了区块链信息冗余和存储空间不足的问题。采用节点划分,提高PBFT共识算法的扩展性和共识效率。这将有助于实现监管机构对煤矿隐患整改情况的实时动态监管和隐患数据的共享,有利于充分挖掘隐患数据在安全生产方面的价值,形成隐患管理新模式,助力煤矿行业信息化、智能化改革。

猜你喜欢

共识隐患区块
隐患随手拍
隐患随手拍
互联网安全隐患知多少?
隐患随手拍
共识 共进 共情 共学:让“沟通之花”绽放
区块链:一个改变未来的幽灵
论思想共识凝聚的文化向度
区块链:主要角色和衍生应用
商量出共识
区块链+媒体业的N种可能