CN115686943A - 一种基于区块链的数据备份方法及装置 - Google Patents
一种基于区块链的数据备份方法及装置 Download PDFInfo
- Publication number
- CN115686943A CN115686943A CN202211351860.0A CN202211351860A CN115686943A CN 115686943 A CN115686943 A CN 115686943A CN 202211351860 A CN202211351860 A CN 202211351860A CN 115686943 A CN115686943 A CN 115686943A
- Authority
- CN
- China
- Prior art keywords
- data
- block
- full
- backup
- block data
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Retry When Errors Occur (AREA)
Abstract
本说明书一个或多个实施例提供一种基于区块链的数据备份方法及装置。该方法可以包括:从区块链系统处获取全量区块数据,并将获取到的全量区块数据存储至链下存储空间,以实现针对所述区块链系统中的区块数据的全量备份;对所述全量区块数据中包含的交易进行链下重放,以根据链下重放结果备份与所述全量状态数据对应的状态数据。
Description
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种基于区块链的数据备份方法及装置。
背景技术
区块链技术(也被称之为,分布式账本技术)是一种去中心化的分布式数据库技术,具有去中心化、公开透明、不可篡改、可信任等多种特点,适用于诸多对数据可靠性具有高需求的应用场景中。
鉴于区块链技术存在上述优势,越来越多的数据,如个人信息、网络资源等被存储至区块链系统。而在区块链系统中,可以将维护的数据划分为区块数据和状态数据。其中,区块数据为区块链系统接收到的数据,多以交易的形式维护于区块链结构中,状态数据则为基于区块数据而发生变更的数据。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种基于区块链的数据备份方法及装置。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种基于区块链的数据备份方法,包括:
从区块链系统处获取全量区块数据,并将获取到的全量区块数据存储至链下存储空间,以实现针对所述区块链系统中的区块数据的全量备份;
对所述全量区块数据中包含的交易进行链下重放,以根据链下重放结果备份与所述全量区块数据对应的状态数据。
根据本说明书一个或多个实施例的第二方面,提出了一种基于区块链的数据备份装置,包括:
存储单元,从区块链系统处获取全量区块数据,并将获取到的全量区块数据存储至链下存储空间,以实现针对所述区块链系统中的区块数据的全量备份;
重放单元,对所述全量区块数据中包含的交易进行链下重放,以根据链下重放结果备份与所述全量区块数据对应的状态数据。
根据本说明书一个或多个实施例的第三方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如第一方面所述的方法。
根据本说明书一个或多个实施例的第四方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面所述方法的步骤。
附图说明
图1是一示例性实施例提供的一种基于区块链的数据备份方法的流程图。
图2是一示例性实施例提供的一种基于区块链的数据备份方法的交互图。
图3是一示例性实施例提供的一种设备的结构示意图。
图4是一示例性实施例提供的一种基于区块链的数据备份装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
鉴于区块链技术具有去中心化、不可篡改等特征,越来越多的用户选择将数据存证至区块链系统,以保证数据的安全性。区块链系统中维护的数据可以包括区块数据和状态数据,其中,区块数据多指:打包成区块的交易数据;而状态数据则多指:用于记录交易执行结果,会随交易执行不断更新的数据。
区块链节点在实际运行过程中,难免出现运行故障等问题,进而出现数据丢失、缺损等情况。为此,相关技术提出了对区块链系统中维护的数据进行备份的技术方案,以便区块链系统中的节点在出现故障时,可以基于备份的数据恢复节点中缺损的数据。
值得注意的是,为保证节点的正常运行,通常需要保证节点中恢复的区块数据与状态数据是同步的。应当理解的是,由于区块数据本质上为打包成区块的交易,而状态数据则记录交易的执行结果,换言之,状态数据基于区块数据而发生变更。在该前提下,所谓区块数据与状态数据同步指的是:保证节点中记录的状态数据恰为基于当前维护的区块数据而得到,举例而言,若节点中维护的区块数据包含交易1、2、3,那么,该节点中记录的状态数据应当为执行交易1、2、3后得到的执行结果,此时,便可以称作该节点中的区块数据和状态数据同步,或者说,保证了区块数据和状态数据的一致性;与之相反的是,若节点中记录的状态数据为执行交易1、2后得到的执行结果,则证明该节点中的状态数据和区块数据发生了错位,该情况便可称作该节点中的区块数据和状态数据未同步,或者说未保持一致性,若此时继续运行节点,将会导致后续继续处理区块数据,如执行交易4、5时,是在交易1、2的执行结果上进行状态数据的更新,必然得到不准确的状态数据,可见,在为节点进行数据恢复时,保证区块数据和状态数据的一致性,是节点正常运行的基础。
在相关技术中,为保证区块数据与状态数据的同步,通常采用冷备份的方式实现链上数据的备份,即在需要进行数据备份时,停止区块链节点的运行,以利用区块链节点在完成所有交易的执行之后才进行关机的特性,保证区块数据和状态数据的一致性,然后,再对区块链节点中维护的区块数据和状态数据均进行备份,在此基础上,当链上数据发生缺失时,只需直接基于已备份的区块数据对链上的区块数据进行恢复、基于已备份的状态数据对链上的状态数据进行恢复,即可保证数据恢复后,节点中的区块数据和状态数据保持同步。
当然,除了冷备份的方式以外,相关技术也可以仅对区块数据进行备份,那么,当链上数据发生缺失时,可以通过复制已备份的区块数据的方式恢复链上的区块数据。然而,由于该方式仅备份区块数据,导致难以对链上缺失的状态数据进行恢复。
为此本说明书提出了一种基于区块链的数据备份方法,一方面,能够在同时备份状态数据和区块数据的基础上,保证备份得到的状态数据与区块数据的一致性,另一方面,在进行链上数据备份时,无需停止节点的运行,避免了影响节点业务处理的问题。
图1为本说明书一示例性实施例示出的一种基于区块链的数据备份方法的流程图。如图1所示,该方法可以包括以下步骤:
步骤102,从区块链系统处获取全量区块数据,并将获取到的全量区块数据存储至链下存储空间,以实现针对所述区块链系统中的区块数据的全量备份。
由上述介绍可知,在一种相关技术中,由于仅备份区块数据,导致备份的数据无法用于状态数据的恢复。而在另一种相关技术中,由于采用冷备份方式进行数据备份,尽管能够保证备份的状态数据与区块数据的一致性,即通过停止节点运行的方式,保证区块数据的生成进度与状态数据的更新进度一致,进而使得备份得到的状态数据恰为基于已备份的区块数据更新得到,但该方式需要停止区块链节点的运行,严重影响了区块链业务的正常处理。
有鉴于此,本说明书提出了一种无需停止节点运行、且能够同时对区块数据和状态数据进行备份的数据备份方法。在该方法中,可以从区块链系统中获取全量区块数据,并将全量区块数据存储至链下存储空间,以实现针对区块链系统中的区块数据的全量备份,在此基础上,本说明书可以进一步对全量区块数据中包含的交易进行链下重放,以根据链下重放结果备份与全量区块数据对应的状态数据。
不难看出,本说明书不直接备份链上维护的状态数据,而是利用状态数据“用于记录交易执行的结果,随交易执行不断更新”的特性,通过链下重放已备份全量区块数据的方式,实现状态数据的备份。应当理解的是,一方面,由于本说明书通过链下重放区块数据的方式进行状态数据的备份,必然能够保证状态数据和区块数据的一致性,避免了相关技术通过冷备份方式进行数据备份时,为保证状态数据和区块数据一致性,而需要停止区块链节点运行的情况;另一方面,由于本说明书同时备份了区块数据和状态数据,使得本说明书能够快速实现状态数据的恢复,避免了相关技术在仅备份区块数据时,无法实现状态数据的快速恢复的问题。
在本说明书中,可以根据实际需求设置执行数据备份操作的条件,一旦该条件被满足,即可执行上述获取全量区块数据,并将全量区块数据存储至链下存储空间的操作。例如,可以预先设置一预设时长,那么,该条件可以为:距离上一次全量备份操作的间隔时长达到预设时长;再例如,可以预先设置一预设数据量,那么,该条件可以为:区块链系统中维护的全量区块数据,相较于上一次全量备份操作备份得到的历史全量区块数据的增量区块数据达到预设数据量;又例如,可以由用户通过主观意识下达全量备份指令,以指示执行针对全量区块数据的备份操作。当然,上述举例均是示意性的,具体在何种条件下执行针对全量区块数据的备份操作,可由本领域技术人员根据实际需求确定,本说明书对此不作限制。
步骤104,对所述全量区块数据中包含的交易进行链下重放,以根据链下重放结果备份与所述全量区块数据对应的状态数据。
在本说明书中,在将全量区块数据备份至链下存储空间之后,即可对全量区块数据中包含的交易进行链下重放,以根据链下重放结果备份与全量区块数据对应的状态数据。
在本说明书中,可以根据实际需求确定需要备份的状态数据,换言之,与全量区块数据对应的状态数据在不同场景下可以不同。
在一实施例中,由于状态数据为基于区块数据发生更新的数据,因此,本说明书可以仅备份基于全量区块数据得到的最新状态数据。
在本实施例中,由于区块数据通常以区块结构维护于区块链系统中,因此,在将全量区块数据备份至链下存储空间之后,可以按照区块的生成顺序执行全量区块数据中包含的所有交易,以根据所有交易的执行结果备份最新版本的状态数据。举例而言,在全量区块数据中包含10个交易的情况下,可以依次执行这10个交易,并备份依次执行这10个交易得到的执行结果。
在另一实施例中,除了对基于全量区块数据得到的最新版本的状态数据进行备份以外,还可以对“基于全量区块数据中的部分区块数据得到的状态数据”进行备份,在本说明书中,此类状态数据可以称作中间态状态数据,或者历史状态数据。
在本实施例的一种情况下,可以根据预设的备份条件确定是否执行记录状态数据的操作。与上一实施例相类似的,可以按照区块的生成顺序执行全量区块数据中包含的所有交易,其中,在执行所有交易的过程中,每当已执行的交易满足状态备份条件,即可基于交易执行结果记录状态数据,直至全量区块数据中包含的交易执行完成。
需要声明的是,在实际执行过程中,在不同场景下可以设置不同的状态备份条件。例如,可以在已执行的交易数量达到预设数量时,执行记录状态数据的操作;再例如,可以在预设数量的区块中的所有交易被执行完成时,执行记录状态数据的操作;又例如,可以在链下重放时长达到预设时长时,执行记录状态数据的操作。当然,上述举例仅是示意性的,具体如何设置该状态备份条件,可以由本领域技术人员根据实际情况设置,本说明书对此不作限制。
举例而言,在全量区块数据中包含交易1~10、且备份条件为“已执行的交易数量到达3”的情况下,可以在执行交易1~3后,记录交易执行结果;在执行4~6后再记录一次执行结果;在执行交易7~9后,又记录一次执行结果。
在本实施例的另一种情况下,区块链系统在基于区块数据更新状态数据时,可以为状态数据添加交易标识,该交易标识用于表征该状态数据基于哪一交易更新得到。在此基础上,本说明书在备份过程中,除了获取全量区块数据以外,还可以获取与链上已维护状态数据对应的交易标识,那么,在按照区块的生成顺序执行全量区块数据中包含的所有交易的过程中,每当完成与交易标识对应的交易的执行操作时,即可根据该交易的执行结果备份与该交易对应的状态数据。应当理解的是,通过该方式,能够在链下存储空间中备份在链上出现过的历史状态数据,进而保证链下备份的状态数据的完整性。
在本说明书中,链下重放全量区块数据中包含的所有交易的操作,既可以直接在链下存储空间中执行,也可以在额外配置的、专用于该链下重放操作的空间中执行。例如,可以预先在本说明书的执行主体中部署可信执行环境,那么,在将全量区块数据备份至链下存储空间之后,可以从链下存储空间中读取全量区块数据,并将读取到的全量区块数据输入可信执行环境,以在该可信执行环境中执行全量区块数据包含的所有交易。当然,此处仅是示意性的,具体在何处执行链下重放操作,可由本领域技术人员根据实际需求确定,本说明书对此不作限制。
在本说明书中,除了对区块数据和状态数据进行备份以外,还可以将区块链系统的配置信息也备份至链下存储空间中。例如,本说明书的执行主体可以从区块链系统处获取配置信息,并将该配置信息备份至链下存储空间中,在此基础上,即可在需要对区块链系统中的节点进行数据恢复时,将已备份的配置信息也恢复至该节点。
在本说明书中,区块链系统的配置信息可以根据实际情况确定,例如,该配置信息可以包括:区块链系统中已部署的智能合约的合约信息;再例如,该配置信息可以包括:区块链系统所采用的状态数据库的结构信息;又例如,该配置信息可以包括:区块链系统所包含节点的节点信息。当然,上述举例仅是示意性的,区块链系统中具体包含哪些配置信息,可以由本领域技术人员根据实际需求确定,本说明书对此不作限制。
在本说明书中,在将区块数据和状态数据备份至链下存储空间之后,即可在区块链系统需要进行数据恢复时,将相应的数据提供给区块链系统,以由其进行数据恢复。例如,在区块链系统中的任一状态数据缺失的情况下,本说明书即可确定出与该任一状态数据对应的目标区块数据,并从链下存储空间中获取与该目标区块数据对应的目标状态数据,在此基础上,即可将目标状态数据提供至所述区块链系统,以由区块链系统根据目标状态数据对缺失的任一状态数据进行恢复。
在实际应用中,区块链系统可以在上述任一状态数据缺失的情况下,调用并触发预先部署的数据恢复合约,以向本说明书的执行主体发起数据获取请求。其中,区块链系统可以在数据获取请求中添加用于指示与上述任一状态数据对应的目标区块数据的区块标识,以使本说明书的执行主体可以基于数据获取请求中包含的区块标识,从已备份的全量区块数据中确定出与上述任一状态数据对应的目标区块数据,以获取与该目标区块数据对应的目标状态数据,并将该目标状态数据提供给区块链系统。在此基础上,区块链系统即可基于获取到的目标状态数据对缺失的状态数据进行恢复。
在本说明书中,也可以在区块链节点发生故障时,将已备份的全量区块数据和与全量区块数据对应的状态数据全部提供至发生故障的区块链节点,以由区块链节点在排除故障后,恢复全量区块数据及其状态数据。
需要声明的是,本说明书中的区块链系统既可以基于区块链技术的传统架构部署,即区块链系统中的所有节点均通过在相应实体设备上部署区块链代码而形成,大多数情况下,每个节点均对应于一个实体设备;本说明书的区块链系统也可以基于区块链技术中的BaaS(Blockchain as a Service)架构部署,即区块链系统中的所有节点均通过云服务在云端实现的虚拟机上部署区块链代码而形成,区块链节点无需一一对应于相应的实体设备。
还需声明的是,本说明书的技术方案的执行主体可以为任一类型的电子设备,例如,该电子设备可以为智能手机、平板电脑、折叠屏手机等移动终端,也可以为智能电视、PC(个人计算机,Personal Computer)等固定终端。应当理解的是,只需具备一定计算能力,以用于交易重放的设备均可作为本说明书的执行主体,具体将哪一种类型的电子设备作为本说明书技术方案的执行主体,可以由本领域技术人员根据实际需求确定,本说明书对此不作限制。
除此之外,在不同情况下,本说明书可以将不同的存储空间作为用于数据备份的链下存储空间。例如,可以将本说明书执行主体所配备的存储空间作为用于数据备份的链下存储空间,也可以将区别于该执行主体的独立存储空间作为用于数据备份的链下存储空间。应当理解的是,任何未被作为链上存储空间的存储空间均可作为本说明书中的链下存储空间,甚至区块链节点的本地存储空间也可以作为该链下存储空间。具体将何种存储空间作为用于数据备份的链下存储空间,可由本领域技术人员根据实际需求确定,本说明书对此不作限制。
由上述技术方案可知,本说明书在将区块链系统中维护的全量区块数据备份至链下存储空间的基础上,进一步对全量区块数据中包含的交易进行了链下重放,进而根据链下重放结果在链下存储空间中备份与全量区块数据对应的状态数据。
应当理解的是,由于本说明书通过链下重放全量区块数据的方式,对与全量区块数据对应的状态数据进行备份,必然能够保证备份的状态数据与区块数据一致性,使得在区块链系统需要恢复数据时,可以直接复制备份的状态数据和区块数据,实现了区块链数据的快速恢复,避免了相关技术仅备份区块数据,而无法快速恢复状态数据的问题。
除此之外,由于本说明书通过链下数据重放的方式,保证状态数据和区块数据的一致性,因此,无需如相关技术,通过冷备份的方式保证区块数据和状态数据的一致性。可见,本说明书的技术方案可以在节点保持运行的前提下,实现区块数据和状态数据的备份,且保证备份的区块数据和状态数据的一致性。
下面,以将区块链系统中维护的链上数据备份至链下服务器为例,对本说明书的技术方案进行介绍。
图2为本说明书一示例性实施例示出的一种基于区块链的数据备份方法的交互图。如图2所示,该方法可以包括以下步骤:
步骤201,链下服务器监测距离上一次数据备份操作的间隔时长。
在本实施例中,可以预先部署专用于对区块链系统中维护的链上数据进行备份的链下服务器。在此基础上,链下服务器即可在需要进行链上数据备份时,向区块链系统发起数据备份请求,以获取需要备份的链上数据。
在本实施例中,以按照预设时间间隔进行链上数据备份为例进行介绍。链下服务器可以在进行一次数据备份操作后,开始计时,以监测距离上一次数据备份操作的间隔时长,其中,每当间隔时长达到预设时长,可以向区块链系统发起数据备份请求,以指示区块链系统读取维护的全量区块数据,并将读取到的全量区块数据返回至链下服务器。
步骤202,链下服务器在间隔时长达到预设时长的情况下,向区块链系统发起数据备份请求。
步骤203,区块链系统读取维护的全量区块数据。
步骤204,区块链系统将读取到的全量区块数据返回至链下服务器。
步骤205,链下服务器将全量区块数据存储至本地存储空间。
在本实施例中,链下服务器在获取到区块链系统返回的全量区块数据的情况下,即可执行全量区块数据中包含的所有交易,以根据交易执行结果得到与全量区块数据对应的状态数据。
步骤206,链下服务器执行全量区块数据中包含的所有交易。
举例而言,若获取到的全量区块数据包含区块1、2、3,而区块1包含交易a、b、c,区块2包含交易d、e、f,区块3包含交易g、h。那么,即可按照区块1、2、3的生成顺序,依次执行交易a~h,以不断根据各个交易的执行结果更新状态数据,并在完成交易h的执行操作之后,将根据交易h的执行结果而更新得到的状态数据作为最终备份的状态数据。
步骤207,链下服务器根据所有交易的执行结果备份与全量区块数据对应的最新版本状态数据。
值得注意的是,在本实施例中,状态数据可以指区块链领域中的世界状态,即该状态数据会随全量区块数据中的每一交易的执行而发生变更,在该情况下,唯有在链下重放操作完成全量区块数据中的最后一个交易的执行操作时,才能够保证备份得到的状态数据为最新版本的状态数据,即保持区块数据与状态数据的同步。
还需注意的是,在实际执行备份操作时,链下服务器可以从区块链系统的单个节点处获取全量区块数据,此时,可以将图2所示的区块链系统视为区块链系统中的任一节点,而非整个区块链系统。当然,除了从单个节点获取数据以外,链下服务器也可以从区块链系统的多个节点处分别获取各个节点所维护的区块数据,并整合得整个区块链系统维护的全量区块数据。
由上述技术方案可知,通过本实施例的技术方案,可以在链下服务器中备份区块链系统的全量区块数据,以及与该全量区块数据对应的状态数据。在此基础上,当区块链系统中的任一节点发生故障而造成数据丢失时,一旦该节点故障排除,该节点即可从该链下服务器中直接获取已备份的全量区块数据和与该全量区块数据对应的状态数据,以作为节点中维护的链上数据,使得该节点可以基于恢复得到的区块数据和状态数据继续进行业务处理,避免了相关技术仅备份区块数据,导致节点恢复后,节点中没有与区块数据对应的状态数据而无法直接运行的问题。
图3是一示例性实施例提供的一种设备的示意结构图。请参考图3,在硬件层面,该设备包括处理器302、内部总线304、网络接口306、内存308以及非易失性存储器310,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器302从非易失性存储器310中读取对应的计算机程序到内存308中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参考图4,基于区块链的数据备份装置可以应用于如图3所示的设备中,以实现本说明书的技术方案。其中,该基于区块链的数据备份装置可以包括:
存储单元401,从区块链系统处获取全量区块数据,并将获取到的全量区块数据存储至链下存储空间,以实现针对所述区块链系统中的区块数据的全量备份;
重放单元402,对所述全量区块数据中包含的交易进行链下重放,以根据链下重放结果备份与所述全量区块数据对应的状态数据。
可选的,将全量区块数据备份至所述链下存储空间的操作在下述至少一种情况下执行:
距离上一次全量备份操作的间隔时长达到预设时长;
所述区块链系统中维护的全量区块数据,相较于上一次全量备份操作备份得到的历史全量区块数据的增量区块数据达到预设数据量;
接收到用户下达的全量备份指令。
可选的,重放单元402被进一步用于:
按照区块的生成顺序执行所述全量区块数据中包含的所有交易;
在执行所述所有交易的过程中,每当已执行的交易满足状态备份条件,基于交易执行结果记录状态数据,直至所述全量区块数据中包含的交易执行完成。
可选的,所述状态备份条件包括下述至少之一:
已执行的交易数量达到预设数量;
预设数量的区块中的所有交易被执行完成;
链下重放时长达到预设时长。
可选的,重放单元402被进一步用于:
按照区块的生成顺序执行所述全量区块数据中包含的所有交易,以根据所有交易的执行结果备份最新版本的状态数据。
可选的,重放单元402被进一步用于:
从所述区块链系统中获取与链上已维护状态数据对应的交易标识;
按照区块的生成顺序执行所述全量区块数据中包含的所有交易,其中,每当完成与所述交易标识对应的交易的执行操作,根据该交易的执行结果备份与该交易对应的状态数据。
可选的,还包括:
恢复单元403,在所述区块链系统中的任一状态数据缺失的情况下,确定与所述任一状态数据对应的目标区块数据,并从所述链下存储空间中获取与该目标区块数据对应的目标状态数据;以及,将所述目标状态数据提供至所述区块链系统,以由所述区块链系统根据所述目标状态数据对所述任一状态数据进行恢复。
可选的,恢复单元403被进一步用于:
接收所述区块链系统在所述任一状态数据缺失的情况下触发数据恢复合约而发起的数据获取请求;
基于所述数据获取请求中包含的区块标识,确定与所述任一状态数据对应的目标区块数据,以获取与该目标区块数据对应的目标状态数据。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
Claims (11)
1.一种基于区块链的数据备份方法,包括:
从区块链系统处获取全量区块数据,并将获取到的全量区块数据存储至链下存储空间,以实现针对所述区块链系统中的区块数据的全量备份;
对所述全量区块数据中包含的交易进行链下重放,以根据链下重放结果备份与所述全量区块数据对应的状态数据。
2.根据权利要求1所述的方法,将全量区块数据备份至所述链下存储空间的操作在下述至少一种情况下执行:
距离上一次全量备份操作的间隔时长达到预设时长;
所述区块链系统中维护的全量区块数据,相较于上一次全量备份操作备份得到的历史全量区块数据的增量区块数据达到预设数据量;
接收到用户下达的全量备份指令。
3.根据权利要求1所述的方法,所述对所述全量区块数据中包含的交易进行链下重放,以根据链下重放结果备份与所述全量区块数据对应的状态数据,包括:
按照区块的生成顺序执行所述全量区块数据中包含的所有交易;
在执行所述所有交易的过程中,每当已执行的交易满足状态备份条件,基于交易执行结果记录状态数据,直至所述全量区块数据中包含的交易执行完成。
4.根据权利要求3所述的方法,所述状态备份条件包括下述至少之一:
已执行的交易数量达到预设数量;
预设数量的区块中的所有交易被执行完成;
链下重放时长达到预设时长。
5.根据权利要求1所述的方法,所述对所述全量区块数据中包含的交易进行链下重放,以根据链下重放结果备份与所述全量区块数据对应的状态数据,包括:
按照区块的生成顺序执行所述全量区块数据中包含的所有交易,以根据所有交易的执行结果备份最新版本的状态数据。
6.根据权利要求1所述的方法,所述对所述全量区块数据中包含的交易进行链下重放,以根据链下重放结果备份与所述全量区块数据对应的状态数据,包括:
从所述区块链系统中获取与链上已维护状态数据对应的交易标识;
按照区块的生成顺序执行所述全量区块数据中包含的所有交易,其中,每当完成与所述交易标识对应的交易的执行操作,根据该交易的执行结果备份与该交易对应的状态数据。
7.根据权利要求1所述的方法,还包括:
在所述区块链系统中的任一状态数据缺失的情况下,确定与所述任一状态数据对应的目标区块数据,并从所述链下存储空间中获取与该目标区块数据对应的目标状态数据;
将所述目标状态数据提供至所述区块链系统,以由所述区块链系统根据所述目标状态数据对所述任一状态数据进行恢复。
8.根据权利要求7所述的方法,所述在所述区块链系统中的任一状态数据缺失的情况下,确定与所述任一状态数据对应的目标区块数据,并从所述链下存储空间中获取与该目标区块数据对应的目标状态数据,包括:
接收所述区块链系统在所述任一状态数据缺失的情况下触发数据恢复合约而发起的数据获取请求;
基于所述数据获取请求中包含的区块标识,确定与所述任一状态数据对应的目标区块数据,以获取与该目标区块数据对应的目标状态数据。
9.一种基于区块链的数据备份装置,包括:
存储单元,从区块链系统处获取全量区块数据,并将获取到的全量区块数据存储至链下存储空间,以实现针对所述区块链系统中的区块数据的全量备份;
重放单元,对所述全量区块数据中包含的交易进行链下重放,以根据链下重放结果备份与所述全量区块数据对应的状态数据。
10.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-8中任一项所述的方法。
11.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1-8中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211351860.0A CN115686943A (zh) | 2022-10-31 | 2022-10-31 | 一种基于区块链的数据备份方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211351860.0A CN115686943A (zh) | 2022-10-31 | 2022-10-31 | 一种基于区块链的数据备份方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115686943A true CN115686943A (zh) | 2023-02-03 |
Family
ID=85048900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211351860.0A Pending CN115686943A (zh) | 2022-10-31 | 2022-10-31 | 一种基于区块链的数据备份方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115686943A (zh) |
-
2022
- 2022-10-31 CN CN202211351860.0A patent/CN115686943A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106776130B (zh) | 一种日志恢复方法、存储装置和存储节点 | |
CN107426265A (zh) | 数据一致性同步的方法及设备 | |
US20150213100A1 (en) | Data synchronization method and system | |
CN107357688B (zh) | 分布式系统及其故障恢复方法和装置 | |
JP2006221628A (ja) | メタデータの複製および復元のための方法、システム、および製品 | |
CN109144790A (zh) | MySQL数据库的合成备份方法和装置 | |
CN111506253B (zh) | 一种分布式存储系统及其存储方法 | |
CN110895545B (zh) | 共享数据同步方法及装置 | |
CN113791934A (zh) | 数据的恢复方法、计算设备及存储介质 | |
US7600151B2 (en) | RAID capacity expansion interruption recovery handling method and system | |
CN115686943A (zh) | 一种基于区块链的数据备份方法及装置 | |
CN115756953A (zh) | 一种基于区块链的数据备份方法及装置 | |
CN115421856A (zh) | 一种数据恢复方法及装置 | |
CN112000521B (zh) | 分布式数据库系统的全量备份方法、装置及计算机可读存储介质 | |
CN115480880A (zh) | 一种持续数据保护方法、系统及电子设备 | |
CN115495286A (zh) | 配置文件定时备份的测试方法、系统、设备和存储介质 | |
CN115794483A (zh) | 一种基于区块链的数据备份方法及装置 | |
CN110018986B (zh) | 异常快照识别方法及装置 | |
CN111104256A (zh) | 一种数据读取方法、装置、设备及存储介质 | |
CN112988469B (zh) | 联盟链中的状态备份方法、装置和电子设备 | |
CN111444040B (zh) | 一种元数据备份方法及装置 | |
CN110351386B (zh) | 一种不同副本间的增量同步方法及装置 | |
CN112988460B (zh) | 一种虚拟机的数据备份方法及装置 | |
CN115168444A (zh) | 基于区块链的状态数据的重建方法、装置和存储介质 | |
CN111198783B (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 |