一种分段式区块链的数据关联方法与系统与流程

文档序号:23754568发布日期:2021-01-29 15:30阅读:66来源:国知局
一种分段式区块链的数据关联方法与系统与流程

[0001]
本发明属于区块链技术领域,尤其涉及一种分段式区块链的数据关联方法与系统。


背景技术:

[0002]
区块链技术起始于2009年的比特币,发展至今已有十年有余,由于其技术领域的前沿性及复杂性,一些基础建设问题一直没有得到很好的解决,其中包括了区块链可持续性技术。为了使区块链支持“永久”的可信存储,所有历史记录既有足够的拷贝保证其数据的完整性,又相互连锁,不可伪造篡改,优选的方法是通过结构化加密将链上数据定期存档到系统内部专司历史数据存档的存储介质上。该部分内容已在本申请人的同日申请《一种区块链存档方法及系统》中有所提及。
[0003]
随着时间推移,历史数据会越来越庞大,需要一个有效的索引系统来加强数据关联性以提高查询速度,同时维护数据的安全和不可篡改。


技术实现要素:

[0004]
为了达到上述目的,本发明提供一种分段式区块链的数据关联方法,其特征在于,包括以下步骤:步骤s101、实时监控第一区块链的指定参数,其中所述第一区块链为分段式区块链;步骤s103、判断所述指定参数是否超过预设阈值;步骤s105、当判断结果为是时,对所述第一区块链进行分段处理;步骤s107、将分段处理后的第一区块链与所述第二区块链关联,所述第二区块链包含与所述第一区块链的相关联的历史区块信息。
[0005]
其中,所述第一区块链存在于维护当前使用账本记录的节点,所述第二区块链存在于维护历史账本记录的节点,所述指定参数包括区块链的物理容量或区块链数量。
[0006]
其中,所述第一区块链至少包括第一数据类型区块链和第二数据类型区块链。
[0007]
其中,所述第一数据类型区块链包含一个或多个连续的第一数据类型区块;所述第二数据类型区块链分别包含一个或多个连续的第二数据类型区块;所述第一数据类型区块链中的第一数据类型区块为所述第二数据类型区块链上的多个连续第二数据类型区块的关联区块,其中所述多个连续第二数据类型区块无需参与共识。
[0008]
其中,所述步骤s105包括:当判断结果为是时,将若干数量的第二数据类型区块替换为第一数据类型区块,所述若干数量的第二数据类型区块为与所述第一数据类型区块链直接相连的某一第二数据类型区块作为起始区块的若干个连续区块;其中,所述步骤s107包括:将所述若干数量的第二数据类型区块转存至第二区块链,附加一个索引关联区块,并
将以上内容封装为整体形成第三数据类型区块。
[0009]
其中,所述索引关联区块包含相应的所述第三数据类型区块的信息以及与相应的所述第一数据类型区块的关联信息。
[0010]
其中,所述方法还包括:当需要查询交易数据时,向p2p网络发出请求消息。
[0011]
其中,所述方法还包括:基于区块高度,确定所述交易数据在第一区块链或第二区块链中的一个。
[0012]
其中,所述第一数据类型区块和索引关联区块的区块体包含时间戳信息。
[0013]
本发明还提出了一种分段式区块链的数据关联系统,其特征在于,包括:监控模块,其用于实时监控第一区块链的指定参数,其中所述第一区块链为分段式区块链;判断模块,其用于判断所述指定参数是否超过预设阈值;分段模块,其用于当判断结果为是时,对所述第一区块链进行分段处理;关联模块,其用于将分段处理后的第一区块链与所述第二区块链关联,所述第二区块链包含与所述第一区块链的相关联的历史区块信息。
[0014]
与现有技术相比,通过本发明的方法可以维护区块链可信度的持久性,防止区块链系统因数据量增长而在未来的某一天面临无法持续,所积累的数据价值化为乌有的困境;支持区块链归档,保证数据不丢失,不可篡改;提供对历史数据的便捷查询。
附图说明
[0015]
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:图1是示出与本发明实施例一致的一种分段式区块链的数据关联方法流程图;图2是示出与本发明实施例一致的一种分段式区块链的数据关联系统框图;图3是示出与本发明实施例一致的区块关联结构宏观示意图;图4是示出与本发明实施例一致的第三数据类型区块链结构示意图;图5是示出与本发明实施例一致的关联索引区块嵌入示意图;图6是示出与本发明实施例一致的第一区块链与第二区块链中的历史存档记录关联示意图;图7是是示出与本发明实施例一致的查询数据的查询过程的流程图。
具体实施方式
[0016]
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0017]
下面结合附图详细说明本发明的可选实施例。
[0018]
实施例一、
参见图1所示,本发明提供一种分段式区块链的数据关联方法,其特征在于,包括以下步骤:步骤s101、实时监控第一区块链的指定参数,其中所述第一区块链为分段式区块链;步骤s103、判断所述指定参数是否超过预设阈值;步骤s105、当判断结果为是时,对所述第一区块链进行分段处理;步骤s107、将分段处理后的第一区块链与所述第二区块链关联,所述第二区块链包含与所述第一区块链的相关联的历史区块信息。
[0019]
其中,所述第一区块链至少包括第一数据类型区块链和第二数据类型区块链。
[0020]
其中,所述第一数据类型区块链包含一个或多个连续的第一数据类型区块;所述第二数据类型区块链分别包含一个或多个连续的第二数据类型区块;所述第一数据类型区块链中的第一数据类型区块为所述第二数据类型区块链上的多个连续第二数据类型区块的关联区块,其中所述多个连续第二数据类型区块无需参与共识。
[0021]
其中,所述步骤s105包括:当判断结果为是时,将若干数量的第二数据类型区块替换为第一数据类型区块,所述若干数量的第二数据类型区块为与所述第一数据类型区块链直接相连的某一第二数据类型区块作为起始区块的若干个连续区块;其中,所述步骤s107包括:将所述若干数量的第二数据类型区块转存至第二区块链,附加一个索引关联区块,并将以上内容封装为整体形成第三数据类型区块。
[0022]
其中,所述索引关联区块包含相应的所述第三数据类型区块的信息以及与相应的所述第一数据类型区块的关联信息。
[0023]
其中,所述方法还包括:当需要查询交易数据时,向p2p网络发出请求消息。
[0024]
其中,所述方法还包括:基于区块高度,确定所述交易数据在第一区块链或第二区块链中的一个。
[0025]
其中,所述第一数据类型区块和索引关联区块的区块体包含时间戳信息。
[0026]
实施例二、在实施例一的基础上,本实施例还可以包括以下内容:参见图2所示,本发明实施例还提出了一种分段式区块链的数据关联系统,其包括:监控模块,其用于实时监控第一区块链的指定参数,其中所述第一区块链为分段式区块链;判断模块,其用于判断所述指定参数是否超过预设阈值;分段模块,其用于当判断结果为是时,对所述第一区块链进行分段处理;关联模块,其用于将分段处理后的第一区块链与所述第二区块链关联,所述第二区块链包含与所述第一区块链的相关联的历史区块信息。
[0027]
实施例三、在上述实施例的基础上,本实施例还包括以下内容:记账节点,其是区块链系统中用来维护账本信息的全节点,在经典区块链中的功能有:
验证共识节点提交的新区块是否合法;将合法的新区块加入本地维护的区块链账本拷贝;与其他记账节点上的区块链账本拷贝同步,查验本地拷贝合法性;保持区块链账本拷贝处于最新状态;提供对已上链账本内容的查询;被显性可信维护。
[0028]
而在本申请中该类节点只维护当前使用账本记录,其与历史存档节点共同完成对全账本的维护。其中,全账本是指区块链自创世区块到最近一个上链的区块之间的全部账本内容。
[0029]
在上述实施例中,所述第一区块链存在于所述记账节点。
[0030]
本申请还提出历史存档节点,其本身只维护历史账本记录,和记账节点共同完成对全账本的维护;不参与新区块的生成、校验、上链工作;配合记账节点提供对历史存档账本内容的查询;被隐性可信维护。
[0031]
其中,历史存档账本是指区块链全账本中当前使用账本维护之外的账本内容,其维护推出历史舞台的账本部分,被隐性可信维护;不接收新区块,不时时延伸;定期接收新存档,体量不断增长;存在于历史存档节点上,具有最终性,不可逆。
[0032]
在上述实施例中,所述第二区块链存在于所述历史存档节点上。
[0033]
实施例四、在所述记账节点上存在索引区块,如图3所示,其为在上述实施例中的第一数据类型区块,而现用区块区相当于上述实施例的第二数据类型区块链,而现用区块即为第二数据类型区块。
[0034]
其区块结构如下;1)区块哈希值,避免重复的唯一识别符,带有索引区块标识;2)第一区块时间戳,记录索引时间;3)区块头,其中区块头包括;4)区块大小,记录本区块大小;5)索引大小,记录被索引区块片段的总大小,所述被索引区块片段即为上文中的与所述第一数据类型区块链中的第一数据类型区块进行关联的所述第二数据类型区块链上的多个连续第二数据类型区块;6)索引数量,记录被索引区块片段的区块数量;其中,所述区块头由于不参与共识,该结构内的所有内容都是确定性的,并且与历史存档节点的索引关联区块对应,其包括:a)索引区块序号,记录其为第几次索引;b)第一索引区块哈希值;c)区块高度h1,被索引区块的第一个区块的高度值;d)区块高度h2,被索引区块的最后一个区块的高度值;e)索引哈希,被索引区块所有区块头信息串联的哈希值,用来验证索引内容是否被篡改;f)第二哈希,发起此次索引动作的区块哈希值。
[0035]
实施例五如图4所示,其为第三数据类型区块链,其中第三数据类型区块包括索引关联区块和历史存档记录,其中所述历史存档记录为历次从第一数据类型区块链中部分区块链片段,并
依照时间顺序,逐步增加;索引关联区块,其存在于历史存档节点上,其实际为上述实施例中的所述第一数据类型区块链中的第一数据类型区块为所述第二数据类型区块链上的多个连续第二数据类型区块的关联区块。
[0036]
其区块结构如下:1)区块哈希值,避免重复的唯一识别符,带有索引关联区块标识;2)第二区块时间戳,记录存档时间;3)区块头,内容见下;4)区块肩,内容见下;5)区块体,内容见下;6)区块大小,记录本区块大小;7)索引大小,记录被索引区块片段的总大小;8)索引数量,记录被索引区块片段的区块数量。
[0037]
其中,所述区块头由于不参与共识,此处所有内容都是确定性的,并且与记账节点的索引区块对应,其包括:a)索引区块序号,记录是第几次索引;b)第一索引区块哈希值;c)区块高度h1,被索引区块的第一个区块的高度值;d)区块高度h2,被索引区块的最后一个区块的高度值;e)索引哈希,被索引区块所有区块头信息串联的哈希值,用来验证索引内容是否被篡改;f)第二哈希,发起此次索引动作的区块哈希值。
[0038]
其中,所述区块肩为本申请自定义的一种数据结构,其独立于区块头之外,与其他区块建立哈希锁数据关联。即为在上述实施例中的第二区块链的区块中用来存储与第一区块链相关联的数据,其包括:a)历史存档记录中第一个区块哈希;b)历史存档记录中的最后一个区块哈希;c)区块体表根哈希,由其某一历史存档记录中所有区块的区块识别符顺序串联所取的哈希;其中,区块体依次列表列出被索引区块片段中区块的以下信息:a)区块识别符,区块哈希值前8位;b)区块高度;c)区块大小;d)交易数;e)其他有助于查询的相关信息(小于256 byte)。
[0039]
实施例六、如图5所示,记账节点在创建新的索引区块时,区块头中使用到前一个索引区块的区块头哈希,即第一索引区块哈希值,该值是对该区块头内容(见上述区块头)取哈希。这样就将前后两个索引区块锁连起来。
[0040]
索引区块的加入是嵌入式,即新的索引区块是加入到旧的索引区块和当前区块段中最早的普通区块之间。
[0041]
实施例七、如图6所示,最新的索引区块并不与后面连接的最早的当前普通区块建立哈希锁,而是保留了该区块的哈希锁指向被历史存档节点维护的历史存档区块中最新一个普通区块。
[0042]
这种状态下,历史存档节点难以作恶篡改历史数据,因为这些数据被关联到现用区块中,而后者被记账节点所显性可信维护,受到去中心化监督。
[0043]
因此,历史存档节点的中心化状态被上述的隐性可信维护设计所抵消,尽管形式上为中心化管理,其内容保持去中心化,保证了整个系统账本的高效性和高度可信性。
[0044]
实施例八、本申请中两种节点的数据之间关联采用如下方式:记账节点上的索引区块与现用区块呈早晚时序序列;历史存档节点上的历史存档记录呈早晚时序序列;记账节点上的现用账本首区块锚定了历史存档节点上的最后一个历史存档记录的本尾区块;记账节点上的新索引区块插入索引区后端与现用账本区之间;历史存档节点上的新历史存档记录附着在已存在的历史存档记录后面;记账节点索引区块区块头 = 历史存档节点索引关联区块区块头;记账节点索引区块区块头形成一条不可逆区块数据锁链;历史存档节点索引关联区块区块头形成一条不可逆区块数据锁链;以上两条锁链由不同节点生成和维护,内容完全一致,可共识,防止跨节点作恶;历史存档节点索引关联区块区块肩形成一条不可逆区块数据锁链,保证索引内容和对象的锚定和不可篡改。
[0045]
其中,所述现用区块是指现用账本所在的区块链片段中的区块。
[0046]
实施例九、参见图7所示,如果需要查询数据,其查询过程如下:查询某一交易数据,向p2p网络发出查询请求;记账节点收到查询请求,若内容所在的区块高度在现用账本内,则返回查询数据;若内容所在的区块高度早于现用账本,将请求标记为查档请求转发给历史存档节点群;历史存档节点收到请求,返回查询数据给请求者。
[0047]
实施例十、本申请中的参数的设置条件,以2020年以太坊类区块链为例说明:索引激活大小,其通常500gb;触发索引建立动作的记账节点区块链大小。可以使用物理容量,也可使用区块的数量,这里使用物理容量,比使用区块数量稳定可靠。
[0048]
被索引区大小:5年前的区块高度t之前部分,或者40%的索引激活大小对应的区块高度v之前部分,取t和v中较小的值。
[0049]
索引关联区块单区块容量上限:10mb。
[0050]
对于使用区块体的索引关联区块,由于带有每个被归档区块的信息,区块数量对于有些区块链可能会很庞大,若超过上限值,则可使用多区块来延长。
[0051]
实施例十一、在上述实施例的基础上,本公开实施例提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行如上实施例所述的方法步骤。
[0052]
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、rf(射频)等等,或者上述的任意合适的组合。
[0053]
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
[0054]
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(an)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0055]
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令
的组合来实现。
[0056]
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
[0057]
以上介绍了本发明的较佳实施方式,旨在使得本发明的精神更加清楚和便于理解,并不是为了限制本发明,凡在本发明的精神和原则之内,所做的修改、替换、改进,均应包含在本发明所附的权利要求概括的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1