在区块链共识处理时进行处理消息同步的方法及装置与流程

文档序号:20510634发布日期:2020-04-24 18:29阅读:243来源:国知局
在区块链共识处理时进行处理消息同步的方法及装置与流程

本公开涉及区块链技术,具体地,涉及在区块链共识处理时进行处理消息同步的方法及装置。



背景技术:

基于pbft的共识算法,为了防止节点作恶,在某些共识处理阶段需要接收到不低于预定数量的正常处理消息才能够完成该共识处理阶段的处理。因而,对于这类共识算法,在共识处理过程中,需要保证各个节点能够顺利接收到其它节点发送的处理消息,并且需要保证处理消息的顺序性。



技术实现要素:

鉴于上述,本公开提供了在区块链共识处理时进行处理消息同步的方法及装置。利用该方法和装置,当各个区块链节未接收到其他区块链节点发送的处理消息时,向其他区块链节点发送处理消息重发请求,其他区块链节点在接收到处理消息重发请求时,重新发送自己之前发送过的对应处理消息,由此能够使存在缺失处理消息的区块链节点能够顺利接收到处理消息。

根据本公开的一个方面,提供了一种用于在区块链共识处理时进行处理消息同步的方法,包括:如果在给定期间期满时存在处理消息缺失,则向区块链网络中的目标区块链节点发送处理消息重发请求,所述处理消息是在针对待共识数据块的当前处理时从所述其它区块链节点接收的处理消息,所述处理消息重发请求包括待共识数据块标识;以及从所述区块链网络中的目标区块链节点接收响应于所述处理消息重发请求而重发的处理消息。

可选的,在一个示例中,如果在给定期间期满时存在处理消息缺失,则向区块链网络中的目标区块链节点发送处理消息重发请求包括:如果在给定期间期满时存在处理消息缺失并且不能完成针对所述待共识数据块的当前处理,则向所述区块链网络中的目标区块链节点发送处理消息重发请求。

可选的,在一个示例中,所述处理消息重发请求还包括缺失处理消息标识。

可选的,在一个示例中,所述处理消息重发请求还包括处理阶段标识。

可选的,在一个示例中,所述处理阶段标识包括以下阶段标识中的任一种:区块链数据块恢复阶段标识;共识确认阶段标识。

可选的,在一个示例中,向区块链网络中的目标区块链节点发送处理消息重发请求包括:向所述区块链网络中的其它区块链节点广播处理消息重发请求。

可选的,在一个示例中,所述处理消息重发请求还包括重发请求发送节点标识。其中,所述其它区块链节点响应于所述处理消息重发请求而向所述重发请求发送节点重发处理消息。

可选的,在一个示例中,如果在给定期间期满时存在处理消息缺失,则向区块链网络中的目标区块链节点发送处理消息重发请求包括:如果在给定期间期满时存在处理消息缺失,则确定所缺失的处理消息的源区块链节点;以及向所确定的源区块链节点发送所述处理消息重发请求。

根据本公开的另一方面,还提供一种用于在区块链共识处理时进行处理消息同步的方法,包括:接收处理消息重发请求,所述处理消息重发请求包括待共识数据块标识;以及向所述区块链网络中的目标区块链节点发送与所述处理消息重发请求对应的处理消息。

可选的,在一个示例中,所述处理消息重发请求还包括缺失处理消息标识。

可选的,在一个示例中,所述处理消息重发请求还包括处理阶段标识。

可选的,在一个示例中,向所述区块链网络中的目标区块链节点发送与所述处理消息重发请求对应的处理消息包括:向所述区块链网络中的其它区块链节点广播与所述处理消息重发请求对应的处理消息。

可选的,在一个示例中,所述处理消息重发请求还包括重发请求发送节点标识。以及向所述区块链网络中的目标区块链节点发送与所述处理消息重发请求对应的处理消息包括:向所述重发请求发送节点标识所指示的区块链节点发送与所述处理消息重发请求对应的处理消息。

根据本公开的另一方面,还提供一种用于在区块链共识处理时进行处理消息同步的装置,包括:消息重发请求发送单元,被配置为如果在给定期间期满时存在处理消息缺失,则向区块链网络中的目标区块链节点发送处理消息重发请求,所述处理消息是在针对待共识数据块的当前处理时从所述其它区块链节点接收的处理消息,所述处理消息重发请求包括待共识数据块标识;以及处理消息接收单元,被配置为从所述区块链网络中的目标区块链节点接收响应于所述处理消息重发请求而重发的处理消息。

可选的,在一个示例中,所述消息重发请求发送单元被配置为:如果在给定期间期满时存在处理消息缺失并且不能完成针对所述待共识数据块的当前处理,则向所述区块链网络中的目标区块链节点发送处理消息重发请求。

可选的,在一个示例中,所述处理消息重发请求还包括缺失处理消息标识。

可选的,在一个示例中,所述处理消息重发请求还包括处理阶段标识。

可选的,在一个示例中,所述消息重发请求发送单元被配置为:向所述区块链网络中的其它区块链节点广播处理消息重发请求。

可选的,在一个示例中,所述消息重发请求发送单元包括:源节点确定模块,被配置为如果在给定期间期满时存在处理消息缺失,则确定所缺失的处理消息的源区块链节点;以及消息重发请求发送模块,被配置为向所确定的源区块链节点发送所述处理消息重发请求。

根据本公开的另一方面,还提供一种用于在区块链共识处理时进行处理消息同步的方法,包括:消息重发请求接收单元,被配置为接收处理消息重发请求,所述处理消息重发请求包括待共识数据块标识;以及消息发送单元,被配置为向所述区块链网络中的目标区块链节点发送与所述处理消息重发请求对应的处理消息。

可选的,在一个示例中,所述消息发送单元被配置为:向所述区块链网络中的其它区块链节点广播与所述处理消息重发请求对应的处理消息。

可选的,在一个示例中,所述处理消息重发请求还包括重发请求发送节点标识。所述消息发送单元被配置为:向所述重发请求发送节点标识所指示的区块链节点发送与所述处理消息重发请求对应的处理消息。

根据本公开的另一方面,还提供一种区块链节点设备,包括如上第三方面所述的装置;以及如上第四方面所述的装置。

根据本公开的另一方面,还提供一种计算设备,包括:至少一个处理器;以及存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如上第一方面所述的方法。

根据本公开的另一方面,还提供一种机器可读存储介质,其存储有可执行指令,所述指令当被执行时使得所述机器执行如上第二方面所述的方法。

根据本公开的另一方面,还提供一种计算设备,包括:至少一个处理器;以及存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如上所述的方法。

根据本公开的另一方面,还提供一种非暂时性机器可读存储介质,其存储有可执行指令,所述指令当被执行时使得所述机器执行如上所述的方法。

利用本公开的方法和装置,通过在存在处理消息缺失时,周期性地向其他区块链节点发送处理消息重发请求,以通常其他区块链节点重新发送自身之前发送过的对应处理消息,由此能够使存在处理消息缺失的区块链节点顺利接收到处理消息。此外,该消息同步方法不需要消耗过多的通信资源。

利用本公开的方法和装置,通过在给定期间期满时存在处理消息缺失并且不能完成针对所述待共识数据块的当前处理时,向所述区块链网络中的目标区块链节点发送处理消息重发请求,能够减少不必要的消息发送,从而能减轻各个区块链节点的负荷。

利用本公开的方法和装置,通过在处理消息重发请求中包括缺失处理消息标识,目标区块链节点可以仅重发对应于缺失处理消息标识的处理消息,从而减少消息发送量,并节约带宽。

利用本公开的方法和装置,通过在处理消息重发请求中包括处理阶段标识,目标区块链节点可以仅重发对应处理阶段的处理消息,从而减少消息发送量,并节约网络资源。

利用本公开的方法和装置,通过在处理消息重发请求中包括重发请求发送节点标识,其它区块链节点可以只向发出处理消息重发请求的区块链节点发送处理消息,从而减少重发处理消息所占用的网络资源。

附图说明

通过参照下面的附图,可以实现对于本公开内容的本质和优点的进一步理解。在附图中,类似组件或特征可以具有相同的附图标记。附图是用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开的实施例,但并不构成对本公开的实施例的限制。在附图中:

图1是本公开的实施例的应用环境的一个示例的示意图;

图2是图1所示的区块链网络的一个示例的示意图;

图3是用于说明区块链共识处理过程的一个示例的示意图;

图4是用于说明在共识处理过程中的共识换主过程的一个示例的示意图;

图5是根据本公开的一个实施例的处理消息同步方法的流程图;

图6是根据本公开的一个实施例的处理消息同步方法中的消息重发请求发送过程的一个示例的流程图;

图7是根据本公开的一个实施例的处理消息同步装置的结构框图;

图8是图7所示的处理消息同步装置中的消息重发请求发送单元的一个示例的结构框图;

图9是根据本公开的另一实施例的处理消息同步装置的结构框图;

图10是根据本公开的一个实施例的区块链节点的结构框图;以及

图11是根据本公开的一个实施例的用于实现处理消息同步方法的计算设备的结构框图。

具体实施方式

以下将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本公开内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。

如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。

现在结合附图来描述本公开的在区块链共识处理时进行处理消息同步的方法及装置。

图1是本公开的实施例的应用环境的一个示例的示意图。

在一些示例中,应用环境100使得实体能够参与联盟区块链网络101。应用环境100包括计算设备或系统102、104和网络103。在一些示例中,网络103包括局域网(lan)、广域网(wan)、因特网或其组合,并且连接网站、用户设备(例如,计算设备)和后端系统等。在一些示例中,可以通过有线和/或无线通信链路来访问网络103。在一些示例中,网络103使得能够与联盟区块链网络101进行通信。通常,网络103表示一个或多个通信网络。在一些情况下,计算设备102、104可以是云计算系统(未示出)的节点,或者每个计算设备102、104可以是单独的云计算系统。云计算系统可以包括通过网络互连的多个计算机并且可以用作分布式处理系统。

在所描述的示例中,每个计算系统102、104可以包括能够作为联盟区块链网络101中的区块链节点的任何适当的计算系统。示例的计算设备包括但不限于服务器、台式计算机、笔记本电脑、平板电脑设备和智能手机。在一些示例中,计算系统102、104可以主管用于与联盟区块链网络101交互的一个或多个计算机所实现的服务。例如,计算系统104可以主管第一实体(例如,用户a)的计算机实现的服务。例如,第一实体可以管理与一个或多个其他实体(例如,其他用户)的交易的交易管理系统。计算系统108可以主管第二实体(例如,用户b)的计算机实现的服务。例如第二实体可以管理其与一个或多个其他实体(例如,其他用户)的交易的交易管理系统。在图1的示例中在图1中,联盟区块链网络101被表示为对等节点网络,并且计算系统102、104分别提供参与联盟区块链网络102的第一实体和第二实体的节点。

图2是图1所示的区块链网络的示意图。在区块链网络200中,存在区块链节点201、202、203、204和205。

区块链网络中的各个区块链节点可以参与不同的处理。例如,一些区块链节点可以参与共识处理过程(例如,作为将数据块添加到区块链206上的共识节点),而其他区块链节点可以不参与共识处理过程。作为另一示例,一些区块链节点可以存储区块链206的完整副本,而其他区块链节点可以仅存储区块链206的部分的副本。例如,数据访问权限可以限制相应参与者在其相应系统内存储的区块链数据。

区块链(例如,图2的区块链206)由块的链组成,每个块存储有数据。数据的示例包括表示两个或更多参与者之间的交易的交易数据。区块链中可以存储有任何适合的数据,例如文档、图像、视频、音频等。交易的示例可以包括但不限于交换有价值的东西(例如,资产,产品,服务和货币)。在区块链中存储的交易数据是不可更改的。

图3是用于说明区块链共识处理过程的一个示例的示意图。如图2所示,共识处理过程200包括共识启动阶段210、共识响应阶段220、数据块恢复阶段230和共识确认阶段240。

在共识启动阶段210,区块链网络的主节点(leadernode)向其他区块链网络中的其它区块链节点(即备份节点(replicanode))发送对待共识数据块进行共识处理的共识启动消息(initial消息)。共识启动消息表明主节点正在启动共识处理过程。如图3所示,主节点r0向其他区块链节点r1、r2和r3发送initial消息。注意,共识处理过程200被示为包括四个区块链节点r0、r1、r2和r3仅用于说明目的,共识处理过程200可以包括任何合适数量的区块链节点。

在一个示例中,主节点可以基于纠删码算法,将待共识数据块分割为多个数据块分片,数据块分片的数量等于区块链网络中的备份节点的数量。然后,主节点可以在共识启动消息中将各个数据块分片单播发送给其它区块链节点。在图2中,主节点r0将各个数据块分片发送给区块链节点r1、r2和r3。在该示例中,initial消息的格式例如可以是:initial<epoch,tx_root_hash,ec_block_hash[],ec_block,seq,j>,其中,epoch为区块链时代标识,tx_root_hash为默克尔树的根哈希,ec_block_hash[]为默克尔树分支节点的哈希值,ec_block为通过纠删码算法折分后的针对目标区块链节点的数据块分片,seq为待共识数据块在区块链时代epoch下的编号,j为该initial消息的目标区块链节点标识。

区块链时代(epoch)是指在某区块链节点作为主节点时的区块链网络时期。例如,在图2所示的示例中,当前区块链网络处于主节点r0所对应的区块链时代下。如果触发共识换主且换主成功,主节点切换为其它区块链节点,则区块链网络时期相应地切换至下一个区块链时代。区块链时代可以用区块链时代序号来标识。例如,如果在图2所示的区块链时代序号为n,那么当下一次共识换主后的区块链时代为n+1。

在其它区块链节点接收到共识启动消息之后,共识处理进入共识响应阶段220。在共识响应阶段220,当备份节点接收到共识启动消息时,响应于共识启动消息准备共识响应消息(echo消息),并将共识响应消息广播给其它区块链节点。共识响应消息是备份节点针对主节点所发送的共识启动消息的应答。如图2所示,备份节点r1接收由主节点r0发送的initial消息,并以echo消息作为应答来回复主节点r0。同时,备份节点r1还将echo消息多播到其他备份节点,例如备份节点r2和r3。类似地,备份节点r2和r3每个都将echo消息多播到包括主节点r0的其他区块链节点。

当区块链节点(例如主节点或备用节点)从其他区块链节点接收echo消息时,共识处理可以进入共识确认阶段。在共识确认阶段,区块链节点可以验证echo消息中的信息。在图3所示的示例中,当initial消息中包括数据块分片时,各个备份节点将自己所接收到的数据块分片包括在echo消息中广播给其它区块链节点。此时,各区块链节点在接收到echo消息时进入数据块恢复阶段230。每个区块链节点(例如备份节点)可以基于所接收到的数据块分片来执行数据块恢复。echo消息的格式例如可以是echo<epoch,tx_root_hash,ec_block_hash[],ec_block,seq,sign_proof,j>,其中,ec_block为数据块分片,j为echo消息的发送节点标识,sign_proof为区块链节点j针对其数据块分片的签名。

在数据块恢复阶段230,各个区链节点可以基于纠删码算法,对所拥有的各个数据块分片(从主节点和从其他备份节接收到的)进行数据块恢复,以恢复出待共识数据块。在恢复出待共识数据块之后,区块链节点对待共识数据块执行共识确认阶段240。

在共识确认阶段240,各个区块链节点对待共识数据块进行共识验证,当共识验证通过时,向其它区块链节点广播确认消息(accept消息)。如果验证不通过,则可以丢弃该数据块,并不进行任何处理。例如,如图2所示,主节点r0将accept消息广播到备份节点r1、r2和r3。类似地,备份节点r1、r2和r2各自将accept消息广播到其他区块链节点。accept消息的格式例如可以是accept<epoch,tx_root_hash,seq,sign_proofs,j>,在accept消息中,j表示accept消息的发送节点标识,sign_proofs为区块链节点j恢复出待共识数据块所利用的所有数据块分片的签名集合。例如,如果区块链节点r1利用区块链节点r2和r3的echo消息中携带的数据块分片恢复出了待共识数据块,则sign_proofs字段包括区块链节点r2和r3的签名集合。

在本公开的一些实施场景中,共识处理过程可以不包括数据恢复阶段230。例如,在主节点未基于纠删码将待共识数据块分割成数据块区片时,可以不包括数据恢复阶段230。

当区块链节点从其他区块链节点接收到足够数量的accept消息时,区块链节点确定待共识数据块已经达成共识。例如,如果主节点r0或备份节点r1、r2或r3接收到仲裁(例如,2f+1,其中f表示多个故障网络节点)的accept消息的数量,则确定达成共识。

图4是用于说明区块链网络中的共识换主过程的示意图。共识换主过程(如图4所示的共识换主过程400)是指,在共识处理过程中,区块链网络中的备份节点认为主节点存在异常行为(如主节点作恶)而启动的主节点更换过程。与共识换主和主节点相关的一个概念是区块链时代。当主节点发生更换时,区块链时代相应地切换到下一个区块链时代。

在一个示例中,在换主启动阶段410,当区块链网络中的备份节点认为需要进行共识换主时,备份节点将发送换主启动消息(epoch_change消息)发送到其他区块链节点。换主启动消息表明备份节点希望成为新区块链时代中的新主节点。例如,如图4所示,如果备份节点r0确定当前主节点有故障并且需要执行共识换主,则向区块链网络中的其他区块链节点r1、r2和r3发送epoch_change消息,以表明区块链节点r0想要成为新的主节点。注意,共识换主过程400被示为结合四个网络节点实现,但这仅仅是示例,共识换主过程400可以结合任何合适数量的区块链节点来实现。

然后,在换主响应阶段420,每个网络节点接收由备份节点r0发送的换主启动消息,并响应于换主启动消息准备换主响应消息(new_epoch消息),并将换主响应消息广播到其他区块链节点。例如,如图4所示,区块链节点r1接收由备份节点r0发送的epoch_change消息,并且用new_epoch消息回复备份节点r0,该消息表示对备份节点r0可以成为新的主节点的确认。同时,区块链节点r1还将new_epoch消息广播到其他区块链节点,例如网络节点r2和r3。类似地,区块链节点r2和r3也分别将各自的new_epoch消息广播到其他区块链节点。各个区块链节点可以基于所接收到的换主响应消息确定换主是否成功,并确认新的主节点和新的区块链时代。

在共识处理过程中,数据块恢复阶段和共识确认阶段都需要收到足够数量的消息才能完成本阶段的处理。如果区块链节点故障等原因导致消息丢失,相应阶段的共识处理将不能完成,因而区块链节点将不会做出任何响应,针对相应待共识数据块的共识处理也会被中断。然而,在区块链网络中,同一时间段进行共识处理的待共识数据块可能有多个,各个区块链节点对待共识数据块的共识处理需要保持一致,即保持同步。此外,在共识换主过程中,各个区块链节点需要接收到足够的换主响消息才能确认换主是否成功并确认新的主节点。以下实施例提供了一种使各个区块链节点能够及时接收到处理消息,从而实现针对待共识数据块的同步共识。

图5是根据本公开的一个实施例的处理消息同步方法的流程图。图5以区块链网络中的任意两个区块链节点为例进行了图示。

如图5所示,在块502,区块链节点r1判断给定期间是否期满。处理消息是在针对待共识数据块的当前处理阶段,从其它区块链节点接收的处理消息。当前处理阶段例如可以是图3所示的数据块恢复阶段或共识确认阶段。当前处理阶段还可以是图4所示的换主响应阶段。

给定期间的起点可以是在相应处理阶段发出自己的处理消息的时刻,或相应处理阶段接收到首个其他区块链节点的处理消息的时刻。在一个示例中,在数据块恢复阶段,给定期间的起点可以是区块链节点接收到某一区块链节点的echo消息的时刻,或在发出自己的echo消息之后经过预定时间段的时刻。在另一示例中,在共识换主过程中的换主响应过程中,给定期间的起点可以是发出自己的共识响应消息的时刻,或接收到首个其他区块链节点的共识响应消息的时刻。

如果给定期间期满,则在块504,针对待共识数据块,判断是否存在处理消息缺失。例如,在图3所示的数据恢复阶段,区块链节点r1可以判断是否收到了针对待共识数据的所有来自其他备份节点(例如,区块链节点r2和r3)的echo消息,如果没有收到r2或r3中的任何一个echo消息,则确定存在处理消息缺失。类似地,在共识确认阶段,可以判断是否接收到了所有来自其他备份节点(例如,区块链节点r0、r2和r3)的accept消息。

当区块链节点r1判断出存在消息缺失时,在块506,区块链节点r1向区块链网络中的目标区块链节点发送处理消息重发请求。处理消息重发请求包括待共识数据块标识。待共识数据块标识可以是待共识数据块在区块链网络中的数据块序列号。数据块序列号可以是从创世区块开始的所有数据块的连续编号,也可以是相应区块链时代中的编号。因而,在处理消息重发请求中还可以包括区块链时代标识。目标区块链可以是区块链网络中的所有其它区块链节点(例如图3所示的区块链节点r0、r2和r3)。此时,可以向区块链网络中的其它区块链节点广播处理消息重发请求。作为示例,处理消息重发请求的格式可以是status<seq>。

在另一示例中,在判断出存在消息缺失时,还可以确定缺失的处理消息的源区块链节点。处理消息的源区块链节点是指发送该处理消息的区块链节点。在判断出缺失处理消息的源区块链节点时,可以向确定的源区块链节点发送处理消息重发请求。例如,在数据块恢复阶段,如果区块链节点r1判断出缺失区块链节点r2的响应消息,则可以仅向区块链节点r2发送消息重发请求。由此,能够减少网络资源占用。

当接收到消息重发请求时,在块508,区块链节点r2区块链节点r2向区块链网络中的目标区块链节点发送与处理消息重发请求对应的处理消息。虽然图5中示出了接收区块链节点r1发送的消息重发请求,区块链网络中的区块链节点可以接收任意其它区块链节点的消息重发请求。

在一个示例中,各个区块链节点在接收到消息重发请求时,可以将自己发送过的针对待共识数据块的处理消息广播给其它区块链节点。例如,如果区块链节点接收到针对待共识数据块k的消息重发请求时,区块链节点r2可以将自己发送过的针对待共识数据块k的所有处理消息广播给其它区块链节点。在一个示例中,接收到处理消息重发请求的区块链节点可以只发送echo消息和数据块accept消息。

处理消息重发请求中还可以包括缺失处理消息标识。作为示例,处理消息重发请求的格式可以是status<epoch,seq,l>,l为缺失处理消息标识。可以设置为l的不同取值对应于共识处理过程的各种处理消息,从而通过l的值可以判断出所缺失的处理消息。在该示例中,其它区块链节点(例如区块链节点r2)在接收到消息重发请求时,可以发送与sep和l对应的处理消息。例如,如果区块链节点r1判断出自己缺失的是echo消息,则可以在处理消息重发请求中标识出所缺失的是针对待共识数据块的echo消息。从而r2在接收到该处理消息重发请求时,可以向其它区块链节点广播针对待共识数据块的echo消息。

此外,处理消息重发请求中还可以包括处理阶段标识。作为示例,处理消息重发请求的格式可以是status<seq,e,a>,其中,e表示数据块恢复阶段,a表示共识确认阶段。当e取值为1时表示数据块恢复阶段所需的消息(即echo消息),当e取值为0时,表示echo消息不存在缺失。类似地,当a取值为1时,表示缺失共识确认阶段所需的消息(即accept消息),当a取值为0时,表示accept消息不存在缺失。由此,接收到处理消息重发请求的区块链节点可以只重发区块链节点r1缺失的处理消息。例如,如果区块链节点r2接收到的消息重发请求为status<k,1,0>,则可以将针对待共识数据块k的echo消息重发给其它区块链节点。

在另一示例中,处理消息重发请求还包括重发请求发送节点标识。作为示例,处理消息重发请求可以为status<seq,e,a,j>,其中,j表示发送处理消息重发请求的区块链节点标识。当其它区块链节点接收到该处理消息请求时,可以将相应的处理消息重发给区块链节点j。

图6是根据本公开的一个实施例的处理消息同步方法中的消息重发请求发送过程的一个示例的流程图。

如图6所示,在块602判断给定期间是否期满。当给定期间期满时,在块604,判断是否存在处理消息缺失。

如果存在处理消息缺失,则在块606,则判断是否能完成针对待共识数据块的当前处理。例如,在图3所示的数据恢复阶段,如果区块链节点r1能够基于纠删码算法,并根据当前已收集到的数据块分片能够恢复出待共识数据块,则表明虽然存在消息缺失,但能够完成针对待共识数据块的当前处理。类似地,在共识确认阶段,如果已接收到了足够数量的数据确认消息并能够得出共识通过的确认结果,则可以确定能够完成该阶段的处理。在换主响应阶段,如果基于已接收到的换主响应消息能够确定出新主节点,则可以确定能够完成换主响应阶段的处理。

当不能完成当前处理时,在块608,向区块链网络中的目标区块链节点发送处理消息重发请求。如果存在消息缺失的区块链节点能够完成当前处理,则没有必要再请求重发所缺失的处理消息。由此,能够减少消息发送所占用的网络资源,并减轻各区块链节点的负荷。

通过以上实施例,在共识处理的各个过程(包括共识换主过程)中可以使用通用格式的消息重发请求来实现处理消息同步。

图7是根据本公开的一个实施例的处理消息同步装置的结构框图。如图7所示,处理消息同步装置700包括消息重发请求发送单元710和处理消息接收单元720。

消息重发请求发送单元710被配置为如果在给定期间期满时存在处理消息缺失,则向区块链网络中的目标区块链节点发送处理消息重发请求,处理消息是在针对待共识数据块的当前处理时从其它区块链节点接收的处理消息,处理消息重发请求包括待共识数据块标识。

在一个示例中,消息重发请求发送单元710可以被配置为当在给定期间期满时存在处理消息缺失并且不能完成针对待共识数据块的当前处理时,向区块链网络中的目标区块链节点发送处理消息重发请求。消息重发请求发送单元710可以向区块链网络中的其它区块链节点广播处理消息重发请求。

处理消息接收单元720被配置为从区块链网络中的目标区块链节点接收响应于处理消息重发请求而重发的处理消息。

图8是图7所示的处理消息同步装置中的消息重发请求发送单元的一个示例的结构框图。如图8所示,消息重发请求发送单元710包括源节点确定模块711和消息重发请求发送模块712。

源节点确定模块711被配置为如果在给定期间期满时存在处理消息缺失,则确定所缺失的处理消息的源区块链节点。消息重发请求发送模块712被配置为向所确定的源区块链节点发送处理消息重发请求。

处理消息重发请求还可以包括缺失处理消息标识,还可以包括处理阶段标识,从而其它区块链节点在接收到消息重发请求时,可以只发送对应于缺失处理消息标识和/或处理阶段标识的处理消息。此外,处理消息重发请求还可以包括待共识数据块的对应的区块链时代标识。

图9是根据本公开的另一实施例的处理消息同步装置的结构框图。如图9所示,处理消息同步装置900包括消息重发请求接收单元910和消息发送单元920。

消息重发请求接收单元910被配置为接收处理消息重发请求。处理消息重发请求包括待共识数据块标识。在接收到处理消息重发请求时,消息发送单元920向区块链网络中的目标区块链节点发送与处理消息重发请求对应的处理消息。

在一个示例中,消息发送单元920可以被配置为向区块链网络中的其它区块链节点广播与处理消息重发请求对应的处理消息。

此外,当处理消息重发请求还包括重发请求发送节点标识时,消息发送单元可以向重发请求发送节点标识所指示的区块链节点发送与处理消息重发请求对应的处理消息。

图10是根据本公开的一个实施例的区块链节点的结构框图。如图9所示,区块链节点1000包括处理消息同步装置1010和处理消息同步装置1020。

处理消息同步装置1010可以具有以上结合图7和图8所描述的功能和结构。处理消息同步装置1020可以具有以上结合图9描述的功能和结构。

以上参照图1到图9,对根据本公开的处理消息同步方法及装置的实施例进行了描述。在以上对方法实施例的描述中所提及的细节,同样适用于本公开的装置的实施例。

本公开的处理消息同步装置可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见。

本公开的处理消息同步的装置可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将存储器中对应的计算机程序指令读取到内存中运行形成的。在本公开中,处理消息同步的装置例如可以利用计算设备实现。

图11是根据本公开的一个实施例的用于实现处理消息同步方法的计算设备的结构框图。如图11所示,计算设备1100包括处理器1110、存储器1120、内存1130、通信接口1140和内部总线1150,处理器1110、存储器1120、内存1130、通信接口1140经由内部总线1150连接在一起。根据一个实施例,计算设备1100可以包括至少一个处理器1110,该至少一个处理器1110执行在计算机可读存储介质(即,存储器1120)中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。

在一个实施例中,在存储器1120中存储计算机可执行指令,其当执行时使得至少一个处理器1110:如果在给定期间期满时存在处理消息缺失,则向区块链网络中的目标区块链节点发送处理消息重发请求,所述处理消息是在针对待共识数据块的当前处理时从所述其它区块链节点接收的处理消息,所述处理消息重发请求包括待共识数据块标识;以及从所述区块链网络中的目标区块链节点接收响应于所述处理消息重发请求而重发的处理消息。

在另一实施例中,在存储器1120中存储计算机可执行指令,其当执行时使得至少一个处理器1110:接收处理消息重发请求,处理消息重发请求包括待共识数据块标识;以及向区块链网络中的目标区块链节点发送与处理消息重发请求对应的处理消息。

应该理解,在存储器1120中存储的计算机可执行指令当执行时使得至少一个处理器1110进行本公开的各个实施例中以上结合图1-9描述的各种操作和功能。

根据一个实施例,提供了一种例如非暂时性机器可读介质的程序产品。非暂时性机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本公开的各个实施例中以上结合图1-9描述的各种操作和功能。

具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。

在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本发明的一部分。

可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如cd-rom、cd-r、cd-rw、dvd-rom、dvd-ram、dvd-rw、dvd-rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。

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

上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。

在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。

以上结合附图详细描述了本公开的实施例的可选实施方式,但是,本公开的实施例并不限于上述实施方式中的具体细节,在本公开的实施例的技术构思范围内,可以对本公开的实施例的技术方案进行多种简单变型,这些简单变型均属于本公开的实施例的保护范围。

本公开内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本公开内容。对于本领域普通技术人员来说,对本公开内容进行的各种修改是显而易见的,并且,也可以在不脱离本公开内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本公开内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1