区块同步方法及装置与流程

文档序号:25490456发布日期:2021-06-15 21:55阅读:83来源:国知局
区块同步方法及装置与流程

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



背景技术:

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



技术实现要素:

有鉴于此,本说明书一个或多个实施例提供一种区块同步方法及装置。

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

根据本说明书一个或多个实施例的第一方面,提出了一种区块链系统,包括:区块链中继通信网络、各个区块链节点以及历史区块同步设备;所述各个区块链节点分别与所述区块链中继通信网络中对应的中继节点相连;所述中继节点与历史区块同步设备相连;其中:

任一中继节点用于在接收到所相连的任一区块链节点发起的区块同步请求的情况下,向所述历史区块同步设备发送区块获取请求;

所述历史区块同步设备用于从所述各个区块链节点处获取区块数据;以及,所述历史区块同步设备响应于所述区块获取请求,向所述任一中继节点返回相应的历史区块,以由所述任一中继节点转发至所述任一区块链节点。

根据本说明书一个或多个实施例的第二方面,提出了一种区块链中继通信网络,包括:若干中继节点以及历史区块同步设备;所述区块链中继通信网络中的各个中继节点分别与区块链网络中对应的区块链节点相连;其中,

任一中继节点,在接收到所相连的任一区块链节点发起的区块同步请求的情况下,向所述历史区块同步设备发送区块获取请求;

所述历史区块同步设备从所述区块链网络中的区块链节点处获取区块数据;以及,所述历史区块同步请求响应于所述区块获取请求,向所述任一中继节点返回相应的历史区块,以由所述任一中继节点转发至所述任一区块链节点;所述历史区块由所述历史区块同步设备存储在本地。

根据本说明书一个或多个实施例的第三方面,提出了一种区块同步方法,应用于区块链中继通信网络中的任一中继节点,所述区块链中继通信网络中的中继节点分别与区块链网络中对应的区块链节点相连,包括:

响应于所相连任一区块链节点发送的区块同步请求,向历史区块同步设备发送区块获取请求,以使所述历史区块同步设备将从所述区块链网络中的区块链节点处获取的历史区块返回;

将接收到的历史区块转发至所述任一区块链节点,以使所述任一区块链节点基于接收到的历史区块对已保存区块进行区块同步。

根据本说明书一个或多个实施例的第四方面,提出了一种区块同步装置,应用于区块链中继通信网络中的任一中继节点,所述区块链中继通信网络中的中继节点分别与区块链网络中对应的区块链节点相连,包括:

发送单元,响应于所相连任一区块链节点发送的区块同步请求,向历史区块同步设备发送区块获取请求,以使所述历史区块同步设备将从所述区块链网络中的区块链节点处获取的历史区块并返回;

转发单元,将接收到的历史区块转发至所述任一区块链节点,以使所述任一区块链节点基于接收到的历史区块对已保存区块进行区块同步。

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

处理器;

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

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

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

附图说明

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

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

图3a是一示例性实施例提供的一种区块链系统的示意图。

图3b是一示例性实施例提供的另一种区块链系统的示意图。

图4是一示例性实施例提供的一种区块同步的交互示意图。

图5是一示例性实施例提供的一种区块同步方法的流程图。

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

图7是一示例性实施例提供的一种区块同步装置的框图。

具体实施方式

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

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

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

区块链网络中包含若干区块链节点,在一相关技术中,各个区块链节点之间直接采用p2p(peertopeer,点对点)技术进行通信,以传输交易、区块等。但该技术方案由于各种网络因素导致通信时延高、稳定性差,无法满足应用需求。为此,在另一相关技术中,提出了通过上述区块链中继通信网络实现区块链节点之间的数据交互的方案。具体的,与上述的节点21相类似,每个区块链节点都可以分别接入区块链中继通信网络中的中继节点,这样区块链节点之间就可以通过区块链中继通信网络来实现通信。由于区块链中继通信网络是面向区块链实时传输的骨干中继通信网络,各个中继节点之间能够通过高qos保障的优质带宽进行通信交互,因而由区块链中继通信网络接管区块链节点之间通信的网络链路,能够降低通信时延、提高稳定性,从而显著提升区块链节点之间的通信质量。

区块链中继通信网络可以适用于各种类型的区块链网络,包括公有链、私有链和联盟链等。譬如,应用于公有链的区块链中继通信网络主要包括falcon、fastbitcoinrelaynetwork(fbrn)、fastinternetbitcoinrelayengine(fibre)等,而应用于联盟链的区块链中继通信网络主要包括bloxroute、blockchaintransmissionnetwork(btn)等。

尽管由区块链中继通信网络接管区块链节点之间的网络链路,具有上述优质特性,但也存在其弊端。例如,在该相关技术中,区块链节点之间的所有交互均通过区块链中继通信网络实现,这使得区块链中继通信网络负载过高,降低了区块链节点之间的交互效率。其中,由于区块数据相对于其他类型的传输数据(如交易、共识消息等)所包含的数据量更大,使得区块同步操作对区块链中继通信网络中的网络链路的占用相对更多,对交互效率的影响最为严重。

以图2所示的消息传输场景为例。假定区块链网络中的节点21与区块链中继通信网络中的中继11相连、节点22与中继12相连、节点23与中继13相连、节点24-25与中继14相连;其中,为了便于理解,此处省去了前文所述的网关(如网关101)。假设节点21需要将所保存的区块同步至节点22,其需要占用“节点21→中继11→中继12→节点22”这一路径所包括的网络链路,若在节点21将区块经由该路径传输至节点22的过程中,存在其他类型的消息需要经由该路径中的一部分进行传输,例如,节点23需要将共识消息经由“中继13→中继11→中继12”的路径发送至节点22,那么区块的传输路径与共识消息的传输路径之间存在“中继11→中继12→节点22”的重叠路径,在该重叠路径上,由于网络链路被区块传输所占用,使得共识消息的传输效率降低,进而降低了区块链节点之间的共识效率。应当理解的是,在区块链网络中,区块链节点之间的共识对时效性要求较高,共识效率的降低可能导致共识结果出现偏差,甚至影响区块链网络的正常运转。可见,区块同步操作对区块链中继通信网络中的网络链路的占用,严重影响了区块链节点之间的对时效性要求较高的消息(共识消息、交易等)传输。

为此,本申请提出了一种区块链系统,以消除区块同步过程对交互效率的影响。在该区块链系统中包含若干中继节点、若干区块链节点以及历史区块同步节点。

需要声明的是,区块链系统中包含的中继节点、区块链节点、历史区块同步设备分别属于哪一节点网络,可由本领域技术人员自行定义,本说明书对此不作限制。举例而言:

在一种情况下,可以仅将区块链系统中包含的若干中继节点组成的节点网络定义为区块链中继通信网络,而区块链节点和历史区块同步设备均不视为区块链中继通信网络中的节点,

在该情况下,本说明书中的区块链系统可以如图3a所示,包括:区块链中继通信网络31、各个区块链节点以及历史区块同步设备15;所述各个区块链节点分别与所述区块链中继通信网络31中对应的中继节点相连;所述中继节点与历史区块同步设备15相连(图中未示出);其中:

任一中继节点用于在接收到所相连的任一区块链节点发起的区块同步请求的情况下,向所述历史区块同步设备15发送区块获取请求;

所述历史区块同步设备15用于从所述区块链节点处获取区块数据;以及,所述历史区块同步设备15响应于所述区块获取请求,向所述任一中继节点返回相应的历史区块,以由所述任一中继节点转发至所述任一区块链节点。

在另一种情况下,可以将区块链系统中包含的若干中继节点以及历史区块同步设备15均定义为区块链中继通信网络中的节点,而将若干区块链节点组成的节点网络定义为区块链网络。在该情况下,本说明书中的区块链系统可以如图3b所示,包括:区块链中继通信网络31和区块链网络32;

所述区块链网络32中的各个区块链节点分别与所述区块链中继通信网络31中对应的中继节点相连(各个中继节点与各个区块链节点之间的对应关系,可参考图2所示);区块链中继通信网络31除了包括若干中继节点以外,还包括历史区块同步设备15,其中:

任一中继节点在接收到所相连的任一区块链节点发起的区块同步请求的情况下,向所述历史区块同步设备15发送区块获取请求;所述历史区块同步设备15从所述区块链网络32中的区块链节点处获取区块数据;以及,所述历史区块同步设备15响应于所述区块获取请求,向所述任一中继节点返回相应的历史区块,以由所述任一中继节点转发至所述任一区块链节点。

需要声明的是:为了便于理解,图3b略去了中继节点之间、中继节点与历史区块同步设备15之间、中继节点与区块链节点之间、历史区块同步设备15与区块链节点之间可能存在的连接关系所对应的连线。

当然,上述图3a和图3b所示的举例仅是示意性的,除了上述定义方式以外,还存在其他诸多定义方式。应当理解的是,无论如何定义区块链系统中所包含的节点网络,对设备之间的交互过程不存在实际的影响,也不影响本说明书达到的技术效果。

下面以图3b所示的节点网络定义方式为例,对本说明书中的区块链系统进行介绍。

为了方便理解本说明书的技术方案,结合图4,以中继11作为上述任一中继节点为例,对基于图3b所示的区块链系统进行区块同步的过程进行介绍。

如图4所示,节点21在需要进行区块同步时,可以向中继11发送区块同步请求;中继11在接收到区块同步请求后不再如相关技术中,将区块同步请求经由其他中继节点转发至其他区块链节点,而是直接将区块同步请求发送至历史区块同步设备15,以使历史区块同步设备15将从其他区块链节点处获取的区块返回至节点21。

换言之,本说明书通过在区块链中继通信网络31中加入历史区块同步设备15的方式,使得区块同步操作只需经由历史区块同步设备15即可完成,而无需再占用中继节点之间的网络链路。应当理解的是,由于区块同步的过程不再占用中继节点之间的网络链路,使得中继节点之间的网络链路仅用于对交易传输、共识消息等高时效性需求的区块链消息进行传输,有助于提高区块链节点之间的交易传输和共识的效率。

区别于上述的交易传输、共识消息等高时效性需求的区块链消息,本申请中的区块同步操作的时效性需求相对较低。上述的区块同步操作可以包括多种具体场景,例如,区块链节点向其他区块链节点请求一个或多个区块,以使得该区块链节点与其他区块链节点所保存区块链的最大区块高度一致,再例如,区块链网络32中的新增区块链节点向其他区块链节点请求全量区块。一些场景下虽然也涉及到对于区块的传输,比如具有记账权的区块链节点将自身生成的最新区块发送至其他区块链节点以完成共识,由于该过程本身属于共识过程,使得该过程的时效性要求相对较高,不应被认为属于上述的区块同步操作。而由于区块同步操作是针对区块链中已存在的区块进行同步,因此为了便于描述,本说明书中将区块同步操作所涉及的区块称为历史区块。

鉴于本说明书中通过历史区块同步设备15进行的区块同步操作对时效性要求不高,区块链中继通信网络31中若干中继节点之间的网络链路的服务质量,可以优于若干中继节点与历史区块同步设备15之间的网络链路的服务质量。例如,在附图4中,中继11与中继12之间的网络链路的服务质量,可以优于中继11与历史区块同步设备15之间的网络链路的服务质量。其中,网络链路的服务质量高可以体现为:带宽更大、稳定性更好等。应当理解的是,通过该方式,可以缩减额外建立历史区块同步设备15与中继节点之间的网络链路的成本。类似的,历史区块同步设备15与区块链网络32中的各个区块链节点之间的网络链路的服务质量也可以低于中继节点之间的网络链路的服务质量,以利用区块同步操作对时效性要求较低的特性,进一步降低建立额外网络链路的成本。

历史区块同步设备15可以在本地保存区块链数据,即构成区块链的区块。在收到中继节点转发的区块获取请求后,历史区块同步设备15从本地保存的区块中选取对应的历史区块并返回至中继节点。其中,历史区块同步设备15可以按照多种方式更新本地保存的区块,下面以两种可能的方式为例进行列举说明:

在一实施例中,历史区块同步设备15所保存区块的最大区块高度与区块链网络32中的区块链节点所保存区块的最大区块高度保持同步。换言之,当区块链网络32中的区块链节点所保存的区块增加时,历史区块同步设备15将该新增区块实时同步至本地。在实际操作中,历史区块同步设备15可以按照预设周期向区块链网络32中的各个区块链节点发送最大区块高度获取请求,以将各个区块链节点返回的最大区块高度与本地所保存区块的最大区块高度进行比较,并在确定返回的最大区块高度大于本地所保存区块的最大区块高度时,向相应的区块链节点发送区块获取请求,以根据返回的区块更新本地所保存的区块。应当理解的是,由于历史区块同步设备15所保存区块的最大区块高度与区块链网络32中的区块链节点所保存区块的最大区块高度保持同步,这使得历史区块同步设备15在接收到任一中继节点,如节点21发送的区块同步请求时,可以直接根据本地所保存的区块确定出需要返回至节点21的历史区块,而无需实时向区块链网络32中的区块链节点获取待同步区块,提升了区块同步的效率。具体的,历史区块同步设备15可以将区块同步请求中包含的节点21所保存区块的当前最大区块高度与本地所保存区块的最大区块高度进行比较,以将区块高度大于该当前最大区块高度的区块确定为历史区块,并返回至节点21。举例而言,假设节点21所保存区块的当前最大区块高度为8,而历史区块同步设备15所保存区块的最大区块高度为12,那么,可以将区块高度为9、10、11、12的区块确定为需同步至节点21的历史区块。

在另一实施例中,历史区块同步设备15可以在接收到任一区块链节点,如节点21发送的区块同步请求的情况下,对本地所保存的区块进行更新,并在更新后向节点21返回待同步区块。具体的,历史区块同步设备15在接收到节点21发送的区块同步请求的情况下,可以将区块链网络32中的区块链节点的最大区块高度与本地已保存区块的最大高度进行比较,以根据该比较结果对本地已保存的区块进行区块同步。其中,区块链网络32中的区块链节点的最大区块高度可以采用与上一实施例相类似的方式获取,即通过向区块链网络32中的各个区块链节点发送最大区块高度获取请求的方式获取;而根据比较结果对本地已保存的区块进行区块同步,则可以在将本地已保存区块的最大区块高度与各个区块链节点所保存区块的最大区块高度进行比较后,确定出尚未被同步至本地的区块,并进一步向相应的区块链节点发送针对该尚未被同步至本地的区块的获取请求,以根据相应区块链节点返回的区块对本地所保存的区块进行更新。应当理解的是,通过本实施例的方法,历史区块同步设备15只需在接收到任一中继节点发送的区块同步请求的情况下,对本地已保存区块进行更新,而无需如上一实施例,主动向各个区块链节点发送针对最大区块高度的获取请求,减少了与区块链网络32中的区块链节点的交互次数。

需要声明的是,在上述历史区块同步设备15更新本地所保存区块的过程中,用于与本地已保存区块的最大区块高度进行比较的最大区块高度为:区块链网络32中各个区块链节点根据各自所保存区块返回的若干最大区块高度中的最大值。举例而言,假设历史区块同步设备15当前所保存区块的最大区块高度为10,而节点22、节点23、节点24、节点25在接收到最大区块高度获取请求后返回的最大区块高度分别为:10、10、11、12。那么,历史区块同步设备15应当将本地所保存区块的最大区块高度10与节点25返回的最大区块高度12进行比较,以确定出区块高度分别为11和12的区块尚未被同步至本地,进而从区块链网络32的区块链节点中获取区块高度为11和12的区块。当然,区块高度为11和12的区块可以从同一区块链节点处获取,或者从不同区块链节点处获取。例如,区块高度为11和12的区块均从节点25处获取;或者,从节点24处获取区块高度为11的区块,从节点25处获取区块高度为12的区块,本说明书对此不作限制。

在本说明书中,历史区块同步设备15与各个区块链节点之间可以采用点对点技术实现区块数据的交互,以完成上述将区块链节点处的区块同步至历史区块同步设备15的过程。当然,该举例仅是示意性的,历史区块同步设备15与区块链节点之间具体采用何种交互技术,可由本领域技术人员根据实际情况确定,本说明书对此不作限制。

在本说明书中,主要针对两种需要进行区块同步的情况:

在一种情况下,区块链网络32中加入了新增节点。新增节点在未进行区块同步之前,未保存任何区块。因此,假定节点21为新增节点,那么历史区块同步设备15在接收到节点21发送的区块同步请求的情况下,向节点21返回的历史区块为全量区块。全量区块指的是区块链网络32中一条完整的区块链所包含的区块。

在另一种情况下,区块链网络32中并未加入新增节点。即发起区块访问请求的节点21为区块链网络32中的非新增节点(或称为原有节点)。在该情况下,节点21发送的区块同步请求中应当包含该非新增节点中已保存区块的当前最大区块高度,而历史区块同步设备15向中继11返回的历史区块为相对于该当前最大区块高度的增量区块。具体的,历史区块同步设备15可以将本地已保存区块的最大区块高度与区块同步请求中包含的当前最大区块高度进行比较,并将区块高度大于当前最大区块高度的区块确定为历史区块。需要声明的是,此处的本地已保存区块的最大区块高度指的是:历史区块同步设备15通过与区块链网络32中的区块链节点所保存区块的最大区块高度进行比较且对本地所保存区块进行更新后的最大区块高度。

在实际应用中,节点21可能同时参与了多个数据交互过程,例如,节点21除了向中继11发送区块同步请求以外,还会向中继11传输交易。可见,中继11接收到的请求可能不仅仅是区块同步请求。因此,中继11在接收到请求时,还可以对接收到的所有请求进行解析,以确定接收到的请求的类型,进而根据其类型进行相应的处理。具体的,可以将包含区块同步标识的请求确定为区块同步请求,而将不包含区块同步标识的请求传输至中继12或其他中继节点。通过该方式,能够有效避免数据传输错误的问题。

由上述介绍可知,本说明书所提出的区块链系统包含区块链中继通信网络和区块链网络,而区块链中继通信网络中除了包含相关技术所涉及的中继节点之外,还包括历史区块同步设备。其中,区块链网络中的各个区块链节点之间的区块同步操作均经由历史区块同步设备执行,而不再如相关技术通过区块链中继通信网络中的各个中继节点之间的网络链路执行。可见,本说明书通过在区块链中继通信网络中引入历史区块同步设备的方式,使得区块同步操作无需再占用中继节点之间的网络链路,提高了区块链节点之间的交易传输、共识等操作的效率。

进一步的,与中继节点之间的网络链路相比,历史区块同步设备与各个区块链节点之间的网络链路、历史区块同步设备与各个中继节点之间的网络链路的服务质量相对较低,从而在满足区块同步操作的时效性需求的同时,有助于降低与历史区块同步设备相关的网络链路的搭建成本。

与上述区块链系统相对应的,本说明书还提供了一种区块链中继通信网络。以图3b所示的区块链中继通信网络31为例,该区块链中继通信网络31包括:若干中继节点(如中继11~14等)以及历史区块同步设备15;区块链中继通信网络31中的各个中继节点11~14分别与区块链网络32中对应的区块链节点21~25等相连(譬如连接关系可参照图2);其中,任一中继节点,在接收到所相连的任一区块链节点发起的区块同步请求的情况下,向所述历史区块同步设备15发送区块获取请求;所述历史区块同步设备15响应于所述区块获取请求,向所述任一中继节点返回相应的历史区块,以由所述任一中继节点转发至所述任一区块链节点;所述历史区块由所述历史区块同步设备存储在本地。

在本实施例中,任一中继节点接收所相连区块链节点发送的区块同步请求,并通过历史区块同步设备15进行区块同步操作的过程与上一实施例相类似,例如,本实施例中的任一区块链节点可以为上一实施例中的节点21、本实施例中的任一中继节点可以为上一实施例中的中继11,具体执行过程可参照上一实施例的介绍,在此不再赘述。

与上述区块链系统、区块链中继通信网络相对应的,本说明书还提出了一种区块同步方法。该方法基于上述区块链系统或区块链中继通信网络实现,具体操作过程可参照上述实施例的介绍,在下述方法实施例中不再赘述。

图5为一示例性实施例示出的一种区块同步方法,该方法应用于区块链中继通信网络中的任一中继节点,所述区块链中继通信网络中的中继节点分别与区块链网络中对应的区块链节点相连(对应关系可参照图2所示);如图5所示,该方法可以包括以下步骤:

步骤502,响应于所相连的任一区块链节点发送的区块同步请求,向历史区块同步设备发送区块获取请求,以使所述历史区块同步设备将从所述区块链网络中的区块链节点处获取的历史区块并返回。

仍以图4为例对本实施例进行介绍,本实施例中的任一中继节点可以为中继11,那么,与该任一中继节点相连的任一区块链节点即可为节点21。

如上所述,节点21在需要进行区块同步时,可以向中继11发送区块同步请求;中继11在接收到区块同步请求后不再如相关技术中,将区块同步请求经由若干中继节点转发至其他区块链节点,以使其他区块链节点经由中继节点返回需要同步的历史区块;而是直接将区块同步请求发送至历史区块同步设备15,以使历史区块同步设备15将从区块链网络32中的区块链节点处获取的历史区块返回至节点21。

如上所述,由于本说明书中的区块同步操作对时效性要求并不是很高,因此,区块链中继通信网络31中若干中继节点之间的网络链路的服务质量,可以优于若干中继节点与历史区块同步设备15之间的网络链路的服务质量。

如上所述,历史区块同步设备15通常在对本地保存的区块进行更新的基础上,再向中继节点返回需同步的历史区块。其中,历史区块同步设备15更新本地区块的时机可以根据实际需求分情况确定。在一种情况下,历史区块同步设备15所保存区块的最大区块高度与区块链网络32中的区块链节点所保存区块的最大区块高度保持同步。在另一种情况下,历史区块同步设备15可以在接收到任一区块链节点,如节点21发送的区块同步请求的情况下,对本地所保存的区块进行更新,并在更新后向节点21返回待同步区块。

如上所述,在上述历史区块同步设备15更新本地所保存区块的过程中,用于与本地已保存区块的最大区块高度进行比较的最大区块高度为:区块链网络32中各个区块链节点根据各自所保存区块返回的若干最大区块高度中的最大值。

如上所述,在一种情况下,发起区块同步请求的节点21可以为区块链网络32中的新增节点,在该情况下,新增节点在未进行区块同步之前,未保存任何区块。因此,历史区块同步设备15在接收到节点21发送的区块同步请求的情况下,向节点21返回的历史区块为全量区块。在另一种情况下,发起区块访问请求的节点21为区块链网络32中的非新增节点,在该情况下,节点21发送的区块同步请求中应当包含该非新增节点中已保存区块的当前最大区块高度,而历史区块同步设备15向中继11返回的历史区块为相对于该当前最大区块高度的增量区块。

如上所述,中继11在接收到请求时,还可以对接收到的所有请求进行解析,并将包含区块同步标识的请求确定为区块同步请求。

步骤504,将接收到的历史区块转发至所述任一区块链节点,以使所述任一区块链节点基于接收到的历史区块对已保存区块进行区块同步。

在本实施例中,节点21在接收到中继11返回的历史区块之后,即可基于接收到的历史区块对本地已保存的区块进行更新。

由上述技术方案可知,在本说明书中,区块链网络中的任一区块链节点,均可通过向所相连的中继节点发送区块同步请求的方式,使得该中继节点从所属区块链中继通信网络中的历史区块同步设备处获取待同步的历史区块,避免了区块同步操作占用中继节点之间的网络链路的问题。换言之,在本说明书中,通过在区块链中继通信网络中加入历史区块同步设备的方式,使得区块链节点之间的交易传输、共识,与区块同步采用了不同的网络链路,避免了相关技术中由于区块同步操作占用过多传输资源,导致交易传输和共识的效率下降的问题。

进一步的,为了保证区块链网络中各个区块链节点之间的传输效率,区块链中继通信网络中的各个中继节点之间的网络链路通常具备较高的服务质量,需要耗费较高的成本。但在实际应用中,对传输效率要求较高的通常为交易传输和共识的操作,而本说明书所指的区块同步操作对时效性要求其实并不高,因此,本说明书在历史区块同步设备与各个区块链节点之间、与各个中继节点之间搭建的网络链路的服务质量可以低于上述各个中继节点之间的网络链路的服务质量,以在额外搭建网络链路的基础上,降低成本。

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

请参考图7,在软件实施方式中,该区块同步装置可以包括:

发送单元71,响应于所相连任一区块链节点发送的区块同步请求,向历史区块同步设备发送区块获取请求,以使所述历史区块同步设备将从所述区块链网络中的区块链节点处获取的历史区块并返回;

转发单元72,将接收到的历史区块转发至所述任一区块链节点,以使所述任一区块链节点基于接收到的历史区块对已保存区块进行区块同步。

可选的,所述区块链中继通信网络中的各个中继节点之间的网络链路的服务质量,优于所述各个中继节点与所述历史区块同步设备之间的网络链路的服务质量。

可选的,所述历史区块同步设备所保存区块的最大区块高度与所述区块链网络中的区块链节点所保存区块的最大区块高度保持同步;或者,

所述区块获取请求用于使所述历史区块同步设备将所述区块链网络中的区块链节点的最大区块高度与本地已保存区块的最大区块高度进行比较,以根据比较结果对本地已保存区块进行更新。

可选的,用于与所述本地已保存区块的最大区块高度进行比较的最大区块高度为:

所述区块链网络中各个区块链节点根据各自所保存区块返回的若干最大区块高度中的最大值。

可选的,在所述任一区块链节点为所述区块链网络中的新增节点的情况下,由所述历史区块同步设备返回且经由所述任一中继节点转发的历史区块为全量区块;

在所述任一区块链节点为所述区块链网络中的非新增节点的情况下,所述区块同步请求中包含所述非新增节点中已保存区块的当前最大区块高度,所述历史区块为相对于所述当前最大区块高度的增量区块。

可选的,还包括:

解析单元73,解析接收到的所有请求;

确定单元74,将包含区块同步标识的请求确定为所述区块同步请求。

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

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

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

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

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

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

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

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

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

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