掌桥专利:专业的专利平台
掌桥专利
首页

区块链数据归档方法和装置

文献发布时间:2023-06-19 09:55:50


区块链数据归档方法和装置

技术领域

本申请涉及区块链技术领域,特别涉及一种区块链数据归档方法和装置。

背景技术

目前,在区块链技术的实际使用中,区块链节点一般都是全量保存数据的。通常区块链底层直接使用key-value(关键词-值)类型的数据库(例如,LevelDB)存储区块数据和状态数据。一般使用该类数据库时,都是直接使用。虽然一些key-value类型的数据库本身有一定的压缩归档功能,但也只是有限地压缩存储空间。

然而,当区块链系统在应用中逐渐使用更多的空间时,磁盘的压力将会上升,如果无节制的使用区块链存储数据,那么存储成本和磁盘空间将会成为制约区块链系统的瓶颈。

针对上述问题,目前尚未提出有效的解决方案。

发明内容

本申请实施例提供了一种区块链数据归档方法和装置,以解决现有技术中区块链系统所使用的存储空间无限上涨的问题。

本申请实施例提供了一种区块链数据归档方法,包括:基于区块链系统的区块数据,生成归档数据集;将归档数据集存储至分布式文件存储系统;将归档数据集和归档数据集对应的区块数据删除。

在一个实施例中,在生成归档数据集之后,还包括:对归档数据集进行压缩,得到压缩后的归档数据集。

在一个实施例中,基于区块链系统的区块数据,生成归档数据集,包括:确定是否对区块链系统的区块数据进行归档;在确定对区块链系统的区块数据进行归档的情况下,基于区块链系统的区块数据,生成归档数据集。

在一个实施例中,确定是否对区块链系统的区块数据进行归档,包括:获取当前区块高度、上一次区块归档的区块高度、热区块保留数量和一次归档区块数;确定当前区块高度是否大于上一次区块归档的区块高度、热区块保留数量以及一次归档区块数之和;在确定当前区块高度大于上一次区块归档的区块高度、热区块保留数量以及一次归档区块数之和的情况下,确定对区块链系统的区块数据进行归档。

在一个实施例中,生成归档数据集,包括:针对一次归档区块数的区块中的各区块生成归档数据结构体的实例,得到多个归档数据结构体的实例;将多个归档数据结构体的实例按照区块顺序形成归档数据集。

在一个实施例中,将归档数据集存储至分布式文件存储系统,包括:发起第一共识请求,其中,第一共识请求用于校验归档数据集;在第一共识请求达成共识的情况下,将归档数据集存储至分布式文件存储系统。

在一个实施例中,将归档数据集和归档数据集对应的区块数据删除,包括:发起第二共识请求,其中,第二共识请求用于从分布式文件存储系统中下载归档数据集并进行校验;在第二共识请求达成共识的情况下,将归档数据集和归档数据集对应的区块数据删除。

在一个实施例中,在将归档数据集和归档数据集对应的区块数据删除之后,还包括:生成归档列表,其中,归档列表中包括区块的标识信息与归档数据集的标识信息之间的对应关系。

在一个实施例中,在生成归档列表之后,还包括:接收用户客户端的查询请求,其中,查询请求中包括区块的标识信息;从归档列表中查询与区块的标识信息对应的归档数据集的标识信息;根据归档数据集的标识信息从分布式文件存储系统中读取归档数据集;对读取的归档数据集进行校验;在校验正确的情况下,将归档数据集返回给用户客户端。

本申请实施例还提供了一种区块链数据归档装置,位于区块链节点,包括:生成模块,用于基于区块链系统的区块数据,生成归档数据集;存储模块,用于将归档数据集存储至分布式文件存储系统;删除模块,用于将归档数据集和归档数据集对应的区块数据删除。

本申请实施例还提供一种计算机设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现上述任意实施例中所述的区块链数据归档方法的步骤。

本申请实施例还提供一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现上述任意实施例中所述的区块链数据归档方法的步骤。

在本申请实施例中,提供了一种区块链数据归档方法,基于区块链系统的区块数据,生成归档数据集,发起第一共识请求,以校验归档数据集,在第一共识请求达成共识的情况下,将归档数据集存储至分布式文件存储系统,发起第二共识请求,以从分布式文件存储系统中下载归档数据集并进行校验,在第二共识请求达成共识的情况下,将区块链节点本地的归档数据集和预设数目的区块的数据进行删除,从而完成区块链数据的归档。上述方案中,基于区块链系统的区块数据生成归档数据集并上传至分布式文件存储系统进行归档保存,同时删除本地的归档数据集和归档数据集对应的区块数据,由于分布式文件存储系统具有可扩展、可配置、多个备份且不易丢失的特性,通过分布式文件存储系统保存归档数据并配置一定的备份数量,可以保证区块数据的安全性,同时归档后区块数据从区块链节点本地删除,可以节省较多的磁盘使用空间。通过上述方案解决了现有技术中区块链系统所使用的存储空间无限上涨的技术问题,达到了有效节省区块链系统的磁盘使用空间的技术效果。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,并不构成对本申请的限定。在附图中:

图1示出了本申请一实施例中的区块链数据归档方法的流程图;

图2示出了本申请一实施例中的区块链数据归档方法的流程图;

图3示出了本申请一实施例中的区块链数据归档装置的示意图;

图4示出了本申请一实施例中的计算机设备的示意图。

具体实施方式

下面将参考若干示例性实施方式来描述本申请的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本申请,而并非以任何方式限制本申请的范围。相反,提供这些实施方式是为了使本申请公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。

本领域的技术人员知道,本申请的实施方式可以实现为一种系统、装置设备、方法或计算机程序产品。因此,本申请公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。

本说明书实施例提供的一个场景示例中,在区块链系统启动时,每一个区块链节点同时启动一个分布式文件存储系统,例如,IPFS(InterPlanetary File System,星际文件系统)。在对区块链系统的区块数据进行归档时,可以利用分布式文件存储系统可扩展、可配置、多个备份且不易丢失的特性,保存归档数据,配置一定的备份数量,将区块链的区块数据进行归档。归档后,区块数据从区块链节点本地删除,如果需要查询数据,则直接去分布式文件存储系统中查询下载。由于区块链历史数据查询频率较低,所以上述方案对系统性能影响很小,但是会节省较多的磁盘使用空间。

具体地,在该场景示例中,区块链系统会记录上一次区块归档的区块高度,系统刚启动时该高度为0。当区块链系统检测到目前区块高度>上次归档的区块高度+一次归档区块数+热区块保留数量的时候会触发归档功能的启动。其中,一次归档区块数可以是每次归档的区块数据的数量。热区块保留数量表示系统至少保留多少个热区块并不归档。

当区块链节点运行到该高度时,触发自身的归档功能,将一次归档区块数的区块数据打包成一个归档数据集。每个区块会产生一个归档数据结构体,该归档数据结构体中包括区块头、区块体、区块交易的收据(receipt,一个区块可以对应多个收据)等数据。多个区块的归档数据结构体形成了归档数据集。一次归档区块数有多少个,一个归档数据集中就有几个归档数据结构体。在区块数据打包完成后还可以进行压缩。其中,使用的压缩算法可以在创世区块中配置,全链统一。

当其中某一个区块链节点完成打包工作后,将会发出第一共识请求。其中,共识请求的算法可以是拜占庭共识算法,也可以是其他共识算法(例如,raft算法)。下面以拜占庭共识算法为例进行说明。提出第一共识请求的区块链节点可以是打包当前区块的下一个区块的区块链节点,也可以是打包归档数据集最快的区块链节点,本申请对此不做限制。

在共识算法为拜占庭共识算法的情况下,由于共识时间较长,可以在主拜占庭共识外,启动一个分支的拜占庭共识,专门用于系统性数据的拜占庭共识。当区块链节点发出第一共识请求之后,该第一共识请求将被广播给全网的区块链节点,放入全网区块链节点的系统交易队列中,每个区块链节点有一个系统交易池,该交易池中的交易会被进行独立的检查逻辑。这种共识请求由于其处理时间较长,因此这种系统级归档交易的延迟需要独立设置,且设置较长的时间。

在其他区块链节点完成本地的归档验证后,会进入投票阶段,如果对第一共识请求的归档区块数和归档哈希值等校验一致,则发出一个同意投票。在收到全网区块链节点中三分之二以上同意投票后,发起第一共识请求的区块链节点会发出一个收到全网三分之二以上同意投票的消息,并且等待其他区块链节点的消息,如果该区块链节节点收到全网共识节点三分之二以上同意投票的消息后,则进入上传阶段。

在上传阶段,提出第一共识请求的区块链节点进行上传,将归档数据集提交到分布式文件存储系统中进行存储,如果该区块链节点在这个阶段出现问题,则会出现超时情况。如果出现超时,则由其他区块链节点发起第一共识请求并在达成共识后将归档数据集上传至分布式文件存储系统。例如,归档时所有节点一起进行归档,但是由下一个区块打包的节点进行归档请求提起。例如:一开始上次归档的区块高度为0,一次归档区块数为1000,热区块保留数量为500,那么从1500个区块开始进行归档,由1501个区块的打包节点提起第一共识请求。如果超时,那么由1502个区块的打包节点进行第一共识请求的提交。

在上传成功的情况下,该区块链节点发出第二共识请求。其他节点收到该第二共识请求后,从分布式文件存储系统中下载该归档数据集并进行校验,如果校验通过,则发出一个同意投票。在收到全网区块链节点三分之二以上的同意投票后,该节点会发出一个收到全网三分之二以上同意投票的消息,并且等待其他节点的消息,如果该节点收到全网共识节点三分之二以上同意投票的消息后,进入删除阶段。

在删除阶段,该区块链节点将第二共识请求的结果,做成一个交易,放入主共识流程中,即发出第三共识请求。在第三共识请求达成共识后,每个区块链节点将本地归档过后的区块数据以及归档数据集进行删除。需要注意的是,这里只删除区块体,保留区块头,用于校验。此外,本地可以生成一个归档列表,对应哪些区块保存在哪个归档数据集中,便于后续查询下载。

在需要对归档数据进行使用的情况下,比如验证或者查询时,查询本地的归档列表找到该区块数据所属的归档数据集,从分布式文件存储系统中读取该归档数据集,进行解压,并与本地的区块头进行校对,如果校验正确,则读取该归档数据集,并返回给数据调用方。

本申请实施例提供了一种区块链数据归档方法。图1示出了本申请一实施例中区块链数据归档方法的流程图。虽然本申请提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本申请实施例描述及附图所示的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构连接进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至分布式处理环境)。

具体地,如图1所示,本申请一种实施例提供的区块链数据归档方法可以包括以下步骤。

步骤S101,基于区块链系统的区块数据,生成归档数据集。

具体地,本实施例中的方法应用于区块链系统中的区块链节点。可以基于去看了系统的区块数据,生成归档数据集。例如,可以将要归档的区块的区块数据打包成归档数据集。在打包区块数据时,打包各区块的区块头、区块体以及区块对应的收据(即,区块中的交易内容对应的交易结果)。

步骤S102,将归档数据集存储至分布式文件存储系统。

在生成归档数据集之后,区块链节点将归档数据集上传至分布式文件存储系统进行存储。其中,分布式文件存储系统可以将所述归档数据集保存预设数目的副本。其中,预设数目可以根据实际需要进行设定,例如可以设置为3、4或5等。

步骤S103,将归档数据集和归档数据集对应的区块数据删除。

在将归档数据集存储至分布式文件存储系统之后,区块链节点可以将归档数据集和归档数据集对应的区块数据进行删除。区块链系统的其他区块链节点也可以删除归档数据集对应的区块数据。

上述实施例中的区块链数据归档方法中,基于区块链系统的区块数据生成归档数据集并上传至分布式文件存储系统进行归档保存,同时删除本地的归档数据集和归档数据集对应的区块数据,由于分布式文件存储系统具有可扩展、可配置、多个备份且不易丢失的特性,通过分布式文件存储系统保存归档数据并配置一定的备份数量,可以保证区块数据的安全性,同时归档后区块数据从区块链节点本地删除,可以节省较多的磁盘使用空间。

在本申请一些实施例中,将归档数据集存储至分布式文件存储系统,可以包括:发起第一共识请求,其中,第一共识请求用于校验归档数据集;在第一共识请求达成共识的情况下,将归档数据集存储至分布式文件存储系统。

具体地,在区块链节点生成归档数据集之后,发起第一共识请求。其中,第一共识请求用于校验归档数据集。区块链节点发起第一共识请求后,该第一共识请求被广播到全网区块链节点。在其他区块链节点完成本地的归档验证后,会进入投票阶段,如果对第一共识请求的归档区块数和归档哈希值等校验一致,则发出一个同意投票。示例性的,在收到全网区块链节点中三分之二以上同意投票后,区块链节点会发出一个收到全网三分之二以上同意投票的消息,并且等待其他区块链节点的消息,如果该区块链节节点收到全网共识节点三分之二以上同意投票的消息,则第一共识请求达成共识。在第一共识请求达成共识的情况下,将归档数据集存储至分布式文件存储系统。通过上述方式,可以保证上传至分布式文件存储系统的归档数据集的正确性。

在本申请一些实施例中,将归档数据集和归档数据集对应的区块数据删除,包括:发起第二共识请求,其中,第二共识请求用于从分布式文件存储系统中下载归档数据集并进行校验;在第二共识请求达成共识的情况下,将归档数据集和归档数据集对应的区块数据删除。

具体地,在将归档数据集成功上传至分布式文件存储系统的情况下,该区块链节点发起第二共识请求。其中,第二共识请求用于从分布式文件存储系统中下载归档数据集并进行校验。第二共识请求被广播到全网区块链节点。其他区块链节点收到该第二共识请求后,从分布式文件存储系统中下载该归档数据集并进行校验,如果校验通过,则发出一个同意投票。在收到全网节点三分之二以上的同意投票后,该区块链节点会发出一个收到全网三分之二以上同意投票的消息,并且等待其他节点的消息,如果该区块链节点收到全网共识节点三分之二以上同意投票的消息,则第二共识请求共识成功。在第二共识请求达成共识的情况下,区块链节点可以将归档数据集和归档数据集对应的区块数据进行删除。区块链系统的其他区块链节点也将本地的归档数据集和对应的区块数据进行删除。通过上述方式,在对存储至分布式文件存储系统的归档数据集校验成功的情况下才进行区块数据的删除,可以进一步保证数据归档的准确性,还可以避免数据误删。

在本申请一些实施例中,将归档数据集和归档数据集对应的区块数据删除,可以包括:删除归档数据集;删除归档数据集对应的区块的区块体并保留区块头。具体地,区块链节点也可以将本地的归档数据集和对应的区块数据进行删除,在删除区块数据时,仅删除各区块的区块体,保留区块头,便于后续校验。

在本申请一些实施例中,在第二共识请求达成共识的情况下,将归档数据集和归档数据集对应的区块数据删除,可以包括:在第二共识请求达成共识的情况下,发起第三共识请求,其中,第三共识请求用于校验第二共识请求的结果;在第三共识请求达成共识的情况下,将归档数据集和归档数据集对应的区块数据删除。

具体的,在第二共识请求达成共识的情况下,将第二共识请求的交易结果做成第三共识请求,以对第二共识请求的结果进行校验。在第三共识请求达成共识的情况下,才将归档数据集和对应的区块数据删除。通过发起第三交易请求,可以保证数据归档成功,降低区块数据误删的可能性,进一步保证数据安全。

在本申请一些实施例中,第一共识请求、第二共识请求中携带有第一标识值,第三共识请求中携带有第二标识值;其中,携带有第一标识值的共识请求在发起后被放入次交易池中,携带有第二标识值的共识请求在发起后被放入主交易池中,次交易池独立于主交易池。

考虑到共识请求的共识时间较长,可以在主共识外,启动一个分支共识(或者说次共识),专门用于系统性数据的共识。这种交易由于其处理时间较慢,所以这种系统级归档交易的延迟需要独立设置,且设置较长的时间。第一共识请求和第二共识请求是在分支共识中进行。第三共识请求涉及到区块数据的删除,可以放在主共识中进行。具体地,可以通过设置共识请求的标识值进行区分。例如,携带有第一标识值的共识请求在次共识中进行,被放入次交易池中。携带有第二标识值的共识请求在主共识中进行,被放入主交易池中。次交易池独立于主交易池。通过将第一和第二共识请求放入分支共识中进行,可以进行对交易延迟进行单独设置。

在本申请一些实施例中,基于区块链系统的区块数据,生成归档数据集,可以包括:确定是否对区块链系统的区块数据进行归档;在确定对区块链系统的区块数据进行归档的情况下,基于区块链系统的区块数据,生成归档数据集。

具体地,区块链节点在生成归档数据集之前,可以确定是否对区块链系统的区块数据进行归档。例如,区块链节点可以判断当前未归档的区块的数目是否大于预设数目,若大于预设数目则确定对区块链系统进行数据归档。又例如,区块链节点可以判断当前未归档的区块的数目占总区块数目的比值是否大于预设比值,若大于预设比值,则确定对区块链系统进行数据归档。在确定对区块链系统的区块数据进行归档的情况下,基于区块链系统的区块数据,生成归档数据集。通过上述方式,可以由区块链节点确定是否对区块链系统进行归档。

在本申请一些实施例中,确定是否对区块链系统的区块数据进行归档,可以包括:获取当前区块高度、上一次区块归档的区块高度、热区块保留数量和一次归档区块数;确定所述当前区块高度是否大于上一次区块归档的区块高度、热区块保留数量以及一次归档区块数之和;在确定所述当前区块高度大于上一次区块归档的区块高度、热区块保留数量以及一次归档区块数之和的情况下,确定对区块链系统的区块数据进行归档。

具体地,区块链系统可以记录上一次区块归档的区块高度。热区块保留数据表示系统至少保留多少个热区块并不归档。一次归档区块数是指每次归档可归档的区块的数量。在获取当前区块高度、上一次区块归档的区块高度、热区块保留数量和一次归档区块数之后,可以确定当前区块高度是否大于上一次区块归档的区块高度、热区块保留数量以及一次归档区块数之和。在确定当前区块高度大于上一次区块归档的区块高度、热区块保留数量以及一次归档区块数之和的情况下,确定对区块链系统的区块数据进行归档。例如,一开始上次归档的区块高度为0,一次归档区块数为1000,热区块保留数量为500,那么在当前区块高度为1501,确定对区块链系统的区块数据进行归档。通过上述方式,可以根据当前区块高度、一次归档区块数、上一次区块归档的区块高度和热区块保留数量判断是否进行区块数据归档。

在本申请一些实施例中,生成归档数据集,可以包括:针对一次归档区块数的区块中的各区块生成归档数据结构体的实例,得到多个归档数据结构体的实例;将多个归档数据结构体的实例按照区块顺序形成归档数据集。

具体地,全网区块链节点均可以确定是否对区块链系统的区块数据进行归档,各区块链节点均对一次归档区块数的区块的数据进行打包。各区块链节点可以针对一次归档区块数的区块中的各区块生成归档数据结构体的实例,得到多个归档数据结构体的实例,将多个归档数据结构体的实例按照区块顺序形成归档数据集。上述方案中,通过按照区块顺序形成归档数据集,可以使得各区块链节点打包得到的归档数据集相同,便于后续校验。

在本申请一些实施例中,在生成归档数据集之后,还可以包括:对归档数据集进行压缩,得到压缩后的归档数据集。

在基于区块链系统的区块数据,生成归档数据集之后,还可以对归档数据集进行压缩,得到压缩后的归档数据集。其中,压缩算法可以在区块链系统的创世区块中设置,全链统一。在第一共识请求成功后,可以将压缩后的归档数据集上传至分布式文件存储系统,可以进一步节省磁盘空间。

在本申请一些实施例中,在将归档数据集和归档数据集对应的区块数据删除之后,还可以包括:生成归档列表,其中,归档列表中包括区块的标识信息与归档数据集的标识信息之间的对应关系,即记载了哪些区块对应保存在哪个归档数据集中。通过生成归档列表,便于后续查询归档过的区块数据。

在本申请一些实施例中,在生成归档列表之后,还可以包括:接收用户客户端的查询请求,其中,查询请求中包括区块的标识信息;从归档列表中查询与区块的标识信息对应的归档数据集的标识信息;根据归档数据集的标识信息从分布式文件存储系统中读取归档数据集;对读取的归档数据集进行校验;在校验正确的情况下,将归档数据集返回给用户客户端。

具体地,用户客户端可以向区块链节点发出查询请求。查询请求中携带有要查询的区块的标识信息。区块链节点可以查询本地的归档列表,以找到与要查询的区块的标识信息对应的归档数据集的标识信息。之后,区块链节点可以根据归档数据集的标识信息从分布式文件存储系统中读取对应的归档数据集,并进行校验。在校验正确的情况下,可以将归档数据集返回给用户客户端。上述方案中,由于区块数据已经从区块链节点本地删除,因此在需要查询数据时,可以直接去分布式文件存储系统中查询下载,由于区块链历史数据查询频率较低,所以上述方案对系统性能影响很小。

下面结合一个具体实施例对上述方法进行说明,然而,值得注意的是,该具体实施例仅是为了更好地说明本申请,并不构成对本申请的不当限定。

请参考图2,示出了本申请一实施例中的区块链数据归档方法的流程图,如图2所示,该方法可以包括以下步骤。

步骤1,各区块链节点各自判断当前区块高度是否应该进行归档,例如,可以判断是否满足目前区块高度>上次归档的区块高度+一次归档区块数+热区块保留数量,若满足,则进行步骤2,否则,重复步骤1;

步骤2,每个区块链节点各自进行归档,即将一次归档区块数的区块数据打包成归档数据集;

步骤3,进入提案步骤,判断是否为提案节点,若是,则执行步骤5,否则执行步骤4,例如,将打包最新区块的节点确定为提案节点或者将打包归档数据集最快的节点确定为提案节点;

步骤4,非提案节点等待提案,并进入超时等待,如果超时,则进入下一个提案节点的判定;

步骤5,提案节点发起提案;

步骤6,进行拜占庭共识对该归档数据集的提案交易进行共识;

步骤7,判断共识是否成功,若是则执行步骤8,否则返回步骤3;

步骤8,提案节点上传归档数据集到分布式文件存储系统,非提案节点等待上传成功,并等待上传完毕的提案;

步骤9,提案节点上传成功,发起新的上传成功提案,非提案节点等待到上传完毕的提案,提案节点和非提案节点进行共识,以确认该归档数据集是否已经上传;

步骤10,判断共识是否成功,若是执行步骤11,否则返回步骤3;

步骤11,提案节点将该提案结果作为交易放入主共识中,非提案节点等待该交易在主共识中出现,并判断是否等到该交易出现在主共识中,若是,则执行步骤12,否则,等待超时,并返回步骤3;

步骤12,各个节点在主共识进程中发现该交易,达成共识后进行删除,以将本地的归档数据集和已经归档过的区块的数据删除;

步骤13,结束。

上述实施例中的方法,在对区块链系统的区块数据进行归档时,可以利用分布式文件存储系统可扩展、可配置、多个备份且不易丢失的特性,保存归档数据,配置一定的备份数量,将区块链的区块数据进行归档。归档后,区块数据从区块链节点本地删除,如果需要查询数据,则直接去分布式文件存储系统中查询下载。由于区块链历史数据查询频率较低,所以上述方案对系统性能影响很小,但是会节省较多的磁盘使用空间。

基于同一发明构思,本申请实施例中还提供了一种区块链数据归档装置,如下面的实施例所述。由于区块链数据归档装置解决问题的原理与区块链数据归档方法相似,因此区块链数据归档装置的实施可以参见区块链数据归档方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。图3是本申请实施例的区块链数据归档装置的一种结构框图,如图3所示,包括:生成模块301、存储模块302和删除模块303,下面对该结构进行说明。

生成模块301用于基于区块链系统的区块数据,生成归档数据集。

存储模块302用于将归档数据集存储至分布式文件存储系统。

删除模块303用于将归档数据集和归档数据集对应的区块数据删除。

在本申请一些实施例中,生成模块还可以用于:对归档数据集进行压缩,得到压缩后的归档数据集。

在本申请一些实施例中,生成模块可以包括:确定单元,用于确定是否对区块链系统的区块数据进行归档;生成单元,用于在确定单元确定对区块链系统的区块数据进行归档的情况下,基于区块链系统的区块数据,生成归档数据集。

在本申请一些实施例中,确定单元可以具体用于:获取当前区块高度、上一次区块归档的区块高度、热区块保留数量和一次归档区块数;确定当前区块高度是否大于上一次区块归档的区块高度、热区块保留数量以及一次归档区块数之和;在确定当前区块高度大于上一次区块归档的区块高度、热区块保留数量以及一次归档区块数之和的情况下,确定对区块链系统的区块数据进行归档。

在本申请一些实施例中,生成单元可以具体用于:针对一次归档区块数的区块中的各区块生成归档数据结构体的实例,得到多个归档数据结构体的实例;将多个归档数据结构体的实例按照区块顺序形成归档数据集。

在本申请一些实施例中,存储模块可以具体包括:第一请求发起单元,用于发起第一共识请求,其中,第一共识请求用于校验归档数据集;存储单元,用于在第一共识请求达成共识的情况下,将归档数据集存储至分布式文件存储系统。

在本申请一些实施例中,删除模块可以具体包括:第二请求发起单元,用于发起第二共识请求,其中,第二共识请求用于从分布式文件存储系统中下载归档数据集并进行校验;删除单元,用于在第二共识请求达成共识的情况下,将归档数据集和归档数据集对应的区块数据删除。

在本申请一些实施例中,删除单元可以具体用于:在第二共识请求达成共识的情况下,发起第三共识请求,其中,第三共识请求用于校验第二共识请求的结果;在第三共识请求达成共识的情况下,将归档数据集和归档数据集对应的区块数据删除。

在本申请一些实施例中,第一共识请求、第二共识请求中可以携带有第一标识值,第三共识请求中可以携带有第二标识值;其中,携带有第一标识值的共识请求在发起后可以被放入次交易池中,携带有第二标识值的共识请求在发起后可以被放入主交易池中,次交易池独立于主交易池。

在本申请一些实施例中,删除模块可以具体用于:删除归档数据集;删除归档数据集对应的区块的区块体并保留区块头。

在本申请一些实施例中,删除模块还可以用于:生成归档列表,其中,归档列表中包括区块的标识信息与归档数据集的标识信息之间的对应关系。

在本申请一些实施例中,该装置还可以包括查询模块,查询模块可以用于:接收用户客户端的查询请求,其中,查询请求中包括区块的标识信息;从归档列表中查询与区块的标识信息对应的归档数据集的标识信息;根据归档数据集的标识信息从分布式文件存储系统中读取归档数据集;对读取的归档数据集进行校验;在校验正确的情况下,将归档数据集返回给用户客户端。

从以上的描述中,可以看出,本申请实施例实现了如下技术效果:基于区块链系统的区块数据生成归档数据集并上传至分布式文件存储系统进行归档保存,同时删除本地的归档数据集和归档数据集对应的区块数据,由于分布式文件存储系统具有可扩展、可配置、多个备份且不易丢失的特性,通过分布式文件存储系统保存归档数据并配置一定的备份数量,可以保证区块数据的安全性,同时归档后区块数据从区块链节点本地删除,可以节省较多的磁盘使用空间。通过上述方案解决了现有技术中区块链系统所使用的存储空间无限上涨的技术问题,达到了有效节省区块链系统的磁盘使用空间的技术效果。

本申请实施方式还提供了一种计算机设备,具体可以参阅图4所示的基于本申请实施例提供的区块链数据归档方法的计算机设备组成结构示意图,所述计算机设备具体可以包括输入设备41、处理器42、存储器43。其中,所述存储器43用于存储处理器可执行指令。所述处理器42执行所述指令时实现上述任意实施例中所述的区块链数据归档方法的步骤。

在本实施方式中,所述输入设备具体可以是用户和计算机系统之间进行信息交换的主要装置之一。所述输入设备可以包括键盘、鼠标、摄像头、扫描仪、光笔、手写输入板、语音输入装置等;输入设备用于把原始数据和处理这些数的程序输入到计算机中。所述输入设备还可以获取接收其他模块、单元、设备传输过来的数据。所述处理器可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。所述存储器具体可以是现代信息技术中用于保存信息的记忆设备。所述存储器可以包括多个层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也叫存储器,如内存条、TF卡等。

在本实施方式中,该计算机设备具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。

本申请实施方式中还提供了一种基于区块链数据归档方法的计算机存储介质,所述计算机存储介质存储有计算机程序指令,在所述计算机程序指令被执行时实现上述任意实施例中所述区块链数据归档方法的步骤。

在本实施方式中,上述存储介质包括但不限于随机存取存储器(Random AccessMemory,RAM)、只读存储器(Read-Only Memory,ROM)、缓存(Cache)、硬盘(Hard DiskDrive,HDD)或者存储卡(Memory Card)。所述存储器可以用于存储计算机程序指令。网络通信单元可以是依照通信协议规定的标准设置的,用于进行网络连接通信的接口。

在本实施方式中,该计算机存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。

基于本发明的一个方面,本发明的实施例公开了:

A1.一种区块链数据归档方法,应用于区块链节点,包括:

基于区块链系统的区块数据,生成归档数据集;

将所述归档数据集存储至分布式文件存储系统;

将所述归档数据集和所述归档数据集对应的区块数据删除。

A2.根据条款A1所述的方法,在生成归档数据集之后,还包括:

对归档数据集进行压缩,得到压缩后的归档数据集。

A3.根据条款A1所述的方法,基于区块链系统的区块数据,生成归档数据集,包括:

确定是否对区块链系统的区块数据进行归档;

在确定对区块链系统的区块数据进行归档的情况下,基于区块链系统的区块数据,生成归档数据集。

A4.根据条款A3所述的方法,确定是否对区块链系统的区块数据进行归档,包括:

获取当前区块高度、上一次区块归档的区块高度、热区块保留数量和一次归档区块数;

确定所述当前区块高度是否大于上一次区块归档的区块高度、热区块保留数量以及一次归档区块数之和;

在确定所述当前区块高度大于上一次区块归档的区块高度、热区块保留数量以及一次归档区块数之和的情况下,确定对区块链系统的区块数据进行归档。

A5.根据条款A4所述的方法,生成归档数据集,包括:

针对所述一次归档区块数的区块中的各区块生成归档数据结构体的实例,得到多个归档数据结构体的实例;

将所述多个归档数据结构体的实例按照区块顺序形成归档数据集。

A6.根据条款A1所述的方法,将所述归档数据集存储至分布式文件存储系统,包括:

发起第一共识请求,其中,所述第一共识请求用于校验所述归档数据集;

在所述第一共识请求达成共识的情况下,将所述归档数据集存储至分布式文件存储系统。

A7.根据条款A6所述的方法,将所述归档数据集和所述归档数据集对应的区块数据删除,包括:

发起第二共识请求,其中,所述第二共识请求用于从分布式文件存储系统中下载所述归档数据集并进行校验;

在所述第二共识请求达成共识的情况下,将所述归档数据集和所述归档数据集对应的区块数据删除。

A8.根据条款A7所述的方法,在所述第二共识请求达成共识的情况下,将所述归档数据集和所述归档数据集对应的区块数据删除,包括:

在所述第二共识请求达成共识的情况下,发起第三共识请求,其中,所述第三共识请求用于校验所述第二共识请求的结果;

在所述第三共识请求达成共识的情况下,将所述归档数据集和所述归档数据集对应的区块数据删除。

A9.根据条款A8所述的方法,所述第一共识请求、所述第二共识请求中携带有第一标识值,所述第三共识请求中携带有第二标识值;

其中,携带有所述第一标识值的共识请求在发起后被放入次交易池中,携带有所述第二标识值的共识请求在发起后被放入主交易池中,所述次交易池独立于所述主交易池。

A10.根据条款A1所述的方法,将所述归档数据集和所述归档数据集对应的区块数据删除,包括:

删除所述归档数据集;

删除所述归档数据集对应的区块的区块体并保留区块头。

A11.根据条款A1所述的方法,在将所述归档数据集和所述归档数据集对应的区块数据删除之后,还包括:

生成归档列表,其中,所述归档列表中包括区块的标识信息与归档数据集的标识信息之间的对应关系。

A12.根据条款A11所述的方法,在生成归档列表之后,还包括:

接收用户客户端的查询请求,其中,所述查询请求中包括区块的标识信息;

从所述归档列表中查询与所述区块的标识信息对应的归档数据集的标识信息;

根据所述归档数据集的标识信息从所述分布式文件存储系统中读取所述归档数据集;

对读取的所述归档数据集进行校验;

在校验正确的情况下,将所述归档数据集返回给所述用户客户端。

B13.一种区块链数据归档装置,位于区块链节点,包括:

生成模块,用于基于区块链系统的区块数据,生成归档数据集;

存储模块,用于将所述归档数据集存储至分布式文件存储系统;

删除模块,用于将所述归档数据集和所述归档数据集对应的区块数据删除。

B14.根据条款B13所述的装置,所述生成模块还用于:

对归档数据集进行压缩,得到压缩后的归档数据集。

B15.根据条款B13所述的装置,所述生成模块包括:

确定单元,用于确定是否对区块链系统的区块数据进行归档;

生成单元,用于在所述确定单元确定对区块链系统的区块数据进行归档的情况下,基于区块链系统的区块数据,生成归档数据集。

B16.根据条款B15所述的装置,所述确定单元具体用于:

获取当前区块高度、上一次区块归档的区块高度、热区块保留数量和一次归档区块数;

确定所述当前区块高度是否大于上一次区块归档的区块高度、热区块保留数量以及一次归档区块数之和;

在确定所述当前区块高度大于上一次区块归档的区块高度、热区块保留数量以及一次归档区块数之和的情况下,确定对区块链系统的区块数据进行归档。

B17.根据条款B16所述的装置,所述生成单元具体用于:

针对所述一次归档区块数的区块中的各区块生成归档数据结构体的实例,得到多个归档数据结构体的实例;

将所述多个归档数据结构体的实例按照区块顺序形成归档数据集。

B18.根据条款B13所述的装置,所述存储模块具体包括:

第一请求发起单元,用于发起第一共识请求,其中,所述第一共识请求用于校验所述归档数据集;

存储单元,用于在所述第一共识请求达成共识的情况下,将所述归档数据集存储至分布式文件存储系统。

B19.根据条款B18所述的装置,所述删除模块具体包括:

第二请求发起单元,用于发起第二共识请求,其中,所述第二共识请求用于从分布式文件存储系统中下载所述归档数据集并进行校验;

删除单元,用于在所述第二共识请求达成共识的情况下,将所述归档数据集和所述归档数据集对应的区块数据删除。

B20.根据条款B19所述的装置,所述删除单元具体用于:

在所述第二共识请求达成共识的情况下,发起第三共识请求,其中,所述第三共识请求用于校验所述第二共识请求的结果;

在所述第三共识请求达成共识的情况下,将所述归档数据集和所述归档数据集对应的区块数据删除。

B21.根据条款B20所述的装置,所述第一共识请求、所述第二共识请求中携带有第一标识值,所述第三共识请求中携带有第二标识值;

其中,携带有所述第一标识值的共识请求在发起后被放入次交易池中,携带有所述第二标识值的共识请求在发起后被放入主交易池中,所述次交易池独立于所述主交易池。

B22.根据条款B13所述的装置,所述删除模块具体用于:

删除所述归档数据集;

删除所述归档数据集对应的区块的区块体并保留区块头。

B23.根据条款B13所述的装置,所述删除模块还用于:

生成归档列表,其中,所述归档列表中包括区块的标识信息与归档数据集的标识信息之间的对应关系。

B24.根据条款B23所述的装置,还包括查询模块,所述查询模块用于:

接收用户客户端的查询请求,其中,所述查询请求中包括区块的标识信息;

从所述归档列表中查询与所述区块的标识信息对应的归档数据集的标识信息;

根据所述归档数据集的标识信息从所述分布式文件存储系统中读取所述归档数据集;

对读取的所述归档数据集进行校验;

在校验正确的情况下,将所述归档数据集返回给所述用户客户端。

C25.一种计算机设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现条款A1至A12中任一项所述方法的步骤。

D26.一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现条款A1至A12中任一项所述方法的步骤。

显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。

应该理解,以上描述是为了进行图示说明而不是为了进行限制。通过阅读上述描述,在所提供的示例之外的许多实施方式和许多应用对本领域技术人员来说都将是显而易见的。因此,本申请的范围不应该参照上述描述来确定,而是应该参照前述权利要求以及这些权利要求所拥有的等价物的全部范围来确定。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请实施例可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

相关技术
  • 一种区块链的数据归档方法及装置
  • 区块链数据归档方法和装置
技术分类

06120112356832