区块链链上数据结构化存储方法及系统技术方案

技术编号:23787318 阅读:29 留言:0更新日期:2020-04-15 00:36
本申请涉及区块链技术领域,具体涉及一种区块链链上数据结构化存储方法及系统。本方法包括以下步骤:数据探测模块根据最大区块高度、当前处理高度以及区块高度标志位从区块链上获取一个区块,设置区块的对应高度的第一标志位,并将区块发送给数据过滤模块;数据过滤模块将需要的交易记录解析为结构化数据,并发送给数据存储模块;数据存储模块将结构化数据进行存储;数据探测模块设置区块的对应高度的第二标志位同时对当前处理高度执行加一操作;重复执行上述步骤,实现区块链上所有区块数据的结构化存储。本方法既能实时完整地获取区块链上的数据,同时支持多种不同格式数据的结构化转换,提供可灵活扩展数据存储方式和高效的数据查询方式。

Structured data storage method and system on blockchain

【技术实现步骤摘要】
区块链链上数据结构化存储方法及系统
本申请涉及区块链
,具体涉及一种区块链链上数据结构化存储方法及系统。
技术介绍
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息,用于验证其信息的有效性和生成下一个区块。由于区块链网络所承载的数据随着时间的增长不仅数量在不断增大,而且数据的种类也花样繁多。这种情况下,要对链上数据进行存储和检索,主要存在以下几个问题:1.链上数据检索难。由于比特币网络对于数据的存储以交易核心,并非以所关注的业务为核心,加之数据量的增长,导致了链上数据检索的困难。2.将链上数据进行结构化存储难。若一个大区块存储2G数据,平均每十分钟出一个区块,则一天有288G数据,而且随着越来越多的企业将各自的数据上链,链上数据的种类越来越多,各种数据的结构化方式有所不同,这都导致了结构化数据存储十分不方便。3.如何处理区块链数据回退情况。在区块链的区块生成过程中,不同节点有可能在短时间内同时生成下一个区块并广播到区块链上,其它节点会在最先收到的区块基础上继续工作,这样就使得区块链在同一个高度上出现了不同的下一区块,区块链发生短暂的分叉。随着后续区块的不断产生,区块链会按照最长链原则,将最长的分叉链作为主链,所有节点在此基础上继续工作,而被放弃的分叉链接都成为了侧链,侧链上的区块称为孤块。当出现孤块的时候,链上数据会发生变化,这导致了已经结构化存储的数据也要进行相应的回退和更新,但目前还没有一个很好的处理机制。4.如何保证数据结构化存储过程中的数据的一致性。数据以块为单位存储在链上,在对链上数据进行结构化存储的过程中,进程可能会因为各种原因(如断电)中断,需要有一套机制能够保证获取的数据即不重复也不缺失。
技术实现思路
本专利技术的目的之一在于克服以上缺点,提供一种区块链链上数据结构化存储方法,既能实时完整地获取区块链上的数据,同时支持多种不同格式数据的结构化转换,提供可灵活扩展数据存储方式和高效的数据查询方式。为了解决上述技术问题,本专利技术提供了一种区块链链上数据结构化存储方法,包括以下步骤:步骤1、数据探测模块获取区块链当前的最大区块高度;步骤2、数据探测模块设置当前处理高度初始值;步骤3、数据探测模块判断若所述当前处理高度小等于所述最大区块高度,则跳转至步骤5继续执行,否则执行步骤4;步骤4、数据探测模块等待设定的时间后跳转至步骤1继续执行;步骤5、数据探测模块根据所述当前处理高度以及区块高度标志位从区块链上获取一个区块;所述区块高度标志位包含区块链上每一区块对应高度的第一标志位和第二标志位;步骤6、数据探测模块设置所述区块的对应高度的第一标志位,并将所述区块发送给数据过滤模块;步骤7、数据过滤模块检查所述区块中的交易记录,将需要的交易记录解析为结构化数据,并发送给数据存储模块;步骤8、数据存储模块将所述结构化数据进行存储;步骤9、数据探测模块设置所述区块的对应高度的第二标志位,同时对所述当前处理高度执行加一操作,并跳转至步骤3继续执行;重复执行上述步骤,实现区块链上所有区块数据的结构化存储。本申请的方法数据探测模块通过采用对一个区块高度设置双标志位的方法来控制处理的完整性,数据过滤模块负责对自己需要的链上数据进行针对性的结构化,数据存储模块进行统一的存储管理控制,通过三个模块的分工合作实现区块链数据的结构化存储,部署灵活方便。进一步地,所述“数据探测模块根据所述当前处理高度以及区块高度标志位从区块链上获取一个区块”,具体为:步骤51、数据探测模块判断若所述当前处理高度的第一标志位已经设置,则执行步骤52,否则跳转至步骤55继续执行;步骤52、数据探测模块判断若所述当前处理高度的第二标志位已经设置,则执行步骤53,否则跳转至步骤54继续执行;步骤53、数据探测模块对所述当前处理高度执行加一操作,并跳转至步骤3继续执行;步骤54、数据探测模块调用数据存储模块删除所述当前处理高度对应的交易记录;步骤55、数据探测模块从区块链上获取所述当前处理高度对应的区块。通过对比区块高度的两个标志位,可以知道某一个块的处理情况是已经处理完成或尚未完成,若因某些原因导致的上一次处理未完成,则清除该区块高度对应的交易数据,重新处理,以保证数据的正确性和完整性。进一步地,所述数据过滤模块为多个,每个数据过滤模块各自接收所述数据探测模块发送的区块,将需要的交易记录解析为结构化数据,并发送给所述数据存储模块。针对一种数据类型可以设置一个数据过滤模块与其相对,这样无论多少种类型的结构化数据,都可以通过对应的数据过滤模块来达到支持,扩展性强,应用场景更加灵活。进一步地,所述数据存储模块包括多个数据库实例,所述“数据存储模块将所述结构化数据进行存储”,具体为:数据存储模块将所述结构化数据随机写入一个数据库实例中。数据存储模块通过设置多个数据库实例,采用随机插入的方式来解决数据量大的问题。随机插入支持无限扩容,一旦当前的数据库实例无法支持数据的容量,可以随意增加数据库实例。进一步地,所述的区块链链上数据结构化存储方法,还包括以下步骤:所述数据探测模块从区块链的内存池中获取未确认交易记录发送给所述数据过滤模块;所述数据过滤模块将需要的未确认交易记录解析为结构化数据,并发送给数据存储模块。通过获取内存池中尚未写入区块链中的交易数据,使得支持零确认交易,交易同步和查询更加实时。进一步地,所述的区块链链上数据结构化存储方法,还包括以下步骤:所述数据探测模块定时检查已处理区块的哈希值与当前区块链上对应高度区块的哈希值是否一致,若不一致,则清除所述区块高度标志位中对应高度的第二个标志位。通过控制区块高度的第二个标志位,实现在出现孤块的时候,自动地回退和更新交易数据,无需人工干预。进一步地,所述的区块链链上数据结构化存储方法,还包括以下步骤:所述数据存储模块在所有数据库实例中进行结构化数据的并发查询,并将查询结果进行汇总。数据存储模块通过设置多个数据库实例,通过并发统一查询,来实现在数据量大的情况下快速的检索,提高查询的性能。相应地,本申请还提供了一种区块链链上数据结构化存储系统,包括数据探测模块、数据过滤模块以及数据存储模块,其中,数据探测模块,用于获取区块链当前的最大区块高度;设置当前处理高度初始值,并根据所述当前处理高度以及区块高度标志位从区块链上获取一个区块;所述区块高度标志位包含区块链上每一区块对应高度的第一标志位和第二标志位;用于设置所述区块对应高度的第一标志位,并将所述区块发送给数据过滤模块;用于区块处理结束后设置本文档来自技高网
...

【技术保护点】
1.一种区块链链上数据结构化存储方法,其特征在于,包括以下步骤:/n步骤1、数据探测模块获取区块链当前的最大区块高度;/n步骤2、数据探测模块设置当前处理高度初始值;/n步骤3、数据探测模块判断若所述当前处理高度小等于所述最大区块高度,则跳转至步骤5继续执行,否则执行步骤4;/n步骤4、数据探测模块等待设定的时间后跳转至步骤1继续执行;/n步骤5、数据探测模块根据所述当前处理高度以及区块高度标志位从区块链上获取一个区块;所述区块高度标志位包含区块链上每一区块对应高度的第一标志位和第二标志位;/n步骤6、数据探测模块设置所述区块的对应高度的第一标志位,并将所述区块发送给数据过滤模块;/n步骤7、数据过滤模块检查所述区块中的交易记录,将需要的交易记录解析为结构化数据,并发送给数据存储模块;/n步骤8、数据存储模块将所述结构化数据进行存储;/n步骤9、数据探测模块设置所述区块的对应高度的第二标志位,同时对所述当前处理高度执行加一操作,并跳转至步骤3继续执行;/n重复执行上述步骤,实现区块链上所有区块数据的结构化存储。/n

【技术特征摘要】
1.一种区块链链上数据结构化存储方法,其特征在于,包括以下步骤:
步骤1、数据探测模块获取区块链当前的最大区块高度;
步骤2、数据探测模块设置当前处理高度初始值;
步骤3、数据探测模块判断若所述当前处理高度小等于所述最大区块高度,则跳转至步骤5继续执行,否则执行步骤4;
步骤4、数据探测模块等待设定的时间后跳转至步骤1继续执行;
步骤5、数据探测模块根据所述当前处理高度以及区块高度标志位从区块链上获取一个区块;所述区块高度标志位包含区块链上每一区块对应高度的第一标志位和第二标志位;
步骤6、数据探测模块设置所述区块的对应高度的第一标志位,并将所述区块发送给数据过滤模块;
步骤7、数据过滤模块检查所述区块中的交易记录,将需要的交易记录解析为结构化数据,并发送给数据存储模块;
步骤8、数据存储模块将所述结构化数据进行存储;
步骤9、数据探测模块设置所述区块的对应高度的第二标志位,同时对所述当前处理高度执行加一操作,并跳转至步骤3继续执行;
重复执行上述步骤,实现区块链上所有区块数据的结构化存储。


2.如权利要求1所述的区块链链上数据结构化存储方法,其特征在于,所述“数据探测模块根据所述当前处理高度以及区块高度标志位从区块链上获取一个区块”,具体为:
步骤51、数据探测模块判断若所述当前处理高度的第一标志位已经设置,则执行步骤52,否则跳转至步骤55继续执行;
步骤52、数据探测模块判断若所述当前处理高度的第二标志位已经设置,则执行步骤53,否则跳转至步骤54继续执行;
步骤53、数据探测模块对所述当前处理高度执行加一操作,并跳转至步骤3继续执行;
步骤54、数据探测模块调用数据存储模块删除所述当前处理高度对应的交易记录;
步骤55、数据探测模块从区块链上获取所述当前处理高度对应的区块。


3.如权利要求1所述的区块链链上数据结构化存储方法,其特征在于,所述数据过滤模块为多个,每个数据过滤模块各自接收所述数据探测模块发送的区块,将需要的交易记录解析为结构化数据,并发送给所述数据存储模块。


4.如权利要求1所述的区块链链上数据结构化存储方法,其特征在于,所述数据存储模块包括多个数据库实例,所述“数据存储模块将所...

【专利技术属性】
技术研发人员:吴浩瑜陈建秋
申请(专利权)人:福州博泉网络科技有限公司
类型:发明
国别省市:福建;35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1