CN112988469B - 联盟链中的状态备份方法、装置和电子设备 - Google Patents
联盟链中的状态备份方法、装置和电子设备 Download PDFInfo
- Publication number
- CN112988469B CN112988469B CN202110457183.XA CN202110457183A CN112988469B CN 112988469 B CN112988469 B CN 112988469B CN 202110457183 A CN202110457183 A CN 202110457183A CN 112988469 B CN112988469 B CN 112988469B
- Authority
- CN
- China
- Prior art keywords
- snapshot
- block
- blocks
- specified number
- transaction
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 238000011084 recovery Methods 0.000 claims description 18
- 230000002159 abnormal effect Effects 0.000 claims description 5
- 230000002085 persistent effect Effects 0.000 claims 4
- 230000008569 process Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Retry When Errors Occur (AREA)
Abstract
本说明书公开了一种联盟链中的状态备份方法、装置和电子设备,该方法包括:联盟链中的目标共识节点在创建第N个快照之后生成指定数量的区块时,确定所述第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态;所述目标共识节点基于所述第N个快照之后的指定数量的区块中最后一个区块的交易执行之后的世界状态,创建与所述指定数量的区块中最后一个区块对应的第N+1个快照,其中,N为正整数。
Description
技术领域
本文件涉及计算机技术领域,尤其涉及一种联盟链中的状态备份方法、装置和电子设备。
背景技术
目前,采用实用拜占庭容错算法(Practical Byzantine Fault Tolerance,PBFT)主要包括两个部分,即包括Normal Case Phase和View Change Phase这两个部分。其中,Normal Case Phase部分包括request(请求阶段)、pre-prepare(预准备阶段)、prepare(准备阶段)、commit(提交阶段)和reply(响应阶段)这几个阶段来完成共识。
然而,如果在上述共识过程中,联盟链中的某个共识节点对应的状态机出现宕机、断网等故障状态,则难以快速恢复到故障发生前的状态。
发明内容
本说明书实施例提供了一种联盟链中的状态备份方法、装置和电子设备。
为解决上述技术问题,本说明书实施例是这样实现的:
第一方面,提出了一种联盟链中的状态备份方法,包括:
联盟链中的目标共识节点在创建第N个快照之后生成指定数量的区块时,确定所述第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态;
所述目标共识节点基于所述第N个快照之后的指定数量的区块中最后一个区块的交易执行之后的世界状态,创建与所述指定数量的区块中最后一个区块对应的第N+1个快照,其中,N为正整数。
第二方面,提出了一种联盟链中的状态备份装置,包括:
状态确定模块,在创建第N个快照之后生成指定数量的区块时,确定所述第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态;
快照创建模块,基于所述第N个快照之后的指定数量的区块中最后一个区块的交易执行之后的世界状态,创建与所述指定数量的区块中最后一个区块对应的第N+1个快照,其中,N为正整数。
第三方面,提出了一种电子设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
在创建第N个快照之后生成指定数量的区块时,确定所述第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态;
基于所述第N个快照之后的指定数量的区块中最后一个区块的交易执行之后的世界状态,创建与所述指定数量的区块中最后一个区块对应的第N+1个快照,其中,N为正整数。
第四方面,提出了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:
在创建第N个快照之后生成指定数量的区块时,确定所述第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态;
基于所述第N个快照之后的指定数量的区块中最后一个区块的交易执行之后的世界状态,创建与所述指定数量的区块中最后一个区块对应的第N+1个快照,其中,N为正整数。
本说明书实施例采用上述技术方案至少可以达到下述技术效果:
采用本说明书实施例提供的状态备份方法,联盟链中的目标共识节点在创建第N个快照之后生成指定数量的区块时,能够确定第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态,该目标共识节点还能基于第N个快照之后的指定数量的区块中最后一个区块的交易执行之后的世界状态,创建与指定数量的区块中最后一个区块对应的第N+1个快照,其中,N为正整数。这样,联盟链中的任意一个共识节点,比如目标共识节点对应的状态机出现宕机、断网等故障状态时,便能够基于目标共识节点在故障发生之前创建的上一个快照快速恢复出故障之前的状态。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:
图1为本说明书一个实施例提供的一种联盟链中的状态备份方法的实现流程示意图;
图2为本说明书一个实施例提供的联盟链中的状态备份方法应用于一种实际场景中的实现示意图;
图3为本说明书一个实施例提供的联盟链中的状态备份方法应用于另一种实际场景中的实现示意图;
图4为本说明书一个实施例提供的联盟链中的状态备份装置的结构示意图;
图5为本说明书一个实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本文件的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本文件一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本文件保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
在联盟链中使用PBFT算法进行共识的过程中,每个Replica(副本,即联盟链中所有参与共识的共识节点)在发出一个消息或者接收到其它共识节点发来的消息(包括pre-prepare、prepare、commit消息)时,都会在本共识节点的内存的消息日志(Message Log)中做记录。随着联盟链中共识操作的不断进行,联盟链中各共识节点的Message Log会占用越来越大的内存空间。因此,为了节省联盟链中各共识节点的内存空间,可以进行垃圾处理,即在各个共识节点执行完propose(提议)时,清空各共识节点的Message Log,释放各共识节点的内存空间。
一种垃圾处理的方式是,联盟链中某个共识节点在执行完一条propose(也就是最新生成一个区块),就可以在联盟链中广播消息,以针对是否可以清除本共识节点的Message Log在全网达成一致。联盟链中的共识节点在接收到这类广播消息后也可以在联盟链中广播消息,以针对是否可以清除本共识节点的Message Log在全网达成一致。如果联盟链中的共识节点接收到Quorum(2f+1)个不同共识节点针对这类广播消息的确认反馈,这些共识节点就可以删除本共识节点Message Log中的最新生成的区块所对应的消息记录。
另一种垃圾处理的方式是,联盟链中某个共识节点在执行完k条propose(也就是新生成k个区块),就可以在联盟链中广播消息,以针对是否可以清除本共识节点的MessageLog在全网达成一致。联盟链中的各个共识节点接收到这类广播消息后也可以在联盟链中广播消息,以针对是否可以清除本共识节点的Message Log在全网达成一致。如果联盟链中的共识节点接收到Quorum(2f+1)个不同共识节点的确认反馈,这些共识节点就可以删除本共识节点Message Log中最新生成的k个区块所对应的消息记录。
其中,k即本说明书实施例中检查点(checkpoint)消息指示删除的k条propose(即最新生成的k个区块)对应的消息记录,上面清除本共识节点的Message Log即为本说明书实施例中的checkpoint消息,格式为<CHECKPOINT,n,d,i>,其中,n是共识节点当前期望保留的最小的一个区块的序列编号,d是期望保留的消息摘要,i是发出checkpoint消息的共识节点的编号。
上述联盟链中的共识节点在联盟链中广播发出的checkpoint消息和接收到的checkpoint消息的摘要都被记录到本共识节点的Message Log中。如果联盟链中的共识节点i收到其他不同共识节点发送的Quorum-1个合法的checkpoint消息,加上共识节点i本身发出的checkpoint消息,那么共识节点i针对<n,d>的checkpoint消息便达到了Quorum(2f+1)个。此时,共识节点i可以清除本共识节点Message Log中区块号为n之前的所有区块对应的消息记录(包括区块号为n之前的区块对应的pre-prepare、prepare、commit消息以及checkpoint消息)。
上述区块号n即为共识节点i当前的stable checkpoint状态中已达成共识的最大区块号,即表明共识节点i对区块号n之前的区块的执行结果已达成共识。即区块号为n-1、区块号为n-2、区块号为n-3、……、区块号为n-n中的交易执行形成的状态已持久化到磁盘中了,而区块号为n的区块对应的消息记录还保留在共识节点i的Message Log中。因此,如果在此过程中,共识节点i对应的状态机出现突然宕机、断网等故障状态,那么在共识节点i重启后,如何快速恢复区块号为n的区块对应的消息记录以及区块号为n之后的区块对应的消息记录,仍然需要提供进一步的解决方案。
针对此,本说明书一个或多个实施例提供的一种联盟链中的状态备份方法的实现流程示意图如图1所示,包括:
步骤110,联盟链中的目标共识节点在创建第N个快照之后生成指定数量的区块时,确定第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态。
联盟链可以理解为一个分布式的状态机。联盟链中的所有共识节点从同一个创世状态开始,依次执行达成共识的区块内的交易,驱动各个共识节点的状态按照相同操作序列(增加,删除,修改)不断变化,实现所有共识节点在执行完相同编号区块内的交易后,状态完全一致,这个状态就可以称之为世界状态。
世界状态里面记录了各种信息,比如账户余额、智能合约字节码、各个智能合约自定义的数据、联盟链的配置参数等。世界状态表示的是当前状态,即记录的各状态数据的当前数值。为保证执行交易时能够快速地对世界状态进行更新,世界状态方案设计实现要考虑状态数据的快速查找以及高效更新。
可选地,本说明书实施例可在创始区块被生成之后,基于创始区块中的交易执行之后的世界状态,创建与创始区块对应的第一个快照。具体地,当N为1时,目标共识节点在创建第N个快照之后生成指定数量的区块时,确定第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态之前,本说明书实施例提供的方法还包括:
目标共识节点在生成创始区块时,确定创始区块中的交易执行之后的世界状态;
目标共识节点基于创始区块的交易执行之后的世界状态,创建与创始区块对应的第1个快照。
可选地,如果目标共识节点收到不同共识节点发送来的Quorum-1(即2f)个合法的checkpoint消息,加上自己发出的checkpoint消息,则表明目标共识节点收集到Quorum(即2f+1)个的checkpoint消息,也就能够使得目标共识节点的状态达成stable checkpoint。此时,则表明,区块号为n之前的区块中的交易的执行后的状态已持久化到磁盘中,因此也就可以对该区块号为n之前的区块对应的消息记录进行垃圾清理。
此时,为了避免目标共识节点对应的状态在生成下一个指定数量的区块之前出现宕机或断网等故障状态,导致状态机在重启之后难以快速恢复故障之前的状态。本说明书实施例中的目标共识节点可以在接收到来自联盟链的其它共识节点的2f个checkpoint消息时,确定第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态,以便于对此世界状态进行状态备份。
具体地,联盟链中的目标共识节点在创建第N个快照之后生成指定数量的区块时,确定第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态,包括:
目标共识节点在创建第N个快照之后生成指定数量的区块时,在联盟链中广播checkpoint消息;
目标共识节点接收来自联盟链中的其它共识节点的checkpoint消息;
目标共识节点在接收到来自联盟链的至少2f个其它共识节点的checkpoint消息时,确定第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态,其中f为联盟链允许的异常共识节点最大数量。
步骤120,目标共识节点基于第N个快照之后的指定数量的区块中最后一个区块的交易执行之后的世界状态,创建与指定数量的区块中最后一个区块对应的第N+1个快照,其中,N为正整数。
可选地,上述指定数量为大于或等于1的正整数。
应理解,目标共识节点基于第N个快照之后的指定数量的区块中最后一个区块的交易执行之后的世界状态,创建与指定数量的区块中最后一个区块对应的第N+1个快照。此时,如果目标共识节点对应的状态机出现了宕机或断网等故障状态,则可以在目标共识节点对应的状态机重启之后,快速基于第N+1个快照进行状态恢复。
可选地,本说明书实施例提供的一种状态恢复的方式为:当指定数量为1时,目标共识节点基于第N个快照之后的指定数量的区块中最后一个区块的交易执行之后的世界状态,创建与指定数量的区块中最后一个区块对应的第N+1个快照之后。如果目标共识节点对应的状态机在生成下一个区块之前出现故障,则目标节点确定第N+1个快照对应的区块的下一个待生成的区块中对应的交易;
目标共识节点基于第N+1个快照、以及第N+1个快照对应的区块的下一个待生成的区块对应的交易,进行状态恢复。
可选地,目标共识节点基于第N+1个快照、以及第N+1个快照对应的区块的下一个待生成的区块对应的交易,进行状态恢复,包括:
目标共识节点基于第N+1个快照对应的区块的下一个待生成的区块对应的交易的预写式日志(Write Ahead Log,WAL),获取第N+1个快照对应的区块的下一个待生成的区块对应的交易中已完成共识的交易和未完成共识的交易;
目标共识节点基于第N+1个快照和已完成共识的交易,进行状态回放;
目标共识节点在联盟链中对未完成共识的交易进行共识操作。
图2为本说明书一个实施例提供的联盟链中的状态备份方法应用于一种实际场景中的实现示意图。
在图2中,目标共识节点每生成一个区块都对生成的区块中的交易执行完成之后的世界状态创建快照。具体地,在生成区块Block n之后,就可以基于区块Block n中的交易执行完成之后形成的世界状态创建快照Snapshot n。在生成区块Block n+1之后,就可以基于区块Block n+1中的交易执行完成之后形成的世界状态创建快照Snapshot n+1。在生成区块Block n+2之后,就基于区块Block n+2中的交易执行完成之后形成的世界状态创建快照Snapshot n+2。图2中的区块Block n+3还未生成,图中灰色部分的交易tx0~tx4已经完成共识达到commit状态,图中白色部分交易tx0~tx2则还未达成commit状态。
如果在上述图2中,目标共识节点对应的状态机在生成区块Block n+3的过程中出现宕机等故障状态。那么,目标共识节点便可以基于第n+2个快照、以及第n+2个快照对应的区块的下一个待生成的区块对应的交易,进行状态恢复。具体过程包括:首先,目标共识节点可以基于第n+2个快照对应的区块的下一个待生成的区块Block n+3对应的交易的WAL,获取区块Block n+3对应的交易中已完成共识的交易(即图中灰色部分的交易tx0~tx4)和未完成共识的交易(即图中白色部分交易tx0~tx2);然后,目标共识节点基于第n+2个快照和已完成共识的交易(即图中灰色部分的交易tx0~tx4),进行状态回放;最后,目标共识节点在联盟链中对未完成共识的交易((即图中白色部分交易tx0~tx2))重新开始进行三阶段的共识操作(以PBFT共识算法为例,即pre-prepare(预准备阶段)、prepare(准备阶段)和commit(提交阶段))。
可选地,为了减少联盟链中的广播消息以及精简创建的快照数量,本说明书实施例提供的另一种状态恢复的方式为:当指定数量为大于1的正整数k时,目标共识节点基于第N个快照之后的指定数量的区块中最后一个区块的交易执行之后的世界状态,创建与第N个快照之后的指定数量的区块中最后一个区块对应的第N+1个快照之后。如果目标共识节点对应的状态机在生成第N+1个快照之后的指定数量的区块之前出现故障,则目标节点确定在N+1个快照对应的区块之后生成的区块、以及已完成共识且未写入区块的交易和未完成共识的交易;
目标共识节点基于N+1个快照、N+1个快照对应的区块之后生成的区块、以及已完成共识且未写入区块的交易和未完成共识的交易,进行状态恢复。
可选地,目标共识节点基于N+1个快照、N+1个快照对应的区块之后生成的区块、以及已完成共识且未写入区块的交易和未完成共识的交易,进行状态恢复,包括:
目标共识节点基于N+1个快照、N+1个快照对应的区块之后生成的区块、以及已完成共识且未写入区块的交易,进行状态回放;
目标共识节点在联盟链中对未完成共识的交易进行共识操作。
图3为本说明书一个实施例提供的联盟链中的状态备份方法应用于另一种实际场景中的实现示意图。
在图3中,以k=2为例,目标共识节点每生成两个区块都对生成的区块中的交易执行完成之后形成的世界状态创建快照。具体地,在生成区块Block n之后,就基于区块Blockn中的交易执行完成之后形成的世界状态创建快照Snapshot n。在生成区块Block n+2之后,就基于区块Block n+2中的交易执行完成之后形成的世界状态创建快照Snapshot n+2。图3中的区块Block n+3还未生成,图中灰色部分的交易tx0~tx4已经完成共识达到commit状态,图中白色部分交易tx0~tx2还未达成commit状态。
如果在上述图3中,目标共识节点对应的状态机在生成区块Block n+3的过程中出现宕机。那么,目标共识节点便可以基于n+2个快照、n+2个快照对应的区块Block n+2之后生成的区块Block n+3、以及已完成共识且未写入区块的交易(图中灰色部分的交易tx0~tx4)和未完成共识的交易(图中白色部分交易tx0~tx2),进行状态恢复。具体过程包括:首先,目标共识节点可以基于第n+2个快照对应的区块的下一个待生成的区块Block n+3对应的交易的WAL,获取区块Block n+3对应的交易中已完成共识的交易(即图中灰色部分的交易tx0~tx4)和未完成共识的交易(即图中白色部分交易tx0~tx2);然后,目标共识节点基于第n+2个快照和已完成共识的交易(即图中灰色部分的交易tx0~tx4),进行状态回放;最后,目标共识节点在联盟链中对未完成共识的交易((即图中白色部分交易tx0~tx2))重新开始进行三阶段的共识操作(以PBFT共识算法为例,即pre-prepare(预准备阶段)、prepare(准备阶段)和commit(提交阶段))。
采用本说明书实施例提供的状态备份方法,联盟链中的目标共识节点在创建第N个快照之后生成指定数量的区块时,能够确定第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态,该目标共识节点还能基于第N个快照之后的指定数量的区块中最后一个区块的交易执行之后的世界状态,创建与指定数量的区块中最后一个区块对应的第N+1个快照,其中,N为正整数。这样,联盟链中的任意一个共识节点,比如目标共识节点对应的状态机出现宕机、断网等故障状态时,便能够基于目标共识节点在故障发生之前创建的上一个快照快速恢复出故障之前的状态。
图4是本说明书一个实施例提供的一种联盟链中的状态备份装置400的结构示意图,包括:
状态确定模块410,在创建第N个快照之后生成指定数量的区块时,确定所述第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态;
快照创建模块420,基于所述第N个快照之后的指定数量的区块中最后一个区块的交易执行之后的世界状态,创建与所述指定数量的区块中最后一个区块对应的第N+1个快照,其中,N为正整数。
采用本说明书实施例提供的状态备份装置,状态确定模块410在创建第N个快照之后生成指定数量的区块时,能够确定第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态,快照创建模块420还能基于第N个快照之后的指定数量的区块中最后一个区块的交易执行之后的世界状态,创建与指定数量的区块中最后一个区块对应的第N+1个快照,其中,N为正整数。这样,联盟链中的任意一个共识节点,比如目标共识节点对应的状态机出现宕机、断网等故障状态时,便能够基于目标共识节点在故障发生之前创建的上一个快照快速恢复出故障之前的状态。
可选地,在一种实施方式中,所述状态确定模块410,用于:
在创建第N个快照之后生成指定数量的区块时,在所述联盟链中广播checkpoint消息;
接收来自所述联盟链中的其它共识节点的checkpoint消息;
在接收到来自所述联盟链的其它共识节点的2f个checkpoint消息时,确定所述第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态。
可选地,在一种实施方式中,所述指定数量为大于或等于1的正整数。
可选地,在一种实施方式中,当所述指定数量为1时,所述快照创建模块420基于所述第N个快照之后的指定数量的区块中最后一个区块的交易执行之后的世界状态,创建与所述指定数量的区块中最后一个区块对应的第N+1个快照之后,所述装置还包括:
第一交易确定模块,如果所述装置对应的状态机在生成下一个区块之前出现故障,则确定所述第N+1个快照对应的区块的下一个待生成的区块中对应的交易;
第一状态恢复模块,基于所述第N+1个快照、以及所述第N+1个快照对应的区块的下一个待生成的区块对应的交易,进行状态恢复。
可选地,在一种实施方式中,所述第一状态恢复模块,用于:
基于所述第N+1个快照对应的区块的下一个待生成的区块对应的交易的预写式日志WAL,获取所述第N+1个快照对应的区块的下一个待生成的区块对应的交易中已完成共识的交易和未完成共识的交易;
基于所述第N+1个快照和所述已完成共识的交易,进行状态回放;
在所述联盟链中对所述未完成共识的交易进行共识操作。
可选地,在一种实施方式中,当所述指定数量为大于1的正整数k时,所述快照创建模块420基于所述第N个快照之后的指定数量的区块中最后一个区块的交易执行之后的世界状态,创建与所述第N个快照之后的指定数量的区块中最后一个区块对应的第N+1个快照之后,所述装置还包括:
第二交易确定模块,如果所述装置对应的状态机在生成所述第N+1个快照之后的指定数量的区块之前出现故障,则确定在所述N+1个快照对应的区块之后生成的区块、以及已完成共识且未写入区块的交易和未完成共识的交易;
第二状态恢复模块,基于所述N+1个快照、所述N+1个快照对应的区块之后生成的区块、以及已完成共识且未写入区块的交易和未完成共识的交易,进行状态恢复。
可选地,在一种实施方式中,所述第二状态恢复模块,用于:
基于所述N+1个快照、所述N+1个快照对应的区块之后生成的区块、以及所述已完成共识且未写入区块的交易,进行状态回放;
在所述联盟链中对所述未完成共识的交易进行共识操作。
可选地,在一种实施方式中,当N为1时,所述状态确定模块410在创建第N个快照之后生成指定数量的区块时,确定所述第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态之前,所述装置还包括:
第一状态确定模块,在生成创始区块时,确定所述创始区块中的交易执行之后的世界状态;
第一快照创建模块,基于所述创始区块的交易执行之后的世界状态,创建与所述创始区块对应的第1个快照。
联盟链中的状态备份装置400能够实现图1-图3的方法实施例的方法,具体可参考图1-图3所示实施例的联盟链中的状态备份方法,不再赘述。
图5是本说明书的一个实施例提供的电子设备的结构示意图。请参考图5,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成联盟链中的状态备份装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
在创建第N个快照之后生成指定数量的区块时,确定所述第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态;
基于所述第N个快照之后的指定数量的区块中最后一个区块的交易执行之后的世界状态,创建与所述指定数量的区块中最后一个区块对应的第N+1个快照,其中,N为正整数。
采用本说明书实施例提供的电子设备可知道,在创建第N个快照之后生成指定数量的区块时,能够确定第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态,还能基于第N个快照之后的指定数量的区块中最后一个区块的交易执行之后的世界状态,创建与指定数量的区块中最后一个区块对应的第N+1个快照,其中,N为正整数。这样,联盟链中的任意一个共识节点,比如目标共识节点对应的状态机出现宕机、断网等故障状态时,便能够基于目标共识节点在故障发生之前创建的上一个快照快速恢复出故障之前的状态。
上述如本说明书图1所示实施例揭示的联盟链中的状态备份方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书一个或多个实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书一个或多个实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
该电子设备还可执行图1的联盟链中的状态备份方法,本说明书在此不再赘述。
当然,除了软件实现方式之外,本说明书的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
本说明书实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图1所示实施例的方法,并具体用于执行以下操作:
在创建第N个快照之后生成指定数量的区块时,确定所述第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态;
基于所述第N个快照之后的指定数量的区块中最后一个区块的交易执行之后的世界状态,创建与所述指定数量的区块中最后一个区块对应的第N+1个快照,其中,N为正整数。
采用本说明书实施例提供的计算机可读存储介质可知道,在创建第N个快照之后生成指定数量的区块时,能够确定第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态,还能基于第N个快照之后的指定数量的区块中最后一个区块的交易执行之后的世界状态,创建与指定数量的区块中最后一个区块对应的第N+1个快照,其中,N为正整数。这样,联盟链中的任意一个共识节点,比如目标共识节点对应的状态机出现宕机、断网等故障状态时,便能够基于目标共识节点在故障发生之前创建的上一个快照快速恢复出故障之前的状态。
总之,以上所述仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书一个或多个实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例的保护范围之内。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
Claims (10)
1.一种联盟链中的状态备份方法,包括:
联盟链中的目标共识节点在创建第N个快照之后生成指定数量的区块时,确定所述第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态,包括:所述目标共识节点在创建第N个快照之后生成指定数量的区块时,在所述联盟链中广播检查点checkpoint消息;所述目标共识节点接收来自所述联盟链中的其它共识节点的checkpoint消息;所述目标共识节点在接收到来自所述联盟链的至少2f个其它共识节点的checkpoint消息时,确定所述第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态,其中f为所述联盟链允许的异常共识节点最大数量;
所述目标共识节点基于所述第N个快照之后的指定数量的区块中最后一个区块的交易执行之后的世界状态,创建与所述指定数量的区块中最后一个区块对应的第N+1个快照,并基于检查点机制,删除所述目标共识节点Message Log中记录的区块号为n之前的持久化数据,其中,N为正整数,n是检查点机制中保留的最小的一个区块的序列编号。
2.如权利要求1所述的方法,所述指定数量为正整数。
3.如权利要求2所述的方法,当所述指定数量为1时,所述目标共识节点基于所述第N个快照之后的指定数量的区块中最后一个区块的交易执行之后的世界状态,创建与所述指定数量的区块中最后一个区块对应的第N+1个快照之后,所述方法还包括:
如果所述目标共识节点对应的状态机在生成下一个区块之前出现故障,则所述目标节点确定所述第N+1个快照对应的区块的下一个待生成的区块中对应的交易;
所述目标共识节点基于所述第N+1个快照、以及所述第N+1个快照对应的区块的下一个待生成的区块对应的交易,进行状态恢复。
4.如权利要求3所述的方法,所述目标共识节点基于所述第N+1个快照、以及所述第N+1个快照对应的区块的下一个待生成的区块对应的交易,进行状态恢复,包括:
所述目标共识节点基于所述第N+1个快照对应的区块的下一个待生成的区块对应的交易的预写式日志WAL,获取所述第N+1个快照对应的区块的下一个待生成的区块对应的交易中已完成共识的交易和未完成共识的交易;
所述目标共识节点基于所述第N+1个快照和所述已完成共识的交易,进行状态回放;
所述目标共识节点在所述联盟链中对所述未完成共识的交易进行共识操作。
5.如权利要求2所述的方法,当所述指定数量为大于1的正整数k时,所述目标共识节点基于所述第N个快照之后的指定数量的区块中最后一个区块的交易执行之后的世界状态,创建与所述第N个快照之后的指定数量的区块中最后一个区块对应的第N+1个快照之后,所述方法还包括:
如果所述目标共识节点对应的状态机在生成所述第N+1个快照对应的下一批次指定数量的区块时出现故障,则所述目标节点确定在所述第N+1个快照对应的区块之后生成的区块、以及已完成共识且未写入区块的交易和未完成共识的交易;
所述目标共识节点基于所述第N+1个快照、所述第N+1个快照对应的区块之后生成的区块、以及已完成共识且未写入区块的交易和未完成共识的交易,进行状态恢复。
6.如权利要求5所述的方法,所述目标共识节点基于所述第N+1个快照、所述第N+1个快照对应的区块之后生成的区块、以及已完成共识且未写入区块的交易和未完成共识的交易,进行状态恢复,包括:
所述目标共识节点基于所述第N+1个快照、所述第N+1个快照对应的区块之后生成的区块、以及所述已完成共识且未写入区块的交易,进行状态回放;
所述目标共识节点在所述联盟链中对所述未完成共识的交易进行共识操作。
7.如权利要求1所述的方法,当N为1时,所述目标共识节点在创建第N个快照之后生成指定数量的区块时,确定所述第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态之前,所述方法还包括:
所述目标共识节点在生成创始区块时,确定所述创始区块中的交易执行之后的世界状态;
所述目标共识节点基于所述创始区块的交易执行之后的世界状态,创建与所述创始区块对应的第1个快照。
8.一种联盟链中的状态备份装置,包括:
状态确定模块,在创建第N个快照之后生成指定数量的区块时,确定所述第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态,包括:目标共识节点在创建第N个快照之后生成指定数量的区块时,在所述联盟链中广播检查点checkpoint消息;所述目标共识节点接收来自所述联盟链中的其它共识节点的checkpoint消息;所述目标共识节点在接收到来自所述联盟链的至少2f个其它共识节点的checkpoint消息时,确定所述第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态,其中f为所述联盟链允许的异常共识节点最大数量;
快照创建模块,基于所述第N个快照之后的指定数量的区块中最后一个区块的交易执行之后的世界状态,创建与所述指定数量的区块中最后一个区块对应的第N+1个快照,并基于检查点机制,删除所述目标共识节点Message Log中记录的区块号为n之前的持久化数据,其中,N为正整数,n是检查点机制中保留的最小的一个区块的序列编号。
9.一种电子设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
在创建第N个快照之后生成指定数量的区块时,确定所述第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态,包括:目标共识节点在创建第N个快照之后生成指定数量的区块时,在联盟链中广播检查点checkpoint消息;所述目标共识节点接收来自所述联盟链中的其它共识节点的checkpoint消息;所述目标共识节点在接收到来自所述联盟链的至少2f个其它共识节点的checkpoint消息时,确定所述第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态,其中f为所述联盟链允许的异常共识节点最大数量;
基于所述第N个快照之后的指定数量的区块中最后一个区块的交易执行之后的世界状态,创建与所述指定数量的区块中最后一个区块对应的第N+1个快照,以及,并基于检查点机制,删除所述目标共识节点Message Log中记录的区块号为n之前的持久化数据,其中,N为正整数,n是检查点机制中保留的最小的一个区块的序列编号。
10.一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:
在创建第N个快照之后生成指定数量的区块时,确定所述第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态,包括:目标共识节点在创建第N个快照之后生成指定数量的区块时,在联盟链中广播检查点checkpoint消息;所述目标共识节点接收来自所述联盟链中的其它共识节点的checkpoint消息;所述目标共识节点在接收到来自所述联盟链的至少2f个其它共识节点的checkpoint消息时,确定所述第N个快照之后的指定数量的区块中最后一个区块中的交易执行之后的世界状态,其中f为所述联盟链允许的异常共识节点最大数量;
基于所述第N个快照之后的指定数量的区块中最后一个区块的交易执行之后的世界状态,创建与所述指定数量的区块中最后一个区块对应的第N+1个快照,并基于检查点机制,删除所述目标共识节点Message Log中记录的区块号为n之前的持久化数据,其中,N为正整数,n是检查点机制中保留的最小的一个区块的序列编号。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110457183.XA CN112988469B (zh) | 2021-04-27 | 2021-04-27 | 联盟链中的状态备份方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110457183.XA CN112988469B (zh) | 2021-04-27 | 2021-04-27 | 联盟链中的状态备份方法、装置和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112988469A CN112988469A (zh) | 2021-06-18 |
CN112988469B true CN112988469B (zh) | 2022-02-18 |
Family
ID=76340315
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110457183.XA Active CN112988469B (zh) | 2021-04-27 | 2021-04-27 | 联盟链中的状态备份方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112988469B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108023896A (zh) * | 2017-12-28 | 2018-05-11 | 江苏通付盾科技有限公司 | 区块同步方法及系统 |
CN111566611A (zh) * | 2019-09-12 | 2020-08-21 | 阿里巴巴集团控股有限公司 | 日志结构存储系统 |
CN112100282A (zh) * | 2020-11-17 | 2020-12-18 | 腾讯科技(深圳)有限公司 | 联盟链的数据同步方法、装置、可读介质及电子设备 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107229540A (zh) * | 2017-06-06 | 2017-10-03 | 贵州易鲸捷信息技术有限公司 | 一种基于时间点的数据库恢复方法及系统 |
CN108241743B (zh) * | 2018-01-04 | 2020-05-12 | 杭州复杂美科技有限公司 | 一种区块链快照方法 |
CN109636388B (zh) * | 2018-12-07 | 2024-02-23 | 深圳市智税链科技有限公司 | 区块链网络中的数据处理方法、装置、介质及电子设备 |
US11137928B2 (en) * | 2019-01-29 | 2021-10-05 | Rubrik, Inc. | Preemptively breaking incremental snapshot chains |
US11526487B2 (en) * | 2019-05-17 | 2022-12-13 | International Business Machines Corporation | Database world state integrity validation |
CN110489495A (zh) * | 2019-10-21 | 2019-11-22 | 杭州趣链科技有限公司 | 一种基于修改集的区块链快照制作方法 |
CN111507720B (zh) * | 2020-04-22 | 2022-03-11 | 腾讯科技(深圳)有限公司 | 基于区块链的数据快照方法、装置及计算机可读存储介质 |
CN112015817A (zh) * | 2020-08-28 | 2020-12-01 | 支付宝(杭州)信息技术有限公司 | 区块链数据的处理方法、装置及设备 |
-
2021
- 2021-04-27 CN CN202110457183.XA patent/CN112988469B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108023896A (zh) * | 2017-12-28 | 2018-05-11 | 江苏通付盾科技有限公司 | 区块同步方法及系统 |
CN111566611A (zh) * | 2019-09-12 | 2020-08-21 | 阿里巴巴集团控股有限公司 | 日志结构存储系统 |
CN112100282A (zh) * | 2020-11-17 | 2020-12-18 | 腾讯科技(深圳)有限公司 | 联盟链的数据同步方法、装置、可读介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112988469A (zh) | 2021-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190146946A1 (en) | Method and device for archiving block data of blockchain and method and device for querying the same | |
US20150213100A1 (en) | Data synchronization method and system | |
CN111383031B (zh) | 一种区块链中的智能合约执行方法、系统和电子设备 | |
CN107040576B (zh) | 信息推送方法及装置、通讯系统 | |
CN111046024B (zh) | 一种共享存储数据库的数据处理方法、装置、设备及介质 | |
CN111897493B (zh) | 存储空间管理方法、装置及电子设备、存储介质 | |
CN110430255A (zh) | 分布式集群中服务请求的处理方法、系统以及电子设备 | |
CN110647463B (zh) | 一种恢复测试断点的方法、装置、电子设备 | |
CN110019063B (zh) | 计算节点数据容灾回放的方法、终端设备及存储介质 | |
CN112433885A (zh) | 区块链共识处理方法及装置、电子设备、存储介质 | |
CN112988470B (zh) | 联盟链中的共识方法、共识节点和系统 | |
CN107729541A (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN113836232A (zh) | 联盟链中的共识方法和系统 | |
CN112988469B (zh) | 联盟链中的状态备份方法、装置和电子设备 | |
CN115858251B (zh) | 一种基板控制单元控制方法、装置及电子设备和存储介质 | |
CN115495286A (zh) | 配置文件定时备份的测试方法、系统、设备和存储介质 | |
CN110399098B (zh) | 一种数据处理方法及电子设备 | |
CN114675995A (zh) | 数据备份方法、装置和电子设备 | |
CN112991067A (zh) | 一种区块链共识方法、装置和系统 | |
CN112202760A (zh) | 网页访问方法、装置、终端及介质 | |
CN116263725A (zh) | 一种数据库日志备份方法、装置 | |
CN115686943A (zh) | 一种基于区块链的数据备份方法及装置 | |
CN113051085B (zh) | 服务调用方法、装置、服务器及存储介质 | |
CN108255667A (zh) | 一种业务监测方法、装置以及电子设备 | |
US8086567B2 (en) | Apparatus and method for storing data |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |