区块链数据处理方法、装置、计算机设备和存储介质制造方法及图纸

技术编号:38726855 阅读:11 留言:0更新日期:2023-09-08 23:18
本申请涉及一种区块链数据处理方法、装置、计算机设备和存储介质。涉及到区块链领域,包括:获取针对区块链系统的智能合约中合约变量的存储请求;所述存储请求中包括所述智能合约的合约地址和所述合约变量的第一变量标识;确定所述智能合约的存储方式;在所述智能合约的存储方式为第一存储方式的情况下,基于所述智能合约的合约地址和所述合约变量的第一变量标识生成所述合约变量的第二变量标识,存储所述第二变量标识和所述合约变量的值组成的键值对;在所述智能合约的存储方式为第二存储方式的情况下,根据所述智能合约的合约地址和所述第一变量标识,向所述智能合约的合约存储树中存储所述合约变量的值。采用本方法能够节省存储空间。省存储空间。省存储空间。

【技术实现步骤摘要】
区块链数据处理方法、装置、计算机设备和存储介质


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

技术介绍

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

技术实现思路

[0004]基于此,有必要针对上述技术问题,提供一种能够节省存储空间的区块链数据处理方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
[0005]一方面,本申请提供了一种区块链数据处理方法。所述方法包括:获取针对区块链系统的智能合约中合约变量的存储请求;所述存储请求中包括所述智能合约的合约地址和所述合约变量的第一变量标识,所述第一变量标识用于在所述智能合约中唯一标识所述合约变量;确定所述智能合约的存储方式;在所述智能合约的存储方式为第一存储方式的情况下,基于所述智能合约的合约地址和所述合约变量的第一变量标识生成所述合约变量的第二变量标识,存储所述第二变量标识和所述合约变量的值组成的键值对;在所述智能合约的存储方式为第二存储方式的情况下,根据所述智能合约的合约地址和所述第一变量标识,向所述智能合约的合约存储树中存储所述合约变量的值。
[0006]另一方面,本申请还提供了一种区块链数据处理装置。所述装置包括:存储请求获取模块,用于获取针对区块链系统的智能合约中合约变量的存储请求;所述存储请求中包括所述智能合约的合约地址和所述合约变量的第一变量标识,所述第一变量标识用于在所述智能合约中唯一标识所述合约变量;存储方式确定模块,用于确定所述智能合约的存储方式;第一存储模块,用于在所述智能合约的存储方式为第一存储方式的情况下,基于所述智能合约的合约地址和所述合约变量的第一变量标识生成所述合约变量的第二变量标识,存储所述第二变量标识和所述合约变量的值组成的键值对;第二存储模块,用于在所述智能合约的存储方式为第二存储方式的情况下,根据所述智能合约的合约地址和所述第一变量标识,向所述智能合约的合约存储树中存储所述合约变量的值。
[0007]在一些实施例中,所述存储方式确定模块,还用于确定所述智能合约的布署方式;在所述智能合约的布署方式为指定布署方式的情况下,确定所述智能合约的存储方式为第一存储方式;在所述智能合约的布署方式为非指定布署方式的情况下,确定所述智能合约
的存储方式为第二存储方式。
[0008]在一些实施例中,所述存储方式确定模块,还用于确定所述智能合约的布署方式标记信息;所述布署方式标记信息用于标记布署方式;基于所述布署方式标记信息确定所述智能合约的布署方式。
[0009]在一些实施例中,所述第一存储模块,还用于将所述智能合约的合约地址与所述合约变量的第一变量标识进行拼接;基于拼接的结果确定所述合约变量的第二变量标识。
[0010]在一些实施例中,所述第一存储模块,还用于确定当前区块的区块标识;当前区块是指处于生成阶段的区块;所述存储请求,是在生成当前区块的过程中触发的;确定所述区块标识对应的块缓存,将所述第二变量标识和所述合约变量的值组成的键值对,存储至所述区块标识对应的块缓存中;在当前区块已成功生成的情况下,将所述区块标识对应的块缓存中的数据存储至数据库;所述块缓存中的数据,包括所述第二变量标识和所述合约变量的值组成的键值对。
[0011]在一些实施例中,所述第一存储模块,还用于在当前区块已成功生成的情况下,等待针对当前区块的上链指示信息;在获取到针对当前区块的上链指示信息的情况下,将所述区块标识对应的块缓存中的数据存储至数据库。
[0012]在一些实施例中,所述块缓存属于延迟刷盘缓存;所述装置,还用于确定当前区块的块高得到参考块高;所述延迟刷盘缓存中存储有所述参考块高对应的区块标识集合;所述区块标识集合中的区块标识代表的待上链区块的块高为所述参考块高;所述延迟刷盘缓存中包括所述区块标识集合中的每个区块标识分别对应的块缓存;将当前区块的区块标识加入所述参考块高对应的区块标识集合中;在将当前区块的区块标识对应的块缓存中的数据存储至数据库之后,将所述参考块高中每个区块标识分别对应的块缓存中的数据进行删除。
[0013]在一些实施例中,所述装置还用于,将所述第二变量标识和所述合约变量的值组成的键值对存储至延迟刷盘日志中;响应于重启,基于延迟刷盘日志中的数据对所述区块标识对应的块缓存进行数据恢复。
[0014]在一些实施例中,所述延迟刷盘日志中存储有所述参考块高对应的区块标识集合;所述装置还用于:在将当前区块的区块标识对应的块缓存中的数据存储至数据库之后,将所述延迟刷盘日志中存储的所述参考块高对应的区块标识集合删除,并将所述延迟刷盘日志中存储的当前区块的相关数据删除。
[0015]在一些实施例中,所述装置,还用于获取针对所述智能合约中目标合约变量的访问请求;基于所述智能合约的合约地址和所述目标合约变量的第一变量标识生成所述目标合约变量的第二变量标识;以所述目标合约变量的第二变量标识为键对所述目标合约变量进行访问。
[0016]在一些实施例中,所述装置,还用于在延迟刷盘缓存中,以所述目标合约变量的第二变量标识为键对所述目标合约变量进行访问;所述延迟刷盘缓存包括待上链区块的块缓存;以所述目标合约变量的第二变量标识为键,在待上链区块的块缓存中查询所述目标合约变量的值;在未查找到的情况下,以所述目标合约变量的第二变量标识为键,在数据库中对所述目标合约变量进行访问。
[0017]在一些实施例中,所述第二存储模块,还用于根据所述智能合约的合约地址从世
界状态树中,查找所述智能合约的账户对应的状态信息;从所述状态信息中获取存储树根哈希值;根据所述存储树根哈希值查找到所述合约存储树,向所述智能合约的合约存储树中存储所述合约变量的值。
[0018]另一方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述区块链数据处理方法中的步骤。
[0019]另一方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述区块链数据处理方法中的步骤。
[0020]另一方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述区块链数据处理方法中的步骤。
[0021]上述区块链数据处理方法、装置、计算机设备、存储介质和计算机程序产品,获取针对区块链系统的智能合约中合约变量的存储请求,存储请求中包括智能合约本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种区块链数据处理方法,其特征在于,所述方法包括:获取针对区块链系统的智能合约中合约变量的存储请求;所述存储请求中包括所述智能合约的合约地址和所述合约变量的第一变量标识,所述第一变量标识用于在所述智能合约中唯一标识所述合约变量;确定所述智能合约的存储方式;在所述智能合约的存储方式为第一存储方式的情况下,基于所述智能合约的合约地址和所述合约变量的第一变量标识生成所述合约变量的第二变量标识,存储所述第二变量标识和所述合约变量的值组成的键值对;在所述智能合约的存储方式为第二存储方式的情况下,根据所述智能合约的合约地址和所述第一变量标识,向所述智能合约的合约存储树中存储所述合约变量的值。2.根据权利要求1所述的方法,其特征在于,所述确定所述智能合约的存储方式包括:确定所述智能合约的布署方式;在所述智能合约的布署方式为指定布署方式的情况下,确定所述智能合约的存储方式为第一存储方式;在所述智能合约的布署方式为非指定布署方式的情况下,确定所述智能合约的存储方式为第二存储方式。3.根据权利要求2所述的方法,其特征在于,所述确定所述智能合约的布署方式包括:确定所述智能合约的布署方式标记信息;所述布署方式标记信息用于标记布署方式;基于所述布署方式标记信息确定所述智能合约的布署方式。4.根据权利要求1所述的方法,其特征在于,所述基于所述智能合约的合约地址和所述合约变量的第一变量标识生成所述合约变量的第二变量标识包括:将所述智能合约的合约地址与所述合约变量的第一变量标识进行拼接;基于拼接的结果确定所述合约变量的第二变量标识。5.根据权利要求1所述的方法,其特征在于,所述存储所述第二变量标识和所述合约变量的值组成的键值对包括:确定当前区块的区块标识;当前区块是指处于生成阶段的区块;所述存储请求,是在生成当前区块的过程中触发的;确定所述区块标识对应的块缓存,将所述第二变量标识和所述合约变量的值组成的键值对,存储至所述区块标识对应的块缓存中;在当前区块已成功生成的情况下,将所述区块标识对应的块缓存中的数据存储至数据库;所述块缓存中的数据,包括所述第二变量标识和所述合约变量的值组成的键值对。6.根据权利要求5所述的方法,其特征在于,所述在当前区块已成功生成的情况下,将所述区块标识对应的块缓存中的数据存储至数据库包括:在当前区块已成功生成的情况下,等待针对当前区块的上链指示信息;在获取到针对当前区块的上链指示信息的情况下,将所述区块标识对应的块缓存中的数据存储至数据库。7.根据权利要求6所述的方法,其特征在于,所述块缓存属于延迟刷盘缓存;所述方法还包括:确定当前区块的块高得到参考块高;所述延迟刷盘缓存中存储有所述参考块高对应的
区块标识集合;所述区块标识集合中的区块标识代表的待上链区块的块高为所述参考块高;所述延迟刷盘缓存中包括所述区块标识集合中的每个区块标识分别对应的块缓存;将当前区块的区块标识加入所述参考块高对应的区块标识集合中;所述方法还包括:在将当前区块的区块标识对应的块缓存中的数据存储至数据库之后,将所述参考块高中每个区块标识分别对应的块缓存中的数据进行删除。8.根据权利要求5所述的方法,其特征...

【专利技术属性】
技术研发人员:刘区城
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

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

1