一种区块链数据处理方法、装置及电子设备与流程

文档序号:30836572发布日期:2022-07-22 23:14阅读:117来源:国知局
一种区块链数据处理方法、装置及电子设备与流程

1.本发明涉及区块链技术领域,具体涉及一种区块链数据处理方法、装置及电子设备。


背景技术:

2.区块链可以看作是一个分布式计算网络,这个网络不存在中心节点,是完全分散的,要依靠所有节点间的信息交换达成共识,才能够统一行动。所有的分布式系统都会面临一致性的问题,当多个不同节点在同一个较短时间段内都挖出了区块并且将其添加到链上,并且以这个节点为基础各自发展出一条不同的后继链,区块链自身的容错功能就发挥了作用,利用“少数服从多数”的原理,所有节点都会选择后继链节点较多的那一条,抛弃另外一条,从而最终达到整个区块链网络的统一。
3.在进行区块链上的数据分析时,常用的做法是通过区块链节点程序的数据读取接口,按照区块高度,以块为单位将数据读取出来并进行数据解析,将解析后的数据按照数据分析的需求,从多个维度上重新进行组织和计算,然后存储到本地的数据库中,根据数据分析的维度多少,重新组织后的数据量会比原始数据大出几倍到几十倍甚至更多。当数据读取程序遇到数据不一致时,会造成一种回滚现象,在已读取的数据中的最新的一批区块可能已经在链上被废弃,需要用新的区块数据代替这些已经读取下来的数据,这个过程需要小心处理,否则很容易出现不可挽回的数据错误,大量的已解析数据需要进行删除,一些经过累加计算的数据还要恢复到这些区块产生之前的状态,复杂度极高,这个过程十分容易出错,继而影响对解析得到的区块数据的分析结果。


技术实现要素:

4.因此,本发明要解决的技术问题在于克服现有对读取到的区块数据的回滚处理过程易造成数据解析错误,影响数据分析结果准确性的缺陷,从而提供一种区块链数据处理方法、装置及电子设备。
5.根据第一方面,本发明实施例公开了一种区块链数据处理方法,包括:当对区块链执行区块数据读取操作时,确定所述区块链对应的回滚区块区间,所述回滚区块区间表征任一区块上链之后,使得所述区块不会被执行回滚操作的情况下所需要产生的目标数量的新区块所在的区间;启用第一区块解析线程对读取到的区块链中所述回滚区块区间对应的区块进行解析后以队列形式存储到第二数据存储单元,启用第二区块解析线程对所述区块链的区块进行解析,将解析得到的区块链中除所述回滚区块区间对应区块之外的区块数据存储在第一数据存储单元。
6.可选地,所述将解析得到的区块链中除所述回滚区块区间对应区块之外的区块数据存储在第一数据存储单元之后,所述方法还包括:当接收到用户节点的离线数据分析请求,将所述第一数据存储单元中存储的区块数据反馈给所述用户节点;当接收到用户节点的数据在线显示请求,将所述第一数据存储单元中存储的区块数据和所述第二数据存储单
元存储的区块数据进行合并显示。
7.可选地,所述方法还包括:当监控到所述区块链中新增区块,利用所述第一区块解析线程对所述新增区块进行解析后存储在所述第二数据存储单元的队列尾部;从所述第二数据存储单元的队列顶部移出相应数量的区块对应的区块数据。
8.可选地,所述方法还包括:将利用所述第一区块解析线程解析到的移出的区块对应的区块数据存储到所述第一数据存储单元。
9.可选地,所述当接收到用户节点的数据在线显示请求,将所述第一数据存储单元中存储的区块数据和所述第二数据存储单元存储的区块数据进行合并显示,包括:当所述回滚区块区间对应的区块包含被回滚区块,在被回滚区块对应的区块数据被更新前向用户节点提示显示的区块数据质量信息。
10.可选地,所述方法还包括:当所述回滚区块区间对应的区块包含被回滚区块,对所述被回滚区块对应的区块数据进行重新解析;或者,当所述回滚区块区间对应的区块包含被回滚区块,对所述被回滚区块至所述回滚区块区间对应的最新一个区块所在区间对应的区块数据进行解析。
11.根据第二方面,本发明实施例还公开了一种区块链数据处理装置,包括:确定模块,用于当对区块链执行区块数据读取操作时,确定所述区块链对应的回滚区块区间,所述回滚区块区间表征任一区块上链之后,使得所述区块不会被执行回滚操作的情况下所需要产生的目标数量的新区块所在的区间;存储模块,用于启用第一区块解析线程对读取到的区块链中所述回滚区块区间对应的区块进行解析后以队列形式存储到第二数据存储单元,启用第二区块解析线程对所述区块链的区块进行解析,将解析得到的区块链中除所述回滚区块区间对应区块之外的区块数据存储在第一数据存储单元。
12.可选地,所述装置还包括:第一处理模块,用于当接收到用户节点的离线数据分析请求,将所述第一数据存储单元中存储的区块数据反馈给所述用户节点;第二处理模块,用于当接收到用户节点的数据在线显示请求,将所述第一数据存储单元中存储的区块数据和所述第二数据存储单元存储的区块数据进行合并显示。
13.根据第三方面,本发明实施例还公开了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行如第一方面或第一方面任一可选实施方式所述的区块链数据处理方法的步骤。
14.根据第四方面,本发明实施方式还公开了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面或第一方面任一可选实施方式所述的区块链数据处理方法的步骤。
15.本发明技术方案,具有如下优点:本发明提供的区块链数据处理方法/装置,当对区块链执行区块数据读取操作时,确定所述区块链对应的回滚区块区间,所述回滚区块区间表征任一区块上链之后使得所述区块不会被执行回滚操作的情况下所需要产生的目标数量的新区块所在的区间,启用第一区块解析线程对读取到的区块链中所述回滚区块区间对应的区块进行解析后以队列形式存储到第二数据存储单元,启用第二区块解析线程对所述区块链的区块进行解析,将解析得到的区块链中除所述回滚区块区间对应区块之外的区块数据存储在第一数据存储单元。
通过确定回滚区块区间并通过不同区块解析线程对区块进行解析,将可能发生回滚的回滚区块区间对应的区块数据存储到第二数据存储单元,将除了回滚区块区间对应的区块之外的区块数据存储到第一存储单元,使得在后续对解析得到的数据使用过程中,可以根据不同的用户需求提供不同数据存储单元的数据以保证对区块数据分析结果的准确性。
附图说明
16.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
17.图1为本发明实施例中区块链数据处理方法的一个具体示例的流程图;图2为本发明实施例中区块链数据处理装置的一个具体示例的原理框图;图3为本发明实施例中电子设备的一个具体示例图。
具体实施方式
18.下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
19.此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
20.本发明实施例公开了一种区块链数据处理方法,如图1所示,该方法包括如下步骤:步骤101,当对区块链执行区块数据读取操作时,确定所述区块链对应的回滚区块区间,所述回滚区块区间表征任一区块上链之后,使得所述区块不会被执行回滚操作的情况下所需要产生的目标数量的新区块所在的区间。
21.示例性地,执行区块数据读取操作的主体可以是区块链上任一数据采集节点,该数据采集节点在区块链网络中同步所有的区块数据并对同步到的区块数据执行读取操作或者该数据采集节点在接收外部用户的数据分析需求时,响应区块数据的读取操作。在执行区块数据读取操作时,可以根据所在区块链的属性信息来确定该区块链的回滚区块区间所包含的区块的目标数量,如根据区块链的平均出块时间、共识方式、全球节点密度等计算出回滚区块区间所包含的区块的目标数量,回滚区块区间即某个区块p上链之后再出多少个新块,该区块将不会再被回滚,该目标数量记作n。如当某一区块链的平均出块时间为10分钟/块,在当前全球节点密度下,8个块左右为回滚区块区间所包含的区块数量,也就是说,如果在某一个区块p后又出了8个区块,那么p区块将不会再被回滚,所有的回滚都将发生在8个区块内,所以该回滚区块区间的区块数量n的数量可取8。
22.不同区块链对应的回滚区块区间也可以通过对历史区块链分叉情况统计出相应区块链的回滚区块区间,选取分叉后被抛弃的链,在被抛弃时新增的区块数量,将最大的区块数量所对应的区块作为该回滚区块区间,或者该回滚区块区间选择大于该最大的区块数
量中的任一数值对应的区块组成回滚区块区间。
23.步骤102,启用第一区块解析线程对读取到的区块链中所述回滚区块区间对应的区块进行解析后以队列形式存储到第二数据存储单元,启用第二区块解析线程对所述区块链的区块进行解析,将解析得到的区块链中除所述回滚区块区间对应区块之外的区块数据存储在第一数据存储单元。
24.示例性地,预先设置两个区块解析线程,启用第一区块解析线程对读取到的区块链中回滚区块区间对应的区块进行解析,并以队列形式存储到第二数据存储单元,启用第二区块解析线程对解析到的区块链中所有的区块进行解析,将除回滚区块区间对应区块之外的区块数据存储在第一数据存储单元。即将不同线程解析到的数据,将可信的区块数据存储到第一数据存储单元,将可能由于分叉导致回滚的回滚区块区间对应的区块数据存储到第二数据存储单元。
25.本发明提供的区块链数据处理方法,通过确定回滚区块区间并通过不同区块解析线程对区块进行解析,将可能发生回滚的回滚区块区间对应的区块数据存储到第二数据存储单元,将除了回滚区块区间对应的区块之外的区块数据存储到第一存储单元,使得在后续对解析得到的数据使用过程中,可以根据不同的用户需求提供不同数据存储单元的数据以保证对区块数据分析结果的准确性,不用去处理回滚的区块数据,也不会造成解析的数据因回滚而产生的错误。
26.作为本发明一个可选实施方式,步骤102之后,该方法还包括:当接收到用户节点的离线数据分析请求,将所述第一数据存储单元中存储的区块数据反馈给所述用户节点;当接收到用户节点的数据在线显示请求,将所述第一数据存储单元中存储的区块数据和所述第二数据存储单元存储的区块数据进行合并显示。
27.示例性地,在接收到用户节点的离线数据分析请求,将存储有相对准确的第一数据存储单元中的数据反馈给用户节点,保证了数据分析结果的准确性,避免由于使用可能发生回滚的数据进行数据分析导致数据分析返工等情况发生。当接收到用户节点的数据在线显示请求,由于第二区块解析线程是对读取到的区块链中所有区块进行解析,而第一区块解析线程只对在回滚区块区间对应的区块进行解析,第一区块解析线程所需要解析的区块数据小于第二区块解析线程所需要解析的区块数据,则第一区块解析线程解析的数据速度比第二区块解析线程解析速度快,由于用户节点的需求是对解析到的数据的在线显示请求,无需进行数据分析,故可以将第一数据存储单元存储的、解析出的区块数据与第二数据存储单元存储的、解析出的区块数据进行合并显示,以保证可以对发送出数据在线显示请求的用户节点可能尽可能多的显示出当前区块链中的数据。
28.作为本发明一个可选实施方式,该方法还包括:当监控到所述区块链中新增区块,利用所述第一区块解析线程对所述新增区块进行解析后存储在所述第二数据存储单元的队列尾部;从所述第二数据存储单元的队列顶部移出相应数量的区块对应的区块数据。
29.示例性地,当区块链中有新增区块时,直接利用第一区块解析线程对该新增区块进行解析并将解析得到的区块数据存储在第二数据存储单元中。由于只有回滚区块区间对应的区块可能会发生回滚,当区块链中新增了区块后,从第二数据存储单元的队列顶部移出相应数量区块,使得第二数据存储单元存储的数据为固定数量的区块的数据。
30.作为本发明一个可选实施方式,该方法还包括:将利用所述第一区块解析线程解
析到的移出的区块对应的区块数据存储到所述第一数据存储单元。
31.示例性地,由于第二区块解析线程是对读取到的所有区块进行解析,其解析数量较多,为了提高第二区块解析线程的解析效率,可以将利用第一区块解析线程解析到的移出的区块对应的区块数据存储到第一数据存储单元。由于从第二存储单元的队列顶部移出的区块为不会发生回滚的区块数据,所以将其存储到第一数据存储单元,在不会对第一数据存储单元存储的数据的准确性造成影响的同时使得第二区块解析线程无需对该区块进行解析,也进一步提高了第二区块解析线程进行区块数据解析的效率。
32.作为本发明一个可选实施方式,所述当接收到用户节点的数据在线显示请求,将所述第一数据存储单元中存储的区块数据和所述第二数据存储单元存储的区块数据进行合并显示,包括:当所述回滚区块区间对应的区块包含被回滚区块,在被回滚区块对应的区块数据被更新前向用户节点提示显示的区块数据质量信息。
33.示例性地,当回滚区块区间对应的区块包含被回滚区块时,在第一区块解析线程未对被回滚的区块进行重新解析前,第一数据存储单元中的存储的数据在一定时间内可能存在不准确的数据(如用户节点交易后剩余的token数量等),故当存在需要被回滚的区块时,向用户节点提示向用户节点提示显示的区块数据质量信息,如正确数据的数据范围等。
34.作为本发明一个可选实施方式,该方法还包括:当所述回滚区块区间对应的区块包含被回滚区块,对所述被回滚区块对应的区块数据进行重新解析;或者,当所述回滚区块区间对应的区块包含被回滚区块,对所述被回滚区块至所述回滚区块区间对应的最新一个区块所在区间对应的区块数据进行解析。
35.示例性地,当回滚区块区间对应的区块包含被回滚区块可以直接对被回滚区块重新进行数据解析或者为了保证解析的数据的准确性,也可以将被回滚区间直至回滚区块区间对应的最新一个区块所在区间的区块数据进行重新解析。利用解析后的数据对第二数据存储单元中存储的数据进行替换、更新。
36.具体地,设置两个数据库d1和d2,分别用来存储已确认的区块数据和可能存在回滚的区块数据。假设当前最新区块高度为h,那么d1中存储的区块数据为0至h-n块,d2中存储数据为h-n+1至h块,数据库d1中的区块数据为稳定数据,只能写入、不能删除。数据库d2中采用队列的方式保持n个区块的数据,每当队列尾部插入一个新的区块的数据的同时将队列首部的一个区块删掉,该数据库不用考虑被回滚情况;前端应用程序如果是离线进行数据分析,只从d1中获取区块数据即可,此时进行分析的区块数据只比全量的区块数据少了n块,这些区块数据是确定不会被回滚的区块数据,可以用于准确进行数据分析;前端应用程序如果是实时显示链上区块数据的应用,则从d1和d2中同时获取解析得到的区块数据合并起来显示,只有短时间内发生的被回滚数据在d2队列完全更新之前不能够显示,小于或等于h-n块的数据都会被正确的显示。
37.以某一区块链为例,数据采集装置(节点)包含稳定区块数据库(mongodb)和最新区块数据库(redis)、至少两个区块链数据解析程序、离线分析程序,实时区块浏览器。解析程序负责解析区块数据并存入不同数据库,前端应用根据各自的需求从不同的数据库中读取数据。如该区块链的平均出块时间为10分钟/块,在当前全球节点密度下,8个块左右为回滚区块区间,也就是说,如果在某一个区块p后又出了8个块,那么p区块将不会再被回滚,所有的回滚都将发生在8个区块内,所以n=8;部署稳定区块数据库(mongodb)和最新区块数据
库(redis)用来存储不同的数据,本技术实施例并不局限于这两种数据库,可根据业务需求自由选择,也可以用同一个数据库实例中的不同表来分别存储;部署两套区块链数据解析程序,随着区块不断的被创建出来,所有0至h-8块的解析后数据都将被存入mongodb中,只解析最新块的数据将数据不断的写入到redis中,redis中只保留h-7至h块的数据,多余的数据都将在最新块数据写入之后被删掉;部署离线分析程序进行区块链数据分析,该程序只从mongodb中读取数据;部署实时区块浏览器,该程序从mongodb和redis中同时读取数据,由于数据具有相同结构且互不冲突,所以可以将数据合并统一进行展示。
38.本发明实施例还公开了一种区块链数据处理装置,如图2所示,该装置包括:确定模块201,用于当对区块链执行区块数据读取操作时,确定所述区块链对应的回滚区块区间,所述回滚区块区间表征任一区块上链之后,使得所述区块不会被执行回滚操作的情况下所需要产生的目标数量的新区块所在的区间;存储模块202,用于启用第一区块解析线程对读取到的区块链中所述回滚区块区间对应的区块进行解析后以队列形式存储到第二数据存储单元,启用第二区块解析线程对所述区块链的区块进行解析,将解析得到的区块链中除所述回滚区块区间对应区块之外的区块数据存储在第一数据存储单元。
39.本发明提供的区块链数据处理装置,通过确定回滚区块区间并通过不同区块解析线程对区块进行解析,将可能发生回滚的回滚区块区间对应的区块数据存储到第二数据存储单元,将除了回滚区块区间对应的区块之外的区块数据存储到第一存储单元,使得在后续对解析得到的数据使用过程中,可以根据不同的用户需求提供不同数据存储单元的数据以保证对区块数据分析结果的准确性。
40.作为本发明一个可选实施方式,所述装置还包括:第一处理模块,用于当接收到用户节点的离线数据分析请求,将所述第一数据存储单元中存储的区块数据反馈给所述用户节点;第二处理模块,用于当接收到用户节点的数据在线显示请求,将所述第一数据存储单元中存储的区块数据和所述第二数据存储单元存储的区块数据进行合并显示。
41.作为本发明一个可选实施方式,所述装置还包括:解析模块,用于当监控到所述区块链中新增区块,利用所述第一区块解析线程对所述新增区块进行解析后存储在所述第二数据存储单元的队列尾部;移出模块,用于从所述第二数据存储单元的队列顶部移出相应数量的区块对应的区块数据。
42.作为本发明一个可选实施方式,所述移出模块,还用于将利用所述第一区块解析线程解析到的移出的区块对应的区块数据存储到所述第一数据存储单元。
43.作为本发明一个可选实施方式,所述第二处理模块,还用于当所述回滚区块区间对应的区块包含被回滚区块,在被回滚区块对应的区块数据被更新前向用户节点提示显示的区块数据质量信息。
44.作为本发明一个可选实施方式,所述装置还包括:回滚解析模块,用于当所述回滚区块区间对应的区块包含被回滚区块,对所述被回滚区块对应的区块数据进行重新解析;或者,当所述回滚区块区间对应的区块包含被回滚区块,对所述被回滚区块至所述回滚区块区间对应的最新一个区块所在区间对应的区块数据进行解析。
45.本发明实施例还提供了一种电子设备,如图3所示,该电子设备可以包括处理器401和存储器402,其中处理器401和存储器402可以通过总线或者其他方式连接,图3中以通
过总线连接为例。
46.处理器401可以为中央处理器(central processing unit,cpu)。处理器401还可以为其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
47.存储器402作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的区块链数据处理方法对应的程序指令/模块。处理器401通过运行存储在存储器402中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的区块链数据处理方法。
48.存储器402可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器401所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器402可选包括相对于处理器401远程设置的存储器,这些远程存储器可以通过网络连接至处理器401。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
49.所述一个或者多个模块存储在所述存储器402中,当被所述处理器401执行时,执行如图1所示实施例中的区块链数据处理方法。
50.上述电子设备具体细节可以对应参阅图1所示的实施例中对应的相关描述和效果进行理解,此处不再赘述。
51.本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)、随机存储记忆体(randomaccessmemory,ram)、快闪存储器(flash memory)、硬盘(hard disk drive,缩写:hdd)或固态硬盘(solid-state drive,ssd)等;所述存储介质还可以包括上述种类的存储器的组合。
52.虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1