基于区块链的去中心化多方数据求交方法及装置与流程

文档序号:32400708发布日期:2022-12-02 18:55阅读:51来源:国知局
基于区块链的去中心化多方数据求交方法及装置与流程

1.本发明涉及区块链技术领域,具体涉及一种基于区块链的去中心化多方数据求交方法及装置。


背景技术:

2.目前需要多个参与方进行数据求交计算的场景,如在多个金融机构中确定是否存在某个客户多头借贷的场景,目前针对这种场景,常用的做法是把数据交由第三方进行求交计算,这样数据会暴露给第三方,若第三方出现作恶,则将出现数据泄露的风险。


技术实现要素:

3.针对现有技术中的问题,本发明实施例提供一种基于区块链的去中心化多方数据求交方法及装置,能够至少部分地解决现有技术中存在的问题。
4.第一方面,本发明实施例提供一种基于区块链的去中心化多方数据求交方法,包括:
5.根据多方求交计算请求,确定区块链网络中参与多方求交计算的各节点中的主节点;
6.在所述主节点通过共识后,若所述主节点为本节点,则将本节点求交数据集中的求交数据发送给各其他节点;
7.根据各所述其他节点对所述求交数据进行求交计算后生成的反馈数据,确定区块链网络中参与多方求交计算的各节点的数据交集。
8.第二方面,本发明提出一种基于区块链的去中心化多方数据求交方法,包括:
9.根据多方求交计算请求,确定区块链网络中参与多方求交计算的各节点中的主节点;
10.在所述主节点通过共识后,若所述主节点为本节点之外的其他节点,则获取所述主节点发送的求交数据;
11.将所述求交数据与本节点求交数据集中的求交数据进行比对,得到数据求交结果;
12.根据所述数据求交结果生成反馈数据并将所述反馈数据发送给所述主节点,其中,所述主节点用于根据其他各节点发送的反馈数据,确定区块链网络中参与多方求交计算的各节点的数据交集。
13.第三方面,本发明实施例提供一种基于区块链的去中心化多方数据求交装置,包括:
14.第一确定模块,用于根据多方求交计算请求,确定区块链网络中参与多方求交计算的各节点中的主节点;
15.发送模块,用于在所述主节点通过共识后,若所述主节点为本节点,则将本节点求交数据集中的求交数据发送给各其他节点;
16.第二确定模块,用于根据各所述其他节点对所述求交数据进行求交计算后生成的反馈数据,确定区块链网络中参与多方求交计算的各节点的数据交集。
17.第四方面,本发明实施例提供一种基于区块链的去中心化多方数据求交装置,包括:
18.确定模块,用于根据多方求交计算请求,确定区块链网络中参与多方求交计算的各节点中的主节点;
19.获取模块,用于在所述主节点通过共识后,若所述主节点为本节点之外的其他节点,则获取所述主节点发送的求交数据;
20.比对模块,用于将所述求交数据与本节点求交数据集中的求交数据进行比对,得到数据求交结果;
21.发送模块,用于根据所述数据求交结果生成反馈数据并将所述反馈数据发送给所述主节点,其中,所述主节点用于根据其他各节点发送的反馈数据,确定区块链网络中参与多方求交计算的各节点的数据交集。
22.第五方面,本发明实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一实施例所述的基于区块链的去中心化多方数据求交方法的步骤。
23.第六方面,本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任一实施例所述的基于区块链的去中心化多方数据求交方法的步骤。
24.本发明实施例提供的基于区块链的去中心化多方数据求交方法及装置,无需将所有参与方的求交数据汇总到某一个第三方进行多方求交计算,而是通过一种选举机制在参加多方求交计算的节点中动态选出主节点,由该主节点进行数据分发以及数据汇总、由其他节点根据主节点分发的数据进行数据求交计算,实现了去中心化的多方求交计算;克服了现有技术中将数据交由第三方进行求交计算所导致的数据泄露的问题。
附图说明
25.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
26.图1是本发明一实施例提供的一种支持去中心化多方数据求交的区块链网络的结构示意图。
27.图2是本发明一实施例提供的一种求交计算节点的结构示意图。
28.图3是本发明第一方面的实施例提供的一种基于区块链的去中心化多方数据求交方法的流程示意图。
29.图4是本发明第一方面的实施例提供的基于区块链的去中心化多方数据求交方法的部分流程示意图。
30.图5是本发明第一方面的实施例提供的基于区块链的去中心化多方数据求交方法的部分流程示意图。
31.图6是本发明第一方面的实施例提供的基于区块链的去中心化多方数据求交方法的部分流程示意图。
32.图7是本发明第二方面的实施例提供的一种基于区块链的去中心化多方数据求交方法的流程示意图。
33.图8是本发明第二方面的实施例提供的一种基于区块链的去中心化多方数据求交方法的部分流程示意图。
34.图9是本发明一具体实施例提供的一种基于区块链的去中心化多方数据求交方法的部分流程示意图。
35.图10是本发明第三方面的实施例提供的一种基于区块链的去中心化多方数据求交装置的结构示意图。
36.图11是本发明第四方面的实施例提供的一种基于区块链的去中心化多方数据求交装置的结构示意图。
37.图12是本发明一实施例提供的电子设备的实体结构示意图。
具体实施方式
38.为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互任意排序。
39.关于本文中所使用的“第一”、“第二”、
……
等,并非特别指称次序或顺位的意思,亦非用以限定本发明,其仅为了区别以相同技术用语描述的元件或操作。
40.关于本文中所使用的“包含”、“包括”、“具有”、“含有”等等,均为开放性的用语,即意指包含但不限于。
41.关于本文中所使用的“及/或”,包括所述事物的任一或全部排序。
42.为更好的理解本发明,以下先对本发明所涉及的区块链网络的整体架构进行介绍:
43.图1是本发明一实施例提供的一种支持去中心化多方数据求交的区块链网络的结构示意图,如图1所示,该区块链网络包括多个求交计算节点1,由于本发明解决的是多方数据求交的问题,因此至少需要两个以上的机构参与区块链网络的组建,每个机构可以有一个或多个求交计算节点1。其中,该区块链网络中的所有求交计算节点1之间相互网络连接,一个机构一般使用一个求交计算节点1,如涉及并行求交计算则可使用多个求交计算节点1完成。
[0044]“求交计算节点1”为一台服务器或多台相互备份的服务器,通过提供通讯、数据查询、数据计算、数据传输、数据验证和数据存储服务,支持各求交计算节点1的数据求交。
[0045]
图2是本发明一实施例提供的一种求交计算节点的结构示意图,如图2所示,“求交计算节点1”包含:通讯模块11、安全模块12、数据处理模块13、数据传输模块14、数据验证模块15、数据存储模块16;其中,
[0046]“通讯模块11”负责与其他各个求交计算节点1建立网络连接,接收其他求交计算节点1的请求并进行应答;
[0047]“安全模块12”负责安全服务,提供安全算法和安全服务;
[0048]“数据处理模块13”负责leader节点(主节点)选举、求交计算、数据对比,以及基于安全模块将数据进行变形;
[0049]“数据传输模块14”负责提供各求交计算节点1之间的数据分发、数据接收服务,基于通讯模块,将数据分发到其它求交计算节点1的数据接收服务;
[0050]“数据验证模块15”负责对各求交计算节点1求交计算出的数据结果进行验证,具体验证方法是对各求交计算节点进行求交计算的结果数据进行共识。若验证通过,直接做后续处理;若验证不通过,则求交计算失败;
[0051]“数据存储模块16”负责对求交计算的结果数据在区块链上进行存储。
[0052]
第一方面,本发明一实施例提供一种基于区块链的去中心化多方数据求交方法,如图3所示,本发明实施例提供的基于区块链的去中心化多方数据求交方法包括:
[0053]
s101、根据多方求交计算请求,确定区块链网络中参与多方求交计算的各节点中的主节点;
[0054]
步骤s101中,所述区块链网络中参与多方求交计算的各节点在进行一次数据求交计算时,每个所述节点在接收到多方求交计算请求时,发起leader节点(主节点)确认步骤。
[0055]
所述多方求交计算请求可以是发起本次多方安全计算的节点发送的,该多方求交计算请求中可以包括参与本次多方求交计算的各节点的身份信息。此外,所述多方求交计算请求还可以是除本节点之外的其他参与多方求交计算的各节点发送的,所述区块链网络中的每个参与多方求交计算的节点可以向其他参与多方求交计算的节点发送多方求交计算请求,此时,本节点在收到所述区块链网络中所有其他参与多方求交计算的节点发送的多方求交计算请求之后,确定区块链网络中参与多方求交计算的各节点中的主节点。
[0056]
每个参与多方求交计算的节点的智能合约中预设有leader选举机制,通过该leader选举机制在参与多方求交计算的各节点中动态选出具有leader角色的节点,由具有该leader角色的节点进行计算、调度和数据汇总,无需中心化的集中式节点。该leader选举机制可以与各所述节点参与数据求交的数据量相关,因各所述节点的数据量会随着业务交易而发生变化,故每次求交计算的leader节点不固定。
[0057]
s102、在所述主节点通过共识后,若所述主节点为本节点,则将本节点求交数据集中的求交数据发送给各其他节点;
[0058]
步骤s102中,参与多方求交计算的每个节点在选取出leader后,在各所述节点之间发起共识,在该leader通过共识后,leader节点将本地的求交数据发送给各其它节点,具体的,在所述leader节点为本节点时,则本节点将本地的求交数据发送给其他节点。
[0059]
s103、根据各所述其他节点对所述求交数据进行求交计算后生成的反馈数据,确定区块链网络中参与多方求交计算的各节点的数据交集。
[0060]
步骤s103中,非leader的参与多方求交计算的节点,接收到leader节点分发的求交数据后,先将求交数据跟本节点的求交数据进行比对,查找是否存在匹配的数据,根据匹配结果生成反馈数据,将反馈数据反馈给leader节点,leader节点根据各其他非leader节点的反馈数据确定参与多方求交计算的各节点的数据交集。
[0061]
本发明实施例提供的基于区块链的去中心化多方数据求交方法,无需将所有参与方的求交数据汇总到某一个第三方进行多方求交计算,而是通过一种选举机制在参加多方
求交计算的节点中动态选出主节点,由该主节点进行数据分发以及数据汇总、由其他节点根据主节点分发的数据进行数据求交计算,实现了去中心化的多方求交计算;克服了现有技术中将数据交由第三方进行求交计算所导致的数据泄露的问题。
[0062]
如图4所示,在一些实施例中,所述根据多方求交计算请求,确定区块链网络中参与多方求交计算的各节点中的主节点包括:
[0063]
s1011、根据多方求交计算请求,获取区块链网络中参与多方求交计算的其他节点的求交数据的数量;
[0064]
步骤s1011中,本节点根据多方求交计算请求,启动leader选举操作,所述其他节点的求交数据的数量可以是在该其他节点发送给本节点的多方求交计算请求中获取的,也可以是在本节点启动leader选举操作之后,该其他节点发送给本节点的。
[0065]
s1012、根据每个所述其他节点的求交数据的数量以及本节点的求交数据的数量,确定区块链网络中参与多方求交计算的各节点中的主节点。
[0066]
步骤s1012中,对于所述区块链网络中每个参与多方求交计算的节点来说,每个节点对本地求交数据集中的求教数据进行数据量统计,将统计得到的求教数据的数量发送给其他节点,各节点间分别两两交互数据个数,对数据个数进行比较,可以得出数据个数最多的节点,则该节点被选举为leader;或者将数据个数最少的节点选举为leader,本实施例对此不作限定。
[0067]
在一些实施例中,本节点的求交数据集中的求交数据是根据目标哈希算法对本节点的原始数据集中的原始数据进行哈希计算后得到的。举例而言,本节点在将本节点的原始数据分发给其他节点之前,先对本节点的原始数据进行变形处理,具体做法为:先对本节点的原始数据集u中的每一个原始数据un按照目标哈希算法进行哈希计算,得出对应的哈希摘要数据wn。
[0068]
u={u1,u2,...,us};
[0069]
wn=hash(un);
[0070]
完成计算后,得到本节点的求交数据集w。
[0071]
w={w1,w2,...,ws}。
[0072]
这样,在多方交互的过程中能够保障每个节点无法获知其它节点除多方交集数据外的原始数据,恶意攻击方截取到的过程数据和结果数据也无法反推出原始数据。
[0073]
在一些实施例中,所述若所述主节点为本节点,则将本节点求交数据集中的求交数据发送给各其他节点包括:遍历本节点求交数据集中的求交数据,依次将所述求交数据集中的每个求交数据发送给各所述其他节点。
[0074]
具体的,本节点对本地的求交数据集w中的求交数据进行遍历,按顺序读取第一条求交数据w1,将w1分发给其它参与多方求交计算的节点;接着读取第二条求交数据w2,将w2分发给其它参与多方求交计算的节点;以此类推。
[0075]
在此基础上,如图5所示,所述根据各所述其他节点对所述求交数据进行求交计算后生成的反馈数据,确定区块链网络中参与多方求交计算的各节点的数据交集包括:
[0076]
s1031、对于每个所述求交数据,根据各所述其他节点根据该求交数据生成的反馈数据,确定该求交数据是否为本节点与各所述其他节点之间的交集数据;
[0077]
步骤s1031中,所述其他节点(非leader的参与多方求交计算的节点)在接收到
leader节点(本节点)发送的求交数据wn后,先将wn跟本地求交数据集w中的求交数据进行比对,查找是否存在匹配的数据,根据查找结果生成反馈数据反馈给leader节点,leader节点根据每个其他节点根据该求交数据生成的反馈数据,确定该求交数据是否为本节点与各所述其他节点之间的交集数据。
[0078]
s1032、根据所述求交数据中本节点与各所述其他节点之间的交集数据,得到区块链网络中参与多方求交计算的各节点的数据交集。
[0079]
步骤s1032中,对于所述求交数据中本节点与各所述其他节点之间的每个交集数据wn,找到wn对应的原始数据un,所有交集数据所对应的原始数据构成所述数据交集。
[0080]
如图6所示,在一些实施例中,所述方法还包括:
[0081]
s104、若所述主节点为本节点,则根据所述区块链网络中的所述其他节点的数量,生成随机数据集,其中,所述随机数据集中的随机数的数量与所述其他节点的数量相等;
[0082]
步骤s104中,leader节点按照其它参与多方求交计算的节点的数量t生成随机数据集v,v={v1,v2,...,v
t
};对数据集v中的随机数进行求和计算f=sum(v),得到随机数的和值f,并在本地对f进行缓存。
[0083]
s105、将所述随机数据集中的各随机数分别分发给各所述其他节点,其中,每个所述随机数分发给其中一个其他节点,各所述其他节点分发的随机数不同。
[0084]
步骤s105中,leader节点(本节点)对数据集v中的随机数进行遍历,遍历到的数据vn通过数据传输模块分发到某一个随机选取的其它参与多方求交计算的节点。完成分发后,被分发随机数的节点获取到的vn不同。举例,参与多方求交计算的节点有4个,节点1为leader节点,生成的v为{5,8,2},其f为15,节点2、节点3、节点4分别被分发到8、2、5。
[0085]
在此基础上,在一些实施例中,所述对于每个所述求交数据,根据各所述其他节点根据该求交数据生成的反馈数据,确定该求交数据是否为本节点与各所述其他节点之间的交集数据包括:对于每个所述求交数据,若各所述其他节点根据该求交数据生成的反馈数据之和与所述随机数据集中的随机数之和相等,则确定该求交数据为本节点与各所述其他节点之间的交集数据。
[0086]
具体的,以leader节点(本节点)当前发送给所述其他节点的求交数据为w1为例,所述其他节点(非leader的参与多方求交计算的节点)通过数据传输模块接收到leader节点(本节点)分发的求交数据w1和随机数vn后,先将w1跟本地的求交数据集w中的求交数据进行比对,查找是否存在匹配的数据,若存在,则设置反馈数据gn的值为vn,若不存在,则设置反馈数据gn的值为一个新生成的随机数h(h需不等于vn)。例如上述节点2,若存在相同值则设置反馈数据gn为8,若不存在则设置反馈数据gn为23。
[0087]
leader节点接收所有其它节点发送过来的反馈数据,在判断已接收齐所有其它节点针对求交数据w1的反馈数据后,可得到反馈数据集g,g={g1,g2,...,g
t
}。
[0088]
leader节点对数据集g中的数据进行求和计算f1=sum(g),得到数据集g中的数据的总和f1。将f1和缓存的f值进行对比,若一致,说明在所有其它参与多方求交计算的节点中均有该求交数据w1,然后找到w1对应的原始数据u1,存放入数据交集m中;若不一致,说明至少一个其它参与多方求交计算的节点不存在该求交数据w1。
[0089]
第二方面,本发明一实施例提供一种基于区块链的去中心化多方数据求交方法,如图7所示,本发明实施例提供的基于区块链的去中心化多方数据求交方法包括:
[0090]
s201、根据多方求交计算请求,确定区块链网络中参与多方求交计算的各节点中的主节点;
[0091]
步骤s201的执行过程与上述实施例步骤s101的执行过程类似,在此不再赘述。
[0092]
s202、在所述主节点通过共识后,若所述主节点为本节点之外的其他节点,则获取所述主节点发送的求交数据;
[0093]
步骤s202中,参与多方求交计算的每个节点在选取出leader后,在各所述节点之间发起共识,在该leader通过共识后,leader节点将本地的求交数据分发给其它参与多方求交计算的节点,若所述leader节点为本节点之外的其他节点,则本节点接收leader节点发送给本节点的求交数据。
[0094]
s203、将所述求交数据与本节点求交数据集中的求交数据进行比对,得到数据求交结果;
[0095]
步骤s203中,本节点(非leader的参与求交计算的节点)接收到leader节点分发的求交数据后,先将求交数据跟本地的求交数据进行比对,查找是否存在匹配的数据,若存在匹配的数据,则确定该求交数据为本节点与leader节点之间的交集数据;若不存在匹配的数据,则确定该求交数据不是本节点与leader节点之间的交集数据。
[0096]
s204、根据所述数据求交结果生成反馈数据并将所述反馈数据发送给所述主节点,其中,所述主节点用于根据其他各节点发送的反馈数据,确定区块链网络中参与多方求交计算的各节点的数据交集。
[0097]
步骤s204中,本节点根据数据求交结果生成反馈数据,将反馈数据反馈给leader节点,leader节点根据各其他非leader节点的反馈数据确定参与多方求交计算的各节点的数据交集。
[0098]
本发明实施例提供的基于区块链的去中心化多方数据求交方法,根据多方求交计算请求,确定区块链网络中参与多方求交计算的各节点中的主节点;在所述主节点通过共识后,若所述主节点为本节点之外的其他节点,则获取所述主节点发送的求交数据;将所述求交数据与本节点求交数据集中的求交数据进行比对,得到数据求交结果;根据所述数据求交结果生成反馈数据并将所述反馈数据发送给所述主节点,其中,所述主节点用于根据其他各节点发送的反馈数据,确定区块链网络中参与多方求交计算的各节点的数据交集。这样,无需将所有参与方的求交数据汇总到某一个第三方进行多方求交计算,而是通过一种选举机制在参加多方求交计算的节点中动态选出主节点,由该主节点进行数据分发以及数据汇总、由其他节点根据主节点分发的数据进行数据求交计算,实现了去中心化的多方求交计算;克服了现有技术中将数据交由第三方进行求交计算所导致的数据泄露的问题。
[0099]
如图8所示,在一些实施例中,所述根据多方求交计算请求,确定区块链网络中参与多方求交计算的各节点中的主节点包括:
[0100]
s2011、根据多方求交计算请求,获取区块链网络中参与多方求交计算的其他节点的求交数据的数量;
[0101]
s2022、根据每个所述其他节点的求交数据的数量以及本节点的求交数据的数量,确定区块链网络中参与多方求交计算的各节点中的主节点。
[0102]
步骤s2011与上述实施例中步骤s1011的执行过程类似,步骤s2012与上述实施例中步骤s1012的执行过程类似,在此不再赘述。
[0103]
在一些实施例中,所述主节点发送的求交数据是根据目标哈希算法对主节点的原始数据集中的原始数据进行哈希计算后得到的;本节点的求交数据集中的求交数据是根据所述目标哈希算法对本节点的原始数据集中的原始数据进行哈希计算后得到的。
[0104]
举例而言,leader节点在将本地的原始数据分发给其他节点之前,先对本地的原始数据进行变形处理,具体做法为:先对本地的原始数据集u中的每一个原始数据un按照目标哈希算法进行哈希计算,得出对应的哈希摘要数据wn。
[0105]
u={u1,u2,...,us};
[0106]
wn=hash(un);
[0107]
完成计算后,得到本地的求交数据集w。
[0108]
w={w1,w2,...,ws}。
[0109]
这样,在多方交互的过程中能够保障每个节点无法获知其它节点除多方交集数据外的原始数据,恶意攻击方截取到的过程数据和结果数据也无法反推出原始数据。为方便与leader节点发送的求交数据进行对比,本节点(非leader节点)基于同样的方法,根据所述目标哈希算法对本节点的原始数据集中的原始数据进行哈希计算后得到的本节点的求交数据集。
[0110]
在一些实施例中,所述主节点每次发送一个求交数据;在此基础上,所述将所述求交数据与本节点求交数据集中的求交数据进行比对,得到数据求交结果包括:
[0111]
对于所述主节点发送的每个所述求交数据,将该求交数据与本节点求交数据集中的求交数据进行比对,得到该求交数据的数据求交结果;
[0112]
所述根据所述数据求交结果生成反馈数据并将所述反馈数据发送给所述主节点包括:对于所述主节点发送的每个所述求交数据,根据该求交数据的数据求交结果,生成该求交数据的反馈数据;将该求交数据的反馈数据发送给所述主节点。
[0113]
具体的,本节点(非leader的参与求交计算机构节点)在接收到leader节点分发的其中一个求交数据wn后,先将wn跟本地求交数据集w中的求交数据进行比对,查找是否存在匹配的数据,根据查找结果生成反馈数据反馈给leader节点,leader节点根据每个其他节点根据该求交数据生成的反馈数据,确定该求交数据是否为本节点与各所述其他节点之间的交集数据。
[0114]
在一些实施例中,所述方法还包括:若所述主节点为本节点之外的其他节点,则获取所述主节点发送给本节点的随机数;在此基础上,所述根据该求交数据的数据求交结果,生成该求交数据的反馈数据包括:
[0115]
若本节点的求交数据集中存在该求交数据,则将所述随机数确定为该求交数据的反馈数据;
[0116]
若本节点求交数据集中不存在该求交数据,则将新的随机数确定为该求交数据的反馈数据,其中,所述新的随机数与所述主节点发送给本节点的随机数不同。
[0117]
具体的,以leader节点发送给本节点的求交数据为w1为例,本节点(非leader的参与求交计算的节点)通过数据传输模块接收到leader节点发送的求交数据w1和随机数vn后,先将w1跟本地的求交数据集w中的求交数据进行比对,查找是否存在匹配的数据,若存在,则设置反馈数据gn的值为vn,若不存在,则设置反馈数据gn的值为一个新生成的随机数h(h需不等于vn)。例如上述节点2,若存在相同值则设置反馈数据gn为8,若不存在则设置反馈数
据gn为23。
[0118]
以下通过一具体实施例对本发明提供的基于区块链的去中心化多方数据求交方法进行说明。
[0119]
图9是本发明一具体实施例提供的一种基于区块链的去中心化多方数据求交方法的流程示意图,如图9所示,本发明一具体实施例提供的一种基于区块链的去中心化多方数据求交方法,包括:
[0120]
s301、求交计算节点接收到多方求交计算请求后,发起leader确认步骤。
[0121]
具体的,通过一种leader选举机制在参与多方求交计算的各节点中动态选出具有leader角色的节点,由具有leader角色的节点进行计算、调度和数据汇总,无需中心化的集中式节点。因各所述节点的数据会随着业务交易而发生变化,故每次求交计算的leader节点不固定。
[0122]
启动leader选举后,各节点对本地原始数据集中的原始数据进行数据量统计。各节点原始数据集u在形式上表示:u={u1,u2,...,us};统计数据集u的数据个数j,j=c(u)。
[0123]
各节点分别两两交互数据个数j,对j进行比较,可以得出j值最大的节点,则该节点被选举为leader节点。在进行多方求交计算时,最终计算得出的交集数据r,必然是在所有节点中均存在的数据,
[0124]
s302、确定leader节点后,各节点对本节点的原始数据进行变形处理。
[0125]
具体做法为,先对本节点原始数据集中的每一个原始数据un进行哈希计算,得出对应的哈希摘要数据wn,wn=hash(un)。
[0126]
完成计算后,得到本节点的求交数据集w,w={w1,w2,...,ws}。
[0127]
s303、leader节点对本节点的求交数据集w中的求交数据进行遍历,按顺序读取第一条数据w1,leader节点通过数据传输模块将w1分发给其它参与多方求交计算的节点。接下来,按照其它参与多方求交计算的节点的数量t生成随机数据集v,v={v1,v2,...,v
t
}。
[0128]
对随机数据集v中的随机数进行求和,得到随机数据集中随机数的总和f,f=sum(v),并在本地对f进行缓存存储。
[0129]
leader节点遍历随机数据集v中的随机数,遍历到的随机数vn通过数据传输模块分发到某一个随机选取的其它参与多方求交计算的节点。
[0130]
完成分发后,被分发随机数的节点获取到的w1相同,但vn不同。举例而言,参与多方求交计算的计算为4个,节点1为leader节点,生成的随机数据集v为{5,8,2},其f为15,节点2、节点3、节点4分别被分发到8、2、5。
[0131]
s304、非leader的参与多方求交计算机构节点,通过数据传输模块接收到leader节点分发的数据w1和vn后,先将w1跟本节点在步骤s302中得到的求交数据集w进行比对,查找本节点的求交数据集w是否存在匹配的数据,若存在,则设置反馈数据gn的值为vn,若不存在,则设置反馈数据gn的值为一个新生成的随机数h(h需不等于vn)。例如节点2,若存在匹配的数据则设置反馈数据gn为8,若不存在则设置反馈数据gn为23。
[0132]
s305、每个非leader的参与对方求交计算的节点经过步骤s304后,将本节点的反馈数据gn通过数据传输模块返回给leader节点,leader节点接收所有其它节点发送过来的反馈数据,判断已接收齐所有其它节点的反馈数据后,可得到反馈数据集g,g={g1,g2,...,g
t
}。
[0133]
s306、leader节点对数据集g中的数据进行求和计算,f1=sum(g),得到数据集g中的数据的总和f1。
[0134]
将f1和缓存的f值进行对比,若一致,说明求交数据w1存在于在所有其它参与多方求交计算的节点中,接着找到w1对应的原始数据u1,将该原始数据u1存放入数据交集m中;若不一致,说明至少一个其他参与多方求交计算的节点中不存在求交数据w1。举例而言,假设节点2、节点3、节点4返回的数据为8、2、5,其f1为15,与f相等,说明u1在节点2、节点3、节点4中均存在;假设节点2、节点3、节点4返回的数据为23、2、7,其f1为32,与f不相等,说明有节点不存在u1。
[0135]
s307、leader节点判断本地的求交数据集w是否已完成遍历,若未完成遍历,则跳转到步骤s303,继续对w进行遍历,按顺序读取第二条数据w2,leader节点通过数据传输模块将w2发送给其它参与多方求交计算的节点;若完成遍历,则进入下一步骤s308。
[0136]
s308、leader节点完成遍历后,可汇总得到数据交集m,在此步骤完成了多方数据求交的主体计算流程。
[0137]
s309、基于区块链共识机制,对汇总求交计算出的数据交集m进行共识。leader将数据交集m的数据进行哈希算法变形得到新数据集m1,分发给其它参与多方求交计算的节点,各节点将m1中的数据与本地求交数据集w中的数据进行对比,判断m1中是否存在w中不存在的数据,即判断是否符合
[0138]
若各所述节点的判断结果均为则共识通过,数据验证成功,若至少一个节点的判断结果不符合则说明在多方求交计算过程中数据发生篡改,则共识不通过,数据验证失败。
[0139]
s310、若为数据验证成功,由leader节点通过数据存储模块将数据集m1和相关流程记录在区块链上进行存储。因数据集m1中的数据均为各节点中存在的数据,且外部截取m1后无法反推出原始数据集m,故无数据泄露问题,作为存证便于以后的审计和追溯。
[0140]
s311、在区块链上完成存储后,leader节点返回多方求交计算成功的信息。
[0141]
s312、验证失败后,leader节点返回多方求交计算失败的信息。
[0142]
本实施例的以上流程描述了一种基于区块链智能合约的去中心化多方数据求交方法的处理流程,为区块链成员提供多方数据求交的功能。
[0143]
本发明实施例提供的一种基于区块链的去中心化多方数据求交方法,创新性地提出了以下3点机制保障安全性:
[0144]
1)通过各参与多方求交计算的节点的求交数据的数据量确认leader节点,由leader节点主导后续的求交流程,在此过程中不暴露各方原始数据。
[0145]
2)leader节点分发己方经过哈希算法变形的数据wn,其它参与多方求交计算的节点将wn与己方经过哈希算法变形的数据集w内的数据进行对比,在此求交计算的过程中,所传输、所比较的数据不是原始数据un,而是经过变形的数据wn,利用哈希算法,可达到恶意攻击方即使截取到了wn、也无法反推出leader节点的原始数据un的技术效果,同时哈希算法可保证两个被比较的数据wn是一致的话,原始数据un必定相同。被分发的节点,在对比发现wn一致后,可进一步发现其对应的原始数据un,但这个原始数据un也是属于被分发节点中的数据,被分发节点只知道这个数据有交集,无法反推出leader节点的其它数据。
[0146]
3)各个被分发的节点,将结果数据gn进行返回,此数据非原始数据un,且本身只是
随机数集合,恶意攻击方即使截取到也无法使用。leader节点获取返回数据集g后,通过与缓存的值进行计算来确认求交数据是否在多方存在,此时leader节点仅可知道对应的原始数据un在多方中同时存在,但无法得知其它参与多方求交计算的节点中数据。
[0147]
上述安全保障机制,确保各方均无法得知其它方的多方共同交集数据之外的原始数据,并确保外部恶意方无法得知任意一方的任意原始数据。
[0148]
本发明实施例提供的基于区块链的去中心化多方数据求交方法,解决了需将所有参与方的数据汇总到某一个第三方的情况下进行多方数据求交导致可能发生数据泄露或篡改的隐患的问题,保障数据隐私的前提下进行数据计算,引入可信多方数据求交智能合约有以下好处:使用去中心化的部署和通讯模式,解决了多方求交计算时对第三方的依赖;基于智能合约进行计算,因为智能合约具有公开透明的机制,所以数据处理的逻辑和过程是公开透明的,可供审计;通过数据安全算法,保障数据求交计算的过程中某一方无法获知其它参与方的非多方交集数据外的原始数据,恶意攻击方截取到的过程数据和结果数据也无法反推出原始数据;使用区块链共识机制可以保证最终多方求交计算结果正确且未被篡改;利用计算结果数据和计算流程存储在区块链中可以保证数据可审计可追溯。综上所述,通过本发明提供的方法,解决了各方对数据处理和数据隐私的信任问题,能进一步推进业界对数据资产、数据要素、数据交易市场等领域的互联互通。
[0149]
第三方面,本发明一实施例提供一种基于区块链的去中心化多方数据求交装置,如图10所示,本发明实施例提出的一种基于区块链的去中心化多方数据求交装置,包括:
[0150]
第一确定模块41,用于根据多方求交计算请求,确定区块链网络中参与多方求交计算的各节点中的主节点;
[0151]
发送模块42,用于在所述主节点通过共识后,若所述主节点为本节点,则将本节点求交数据集中的求交数据发送给各其他节点;
[0152]
第二确定模块43,用于根据各所述其他节点对所述求交数据进行求交计算后生成的反馈数据,确定区块链网络中参与多方求交计算的各节点的数据交集。
[0153]
本发明实施例提供的基于区块链的去中心化多方数据求交装置,无需将所有参与方的求交数据汇总到某一个第三方进行多方求交计算,而是通过一种选举机制在参加多方求交计算的节点中动态选出主节点,由该主节点进行数据分发以及数据汇总、由其他节点根据主节点分发的数据进行数据求交计算,实现了去中心化的多方求交计算;克服了现有技术中将数据交由第三方进行求交计算所导致的数据泄露的问题。
[0154]
在一些实施例中,所述第一确定模块具体用于:
[0155]
根据多方求交计算请求,获取区块链网络中参与多方求交计算的其他节点的求交数据的数量;
[0156]
根据每个所述其他节点的求交数据的数量以及本节点的求交数据的数量,确定区块链网络中参与多方求交计算的各节点中的主节点。
[0157]
在一些实施例中,本节点的求交数据集中的求交数据是根据目标哈希算法对本节点的原始数据集中的原始数据进行哈希计算后得到的。
[0158]
在一些实施例中,所述发送模块具体用于:遍历本节点求交数据集中的求交数据,依次将所述求交数据集中的每个求交数据发送给各所述其他节点;
[0159]
所述第二确定模块具体用于:对于每个所述求交数据,根据各所述其他节点根据
该求交数据生成的反馈数据,确定该求交数据是否为本节点与各所述其他节点之间的交集数据;根据所述求交数据中本节点与各所述其他节点之间的交集数据,得到区块链网络中参与多方求交计算的各节点的数据交集。
[0160]
在一些实施例中,所述装置还包括:
[0161]
分发模块,用于若所述主节点为本节点,则根据所述区块链网络中的所述其他节点的数量,生成随机数据集,其中,所述随机数据集中的随机数的数量与所述其他节点的数量相等;将所述随机数据集中的各随机数分别分发给各所述其他节点,其中,每个所述随机数分发给其中一个其他节点,各所述其他节点分发的随机数不同。
[0162]
在一些实施例中,所述第二确定模块对于每个所述求交数据,根据各所述其他节点根据该求交数据生成的反馈数据,确定该求交数据是否为本节点与各所述其他节点之间的交集数据包括:
[0163]
对于每个所述求交数据,若各所述其他节点根据该求交数据生成的反馈数据之和与所述随机数据集中的随机数之和相等,则确定该求交数据为本节点与各所述其他节点之间的交集数据。
[0164]
本发明实施例提供的装置的实施例具体可以用于执行上述第一方面提供的各方法实施例的处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。
[0165]
第四方面,本发明一实施例提供一种基于区块链的去中心化多方数据求交装置,如图11所示,本发明实施例提出的一种基于区块链的去中心化多方数据求交装置,包括:
[0166]
确定模块51,用于根据多方求交计算请求,确定区块链网络中参与多方求交计算的各节点中的主节点;
[0167]
获取模块52,用于在所述主节点通过共识后,若所述主节点为本节点之外的其他节点,则获取所述主节点发送的求交数据;
[0168]
比对模块53,用于将所述求交数据与本节点求交数据集中的求交数据进行比对,得到数据求交结果;
[0169]
发送模块54,用于根据所述数据求交结果生成反馈数据并将所述反馈数据发送给所述主节点,其中,所述主节点用于根据其他各节点发送的反馈数据,确定区块链网络中参与多方求交计算的各节点的数据交集。
[0170]
本发明实施例提供的基于区块链的去中心化多方数据求交装置,无需将所有参与方的求交数据汇总到某一个第三方进行多方求交计算,而是通过一种选举机制在参加多方求交计算的节点中动态选出主节点,由该主节点进行数据分发以及数据汇总、由其他节点根据主节点分发的数据进行数据求交计算,实现了去中心化的多方求交计算;克服了现有技术中将数据交由第三方进行求交计算所导致的数据泄露的问题。
[0171]
在一些实施例中,所述确定模块具体用于:
[0172]
根据多方求交计算请求,获取区块链网络中参与多方求交计算的其他节点的求交数据的数量;
[0173]
根据每个所述其他节点的求交数据的数量以及本节点的求交数据的数量,确定区块链网络中参与多方求交计算的各节点中的主节点。
[0174]
在一些实施例中,所述主节点发送的求交数据是根据目标哈希算法对主节点的原始数据集中的原始数据进行哈希计算后得到的;本节点的求交数据集中的求交数据是根据
所述目标哈希算法对本节点的原始数据集中的原始数据进行哈希计算后得到的。
[0175]
在一些实施例中,所述主节点每次发送一个求交数据;
[0176]
所述比对模块具体用于:
[0177]
对于所述主节点发送的每个所述求交数据,将该求交数据与本节点求交数据集中的求交数据进行比对,得到该求交数据的数据求交结果;
[0178]
所述发送模块具体用于:
[0179]
对于所述主节点发送的每个所述求交数据,根据该求交数据的数据求交结果,生成该求交数据的反馈数据;将该求交数据的反馈数据发送给所述主节点。
[0180]
在一些实施例中,所述获取模块还用于:若所述主节点为本节点之外的其他节点,则获取所述主节点发送给本节点的随机数;
[0181]
所述发送模块根据该求交数据的数据求交结果,生成该求交数据的反馈数据包括:
[0182]
若本节点的求交数据集中存在该求交数据,则将所述随机数确定为该求交数据的反馈数据;
[0183]
若本节点求交数据集中不存在该求交数据,则将新的随机数确定为该求交数据的反馈数据,其中,所述新的随机数与所述主节点发送给本节点的随机数不同。
[0184]
本发明实施例提供的装置的实施例具体可以用于执行上述第二方面提供的各方法实施例的处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。
[0185]
需要说明的是,本发明实施例提供的基于区块链的去中心化多方数据求交方法及装置可用于金融领域,也可用于除金融领域之外的任意技术领域,本发明实施例对基于区块链的去中心化多方数据求交方法及装置的应用领域不做限定。
[0186]
图12为本发明一实施例提供的电子设备的实体结构示意图,如图12所示,该电子设备可以包括:处理器(processor)601、通信接口(communications interface)602、存储器(memory)603和通信总线604,其中,处理器601,通信接口602,存储器603通过通信总线604完成相互间的通信。处理器601可以调用存储器603中的逻辑指令,以执行上述任一实施例所述的方法。
[0187]
此外,上述的存储器603中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0188]
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法。
[0189]
本实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机程序,所述计算机程序使所述计算机执行上述各方法实施例所提供的方法。
[0190]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0191]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0192]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0193]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0194]
在本说明书的描述中,参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0195]
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1