本申请涉及区块链,尤其涉及一种区块链数据查询方法、装置、电子设备和存储介质。
背景技术:
1、随着区块链技术的不断发展和web3.0时代的到来,实现了去中心化应用部署于区块链上,当用户与部署在链上的智能合约发生交互时相关日志和参数会在记录在以太坊的目标收据树上,但是因为以太坊底层的数据结构复杂且异构,现有收集到的数据难以进行快速分析,数据查询效率低下。
技术实现思路
1、针对现有技术数据查询效率低下的问题,本发明提出一种区块链数据查询方法、装置、电子设备和存储介质。具体技术方案如下:
2、一种区块链数据查询方法,所述方法包括:
3、在确定区块链中产生新区块的情况下确定目标区块区间,其中,所述目标区块区间包括可能产生分叉导致回滚的区块;
4、确定所述目标区块区间内每个区块中的初始数据;
5、根据预设条件对所述初始数据进行解析,生成中间数据;
6、对所述目标区块区间内同一个区块对应的初始数据和中间数据进行关联,得到目标数据;
7、将所述目标数据导入内存数据库,以使去中心化应用对所述内存数据库进行数据查询。
8、进一步地,确定所述目标区块区间内每个区块中的初始数据包括:
9、通过对所述新区块进行回滚检测,确定是否发生了回滚;
10、若确定未发生回滚,则将所述目标区块区间内区块上的原始数据作为所述初始数据;
11、若确定已发生回滚,则将所述目标区块区间内回滚后的区块上的数据作为所述初始数据。
12、进一步地,若确定未发生回滚,则将所述目标区块区间内区块上的原始数据作为所述初始数据包括:
13、若确定未发生回滚,则采用线程池中的每个线程调用所述区块链中一个事件的事件索引;
14、通过所述事件索引提取以太坊的目标收据树中的日志信息,其中,所述目标收据树用于记录所述目标区块区间内区块上的交易相关信息;
15、对所述日志信息进行字节对齐和编码后,得到标准格式的原始数据;
16、将每个事件对应的原始数据作为所述初始数据。
17、进一步地,采用线程池中的每个线程调用所述区块链中一个事件的事件索引之前,所述方法还包括:
18、对所述区块链中的智能合约进行编译并转化为标准序列化格式的数据文件;
19、对所述数据文件中的字节码进行分析,得到所述区块链中的事件;
20、提取所述事件的事件索引。
21、进一步地,若确定已发生回滚,所述方法还包括:
22、阻塞监听线程和所述区块链中的每个事件对应的线程,并启动回滚矫正操作。
23、进一步地,确定区块链中产生新区块包括:
24、启动监听线程,远程链接rpc节点,其中,所述rpc节点用于通过网络从远程计算机程序上请求服务;
25、通过所述监听线程对区块链中的各区块进行轮询,确定所述区块链中的最新区块高度;
26、若所述最新区块高度大于数据库中已存储的历史区块高度,则确定所述区块链中产生新区块。
27、进一步地,将所述目标数据导入内存数据库之后,所述方法还包括:
28、若检测到再次发生回滚,则停止对当前的初始数据和中间数据进行关联,并保留所述内存数据库的查询功能;
29、启动回滚矫正操作后,删除所述目标区块区间内各区块中的初始数据、中间数据和目标数据,并根据回滚后的初始数据重新生成目标数据;
30、将所述重新生成的目标数据导入所述内存数据库中。
31、一种区块链数据查询装置,所述装置包括:
32、第一确定模块,用于在确定区块链中产生新区块的情况下确定目标区块区间,其中,所述目标区块区间包括可能产生分叉导致回滚的区块;
33、第二确定模块,用于确定所述目标区块区间内每个区块中的初始数据;
34、解析模块,用于根据预设条件对所述初始数据进行解析,生成中间数据;
35、关联模块,用于对所述目标区块区间内同一个区块对应的初始数据和中间数据进行关联,得到目标数据;
36、导入模块,用于将所述目标数据导入内存数据库,以使去中心化应用对所述内存数据库进行数据查询。
37、一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
38、存储器,用于存放计算机程序;
39、处理器,用于执行存储器上所存放的程序时,实现任一所述的区块链数据查询方法步骤。
40、一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现任一所述的区块链数据查询方法步骤。
41、本发明的有益效果是:
42、本申请实施例提供了一种区块链数据查询方法,在检测到区块链中产生新区块时,确定可能发生交叉导致回滚的目标区块区间,并确定目标区块区间内每个区块中的初始数据和中间数据,将初始数据和中间数据关联为目标数据后导入内存数据库。本申请通过加入中间数据,增加了内存数据库中的数据内容,无需针对繁杂的初始数据进行查询,适用于一些细化的查询场景,提高数据的查询效率。
43、当然,实施本申请的任一产品或方法并不一定需要同时达到以上所述的所有优点。
1.一种区块链数据查询方法,其特征在于,所述方法包括:
2.根据权利要求1所述的区块链数据查询方法,其特征在于,确定所述目标区块区间内每个区块中的初始数据包括:
3.根据权利要求2所述的区块链数据查询方法,其特征在于,若确定未发生回滚,则将所述目标区块区间内区块上的原始数据作为所述初始数据包括:
4.根据权利要求3所述的区块链数据查询方法,其特征在于,采用线程池中的每个线程调用所述区块链中一个事件的事件索引之前,所述方法还包括:
5.根据权利要求2所述的区块链数据查询方法,其特征在于,若确定已发生回滚,所述方法还包括:
6.根据权利要求1所述的区块链数据查询方法,其特征在于,确定区块链中产生新区块包括:
7.根据权利要求1所述的区块链数据查询方法,其特征在于,将所述目标数据导入内存数据库之后,所述方法还包括:
8.一种区块链数据查询装置,其特征在于,所述装置包括:
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-7任一所述的方法。