掌桥专利:专业的专利平台
掌桥专利
首页

消息传输方法及装置

文献发布时间:2023-06-19 11:44:10


消息传输方法及装置

技术领域

本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种消息传输方法及装置。

背景技术

区块链技术(也被称之为,分布式账本技术)是一种去中心化的分布式数据库技术,具有去中心化、公开透明、不可篡改、可信任等多种特点,适用于诸多对数据可靠性具有高需求的应用场景中。

发明内容

有鉴于此,本说明书一个或多个实施例提供一种消息传输方法及装置。

为实现上述目的,本说明书一个或多个实施例提供技术方案如下:

根据本说明书一个或多个实施例的第一方面,提出了一种消息传输方法,应用于区块链中继通信网络中的中继节点,所述方法包括:

接收消息包,每一消息包用于记录待传输消息的部分消息内容;

解析接收到的消息包以获取所述待传输消息的封装信息,所述封装信息用于指示所述待传输消息中位于所述封装信息之后的区块链消息的类型;

若所述封装信息表明所述区块链消息属于区块同步消息,则在未接收到对应于所述待传输消息的所有消息包的情况下对接收到的消息包进行转发。

根据本说明书一个或多个实施例的第二方面,提出了一种消息传输方法,包括:

获取区块链节点生成的区块链消息;

在所述区块链消息之前添加封装信息,以将所述区块链消息封装为待传输消息,其中,所述封装信息用于指示所述区块链消息的类型;

将所述待传输消息的部分消息内容划分至消息包中,并将所述消息包发送至所述区块链节点在区块链中继通信网络内对应的中继节点,以由所述中继节点在根据所述封装信息确定所述区块链消息属于区块同步消息时,在未接收到对应于所述待传输消息的所有消息包的情况下对接收到的消息包进行转发。

根据本说明书一个或多个实施例的第三方面,提出了一种消息传输装置,包括:

接收单元,用于接收消息包,每一消息包用于记录待传输消息的部分消息内容;

解析单元,解析接收到的消息包以获取所述待传输消息的封装信息,所述封装信息用于指示所述待传输消息中位于所述封装信息之后的区块链消息的类型;

转发单元,用于若所述封装信息表明所述区块链消息属于区块同步消息,则在未接收到对应于所述待传输消息的所有消息包的情况下对接收到的消息包进行转发。

根据本说明书一个或多个实施例的第四方面,提出了一种消息传输装置,包括:

获取单元,用于获取区块链节点生成的区块链消息;

添加单元,用于在所述区块链消息之前添加封装信息,以将所述区块链消息封装为待传输消息,其中,所述封装信息用于指示所述区块链消息的类型;

发送单元,用于将所述待传输消息的部分消息内容划分至消息包中,并将所述消息包发送至所述区块链节点在区块链中继通信网络内对应的中继节点,以由所述中继节点在根据所述封装信息确定所述区块链消息属于区块同步消息时,在未接收到对应于所述待传输消息的所有消息包的情况下对接收到的消息包进行转发。

根据本说明书一个或多个实施例的第五方面,提出了一种电子设备,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器通过运行所述可执行指令以实现如第一方面或第二方面所述的方法。

根据本说明书一个或多个实施例的第六方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面或第二方面所述方法的步骤。

附图说明

图1是一示例性实施例提供的一种区块链节点与区块链中继通信网络的交互示意图。

图2是一示例性实施例提供的一种消息传输场景的示意图。

图3是一示例性实施例提供的一种消息传输方法的流程图。

图4是一示例性实施例提供的一种封装信息的示意图。

图5是一示例性实施例提供的一种消息传输方法的流程图。

图6是一示例性实施例提供的一种电子设备的结构示意图。

图7是一示例性实施例提供的一种消息传输装置的框图。

图8是一示例性实施例提供的一种消息传输装置的框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。

需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。

图1是一示例性实施例提供的一种区块链节点与区块链中继通信网络的交互示意图。如图1所示,假定区块链中继通信网络包含中继11、中继12、中继13和中继14等若干中继节点。以中继11为例,该中继11可以通过网关101与区块链网络中的节点21相连;类似地,其他中继节点也可以与区块链网络中的其他区块链节点相连。网关101用于协助节点21接入区块链中继通信网络,该网关101在逻辑上相当于区块链网络中的一个区块链节点,但该网关101本身并不参与区块链共识,这样节点21可以通过区块链网络所采用的通信协议与该网关101进行通信,并且该网关101不会对区块链网络中的共识等过程产生负面影响。网关101本质上是节点21接入区块链中继通信网络的适配程序,该适配程序可以部署在节点21上,也可以部署在中继11上,还可以部署在独立于中继11和节点21的另一设备中,本说明书并不对此进行限制。

区块链网络中包含若干区块链节点,区块链节点之间的需要实现诸如共识、交易传输、区块同步等通信操作。在相关技术中,各个区块链节点之间直接采用P2P(Peer toPeer,点对点)技术进行通信,以传输交易、区块等,但由于各种网络因素导致通信时延高、稳定性差,无法满足应用需求。因此,类似于上述的节点21,每个区块链节点都可以分别接入区块链中继通信网络中的中继节点,这样区块链节点之间就可以通过区块链中继通信网络来实现通信。由于区块链中继通信网络是面向区块链实时传输的骨干中继通信网络,各个中继节点之间能够通过高QoS保障的优质带宽进行通信交互,因而由区块链中继通信网络接管区块链节点之间通信的中间链路,能够降低通信时延、提高稳定性,从而显著提升区块链节点之间的通信质量。

区块链中继通信网络可以适用于各种类型的区块链网络,包括公有链、私有链和联盟链等。譬如,应用于公有链的区块链中继通信网络主要包括Falcon、Fast BitcoinRelay Network(FBRN)、Fast Internet Bitcoin Relay Engine(FIBRE)等,而应用于联盟链的区块链中继通信网络主要包括BloXRoute、Blockchain Transmission Network(BTN)等。但是,相关技术中的上述区块链中继通信网络只能够在区块链节点之间的通信过程中起到中继作用,与未使用区块链中继通信网络时采用的P2P传输机制并没有本质差异。

以图2所示的消息传输场景为例。假定区块链网络中的节点21与区块链中继通信网络中的中继11相连、节点22与中继12相连、节点23与中继13相连、节点24-25与中继14相连;其中,为了便于理解,此处省去了前文所述的网关(如网关101)。

当节点21需要向节点22和节点24发送消息时,节点21首先需要将消息至中继11,而中继11在收取到完整的消息后才分别将该消息转发至中继12、中继13,中继12在收取到完整的消息后一方面将该消息转发至节点22、另一方面将该消息转发至中继14,中继13在收取到完整的消息后一方面将该消息转发至节点23、另一方面将该消息转发至中继14,中继14在收取到完整的消息后将该消息转发至节点24和节点25。那么,最终节点22和节点24收到来自节点21的消息,但是节点23和节点25等也同样收到了该消息,而中继14向节点25转发消息的操作、中继11向中继13转发消息的操作、中继13分别向中继14和节点23转发消息的操作都并非必要,这些操作造成了对通讯资源的浪费,降低了消息发送的效率。

为了节省通讯资源和提升消息发送的效率,通过区块链中继通信网络实现更为高效的通信过程,本说明书提供了新的消息传输方案。

图3是一示例性实施例提供的一种消息传输方法的流程图。如图3所示,该方法应用于区块链中继通信网络中的中继节点,该方法可以包括:

步骤302,接收消息包,每一消息包用于记录待传输消息的部分消息内容。

区块链中继通信网络中可以在控制面和数据面上实现分层;其中,控制面和数据面的概念来源于SDN(Software Defined Network,软件定义网络),SDN把网络数据的转发控制策略和数据传输过程分离,使得转发控制策略可自由定义,而数据传输也能够更加通用和高效。对于区块链中继通信网络而言,控制面可以理解为消息路由的策略,而数据面是指区块链消息在区块链中继通信网络中的传输。

属于区块链中继通信网络的中继节点可以从与自身相连的区块链节点处接收到消息包,待传输消息的消息内容可以被划分至不同的消息包中,每一消息包中记录有待传输消息的部分消息内容。或者,中继节点可以从区块链中继通信网络中的其他中继节点处接收到该消息包,本说明书中并不对此进行限制。

步骤304,解析接收到的消息包以获取所述待传输消息的封装信息,所述封装信息用于指示所述待传输消息中位于所述封装信息之后的区块链消息的类型。

中继节点可以通过解析接收到的消息包,获取待传输消息的封装信息,而该封装信息可以用于指示该待传输消息中位于封装信息之后的区块链消息的类型。其中,区块链消息可以由区块链节点之间通过实现诸如共识、交易传输、区块同步等通信操作而生成。

待传输消息的封装信息中还可以包括该待传输消息的目标传输对象的对象标识,该对象标识可以为区块链节点的节点标识,那么目标传输对象为节点标识对应的目标区块链节点,或者该对象标识可以为区块链节点集合的集合标识,那么目标传输对象为对应于集合标识的目标区块链节点集合中的所有区块链节点。通过封装信息可以确定待传输消息的目标传输对象,从而可以实现有目的性的消息传输,而不会在中继节点之间或者中继节点与区块链节点之间产生不必要的数据交互,可以避免造成对通讯资源的浪费。其中,中继节点可以将发起注册请求的区块链节点注册至相应的区块链节点集合中,而区块链节点通过提交注册请求,可以根据应用(或业务)上的需求而自由配置自身所属的区块链节点集合,区块链节点可以灵活地变更所属的区块链节点集合。

待传输消息的封装信息还可以用于指示待传输消息的消息类型,并且待传输消息的消息类型与目标传输对象之间存在关联关系。当待传输消息的消息类型为第一类型时,上述目标传输对象的对象标识为区块链节点的节点标识;当待传输消息的消息类型为第二类型时,上述目标传输对象的对象标识为区块链节点集合的集合标识,中继节点通过读取封装信息中用于指示该待传输消息的消息类型的字段,可以快速获知相应的待传输消息的消息类型,便于后续统计各个中继节点接收到的所有待传输消息的消息类型。

以上文所述的节点21~25为例:假定节点24和节点25预先通过发送注册请求而加入了同一区块链节点集合中,该区块链节点集合的集合标识可以为Group01。

假定待传输消息的封装信息可以包括两个部分:封装信息1和封装信息2。该封装信息1和封装信息2可以用于对待传输消息中的区块链消息的解释和描述。其中,封装信息1的格式可以如图4所示,消息类型字段,即cmd id字段可以用于表示待传输消息的消息类型,例如,当cmd id字段为0时表示该待传输消息的消息类型为发送至指定的区块链节点的第一类型,当cmd id字段为1时表示该待传输消息的消息类型为发送至指定的区块链节点集合的第二类型。另外,幻数字段,即magic number字段可以用于表示协议用途;版本字段,即ver字段可以用于表示协议头版本号;压缩字段,即compress字段可以用于表示数据压缩信息,例如,当compress字段为0时表示未压缩,当compress字段为1时表示对应的压缩算法等。头长度字段,即hdr_len字段可以用于表示该封装信息1的长度。服务质量字段,即Qos字段可以用于表示消息传输的服务质量;优先级字段,即priority字段可以用于表示区块链消息之间的优先级关系,对于优先级较高的区块链消息,中继节点可以优先调度转发;控制信息字段,即flag字段可以用于在区块链消息传输的过程中添加控制信息,例如路由策略等;数据长度字段,即payload length字段可以用于表示封装信息1的长度;消息传输序号字段,即trackid字段可以用于表示区块链消息的传输序号。当然,该待传输消息中还可以包括扩展字段,扩展字段可以根据实际需求设定相应的信息,本说明书中并不对此进行限制。

封装信息2中可以包括from字段、to字段、raw_data_type字段和raw_data_len字段,from字段可以用于表示发送该待传输消息中的区块链消息的区块链节点的标识信息。to字段用于表示该待传输消息的目标传输对象的对象标识,对象标识可以是区块链节点的节点标识或者区块链节点集合的集合标识,而当上述封装信息1中的cmd id字段为0时,对象标识应当为区块链节点的节点标识,当上述封装信息1中的cmd id字段为1时,对象标识应当为区块链节点集合的集合标识。raw_data_type字段可以用于表示待传输消息中的区块链消息的消息类型,例如,raw_data_type字段为0时,表示该区块链消息由各个区块链节点之间进行共识而生成,raw_data_type字段为1时,表示该区块链消息由区块链节点之间进行交易而生成,raw_data_type字段为3时,表示该区块链消息为区块同步消息,其中,raw_data_type字段的值对应的区块链消息的类型可以根据实际需求进行设定,本说明书中并不对此进行限制。raw_data_len字段可以用于表示区块链消息的长度。

假定中继节点11接收到节点21发送的消息包,中继节点11通过解析接收到的消息包,可以获取待传输消息A的封装信息,该封装信息包括的封装信息1中的cmd id字段为1,即表明该待传输消息的消息类型为发送至指定的区块链节点集合的第二类型。该封装信息包括的封装信息2中的raw_data_type字段为3,即表明该待传输消息A中的区块链消息的类型为区块同步消息,而封装信息2中的to字段为Group01,即该待传输消息A由节点21传输至区块链节点集合Group01中。

步骤306,若所述封装信息表明所述区块链消息属于区块同步消息,则在未接收到对应于所述待传输消息的所有消息包的情况下对接收到的消息包进行转发。

在中继节点根据上述获取到的待传输消息的封装信息确定该待传输消息中的区块链消息属于区块同步消息、且该封装信息中包括用于指示待传输消息的目标传输对象的对象标识的情况下,中继节点可以通过查询路由表,确定对应于对象标识的目标区块链节点以及区块链中继通信网络中与目标区块链节点相连的目标中继节点。其中,该路由表中可以记录有各个区块链节点与中继节点之间的连接关系。中继节点可以直接通过封装信息确定出相应的待传输消息中的区块链消息是否属于区块同步消息以及待传输消息的目标传输对象的对象标识,此时中继节点无需对待传输消息中的区块链消息进行解析或者识别,可以避免侵入区块链消息对应的区块链业务逻辑,使得区块链中继通讯网路中的各个中继节点对区块链业务逻辑是透明的,可以提升中继节点对区块链消息的处理效率。那么,待传输消息中的区块链消息还可以是经过加密的,中继节点可以直接对加密后的区块链消息进行传输,可以保证区块链消息传输的安全性。

中继节点在根据封装信息确定待传输消息中的区块链消息属于区块同步消息的情况下,中继节点可以在未接收到对应于该待传输消息的所有消息包的情况下,对已经接收到的消息包进行转发。中继节点可以将接收到的消息包转发至目标区块链节点或者目标中继节点,随后中继节点可以每接收到一个消息包后,就立即开始将接收到的该消息包转发至目标区块链节点或者目标中继节点,而无需等到包含待传输消息的所有消息内容的多个消息包都被下载下来后才进行转发,可以加快待传输消息的传输速度。同样的,区块链中继通信网络中的各个中继节点也可以在根据封装信息确定待传输消息中的区块链消息属于区块同步消息的情况下,各个中继节点就可以将接收到的消息包转发至目标区块链节点或者目标中继节点,随后每接收到一个消息包后,就立即开始将其转发至目标区块链节点或者其他中继节点。此时,中继节点转发的消息包中记录的都不是完整的待传输消息,只包含待传输消息的一部分,可能仅包含封装信息的一部分或者仅包含区块链消息的一部分等,从而可以减少传输的消息包的体积,可以加快消息包的传播速度,也就是加快待传输消息的传播速度,降低了区块链中继通信网络中的资源消耗。

当然,各个中继节点还可以按照预设时长或者预设字节长度对接收到的消息包进行转发,预设时长或者预设字节长度可以根据实际需求进行设定,本说明书中并不对此进行限制。例如,中继节点可以每隔5秒对接收到的消息包进行一次转发或者中继节点可以在每接收到5个字节长度的消息包后进行一次转发,本说明书中并不对此进行限制。

封装信息中包含的对象标识可以是区块链节点的节点标识和/或区块链节点集合的集合标识。当该对象标识为集合标识时,中继节点可以通过查询路由表确定对应于该集合标识的目标区块链集合中的所有区块链节点,以及区块链中继通信网络中与目标区块链集合中的区块链节点相连的目标中继节点。

中继节点在确定出目标中继节点后:如果该中继节点自身属于目标中继节点,那么该中继节点根据与自身相连的目标区块链节点,将接收到的消息包传输至目标区块链节点,也就是,将待传输消息的各个部分传输至该目标区块链节点;如果该中继节点并非目标中继节点,或者除了该中继节点之外还存在其他的目标中继节点,那么该中继节点可以将接收到的消息包传输至目标中继节点,以由该目标中继节点转发至相连的目标区块链节点。中继节点将接收到的消息包传输至目标中继节点时,如果该中继节点可以直接与目标中继节点相连,则可以直接将接收到的消息包传输至该目标中继节点,如果该中继节点并未直接与目标中继节点相连,则可以规划自身与该目标中继节点之间的传输路径,并将接收到的消息包发送至该传输路径中位于下一跳的中继节点,使得消息包能沿该传输路径到达目标中继节点。

如前所述,路由表可以由区块链中继通信网络中的中继节点生成,路由表可以用于记录各个区块链节点所属的区块链节点集合,以及各个区块链节点与中继节点之间的连接关系,其中,该路由表可以是树状形式的路由表等,本说明书中并不对此进行限制。相应地,中继节点可以通过查询该路由表,确定已注册至目标区块链节点集合的目标区块链节点,以及区块链中继通信网络中与目标区块链节点相连的目标中继节点,进而通过目标中继节点将待传输消息传输至各个目标区块链节点。

路由表中包含的路由策略可能数量众多,中继节点如果每次都在全量的路由策略中匹配待传输消息的封装信息,可能会导致耗时过长。因此,可以将区块链中继通信网络中的中继节点划分为多个中继集合,每个中继集合内的中继节点分别维护两张路由表:集合路由表和全量路由表。全量路由表用于记录区块链中继通信网络中所有中继节点收到的注册请求所形成的路由策略,而各个中继集合分别存在不同的集合路由表,每一集合路由表用于记录相应中继集合内的中继节点直接从相连的区块链节点处收到的注册请求所形成的路由策略。因此,每个中继节点均维护了二个层级的路由表:在收到待传输消息的封装信息后,中继节点首先在自身维护的集合路由表中进行匹配,如果能够确定出目标中继节点,则无需使用全量路由表;如果无法确定或无法完全确定出目标中继节点,则中继节点进而匹配全量路由表,以确定出目标中继节点。

除了由集合路由表和全量路由表构成的二级路由之外,还可以采用其他形式。例如,中继节点可以分别维护自身所处中继集合对应的集合路由表,以及对应于该集合路由表的补充路由表,其中集合路由表和补充路由表的并集为全量路由表。那么,在收到待传输消息的封装信息后,中继节点首先在自身维护的集合路由表中进行匹配,如果能够确定出目标中继节点,则无需使用补充路由表;如果无法确定或无法完全确定出目标中继节点,则中继节点进而匹配补充路由表,相比于匹配全量路由表而言,可以避免对集合路由表中的路由策略进行重复匹配。

在中继节点接收到的上述待传输消息的封装信息表明该待传输消息中的区块链消息属于区块同步消息而该封装信息中未包括用于指示待传输消息的目标传输对象的对象标识的情况下,中继节点可以向与自身相连的区块链节点和区块链中继通信网络中的其他中继节点广播待传输消息的各个部分,即中继节点可以向与自身相连的区块链节点和区块链中继通信网络中的其他中继节点广播接收到的消息包,从而使得区块链节点和其他中继节点均可以接收到该待传输消息,从而可以保证待传输消息的正常发送。

在区块链节点产生的区块链消息被采用接入协议封装形成前述待传输消息的消息内容,而区块链中继通信网络中的中继节点之间采用传输协议进行通信的情况下,中继节点还可以按照传输协议对接收到的消息包中记录的待传输消息的部分消息内容重新构建,从而可以使得重新构建后的消息包可以在区块链中继通信网络中的中继节点之间正常传输,可以保证保证待传输消息被传输至目标传输对象处。

当然,若区块链消息被封装成待传输消息的消息内容采用的接入协议与区块链中继通信网络中各个中继节点之间采用的传输协议一致的情况下,中继节点无需对接收到的消息包中记录的待传输消息的消息内容进行重新构建。

以上文所述的节点21~25以及节点21向区块链节点集合Group01发送待传输消息A为例:中继11通过解析从节点21处接收到的消息包,可以获取到节点21发送的待传输消息A的封装信息,中继11可以根据该封装信息中的raw_data_type字段判断该待传输消息A中的区块链消息属于区块同步消息,并且可以根据该封装信息中的to字段确定该待传输消息A的目标传输对象为区块链节点集合Group01。

中继11可以通过查询路由表,确定属于区块链节点集合Group01的区块链节点为节点24和节点25,以及区块链中继通信网络中与节点24和节点25相连的目标中继节点为中继14,且中继11与中继14之间的路由转发路径为“中继11-中继12-中继14”。因此中继11可以先将接收到的消息包转发至中继12;中继12可以通过解析接收到的消息包,获取上述封装信息,中继节点12还可以发现目标中继节点为中继14,因此中继12可以将接收到的消息包转发至中继14;中继14收到消息包后,发现目标中继节点为自己、目标区块链节点为节点24和节点25,因此中继14将接收到的消息包转发至节点24和节点25。

同样的,中继11可以在接收到待传输消息A的每一消息包后,就立即将该接收到的消息包转发至中继12;中继12收到该消息包后,发现目标中继节点为中继14,因此中继12将消息包转发至中继14;中继14收到该消息包后,发现目标中继节点为自己、目标区块链节点为节点24和节点25,因此中继14将该消息包转发至节点24和节点25。中继11可以持续收取待传输消息A的消息包并将收取到的消息包转发至中继12,直至收取完并转发完待传输消息A的全部消息包,也就是收取完待传输消息A的所有消息内容。此时,区块链中继通信网络的中继节点可以在未完整接收到待传输消息A的情况下,开始转发该待传输消息A的部分数据,中继节点可以在收取待传输消息A的数据的同时对已接收到的待传输消息A的部分数据进行转发,从而使得各个中继节点无需等待接收完待传输消息A的时间,有利于区块同步消息的快速转发,可以减少在区块链中继通信网络中的收发延迟。

当然,在区块链节点通过区块链中继通信网络传输类似于区块同步消息等的大数据量消息时,区块链中继通信网络中的中继节点都可以一边对大数据量消息进行收取,一边转发已经接收到的大数据量消息,有利于大数据量消息的快速转发,可以减少在区块链中继通信网络中的收发延迟。

在本说明书的技术方案中,区块链中继通信网络内的中继节点在根据封装信息确定区块链消息属于区块同步消息时,中继节点可以在未完整接收到待传输消息的情况下对接收到的待传输消息的各个部分进行转发,一方面,中继节点无需通过对待传输消息中的区块链消息的解析或者识别确定出区块链消息的类型,可以避免侵入区块链消息对应的区块链业务逻辑,使得区块链中继通讯网路中的各个中继节点对区块链业务逻辑是透明的,可以提升中继节点对区块链消息的处理效率,另一方面,中继节点可以在收取待传输消息的同时对已接收到的待传输消息进行转发,从而使得各个中继节点无需等待接收完待传输消息的时间,有利于区块同步消息的快速转发,可以减少在区块链中继通信网络中的收发延迟。同时中继节点可以根据待传输消息中的封装信息确定待传输消息的目标传输对象,从而可以实现有目的性的消息传输,而不会在中继节点之间或者中继节点与区块链节点之间产生不必要的数据交互,消除了相关技术中基于P2P技术进行消息传输时的盲目性,加快了区块链消息的传输速度,降低了区块链中继通信网络的资源消耗。

图5是一示例性实施例提供的一种消息传输方法的流程图。如图5所示,该方法可以应用于区块链网络中的封装节点上,该封装节点可以部署在如图1所示的各个区块链节点、网关或者是中继节点上,当然,该封装节点也可以部署在独立于区块链节点、网关和中继节点的另一设备上,本说明书中并不对此进行限制;该方法可以包括:

步骤502,获取区块链节点生成的区块链消息。

封装节点可以接收到相连的区块链节点生成的区块链消息,该区块链消息可以是由区块链节点之间通过实现诸如共识、交易传输和区块同步等通信操作而生成,本说明书中并不对此进行限制。

步骤504,在所述区块链消息之前添加封装信息,以将所述区块链消息封装为待传输消息,其中,所述封装信息用于指示所述区块链消息的类型。

封装节点可以在获取到的区块链消息之前添加封装信息,从而可以生成包含封装信息和区块链消息的待传输消息。步骤504的具体实施过程可参照上述步骤302,此处不再赘述。

步骤506,将所述待传输消息的部分消息内容划分至消息包中,并将所述消息包发送至所述区块链节点在区块链中继通信网络内对应的中继节点,以由所述中继节点在根据所述封装信息确定所述区块链消息属于区块同步消息时,在未接收到对应于所述待传输消息的所有消息包的情况下对接收到的消息包进行转发。

封装节点可以将待传输消息发送至区块链节点在区块链中继通信网络内对应的中继节点处,从而可以由该中继节点对待传输消息进行处理。步骤506的具体实施过程可参照上述步骤304,此处不再赘述。

图6是一示例性实施例提供的一种电子设备的结构示意图。请参考图6,在硬件层面,该设备包括处理器602、内部总线604、网络接口606、内存608以及非易失性存储器610,当然还可能包括其他业务所需要的硬件。处理器602从非易失性存储器610中读取对应的计算机程序到内存608中然后运行,在逻辑层面上形成消息传输装置。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。

请参考图7,在软件实施方式中,该消息传输装置可以包括:

接收单元71,用于接收消息包,每一消息包用于记录待传输消息的部分消息内容;

解析单元72,解析接收到的消息包以获取所述待传输消息的封装信息,所述封装信息用于指示所述待传输消息中位于所述封装信息之后的区块链消息的类型;

转发单元73,用于若所述封装信息表明所述区块链消息属于区块同步消息,则在未接收到对应于所述待传输消息的所有消息包的情况下对接收到的消息包进行转发。

可选的,接收单元71具体用于:

从相连的区块链节点处接收到所述消息包;

或者,从所述区块链中继通信网络中的其他中继节点处接收到所述消息包。

可选的,所述封装信息中包括用于指示所述待传输消息的目标传输对象的对象标识;转发单元73具体用于:

确定对应于所述对象标识的目标区块链节点;

将接收到的消息包传输至所述目标区块链节点。

可选的,转发单元73具体用于:

通过查询路由表,确定对应于所述对象标识的目标区块链节点,以及所述区块链中继通信网络中与所述目标区块链节点相连的目标中继节点,所述路由表用于记录各个区块链节点与中继节点之间的连接关系。

可选的,转发单元73具体用于:

将所述消息包传输至相连的目标区块链节点;

或者,在所述目标中继节点为所述区块链中继通信网络中的其他中继节点的情况下,将所述消息包传输至所述目标中继节点,以由所述目标中继节点传输至相连的目标区块链节点。

可选的,所述对象标识为区块链节点的节点标识,所述目标传输对象包括对应于所述节点标识的目标区块链节点;或者,

所述对象标识为区块链节点集合的集合标识,所述目标传输对象包括对应于所述集合标识的目标区块链节点集合中的所有区块链节点。

可选的,所述封装信息还用于指示所述待传输消息的消息类型;

当所述待传输消息的消息类型为第一类型时,所述对象标识为区块链节点的节点标识;当所述待传输消息的消息类型为第二类型时,所述对象标识为区块链节点集合的集合标识。

可选的,转发单元73具体用于:

向相连的区块链节点和所述区块链中继通信网络中的其他中继节点广播所述消息包,以使得所述区块链节点和所述其他中继节点均接收到所述消息包中记录的所述待传输消息的部分消息内容。

可选的,转发单元73具体用于:

在所述区块链消息被采用接入协议封装形成所述待传输消息的消息内容,且所述区块链中继通信网络中的中继节点之间采用传输协议进行通信的情况下,按照所述传输协议对所述消息包中记录的待传输消息的部分消息内容进行重构,以使得重构后的消息包在所述中继节点之间传输。

请参考图8,在软件实施方式中,该消息传输装置可以包括:

获取单元81,用于获取区块链节点生成的区块链消息;

添加单元82,用于在所述区块链消息之前添加封装信息,以将所述区块链消息封装为待传输消息,其中,所述封装信息用于指示所述区块链消息的类型;

发送单元83,用于将所述待传输消息的部分消息内容划分至消息包中,并将所述消息包发送至所述区块链节点在区块链中继通信网络内对应的中继节点,以由所述中继节点在根据所述封装信息确定所述区块链消息属于区块同步消息时,在未接收到对应于所述待传输消息的所有消息包的情况下对接收到的消息包进行转发。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。

在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。

相关技术
  • 消息传输方法、消息传输装置及消息传输系统
  • 消息转换装置、消息传输系统以及消息传输方法
技术分类

06120113031663