CN114996350A - 一种区块链中的区块状态同步方法及第一节点 - Google Patents
一种区块链中的区块状态同步方法及第一节点 Download PDFInfo
- Publication number
- CN114996350A CN114996350A CN202210462513.9A CN202210462513A CN114996350A CN 114996350 A CN114996350 A CN 114996350A CN 202210462513 A CN202210462513 A CN 202210462513A CN 114996350 A CN114996350 A CN 114996350A
- Authority
- CN
- China
- Prior art keywords
- block
- node
- storage device
- state
- control device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Hardware Redundancy (AREA)
Abstract
一种区块链中的区块状态同步方法及第一节点,该方法由区块链中的第一节点执行,第一节点包括用于存储区块状态数据的第一存储设备和第二存储设备,区块链中还包括多个第二节点,每个第二节点包括用于存储区块状态数据的第三存储设备和第四存储设备,其中,第一存储设备与第三存储设备对应,第二存储设备与第四存储设备对应,方法包括:第一存储设备从第三存储设备获取待同步的第一区块的第一部分状态数据;第二存储设备从第四存储设备获取第一区块的第二部分状态数据。
Description
技术领域
本说明书实施例属于区块链技术领域,尤其涉及一种区块链中的区块状态同步方法及第一节点。
背景技术
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区块链具有去中心化、信息不可篡改、自治性等特性,区块链也受到人们越来越多的重视和应用。
发明内容
本发明的目的在于提供一种区块链中的区块状态同步方法及第一节点,以实现在状态分片架构下,区块状态同步的节点通过其存储设备直接点对点同步,降低带宽压力。
根据第一方面,提供了一种区块链中的区块状态同步方法,由区块链中的第一节点执行,所述第一节点包括用于存储区块状态数据的第一存储设备和第二存储设备,所述区块链中还包括多个第二节点,每个所述第二节点包括用于存储区块状态数据的第三存储设备和第四存储设备,其中,所述第一存储设备与所述第三存储设备对应,所述第二存储设备与所述第四存储设备对应,所述方法包括:
所述第一存储设备从所述第三存储设备获取待同步的第一区块的第一部分状态数据;
所述第二存储设备从所述第四存储设备获取所述第一区块的第二部分状态数据。
根据第二方面,提供了一种区块链中的第一节点,所述第一节点包括用于存储区块状态数据的第一存储设备和第二存储设备,所述区块链中还包括多个第二节点,每个所述第二节点包括用于存储区块状态数据的第三存储设备和第四存储设备,其中,所述第一存储设备与所述第三存储设备对应,所述第二存储设备与所述第四存储设备对应,包括:
所述第一存储设备,用于从所述第三存储设备获取待同步的第一区块的第一部分状态数据;
所述第二存储设备,用于从所述第四存储设备获取所述第一区块的第二部分状态数据。
根据第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令所述计算机执行第一方面所述的方法。
根据第四方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面所述的方法。
上述实施例中,区块链为状态分片架构下的区块链,区块链中的第一节点包括用于存储区块状态数据的第一存储设备和第二存储设备,区块链中还包括多个第二节点,每个第二节点包括用于存储区块状态数据的第三存储设备和第四存储设备,其中,第一存储设备与第三存储设备对应,第二存储设备与第四存储设备对应,在进行区块状态同步的过程中,第一存储设备从第三存储设备获取待同步的第一区块的第一部分状态数据;第二存储设备从第四存储设备获取第一区块的第二部分状态数据,以实现在状态分片架构下,区块状态同步的第一节点通过其存储设备直接点对点进行区块状态同步,降低了区块链中各区块链节点的带宽压力,并且提高来区块状态数据的同步效率。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本说明书根据一示例性实施例示出的一种区块链架构图;
图2是本说明书根据一实施例示出的一种实施框架示意图;
图3是本说明书一实施例中区块链中的区块状态同步方法的一种流程示意图;
图4是本说明书一实施例中区块链中的区块状态同步方法的一种流程示意图;
图5是本说明书一实施例中区块链中的第一节点的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
目前限制区块链技术大规模落地应用的一个很重要因素是性能,主要包括吞吐量。针对提升区块的吞吐量的问题,分片技术是一种有效的方案。分片概念源于数据库领域,本意是指数据库中数据的水平分区(将表的不同行分到不同的分区),每个分片都保存在一个单独的数据库服务器实例上,以分散负载。
分片技术根据不同的分片机制可以划分为三种:网络分片(network sharding),交易分片(transaction sharding),状态分片(state sharding)。网络分片是最基础的一种分片方式,就是将整个区块链网络划分成多个子网络,也就是多个分片。这样,区块链网络中的多个分片可以并行处理网络中不同的交易。交易分片是将交易按某种规则分配到不同分片,从而达到并行处理的目的。在所有的分片机制当中,状态分片是最具挑战的分片方式。状态分片的关键是将整个存储区分开,让不同的分片存储不同的部分,每个节点只负责存储自己的分片数据,而不是存储完整的区块链状态。状态分片的方案可降低区块链中的存储、通信和计算开销,从而提升区块链的性能。
区块链领域中的交易可以指在区块链中执行并记录在区块链中的任务单元。交易中通常包括发送字段(From)、接收字段(To)和数据字段(Data)。其中,在交易为转账交易的情况中,From字段表示发起该交易(即发起对另一个账户的转账任务)的账户地址,To字段表示接收该交易(即接收转账)的账户地址,Data字段中包括转账金额。在交易调用区块链中的智能合约的情况中,From字段表示发起该交易的账户地址,To字段表示交易所调用的合约的账户地址,Data字段中包括调用合约中的函数名、及对该函数的传入参数等数据,以用于在交易执行时从区块链中获取该函数的代码并执行该函数的代码。
图1为本说明书一实施例提供的区块链架构图。
如图1所示,假设区块链中包括节点A、节点B、节点C和节点D,并且区块链中包括三个分片(分片1、分片2和分片3)。每个节点中包括控制设备和各个分片的一个存储设备(也可称为分片节点)。以节点A为例,如图1所示,节点A中包括控制设备A、存储设备1A、存储设备2A和存储设备3A。其中,存储设备1A、存储设备2A和存储设备3A分别为分片1、分片2和分片3中的一个设备。其中区块链的每个节点例如与区块链的一个联盟方(或者成员方)对应,或者节点中的多个设备相互可信任。例如,第一机构、第二机构和第三机构组成一条区块链,每家机构提供四台服务器以构成区块链中的一个节点,这四台服务器分别用作区块链的节点中的控制设备和各个分片的存储设备。也就是说,区块链的节点中的多个设备构成一个可信域,节点中的各个设备相互之间是互信的,从而可以直接通信。例如,在节点A中,控制设备A、存储设备1A、存储设备2A和存储设备3A之间可以直接通信。
各个控制设备可以从用户终端接收交易,并对接收到的交易进行共识,以确定待执行的区块中的多个交易。在共识之后,各个控制设备按照各个交易涉及的账户或变量状态将该多个交易分别分配给不同分片的存储设备。其中,上述存储设备以及控制设备可以实现为任何具有计算、处理能力的装置、服务器或设备集群等。
可以理解,图1仅是示例性的示出三个分片和四个区块链的节点,本说明书实施例不限于此,实际上区块链中可以包括其他数目的分片和节点。需要说明的是,本说明书实施例不限应用于图1所示的区块链系统构架,而可以应用于任意区块链系统构架。例如,区块链中可以包括控制设备,也可以不包括控制设备。如果区块链中不包括控制设备,区块链中的任意一个或多个存储设备都可以替代控制设备执行控制设备进行的操作。
在相关技术中,区块链中的节点在进行区块状态同步时,该节点的控制设备需要从其他节点处获取需同步的区块存储的交易,并分发至其包括的各存储设备,各存储设备执行所获得的交易并更新其子状态树的子状态根(即状态数据)。该过程中,控制设备需要获取需同步的区块存储的所有交易,之后分发至各存储设备进行执行,更新各存储设备的子状态树的子状态根,区块状态同步效率慢,且区块链的节点带宽压力大。
鉴于此,本说明书实施例提供了一种区块链中的区块状态同步方法,图2示出根据本说明书披露的一个实施例的实施框架示意图。如图2所示,该方法可以由区块链中的任意一个节点执行(例如图2中的节点A),其中,该区块链的架构为状态分片架构,即该区块链为状态分片架构下的区块链,该节点需要进行区块状态同步。
具体的,如图2所示,节点A包括用于存储区块状态数据的存储设备1A、存储设备2A和存储设备3A,存储设备1A、存储设备2A和存储设备3A各自属于不同的分片,管理不同账户。其中,存储设备1A、存储设备2A和存储设备3A有不同账户的状态数据,例如存储设备1A存储有账户a、账户b和账户c的状态数据,存储设备2A存储有账户d和账户e的状态数据,存储设备3A存储有账户f的状态数据。
区块链还包括多个第二节点,如图2所示,多个第二包括节点B、节点C和节点D,每个第二节点包括用于存储区块状态数据的多个存储设备,例如如图2所示,节点B包括存储设备1B、存储设备2B和存储设备3B,节点C包括存储设备1C、存储设备2C和存储设备3C,节点D包括存储设备1D、存储设备2D和存储设备3D,其中,存储设备1A与存储设备1B、存储设备1C、存储设备1D对应,属于同一分片,存储有相同账户的状态数据,例如账户a、账户b和账户c的状态数据;存储设备2A与存储设备2B、存储设备2C、存储设备2D对应,属于同一分片,存储有相同账户的状态数据,例如账户d和账户e的状态数据;存储设备3A与存储设备3B、存储设备3C、存储设备3D对应,属于同一分片,存储有相同账户的状态数据,例如账户f的状态数据。
在区块链中,难免出现各节点(如图2所示节点A、节点B、节点C和节点D)执行交易的进度不同,即生成的当前的区块高度(即块高)不同的情况。在一种情况中,区块链中的各节点可以周期性或非周期性向其他节点广播其块高信息(即当前的最高块高),后续的,可以接收其他节点广播的该其他节点自身的块高信息。
一种实现中,区块链中的各节点还可以包括控制设备,如图2所示,节点A包括控制设备A,节点B包括控制设备B,节点C包括控制设备C,节点D包括控制设备D。区块链中各节点可以通过其控制设备广播其块高信息,并可以通过其控制设备接收其他节点广播的块高信息。
在区块链中的某一节点,例如节点A基于其接收的多个第二节点(如图2所示的节点B-D)的块高信息,确定多个第二节点中的第一预设数目的节点的块高比其自身块高大,且第一预设数目的节点中的最小块高比其自身(节点A)块高大第二预设数目时,则该节点A需要执行快速区块状态同步。
相应的,节点A执行快速区块状态同步可以包括,首先节点A可以基于自身的块高以及第一预设数目的节点的块高,确定待同步的第一区块,其中,第一区块的块高不大于第一预设数目的节点中的最小块高。接着,存储设备1A从存储设备1B(或者存储设备1C或者存储设备1D)获取第一区块的第一部分状态数据a;存储设备2A从存储设备2B(或者存储设备2C或者存储设备2D)获取第一区块的第二部分状态数据b,存储设备3A从存储设备3B(或者存储设备3C或者存储设备3D)获取第一区块的第三部分状态数据c。如此,可以实现在状态分片架构下,区块状态同步的节点A通过其存储设备直接点对点从其他节点对应的存储设备处,获取待同步的第一区块的部分状态数据,实现区块状态的快速同步,该过程降低了区块链中各节点的带宽压力,并且提高区块状态同步的效率。
一种实现中,如图2所示,节点A可以从不同第二节点的相应存储设备处获取第一区块的部分状态数据,如图2所示,存储设备1A从存储设备1B获取第一区块的第一部分状态数据,存储设备2A从存储设备2C获取第一区块的第二部分状态数据,存储设备3A从存储设备3D获取第一区块的第三部分状态数据。如此,需要区块状态同步的节点A可以从多个第二节点同时拉取同一个块高下不同分片的数据,即可以在从不同第二节点的存储设备处同步同一个块高下(第一区块)的区块状态数据,更好的加速同步效率。
下面对本说明书提供的区块链中的区块状态同步方法进行详细描述。
图3示出本说明书一实施例中区块链中的区块状态同步方法的流程图,其中,所述方法由区块链中的第一节点(例如图2中所示的节点A)执行,第一节点包括用于存储区块状态数据的第一存储设备(例如为图2中所示的存储设备1A)和第二存储设备(例如为图2中所示的存储设备2A),区块链中还包括多个第二节点(例如包括图2中所示的节点B、节点C和节点D),每个第二节点包括用于存储区块状态数据的第三存储设备(例如包括图2中所示的存储设备1B、存储设备1C和存储设备1D)和第四存储设备(例如包括图2中所示的存储设备2B、存储设备2C和存储设备2D),其中,第一存储设备与第三存储设备对应,第二存储设备与第四存储设备对应,所述方法包括:
步骤S310,第一存储设备从第三存储设备获取待同步的第一区块的第一部分状态数据。
步骤S320,第二存储设备从第四存储设备获取第一区块的第二部分状态数据。
可以理解的,该区块链为基于状态分片架构的区块链。该第一节点(为了描述清楚,后续以图2中的节点A代替)可以为该区块链中的任意一个节点。其中,第一存储设备(为了描述清楚,后续以图2中的存储设备1A代替)与每个第二节点的第三存储设备(为了描述清楚,后续以图2中的存储设备1B、存储设备1C和存储设备1D代替)对应(即存在对应关系),即存储设备1A与存储设备1B、存储设备1C和存储设备1D属于同一个分片,即存储有相同账户的状态数据,例如均存储有前述的账户a~c的状态数据。第二存储设备(为了描述清楚,后续以图2中的存储设备2A代替)与每个第二节点的第四存储设备(为了描述清楚,后续以图2中的存储设备2B、存储设备2C和存储设备2D代替)对应,即存储设备2A与存储设备2B、存储设备2C和存储设备2D属于同一个分片,即存储有相同账户的状态数据,例如均存储有前述的账户d和账户e的状态数据。
后续的,在出现区块链中存在节点之间执行交易的进度不同,即生成的当前的区块高度(即块高)不同的情况时,例如在节点A的当前的块高落后于多个第二节点(即节点B、节点C和节点D)中指定数量个节点(即后续所述的第一预设数目的第五节点)当前的块高时,鉴于前述的存储设备之间所存在的对应关系,存储设备1A可以从多个第二节点中指定数量个节点中的任一个节点相应的存储设备(存储设备1B、存储设备1C或者存储设备1D)处,同步(即获取)待同步的第一区块的第一部分状态数据,存储设备2A可以从多个第二节点中指定数量个节点中的任一个节点相应的存储设备(存储设备2B、存储设备2C或者存储设备2D)处,同步第一区块的第二部分状态数据。
其中,节点A落后于多个第二节点中指定数量个节点的区块,至少包括该第一区块。举例而言,节点A的块高为M(即最高区块为区块M),多个第二节点中指定数量个节点中的第i节点的块高为Ni(即第i节点的最高区块为区块Ni),i的取值范围为[1,q]中的整数,q为指定数量(即第一预设数目),假设Nt为多个第二节点中指定数量个节点的最小块高,相应的,该第一区块可以包括区块M+1-区块Nt的全部区块,也可以包括区块M+1-区块Nt中的部分区块。可以理解的,第一区块的块高不大于多个第二节点中指定数量个节点中的最小块高,也就是第一区块的块高不大于第一预设数目的第五节点中的最小块高。
在一个实施例中,节点A可以从同一第二节点的不同存储设备处同步第一区块的状态数据,例如向节点A的各存储设备提供第一区块的部分状态数据的各存储设备属于同一节点(例如均数据节点B,或者均属于节点C或者均属于节点D)。在又一个实施例中,为了更好的提高区块同步效率,节点A可以从不同节点处获取不同存储设备相应的部分状态数据,例如向节点A的各存储设备提供第一区块的部分状态数据的各存储设备分别属于不同的节点。具体的,所述的多个第二节点中可以至少包括第三节点(例如为图2所示的节点B)和第四节点(例如为图2所示的节点C);
在步骤S310具体设置为,第一存储设备(即图2中所示的存储设备1A)从第三节点的第三存储设备(即存储设备1B)获取待同步的第一区块的第一部分状态数据;
在步骤S320具体设置为,第二存储设备(即图2中所示的存储设备2A)从第四节点的第四存储设备(即存储设备2C)获取第一区块的第二部分状态数据。
在该过程中,需要区块状态同步的节点A可以从多个节点(即多个第二节点)同时拉取同一个块高下不同分片的数据,即可以在从不同节点的存储设备处同步同一个块高下(第一区块)的区块状态数据,可以更好的提高同步效率,加快同步速度。
可以理解的,为了保证区块链的正常运行,区块链中各节点可以周期性或非周期性的广播其块高信息(即区块链节点自身当前的最高区块高度),这样,区块链中各节点均可以知道其他节点的交易执行进度,并确定自身的交易执行进度是否落后于其他节点,即确定自身块高是否落后于其他节点的块高,在确定自身块高落后于其他节点的块高的情况下,则需要追平块高。在一种实现中,区块链中各节点还可以包括控制设备,各节点的块高信息通过其控制设备广播。
具体的,如图4所示,在步骤S401,控制设备A周期性或非周期性的广播节点A的块高信息,并且各第二节点(节点B、节点C和节点D)的控制设备周期性或非周期性的广播该节点的块高信息。该块高信息中包括所对应节点的当前的最高块高。
接着,在步骤S402,控制设备A从多个第二节点的控制设备(如图2所示的控制设备B、控制设备C和控制设备D)接收块高信息。具体的,控制设备A可以在每接收到的一个第二节点的块高信息时,则将该所接收的块高信息与节点A自身的块高信息进行比较,控制设备A在确定多个第二节点中的第一预设数目的节点(也可称为第五节点)的块高比节点A的块高大的情况下,从该第一预设数目的节点的块高中,确定出最小块高,并继续判断该第一预设数目的节点的最小块高是否比节点A的块高大第二预设数目,若判断结果为是,即该第一预设数目的节点的最小块高比节点A的块高大第二预设数目,则执行步骤S403。其中,该第一预设数目可以根据实际需求以及区块链中节点的实际数量进行设置,该第二预设数目可以根据实际需求进行设置,例如可以设置为1000,本说明书实施例并不对其具体数值进行限定。
在另一种实现中,若该第一预设数目的节点的最小块高不比节点A的块高大第二预设数目,则控制设备A可以采取逐步回放交易的方式,同步节点A的状态数据。具体的,控制设备A例如从其他节点处获取目标交易,并将所获取的目标交易分配给其各存储设备,各存储设备执行相应的目标交易并更新其状态数据,其中,该目标交易为,节点A的最新区块的下一区块(例如前述的区块M之后的区块,区块M+1)至所要同步至的目标区块(例如前述的区块Nt)内存储的交易。
控制设备A在确定多个第二节点中的第一预设数目的节点的块高比节点A的块高大、且第一预设数目的节点中的最小块高比节点A的块高大第二预设数目时,在步骤S403,广播区块同步请求,区块同步请求中包括对第一区块的状态同步请求。一种情况,控制设备A可以首先基于节点A的块高和该第一预设数目的节点的最小块高,确定第一区块,其中,第一区块的块高不大于第一预设数目的节点中的最小块高。举例而言,假设节点A的块高为M,该第一预设数目的节点的最小块高为Nt,控制设备A可以确定第一区块包括区块M+1-区块Nt的全部区块,即第一区块的块高等于该第一预设数目的节点的最小块高,或者,可以包括区块M+1-区块Nt的部分区块,即第一区块的块高小于该第一预设数目的节点的最小块高,例如,包括区块M+1-区块X,区块X为区块M+1-区块Nt之间的某一个区块。
一种情况中,该区块同步请求可以携带该节点A的块高和第一区块的块高。例如第一区块包括区块M+1-区块Nt的全部区块的情况下,该区块同步请求可以携带节点A的块高M和区块Nt的块高Nt。其中,该区块同步请求可以表示为<request_fast_sync,M,Nt>,表示同步区块M+1-区块Nt的全部区块的状态数据。
接着,控制设备A广播区块同步请求之后,可以等待接收第二节点的反馈。具体的,任意一个节点(例如图2中的节点B)的控制设备在接收到控制设备A广播的区块同步请求之后,若确定其块高(即该节点B的块高)不小于第一区块的块高,则可以针对该区块同步请求向节点A进行反馈,即向节点A发送区块同步回复,其中,区块同步回复可以至少包括节点B自身的存储设备的连接信息,以供节点A同步第一区块的状态数据。
在一种情况中,为了保证节点A的安全以及正常运行,该区块同步回复还可以包括第一区块的区块头信息,例如第一区块包括区块M+1-区块Nt的全部区块的情况下,该区块头信息至少包括区块Nt的状态根(也可以称为块哈希)。另一种情况,该区块同步回复还可以包括节点B的各存储设备存储的第一区块的相应部分状态数据的子状态根。
一种情况中,该区块同步回复可以表示为<response_fast_sync,Nt,Nt_block_header,[shard_address,sub_state_root]>,其中,Nt_block_header表示区块Nt的区块头信息,[shard_address,sub_state_root]表示节点B的各存储设备的连接信息和第一区块的相应部分状态数据的子状态根。其中,该第一区块的区块头信息和节点B的各存储设备存储的第一区块的相应部分状态数据的子状态根,可以用于对节点A的区块状态同步结果的验证。为了布局清楚,具体的验证过程将在后文进行介绍。
后续的,在一个实施例中,节点A可以从不同第二节点的相应存储设备处同步状态数据,如图4所示,在步骤S404,控制设备A从控制设备B(即第二控制设备)接收节点B中的存储设备1B(第三存储设备)的连接信息,其中包括存储设备1B的地址信息,例如IP地址。接着,在步骤S405,控制设备A指示存储设备1A根据连接信息从节点B的存储设备1B同步第一部分状态数据。具体的,控制设备A可以向存储设备1A发送第一同步指令,该第一同步指令包括节点B的存储设备1B的连接信息,后续的,存储设备1A获得该第一同步指令之后,在步骤S310具备被配置为(即在步骤S406),存储设备1A根据连接信息从节点B的存储设备1B同步第一部分状态数据。
同理的,在步骤S407,控制设备A还可以从控制设备C(即第三控制设备)接收节点C中的存储设备2C(即第四存储设备)的连接信息,其中,包括存储设备2C的地址信息,如IP地址;之后,在步骤S408,控制设备A指示存储设备2A根据节点C中的存储设备2C的连接信息,从节点C中的存储设备2C同步第二部分状态数据。具体的,控制设备A可以向存储设备2A发送第二同步指令,该第二同步指令包括节点C中的存储设备2C的连接信息,后续的,存储设备2A获得该第二同步指令之后,在步骤S320具备被配置为(即在步骤S409),存储设备2A根据节点C中的存储设备2C的连接信息,从节点C中的存储设备2C同步第二部分状态数据。
可以理解的是,控制设备A还可以从控制设备D接收节点D中的存储设备3D的连接信息,进而,控制设备A指示存储设备3A根据节点D中的存储设备3D的连接信息,从节点D中的存储设备3D同步第一区块的第三部分状态数据,以实现对节点A的区块状态的同步。
在一个实施例中,在步骤S404具体配置为,控制设备A从控制设备B接收节点B中的多个存储设备的连接信息,其中包括节点B中的存储设备1B的连接信息,还包括存储设备2B和存储设备3B的连接信息。后续的,控制设备A从节点B的多个存储设备中选取一个或多个存储设备,以用于同步第一区块的当前未同步的部分状态数据。其中,所选取的一个或多个存储设备至少包括节点B的存储设备1B(即第三存储设备),以使得存储设备1A可以至少从节点B的存储设备1B同步第一部分状态数据。
可以理解的,一个实施例中,控制设备A在每接收到一个第二节点发送的其存储设备的连接信息之后,则从该第二节点的存储设备中选取一个或多个存储设备,以用于同步第一区块的当前未同步的部分状态数据。在一种实现中,为了提高区块状态同步效率,控制设备A可以先基于节点A的存储设备的数量(称为第一数量)和区块链中的多个第二节点的数量(第二数量),确定出目标数量,进而从每一个第二节点的存储设备中选取目标数量个(一个或多个)存储设备,以用于同步第一区块的当前未同步的部分状态数据。
其中,一种情况,为了降低数据传输带宽的压力,均衡区块状态同步过程中各区块链节点的带宽压力,该目标数量可以等于第一数量与第二数量的比值。另一种情况,考虑到可能出现区块链中部分第二节点未接收到节点A广播的区块同步请求的情况,和/或节点A可能未接收到部分第二节点的连接信息的情况,控制设备A可以预先设置节点容错概率,该目标数量可以等于A/(B*c%),其中,A表示第一数量,B表示第二数量,c%表示节点容错概率。
如图2所示,第一数量为3,第二数量为3,假设节点容错概率为0,则认为区块链中所有节点B、节点C和节点D均正常运行,则控制设备A在接收到节点B的存储设备的连接信息之后,从节点B的三个存储设备中选取一个存储设备,如选取存储设备1B,以用于同步第一区块的当前未同步的部分状态数据;控制设备A在接收到节点C的存储设备的连接信息之后,从节点C的三个存储设备中选取一个存储设备,如选取存储设备2C,以用于同步第一区块的当前未同步的部分状态数据;控制设备A在接收到节点D的存储设备的连接信息之后,从节点D的三个存储设备中选取一个存储设备,如选取存储设备3D,以用于同步第一区块的当前未同步的部分状态数据。
又举例而言,假设同步区块状态的节点(即第一节点)的存储设备的数量为50,区块链中多个第二节点的数量为20,节点容错概率为50%,则同步区块状态的节点容许有50%的其他节点出现问题,则同步区块状态的节点的控制设备可以从10(20*50%)个第二节点的存储设备处,同步50个同步区块状态的节点的存储设备的部分状态数据,其中,为了提高区块状态同步效率且降低数据传输带宽的压力,具体的可以基于最早接收到的10个第二节点(为了描述清楚,称为第二目标节点)的存储设备的连接信息,从各第二目标节点的存储设备中选取5个存储设备,以用于同步待同步区块的当前未同步的部分状态数据。
在一个实施例中,所述的第一部分状态数据为,第一区块的状态数据中多个第一账户的状态数据与第一区块的前一个区块的状态数据中多个第一账户的状态数据的差异数据。也就是说,例如第一节点A的块高为M,即第一节点A的当前的最新区块为区块M,其需要同步的第一区块的状态数据包括区块M+1到区块Nt的状态数据,即区块Nt的状态数据与区块M的状态数据之间的差异数据。相应的,第一部分状态数据为:区块Nt的状态数据中多个第一账户的状态数据,与区块M的状态数据中多个第一账户的状态数据之间的差异数据。第一部分状态数据,具体可以包括:区块M+1与区块M之间的状态数据中多个第一账户的状态数据的差异数据、区块M+2与区块M+1之间的状态数据中多个第一账户的状态数据的差异数据,以此类推,区块Nt与区块Nt-1之间的状态数据中多个第一账户的状态数据的差异数据。
同理的,所述的第二部分状态数据为,第一区块的状态数据中多个第二账户的状态数据与第一区块的前一个区块的状态数据中多个第二账户的状态数据的差异数据。第二部分状态数据为,具体可以包括:区块M+1与区块M之间的状态数据中多个第二账户的状态数据的差异数据、区块M+2与区块M+1之间的状态数据中多个第二账户的状态数据的差异数据,以此类推,区块Nt与区块Nt-1之间的状态数据中多个第二账户的状态数据的差异数据。其中,第一账户与第二账户不同。该多个第一账户例如可以为前述的账户a~c,该多个第二账户例如可以为前述的账户d和账户e。
在上述实施例中,仅同步第一区块的状态数据与第一区块的前一个区块的状态数据的差异数据,在保证区块状态同步的同时,有效控制了该过程中的数据传输量,在一定程度上可以更好的提高区块同步的效率。
为了保证第一节点的安全及正常运行,节点A的各个存储设备在同步完成第一区块的部分状态数据之后,还需要对同步结果进行验证。相应的,在一个实施例中,所述方法还可以包括:在步骤01,控制设备A从控制设备B接收第一区块的区块头信息和第一部分状态数据的第一子状态根。
在步骤02,控制设备A从控制设备C接收第一区块的区块头信息和第二部分状态数据的第二子状态根。
在步骤03,控制设备A基于第一区块的区块头信息、第一子状态根和第二子状态根对第一部分状态数据和第二部分状态数据进行验证。
其中,该区块头信息包括第一区块的状态根,例如第一区块包括区块M+1-区块Nt的全部区块的情况下,该区块头信息包括区块Nt的状态根。可以理解的,从控制设备B接收第一区块的区块头信息中的状态根,与从控制设备C接收第一区块的区块头信息中的状态根相同。
在一种实现中,控制设备A可以同时从控制设备B接收第一区块的区块头信息和第一部分状态数据的第一子状态根,以及节点B的各存储设备的连接信息,例如均包含于控制设备B针对区块同步请求的区块同步回复中。同理的,控制设备A也可以同时从控制设备C接收第一区块的区块头信息和第二部分状态数据的第一子状态根,以及节点C的各存储设备的连接信息。
可以理解的,上述步骤01可以在步骤02之前执行,也可以在步骤02之后执行,也可以与步骤02并行执行。
控制设备A从控制设备B接收第一区块的区块头信息和第一部分状态数据的第一子状态根,并且从控制设备C接收第一区块的区块头信息和第二部分状态数据的第二子状态根之后,可以基于第一区块的区块头信息、第一子状态根和第二子状态根对第一部分状态数据和第二部分状态数据进行验证。
在一个实施例中,节点A的各存储设备同步完成其相应的部分状态数据之后,需要通知控制设备A其同步完成,并且将其同步完后所生成包括相应部分状态数据的子状态树的子状态根,发送至控制设备A,控制设备A基于所接收的各子状态根进行相应的验证。
具体的,在步骤03具体设置为:验证包括第一部分状态数据的子状态树的第三子状态根是否等于第一子状态根;验证包括第二部分状态数据的子状态树的第四子状态根是否等第二子状态根;基于区块头信息中的状态根验证第三子状态根和第四子状态根。
可以理解的是,节点A的各存储设备,即存储设备1A、存储设备2A和存储设备3A同步完成第一区块的相应部分状态数据之后,会生成包括相应部分状态数据的子状态树的子状态根,其中,存储设备1A所生成的子状态根称为第三子状态根,存储设备2A所生成的子状态根称为第四子状态根。存储设备3A从节点D的存储设备3D处同步第一区块的第三部分状态数据,相应的,控制设备A还从控制设备D接收第一区块的区块头信息和第三部分状态数据的子状态根(称为第五子状态根),且存储设备3A所生成的子状态根称为第六子状态根。其中,从控制设备D接收的第一区块的区块头信息中的状态根与从控制设备B和控制设备C接收的第一区块的区块头信息的状态根相同。
之后,控制设备A可以直接比较第三子状态根与第一子状态根是否相等,比较第四子状态根与第二子状态根是否相等,并且第六子状态根与第五子状态根是否相等。
一种情况中,若第三子状态根与第一子状态根相等,则可以认为第一部分状态数据无误且存储设备1A同步过程无异常,若第四子状态根与第二子状态根相等,则可以认为第二部分状态数据无误且存储设备2A同步过程无异常,若第六子状态根与第五子状态根相等,则可以认为第三部分状态数据无误且存储设备3A同步过程无异常。
另一种情况中,为了更好的保证区块链中节点的安全,控制设备A在确定第三子状态根与第一子状态根相等,且第四子状态根与第二子状态根相等,第六子状态根与第五子状态根相等之后,控制设备A还需要基于所接收的第一区块的区块头信息中的状态根验证第三子状态根、第四子状态根以及第六子状态根。具体的,控制设备A在获得节点A的各存储设备的包括相应部分状态数据的子状态树的子状态根(包括第三子状态根、第四子状态根和六子状态根)之后,对所获得的各子状态根进行汇总计算,确定汇总状态根。将该汇总状态根与第一区块的区块头信息中的状态根进行比较,若该汇总状态根与第一区块的区块头信息中的状态根相等,则确定第一部分状态数据无误且存储设备1A同步过程无异常,第二部分状态数据无误且存储设备2A同步过程无异常,第三部分状态数据无误且存储设备3A同步过程无异常。
在另一种实现中,控制设备A还可以直接基于区块头信息中的状态根验证第三子状态根、第四子状态根和第六子状态根,控制设备A可以在获得节点A的各存储设备的包括相应部分状态数据的子状态树的子状态根之后,直接对所获得的各子状态根进行汇总计算,确定汇总状态根,在确定该汇总状态根与第一区块的区块头信息中的状态根相等之后,直接确定第一节点A的各存储设备同步的第一区块的部分状态数据均无误,且各存储设备同步过程无异常。
可以理解,图2所示实施例仅是示例性的示出节点A包括三个存储设备和从三个第二节点处同步第一区块的部分状态数据,本说明书实施例不限于此。实际上节点A还可以包括除存储设备1A、存储设备2A和存储设备3A外的其他存储设备,且区块链还可以包括除节点A、节点B、节点C和节点D外的其他节点,相应的,节点A还可以除从节点B、节点C和节点D同步第一区块的部分状态数据外,还可以从区块链包括的其他节点处同步第一区块的状态数据。
相应于上述方法实施例,本说明书实施例,还提供了一种区块链中的第一节点500,所述第一节点500包括用于存储区块状态数据的第一存储设备510和第二存储设备520,所述区块链中还包括多个第二节点,每个所述第二节点包括用于存储区块状态数据的第三存储设备和第四存储设备,其中,所述第一存储设备与所述第三存储设备对应,所述第二存储设备与所述第四存储设备对应,其示意性框图如图5所示,包括:
所述第一存储设备510,用于从所述第三存储设备获取待同步的第一区块的第一部分状态数据;
所述第二存储设备520,用于从所述第四存储设备获取所述第一区块的第二部分状态数据。
在一种可选实施方式中,所述多个第二节点中包括第三节点和第四节点;
所述第一存储设备510,具体用于从所述第三节点的第三存储设备获取待同步的第一区块的第一部分状态数据;
所述第二存储设备520,具体用于从所述第四节点的第四存储设备获取所述第一区块的第二部分状态数据。
在一种可选实施方式中,如图5所示,所述第一节点还包括第一控制设备530,所述第一控制设备,用于从所述多个节点的控制设备接收块高信息;在确定所述多个第二节点中的第一预设数目的第五节点的块高比所述第一节点的块高大、且所述第一预设数目的第五节点中的最小块高比所述第一节点的块高大第二预设数目时,向所述多个第二节点广播区块同步请求,所述区块同步请求中包括对所述第一区块的状态同步请求。
在一种可选实施方式中,所述第一区块的块高不大于所述第一预设数目的第五节点中的最小块高。
在一种可选实施方式中,所述第一部分状态数据为第一区块的状态数据中多个第一账户的状态数据与所述第一区块的前一个区块的状态数据中所述多个第一账户的状态数据的差异数据。
在一种可选实施方式中,所述第一节点还包括第一控制设备530,所述第三节点还包括第二控制设备;所述第一控制设备530,用于从所述第二控制设备接收所述第三节点中的第三存储设备的连接信息;指示所述第一存储设备根据所述连接信息从所述第三节点的第三存储设备同步所述第一部分状态数据。
在一种可选实施方式中,所述第一控制设备530,具体用于从所述第二控制设备接收所述第三节点中的多个存储设备的连接信息,其中包括所述第三节点中的第三存储设备的连接信息;
所述第一控制设备530,还用于从所述第三节点的多个存储设备中选取一个或多个存储设备,以用于同步所述第一区块的当前未同步的部分状态数据。
在一种可选实施方式中,所述第四节点还包括第三控制设备,所述第一控制设备530,还用于从所述第二控制设备接收所述第一区块的区块头信息和所述第一部分状态数据的第一子状态根;从所述第三控制设备接收所述第一区块的区块头信息和所述第二部分状态数据的第二子状态根;基于所述第一区块的区块头信息、所述第一子状态根和所述第二子状态根对所述第一部分状态数据和所述第二部分状态数据进行验证。
在一种可选实施方式中,所述第一控制设备530,具体用于验证包括所述第一部分状态数据的子状态树的第三子状态根是否等于所述第一子状态根;
验证包括所述第二部分状态数据的子状态树的第四子状态根是否等所述第二子状态根;
基于所述区块头信息中的状态根验证所述第三子状态根和所述第四子状态根。
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当上述计算机程序在计算机中执行时,令计算机执行所述区块链中的区块状态同步方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,其特征在于,上述存储器中存储有可执行代码,上述处理器执行上述可执行代码时,实现所述区块链中的区块状态同步方法。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为服务器系统。当然,本申请不排除随着未来计算机技术的发展,实现上述实施例功能的计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。
Claims (20)
1.一种区块链中的区块状态同步方法,由区块链中的第一节点执行,所述第一节点包括用于存储区块状态数据的第一存储设备和第二存储设备,所述区块链中还包括多个第二节点,每个所述第二节点包括用于存储区块状态数据的第三存储设备和第四存储设备,其中,所述第一存储设备与所述第三存储设备对应,所述第二存储设备与所述第四存储设备对应,所述方法包括:
所述第一存储设备从所述第三存储设备获取待同步的第一区块的第一部分状态数据;
所述第二存储设备从所述第四存储设备获取所述第一区块的第二部分状态数据。
2.如权利要求1所述的方法,其中,所述多个第二节点中包括第三节点和第四节点;
所述第一存储设备从所述第三存储设备获取待同步的第一区块的第一部分状态数据包括:所述第一存储设备从所述第三节点的第三存储设备获取待同步的第一区块的第一部分状态数据;
所述第二存储设备从所述第四存储设备获取所述第一区块的第二部分状态数据包括:所述第二存储设备从所述第四节点的第四存储设备获取所述第一区块的第二部分状态数据。
3.如权利要求1或2所述的方法,所述第一节点还包括第一控制设备,所述方法还包括:
所述第一控制设备从所述多个第二节点的控制设备接收块高信息;
所述第一控制设备在确定所述多个第二节点中的第一预设数目的第五节点的块高比所述第一节点的块高大、且所述第一预设数目的第五节点中的最小块高比所述第一节点的块高大第二预设数目时,向所述多个第二节点广播区块同步请求,所述区块同步请求中包括对所述第一区块的状态同步请求。
4.如权利要求3所述的方法,所述第一区块的块高不大于所述第一预设数目的第五节点中的最小块高。
5.如权利要求1或2所述的方法,所述第一部分状态数据为第一区块的状态数据中多个第一账户的状态数据与所述第一区块的前一个区块的状态数据中所述多个第一账户的状态数据的差异数据。
6.根据权利要求1或2所述的方法,所述第一节点包括第一控制设备,所述第三节点包括第二控制设备;所述方法还包括:
所述第一控制设备从所述第二控制设备接收所述第三节点中的第三存储设备的连接信息;
所述第一控制设备指示所述第一存储设备根据所述连接信息从所述第三节点的第三存储设备同步所述第一部分状态数据。
7.根据权利要求6所述的方法,所述第一控制设备从所述第二控制设备接收所述第三节点中的第三存储设备的连接信息包括:所述第一控制设备从所述第二控制设备接收所述第三节点中的多个存储设备的连接信息,其中包括所述第三节点中的第三存储设备的连接信息;
所述方法还包括:
所述第一控制设备从所述第三节点的多个存储设备中选取一个或多个存储设备,以用于同步所述第一区块的当前未同步的部分状态数据。
8.如权利要求6所述的方法,所述第四节点包括第三控制设备,所述方法还包括:
所述第一控制设备从所述第二控制设备接收所述第一区块的区块头信息和所述第一部分状态数据的第一子状态根;
所述第一控制设备从所述第三控制设备接收所述第一区块的区块头信息和所述第二部分状态数据的第二子状态根;
所述第一控制设备基于所述第一区块的区块头信息、所述第一子状态根和所述第二子状态根对所述第一部分状态数据和所述第二部分状态数据进行验证。
9.如权利要求8所述的方法,所述基于所述第一区块的区块头信息、所述第一子状态根和所述第二子状态根对所述第一部分状态数据和所述第二部分状态数据进行验证包括:
验证包括所述第一部分状态数据的子状态树的第三子状态根是否等于所述第一子状态根;
验证包括所述第二部分状态数据的子状态树的第四子状态根是否等所述第二子状态根;
基于所述区块头信息中的状态根验证所述第三子状态根和所述第四子状态根。
10.一种区块链中的第一节点,所述第一节点包括用于存储区块状态数据的第一存储设备和第二存储设备,所述区块链中还包括多个第二节点,每个所述第二节点包括用于存储区块状态数据的第三存储设备和第四存储设备,其中,所述第一存储设备与所述第三存储设备对应,所述第二存储设备与所述第四存储设备对应,包括:
所述第一存储设备,用于从所述第三存储设备获取待同步的第一区块的第一部分状态数据;
所述第二存储设备,用于从所述第四存储设备获取所述第一区块的第二部分状态数据。
11.如权利要求10所述的第一节点,其中,所述多个第二节点中包括第三节点和第四节点;
所述第一存储设备,具体用于从所述第三节点的第三存储设备获取待同步的第一区块的第一部分状态数据;
所述第二存储设备,具体用于从所述第四节点的第四存储设备获取所述第一区块的第二部分状态数据。
12.如权利要求10或11所述的第一节点,所述第一节点还包括第一控制设备,所述第一控制设备,用于从所述多个节点的控制设备接收块高信息;在确定所述多个第二节点中的第一预设数目的第五节点的块高比所述第一节点的块高大、且所述第一预设数目的第五节点中的最小块高比所述第一节点的块高大第二预设数目时,向所述多个第二节点广播区块同步请求,所述区块同步请求中包括对所述第一区块的状态同步请求。
13.如权利要求12所述的第一节点,所述第一区块的块高不大于所述第一预设数目的第五节点中的最小块高。
14.如权利要求10或11所述的第一节点,所述第一部分状态数据为第一区块的状态数据中多个第一账户的状态数据与所述第一区块的前一个区块的状态数据中所述多个第一账户的状态数据的差异数据。
15.根据权利要求10或11所述的第一节点,所述第一节点还包括第一控制设备,所述第三节点还包括第二控制设备;所述第一控制设备,用于从所述第二控制设备接收所述第三节点中的第三存储设备的连接信息;指示所述第一存储设备根据所述连接信息从所述第三节点的第三存储设备同步所述第一部分状态数据。
16.根据权利要求15所述的第一节点,所述第一控制设备,具体用于从所述第二控制设备接收所述第三节点中的多个存储设备的连接信息,其中包括所述第三节点中的第三存储设备的连接信息;
所述第一控制设备,还用于从所述第三节点的多个存储设备中选取一个或多个存储设备,以用于同步所述第一区块的当前未同步的部分状态数据。
17.如权利要求15所述的第一节点,所述第四节点还包括第三控制设备,所述第一控制设备,还用于从所述第二控制设备接收所述第一区块的区块头信息和所述第一部分状态数据的第一子状态根;从所述第三控制设备接收所述第一区块的区块头信息和所述第二部分状态数据的第二子状态根;基于所述第一区块的区块头信息、所述第一子状态根和所述第二子状态根对所述第一部分状态数据和所述第二部分状态数据进行验证。
18.如权利要求17所述的第一节点,所述第一控制设备,具体用于验证包括所述第一部分状态数据的子状态树的第三子状态根是否等于所述第一子状态根;
验证包括所述第二部分状态数据的子状态树的第四子状态根是否等所述第二子状态根;
基于所述区块头信息中的状态根验证所述第三子状态根和所述第四子状态根。
19.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令所述计算机执行权利要求1-9中任一项所述的方法。
20.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-9中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210462513.9A CN114996350A (zh) | 2022-04-28 | 2022-04-28 | 一种区块链中的区块状态同步方法及第一节点 |
PCT/CN2022/135336 WO2023207079A1 (zh) | 2022-04-28 | 2022-11-30 | 一种区块链中的区块状态同步方法及第一节点 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210462513.9A CN114996350A (zh) | 2022-04-28 | 2022-04-28 | 一种区块链中的区块状态同步方法及第一节点 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114996350A true CN114996350A (zh) | 2022-09-02 |
Family
ID=83025919
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210462513.9A Pending CN114996350A (zh) | 2022-04-28 | 2022-04-28 | 一种区块链中的区块状态同步方法及第一节点 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114996350A (zh) |
WO (1) | WO2023207079A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023207079A1 (zh) * | 2022-04-28 | 2023-11-02 | 蚂蚁区块链科技(上海)有限公司 | 一种区块链中的区块状态同步方法及第一节点 |
CN118101677A (zh) * | 2024-04-28 | 2024-05-28 | 杭州高新区(滨江)区块链与数据安全研究院 | 一种基于状态增量的区块链同步方法、设备和存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112887421B (zh) * | 2019-07-31 | 2023-07-18 | 创新先进技术有限公司 | 区块链状态数据同步方法及装置、电子设备 |
CN111488396B (zh) * | 2020-04-08 | 2021-01-01 | 北京瑞策科技有限公司 | 业务数据区块链的数据同步方法及装置 |
CN113064768B (zh) * | 2021-04-19 | 2022-08-09 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中切换分片节点的方法和装置 |
CN113468200B (zh) * | 2021-09-01 | 2021-12-21 | 支付宝(杭州)信息技术有限公司 | 对区块链系统中的分片进行扩容的方法及装置 |
CN113744064B (zh) * | 2021-11-04 | 2022-02-22 | 支付宝(杭州)信息技术有限公司 | 在区块链节点中执行交易的方法及装置 |
CN114996350A (zh) * | 2022-04-28 | 2022-09-02 | 蚂蚁区块链科技(上海)有限公司 | 一种区块链中的区块状态同步方法及第一节点 |
-
2022
- 2022-04-28 CN CN202210462513.9A patent/CN114996350A/zh active Pending
- 2022-11-30 WO PCT/CN2022/135336 patent/WO2023207079A1/zh unknown
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023207079A1 (zh) * | 2022-04-28 | 2023-11-02 | 蚂蚁区块链科技(上海)有限公司 | 一种区块链中的区块状态同步方法及第一节点 |
CN118101677A (zh) * | 2024-04-28 | 2024-05-28 | 杭州高新区(滨江)区块链与数据安全研究院 | 一种基于状态增量的区块链同步方法、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2023207079A1 (zh) | 2023-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109377232B (zh) | 基于dag的区块链的交易定序方法及设备 | |
CN114996350A (zh) | 一种区块链中的区块状态同步方法及第一节点 | |
CN106657170B (zh) | 一种数据同步方法及装置 | |
CN109634932A (zh) | 一种智能合约存储方法及存储系统 | |
CN114679457B (zh) | 一种区块链中的节点分组方法及区块链节点 | |
CN104348793A (zh) | 存储服务器系统及数据信息的存储方法 | |
CN111966631A (zh) | 一种可快速分发的镜像文件生成方法、系统、设备和介质 | |
CN108390914B (zh) | 一种服务更新方法及装置、系统 | |
CN114390063B (zh) | 用于区块链网络的消息广播方法、区块链节点和区块链系统 | |
CN115409507A (zh) | 区块处理方法、区块处理装置、计算机设备及存储介质 | |
CN111061813B (zh) | 用于区块链网络中的数据同步的方法、装置和计算设备 | |
CN115987528A (zh) | 区块链系统中的区块同步方法和区块链节点 | |
CN116366666A (zh) | 区块链系统中的链状态更新方法和区块链节点 | |
CN115150409A (zh) | 在区块链系统中执行交易的方法、区块链系统和节点 | |
CN106294721B (zh) | 一种集群数据统计及导出方法及装置 | |
CN110648140B (zh) | 一种基于区块链的多链配合方法及装置 | |
Ahmad et al. | Lowest data replication storage of binary vote assignment data grid | |
CN115174573B (zh) | 区块链系统中的数据广播方法、节点和区块链系统 | |
CN113746635A (zh) | 提高pbft共识可扩展性的方法、装置、计算设备及存储介质 | |
CN115174572B (zh) | 区块链中的数据组播方法、区块链节点和存储介质 | |
US10372917B1 (en) | Uniquely-represented B-trees | |
CN115174574A (zh) | 区块链系统中的数据广播方法、节点和区块链系统 | |
CN110935168A (zh) | 用于全球同服架构的分布式id生成方法、装置及设备 | |
CN113873023B (zh) | 领导节点选举方法、装置、设备和存储介质 | |
CN117273924A (zh) | 交易执行方法及装置和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |