工业传感器网络中基于区块链技术的数据验证方法与流程

文档序号:18542938发布日期:2019-08-27 21:24阅读:1146来源:国知局
工业传感器网络中基于区块链技术的数据验证方法与流程

本发明属于大规模工业无线传感器网络数据验证方法。



背景技术:

随着传统工业领域技术和市场需求的日益提高,无线传感器网络成为工业领域的重要发展方向之一。工业现场环境复杂,尤其是节点数目和数据量繁多的大规模工业无线传感器网络(industrialwirelesssensornetworks,iwsns),数据的可靠性直接关系到工业任务的质量甚至是工业控制系统的安全。因此,研究一种能够保证大规模iwsns数据可靠性的路由算法具有重要意义。



技术实现要素:

本发明的目的,是提供一种工业传感器网络中基于区块链技术的数据验证方法。应用本方法,能够有效的验证数据的准确性,提高数据传输的可靠性,从而使工业控制系统具有较高的可靠性和安全性。

采用的技术方案是:

工业传感器网络中基于区块链技术的数据验证方法,是一种保证大规模iwsns数据可靠性的技术,主要内容包括:提出网络模型,我们将采用具有多个sink节点的网络模型,以此来减少数据传输距离和传输时延;为确保数据的一致性,我们采取双路径传输的数据传输机制;为减少计算量,我们重新构建了数据区块结构,并提出了大规模iwsns的数据共识算法;最后,阐述了数据验证方法的执行过程。具体包括:

⑴、网络模型设计

基于密封第一价格拍卖博弈的可靠路由算法采用多sink节点的网络模型。在该模型中,我们借鉴已有的多sink节点优化部署方法,基于栅格网络结构,得到保证网络寿命最大化的同时使网络成本最低的sink节点个数n,最终确定在监控区域中均匀的部署个sink节点。根据网络模型,提出sink节点编号、邻居sink节点、目的sink节点等相关定义。

⑵、基于区块链技术的数据验证方法

考虑到传感器节点的计算能力、存储能力以及能量等资源有限,我们将分布式账本部署在网络中的sink节点上,分布式账本由监控区域中所有的sink节点共同维护,保证了数据的不可篡改。在数据从源节点传输到sink节点的过程中,采用双路径传输的方式来保证数据的一致性。最后重新构建了数据区块结构,提出了大规模iwsns的数据共识算法。

⑶、算法执行过程

step1:目的sink节点收到数据,采用哈希函数计算出数据对应的哈希值,并写进待验证数据区块中。

step2:目的sink节点将待验证数据区块发送给其它sink节点,等待验证。

step3:收到待验证数据区块的sink节点在自己的账本中查找前一区块。

step4:检查查找到的前一区块是否存在下一区块。如果不存在就将待验证区块连接到前一区块后面,等待验证;如果存在,转向step5。

step5:检查前一区块的目的sink节点和区块哈希值是否与待验证区块相同。如果相同,返回验证结果为true;如果不同,转向step6。

step6:继续查找下一区块的目的sink节点和哈希值是否和待验证区块相同。如果相同,返回验证结果为true;如果不同,继续重复此过程,直到没有下一区块为止。

step7:在前一区块后面的链式结构中,以时间戳顺序将待验证区块连接在相应的位置,等待验证。

step8:step4和step7中等待验证的区块达到等待时间阈值,返回验证结果为false。

step9:目的sink节点统计其它sink返回的验证结果,如果true的个数超过验证sink节点个数的50%,则将数据标记为正确数据并发送给管理中心。反之,将数据标记为出错数据并发送给管理中心。

本发明采用多sink节点的网络模型,能够避免网络空洞,减少数据的传输距离和时延,延长网络寿命;为了避免传感器节点消耗更多的能量,将分布式账本部署在监控区域中的多个sink节点,去中心化的特点保证了网络的安全性;由于传统的区块链技术中,共识算法需要强大的计算能力,因此本发明提出了轻量的数据共识算法并定义了大规模iwsns的数据区块结构,减少了网络时延;在数据验证过程中,采用哈希函数的方式将数据进行加密,以去信任化的方法对数据进行验证,保证了数据的准确性和安全性。

附图说明

图1是本发明多sink节点网络结构示意图。

图2是本发明网络模型结构示意图。

图3是传统的区块结构示意图。

图4是传统的大规模iwsns数据区块结构示意图。

具体实施方式

工业传感器网络中基于区块链技术的数据验证方法,从大规模iwsns数据可靠传输的角度出发,选择具有多sink节点的网络模型来减少网络中数据传输的距离和时延,延长网络寿命。对区块链技术的区块结构和共识算法进行研究和改进,验证数据的准确性。

算法的优势在于:首先仔细研读和分析了数据可靠性相关的文档,在理论上基本掌握了大规模iwsns数据传输的实际需求;其次,分析和比较现存的验证数据方面的相关技术,在网络中的sink节点部署分布式账本,并且建立了轻量的数据区块结构;在该模型的基础上,结合大规模iwsns网络结构的特点,提出了数据共识算法,为数据的验证提供了理论基础与支持。最后,完成了基于区块链技术的数据验证方法的设计与实现。

基于区块链技术的数据验证方法,其技术特征包括以下部分:

1、网络模型假设

算法采用多sink节点的网络结构,如图1所示。传感器节点将感知到的数据发送给sink节点,sink节点对数据进行处理,最后由sink节点将数据发送给管理中心。

算法采用的网络模型如图2所示。我们假设监控区域为正方形区域,借鉴已有的多sink节点优化部署方法,基于栅格网络结构,提出多sink节点下的网络寿命模型和成本模型,通过计算最大网络寿命成本比(rlc)的方法,得到保证网络寿命最大化的同时使网络成本最低的sink节点个数n。最终确定在监控区域中均匀的部署个sink节点。

根据以上模型,提出相关定义:

定义1(sink节点编号si):对sink节点以行优先升序的方式进行编号,则sink节点矩阵为:

定义2(sink节点类别):将sink节点划分为三个类别,分别用集合class_1,class_2,class_3表示。class_1为在监测区域四角的sink节点集合,即class_2为靠近监控区域四个边的节点集合,即class_3为其它sink节点集合。

定义3(邻居sink节点集nsi):sink节点si水平与垂直方向的相邻的sink节点组成的集合,用nsi(neighbornodes)表示。

因此,class_1中每个sink节点有2个邻居节点,class_2中每个sink节点有3个邻居节点,class_3中每个sink节点有4个邻居节点。

对于class_1:ns1={s2,s1+n},nsn={sn-1,s2n},

对于class_2:{s1+n,s1+2n,…,s1+(n-2)n}的nsi={si-n,si+1,si+n},{s2,s3,…,sn-1}的nsi={si-1,si+1,si+n},的nsi={si-n,si+n,si-1},的nsi={si-n,si+1,si-1};

对于class_3:si的nsi={si-n,si+1,si+n,si-1}。

定义4(目的sink节点集dsi):每个传感器节点都会存在且唯一存在于一个sink节点的网格范围内,这个sink节点和它的邻居sink节点所构成的集合,称为这个传感器节点的目的sink节点集,用dsi(destinationnodes)表示。

2、基于区块链技术的数据验证方法

分布式账本的部署:

考虑到传感器节点的计算能力、存储能力以及能量等资源有限,我们将分布式账本部署在网络中的sink节点上,分布式账本由监控区域中所有的sink节点共同维护,保证了数据的不可篡改。

数据一致性方法:

为了保证sink节点收到的数据的一致性,在数据从源节点传输到sink节点的过程中,采用以下数据传输策略:

(1)源节点将目的sink节点集内距离自己最近的两个sink节点作为目的sink节点;

(2)源节点根据其邻居列表,以拍卖博弈的方法分别确定到两个目的sink节点的两个传感器节点作为下一跳节点,并将需要发送的数据发送给两个下一跳节点;

(3)中继节点以同样的方式确定一个下一跳节点,最终数据分别传输到两个目的sink节点;

(4)sink节点之间共享数据,对数据进行准确性验证并对检验结果做出相应的处理,最后将处理后的数据发送给管理中心。

数据区块结构:

传统的区块结构如图3所示。区块结构包括区块头和区块体,其中区块头中存储了版本号。前一区块的哈希值、时间戳、随机数、目标哈希以及区块体中交易的merkle根。

传统的区块结构中,随机数和目的哈希是共识算法中的两个重要部分。为了使区块链技术更好的应用于大规模iwsns,提出了大规模iwsns的数据共识算法,并构建了轻量的数据区块结构,区块中存储了版本号、前一区块的哈希值、时间戳、目的sink节点和当前区块的哈希值,如图4所示。

数据共识算法:

由于传统的区块链技术中,共识算法依赖于强大的计算能力,这并不适用于计算能力相对较差的大规模iwsns。因此,我们提出了大规模iwsns中的数据共识算法:

(1)收到数据的sink节点,运用哈希函数将数据转变为对应的哈希值,每个哈希值对应唯一的数据,且通过哈希值,不可以恢复原始数据。

(2)收到数据的sink节点将数据的相关信息存储到数据区块中,并将数据区块发送给验证sink节点,等待验证结果。

(3)sink节点收到来自其它sink节点的数据,通过查找账本的方式对数据进行验证,并且将验证结果反馈给等待验证的sink节点。

(4)收到验证结果的sink节点,检查来自不同验证sink节点的验证结果。如果通过验证的sink节点数量大于验证sink节点总数的50%,就认为数据是准确的,反之,认为数据是错误的。

(5)收到验证结果的sink节点根据验证结果,对数据进行处理,最后将数据发送给管理中心。

3、数据验证方法执行过程

step1:目的sink节点收到数据,采用哈希函数计算出数据对应的哈希值,并写进待验证数据区块中。

step2:目的sink节点将待验证数据区块发送给其它sink节点,等待验证。

step3:收到待验证数据区块的sink节点在自己的账本中查找前一区块。

step4:检查查找到的前一区块是否存在下一区块。如果不存在就将待验证区块连接到前一区块后面,等待验证;如果存在,转向step5。

step5:检查前一区块的目的sink节点和区块哈希值是否与待验证区块相同。如果相同,返回验证结果为true;如果不同,转向step6。

step6:继续查找下一区块的目的sink节点和哈希值是否和待验证区块相同。如果相同,返回验证结果为true;如果不同,继续重复此过程,直到没有下一区块为止。

step7:在前一区块后面的链式结构中,以时间戳顺序将待验证区块连接在相应的位置,等待验证。

step8:step4和step7中等待验证的区块达到等待时间阈值,返回验证结果为false。

step9:目的sink节点统计其它sink返回的验证结果,如果true的个数超过验证sink节点个数的50%,则将数据标记为正确数据并发送给管理中心。反之,将数据标记为出错数据并发送给管理中心。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1