区块链网络中的通信方法、业务数据传输方法
技术领域
本说明书涉及通信领域,特别涉及区块链网络中的通信方法、业务数据传输方法。
背景技术
由于P2P(PeertoPeer,点对点)网络中的节点分布具有随机性等原因,P2P网络存在部分通信链路服务质量(Qualityof Service,QoS)差以及通信链路的服务质量时好时坏等问题。借助中继网络的快速中转能力和稳定性,可以一定程度上解决P2P网络存在的上述问题。然而,由于同一份数据还需要在中继网络中复制传输,造成了网络带宽和机器资源的浪费,一定程度上影响节点的网络处理能力。
因此,希望提供一种能够减少重复数据传输量的网络通信方案。
发明内容
本说明书实施例之一提供一种区块链网络中的通信方法,其中,所述区块链网络包括具有通信连接的P2P网络和中继网络,所述方法由所述P2P网络中的某一区块链节点执行,所述方法包括:对于所述P2P网络中的任一其它区块链节点:通过所述P2P网络向所述其它区块链节点发送至少一个第一探测消息,接收所述其它区块链节点通过所述P2P网络返回的至少一个第一响应消息,所述至少一个第一响应消息与所述至少一个第一探测消息一一对应;根据所述至少一个第一探测消息的发送时间和所述至少一个第一响应消息的接收时间,确定所述某一区块链节点与所述其它区块链节点之间的P2P网络通信链路的第一服务质量数据;通过所述中继网络向所述其它区块链节点发送至少一个第二探测消息,接收所述其它区块链节点通过所述中继网络返回的至少一个第二响应消息,所述至少一个第二响应消息与所述至少一个第二探测消息一一对应;根据所述至少一个第二探测消息的发送时间和所述至少一个第二响应消息的接收时间,获得所述某一区块链节点与所述其它区块链节点之间的中继网络通信链路的第二服务质量数据;比较所述第一服务质量数据和所述第二服务质量数据;根据比较结果记录所述某一区块链节点到所述其它区块链节点的链路优化信息,该链路优化信息指示通过所述P2P网络和所述中继网络之一将业务数据从所述某一区块链节点传输至该其它区块链节点。
本说明书实施例之一提供区块链网络中的通信系统,其中,所述区块链网络包括具有通信连接的P2P网络和中继网络,所述通信系统在所述P2P网络中的某一区块链节点上实现,所述通信系统包括第一服务质量数据获得模块、第二服务质量数据获得模块、服务质量数据比较模块和链路优化信息记录模块;对于所述P2P网络中的任一其它区块链节点:所述第一服务质量数据获得模块用于:通过所述P2P网络向所述其它区块链节点发送至少一个第一探测消息,接收所述其它区块链节点通过所述P2P网络返回的至少一个第一响应消息,根据所述至少一个第一探测消息的发送时间和所述至少一个第一响应消息的接收时间,确定所述某一区块链节点与所述其它区块链节点之间的P2P网络通信链路的第一服务质量数据,其中,所述至少一个第一响应消息与所述至少一个第一探测消息一一对应;所述第二服务质量数据获得模块用于:通过所述中继网络向所述其它区块链节点发送至少一个第二探测消息,接收所述其它区块链节点通过所述中继网络返回的至少一个第二响应消息,根据所述至少一个第二探测消息的发送时间和所述至少一个第二响应消息的接收时间,获得所述某一区块链节点与所述其它区块链节点之间的中继网络通信链路的第二服务质量数据,其中,所述至少一个第二响应消息与所述至少一个第二探测消息一一对应;所述第一服务质量数据获得模块用于比较所述第一服务质量数据和所述第二服务质量数据;所述链路优化信息记录模块用于根据比较结果记录所述某一区块链节点到所述其它区块链节点的链路优化信息,该链路优化信息指示通过所述P2P网络和所述中继网络之一将业务数据从所述某一区块链节点传输至该其它区块链节点。
本说明书实施例之一提供一种区块链网络中的通信装置,其中,包括处理器和存储设备,所述存储设备用于存储指令,当所述处理器执行指令时,实现如本说明书任一实施例所述的通信方法。
本说明书实施例之一提供一种区块链网络中的业务数据传输方法,其中,所述区块链网络包括具有通信连接的P2P网络和中继网络;所述方法由所述P2P网络中的某一区块链节点执行,其包括:获得待传输的业务数据;确定所述业务数据的目的区块链节点;查询所述某一区块链节点到所述目的区块链节点对应的链路优化信息,该链路优化信息指示通过所述P2P网络和所述中继网络之一将业务数据从所述某一区块链节点传输至所述目的区块链节点;根据查询结果选择通过所述P2P网络和所述中继网络之一将所述业务数据传输至所述目的区块链节点。
本说明书实施例之一提供一种区块链网络中的业务数据传输系统,其中,所述区块链网络包括具有通信连接的P2P网络和中继网络;所述业务数据传输系统在所述P2P网络中的某一区块链节点上实现,其包括:第一业务数据获得模块,用于获得待传输的业务数据;目的区块链节点确定模块,用于确定所述业务数据的目的区块链节点;链路优化信息查询模块,用于查询所述某一区块链节点到所述目的区块链节点对应的链路优化信息,该链路优化信息指示通过所述P2P网络和所述中继网络之一将业务数据从所述某一区块链节点传输至所述目的区块链节点;第一选择模块,用于根据查询结果选择通过所述P2P网络和所述中继网络之一将所述业务数据传输至所述目的区块链节点。
本说明书实施例之一提供一种区块链网络中的业务数据传输装置,其中,包括处理器和存储设备,所述存储设备用于存储指令,当所述处理器执行指令时,实现如本说明书任一实施例所述的由区块链节点执行的业务数据传输方法。
本说明书实施例之一提供一种区块链网络中的业务数据传输方法,其中,所述区块链网络包括具有通信连接的P2P网络和中继网络;所述方法由所述中继网络中的某一中继节点执行,所述中继节点直接连接有P2P网络中的至少两个区块链节点;所述方法包括:获得来自所述至少两个区块链节点中的某一区块链节点广播的业务数据;获得所述某一区块链节点上报的链路优化信息;所述链路优化信息指示通过所述P2P网络和所述中继网络之一将业务数据从所述某一区块链节点传输至所述至少两个区块链节点中的其它区块链节点;根据所述某一区块链节点上报的链路优化信息选择是否向所述至少两个区块链节点中的其它区块链节点发送所述业务数据。
本说明书实施例之一提供一种区块链网络中的业务数据传输系统,其中,所述区块链网络包括具有通信连接的P2P网络和中继网络;所述业务数据传输系统在所述中继网络中的某一中继节点上实现,所述中继节点直接连接有P2P网络中的至少两个区块链节点;所述业务数据传输系统包括:第二业务数据获得模块,用于获得来自所述至少两个区块链节点中的某一区块链节点广播的业务数据;链路优化信息获得模块,用于获得所述某一区块链节点上报的链路优化信息;所述链路优化信息指示通过所述P2P网络和所述中继网络之一将业务数据从所述某一区块链节点传输至所述至少两个区块链节点中的其它区块链节点;第二选择模块,用于根据所述某一区块链节点上报的链路优化信息选择是否向所述至少两个区块链节点中的其它区块链节点发送所述业务数据。
本说明书实施例之一提供一种区块链网络中的业务数据传输装置,其中,包括处理器和存储设备,所述存储设备用于存储指令,当所述处理器执行指令时,实现如本说明书任一实施例所述的由中继节点执行的业务数据传输方法。
附图说明
本说明书将以示例性实施例的方式进一步说明,这些示例性实施例将通过附图进行详细描述。这些实施例并非限制性的,在这些实施例中,相同的编号表示相同的结构,其中:
图1是根据本说明书一些实施例所示的区块链网络的拓扑图;
图2是根据本说明书一些实施例所示的辅助区块链节点间建立P2P直连的示意图;
图3是根据本说明书一些实施例所示的区块链网络中的通信方法的示例性流程图;
图4是根据本说明书一些实施例所示的业务数据的单播方式的示意图;
图5是根据本说明书一些实施例所示的业务数据的广播方式的示意图;
图6是根据本说明书一些实施例所示的区块链网络中的通信系统的模块图;
图7是根据本说明书一些实施例所示的区块链网络中的业务数据传输系统的模块图;
图8是根据本说明书一些实施例所示的区块链网络中的业务数据传输系统的模块图。
具体实施方式
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本说明书的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本说明书应用于其它类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
应当理解,本文使用的“系统”、“装置”、“单元”和/或“模组”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。
如本说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。
本说明书中使用了流程图用来说明根据本说明书的实施例的系统所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
图1是根据本说明书一些实施例所示的区块链网络的拓扑图。如图1所示,区块链网络可包括具有通信连接的P2P网络和中继网络。
P2P全称对等式网络(peer-to-peer),又称点对点技术,是无中心服务器、依靠用户群(peers)交换信息的互联网体系。与有中心服务器的中央网络系统不同,对等网络的每个用户端既是一个节点,也有服务器的功能。中心服务器意味着,当受到攻击的时候,中心服务器一旦宕机,整个网络和服务就会出现问题。P2P网络的优势在于,每个节点既是客户端又是服务端,所以当受到攻击时,任何一台机器垮掉,也不会影响整体的服务。区块链的核心是去中心化,这和P2P网络的观念不约而同,所以区块链网络一般都将P2P作为底层实现,包括大部分的公有链和联盟链都采用了类似的底层实现。
区块链网络中,底层的P2P网络可包括一个或多个P2P节点,这样的一个P2P节点同时一般也是区块链网络中的一个节点,如图1所示的节点A、B、...、G、H。中继网络(简称relay)可包括一个或多个中继节点,如图1所示的relay1、relay2、relay3、relay4。
需要说明的是,本说明书中出现的“直接连接”(简称“直连”)表示两个节点之间无其它节点连接,换言之,具有连接但不是直接连接(即间接连接)的两个节点之间还连接有其它节点。例如,如图1所示,节点A与节点C、D分别直接连接,节点A、B、C分别与relay1直接连接,节点A与节点B、E、F、G、H分别间接连接。另外,图1、图3、图4、图5中由区块链节点指向中继节点间的单向箭头表示区块链节点和中继节点间的通信连接可以是由区块链节点主动发起的,应当理解,区块链节点与中继节点之间是可以双向通信的。
中继网络拥有快速中转能力且较为稳定,可以弥补P2P网络在一些情况下服务质量较差的不足。网络服务质量可以基于消息的传输时延等服务质量(QualityofService,QoS)要素来衡量。以传输时延为例,例如,节点A要发送一条消息给节点E,消息从节点A发送消息到节点E接收到消息的时延越小或者从节点A发送消息到节点A接收到节点E反馈的消息的时延越小,传输消息的链路的服务质量越好。
在一些实施例中,区块链节点对于同一业务数据可以分别通过P2P网络和中继网络中的链路进行传输,相应地,该业务数据的目的区块链节点可以将先接收到业务数据作为有效数据保留,并将后接收到的业务数据作为无效数据丢弃。其中,重复的数据收发造成了网络带宽和机器资源的浪费,也会一定程度上影响节点的网络处理能力。在区块链网络中,业务数据可包括交易记录(简称交易)、请求消息、响应消息等中的一种或多种。
为此,本说明书中的实施例通过辅助区块链节点间建立P2P直连、记录链路优化信息、基于链路优化信息选择更优链路等手段,不仅可以保证业务数据的低时延传输,还能有效减少重复的数据收发(传输),从而可以节省网络带宽和机器资源以及减轻对节点网络处理能力的影响。
图2是根据本说明书一些实施例所示的辅助区块链节点间建立P2P直连的示意图。图2中与图1相同的部分可以参考图1及相关描述。
在一些实施例中,对于属于同一Intranet(企事业单位内部网络,可简称为内网)的若干区块链节点,与这些区块链节点直接连接的中继节点可以协助这些节点建立基于私用网络地址(或称为内网地址)的P2P子网连接(可称为P2P内网连接)。建立P2P内网连接后,这些区块链节点通过P2P网络进行通信可能会获得更好的网络服务质量(例如,低时延、大带宽)。
具体地,当区块链节点与中继节点建立直接连接后,该中继节点可获得该区块链节点的公用网络地址。与所述至少两个区块链节点直连的中继节点可获得所述至少两个区块链节点的外网地址,并判断所述至少两个区块链节点的外网地址是否相同。若相同,说明所述至少两个区块链节点属于同一内网(属于同一内网设备的外网地址相同),则中继节点可向所述至少两个区块链节点查询各自的内网地址,并至少向所述至少向两个区块链节点之一发送其它区块链节点节点的内网地址,以使所述至少两个区块链节点基于内网地址建立P2P直连。
参考图2,假设节点A、B、C属于同一内网(图2中用虚线圆圈标识)且节点A、B、C均直连于relay1,则relay1可获得节点A、B、C的外网地址,当relay1发现节点A、B、C的外网地址相同时,可向节点A、B、C中的一个或多个查询其内网地址,并向节点A、B、C中的一个或多个(可以是每一个)发送其余区块链节点的内网地址。例如,relay1可以向节点A发送节点B和C的内网地址,以使节点A基于节点B和C的内网地址向节点B和C发起P2P直连。又如,relay1可以分别向节点B和C分别发送节点A的内网地址,以使节点B和C分别基于节点A的内网地址向节点A发起P2P直连。
在已经协助节点A、B、C建立P2P子网连接后,若relay1又发现新连接的区块链节点与节点A、B、C具有相同的外网地址,则relay1可以将之前查询到的节点A、B、C的内网地址都发给新连接的区块链节点,以使新连接的区块链节点基于节点A、B、C的内网地址分别向节点A、B、C发起P2P直连。也可以是relay1向新连接的区块链节点发起查询其内网地址的请求,并将新连接的区块链节点的内网地址分别发送给节点A、B、C,以使节点A、B、C分别基于新连接的区块链节点的内网地址向新连接的区块链节点发起P2P直连。
在一些实施例中,对于地理位置相近的若干区块链节点,与这些区块链节点直连的中继节点可以协助这些节点建立基于外网地址的P2P子网连接。由于这些区块链节点的地理位置相近,互相建立P2P直连后通过P2P网络进行通信可能会获得更好的网络服务质量(例如,低时延、大带宽)。
具体地,对于至少两个区块链节点,与所述至少两个区块链节点直连的中继节点可以获得所述至少两个区块链节点的外网地址,并基于所述至少两个区块链节点的外网地址确定所述至少两个区块链节点的地理位置信息。进而,中继节点可以根据所述至少两个区块链节点的地理位置信息确定所述至少两个区块链节点的地理位置是否接近,若接近,则协助所述至少两个区块链节点建立P2P子网连接。其中,协助所述至少两个区块链节点建立P2P连接的方式可包括:至少向所述至少两个区块链节点之一发送其它区块链节点的外网地址,以使所述至少两个区块链节点基于外网地址建立P2P直连。
在一些实施例中,所述地理位置信息可以包括地理坐标(如经纬度),当中继节点发现所述任意两个区块链节点中任意两个的距离(可根据坐标计算)小于距离阈值时,可认为两者的地理位置接近。在一些实施例中,所述地理位置信息可以包括物理世界中的地名(如城市名称),当发现所述任意两个区块链节点位于同一城市时,也可认为两者的地理位置接近。
参考图2,假设节点E、H、G均直连于relay4,则relay4可获得节点E、H、G的外网地址,当relay4发现节点E和H、节点H和G、节点G和E的距离均小于距离阈值,或发现节点E和H、节点H和G、节点G和E分别属于同一城市时,relay4可以向节点E(或H)发送节点H(或E)的外网地址,向节点H(或G)发送节点G(或H)的外网地址,以及向节点G(或E)发送节点E(或G)的外网地址,以使节点E和H、节点H和G、节点G和E分别基于外网地址建立P2P直连。
在一些实施例中,本说明书中提及的网络地址可以是IP地址。在一些实施例中,中继节点可以在IP地理信息库中查询IP地址对应的地理位置信息,所述IP地理信息库中存储有各IP地址对应的地理位置信息。
应当理解,中继节点协助建立P2P子网连接的区块链节点中可能包括已经建立P2P直连的区块链节点。例如,结合参照图1和图2,在中继节点协助节点A、B、C建立P2P内网连接之前,节点A和C已经建立P2P直连。若节点A和B已经建立了基于内网地址的P2P直连,节点A、B可不必再基于内网地址发起P2P直连。若节点A和B建立的是基于外网地址的P2P直连,节点A、B可基于内网地址重新建立P2P直连。
通过协助一些可能提升网络服务质量的P2P直连的建立,有助于挖掘更丰富的链路优化信息。关于链路优化信息的详细内容,可以参考图3及其相关描述。
图3是根据本说明书一些实施例所示的区块链网络中的通信方法的示例性流程图。流程300可以由P2P网络中的任一区块链节点(记为节点X)执行,以获得节点X到任一其它区块链节点(记为节点Y)的链路优化信息。所述链路优化信息指示通过P2P 网络和中继网络之一将业务数据从节点X传输至节点Y。在一些实施例中,流程300可以由图6所示的系统600实现。如图3所示,流程300可以包括:
步骤310,通过P2P网络向节点Y发送至少一个第一探测消息。
步骤320,接收节点Y通过P2P网络返回的至少一个第一响应消息。
所述至少一个第一响应消息与所述至少一个第一探测消息一一对应。在一些实施例中,单个探测消息(第一探测消息/第二探测消息)及其对应的响应消息(第一响应消息/第二响应消息)可包含相同的标记(如消息编号)。
在一些实施例中,发送节点可以持续地(如周期性地)发送探测信息到接收节点。例如,探测消息可以是P2P网络中让发送节点确认接受节点是否在线/发生故障/当前可用等的心跳消息。
步骤330,根据所述至少一个第一探测消息的发送时间和所述至少一个第一响应消息的接收时间,获得节点X与节点Y之间的P2P网络通信链路的第一服务质量数据。
在一些实施例,任一网络(P2P网络/中继网络)链路的服务质量数据可基于消息对(包括互相对应的探测消息和响应消息)的往返时延(Round-Trip Time,RTT)确定。应当理解,对于任一消息对,将该消息对中响应消息的接收时间减去该消息对中探测消息的发送时间即可得到该消息对的RTT。
值得说明的是,可以认为单向通信和双向通信中网络通信链路的服务质量是稳定的,因此可以用往返时延去衡量涵盖单向通信和双向通信两种情形下的网络通信链路服务质量。
节点X可持续发出探测消息,以动态探测节点X与节点Y之间通信链路的服务质量。相应地,节点X可以持续计算出多个消息对的RTT,进而节点X可以基于各消息对的往返时延进行统计,得到节点X与节点Y之间的网络通信链路的服务质量数据。在一些实施例中,节点X可以根据平滑算法累计各消息对的往返时延,得到持续更新的QoS数据(也可称为累计往返时延)。具体地,节点X可以按SRTT = (alpha* SRTT ) + ((1-alpha) * RTT)更新QoS数据(即累计往返时延),其中,等号左右的SRTT表示更新前后的累计往返时延,alpha为预设的权重系数(0<alpha<1),RTT表示当前计算出的某个消息对的往返时延。通常情况下,alpha的取值可以接近1(相应地,1-alpha接近0),例如,alpha=0.9,以避免网络服务质量的短暂波动(体现在单个RTT上)使得整体的QoS数据数值出现较大波动。
步骤340,通过中继网络向节点Y发送至少一个第二探测消息。
步骤350,接收节点Y通过中继网络返回的至少一个第二响应消息。
步骤360,根据所述至少一个第二探测消息的发送时间和所述至少一个第二响应消息的接收时间,获得节点X与节点Y之间的中继网络通信链路的第二服务质量数据。
关于获得第二服务质量(QoS)数据的细节,可以参考获得获得第一服务质量数据(步骤310~330)的相关描述。
步骤370,比较所述第一服务质量数据和所述第二服务质量数据。
步骤380,根据比较结果记录节点X到节点Y的链路优化信息。
服务质量数据与起止节点(即节点X和节点Y)以及通信链路所在的网络(P2P网络/中继网络)关联。第一服务质量(QoS)数据对应P2P网络,第二服务质量(QoS)数据对应中继网络。通过比较第一QoS数据和第二QoS数据,可以确定P2P网络的通信链路和中继网络的通信链路中哪个是更优的选择。因此,节点X可以根据比较结果记录指示通过P2P 网络和中继网络之一将业务数据从节点X传输至节点Y的链路优化数据。区块链网络中的节点(区块链节点/中继节点)根据链路优化数据可不将业务数据通过服务质量较差的网络(P2P网络/中继网络)通信链路发送至目的区块链节点,从而可以减少重复的数据收发量。
在一些实施例中,链路优化信息可以通过设置不同的标志来指示通过P2P网络和中继网络之一将业务数据从节点X传输至节点Y,例如,在链路优化信息中用“0”和“1”之一指示通过P2P 网络传输业务数据,用“0”和“1”中的另一个指示通过中继网络传输业务数据。
在一些实施例中,节点X可以仅记录指示通过P2P网络将业务数据从节点X传输至节点Y的链路优化信息,即,当查询不到有关节点Y(作为目的节点)的链路优化信息时,说明通过中继网络将业务数据从节点X传输至节点Y可获得更优的服务质量。具体地,所述指示通过P2P网络将业务数据从节点X传输至节点Y的链路优化信息可以包含节点Y的标识信息。相应地,当查询不到包含节点Y(作为目的节点)的标识信息的链路优化信息时,说明通过P2P网络将业务数据从节点X传输至节点Y可获得更优的服务质量。
类似地,在又一些实施例中,节点X可以仅记录指示通过中继网络将业务数据从节点X传输至节点Y的链路优化信息,即,当查询不到有关节点Y(作为目的节点)的链路优化信息时,说明通过P2P网络将业务数据从节点X传输至节点Y可获得更优的服务质量。具体地,所述指示通过中继网络将业务数据从节点X传输至节点Y的链路优化信息可以包含节点Y的标识信息。相应地,当查询不到包含节点Y(作为目的节点)的标识信息的链路优化信息时,说明通过中继网络将业务数据从节点X传输至节点Y可获得更优的服务质量。
在一些实施例中,节点X可以创建用于保存节点X到各其他区块链节点的链路优化信息的链路优化表,该链路优化表可跟随节点X到各个节点的链路优化信息动态更新。参考前述内容,在一些实施例中,可以是:对于任一节点,当节点X保存的链路优化表中包含该节点的标识信息时,说明通过P2P网络将业务数据从节点X传输至该节点可获得更优的服务质量。在又一些实施例中,也可以是:对于任一节点,当节点X保存的链路优化表中包含该节点的标识信息时,说明通过中继网络将业务数据从节点X传输至该节点可获得更优的服务质量。
对于发送给指定区块链节点(单个目的区块链节点)的业务数据(即单播消息),节点X可以根据节点X到目的区块链节点的链路优化信息选择通过P2P网络或中继网络将该业务数据传输至目的区块链节点。即,对于单播的业务数据,若节点X根据查询链路优化信息选择通过P2P网络和中继网络中的某一个传输该业务数据,则可不再通过P2P网络和中继网络中的另一个传输该业务数据,可减小数据的重复收发。具体地,节点X可以获得待传输的业务数据,确定该业务数据的目的区块链节点。进而,节点X可查询该目的区块链节点(参考前述节点Y)对应的链路优化信息,并根据查询结果选择通过P2P网络和中继网络之一将所述业务数据传输至该目的区块链节点。关于链路优化信息的更多细节,可以参考图3及其相关描述。
下面结合图4对业务数据的单播进行举例说明。如图4所示,节点A保存的链路优化表(图4中用list标识)中包含节点B、C、F的标识信息,该链路优化表将除节点A外的其余区块链节点划分为两部分,第一部分包含节点B、C、F,第二部分包含节点D、E、G、H。
若该链路优化表指示通过P2P网络将业务数据从节点A传输至属于第一部分的区块链节点,节点A会选择通过P2P网络将业务数据发送给属于第一部分的区块链节点,以及通过中继网络将业务数据发送给属于第二部分的区块链节点。例如,如图4所示,节点A要发送业务数据data1至节点F,节点A不会将data1发送给直连的relay1,而会通过P2P网络中的某条通信链路(例如,A-C-F)将data1发送给至节点F。
若该链路优化表指示通过中继网络将业务数据从节点A传输至属于第一部分的区块链节点,节点A会选择通过中继网络将业务数据发送给属于第一部分的区块链节点,以及通过中继网络将业务数据发送给属于第二部分的区块链节点。仍以待发往节点F的data1为例,节点A会通过中继网络中的某条通信链路将data1发送给至节点F。
在一些实施例中,节点X可以将节点X到目标区块链节点的链路优化信息上报给该同一中继节点,其中,目标区块链节点为与节点X直连于同一中继节点的区块链节点。如此,中继节点可以根据节点X上报的链路优化信息确定是否将节点X广播的业务数据发送给直连的目标区块链节点。其中,若节点X上报的链路优化信息指示通过P2P网络将业务数据传输至目标区块链节点,则中继节点可以不再向目标区块链节点发送广播的业务数据,可以减少数据的重复收发。应当理解,由于链路优化信息可持续更新,节点X可以将更新后的链路优化信息上报至直连的中继节点,以实现链路优化信息的同步。
下面结合图5对业务数据的广播进行举例说明。如图5所示,节点A保存的链路优化表(图5中用list标识)中包含节点C、E的标识信息,该链路优化表将除节点A外的其余区块链节点划分为两部分,第一部分包含节点C、E(节点C即与节点A分别直连于relay1的目标区块链节点),第二部分包含节点B、D、F、G、H。节点A可将缺失节点E的标识信息的链路优化表(对应图5中仅包含C的list)上报给直连的relay1,当然节点A也可将完整的链路优化表上报给直连的relay1。
若该链路优化表指示通过P2P网络将业务数据从节点A传输至属于第一部分的区块链节点,如图5所示,relay1接收到广播的业务数据data2后,可检查节点A上报的链路优化表中是否包含与relay1直连的区块链节点的标识信息,当发现节点A上报的链路优化表中包含节点C的标识信息时,relay1可向节点B中转一份data2但不向节点C中转一份data2。
若该链路优化表指示通过中继网络将业务数据从节点A传输至属于第一部分的区块链节点,relay1接收到广播的业务数据data2后,可检查节点A上报的链路优化表中是否包含与relay1直连的区块链节点的标识信息,当发现节点A上报的链路优化表中包含节点C的标识信息时, relay1可向节点C中转一份data2但不向节点B中转一份data2。
经过POC(Proof of Concept,概念验证)验证发现,借助本说明书实施例提供的辅助区块链节点间建立P2P直连的方法、区块链网络中的通信方法、业务数据传输方法,同步交易、区块的速度明显提升(平均共识时延明显下降),且可以节约40%以上的带宽。
应当注意的是,上述有关流程的描述仅仅是为了示例和说明,而不限定本说明书的适用范围。对于本领域技术人员来说,在本说明书的指导下可以对流程进行各种修正和改变。然而,这些修正和改变仍在本说明书的范围之内。
图6是根据本说明书一些实施例所示的区块链网络中的通信系统的模块图。系统600可以在P2P网络中的某一区块链节点(记为节点X)上实现,用于获得节点X到任一其它区块链节点(记为节点Y)的链路优化信息。如图6所示,系统600可以包括第一服务质量数据获得模块610、第二服务质量数据获得模块620、服务质量数据比较模块630和链路优化信息记录模块640。
第一服务质量数据获得模块610可以用于:通过P2P网络向节点Y发送至少一个第一探测消息,接收节点Y通过P2P网络返回的至少一个第一响应消息,根据所述至少一个第一探测消息的发送时间和所述至少一个第一响应消息的接收时间,获得节点X与节点Y之间的P2P网络通信链路的第一服务质量数据。
第二服务质量数据获得模块620可以用于:通过中继网络向节点Y发送至少一个第二探测消息,接收节点Y通过中继网络返回的至少一个第二响应消息,根据所述至少一个第二探测消息的发送时间和所述至少一个第二响应消息的接收时间,获得节点X与节点Y之间的中继网络通信链路的第二服务质量数据。
服务质量数据比较模块630可以用于比较所述第一服务质量数据和所述第二服务质量数据。
链路优化信息记录模块640可以用于根据比较结果记录节点X到节点Y的链路优化信息。
关于系统600及其模块的更多细节,可以参考图3及其相关描述。
图7是根据本说明书一些实施例所示的区块链网络中的通信系统的模块图。系统700可以在P2P网络中的某一区块链节点上实现。如图7所示,系统700可以包括第一业务数据获得模块710、目的区块链节点确定模块720、链路优化信息查询模块730和第一选择模块740。
第一业务数据获得模块710可以用于获得待传输的业务数据。
目的区块链节点确定模块720可以用于确定所述业务数据的目的区块链节点。
链路优化信息查询模块730可以用于查询所述某一区块链节点到所述目的区块链节点对应的链路优化信息,该链路优化信息指示通过P2P网络和中继网络之一将业务数据从所述某一区块链节点传输至所述目的区块链节点。
第一选择模块740可以用于根据查询结果选择通过P2P网络和中继网络之一将所述业务数据传输至所述目的区块链节点。
关于系统700及其模块的更多细节,可以参考图4及其相关描述。
图8是根据本说明书一些实施例所示的区块链网络中的通信系统的模块图。系统800可以在中继网络中的某一中继节点上实现,所述中继节点直连有P2P网络中的至少两个区块链节点。如图8所示,系统800可以包括第二业务数据获得模块810、链路优化信息获得模块820和第二选择模块830。
第二业务数据获得模块810可以用于获得来自所述至少两个区块链节点中的某一区块链节点广播的业务数据。
链路优化信息获得模块820可以用于获得所述某一区块链节点上报的链路优化信息。
第二选择模块830可以用于根据所述某一区块链节点上报的链路优化信息选择是否向所述至少两个区块链节点中的其它区块链节点发送所述业务数据。
关于系统800及其模块的更多细节,可以参考图5及其相关描述。
应当理解,图6~8所示的系统及其模块可以利用各种方式来实现。例如,在一些实施例中,系统及其模块可以通过硬件、软件或者软件和硬件的结合来实现。其中,硬件部分可以利用专用逻辑来实现;软件部分则可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域技术人员可以理解上述的方法和系统可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本说明书的系统及其模块不仅可以有诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用例如由各种类型的处理器所执行的软件实现,还可以由上述硬件电路和软件的结合(例如,固件)来实现。
需要注意的是,以上对于系统及其模块的描述,仅为描述方便,并不能把本说明书限制在所举实施例范围之内。可以理解,对于本领域的技术人员来说,在了解系统的原理后,可能在不背离这一原理的情况下,对各个模块进行任意组合,或者构成子系统与其他模块连接。例如,在一些实施例中,图6所示的第一服务质量数据获得模块610和第二服务质量数据获得模块620可以是一个系统中的不同模块,也可以是一个模块实现这两个模块的功能。又如,在一些实施例中,图7所示的第一业务数据获得模块710和目的区块链节点确定模块720可以是两个模块,也可以合并为一个模块。诸如此类的变形,均在本说明书的保护范围之内。
本说明书实施例可能带来的有益效果包括但不限于:(1)通过协助一些可能提升网络服务质量的P2P直连的建立,有助于挖掘更丰富的链路优化信息;(2)通过记录链路优化信息,有助于选择更优的网络通信链路传输业务数据,可以减少重复的数据收发,从而可以节省网络带宽和机器资源以及减轻对节点网络处理能力的影响。需要说明的是,不同实施例可能产生的有益效果不同,在不同的实施例里,可能产生的有益效果可以是以上任意一种或几种的组合,也可以是其他任何可能获得的有益效果。
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本说明书实施例的限定。虽然此处并没有明确说明,本领域技术人员可能会对本说明书实施例进行各种修改、改进和修正。该类修改、改进和修正在本说明书实施例中被建议,所以该类修改、改进、修正仍属于本说明书示范实施例的精神和范围。
同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
此外,本领域技术人员可以理解,本说明书实施例的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本说明书实施例的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。此外,本说明书实施例的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。
计算机存储介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等,或合适的组合形式。计算机存储介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机存储介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、RF、或类似介质,或任何上述介质的组合。
本说明书实施例各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,常规程序化编程语言如C语言、VisualBasic、Fortran2003、Perl、COBOL2002、PHP、ABAP,动态编程语言如Python、Ruby和Groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或处理设备上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。
此外,除非权利要求中明确说明,本说明书实施例所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书实施例流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的处理设备或移动设备上安装所描述的系统。
同理,应当注意的是,为了简化本说明书实施例披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书实施例对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
针对本说明书引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本说明书作为参考。与本说明书内容不一致或产生冲突的申请历史文件除外,对本说明书权利要求最广范围有限制的文件(当前或之后附加于本说明书中的)也除外。需要说明的是,如果本说明书附属材料中的描述、定义、和/或术语的使用与本说明书所述内容有不一致或冲突的地方,以本说明书的描述、定义和/或术语的使用为准。
最后,应当理解的是,本说明书中所述实施例仅用以说明本说明书实施例的原则。其他的变形也可能属于本说明书实施例的范围。因此,作为示例而非限制,本说明书实施例的替代配置可视为与本说明书的教导一致。相应地,本说明书的实施例不仅限于本说明书明确介绍和描述的实施例。