区块链数据处理方法、装置、计算机设备和存储介质与流程

文档序号:35354700发布日期:2023-09-07 23:23阅读:24来源:国知局
区块链数据处理方法、装置、计算机设备和存储介质与流程

本技术涉及区块链,特别是涉及一种区块链数据处理方法、装置、计算机设备和存储介质。


背景技术:

1、随着计算机技术的发展,出现了区块链技术,区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区块链具有去中心化、信息不可篡改、自治性等特性,区块链也受到人们越来越多的重视和应用。

2、由于传统技术中区块链系统采用的存储结构不够灵活,从而存在存储空间浪费的问题。


技术实现思路

1、基于此,有必要针对上述技术问题,提供一种能够节省存储空间的区块链数据处理方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。

2、一方面,本技术提供了一种区块链数据处理方法。所述方法包括:获取针对区块链系统的智能合约中合约变量的存储请求;所述存储请求中包括所述智能合约的合约地址和所述合约变量的第一变量标识,所述第一变量标识用于在所述智能合约中唯一标识所述合约变量;确定所述智能合约的存储方式;在所述智能合约的存储方式为第一存储方式的情况下,基于所述智能合约的合约地址和所述合约变量的第一变量标识生成所述合约变量的第二变量标识,存储所述第二变量标识和所述合约变量的值组成的键值对;在所述智能合约的存储方式为第二存储方式的情况下,根据所述智能合约的合约地址和所述第一变量标识,向所述智能合约的合约存储树中存储所述合约变量的值。

3、另一方面,本技术还提供了一种区块链数据处理装置。所述装置包括:存储请求获取模块,用于获取针对区块链系统的智能合约中合约变量的存储请求;所述存储请求中包括所述智能合约的合约地址和所述合约变量的第一变量标识,所述第一变量标识用于在所述智能合约中唯一标识所述合约变量;存储方式确定模块,用于确定所述智能合约的存储方式;第一存储模块,用于在所述智能合约的存储方式为第一存储方式的情况下,基于所述智能合约的合约地址和所述合约变量的第一变量标识生成所述合约变量的第二变量标识,存储所述第二变量标识和所述合约变量的值组成的键值对;第二存储模块,用于在所述智能合约的存储方式为第二存储方式的情况下,根据所述智能合约的合约地址和所述第一变量标识,向所述智能合约的合约存储树中存储所述合约变量的值。

4、在一些实施例中,所述存储方式确定模块,还用于确定所述智能合约的布署方式;在所述智能合约的布署方式为指定布署方式的情况下,确定所述智能合约的存储方式为第一存储方式;在所述智能合约的布署方式为非指定布署方式的情况下,确定所述智能合约的存储方式为第二存储方式。

5、在一些实施例中,所述存储方式确定模块,还用于确定所述智能合约的布署方式标记信息;所述布署方式标记信息用于标记布署方式;基于所述布署方式标记信息确定所述智能合约的布署方式。

6、在一些实施例中,所述第一存储模块,还用于将所述智能合约的合约地址与所述合约变量的第一变量标识进行拼接;基于拼接的结果确定所述合约变量的第二变量标识。

7、在一些实施例中,所述第一存储模块,还用于确定当前区块的区块标识;当前区块是指处于生成阶段的区块;所述存储请求,是在生成当前区块的过程中触发的;确定所述区块标识对应的块缓存,将所述第二变量标识和所述合约变量的值组成的键值对,存储至所述区块标识对应的块缓存中;在当前区块已成功生成的情况下,将所述区块标识对应的块缓存中的数据存储至数据库;所述块缓存中的数据,包括所述第二变量标识和所述合约变量的值组成的键值对。

8、在一些实施例中,所述第一存储模块,还用于在当前区块已成功生成的情况下,等待针对当前区块的上链指示信息;在获取到针对当前区块的上链指示信息的情况下,将所述区块标识对应的块缓存中的数据存储至数据库。

9、在一些实施例中,所述块缓存属于延迟刷盘缓存;所述装置,还用于确定当前区块的块高得到参考块高;所述延迟刷盘缓存中存储有所述参考块高对应的区块标识集合;所述区块标识集合中的区块标识代表的待上链区块的块高为所述参考块高;所述延迟刷盘缓存中包括所述区块标识集合中的每个区块标识分别对应的块缓存;将当前区块的区块标识加入所述参考块高对应的区块标识集合中;在将当前区块的区块标识对应的块缓存中的数据存储至数据库之后,将所述参考块高中每个区块标识分别对应的块缓存中的数据进行删除。

10、在一些实施例中,所述装置还用于,将所述第二变量标识和所述合约变量的值组成的键值对存储至延迟刷盘日志中;响应于重启,基于延迟刷盘日志中的数据对所述区块标识对应的块缓存进行数据恢复。

11、在一些实施例中,所述延迟刷盘日志中存储有所述参考块高对应的区块标识集合;所述装置还用于:在将当前区块的区块标识对应的块缓存中的数据存储至数据库之后,将所述延迟刷盘日志中存储的所述参考块高对应的区块标识集合删除,并将所述延迟刷盘日志中存储的当前区块的相关数据删除。

12、在一些实施例中,所述装置,还用于获取针对所述智能合约中目标合约变量的访问请求;基于所述智能合约的合约地址和所述目标合约变量的第一变量标识生成所述目标合约变量的第二变量标识;以所述目标合约变量的第二变量标识为键对所述目标合约变量进行访问。

13、在一些实施例中,所述装置,还用于在延迟刷盘缓存中,以所述目标合约变量的第二变量标识为键对所述目标合约变量进行访问;所述延迟刷盘缓存包括待上链区块的块缓存;以所述目标合约变量的第二变量标识为键,在待上链区块的块缓存中查询所述目标合约变量的值;在未查找到的情况下,以所述目标合约变量的第二变量标识为键,在数据库中对所述目标合约变量进行访问。

14、在一些实施例中,所述第二存储模块,还用于根据所述智能合约的合约地址从世界状态树中,查找所述智能合约的账户对应的状态信息;从所述状态信息中获取存储树根哈希值;根据所述存储树根哈希值查找到所述合约存储树,向所述智能合约的合约存储树中存储所述合约变量的值。

15、另一方面,本技术还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述区块链数据处理方法中的步骤。

16、另一方面,本技术还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述区块链数据处理方法中的步骤。

17、另一方面,本技术还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述区块链数据处理方法中的步骤。

18、上述区块链数据处理方法、装置、计算机设备、存储介质和计算机程序产品,获取针对区块链系统的智能合约中合约变量的存储请求,存储请求中包括智能合约的合约地址和合约变量的第一变量标识,第一变量标识用于在智能合约中唯一标识合约变量,确定智能合约的存储方式,在智能合约的存储方式为第一存储方式的情况下,基于智能合约的合约地址和合约变量的第一变量标识生成合约变量的第二变量标识,存储第二变量标识和合约变量的值组成的键值对,在智能合约的存储方式为第二存储方式的情况下,根据智能合约的合约地址和第一变量标识,向智能合约的合约存储树中存储合约变量的值。由于支持键值对的存储方式和合约存储树的存储方式,且键值对的存储方式简单便捷,从而节省了存储空间。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1