一种区块数据分段存储方法、终端及介质与流程

文档序号:18704301发布日期:2019-09-17 23:25阅读:301来源:国知局
一种区块数据分段存储方法、终端及介质与流程

本发明涉及数据存储技术领域,具体涉及一种基于区块数据分段存储方法、终端及介质。



背景技术:

区块链是一种去中心化的、由各节点参与的分布式数据库技术。区块链网络中记录的信息采用块链式存储结构,区块就是链式存储结构中的数据元素,区块链由区块相互连接形成单向链式结构,其中第一个区块被称为创始区块。这样的块链式结构通过hash值前后互相关联,保证了数据的不可篡改和可追溯性。每个区块链节点都会存储区块链系统完整的记录信息。随着系统的运行,区块链中的区块数量和交易数量不断增加,存储空间、记录查询以及节点数据同步等都会出现性能和效率方面的问题。

针对区块链的块链式结构持续增长的问题,现有的处理方法通常是将区块链上满足一定条件的历史交易数据转存到其它存储设备中,减少了块链式结构的长度。但是将区块链上交易数据的转存过程中存在数据被篡改的风险,并且也会影响节点数据同步的效率。



技术实现要素:

针对现有技术中的缺陷,本发明的目的之一提供一种区块数据分段存储方法,避免区块链数据无限增长,提升了区块数据管理、查询、归档、节点同步等操作的效率和便捷性,降低系统运行成本。

第一方面,本发明提供的一种区块数据分段存储方法,包括以下步骤:

区块链节点生成新的区块时,获取当前子账本所对应的交易时间区间;所述区块链节点为区块链网络中参与记账的服务器,所述子账本为一个区块链账本按照时间顺序进行分段存储的连续块链式结构,所述当前子账本为当前新生成的区块所要添加到的子账本;

判断当前子账本的交易时间区间内是否有交易数据;

若是,则生成普通区块并将普通区块添加到当前子账本中;

若否,则判断当前系统时间是否大于当前子账本的交易时间区间;

若是,则生成首区块并将首区块添加到新建的下一个子账本,并将新建的下一个子账本设为当前子账本;

若否,则无交易数据返回。

可选地,所述区块为区块链账本中的数据元素,包括区块头和区块体,所述区块头包含时间戳、根据区块中交易数据计算的hash值和上一区块记录的hash值,所述区块体包含交易数据。

可选地,所述生成普通区块并将普通区块添加到当前子账本中的具体方法包括:

按照区块链中区块的生成方法将当前子账本交易时间内的交易数据组织生成区块;

在区块信息中添加子账本顺序号和子账本内区块顺序号,得到新的普通区块,将生成的普通区块内容添加到当前子账本的最后一个区块的后面。

可选地,所述生成首区块并将首区块添加到当前子账本中的具体方法包括:

按照区块链中区块的生成方法将接收的交易数据组织生成区块;

在区块信息中添加子账本顺序号、子账本内区块顺序号、子账本交易开始时间和子账本交易结束时间,得到新的首区块,新建下一个子账本,将生成的首区块内容添加到所述下一个子账本中,将所述下一个子账本设置为当前子账本。

可选地,所述首区块为子账本的第一个区块,所述首区块指向上一个子账本的最后一个区块,若上一个子账本包含多个区块,则所述最后一个区块为普通区块,若上一个子账本只有一个区块,则所述最后一个区块为首区块。

第二方面,本发明实施例还提供一种智能终端,包括处理器、输入设备、输出设备和存储器,所述处理器、输入设备、输出设备和存储器相互连接,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行上述实施例描述的方法。

第三方面,本发明实施例还提供一种计算机可读存储介质,其特征在于,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述实施例描述的方法。

本发明的有益效果:

本发明实施例提供的区块数据分段存储方法、终端及介质,将一条连续的块链式存储账本按照时间进行分段存储,形成多条区块数量有限的块链式子账本,每条子账本中存储给定时间区间内接收的交易数据,子账本保证了区块数据的连续和完整,又能保证相对的独立性,避免区块链数据无限增长,提升了区块数据管理、查询、归档、节点同步等操作的效率和便捷性,降低了系统的运行成本。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。

图1示出了本发明第一实施例所提供的一种区块数据分段存储的方法的流程图;

图2示出了本发明第一实施例所提供的一种区块数据分段存储的方法的新增普通区块的流程图;

图3示出了本发明第一实施例所提供的一种区块数据分段存储的方法的新增首区块的流程图;

图4示出了本发明另一实施例所提供的一种智能终端的结构框图。

具体实施方式

下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只是作为示例,而不能以此来限制本发明的保护范围。

需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。

如图1所示,示出了本发明第一实施例所提供的一种区块数据分段存储的方法的流程图,该方法包括以下步骤:

步骤s101:区块链节点生成新的区块时,获取当前子账本所对应的交易时间区间;区块链节点为区块链网络中参与记账的服务器,所述子账本为一个区块链账本按照时间顺序进行分段独立存储的连续块链式结构,所述当前子账本为当前新生成的区块所要添加到的子账本,一个区块链账本只能有一个子账本为当前子账本;所有子账本共同组成一个区块链账本。区块为区块链账本中的数据元素,包括区块头和区块体,所述区块头包含时间戳、根据区块中交易数据计算的hash值和上一区块记录的hash值等区块相关信息,在区块形成链式结构的过程中起着决定作用;区块体包含交易数据。

步骤s102:判断当前子账本的交易时间区间内是否有交易数据。

步骤s103:若是,则生成普通区块并将普通区块添加到当前子账本中。

具体地,生成普通区块并将普通区块添加到当前子账本的具体方法包括:

按照区块链中区块的生成方法将当前子账本交易时间内的交易数据组织生成区块;

在区块信息中添加子账本顺序号和子账本内区块顺序号,得到新的普通区块,将生成的普通区块内容添加到当前子账本的最后一个区块的后面。

区块链中区块的生成方法是指不同的区块链生成各自所定义的区块数据格式的方法,本实施例中区块链采用比特币网络,采用比特币区块的生成方法;子账本顺序号是指将子账本按照生成的时间顺序从小到大依次编的号码,一个账本中子账本顺序号是唯一的;所述子账本内区块顺序号是指在一个子账本内的所有区块按照生成的时间顺序从小到大依次编的号码,一个子账本中子账本内区块顺序号是唯一的。

步骤s104:若否,则判断当前系统时间是否大于当前子账本的交易时间区间。

步骤s105:若是,则生成首区块并将首区块添加到新建的下一个子账本,并将新建的下一个子账本设为当前子账本。

步骤s106:若否,则无交易数据返回,即当前子账本没有未存储的交易数据,无需添加新区块,新区块生成过程结束。

具体地,生成首区块并将首区块添加到新建的下一个子账本,并将新建的下一个子账本设为当前子账本的具体方法包括:

按照区块链中区块的生成方法将接收的交易数据组织生成区块;

在区块信息中添加子账本顺序号、子账本内区块顺序号、子账本交易开始时间和子账本交易结束时间,得到新的首区块,新建下一个子账本,将生成的首区块内容添加到所述下一个子账本中,将所述下一个子账本设置为当前子账本。首区块是指子账本的第一个区块,首区块指向上一子账本的最后一个区块,若上一个子账本包含多个区块,则所述最后一个区块为普通区块,若上一个子账本只有一个区块,则所述最后一个区块为首区块。

以下采用具体的实例对上述实施例的区块数据分段存储方法新增普通区块的方法作进一步的详细说明。

假设:(1)当前子账本记为a,子账本顺序号为ga,其交易时间区间为大于等于时刻at1,小于时刻at2,并且at1小于at2;

(2)下一子账本记为b,子账本顺序号为gb,gb=ga+1,其交易时间区间为大于等于时刻bt1,小于时刻bt2,并且bt1小于bt2,bt1大于等于at2;

(3)当前有三笔交易数据r1,r2和r3,对应的时间分别为t1,t2和t3,其中t1大于at1且小于at2,t2大于at1且小于at2,t3大于bt1且小于bt2,即交易数据r1和r2在当前子账本a的交易时间区间内,交易数据r3在下一子账本b的交易时间区间内;

(4)当前系统时间为st1,st1大于等于t3。

如图2所示,区块数据分段存储方法新增普通区块的具体方法包括以下基本步骤:

步骤s201:区块链节点生成新的区块时,获取当前子账本所对应的交易数据时间区间;本具体实施例中,当前子账本记为a,其交易时间区间为大于等于时刻at1,小于时刻at2,并且at1小于at2。

步骤202:查看接收的交易数据时间,查找并判断当前子账本交易时间区间内是否有交易数据;本具体实施例中,交易数据r1和r2在当前子账本a的交易时间区间内。

步骤203:生成普通区块并添加到子账本中,其具体过程为:本实施例中采用比特币网络,按照比特币中区块的生成方法将当前子账本a交易时间区间内的交易数据r1和r2组织生成区块,并在区块信息中添加子账本顺序号ga和子账本内区块顺序号gaid,得到一个新的普通区块,将生成的普通区块内容添加到当前子账本的最后一个区块的后面。

其中,子账本顺序号ga是指将子账本按照生成的时间顺序从小到大依次编的号码,一个账本中子账本顺序号是唯一的;所述子账本内区块顺序号gaid是指在一个子账本内的所有区块按照生成的时间顺序从小到大依次编的号码,一个子账本中子账本内区块顺序号是唯一的。

以下采用具体的实例对区块数据分段存储方法新增首区块的方法作进一步详细的说明。

假设:(1)当前子账本记为a,子账本顺序号为ga,其交易时间区间为大于等于时刻at1,小于时刻at2,并且at1小于at2;

(2)下一子账本记为b,子账本顺序号为gb,gb=ga+1,其交易时间区间为大于等于时刻bt1,小于时刻bt2,并且bt1小于bt2,bt1大于等于at2;

(3)当前有一笔交易数据r3,对应的时间为t3,其中t3大于bt1且小于bt2,即交易数据r3在下一子账本b的交易时间区间内;

(4)当前系统时间为st2,st2大于等于at2。

如图3所示,区块数据分段存储方法新增首区块的具体方法包括以下基本步骤:

步骤301:区块链节点生成新的区块时,获取当前子账本所对应的交易数据时间区间;本具体实施例中,当前子账本记为a,其交易时间区间为大于等于时刻at1,小于时刻at2,并且at1小于at2。

步骤302:查看接收的交易数据时间,查找并判断当前子账本交易时间区间内是否有交易数据;本具体实施例中,交易数据r3不在当前子账本a的交易时间区间内。

步骤303:判断当前系统时间st2是否在当前子账本交易时间区间内,当前系统时间st2大于等于at2,即当前系统时间不在当前子账本交易时间区间内,则转步骤304生成首区块并添加到子账本。

步骤304:生成首区块并将首区块添加到新建的下一个子账本,并将新建的下一个子账本设为当前子账本的具体过程为:本实施例中采用比特币网络,按照比特币中区块的生成方法将接收的交易数据r3组织生成区块,并在区块信息中添加子账本顺序号gb、子账本内区块顺序号gbid、子账本交易时间开始bt1、子账本交易时间结束bt2,得到一个新的首区块,新建下一个子账本b,将生成的首区间内容添加到该子账本中,将该新建的下一个子账本b设置为当前子账本,对应的交易数据时间区间为大于等于时刻bt1,小于时刻bt2;所述首区块是指子账本b的第一个区块,该首区块指向上一子账本a的最后一个普通区块。

本发明实施例提供的一种区块数据分段存储方法,将一条连续的块链式存储账本按照时间进行分段存储,形成多条区块数量有限的块链式子账本,每条子账本中存储给定时间区间内接收的交易数据,子账本保证了区块数据的连续和完整,又能保证相对的独立性,避免区块链数据无限增长,提升了区块数据管理、查询、归档、节点同步等操作的效率和便捷性,降低了系统的运行成本。

本发明还提供一种智能终端的第一实施例,如图4所示,示出了一种智能终端的结构框图,该终端包括处理器1、输入设备2、输出设备3和存储器4,所述处理器1、输入设备2、输出设备3和存储器4相互连接,所述存储器4用于存储计算机程序,所述计算机程序包括程序指令,所述处理器1被配置用于调用所述程序指令,执行上述方法实施例描述的过程。

应当理解,在本发明实施例中,所称处理器1可以是中央处理单元(centralprocessingunit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

输入设备2可以包括触控板、键盘等,输出设备3可以包括显示器(lcd等)、扬声器等。

该存储器4可以包括只读存储器和随机存取存储器,并向处理器1提供指令和数据。存储器4的一部分还可以包括非易失性随机存取存储器。例如,存储器4还可以存储设备类型的信息。

具体实现中,本发明实施例中所描述的处理器1、输入设备2、输出设备3可执行本发明实施例提供的方法,也可执行本发明实施例所描述的系统实施例的实现方式,在此不再赘述。

本发明还提供一种计算机可读存储介质的实施例,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述实施例描述的方法。

所述计算机可读存储介质可以是前述实施例所述的终端的内部存储单元,例如终端的硬盘或内存。所述计算机可读存储介质也可以是所述终端的外部存储设备,例如所述终端上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述计算机可读存储介质还可以既包括所述终端的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述终端所需的其他程序和数据。所述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的终端和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露终端和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

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