数据备份方法、装置、存储介质及计算设备与流程

文档序号:16783447发布日期:2019-02-01 19:17阅读:214来源:国知局
数据备份方法、装置、存储介质及计算设备与流程

本申请涉及计算机技术领域,特别涉及数据备份方法、装置、存储介质及计算设备。



背景技术:

所谓区块链技术,简称bt(blockchaintechnology),也被称之为分布式账本技术,是一种互联网数据库技术,其特点是去中心化、公开透明,让每个人均可参与数据库记录。区块链技术最初是实现比特币交易的基础技术,目前开始应用于金融等各领域。由于区块链中的每一个节点设备都会存储整个区块链上的全部数据,导致会占用大量存储空间,影响了区块链系统的性能。



技术实现要素:

本申请实施例提出了以下技术方案,以节省区块链节点的存储空间,改善区块链系统性能。

本申请实例提出了一种数据备份方法,包括:

在第一条件满足时,从第一区块链中的第一区块中查询得到未被使用的交易输出信息,所述第一区块包括所述第一区块链中的所有区块;根据查询得到的所述未被使用的交易输出信息生成交易信息,所述交易信息用于描述不改变所述未被使用的交易输出信息所属账户地址的交易操作;将生成的所述交易信息记录在第二区块中并发布所述第二区块,将经过共识的所述第二区块记录在第二区块链上;及将所述第一区块链备份到自身连接的存储系统中,删除所述第一区块链。

在一些实例中,所述第一条件包括:达到设定时间间隔。

在一些实例中,所述第一条件包括:所述第一区块链的区块高度符合预设值。

在一些实例中,所述第一条件包括:剩余存储空间低于第一阈值。

在一些实例中,所述第一条件包括:收到设定的操作指令。

在一些实例中,所述第二区块的区块高度与所述第一区块链中最后一个区块的区块高度是连续的。

在一些实例中,所述第二区块包含的父区块的区块头特征值为所述第一区块链中最后一个区块的区块头特征值。

在一些实例中,上述方法进一步包括:当将所述第一区块链备份到自身连接的存储系统时,在数据备份表中记录所述第一区块链中各个区块的标识信息及其在所述存储系统中的存储地址;在删除所述第一区块链之后,当要访问所述第一区块链中的任一区块时,从所述数据备份表中查询得到所述该区块的标识信息对应的存储地址,根据所述存储地址访问所述存储系统中的该区块。

在一些实例中,上述方法进一步包括:在删除所述第一区块链之后,当要访问所述第一区块链中任一区块的交易信息时,从所述数据备份表中查询得到该区块的标识信息对应的存储地址,根据所述存储地址访问所述存储系统中的该区块,并根据所述交易信息的标识信息从该区块中查询得到所述交易信息的内容。

本申请实例还提出一种数据备份装置,包括:查询模块,在第一条件满足时,从第一区块链中的第一区块中查询得到未被使用的交易输出信息,所述第一区块包括所述第一区块链中的所有区块;交易信息模块,根据查询得到的所述未被使用的交易输出信息生成交易信息,所述交易信息用于描述不改变所述未被使用的交易输出信息所属账户地址的交易操作;区块发布模块,将生成的所述交易信息记录在第二区块中并发布所述第二区块,将经过共识的所述第二区块记录在第二区块链上;及备份模块,将所述第一区块链备份到自身连接的存储系统中,删除所述第一区块链。

在一些实例中,所述备份模块当将所述第一区块链备份到自身连接的存储系统时,在数据备份表中记录所述第一区块链中各区块的标识信息及其在所述存储系统中的存储地址;所述装置进一步包括:数据访问模块,在将所述第一区块链删除之后,当要访问所述第一区块链中任一区块时,从所述数据备份表中查询得到该区块的标识信息对应的存储地址,根据所述存储地址访问所述存储系统中的该区块。

在一些实例中,所述数据访问模块,在删除所述第一区块链之后,当要访问所述第一区块链中任一区块的交易信息时,从所述数据备份表中查询得到该区块的标识信息对应的存储地址,根据所述存储地址访问所述存储系统中的该区块,并根据所述交易信息的标识信息从该区块中查询得到所述交易信息的内容。

本申请实例还提出了一种存储介质,存储有机器可读指令,可以使一个或多个处理器执行上述方法。

本申请实例还提出了一种计算设备,包括一个或多个存储器和一个或多个处理器,所述存储器存储有机器可读指令,可以使所述处理器执行上述方法。

采用本申请实施例提供的上述方案,能够节省区块链节点的存储空间,显著提升存储资源的利用率,将有限的存储空间充分用于保存更有价值的交易信息,从而提升了区块链系统性能。

附图说明

为了更清楚的说明本申请中的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。其中,

图1为本申请实例涉及的系统构架图;

图2a为区块的数据结构图;

图2b为本申请实例中区块链的局部示意图;

图3为本申请实例的方法流程图;

图4a为本申请实例中生成的交易信息实例图;

图4b为本申请实例中创建区块的示意图;

图4c为本申请实例中区块记录的交易信息示意图;

图5为本申请实例中的装置结构示意图;及

图6为本申请实例中的计算设备组成结构示意图。

具体实施方式

为了描述上的简洁和直观,下文通过描述若干代表性的实施例来对本发明的方案进行阐述。但本文并未示出所有实施方式。实施例中大量的细节仅用于帮助理解本发明的方案,本发明的技术方案实现时可以不局限于这些细节。为了避免不必要地模糊了本发明的方案,一些实施方式没有进行细致地描述,而是仅给出了框架。下文中,“包括”是指“包括但不限于”,“根据……”是指“至少根据……,但不限于仅根据……”。说明书和权利要求书中的“包括”是指某种程度上至少包括,应当解释为除了包括之后提到的特征外,其它特征也可以存在。

本申请提出了一种数据备份方法,该方法可应用于图1所示的区块链系统100中。如图1所示,该系统100至少包括:应用层101、网络层103和数据层104,还可包括扩展层102等。应用层101面向用户提供应用客户端11和12(比如用于数字资产交易的钱包客户端等)和交易平台13。其中,应用客户端11和12运行在终端设备上,终端设备可以包括:pc机、手机、平板电脑、掌上电脑、超极本、可穿戴设备等。用户通过操作应用客户端11和12提供的用户界面(ui)可以登录交易平台13完成各种交易操作,比如:数字资产交易、共享账本查阅等等;交易平台13可包括一台服务器或者一个服务器集群,也可以包括分布式系统。扩展层102提供了一些扩展应用业务功能,包括智能合约等侧链应用,也可包括诸如文档、图片、视频等用户数据文件的存储和分享功能。用户通过操作应用客户端11和12提供的ui可以通过扩展层102实现智能合约签署、数据文件存储和分享等功能。网络层103包括分布在各个地区的多个区块链节点14,这些节点14构成了区块链网络,每个节点14可以是一个具有点对点通信功能的计算设备,如台式电脑、笔记本电脑、平板电脑等,这些区块链节点14构成了一个点对点(p2p)网络,每个节点14都存储了一条区块链15的完整数据。其中,网络层103用于实现各节点14之间的通信,封装了节点14之间的p2p组网机制、数据传播机制、验证机制等等。区块链网络本质上是一个p2p网络,每一个节点14既接收信息也产生信息,节点14之间维护一个共同的区块链来保持通信。在一个区块链网络中,每一个节点14都可以创造新的区块,在新区块被创造后会以广播的形式通知其他节点,其他节点会对这个区块进行验证,当节点验证通过后,这个新区块就可以被添加到区块链上了。数据层104则封装了区块链15的数据结构。如图1所示,一条区块链15由多个区块(区块0~区块n)链接而成。首先建立的区块0是“创世区块”,之后在一定规则下创建的数据结构相同的区块通过一个链式的结构依次相连组成一条主链条。随着运行时间越来越长,新的区块通过验证后不断被添加到主链上,主链也会不断地延长。

图1示出了区块链系统100中的一部分,在实际应用中,网络层103之上还有共识层、激励层等等。其中,共识层封装了共识机制,以便让高度分散的节点14在去中心化的系统中高效地针对区块数据的有效性达成共识,也就是约定所有节点14之间怎么达成共识,去认定一个交易记录集的有效性,这既是认定的手段,也是防止篡改的手段。比较常用的共识机制主要有:工作量证明(proofofwork)、权益证明(proofofstake)、股份授权证明(delegatedproofofstake)。

在区块链系统中,数据会以文件的形式被永久记录,这些文件可被称为区块(block)。一个区块可包含一段时间内发生的交易记录集,并且该交易记录集未被先前的区块记录,每个区块记录了它被创建之前发生的事件。所创建的区块依次链接,通常新的区块会加载区块链的尾部并链接到上一个区块。其中,交易(transaction)代表用户在交易系统中的一次操作,其导致了账本状态的一次改变,会在账本中添加一条记录;区块则记录一段时间内发生的交易和状态结果,是对当前账本状态的一次共识;链(chain)由一个个区块按照创建时间顺序串联而成,是整个账本状态变化的日志记录。

区块是一种记录交易的数据结构。每个区块由区块头和区块体组成,区块体负责记录前一段时间内的交易信息,区块头则记录了用于链接父区块、挖矿竞争、交易数据验证的信息。图2a示出了区块200a的数据结构。如图2a所示,区块200a包括区块头21和区块体22。区块体22记录了交易数量以及一段时间内发生的多笔交易的信息,如交易1、交易2、……、交易m的交易信息。区块头21记录了以下信息段:

1、版本号,用于标识软件及协议的相关版本信息;

2、父区块哈希值,是区块200a的父区块的区块头哈希值,通过这个值各个区块才能首尾相连组成区块链,并且这个值对区块链的安全性起到了至关重要的作用;

3、merkle根,这个值是由区块体22中所有交易信息的哈希值再逐级两两哈希计算出来的一个数值,主要用于验证一笔交易是否在这个区块中存在;

4、时间戳,记录该区块200a创建的时间,可精确到秒;

5、难度值,是该区块200a相关数学题的难度目标值;

6、随机数(nonce),记录解密该区块200a相关数学题的答案的值。

在区块200a加入区块链后,所有矿工(即各个区块链节点14)就开始下一个区块的生成工作,包括:

1、把在本地内存中的交易信息记录到区块体中;

2、在区块体中生成此区块中所有交易信息的merkle树,把merkle树根的值(即merkle根)保存在区块头中;

3、把最近加入区块链的区块200a的区块头的数据通过sha256算法生成一个哈希值填入到当前区块的父区块哈希值中;

4、把当前时间保存在时间戳字段中;

5、难度值字段会根据之前一段时间区块的平均生成时间进行调整以应对整个网络不断变化的整体计算总量,如果计算总量增长了,则系统会调高数学题的难度值,使得预期完成下一个区块的时间依然在一定时间内。

对于一个区块而言,区块头哈希值可以唯标识一个区块,并且任何节点14通过对区块头进行哈希计算都可以独立地获取该区块头哈希值。而区块头哈希值实际上并不包含在本区块的数据结构里,区块头哈希值是当该区块被某个节点14从区块链网络中接收时由该节点14计算出来的。区块头哈希值可能会作为区块元数据的一部分被存储在一个独立的数据库表中,以便于索引和更快地从磁盘检索区块。另外,区块在区块链中还具有区块高度(blockheight),可用来标识区块在区块链中的位置。第一个区块(即创世块)的区块高度为0,引用创世块的区块的高度为1,以此类推,每一个随后被存储在区块链中的区块都比前一区块“高”出一个位置,区块高度值等于前一区块的区块高度值加一。和区块头哈希值不同,区块高度并不是区块的唯一标识,两个或两个以上的区块可能有相同的区块高度,在区块链里争夺同一位置。区块高度也不是区块数据结构的一部分,它并不被存储在区块里。当节点14接收来自区块链网络的区块时,会动态地识别该区块在区块链里的位置(即区块高度)。区块高度也可作为元数据存储在一个索引数据库表中以便快速检索。

图2b示出了本申请实例中区块链的局部示意图。图2b中示出了三个区块23、24和25,各个区块的区块高度和区块头哈希值并不记录在区块内部,但是决定着区块之间的链接关系。在节点14本地数据库中的区块链元数据表中可以保存着各个区块的区块高度和区块头哈希值。

然而,随着区块链中区块的增加,单个节点14的存储压力也在增加,对运行节点14的单机设备也提出了很高的要求。

在本申请的实例中,提出了一种数据备份方法,该方法可应用于节点14中,可以自动的将一些区块备份出来,减轻节点14的存储压力。图3示出了本申请实例的方法流程图。如图3所示,该方法300始于步骤s301。

在步骤s301中,在设定的第一条件满足时,节点14从第一区块链中的第一区块中查询得到未被使用的交易输出信息。这里,所述第一区块包括所述第一区块链中的所有区块,也即是,分别从第一区块链中的各个区块中查询得到未被使用的交易输出信息,进而得到所有的未被使用的交易输出信息。

上述第一条件相当于是本申请实施例提出的数据备份流程的启动条件。在一些实例中,所述第一条件可以包括:达到设定时间间隔、所述第一区块链的区块高度符合预设值、剩余存储空间低于阈值、收到设定的操作指令等等中的至少一者。

当第一条件包括达到设定时间间隔时,节点14可以每隔一定的时间间隔(比如:一天、一个月等等)就可以启动一次数据备份流程,或者在多个设定的时间点(比如:自第一区块链的创始时间起的一个月、三个月、六个月等等)分别启动一次数据备份流程。本申请对于时间间隔的具体设置方法不做限定。

当第一条件包括所述第一区块链的区块高度符合预设值时,节点14可以在第一区块链的区块高度符合预设值时启动一次数据备份流程。本申请对于预设值的具体设置方法不做限定。

当第一条件包括剩余存储空间低于阈值时,节点14可以在剩余存储空间较少的情况下启动数据备份流程。当第一条件包括收到设定的操作指令时,节点14可以响应于外部输入的操作指令而启动数据备份流程,比如:用户需要做一些数据清理或备份时可以给节点14输入操作指令,以使节点14启动数据备份流程。

上述各种第一条件也可以根据实现需要任意组合。

在一些实例中,节点14随着第一区块链中区块的增加在本地会维护账户数据,此账户数据记录了当前各个区块中记录的各个交易信息中未被使用的交易输出信息,比如:比特币交易中的未花费的交易输出(utxo,unspenttransactionoutput)表。每个utxo都有一个面值和所有者地址(本质上是密码学公钥的地址所定义)。一笔交易包括一个或多个输入和一个或多个输出。每个输入包含一个对现有utxo的引用和由与所有者地址相对应的私钥创建的密码学签名。每个输出包含一个新的utxo。节点14可以根据本地维护的账户数据查询各个区块中记录的未被使用的交易输出信息。

具体的,账户数据中的每一条未被使用的交易输出信息包括:交易编号、区块高度和区块头哈希值等信息,因此,根据这些信息可以从区块中查询到各条未被使用的交易输出信息,一条未被使用的交易输出信息可包含字段:未被使用的资产数额、所有者地址等。

在步骤s302中,节点14根据查询到的未被使用的交易输出信息生成一条或多条交易信息,所生成的交易信息用于描述不改变上述未被使用的交易输出信息所属账户地址的交易操作,可以说是一种自己向自己转账的交易操作(也称为交易滚动操作或找零操作)。其中,一条交易信息包括至少一条交易输入信息和至少一条交易输出信息,所述至少一条交易输入信息分别引用至少一条查询到的未被使用的交易输出信息,每一个交易输入信息对应的交易输出信息包括其引用的上述查询到的未被使用的交易输出信息,以代表自己向自己转账的交易操作。这里,节点14可以根据多条未被使用的交易输出信息生成一条交易信息,根据实现需要还可生成一条以上的交易信息。比如:查询到五条未被使用的交易信息,那么可以生成一条交易信息,里边包含五个交易操作记录(五组交易输入信息和交易输出信息),这五个交易操作记录分别描述针对这五条未被使用的交易信息的交易滚动操作。也可以生成其它数量的交易信息,每条交易信息包含一个或若干个交易操作记录,这些交易信息总共包含五个交易操作记录,可描述针对这五条未被使用的交易信息的交易滚动操作。

如图4a所示的例子中,查询到的未被使用的交易输出信息包括utxo1~utxo5,可生成三条交易信息tx1~tx3。其中,tx1包括分别引用utxo1和utxo2的两个交易输入信息input11和input12,input11和input12分别对应交易输出信息output11和output12,output11包括utxo1,output12包括utxo2,也即是在数量与地址上,output11与utxo1相同,output12与utxo2相同。tx2包括引用utxo3的交易输入信息input21,input21对应交易输出信息output21,output21包括utxo3,output21与utxo3在数量与地址上相同。tx3包括分别引用utxo4和utxo5的两个交易输入信息input31和input32,input31和input32分别对应交易输出信息output31和output32,在数量与地址上,output31与utxo4相同,output32与utxo5相同。这样就把utxo1~utxo5分别代表的未被使用的资产数额转账给了所有者自己,也就是说,这种交易操作并不会改变资产的所有权,不会给账户数据带来实质性改变。

在步骤s303中,节点14将步骤s302中生成的一条或多条交易信息记录在新的区块(即第二区块)中并发布新的区块。新的区块在经过共识之后会被记录在第二区块链上。具体的共识处理机制本文不做详述。此外,节点14将步骤s301中查询过的一个或多个区块(即第一区块)所在的第一区块链备份到节点14连接的存储系统中(比如硬盘、磁盘、集中或分布式数据库系统等)。

在步骤s303中,节点14在对第一区块中未被使用的交易输出信息做滚动交易操作之后,会删除之前的第一区块链,之后会维护一条新的区块链(第二区块链),而这两条区块链之间具有一定的关联性。

在一些实例中,上述第二区块的区块高度与第一区块链中最后一个区块的区块高度是连续的。比如:第一区块链有十个区块(区块高度分别为1~10),当从这十个区块中查询得到未被使用的交易输出信息并做滚动交易操作之后,可以生成高度为11的新区块(即第二区块),那么第二区块链的初始区块的高度为11,与第一区块链中最后一个区块的区块高度10是具有连续性的。

在一些实例中,上述第二区块包含的父区块的区块头特征值为所述第一区块链中最后一个区块的区块头特征值。比如:第一区块链有十个区块,当从这十个区块中查询得到未被使用的交易输出信息并做滚动交易操作之后,可以生成新区块(即第二区块),那么第二区块的父区块就为第一区块链中最后一个区块,第二区块的区块头中记录的父区块的区块头特征值(比如区块头哈希值)就是第一区块链中最后一个区块的区块头特征值。

在一些实例中,节点14在将第一区块链备份到存储系统中时,在本地的备份数据表中记录已备份的第一区块链中各区块的标识信息(区块高度、区块头哈希值等)和已备份的第一区块链中各区块在上述存储系统中的存储地址。这样,当节点14需要访问已备份的第一区块链中任一区块时,可以通过备份数据表中的信息从存储系统中查询到目标区块,也可以将目标区块恢复到节点14中。

在一些实例中,在将第一区块链删除之后,当要访问第一区块链中任一区块的交易信息时,节点14可从数据备份表中查询得到该区块的标识信息对应的存储地址,根据所述存储地址访问所述存储系统中的该区块,并根据所述交易信息的标识信息(交易编号、区块高度、区块头哈希值等)从该区块中查询得到所述交易信息的内容(资产余额、账户地址等)。

在上述实例中,节点14将上述第一区块链中各个区块备份起来,这些区块被备份到节点14连接的硬盘、服务器或服务器集群中,而这些被备份的区块包含的交易信息很少会被用到,这些区块很少会被访问,访问频率很低,可称为是冷数据,也可以说,节点14将这些区块冷备起来。

图4b示出了本申请一实例中的区块示意图。图4b中,节点14查询旧区块链中的区块1和2得到包含未被使用的交易输出信息tx14和tx25,对tx14和tx25分别做交易滚动操作以生成一条交易信息txn1。该txn1中包含两条交易记录,这两条交易记录分别包含tx14和tx25中的交易输出信息。之后,节点14将创建新的区块链,将txn1包含在新区块链中的新区块n中,将旧区块链冷备到存储系统中,节点14删除包含区块1和2的旧区块链。

图4c示出了区块体中记录的若干条交易信息实例。在图4c中,交易号为“#1001”的交易信息中,交易输出41记录了账户“a”的账户余额是12.5,交易号为“#2001”的交易信息中,交易输出42记录了账户“a”的账户余额是10,账户“b”的账户余额是2.5,交易号为“#3001”的交易信息中,交易输出43记录了账户“a”的账户余额是7.5和2.5,账户“d”的账户余额是2.5,交易号为“#4001”的交易信息中,交易输出44记录了账户“c”的账户余额是2.5。可以看出,交易输出41和42中的交易输出信息均被使用完,交易输出43中第(1)和(3)项交易输出信息431和433未被使用,交易输出44中第(1)项交易输出信息441未被使用,那么根据交易输出信息431和433及441可以生成交易号为“#5001”的交易信息,其中的交易输出45包含这三个未被使用的交易输出信息431和433及441。这样,交易号为“#1001”、“#2001”、“#3001”、“#4001”的交易信息中的交易输出信息均被使用过,后续交易操作不会再使用,它们所属的区块链可被删除,新生成的交易号为“#5001”的交易信息可以包含在新的区块链中。

在上述实例中,节点14对全部区块中未被使用的交易输出信息做交易滚动操作,从而能生成新的交易信息,并且不改变未被使用的交易输出信息中资产的所有权。这样,就可以使这些区块中所有交易输出信息都被使用了,属于无用的区块(即未来交易操作中不需要访问的区块),从而节点14可以将这些区块备份出来并将本地存储的第一区块链删除,节省了节点14的存储空间,保证了数据的准确性,不影响交易操作的执行,不会影响区块链的正常运行,技术实现并不复杂,能够显著提升系统性能。

在一些实例中,第二区块中可能存在很多未被使用的交易输出信息,上述处理并不能腾出很多存储空间,则节点14可在第二条件满足时(比如剩余存储空间低于一定阈值时)进一步将所述生成的第二区块链中的交易信息中长时间不被使用的交易信息合并在新的第三区块中生成新的第三区块,从而生成新的第三区块链并备份此新的第三区块链,节点14再将此区块所在的区块链即是第二区块链从本地删除,据此对第二区块进行备份。当节点14备份此种第二区块时,在本地的备份数据表中记录此第二区块的标识信息(区块高度、区块头哈希值等)和此第二区块在上述存储系统中的存储地址。这样,当节点14需要访问已备份的第二区块时,可以通过备份数据表中的信息从存储系统中查询到目标区块,也可以将目标区块恢复到节点14中。这样,当需要访问某个未被使用的交易输出信息时,可以从账户数据中查询到其所在的区块的标识信息,从而可以从备份数据表中查询到存储地址,这样就可以访问到存储系统中的该未被使用的交易输出信息,也可将该未被使用的交易输出信息所属的第二区块链恢复到节点14的本地存储中。当需要使用某个未被使用的交易输出信息时,可以从账户数据中查询到其所在的区块的标识信息,从而可以从备份数据表中查询到存储地址,这样就可以访问到存储系统中的该未被使用的交易输出信息中的具体详情,如账户地址、资产余额等,从而根据查询到的信息生成新的交易信息,把该未被使用的交易输出信息使用掉。

在一些实例中,在将所述第二区块链删除之后,当要访问所述第二区块链中任一区块的交易信息时,节点14可从所述数据备份表中查询得到该区块的标识信息对应的存储地址,根据所述存储地址访问所述存储系统中的该区块,并根据所述交易信息的标识信息从该区块中查询得到所述交易信息的内容(比如资产余额、账户地址等)。

可以理解的是,采用上述技术方案,能够节省区块链节点的存储空间,显著提升存储资源的利用率,可以将未被使用的交易输出信息从已有区块中滚动出来且不改变资产的所有权,这样就可以将已使用的交易输出信息组成的各个区块冷备起来,将这种区块所在的区块链从区块链节点删除,这样就能将有限的存储空间充分用于保存对于当前区块链运行更有价值的未被使用的交易输出信息,从而提升了区块链系统性能。上述技术方案也非常易于在区块链节点中应用,具有较强的可实施性。

基于上述本申请提供的方法实例,本申请实例还提出了一种数据备份装置,该装置可应用于区块链节点14中。如图5所示,该装置500包括:

查询模块501,在第一条件满足时,从第一区块链中的第一区块中查询得到未被使用的交易输出信息,所述第一区块包括所述第一区块链中的所有区块。

交易信息模块502,根据查询得到的所述未被使用的交易输出信息生成交易信息,所述交易信息用于描述不改变所述未被使用的交易输出信息所属账户地址的交易操作。

区块发布模块503,将生成的所述交易信息记录在第二区块中并发布所述第二区块,将经过共识的所述第二区块记录在第二区块链上。

备份模块504,将所述第一区块链备份到自身连接的存储系统中,删除所述第一区块链。

在一些实例中,备份模块504当将所述第一区块链备份到自身连接的存储系统时,在数据备份表中记录所述第一区块链中各区块的标识信息及其在所述存储系统中的存储地址。装置500进一步包括:数据访问模块505,在将所述第一区块链删除之后,当要访问所述第一区块链中任一区块时,从所述数据备份表中查询得到该区块的标识信息对应的存储地址,根据所述存储地址访问所述存储系统中的该区块。

在一些实例中,数据访问模块505,在将所述第一区块链删除之后,当要访问所述第一区块链中任一区块的交易信息时,从所述数据备份表中查询得到该区块的标识信息对应的存储地址,根据所述存储地址访问所述存储系统中的该区块,并根据所述交易信息的标识信息从该区块中查询得到所述交易信息的内容。

上述各模块功能的实现原理前文已有详述,这里不再赘述。

在一些实例中,上述数据备份装置500可运行在各种计算设备中,并加载在该计算设备的存储器中。

图6示出了上述数据备份装置500所在的计算设备的组成结构图。如图6所示,该计算设备包括一个或者多个处理器(cpu)602、通信模块604、存储器606、用户接口610,以及用于互联这些组件的通信总线608。

处理器602可通过通信模块604接收和发送数据以实现网络通信和/或本地通信。

用户接口610包括一个或多个输出设备612,其包括一个或多个扬声器和/或一个或多个可视化显示器。用户接口610也包括一个或多个输入设备614,其包括诸如,键盘,鼠标,声音命令输入单元或扩音器,触屏显示器,触敏输入板,姿势捕获摄像机或其他输入按钮或控件等。

存储器606可以是高速随机存取存储器,诸如dram、sram、ddrram、或其他随机存取固态存储设备;或者非易失性存储器,诸如一个或多个磁盘存储设备、光盘存储设备、闪存设备,或其他非易失性固态存储设备。

存储器606存储处理器602可执行的指令集,包括:

操作系统616,包括用于处理各种基本系统服务和用于执行硬件相关任务的程序;

应用618,包括各种应用程序,其能够实现上述各实例中的处理流程,比如可以包括图5所示的装置500。在一些实例中,装置500可包括图5所示的各模块501~505中的部分或全部模块,各模块501~505可以存储有机器可执行指令。处理器602通过执行存储器606中各模块501~505中的机器可执行指令,进而能够实现上述各模块501~505的功能。

需要说明的是,上述各流程和各结构图中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。各模块的划分仅仅是为了便于描述采用的功能上的划分,实际实现时,一个模块可以分由多个模块实现,多个模块的功能也可以由同一个模块实现,这些模块可以位于同一个设备中,也可以位于不同的设备中。

各实施例中的硬件模块可以以硬件方式或硬件平台加软件的方式实现。上述软件包括机器可读指令,存储在非易失性存储介质中。因此,各实施例也可以体现为软件产品。

各例中,硬件可以由专门的硬件或执行机器可读指令的硬件实现。例如,硬件可以为专门设计的永久性电路或逻辑器件(如专用处理器,如fpga或asic)用于完成特定的操作。硬件也可以包括由软件临时配置的可编程逻辑器件或电路(如包括通用处理器或其它可编程处理器)用于执行特定操作。

另外,本申请的每个实例可以通过由数据处理设备如计算机执行的数据处理程序来实现。显然,数据处理程序构成了本申请。此外,通常存储在一个存储介质中的数据处理程序通过直接将程序读取出存储介质或者通过将程序安装或复制到数据处理设备的存储设备(如硬盘和或内存)中执行。因此,这样的存储介质也构成了本申请,本申请还提供了一种非易失性存储介质,其中存储有数据处理程序,这种数据处理程序可用于执行本申请上述方法实例中的任何一种实例。

图5中的模块对应的机器可读指令可以使计算机上操作的操作系统等来完成这里描述的部分或者全部操作。非易失性计算机可读存储介质可以是插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器。安装在扩展板或者扩展单元上的cpu等可以根据指令执行部分和全部实际操作。

非易失性计算机可读存储介质包括软盘、硬盘、磁光盘、光盘(如cd-rom、cd-r、cd-rw、dvd-rom、dvd-ram、dvd-rw、dvd+rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上下载程序代码。

综上所述,权利要求的范围不应局限于以上描述的例子中的实施方式,而应当将说明书作为一个整体并给予最宽泛的解释。

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