具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
在本说明书中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本说明书实施例所提供的备份方法可用于单个区块链,也可以用于包括分片的区块链系统。区块链分片技术是一种用于对区块链进行扩容的方案。区块链分片的基本思路是将区块链网络中的节点分成若干个相对独立的子网络,每个子网络构成一个区块链,一个子网络也就是一个分片(shard)。通过多个分片的并行处理,可提升整个网络的吞吐量。具体而言,分片技术根据不同的分片机制可以划分为三种:网络分片(network sharding),交易分片(transaction sharding),状态分片(state sharding)。网络分片是最基础的一种分片方式,包括将整个区块链网络划分成多个子网络,也就是多个分片。这样,区块链网络中的多个分片可以并行处理网络中不同的交易。交易分片是将交易按某种规则分配到不同分片,从而达到并行处理的目的。交易分片的前提是先进行网络分片。状态分片的关键是将整个存储区分开,让不同的分片存储不同账户的状态,每个分片只负责存储归属于自己的一部分账户的世界状态,而不是存储区块链中全部账户的世界状态。状态分片能够解决存储能力瓶颈问题。下文中,将以包括多个分片的区块链系统为例描述本说明书实施例提供的数据备份方案。本说明书实施例提供的方案可应用于状态分片,可以理解,本说明书实施例的方案也可应用于其它类型的分片。
如图1所示,是根据一示例性实施例示出的一种区块链系统的架构图。
在图1中,区块链系统可以包括分片1,分片2和分片3(图1中未示出),其中,不同分片的互信的多个节点可以形成一个集合,该集合中可包括分别属于3个分片的3个分片节点,所述分片节点可以实现为具有计算、处理能力的装置、服务器或设备集群等。例如,区块链系统可以为联盟链系统,该系统中可以包括联盟方A,联盟方B,联盟方C和联盟方D。可以理解,图1仅是示例性的示出三个分片和四个联盟方,实际上区块链系统中可以包括任意数目的分片和联盟方。下文中将以联盟链系统为例进行描述,可以理解,本说明书实施例不限于应用于联盟链系统,而可以应用于任意区块链系统。
其中,从分片角度来说,分片节点1A,分片节点1B,分片节点1C和分片节点1D均属于分片1。分片节点2A,分片节点2B,分片节点2C和分片节点2D均属于分片2。分片节点3A,分片节点3B,分片节点3C和分片节点3D均属于分片3。同一分片中的节点可以搭建一条区块链,具体例如,分片1中的节点1A、1B和1C可以搭建一条区块链1,分片2中的节点2A、2B和2C可以搭建一条区块链2,分片3中的节点3A、3B和3C可以搭建一条区块链3。
从联盟方的角度来说,分片节点1A,分片节点2A和分片节点3A均属于联盟方A。分片节点1B,分片节点2B和分片节点3B均属于联盟方B。分片节点1C,分片节点2C和分片节点3C均属于联盟方C。分片节点1D,分片节点2D和分片节点3D均属于联盟方D。
每个分片内部的各参与方节点之间进行共识。
每个分片节点均连接有一个备用节点,备用节点和与其相连接的分片节点属于相同的分片以及相同的联盟方。例如,分片节点1A连接有备用节点1A,备用节点1A也属于分片1以及属于联盟方A。分片节点2B连接有备用节点2B,备用节点2B也属于分片2以及属于联盟方B。分片节点3C连接有备用节点3C,备用节点3C也属于分片3以及属于联盟方C,对其它备用节点以此类推。
在图1所示的区块链系统中,一个联盟方包括分别属于不同分片的多个节点,该多个节点例如可以通过联盟方的内网连接。当该系统中的一个分片需要向另一个分片发送跨分片子交易时,可以在一个联盟方的该两个分片的节点中进行跨分片通信,从而可提供较快的通信速度。另外,由于一个联盟方包括的节点之间相互信任,该跨分片通信过程中不需要进行身份验证,从而可以进一步提高该系统的处理效率。
图2示出通过一个联盟方包括的多个节点执行区块并进行备份的过程示意图。图2中以联盟方A为例进行描述,可以理解,图1中的其他联盟方可以执行与联盟方A相同的过程。
如图2所示,在对区块执行的过程中,分片节点1A~分片节点3A同时执行高度相同的各自所属的分片的区块。例如,分片节点1A执行高度为m的分片1的区块(即分片1区块m),同时,分片节点2A执行高度为m的分片2的区块(即分片2区块m),……同时,分片节点3A执行高度为m的分片3的区块(即分片3区块m)。可以理解,分片1区块m表示分片1中高度为m的区块,分片2区块m表示分片2中高度为m的区块,以此类推,因此,分片1区块m、分片2区块m和分片3区块m表示不同的区块。
分片节点1A~分片节点3A同时执行高度相同的各自所属的分片的区块,可以保证包括跨片事务的交易在不同分片的子交易的执行结果的原子性。具体是,分片1、分片2和分片3首先分别开始执行创世块(下文称为区块0),各个分片中在分别共识之后存入创世块,创世块中一般包括配置信息,如分片中包括的分片节点,各个分片节点的IP地址、端口号、各个分片节点的公钥列表,分片中的共识节点标识等等。在执行创世块之后,分片1、分片2和分片3开始执行区块1。具体是,分片1、分片2和分片3在分别通过共识确定属于区块1的多个交易及该多个交易的执行顺序之后,分片节点1A、分片节点2A和分片节点3A分别开始执行经共识的其所属分片的区块1中的多个交易。其中,分片节点1A在执行交易的过程中可能会产生需由分片节点2A执行的跨分片子交易。如果该交易对应于对事务的执行,分片节点1A在确定该交易的跨分片子交易执行成功之后才能确定对应交易执行成功。相应地,在分片节点1A在确定发送给全部其他分片节点的跨分片子交易都执行成功了,才能确定对区块1中的多个交易执行成功。
下文中,使用“交易”表示在分片中共识的属于区块的多个交易,使用“跨分片子交易”表示通过执行交易或跨分片子交易所产生的交易的子交易。
类似地,分片节点2A和分片节点3A也会向联盟方A中的其他分片节点发送跨分片子交易,也同样地在确定发送给其他分片节点的跨分片子交易都执行成功了,才能确定其对应的分片的区块1中的多个交易执行成功。因此,为了保证各个分片的区块1中的事务型交易的执行正确性,分片节点1A~分片节点3A分别等待联盟方A中的其他分片节点结束对跨分片子交易的执行,并且确定这些跨分片子交易都执行成功之后才开始更新世界状态,即存储与区块1对应的世界状态,并生成其所属分片的区块1(即区块1的区块体和区块头),存储区块1,从而结束对其所属分片的区块1的执行,以保证各个分片的区块1中的事务型交易包括的子交易的执行原子性。
分片节点1A~分片节点3A各自在确定其它分片节点都结束对区块1的执行之后,才各自开始对区块2的执行,以此类推,分片节点1A~分片节点3A各自在确定其它分片节点都结束对区块2的执行之后,才各自开始对区块3的执行。因此,分片节点1A~分片节点3A(即不同分片)之间对区块的执行是同步的,各个分片节点在同一时间具有同样的区块高度。
可以理解,虽然在图2中示出分片节点1A~分片节点3A同时执行高度相同的各自所属的分片的区块,本说明书实施例不限于此,本说明书实施例也可以与其他用于保证交易原子性的技术相结合,在该其他用于保证交易原子性的技术中,不同的分片有可能执行不同高度的区块,也即,分片节点1A~分片节点3A有可能在同一时间执行不同高度的区块。
另外,如图2所示,各个分片节点对区块的执行过程包括多轮交易执行过程(即多轮交易执行过程),每轮交易执行过程之后都会生成与该轮交易执行过程对应的状态信息(即用于更改世界状态的信息),并将该状态信息发送给对应的备用节点进行备份。其中,对于区块的首轮交易执行过程,也即执行经共识属于该区块的多个交易的交易执行过程,状态信息为对该交易执行过程中写入变量的值的记录。对于区块的非首轮交易执行过程,也即在上述首轮执行过程之后的用于执行跨分片子交易的交易执行过程,其状态信息为在前一轮交易执行过程对应的状态信息的基础上,对当前一轮交易执行过程中写入变量的值的记录。
其中,在一轮交易执行过程之后可包括跨分片通信过程,该跨分片通信过程可跨分片发送跨分片子交易,使得接收该跨分片子交易的节点进行下一轮的交易执行过程以执行该跨分片子交易中的操作,各个节点执行的所述多轮交易执行过程也是基本同步的。
在本申请实施例提供的包括多个分片的区块链系统中,执行区块的过程包括以下过程:各个分片基本同时通过共识确定属于同一高度m的区块的多个交易,一个联盟方中包括的各个分片执行其所属分片的区块m的多个交易,执行来自联盟方中其他分片节点的多个跨分片子交易,联盟方中各个分片节点在确定各个分片节点都完成对跨分片子交易的执行、并且没有生成新的跨分片子交易之后,基于多个交易和多个跨分片子交易的执行结果对应的状态信息,更新区块m的世界状态,并生成其所述分片的区块m的区块体和区块头,存储区块m。可以理解,在各个分片在执行属于区块m的多个交易的过程中都没有产生跨分片子交易的情况中,执行区块的过程将不包括上述执行跨分片子交易的过程。
在本说明书实施例的方案中,通过联盟方中的备用节点备份分片节点在执行区块的过程中产生的状态信息,从而可以以较少的成本进行更有效的备份。
下文将结合图1和图2描述本说明书实施例的数据备份方案。
如图3所示,图3是根据一示例性实施例示出的一种区块链系统中数据备份的方法的流程图,该区块链系统可以包括第一分片,第一分片包括第一分片节点和第一备用节点。第一分片节点与第一分片中的其他分片节点相连接,第一备用节点与第一分片节点相连接。该区块链系统还可以包括至少一个第二分片,第二分片包括与第一分片节点互为信任节点的第二分片节点。其中,该第一分片节点和第一备用节点可以实现为具有计算、处理能力的设备、平台、服务器或设备集群。该方法包括以下步骤:
在步骤301中,第一分片节点获取第一分片中属于第一区块的多个交易,通过执行该多个交易生成第一状态信息,并向第一备用节点发送该第一状态信息。
在步骤302中,第一备用节点接收并存储该第一状态信息。
在本实施例中,以图2为例,可以设第一分片具体为分片1,第二分片具体为分片2和分片3,第一分片节点具体为分片节点1A,第一备用节点具体为备用节点1A,第二分片节点具体为分片节点2A和分片节点3A。可以理解,也可以设第一分片具体为分片2,第二分片具体为分片1和分片3,第一分片节点具体为分片节点2A,第一备用节点具体为备用节点2A,第二分片节点具体为分片节点1A和分片节点3A。或者,还可以设第一分片具体为分片3,第二分片具体为分片1和分片2,第一分片节点具体为分片节点3A,第一备用节点具体为备用节点3A,第二分片节点具体为分片节点1A和分片节点2A。
如图2中所示,联盟方A中的各个分片节点执行高度为m的区块(简称区块m),在分片1、分片2和分片3分别通过共识确定属于各自的区块m的h个交易之后,分片节点1A、分片节点2A和分片节点3A分别开始执行属于各自的区块m的h个交易(如图2中标注“h”的矩形框所示,图2中,以同样的矩形框表示对交易或者跨分片子交易的执行过程),该对h个交易的执行过程可以视为在执行区块m过程中的第1轮交易执行过程。
可以理解,图2中虽然示例示出分片节点1A、分片节点2A和分片节点3A在第1轮交易执行过程中分别执行属于分片1区块m、分片2区块m和分片3区块m的h个交易,可以理解,分片1区块m表示分片1中高度为m的区块,分片2区块m表示分片2中高度为m的区块,以此类推,因此,分片1区块m、分片2区块m和分片3区块m表示不同的区块。本申请实施例不限于此,分片1、分片2和分片3可分别设定属于分片1区块m、分片2区块m和分片3区块m的交易个数,该交易个数有可能是不等的。
如图1中所示,联盟方A中还包括分片节点对应的备用节点,下文中以备用节点1A为例描述备用节点的操作,可以理解,图1中的备用节点2A和备用节点3A的操作可参考对备用节点1A的描述。备用节点1A与分片节点1A相对应,用于对分片节点1A在执行区块的过程中产生的数据进行备份。
具体来说,在第1轮交易执行过程中,分片节点1A在接收到对分片1区块m的h个交易的共识提议的共识结果之后,可以将该h个交易和该共识结果发送给备用节点1A进行备份。分片节点1A在执行完属于分片1区块m的h个交易之后,基于该h个交易的执行结果产生用于更改世界状态的第一状态信息,分片节点1A也将该第一状态信息发送给备用节点1A。第一备用节点接收该第一状态信息,并将该第一状态信息进行备份。
在步骤303中,第一分片节点从各个第二分片节点接收第一分片对应的多个跨分片子交易,通过执行该多个跨分片子交易生成第二状态信息,并向第一备用节点发送该第二状态信息,该多个跨分片子交易由第二分片节点在执行第二区块的过程中生成,其中,第一区块与第二区块具有相同的区块高度。
在步骤304中,第一备用节点接收并存储该第二状态信息。
在本实施例中,各个分片在执行完各自的区块m的第1轮交易执行过程之后,分别产生了一个或多个跨分片子交易,并将这些跨分片子交易分别发送给对应的分片节点。例如,分片节点1A在执行h个交易之后,产生了与分片2对应的一个或多个跨分片子交易,并将这些跨分片子交易发送给分片节点2A,产生了与分片3对应的一个或多个跨分片子交易,并将这些跨分片子交易发送给分片节点3A。分片节点2A和分片节点3A也类似地进行跨分片通信。最终,分片节点1A从分片节点2A和分片节点3A共接收q个跨分片子交易,并执行该q个跨分片子交易,分片节点2A从分片节点1A和分片节点3A共接收w个跨分片子交易,并执行该w个跨分片子交易,分片节点3A从分片节点1A和分片节点2A共接收p个跨分片子交易,并执行该p个跨分片子交易。
如图2中所示,该交易执行过程可视为各个分片节点在执行各自的区块m的过程中的第2轮交易执行过程。同样地,各个分片节点在完成该第2轮交易执行过程之后,生成各自的第二状态信息,并向其对应的备用节点备份与该轮交易执行过程对应的各自的第二状态信息。可以理解,由于该第2轮交易执行过程是基于第1轮交易执行过程对应的第一状态信息进行的,因此,该第2轮交易执行过程对应的第二状态信息中包括了第一状态信息在第2轮交易执行过程中未更新的内容。同时,各个分片节点在完成该第2轮交易执行过程,又可能产生新的跨分片子交易,并可将该新产生的跨分片子交易发送给对应的分片节点,以使得该分片节点开始新一轮的交易执行过程。
对于区块m中的每轮交易执行过程,分片节点1A都会生成与该轮交易执行过程对应的状态信息,并将该状态信息发送给备用节点1A进行备份。这样,在分片节点1A发生故障以使得备用节点1A代替分片节点1A工作的情况中,备用节点1A只需要从备份的最新的状态信息开始继续对区块m的执行,而不需要基于区块m的上一个区块(区块m-1)对应的世界状态重新执行区块m。
在本实施例中,跨分片子交易是在执行区块过程中产生的交易,具体来说,可以是执行属于区块的多个交易的过程中产生的交易,或者可以是执行跨分片子交易的过程中产生的交易。该跨分片子交易可以包括操作指令,以指示在对应的分片中执行与该操作指令对应的操作。该子交易可以与交易具有相同的形式,即包括发送账户、接收账户、数据字段等,与交易不同的是,由于该子交易在同一个联盟方包括的多个相互信任的分片节点之间发送,该多个分片节点之间不需要对子交易进行验证,因此,该子交易可以不包括数字签名。在该区块链系统包括状态分片的情况中,该跨分片子交易用于查询或更改对应分片中的账户的状态(即世界状态),该跨分片子交易可以通过调用对应分片中的合约来查询或更改对应分片中的账户的状态。在一种实施方式中,跨分片子交易中可包括对应的原始交易的哈希值。在另一种实施方式中,可在跨分片子交易中包括对应的执行轮次信息,指示对应的跨分片子交易针对第几轮交易执行过程而产生。
在一种实施情况中,第一分片节点在执行第一区块的过程中,从第二分片节点接收指示属于第一区块的多个交易中的第一交易执行错误的信息,从多个交易中剔除第一交易,重新执行经剔除之后的交易,生成第三状态信息,并向第一备用节点发送该第三状态信息以及剔除第一交易的信息。第一备用节点在接收该第三状态信息以及剔除第一交易的信息之后,存储第三状态信息以及删除第一区块的除第三状态信息之外的状态信息。
具体是,例如,在进行第n轮执行时,分片节点1A对某个跨分片子交易执行失败,分片节点1A停止第n轮执行,将该跨分片子交易对应的交易作为错误交易通知给分片节点2A和分片节点3A。假设该错误交易为属于分片2区块m的交易,因此,分片节点2A在接收到该通知之后,停止第n轮执行,并等待分片节点3A对第n轮执行的结果。如果分片节点3A在完成第n轮执行之后都未发现其他错误交易,则将该信息通知其他两个分片节点。
分片节点2A在接收到该信息之后,从属于分片2区块m的多个交易剔除错误交易并回滚缓存中的状态信息,基于分片2区块m-1的世界状态重新执行分片2区块m。分片节点1A和分片节点3A也同时回滚状态,分别重新执行分片1区块m和分片3区块m。
如果分片节点3A在完成第n轮执行之后也发现错误交易,则将该信息通知其他两个分片节点,分片节点2A在接收到该信息之后,从属于分片2区块m的多个交易剔除错误交易之后回滚状态并重新执行分片2区块m。如果基于同样的过程确定属于分片1区块m和分片3区块m的多个交易中也存在错误交易,则分片节点1A和分片节点3A与上述同样地在状态回滚之后,分别重新执行在剔除错误交易之后的属于分片1区块m的多个交易和属于分片3区块m的多个交易。
在各个分片节点重新执行经剔除之后的交易之后,生成各自的第三状态信息,并向各自对应的各个备用节点发送各自的第三状态信息以及各自剔除交易的信息。各个备用节点接收各自对应的各个第三状态信息以及剔除交易的信息,并各自存储各自的第三状态信息以及删除各自缓存中存储的区块m的除第三状态信息之外的状态信息。
在另一种实施情况中,第一分片节点在执行多个跨分片子交易之后没有生成与各个第二分片对应的新的跨分片子交易的情况中,向各个第二分片节点发送用于指示未生成第一区块的跨分片子交易的信息。
具体是,分片节点1A在某轮交易执行过程中没有产生新的跨分片子交易,从而向分片节点2A和分片节点3A分别发送用于指示未产生跨分片子交易的信息。同样的,分片节点2A和分片节点3A在某轮交易执行过程中没有产生新的跨分片子交易,也向其它分片节点分别发送用于指示未产生跨分片子交易的信息。
在另一种实施情况中,第一分片节点在向各个第二分片节点发送用于指示未生成第一区块的跨分片子交易的信息、且从各个第二分片节点分别接收到用于指示未生成第二区块的跨分片子交易的信息之后,向第一备份节点发送用于指示已执行完成第一区块的消息。第一备用节点在接收到用于指示已执行完成第一区块的消息之后,利用存储的最新的状态信息更新第一区块的状态数据库。
具体是,假设在第k轮交易执行过程中,分片节点1A没有产生新的跨分片子交易,则向分片节点2A和分片节点3A分别发送用于指示未产生跨分片子交易的信息。并且,分片节点1A接收到分片节点2A和分片节点3A发送用于指示未产生跨分片子交易的信息。所以,分片节点1A确定分片1区块m已执行完成,并向备份节点1A发送用于指示已执行完成分片1区块m的消息。同样,分片节点2A和分片节点3A分别向备份节点2A和备份节点3A发送用于指示已执行完成分片2区块m的消息和已执行完成分片3区块m的消息。
备份节点1A接收到用于指示已执行完成分片1区块m的消息,利用存储的最新状态信息(例如第三状态信息)更新分片1的世界状态,即在分片1的状态数据库中存储与分片1区块m对应的世界状态。同样,备份节点2A和备份节点3A利用各自存储的最新的状态信息,分别更新分片2的世界状态和分片3的世界状态。
本说明书的上述实施例提供的区块链系统中数据备份的方法,由第一分片节点在执行第一区块的过程中生成状态信息,并向第一备用节点发送该状态信息,由第一备用节点存储该状态信息。使得第一备用节点在第一分片节点完成对该第一区块的执行之后,能够利用该状态信息更新该第一区块的状态数据库。从而在不影响区块链系统性能和吞吐量的前提下,有效地对第一分片节点产生的状态数据进行备份。
应当注意,尽管在上述实施例中,以特定顺序描述了本说明书实施例的方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
与前述区块链系统中数据备份的方法实施例相对应,本说明书还提供了区块链系统中数据备份的装置的实施例。
如图4所示,图4是本说明书根据一示例性实施例示出的一种区块链系统中数据备份的装置框图,该区块链系统包括第一分片,第一分片包括第一分片节点,第一分片节点具有对应的第一备用节点,该装置部署于第一分片节点,该装置可以包括:生成模块401和发送模块402。
其中,生成模块401,用于在执行第一区块的过程中生成状态信息。
发送模块402,用于向第一备用节点发送该状态信息。
在一些实施方式中,生成模块401被配置用于:获取第一分片中属于第一区块的多个交易,并通过执行该多个交易,生成第一状态信息。
在另一些实施方式中,该区块链系统还可以包括至少一个第二分片,第二分片包括与第一分片节点互为信任节点的第二分片节点。
其中,生成模块401被配置用于:从各个第二分片节点接收与第一分片对应的多个跨分片子交易,其中,多个跨分片子交易由第二分片节点在执行第二区块的过程中生成,其中,第一区块与第二区块具有相同的区块高度。执行该多个跨分片子交易,生成第二状态信息。
在另一些实施方式中,该装置还可以包括:第一指示模块(图中未示出)。
其中,第一指示模块,用于在执行第一区块的过程中没有生成与各个第二分片对应的新的跨分片子交易的情况中,向各个第二分片节点发送用于指示未生成跨分片子交易的信息。
在另一些实施方式中,该装置还包括:第二指示模块(图中未示出)。
其中,第二指示模块,用于在向各个第二分片节点发送用于指示未生成跨分片子交易的信息、且从各个第二分片节点分别接收到用于指示未生成跨分片子交易的信息之后,向第一备份节点发送用于指示已执行完成第一区块的消息。
在另一些实施方式中,生成模块401还被配置用于:在执行第一区块的过程中,从第二分片节点接收指示属于第一区块的多个交易中的第一交易执行错误的信息,从多个交易中剔除第一交易,重新执行经剔除之后的交易,生成第三状态信息;
该装置还可以包括:传输模块,用于将剔除第一交易的信息发送给第一备份节点。
应当理解,上述装置可以预先设置在第一分片节点中,也可以通过下载等方式而加载到第一分片节点中。上述装置中的相应模块可以与第一分片节点中的模块相互配合以实现区块链系统中数据备份的方案。
如图5所示,图5是本说明书根据一示例性实施例示出的一种区块链系统中数据备份的装置框图,该区块链系统包括第一分片,第一分片包括第一分片节点,第一分片节点具有对应的第一备用节点,该装置部署于第一备用节点,该装置可以包括:接收模块501和存储模块502。
其中,接收模块501,用于接收第一分片节点发送的状态信息,该状态信息包括第一分片节点在执行第一区块的过程中生成的状态信息。
存储模块502,用于存储该状态信息。
在一些实施方式中,该装置还可以包括:更新模块(图中未示出)。
其中,更新模块,用于接收第一分片节点发送的用于指示已执行完成第一区块的消息,利用存储的状态信息更新第一区块的状态数据库。
应当理解,上述装置可以预先设置在第一备用节点中,也可以通过下载等方式而加载到第一备用节点中。上述装置中的相应模块可以与第一备用节点中的模块相互配合以实现区块链系统中数据备份的方案。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书一个或多个实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本说明书一个或多个实施例还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图3实施例提供的区块链系统中数据备份的方法。
对应于上述的区块链系统中数据备份的方法,本说明书一个或多个实施例还提出了图6所示的根据本说明书的一示例性实施例的计算设备的示意结构图。请参考图6,在硬件层面,该计算设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成区块链系统中数据备份的装置。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。其中,软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。