交易数据存储方法、装置、计算机设备及存储介质制造方法及图纸

技术编号:37863763 阅读:9 留言:0更新日期:2023-06-15 20:53
本申请公开了一种交易数据存储方法。该方法包括:获取区块链的区块中的交易数据;对所述交易数据进行解析,得到所述交易数据对应的合约地址及key

【技术实现步骤摘要】
交易数据存储方法、装置、计算机设备及存储介质


[0001]本申请涉及区块链
,尤其涉及一种交易数据存储方法、装置、计算机设备及存储介质。

技术介绍

[0002]对于基于Cosmos框架开发的区块链应用,底层的数据存储使用的是IAVL树。当调用智能合约来处理用户的交易数据时,交易数据中的key

value键值对的相关数据会以键值对的形式存储在底层IAVL树上。
[0003]然而,专利技术人发现,现有的IAVL树上存储规则如下:对应的键为合约地址拼接数据key值的hash,对应的值为数据value值,因此相同合约内的交易数据在IAVL树上具有相同的前缀(合约地址),根据IAVL树特性,其存储的数据会落在相同的子树上。在此Cosmos框架下,若某一合约内有大量数据需要存储,这些数据会插入到IAVL树的同一子树下,进而会频繁造成当前子树高度差在整颗IAVL树上失衡,触发IAVL树自平衡动作,大量消耗服务器计算和存储资源,降低区块链存储性能。

技术实现思路

[0004]有鉴于此,现提供一种交易数据存储方法、装置、计算机设备及计算机可读存储介质,以解决现有技术中在通过Cosmos框架开发的区块链应用进行交易数据存储时,会频繁造成IAVL树的子树高度差在整颗IAVL树上失衡,触发IAVL树自平衡动作,大量消耗服务器计算和存储资源,降低区块链存储性能的问题。
[0005]本申请提供了一种交易数据存储方法,包括:
[0006]获取区块链的区块中的交易数据;
[0007]对所述交易数据进行解析,得到所述交易数据对应的合约地址及key

value键值对;
[0008]查询主IAVL树中是否存在所述合约地址对应的第一从IAVL树的第一根哈希值;
[0009]若所述主IAVL树中存在所述第一根哈希值,则根据所述第一根哈希值打开所述第一从IAVL树;
[0010]计算所述键值对中的key值的哈希值,并将所述合约地址拼接所述哈希值,得到新的key值;
[0011]将所述新的key值与所述键值对中的value值组成第一待存储数据,并将所述第一待存储数据插入所述第一从IAVL树中。
[0012]可选地,所述将所述第一待存储数据插入所述第一从IAVL树中的步骤之后,还包括:
[0013]计算所述第一从IAVL树的第二根哈希值,并以所述第二根哈希值更新主IAVL树存储的所述第一根哈希值;
[0014]计算所述主IAVL树的第三根哈希值。
[0015]可选地,所述方法还包括:
[0016]若所述主IAVL树中不存在所述第一根哈希值,则判定所述合约地址属于新的合约地址;
[0017]创建所述新的合约地址对应的第二从IAVL树;
[0018]计算所述键值对中的key值的哈希值,并将所述新的合约地址拼接所述哈希值,得到拼接后的key值;
[0019]将所述拼接后的key值与所述键值对中的value值组成第二待存储数据,并将所述第二待存储数据插入所述第二从IAVL树中。
[0020]可选地,所述方法还包括:
[0021]计算所述第二从IAVL树的第四根哈希值,并将所述新的合约地址及所述第四根哈希值组成第三待存储数据,其中,所述新的合约地址作为所述第三待存储数据中的key值,所述第四根哈希值作为所述第三待存储数据中的value值;
[0022]将所述第三待存储数据插入所述主IAVL树中;
[0023]计算所述主IAVL树的第五根哈希值。
[0024]可选地,所述计算所述键值对中的key值的哈希值包括:
[0025]通过预设的哈希算法计算所述键值对中的key值的哈希值。
[0026]可选地,所述对所述交易数据进行解析之前,还包括:
[0027]对所述交易数据的发送者的签名信息进行校验。
[0028]可选地,所述方法还包括:
[0029]通过所述第一从IAVL树校验自身平衡是否被打破,若所述第一从IAVL树的自身平衡被打破,则触发执行自平衡动作。
[0030]本申请还提供了一种交易数据存储装置,包括:
[0031]获取模块,用于获取区块链的区块中的交易数据;
[0032]解析模块,用于对所述交易数据进行解析,得到所述交易数据对应的合约地址及key

value键值对;
[0033]查询模块,用于查询主IAVL树中是否存在所述合约地址对应的第一从IAVL树的第一根哈希值;
[0034]打开模块,用于若所述主IAVL树中存在所述第一根哈希值,则根据所述第一根哈希值打开所述第一从IAVL树;
[0035]拼接模块,用于计算所述键值对中的key值的哈希值,并将所述合约地址拼接所述哈希值,得到新的key值;
[0036]插入模块,用于将所述新的key值与所述键值对中的value值组成第一待存储数据,并将所述第一待存储数据插入所述第一从IAVL树中。
[0037]本申请还提供了一种计算机设备,所述计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
[0038]本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
[0039]本实施例中通过获取区块链的区块中的交易数据;对所述交易数据进行解析,得
到所述交易数据对应的合约地址及key

value键值对;查询主IAVL树中是否存在所述合约地址对应的第一从IAVL树的第一根哈希值;若所述主IAVL树中存在所述第一根哈希值,则根据所述第一根哈希值打开所述第一从IAVL树;计算所述键值对中的key值的哈希值,并将所述合约地址拼接所述哈希值,得到新的key值;将所述新的key值与所述键值对中的value值组成第一待存储数据,并将所述第一待存储数据插入所述第一从IAVL树中。采用上述交易数据存储方案,可以将将同一智能合约对应的交易数据存储到独立的从IAVL树上,和原先将不同智能合约对应的交易数据存储到同一棵IAVL树相比,该交易数据存储方案可降低IAVL树高度失衡的概率,减少其自平衡触发次数,不同的智能合约对应的交易数据的存储都维护在独立的从IAVL树上,使得存储开销远小于使用一棵IAVL树存储所有智能合约对应的交易数据,可有效降低服务器计算和存储资源消耗,提升区块链网络存储吞吐能力。
附图说明
[0040]图1为本申请实施例的交易数据存储方法的应用环境示意图;
[0041]图2为本申请所述的交易数据存储方法的一种实施例的流程图;
[0042]图3为本申请所述的交易数据存储方法的另一种实施例的流程图;
[0043]图4为本申请所述的交易数据存储装置的一种实施例的程序模块图;
[0044]图5为本申请实施例本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种交易数据存储方法,其特征在于,包括:获取区块链的区块中的交易数据;对所述交易数据进行解析,得到所述交易数据对应的合约地址及key

value键值对;查询主IAVL树中是否存在所述合约地址对应的第一从IAVL树的第一根哈希值;若所述主IAVL树中存在所述第一根哈希值,则根据所述第一根哈希值打开所述第一从IAVL树;计算所述键值对中的key值的哈希值,并将所述合约地址拼接所述哈希值,得到新的key值;将所述新的key值与所述键值对中的value值组成第一待存储数据,并将所述第一待存储数据插入所述第一从IAVL树中。2.根据权利要求1所述的交易数据存储方法,其特征在于,所述将所述第一待存储数据插入所述第一从IAVL树中的步骤之后,还包括:计算所述第一从IAVL树的第二根哈希值,并以所述第二根哈希值更新主IAVL树存储的所述第一根哈希值;计算所述主IAVL树的第三根哈希值。3.根据权利要求2所述的交易数据存储方法,其特征在于,所述方法还包括:若所述主IAVL树中不存在所述第一根哈希值,则判定所述合约地址属于新的合约地址;创建所述新的合约地址对应的第二从IAVL树;计算所述键值对中的key值的哈希值,并将所述新的合约地址拼接所述哈希值,得到拼接后的key值;将所述拼接后的key值与所述键值对中的value值组成第二待存储数据,并将所述第二待存储数据插入所述第二从IAVL树中。4.根据权利要求3所述的交易数据存储方法,其特征在于,所述方法还包括:计算所述第二从IAVL树的第四根哈希值,并将所述新的合约地址及所述第四根哈希值组成第三待存储数据,其中,所述新的合约地址作为所述第三待存储数据中的key值,所述第四根哈希值作为所述第三待存储数据中的value值;将所述第三待存储数...

【专利技术属性】
技术研发人员:朱泽雨张磊孙英男王炜煜
申请(专利权)人:上海加密原生科技有限公司
类型:发明
国别省市:

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

1