CN111078790A - 区块链中孤块数据的同步方法、系统及存储介质 - Google Patents

区块链中孤块数据的同步方法、系统及存储介质 Download PDF

Info

Publication number
CN111078790A
CN111078790A CN201911225749.5A CN201911225749A CN111078790A CN 111078790 A CN111078790 A CN 111078790A CN 201911225749 A CN201911225749 A CN 201911225749A CN 111078790 A CN111078790 A CN 111078790A
Authority
CN
China
Prior art keywords
block
data
isolated
configuration information
blocks
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201911225749.5A
Other languages
English (en)
Other versions
CN111078790B (zh
Inventor
陈浩
陈建秋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fuzhou Boquan Network Technology Co Ltd
Original Assignee
Fuzhou Boquan Network Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fuzhou Boquan Network Technology Co Ltd filed Critical Fuzhou Boquan Network Technology Co Ltd
Priority to CN201911225749.5A priority Critical patent/CN111078790B/zh
Publication of CN111078790A publication Critical patent/CN111078790A/zh
Application granted granted Critical
Publication of CN111078790B publication Critical patent/CN111078790B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/389Keeping log of transactions for guaranteeing non-repudiation of a transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Finance (AREA)
  • Databases & Information Systems (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Technology Law (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及区块链技术领域,具体涉及一种区块链中孤块数据的同步方法、系统及存储介质,包括以下步骤:步骤1、数据同步模块根据区块高度配置信息获取区块链当前所有区块的数据;步骤2、孤块检测模块判断已经同步的区块数据中是否出现孤块并修改所述区块高度配置信息;步骤3、孤块分析模块从已经同步的区块数据中找出所有孤块的哈希值;重复执行上述步骤1至步骤3,实现孤块数据的持续同步。本申请的方法可自动检测孤块发生事件并自动修复同步,同时保留了孤块的数据不仅可以提高数据同步的效率,也可以提供主链数据和侧链数据的查询,应用更加广泛。

Description

区块链中孤块数据的同步方法、系统及存储介质
技术领域
本申请涉及区块链技术领域,具体涉及一种区块链中孤块数据的同步方法、系统及存储介质。
背景技术
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息,用于验证其信息的有效性和生成下一个区块。
由于区块链去中心化的特性,其无法提供一个中心化的服务来查询每个用户的余额、历史记录或浏览链上的数据信息。在这种情况下,通常是由同步工具负责获取并分析区块链上每个区块的数据,比如区块头,交易,地址流水等信息,将其保存到关系数据库中,方便其他区块链应用从各个维度查询区块链中的数据,或批量查询区块链中的数据并进行分组统计等操作。这里的区块链应用可以是钱包类应用,也可以是区块链浏览器应用等。
在区块链的区块生成过程中,不同节点有可能在短时间内同时生成下一个区块并广播到区块链上,其它节点会在最先收到的区块基础上继续工作,这样就使得区块链在同一个高度上出现了不同的下一区块,区块链发生短暂的分叉。随着后续区块的不断产生,区块链会按照最长链原则,将最长的分叉链作为主链,所有节点在此基础上继续工作,而被放弃的分叉链接都成为了侧链,侧链上的区块称为孤块。对于区块链数据同步工具而言,当其在同步区块数据的时候,并无法知道该区块后续是否会被其他的最长链所替代,可能会出现之前已经同步的区块数据变成了孤块,而主链区块数据还未同步的情况。这时就需要区块链同步工具将已经保存到数据库的侧链上的区块数据信息替换为主链上的区块数据信息。目前区块链同步工具在对区块链孤块同步的处理上主要存在以下几个问题:1.需要开发人员人工判断孤块发生事件,缺乏自动修复方法,需要停止同步程序修复孤块数据,缺乏时效性和便利性,导致服务在较长时间服务的数据不对;2.在大区块的情况下,关系数据库中的数据快速增长,删除操作会非常慢,影响后续的同步进度;3.侧链上的区块中发生的交易历史事件,无法查询做进一步分析。
发明内容
本发明的目的之一在于克服以上缺点,提供一种区块链中孤块数据的同步方法,既能实现区块链中孤块数据的自动同步获取,同时提高同步效率,应用场景更广泛。
为了解决上述技术问题,本发明提供了一种区块链中孤块数据的同步方法,包括以下步骤:
步骤1、数据同步模块根据区块高度配置信息获取区块链当前所有区块的数据;
步骤2、孤块检测模块判断已经同步的区块数据中是否出现孤块并修改所述区块高度配置信息;
步骤3、孤块分析模块从已经同步的区块数据中找出所有孤块的哈希值;
重复执行上述步骤1至步骤3,实现孤块数据的持续同步。
本申请的技术方案中,孤块检测模块判断区块链中是否出现分叉并动态更新区块高度配置信息,自动检测孤块发生事件并修复,无需人工干预;数据同步模块与孤块检测模块并行工作,根据区块高度配置信息同步区块数据信息,可实现区块链数据的主链数据和侧链孤块数据的自动全量同步。
进一步地,所述的区块链中孤块数据的同步方法,还包括以下步骤:
步骤4、数据浏览模块根据所述孤块的哈希值检索并展示区块链的主链数据和/或侧链数据。
本申请技术方案无需删除已经同步的孤块的数据,一方面,减少了大量数据删除的时间,提高了数据同步的效率,另一方面,也为侧链上的孤块数据的展示,区块链孤链频率分析等应用提供了数据基础。
进一步地,所述区块高度配置信息包括:第一配置信息和第二配置信息。
进一步地,所述“数据同步模块根据区块高度配置信息获取区块链当前所有区块的数据”,包括以下步骤:
步骤11、初始化所述第一配置信息和所述第二配置信息;
步骤12、获取区块链的最大区块高度;
步骤13、判断区块链的最大区块高度是否大于所述第二配置信息中的最大区块高度,若是,跳转至步骤15继续执行,否则执行步骤14;
步骤14、等待设定的时间后,跳转至步骤12继续执行;
步骤15、设置当前同步的区块高度值为所述第二配置信息中的最大区块高度加1;
步骤16、将当前同步的区块高度值配置到所述第一配置信息中;
步骤17、采集当前同步的区块高度值对应的区块数据;
步骤18、将当前同步区块高度值配置到所述第二配置信息中,跳转至步骤13继续执行。
进一步地,所述“孤块检测模块判断已经同步的区块数据中是否出现孤块并修改所述区块高度配置信息”,包括以下步骤:
步骤21、判断已经同步的区块数据中指定数量个最新区块的哈希值与区块链中对应高度区块的哈希值是否完全一致,若完全一致,则跳转至步骤24继续执行,否则执行步骤22;
步骤22、取哈希值不一致的最小区块高度值;
步骤23、从所述第一配置信息和所述第二配置信息中分别删除大等于所述最小区块高度值的配置信息;
步骤24、等待设定的时间后,跳转至步骤21继续执行。
进一步地,所述“孤块分析模块从已经同步的区块数据中找出所有孤块的哈希值”,包括以下步骤:
步骤31、从已经同步的区块数据中找出区块个数大等于两个的区块高度值的集合;
步骤32、按照从小到大的顺序选取所述集合中的一个区块高度值,获取该区块高度值对应的所有区块;
步骤33、针对该区块高度值对应的每个区块,通过递归的方式分别计算以该区块为根节点的树的深度;
步骤34、将所有树中最大深度路径之外的区块标识为孤块并记录孤块的哈希值;
遍历所述集合中所有的区块高度值,重复执行步骤32至步骤34,得到所有的孤块哈希值;
步骤35、等待设定的时间后,跳转至步骤31继续执行。
进一步地,所述步骤34还包括:将区块成熟度在设定参数值以上的孤块的哈希值保存至孤块缓冲区;所述步骤31具体为:从已经同步且不在所述孤块缓冲区的区块数据中找出区块个数大等于两个的区块高度值的集合。
通过设置孤块缓冲区,在重复执行孤块分析的时候,排除已经确定且不会发生变化的孤块,只需要分析最新生成的其余区块,不用每次全量分析,进一步提高了分析效率。
相应地,本申请还提供了一种区块链中孤块数据的同步系统,包括数据同步模块、孤块检测模块以及孤块分析模块,其中,
数据同步模块,用于根据区块高度配置信息获取区块链当前所有区块的数据;
孤块检测模块,用于判断已经同步的区块数据中是否出现孤块并修改所述区块高度配置信息;
孤块分析模块,用于从已经同步的区块数据中找出所有孤块的哈希值。
进一步地,所述的区块链中孤块数据的同步系统,还包括:
数据浏览模块,用于根据所述孤块的哈希值检索并展示区块链的主链数据和/或侧链数据。
相应地,本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如权利要求1至权利要求7任一项所述的步骤。
区别于现有技术,本发明技术方案的有益效果有:
1.孤块检测模块判断区块链中是否出现分叉并动态更新区块高度配置信息,动检测孤块发生事件并修复,无需人工干预;数据同步模块与孤块检测模块并行工作,根据区块高度配置信息同步区块数据信息,可实现区块链数据的主链数据和侧链孤块数据的自动全量同步。
2.无需删除已经同步的孤块的数据,一方面,减少了大量数据删除的时间,提高了数据同步的效率,另一方面,也为侧链上的孤块数据的展示,区块链孤链频率分析等应用提供了数据基础。
3.通过设置孤块缓冲区,在重复执行孤块分析的时候,排除已经确定且不会发生变化的孤块,只需要分析最新生成的其余区块,不用每次全量分析,进一步提高了分析效率。
附图说明
图1是本发明一种区块链中孤块数据的同步方法的步骤流程图。
图2是本发明数据同步模块根据区块高度配置信息获取区块链当前所有区块的数据的步骤流程图。
图3是本发明孤块检测模块判断已经同步的区块数据中是否出现孤块并修改所述区块高度配置信息的步骤流程图。
图4是本发明孤块分析模块从已经同步的区块数据中找出所有孤块的哈希值的步骤流程图。
图5是本发明一种区块链中孤块数据的同步系统的架构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1,是本发明一种区块链中孤块数据的同步方法的步骤流程图,包括以下步骤:
步骤1、数据同步模块根据区块高度配置信息获取区块链当前所有区块的数据;
由于区块链节点底层采用非关系型数据库做索引,用文件来存区块链的原始信息,因此区块链节点无法支持复杂,灵活的查询请求。比如,它只能查询单个区块头的信息,或者单个交易的信息,无法像关系数据库那样批量查询数据,并且对返回的数据集做分类,排序等操作。因此,本申请通过数据同步模块将区块链中所有的区块数据同步到数据库中,这里的数据包括区块头,交易,交易流水等信息,这样可以方便区块链钱包或区块链浏览器等应用从不同维度查询区块链中的数据或批量查询区块链中的数据。
区块链是由多个区块数据按照顺序形成的一个链表,每个区块的区块头中的都填写了上一个区块的哈希值,这样保证区块链中的区块既不会被篡改,也不会乱序,同时区块链的区块高度,即区块的个数也随着时间的推移在不断地增加。本申请中所述的区块高度配置信息主要用于数据同步模块同步数据时的逻辑控制,具体地又分为第一配置信息和第二配置信息。其中,第一配置信息表示数据同步模块最近一次同步的区块的高度值,主要用于数据同步模块异常出错后重新启动时的数据恢复处理;第二配置信息配置了已经完成同步的所有区块高度值,数据同步模块每次启动时候会继续同步其中最大区块高度之后的区块数据。
如图2,是本发明数据同步模块根据区块高度配置信息获取区块链当前所有区块的数据的步骤流程图,包括以下步骤:
步骤11、初始化第一配置信息和第二配置信息;通常地,只有首次执行同步区块链的区块数据时候,可以分别向第一配置信息和第二配置信息中写入一条值为0的数据,后续不再执行初始化操作。每次数据同步模块启动时候根据现有的区块高度配置信息值进行后续处理。
步骤12、获取区块链的最大区块高度;由于区块链的区块高度在不断增加,因此数据同步模块每次都必须取当前最大区块高度来判断是否需要进行区块数据同步。
步骤13、判断区块链的最大区块高度是否大于第二配置信息中的最大区块高度,若是,则说明区块链有新增区块需要同步数据,则跳转至步骤15继续执行,否则执行步骤14;
步骤14、等待设定的时间后,跳转至步骤12重新获取区块链的最大区块高度并判断是否需要进行数据同步;
步骤15、设置当前同步的区块高度值为第二配置信息中的最大区块高度加1,即下一个同步的区块高度值;
步骤16、将当前同步的区块高度值配置到第一配置信息中;此步骤的目的是为了记录当前同步的区块的高度值,主要用于数据同步模块异常出错后重新启动时的异常恢复处理。例如,当前已同步的最大区块高度为999,数据同步模块在获取下一区块高度为1000的区块数据时候,先向第一配置信息中写入一条值为1000的记录,若同步过程中因为某些原因出错中断,下一次重新启动后,发现已同步的最大区块高度为999,但上一次同步区块高度值为1000,就可以知道最近一次同步区块数据时出现异常,可删除区块高度值1000相应的数据重新进行同步。
步骤17、采集当前同步的区块高度值对应的区块数据;数据同步模块从区块链上读取当前同步的区块高度值对应的区块数据,根据格式进行解析,保存至数据库中。这里解析出的数据可以是区块链的原始数据信息,例如区块头,交易数据,也可以是经过分析统计后的汇总数据以满足应用的需要。在具体的应用场景中,可采取一个或者多个Mongo数据库的实例来保存同步的区块链数据,Mongo实例可以动态增长以满足区块链的数据增长。
步骤18、将当前同步区块高度值配置到第二配置信息中,跳转至步骤13继续执行。当一个区块的数据同步完成之后,数据同步模块将当前同步区块高度值配置到第二配置信息中,下次同步可以排除该区块高度,只同步后续的区块。
通过上述的步骤,数据同步模块每次启动后,先进行上次异常退出的数据恢复处理,然后不断查询区块链的当前最大区块高度,若发现有变化则进行区块数据同步,否则等待一段时间后继续重复执行,实现了对区块链上区块数据的实时同步更新。
步骤2、孤块检测模块判断已经同步的区块数据中是否出现孤块并修改所述区块高度配置信息;如图3,是本发明孤块检测模块判断已经同步的区块数据中是否出现孤块并修改所述区块高度配置信息的步骤流程图,包括以下步骤:
步骤21、判断已经同步的区块数据中指定数量个最新区块的哈希值与区块链中对应高度区块的哈希值是否完全一致,若完全一致,则跳转至步骤24继续执行,否则执行步骤22;由于区块链中每个区块的区块头中保存了当前块的哈希值信息,若已经同步的区块的哈希值与区块链上对应高度区块的哈希值不一致,则说明区块链上的区块根据最长链原则发生了变化,原先的区块变成了孤块。另外,由于区块链的分叉一般不会包含太多区块,例如比特币区块链,通常最多只有6个区块,因此通过设置只要判断指定数量个最新区块,可以提高判断的效率,例如,设置指定数量为20,只需判断已经同步的区块数据中最新的20个区块是否发生了变化即可,其他的区块不用进行判断。
步骤22、取哈希值不一致的最小区块高度值,该高度值为区块链分叉的起始区块高度。
步骤23、从第一配置信息和第二配置信息中分别删除大等于所述最小区块高度值的配置信息;这样,数据同步模块在下一次同步的时候,根据第一配置信息和第二配置信息进行判断,认为所述最小区块高度值开始之后的区块还没有同步过,则自动重新同步发生变化的区块,而原先同步的孤链的区块数据也被保留下来。
步骤24、等待设定的时间后,跳转至步骤21继续执行。
步骤3、孤块分析模块从已经同步的区块数据中找出所有孤块的哈希值;如图4,是本发明孤块分析模块从已经同步的区块数据中找出所有孤块的哈希值的步骤流程图,包括以下步骤:
步骤31、从已经同步的区块数据中找出区块个数大等于两个的区块高度值的集合;由于已经同步的区块数据中包含了主链上的区块数据和侧链上的区块数据,因此在同一个区块高度可能存在有多个的区块数据,当前已同步区块数据中所有区块个数大等于两个的区块高度值的集合中包含了所有的孤块高度值。
步骤32、先按照从小到大的顺序对所述集合中的区块高度值进行排序,然后选取最小的区块高度值,获取该区块高度值对应的所有区块信息。
步骤33、针对该最小区块高度值对应的每个区块,通过递归的方式分别计算以该区块为根节点的树的深度。
步骤34、根据区块链处理分叉时候的最长链原则,以该最小区块高度值对应的所有区块为根节点的树中,只有最大深度路径上的区块才是主链上的区块,其他路径上的区块均为侧链上的孤块,因此可以将所有树中最大深度路径之外的区块标识为孤块并记录孤块的哈希值,通常可以将找到的孤块的哈希值记录到数组中。
按照顺序遍历所述集合中所有的区块高度值,重复执行步骤32至步骤34,得到所有的孤块哈希值。优选地,在遍历后续的区块高度值进行相同处理的时候,可以将已经在数组中的孤块信息进行排除,可减少递归计算该区块为根节点的树的深度的次数,提高分析效率。
步骤35、等待设定的时间后,跳转至步骤31继续执行。通过不断重复执行上述步骤31至步骤35,孤块分析模块可以随着区块链数据的同步,持续地分析出新增的孤块信息。
在一优选的实施例中,所述步骤34还包括:将区块成熟度在设定参数值以上的孤块的哈希值保存至孤块缓冲区,这里的区块成熟度指的是区块链当前最大高度与孤块高度的差值,如前面提到的,区块链同时存在的分叉链的长度通常不会增长太长,就会根据最长链原则进行合并统一,因此,可根据经验设置一个成熟度值,例如,设置为100,表示孤块高度与区块链当前最大高度的差值大于100的区块基本上不会再发生变化,可以确定为永久孤块,保存至孤块缓冲区。所述步骤31具体为:从已经同步且不在所述孤块缓冲区的区块数据中找出区块个数大等于两个的区块高度值的集合,当休眠等待一段时间或孤块分析模块重新启动的时候,可以将永久孤块从本次的分析对象中排除,减少分析数量,提高分析效率。
本申请中,数据同步模块、孤块检测模块和孤块分析模块分别独立运行,数据同步模块与孤块检测模块之间通过区块高度配置信息控制区块链分叉时候的主链数据和侧链数据的自动同步采集,孤块分析模块则根据同步的数据分析统计出孤块的哈希值,给后续的应用提供数据基础,重复执行上述步骤1至步骤3,实现孤块数据的持续同步。
在一优选的实施例中,本申请所述的区块链中孤块数据的同步方法,还包括以下步骤:
步骤4、数据浏览模块根据所述孤块的哈希值检索并展示区块链的主链数据和/或侧链数据。经过前面的步骤处理,区块链的全部数据已经被保存到数据库中,浏览器类应用要查询主链数据,则可以查询的时候将分析出的孤块数据排除在外;若要查询侧链数据,则只根据孤块分析模块统计的孤块的哈希值进行展示即可;如果查询的是整个区块链的历史数据,则可以根据要查询的区块高度,将孤块和非孤块都显示出来,形成主链和侧链并存的结果。
下面,以一具体的实施例来进一步说明本申请所述的区块链中孤块数据的同步方法,首先,在网络中部署一个或者多个Mongo数据库的实例作为区块链数据存储区,Mongo实例的磁盘总大小应该在1T以上,Mongo实例可以动态增长。同时,在网络中部署一个或者多个区块链的全节点实例,全节点实例必须更新区块到最新高度。
步骤1、数据同步模块根据区块高度配置信息获取区块链当前所有区块的数据,包括以下步骤:
步骤11、首次执行同步区块链的区块数据时候,可以分别向第一配置信息和第二配置信息中写入一条值为0的数据,后续不再执行初始化操作。
步骤12、获取到当前区块链的最大区块高度为14510。
步骤13、假设当前第二配置信息中的最大区块高度为14500,则区块链的最大区块高度大于已同步的最大区块高度,说明区块链有新增区块需要同步数据,则跳转至步骤15继续执行,否则执行步骤14;
步骤14、等待10秒,跳转至步骤12重新获取区块链的最大区块高度并判断是否需要进行数据同步;
步骤15、设置当前同步的区块高度值为第二配置信息中的最大区块高度加1,即下一个同步的区块高度值14501;
步骤16、将当前同步的区块高度值配置到第一配置信息中,即向第一配置信息中写入一条值为14501的记录。
步骤17、采集当前同步的区块高度值14501对应的区块数据;数据同步模块从区块链上读取当前同步的区块高度值对应的区块数据,根据格式进行解析,保存至数据库中。
步骤18、将当前同步区块高度值配置到第二配置信息中,即向已经同步区块高度配置信息中写入一条值为14501的记录,并跳转至步骤13继续执行。
重复执行步骤13至步骤18,完成14502、14503…14510对应高度的区块数据同步,然后等待10秒后,跳转至步骤12继续执行。通过上述的步骤,数据同步模块实现了对区块链上区块数据的实时同步更新。
步骤2、孤块检测模块判断已经同步的区块数据中是否出现孤块并修改所述区块高度配置信息,包括以下步骤:
步骤21、判断已经同步的区块数据中100个最新区块的哈希值与区块链中对应高度区块的哈希值是否完全一致,若完全一致,说明没有分叉发生,则跳转至步骤24继续执行,否则执行步骤22;假设当前发现已经同步的区块高度为14508,14509,14510的区块哈希值与区块链中对应高度区块的哈希值不一致。
步骤22、取哈希值不一致的最小区块高度值14508,该高度值为区块链分叉的起始区块高度。
步骤23、从第一配置信息和第二配置信息中分别删除大等于14508的所有配置信息;这样,数据同步模块在下一次同步的时候,根据第一配置信息和第二配置信息判断,以为14508开始之后的区块还没有同步过,则自动重新同步14508开始之后的发生变化的区块数据,而原先同步的14508、14509、14510的孤链的区块数据也被保留下来。
步骤24、等待1分钟的时间后,跳转至步骤21继续执行。
步骤3、孤块分析模块从已经同步的区块数据中找出所有孤块的哈希值,包括以下步骤:
步骤31、从已经同步且不在孤块缓冲区的区块数据中找出区块个数大等于两个的区块高度值的集合,该集合包括的区块高度为14508、14509、14510,每个区块高度均包含两个区块信息。
步骤32、先按照从小到大的顺序对所述集合中的区块高度值进行排序,然后选取最小的区块高度值14508,获取该区块高度值对应的所有区块信息。
步骤33、针对该最小区块高度值14508对应的两个区块,通过递归的方式分别计算每个区块为根节点的树的深度,假设以这两个区块为根节点的树的深度分别为3和4。
步骤34、根据区块链处理分叉时候的最长链原则,以该最小区块高度值14508对应的两个区块为根节点的树中,只有最大深度4所在路径上的区块才是主链上的区块,深度为3所在路径上的区块均为侧链上的孤块,因此可以将深度为3所在路径上的区块标识为孤块并记录孤块的哈希值记录到数组中,同时将区块成熟度在100以上的孤块的哈希值保存至孤块缓冲区。
继续遍历所述集合中其他的区块高度值14509、14510,重复执行步骤32至步骤34,得到所有的孤块哈希值。在遍历后续的区块高度值14509、14510进行相同处理的时候,可以将已经在数组中的孤块信息进行排除,可减少递归计算该区块为根节点的树的深度的次数,提高分析效率。
步骤35、等待1分钟后,跳转至步骤31继续执行。通过不断重复执行上述步骤31至步骤35,孤块分析模块可以随着区块链数据的同步,持续地分析出新增的孤块信息。
步骤4、数据浏览模块根据所述孤块的哈希值检索并展示区块链的主链数据和/或侧链数据。
在另一实施例中,本申请提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一实施例所述的步骤。
图5是本发明一种区块链中孤块数据的同步系统的架构图,包括数据同步模块、孤块检测模块以及孤块分析模块,其中,
数据同步模块,用于根据区块高度配置信息获取区块链当前所有区块的数据;本申请通过数据同步模块将区块链中所有的区块数据同步到数据库中,这里的数据包括区块头,交易,交易流水等信息,这样可以方便区块链钱包或区块链浏览器等应用从不同维度查询区块链中的数据或批量查询区块链中的数据。所述的区块高度配置信息主要用于数据同步模块同步数据时的逻辑控制,具体地又分为第一配置信息和第二配置信息。其中,第一配置信息表示数据同步模块最近一次同步的区块的高度值,主要用于数据同步模块异常出错后重新启动时的数据恢复处理;第二配置信息配置了已经完成同步的所有区块高度值,数据同步模块每次启动时候会继续同步其中最大区块高度之后的区块数据。
孤块检测模块,用于判断已经同步的区块数据中是否出现孤块并修改所述区块高度配置信息;孤块检测模块判断已经同步的区块数据中指定数量个最新区块的哈希值与区块链中对应高度区块的哈希值是否完全一致,若一致说明没有孤块出现,若不一致说明有孤块出现,则取哈希值不一致的最小区块高度值,该高度值为区块链分叉的起始区块高度,从第一配置信息和第二配置信息中分别删除大等于所述最小区块高度值的配置信息,并等待设定的时间后重新检测。这样,数据同步模块在下一次同步的时候,根据第一配置信息和第二配置信息判断,认为所述最小区块高度值开始之后的区块还没有同步过,则自动重新同步发生变化的区块,原先同步的孤链的区块数据也被保留下来。
孤块分析模块,用于从已经同步的区块数据中找出所有孤块的哈希值。孤块分析模块从已经同步的区块数据中找出区块个数大等于两个的区块高度值的集合,按照从小到大的顺序对所述集合中的区块高度值进行排序,然后选取最小的区块高度值,获取该区块高度值对应的所有区块信息,通过递归的方式分别计算以该区块为根节点的树的深度,将不在最大深度路径上的区块标识为孤块并记录孤块的哈希值;按照顺序遍历所述集合中所有的区块高度值,得到所有的孤块哈希值。
在一优选的实施例中,所述的区块链中孤块数据的同步系统,还包括:
数据浏览模块,用于根据所述孤块的哈希值检索并展示区块链的主链数据和/或侧链数据。经过前面的步骤处理,区块链的全部数据已经被保存到数据库中,浏览器类应用要查询主链数据,则可以查询的时候将分析出的孤块数据排除在外;若要查询侧链数据,则只根据孤块分析模块统计的孤块的哈希值进行展示即可;如果查询的是整个区块链的历史数据,则可以根据要查询的区块高度,将孤块和非孤块都显示出来,形成主链和侧链并存的结果。
本申请所述的区块链中孤块数据的同步系统中,数据同步模块、孤块检测模块和孤块分析模块分别独立运行,数据同步模块与孤块检测模块之间通过区块高度配置信息控制区块链分叉时候的主链数据和侧链数据的自动同步采集,孤块分析模块则根据同步的数据分析统计出孤块的哈希值,给后续的应用提供数据基础,实现孤块数据的持续同步。
上述具体实施方式只是对本发明的技术方案进行详细解释,本发明并不只仅仅局限于上述实施例,凡是依据本发明原理的任何改进或替换,均应在本发明的保护范围之内。

Claims (10)

1.一种区块链中孤块数据的同步方法,其特征在于,包括以下步骤:
步骤1、数据同步模块根据区块高度配置信息获取区块链当前所有区块的数据;
步骤2、孤块检测模块判断已经同步的区块数据中是否出现孤块并修改所述区块高度配置信息;
步骤3、孤块分析模块从已经同步的区块数据中找出所有孤块的哈希值;
重复执行上述步骤1至步骤3,实现孤块数据的持续同步。
2.如权利要求1所述的区块链中孤块数据的同步方法,其特征在于,还包括以下步骤:
步骤4、数据浏览模块根据所述孤块的哈希值检索并展示区块链的主链数据和/或侧链数据。
3.如权利要求1所述的区块链中孤块数据的同步方法,其特征在于,所述区块高度配置信息包括第一配置信息和第二配置信息第一配置信息第二配置信息。
4.如权利要求2所述的区块链中孤块数据的同步方法,其特征在于,所述“数据同步模块根据区块高度配置信息获取区块链当前所有区块的数据”,包括以下步骤:
步骤11、初始化所述第一配置信息和所述第二配置信息;
步骤12、获取区块链的最大区块高度;
步骤13、判断区块链的最大区块高度是否大于所述第二配置信息中的最大区块高度,若是,跳转至步骤15继续执行,否则执行步骤14;
步骤14、等待设定的时间后,跳转至步骤12继续执行;
步骤15、设置当前同步的区块高度值为所述第二配置信息中的最大区块高度加1;
步骤16、将当前同步的区块高度值配置到所述第一配置信息中;
步骤17、采集当前同步的区块高度值对应的区块数据;
步骤18、将当前同步区块高度值配置到所述第二配置信息中,跳转至步骤13继续执行。
5.如权利要求2所述的区块链中孤块数据的同步方法,其特征在于,所述“孤块检测模块判断已经同步的区块数据中是否出现孤块并修改所述区块高度配置信息”,包括以下步骤:
步骤21、判断已经同步的区块数据中指定数量个最新区块的哈希值与区块链中对应高度区块的哈希值是否完全一致,若完全一致,则跳转至步骤24继续执行,否则执行步骤22;
步骤22、取哈希值不一致的最小区块高度值;
步骤23、从所述第一配置信息和所述第二配置信息中分别删除大等于所述最小区块高度值的配置信息;
步骤24、等待设定的时间后,跳转至步骤21继续执行。
6.如权利要求1所述的区块链中孤块数据的同步方法,其特征在于,所述“孤块分析模块从已经同步的区块数据中找出所有孤块的哈希值”,包括以下步骤:
步骤31、从已经同步的区块数据中找出区块个数大等于两个的区块高度值的集合;
步骤32、按照从小到大的顺序选取所述集合中的一个区块高度值,获取该区块高度值对应的所有区块;
步骤33、针对该区块高度值对应的每个区块,通过递归的方式分别计算以该区块为根节点的树的深度;
步骤34、将所有树中最大深度路径之外的区块标识为孤块并记录孤块的哈希值;
遍历所述集合中所有的区块高度值,重复执行步骤32至步骤34,得到所有的孤块哈希值;
步骤35、等待设定的时间后,跳转至步骤31继续执行。
7.如权利要求6所述的区块链中孤块数据的同步方法,其特征在于,所述步骤34还包括:将区块成熟度在设定参数值以上的孤块的哈希值保存至孤块缓冲区;所述步骤31具体为:从已经同步且不在所述孤块缓冲区的区块数据中找出区块个数大等于两个的区块高度值的集合。
8.一种区块链中孤块数据的同步系统,其特征在于,包括数据同步模块、孤块检测模块以及孤块分析模块,其中,
数据同步模块,用于根据区块高度配置信息获取区块链当前所有区块的数据;
孤块检测模块,用于判断已经同步的区块数据中是否出现孤块并修改所述区块高度配置信息;
孤块分析模块,用于从已经同步的区块数据中找出所有孤块的哈希值。
9.如权利要求8所述的区块链中孤块数据的同步系统,其特征在于,还包括:
数据浏览模块,用于根据所述孤块的哈希值检索并展示区块链的主链数据和/或侧链数据。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1至权利要求7任一项所述的步骤。
CN201911225749.5A 2019-12-04 2019-12-04 区块链中孤块数据的同步方法、系统及存储介质 Active CN111078790B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911225749.5A CN111078790B (zh) 2019-12-04 2019-12-04 区块链中孤块数据的同步方法、系统及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911225749.5A CN111078790B (zh) 2019-12-04 2019-12-04 区块链中孤块数据的同步方法、系统及存储介质

Publications (2)

Publication Number Publication Date
CN111078790A true CN111078790A (zh) 2020-04-28
CN111078790B CN111078790B (zh) 2022-05-24

Family

ID=70312688

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911225749.5A Active CN111078790B (zh) 2019-12-04 2019-12-04 区块链中孤块数据的同步方法、系统及存储介质

Country Status (1)

Country Link
CN (1) CN111078790B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111737276A (zh) * 2020-07-17 2020-10-02 支付宝(杭州)信息技术有限公司 一种修改区块链数据的方法和系统
CN112269791A (zh) * 2020-11-30 2021-01-26 上海特高信息技术有限公司 账本索引跳表的构建方法及使用其的区块链账本处理方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170040079A (ko) * 2016-05-03 2017-04-12 안규태 블록 검증을 위한 복수의 일방향 함수를 지원하는 블록 체인
CN107368259A (zh) * 2017-05-25 2017-11-21 阿里巴巴集团控股有限公司 一种向区块链系统中写入业务数据的方法和装置
CN109117097A (zh) * 2018-09-05 2019-01-01 深圳正品创想科技有限公司 一种基于区块链的数据存储方法及系统
CN109165229A (zh) * 2018-08-23 2019-01-08 北京京东金融科技控股有限公司 本地区块同步的检验方法、装置、设备及存储介质
CN109992624A (zh) * 2019-03-15 2019-07-09 深圳前海微众银行股份有限公司 一种区块链Block chain的同步存储方法、装置及计算机设备
CN110517135A (zh) * 2019-07-26 2019-11-29 湖南天河国云科技有限公司 一种区块生成方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170040079A (ko) * 2016-05-03 2017-04-12 안규태 블록 검증을 위한 복수의 일방향 함수를 지원하는 블록 체인
CN107368259A (zh) * 2017-05-25 2017-11-21 阿里巴巴集团控股有限公司 一种向区块链系统中写入业务数据的方法和装置
CN109165229A (zh) * 2018-08-23 2019-01-08 北京京东金融科技控股有限公司 本地区块同步的检验方法、装置、设备及存储介质
CN109117097A (zh) * 2018-09-05 2019-01-01 深圳正品创想科技有限公司 一种基于区块链的数据存储方法及系统
CN109992624A (zh) * 2019-03-15 2019-07-09 深圳前海微众银行股份有限公司 一种区块链Block chain的同步存储方法、装置及计算机设备
CN110517135A (zh) * 2019-07-26 2019-11-29 湖南天河国云科技有限公司 一种区块生成方法及装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111737276A (zh) * 2020-07-17 2020-10-02 支付宝(杭州)信息技术有限公司 一种修改区块链数据的方法和系统
CN111737276B (zh) * 2020-07-17 2020-12-04 支付宝(杭州)信息技术有限公司 一种修改区块链数据的方法和系统
CN112269791A (zh) * 2020-11-30 2021-01-26 上海特高信息技术有限公司 账本索引跳表的构建方法及使用其的区块链账本处理方法
CN112269791B (zh) * 2020-11-30 2024-04-05 上海特高信息技术有限公司 一种区块链账本处理方法

Also Published As

Publication number Publication date
CN111078790B (zh) 2022-05-24

Similar Documents

Publication Publication Date Title
TWI702506B (zh) 用於合併樹廢棄項目指標之系統、機器可讀媒體及機器實施之方法
CN109460349B (zh) 一种基于日志的测试用例生成方法和装置
US20200334205A1 (en) Synchronizing metadata in a data storage platform comprising multiple computer nodes
US10452625B2 (en) Data lineage analysis
CN111078790B (zh) 区块链中孤块数据的同步方法、系统及存储介质
TW201837720A (zh) 用於多串流儲存裝置之串流選擇
US9672244B2 (en) Efficient undo-processing during data redistribution
CN103514274A (zh) 非关系型数据库HBase的数据迁移方法
CN110647531A (zh) 数据同步方法、装置、设备及计算机可读存储介质
CN104598299A (zh) 用于对每条接收数据执行聚合处理的系统和方法
CN111913925A (zh) 一种分布式存储系统中的数据处理方法及系统
CN110597821B (zh) 数据仓库表结构变更方法及装置
CN112527801A (zh) 关系型数据库与大数据系统间的数据同步方法及系统
CN113377292A (zh) 一种单机存储引擎
CN106844694B (zh) 用于同步数据的方法及设备
CN112000649A (zh) 一种基于map reduce的增量数据同步的方法和装置
CN108182198A (zh) 存储先进控制器运行数据的控制装置和读取方法
CN117473021B (zh) 一种基于cdc方式的达梦数据库增量同步实现方法
CN110275675A (zh) 存储管理装置、存储系统及计算机可读记录介质
CN111159020B (zh) 一种应用于同步软件测试的方法和装置
CN101923553A (zh) Fat文件系统的安装方法
CN109344163A (zh) 一种数据校验方法、装置和计算机可读介质
CN115098486A (zh) 基于海关业务大数据的实时数据采集方法
CN115599793A (zh) 一种更新数据的方法、装置及存储介质
CN108563665A (zh) 一种基于大数据技术的数据处理系统及方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant