本申请涉及区块链,特别涉及一种区块信息发送方法和装置及电子设备。
背景技术:
1、共识消息在区块链分布式系统中存在冗余发送问题,导致同一个数据包在分布式网络中被转发多次,造成了网络资源浪费。
2、如图1所示,是一个四节点全连区块链系统,当节点o1将区块消息转发到自己的连接列表{o2,o3,o4}中。o2、o3、o4收到区块消息后,进行转发,假设o4先收到区块消息,首先从自己的连接列表{o1,o2,o3}中剔除消息来源节点(即o1)后,在进行消息转发,此时消息发送至o2和o3。假设o2先收到区块消息,从连接列表{o1,o3,o4}中剔除区块消息来源节点{o1,o4}得到o3,进行消息转发。o3收到区块消息后,从连接列表{o1,o2,o4}中剔除区块消息来源方{o1,o2,o4}后为空,则结束消息转发。
3、从上图分析得知,一个区块消息在完成区块链系统同步过程中,冗余发送了3次。当节点规模越大时,则冗余发送的区块消息越多。
技术实现思路
1、本申请提供了一种区块信息发送方法和装置及电子设备,用以解决现有区块信息发送冗余发送多次,导致网络效率低的问题。
2、根据本申请实施例的第一方面,提供一种区块信息发送方法,包括:
3、响应于区块信息发送指令,确定针对该区块信息的未发送列表;
4、将未发送列表与自身的连接列表取交集,根据交集确定发送列表;
5、去除未发送列表中出现在发送列表中的节点,得到更新的未发送列表;
6、将所述区块信息及更新后的未发送列表,发送给所述发送列表中的节点。
7、可选地,所述区块发送指令为发送到共识节点的指令,该方法应用于共识主节点时,针对该区块信息的未发送列表为共识副节点集合,该方法应用于共识副节点时,针对该区块信息的未发送列表为该共识副节点接收区块信息时接收的未发送列表;
8、将未发送列表与自身的连接列表取交集,根据交集确定发送列表,包括:
9、将未发送列表与自身的连接列表取交集,将交集的全部节点作为发送列表。
10、可选地,所述区块发送指令为发送到叶子节点的指令,该方法应用于共识副节点时,针对该区块信息的未发送列表为叶子节点集合,该方法应用于叶子节点时,针对该区块信息的未发送列表为该叶子节点接收区块信息时接收的未发送列表;
11、将未发送列表与自身的连接列表取交集,根据交集确定发送列表,包括:
12、将未发送列表与自身的连接列表取交集,确定交集中的节点数量n;
13、确定发送列表中节点数量为n/k并向上取整得到数量n,从交集中获取n/k个节点作为发送列表。
14、可选地,所述区块发送指令为发送到共识节点的指令时,所述共识主节点/共识副节点本地缓存有针对该区块信息是否已发送的标志位;响应于区块信息发送指令,还包括:
15、根据所述标志位确定区块信息未发送时,确定针对该区块信息的未发送列表,否则结束区块信息发送;
16、将所述区块信息及更新后的未发送列表,发送给所述发送列表中的节点之后,还包括:将所述标志位更新为区块信息已发送。
17、可选地,所述区块发送指令为发送到叶子节点的指令时,该方法应用于共识副节点/叶子节点时,从交集中获取n/k个节点作为发送列表,包括:
18、从交集中获取n/k个节点,将n/k个节点与本地缓存针对该区块信息的已发送列表取交集;
19、若交集为不为空,从n/k个节点中移除所述交集中的节点,否则,确定将n/k个节点作为发送列表;
20、将所述区块信息及更新后的未发送列表,发送给所述发送列表中的节点之后,还包括:
21、将所述发送列表中的节点添加到本地缓存的针对该区块信息的已发送列表中。
22、可选地,所述区块发送指令为发送到叶子节点的指令,该方法应用于叶子节点时,还包括:
23、确定设定时间内未收到区块信息时,向连接列表中的任一节点发送请求;
24、接收区块高度高于当前叶子节点的节点发送的区块信息。
25、可选地,所述区块信息包括区块头及交易哈希值,该方法还包括:
26、收到区块信息时,根据所述交易哈希值从交易池中进行索引查询对应的交易信息;
27、未查询到对应的交易信息时,向区块链发起请求同步交易信息的同步请求。
28、根据本申请实施例的第二方面,提供一种区块信息发送装置,包括:
29、未发送列表确定模块,用于响应于区块信息发送指令,确定针对该区块信息的未发送列表;
30、发送列表确定模块,用于将未发送列表与自身的连接列表取交集,根据交集确定发送列表;
31、未发送列表更新模块,用于去除未发送列表中出现在发送列表中的节点,得到更新的未发送列表;
32、区块信息发送模块,用于将所述区块信息及更新后的未发送列表,发送给所述发送列表中的节点。
33、根据本申请实施例的第三方面,提供一种电子设备,包括至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述第一方面提供的方法。
34、根据本申请实施例的第四方面,提供一种计算机存储介质,该计算机存储介质存储有程序指令,当其在计算机上运行时,使得计算机执行本申请实施例上述各个方面以及各个方面涉及的任一可能涉及的方法。
35、根据本申请实施例的第五方面,提供一种计算机程序产品,当所述计算机程序产品在电子设备上运行时,使得所述电子设备执行实现本申请实施例上述各个方面以及各个方面涉及的任一可能涉及的方法。
36、利用本申请提供的区块信息发送方法和装置及电子设备,具有以下有益效果:
37、本申请提供在保证消息能够到达所有节点的前提下提出了一种分级转发机制,采用未发送列表以及已发送标志字段(集合)进行消息转发节点的过滤,减少了网络中冗余的数据包,提升网络效率,区块信息发送到各节点从而支持共识机制,保证了数据的可信度。
1.一种区块信息发送方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述区块发送指令为发送到共识节点的指令,该方法应用于共识主节点时,针对该区块信息的未发送列表为共识副节点集合,该方法应用于共识副节点时,针对该区块信息的未发送列表为该共识副节点接收区块信息时接收的未发送列表;
3.根据权利要求1所述的方法,其特征在于,所述区块发送指令为发送到叶子节点的指令,该方法应用于共识副节点时,针对该区块信息的未发送列表为叶子节点集合,该方法应用于叶子节点时,针对该区块信息的未发送列表为该叶子节点接收区块信息时接收的未发送列表;
4.根据权利要求2所述的方法,其特征在于,所述共识主节点/共识副节点本地缓存有针对该区块信息是否已发送的标志位;响应于区块信息发送指令,还包括:
5.根据权利要求3所述的方法,其特征在于,该方法应用于共识副节点/叶子节点时,从交集中获取n/k个节点作为发送列表,包括:
6.根据权利要求3所述的方法,其特征在于,该方法应用于叶子节点时,还包括:
7.根据权利要求1所述的方法,其特征在于,所述区块信息仅包括区块头及交易哈希值,该方法还包括:
8.一种区块信息发送装置,其特征在于,包括:
9.一种电子设备,其特征在于,包括至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1-7中任何一项所述的方法。
10.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序用于使计算机执行如权利要求1-7任何一项所述的方法。