一种基于混合链的数据安全交换和运算方法与流程

文档序号:22833633发布日期:2020-11-06 16:24阅读:146来源:国知局
一种基于混合链的数据安全交换和运算方法与流程
本发明涉及区块链中的一种数据处理交换方法,特别是涉及一种基于混合链的数据安全交换和运算方法。
背景技术
:随着科技的发展,数据量呈指数级的增加,这使得政府、企业和其他主体掌握着大量的数据资源,但由于缺少安全、可靠的数据共享交换协同机制,导致数据孤岛现象明显。传统情况下,为实现数据共享交换都是采用数据直接集中和处理的方式,将多方的数据直接调取汇集在本地进行中心化存储,然而这种方式存在数据安全、隐私泄露等问题。与此同时,由于很多隐私数据不能出私域,无法直接采用调用源数据的方式实现数据共享交换,因此很大范围的数据还是处于未被利用的状态。为充分发挥数据价值,实现数据的安全流通和使用,需要在授权的情况下合理、安全地使用数据,还需要实时追踪数据流向和使用过程,以确保数据的真实性和安全性。技术实现要素:为了克服上述现有技术的不足,本发明提供了一种基于混合链的数据安全交换和运算方法,旨在通过智能、安全的方式进行数据融合和使用,在保证数据隐私安全和归属权的前提下充分进行数据安全交换和运算。本发明所采用的技术方案是:a)用户发送数据调用请求,接收到数据调用请求的节点作为初始节点,初始节点触发智能合约去计算数据调用请求的哈希并将哈希写入所在区块链,然后将数据调用请求作为任务分发给混合链中其他节点;b)接收到任务的节点从混合链运算合约库获取运算合约,对运算合约的源代码的哈希进行链上进行验证,在验证运算合约的正确性后,根据数据调用请求调用对应的本地数据运行运算合约得到结果数据,然后接收到任务的节点计算输入数据、运算合约、结果数据、运算开始时间和运算结束时间的共同哈希值,并写入节点所在区块链网络,将结果数据返回至分发任务的初始节点;c)分发任务的节点接收到混合链中接收到任务的节点运算返回的结果数据,对比所有返回的结果数据,确定结果数据的合理性;d)在确定返回结果合理性后,接收到数据调用请求的节点根据本地数据、返回结果和运算合约计算最终结果,计算输入数据、运算合约、结果数据、运算开始时间和的运算结束时间的哈希值,并写入节点所在区块链网络,并将计算的最终结果返回给用户。本发明所述的节点均为混合链中的节点。所述步骤a)具体包括:a1)用户发送数据调用请求,数据调用请求包括数据查询、汇集、计算,根据实际需要进行选择;a2)混合链中接收到数据调用请求的节点sr计算数据调用请求的哈希并写入所在区块链,并触发智能合约将数据调用请求作为任务分发给混合链中需要的其他n个节点nx,x=1,...,n,x表示节点的序数,n表示混合链中需接收数据调用请求的节点总数;所述混合链是整个区块链网络中涉及多种类型的区块链,包括联盟链、私有链和公有链等,用户向混合链中受理请求的区块链节点发送数据调用请求。所述步骤b)具体包括:b1)接收到任务的节点nx,根据任务从混合链运算合约库所在的代码服务器获取运算合约cx,并计算运算合约cx的源代码的哈希;b2)将计算出的源代码哈希与混合链上原有的源代码哈希进行比对验证,在验证运算合约的正确性后运行运算合约cx,调用与数据调用请求匹配的本地数据作为输入数据data(in,x),根据运算合约cx运算出任务所需的结果数据data(out,x),b3)接收到任务的节点nx,计算输入数据data(in,x)、运算合约cx、结果数据data(out,x)、运算开始时间time(start,x)和运算结束时间time(end,x)的共同哈希值hx,并将共同哈希值hx写入节点nx所在的区块链;hx=h(data(in,x),cx,data(out,x),time(start,x),time(end,x))其中,h(·)为安全哈希函数;b4)节点nx将运算出的结果dataout返回至分发任务的初始节点sr。所述步骤c)具体包括:初始节点sr接收到混合链其他节点nx返回的结果数据data(out,x)后,按照以下方式对比所有返回的结果数据:若其中有节点nx返回的结果数据存在过大偏差时,初始节点sr向存在过大偏差的节点ny发送查验请求m,y∈{1,...,n},以进行本地数据查验,并计算查验请求m的哈希值写入所在区块链,存在过大偏差的节点ny在接收到查验请求m后,先进行自我校验,判定输入数据data(in,y)、运算合约cy和结果数据data(out,y)的正确性:若判定数据及运算方式存在问题,则存在过大偏差的节点ny更新输入数据和运算合约,根据新的运算合约运算新的结果数据data'(in,y)并返回给初始节点sr,并计算更新后的输入数据data'(in,y)、运算合约c'y、结果数据data'(out,y)、运算开始时间time'(start,y)和运算结束时间time'(end,y)的新的共同哈希值h'(data,y),并将新的共同哈希值h'(data,y)写入所在区块链:h'(data,y)=h(data'(in,y),c'y,data'(out,y),time'(start,y),time'(end,y))其中,h(·)为安全哈希函数;若判定数据及运算方式均正确,则存在过大偏差的节点ny发送与数据调用请求匹配的本地数据的调用请求至该本地数据的数据拥有者,在获得数据拥有者的授权w后将输入数据data(in,y)、运算合约cy和结果数据data(out,y)打包返回给初始节点sr,并计算数据拥有者的授权w、授权时间timew、输入数据data(in,y)、运算合约cy和结果数据data(out,y)的共同哈希值写入区块链:hw=h(w,data(in,y),cy,data(out,y),timew)若其中没有节点nx返回的结果数据存在过大偏差时,则所有节点nx返回的结果数据是合理的。所述步骤d)具体包括:d1)初始节点sr利用返回结果运算最终结果:若对比后所有节点nx返回的结果数据是合理的,则初始节点sr调用自身的运算合约cr根据返回的结果数据{data(out,1),...,data(out,n)}、与数据调用请求匹配的自身的本地数据data(in,r)进行运算获得最终的自身结果数据data(out,r),然后计算返回的结果数据{data(out,1),...,data(out,n)}、本地数据data(in,r)、运算合约cr、自身结果数据data(out,r)、运算开始时间time(start,r)和运算结束时间time(end,r)的共同哈希值h(data,r)并写入出示节点sr所在区块链:h(data,r)=h(data(in,r),data(out,1),...,data(out,n),cr,data(out,r),time(start,r),time(end,r))其中,h(·)为安全哈希函数;若对比后所有节点nx返回的结果数据存在较大偏差且判定数据及运算方式存在问题,则节点ny向初始节点sr返回新的结果数据,初始节点sr调用自身的运算合约cr根据返回的新的结果数据{data(out,1),...,data'(out,y),...,data(out,n)}、与数据调用请求匹配的自身的本地数据data(in,r)进行运算获得最终的自身结果数据data(out,r),并计算返回的新的结果数据{data(out,1),...,data'(out,y),...,data(out,n)}、本地数据data(in,r)、运算合约cr、自身结果数据data(out,r)、运算开始时间time(start,r)和运算结束时间time(end,r)的共同哈希值h(data,r)写入初始节点sr所在区块链:h(data,r)=h(data(in,r),data(out,1),...,data'(out,y),...,data(out,n),cr,data(out,r),time(start,r),time(end,r))若对比后所有节点nx返回的结果数据存在较大偏差但判定数据及运算方式均正确,则初始节点sr调用自身的运算合约cr根据返回的结果数据{data(out,1),...,data(out,n)}、与数据调用请求匹配的自身的本地数据data(in,r)进行运算获得最终的自身结果数据data(out,r),然后计算返回的结果数据{data(out,1),...,data(out,n)}、本地数据data(in,r)、运算合约cr、自身结果数据data(out,r)、运算开始时间time(start,r)和运算结束时间time(end,r)的共同哈希值h(data,r)并写入出示节点sr所在区块链:h(data,r)=h(data(in,r),data(out,1),...,data(out,n),cr,data(out,r),time(start,r),time(end,r))d2)初始节点sr将最终的自身结果数据data(out,r)返回发送给用户。本发明通过区块链技术实现多方数据安全交换,将数据任务分发至多个参与方即可安全地获得数据的最终结果。与现有技术相比,本发明的有益效果是:(1)利用区块链技术将任务分发至混合链网络,节点根据任务调用本地数据进行计算后将结果返回,既保证数据归属权和数据隐私又充分使用数据。(2)通过区块链的智能合约完成任务发起、分发、运算和返回的全流程记录,实现数据使用的使用溯源,确保数据的真实性、安全性和结果的准确性。附图说明图1为基于混合链的数据安全交换和运算方法流程说明。具体实施方式下面结合附图对本发明进一步说明。如图1所示,本发明具体实施例和实施方式如下:1)用户为一个输入指令的电子设备。用户需要获取详细信息,将数据调用请求发送至节点sr,接收到请求的节点sr是区块链b1的一个节点,节点sr计算数据调用请求的哈希值写入区块链b1,并触发智能合约将数据调用请求根据内容作为数据处理任务分发给混合链中相关节点,当前任务相关的节点有n=5个,接收到任务的节点为nx,x=1,...,5。各节点情况和接收到的信息如下:节点所在区块链接收到的信息sr区块链b1数据调用请求n1区块链b1数据处理任务n2区块链b2数据处理任务n3区块链b2数据处理任务n4区块链b2数据处理任务n5区块链b3数据处理任务节点sr、n1、n2、n3、n4和n5均为混合链的节点,节点sr和n1在同一个区块链网络,节点n2、n3和n4在同一区块链网络。2)接收到任务的节点nx根据任务从代码服务器获取运算合约,x∈{1,...,5},并计算运算合约的源代码的哈希;节点获取的运算合约运算合约的哈希值n1c1h1n2c2h2n3c3h3n4c4h4n5c5h5每个节点nx本身的工作情况不同,在进行任务处理时所使用的运算合约不同,运算合约对应的哈希值也不同。将计算出的源代码哈希与链上的源代码哈希进行比对验证,在验证运算合约的正确性后运行运算合约,调用本地数据作为输入数据data(in,x)运算出任务所需结果data(out,x):节点运算合约输入数据输出数据运算开始时间运算结束时间n1c1data(in,1)data(out,1)time(start,1)time(end,1)n2c2data(in,2)data(out,2)time(start,2)time(end,2)n3c3data(in,3)data(out,3)time(start,3)time(end,3)n4c4data(in,4)data(out,4)time(start,4)time(end,4)n5c5data(in,5)data(out,5)time(start,5)time(end,5)3)接收到任务的各个节点nx各自计算输入数据data(in,x)、运算合约cx和结果数据data(out,x)、运算开始时间time(star,tx)和运算结束时间time(end,x)的共同哈希值hx,并将哈希值h(data,x)写入节点所在区块链;h(data,x)=h(data(in,x),cx,data(out,x),time(start,x),time(end,x))各个节点nx将运算出的结果数据data(out,x)返回至接收到数据调用请求的节点sr。具体信息如下:节点数据运算的哈希值哈希写入的区块链返回结果n1h(data,1)区块链b1data(out,1)n2h(data,2)区块链b2data(out,2)n3h(data,3)区块链b2data(out,3)n4h(data,4)区块链b2data(out,4)n5h(data,5)区块链b3data(out,5)4)节点sr接收到混合链中接收到任务的节点返回的结果数据data(out,x)后对比所有返回数据:若发现其中某一节点n3返回数据存在过大偏差时,申请本地数据查验:节点sr发送查验请求m至偏差大的节点n3,并计算说明内容的哈希值写入区块链。节点n3在接收到查验请求m后,先进行自我校验,判定输入数据data(in,3)、运算合约c3和结果数据data(out,3)的正确性:a)若判定数据及运算方式存在问题,节点n3更新运算数据和运算合约并重新运算,获得新的结果数据data'(in,3)返回给节点sr,并计算更新后的输入数据data'(in,3)、运算合约c'3和结果数据data'(out,3)、运算开始时间time'(start,3)和运算结束时间time'(end,3)的共同哈希值h'(data,3),将共同哈希值h'(data,3)写入节点所在区块链;h'(data,3)=h(data'(in,3),c'3,data'(out,3),time'(start,3),time'(end,3))b)若判定数据及运算方式均正确,节点n3发送与数据调用请求对应的本地数据调用的申请至数据拥有者,节点n3虽然有本地数据、自身有权限,但是发送给其他节点使用没有权限需要获取数据拥有者的权限,在获得数据拥有者的授权w后将输入数据data(in,3)、运算合约c3和结果数据data(out,3)返回给节点sr,并计算数据拥有者的授权w、授权时间timew、输入数据data(in,3)、运算合约c3和结果数据data(out,3)的哈希值写入区块链:hw=h(w,data(in,3),c3,data(out,3),timew)若未发现明显偏差过大的数据,则所有节点nx返回的结果数据是合理的。5)节点sr利用返回结果运算最终结果:若对比后所有节点nx返回的结果数据是合理的,则节点sr调用自身的运算合约cr根据返回的结果数据{data(out,1),...,data(out,n)}、与数据调用请求匹配的自身的本地数据data(in,r)进行运算获得最终的自身结果数据data(out,r),然后计算返回的结果数据{data(out,1),...,data(out,n)}、本地数据data(in,r)、运算合约cr、自身结果数据data(out,r)、运算开始时间time(start,r)和运算结束时间time(end,r)的共同哈希值h(data,r)并写入出示节点sr所在区块链:h(data,r)=h(data(in,r),data(out,1),...,data(out,5),cr,data(out,r),time(start,r),time(end,r))若对比后所有节点nx返回的结果数据存在较大偏差且判定数据及运算方式存在问题,则节点ny向初始节点sr返回新的结果数据,初始节点sr调用自身的运算合约cr根据返回的新的结果数据{data(out,1),...,data'(out,y)}、与数据调用请求匹配的自身的本地数据data(in,r)进行运算获得最终的自身结果数据data(out,r),并计算返回的新的结果数据{data(out,1),...,data'(out,y)}、本地数据data(in,r)、运算合约cr、自身结果数据data(out,r)、运算开始时间time(start,r)和运算结束时间time(end,r)的共同哈希值h(data,r)写入初始节点sr所在区块链:h(data,r)=h(data(in,r),data(out,1),...,data'(out,3),...,data(out,5),cr,data(out,r),time(start,r),time(end,r))若对比后所有节点nx返回的结果数据存在较大偏差但判定数据及运算方式均正确,则初始节点sr调用自身的运算合约cr根据返回的结果数据{data(out,1),...,data(out,n)}、与数据调用请求匹配的自身的本地数据data(in,r)进行运算获得最终的自身结果数据data(out,r),然后计算返回的结果数据{data(out,1),...,data(out,n)}、本地数据data(in,r)、运算合约cr、自身结果数据data(out,r)、运算开始时间time(start,r)和运算结束时间time(end,r)的共同哈希值h(data,r)并写入出示节点sr所在区块链:h(data,r)=h(data(in,r),data(out,1),...,data(out,n),cr,data(out,r),time(start,r),time(end,r))其中,h(·)为安全哈希函数。节点sr将运算的最终结果data(out,r)返回给用户。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1