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

技术编号:37610855 阅读:10 留言:0更新日期:2023-05-18 12:02
本申请公开了一种交易数据存储方法。该方法包括:获取区块链的区块中的交易数据,其中,所述区块中包含多个交易数据;对多个所述交易数据进行解析,得到每个所述交易数据对应的合约地址及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]计算所述键值对中的key值的哈希值;
[0009]获取所述哈希值中处于预设位的字符,将所述字符拼接所述合约地址及所述哈希值,得到新的key值;
[0010]将所述新的key值与所述键值对中的value值组成待存储数据,并将所述待存储数据插入IAVL树中。
[0011]可选地,所述计算所述键值对中的key值的哈希值包括:
[0012]通过预设的哈希算法计算所述键值对中的key值的哈希值。
[0013]可选地,所述预设的哈希算法为SHA

256算法。
[0014]可选地,所述获取所述哈希值中处于预设位的字符,将所述字符拼接所述合约地址及所述哈希值,得到新的key值包括:
[0015]获取所述哈希值中处于首位的字符,将所述字符拼接所述合约地址及所述哈希值,得到新的key值。
[0016]可选地,所述将所述新的key值与所述键值对中的value值组成待存储数据,并将所述待存储数据插入IAVL树中包括:
[0017]将所述新的key值与所述键值对中的value值组成待存储数据,并将所述待存储数据缓存至内存中;
[0018]当所述内存中缓存有多个所述交易数据对应的key

value键值对所对应的待存储数据时,将内存中缓存的所有待存储数据批量插入IAVL树中。
[0019]可选地,所述对所述交易数据进行解析之前,还包括:
[0020]对所述交易数据的发送者的签名信息进行校验。
[0021]可选地,所述方法还包括:
[0022]通过所述IAVL树校验自身平衡是否被打破,若所述IAVL树的自身平衡被打破,则触发执行自平衡动作。
[0023]本申请还提供了一种交易数据存储装置,包括:
[0024]获取模块,用于获取区块链的区块中的交易数据,其中,所述区块中包含多个交易数据;
[0025]解析模块,用于对多个所述交易数据进行解析,得到每个所述交易数据对应的合约地址及key

value键值对;
[0026]计算模块,用于计算所述键值对中的key值的哈希值;
[0027]拼接模块,用于获取所述哈希值中处于预设位的字符,将所述字符拼接所述合约地址及所述哈希值,得到新的key值;
[0028]插入模块,用于将所述新的key值与所述键值对中的value值组成待存储数据,并将所述待存储数据插入IAVL树中。
[0029]本申请还提供了一种计算机设备,所述计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
[0030]本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
[0031]本实施例中通过获取区块链的区块中的交易数据,其中,所述区块中包含多个交易数据;对多个所述交易数据进行解析,得到每个所述交易数据对应的合约地址及key

value键值对;计算所述键值对中的key值的哈希值;获取所述哈希值中处于预设位的字符,将所述字符拼接所述合约地址及所述哈希值,得到新的key值;将所述新的key值与所述键值对中的value值组成待存储数据,并将所述待存储数据插入IAVL树中。采用上述交易数据存储方案,可以将同一智能合约下需要存储的数据的前缀随机打散为多份,这样,这些需要存储的数据在插入IAVL树过程中,会被随机分配到多颗子树下,从而可以有效降低子树高度失衡概率,减少IAVL树触发自平衡动作的次数,进而可以减少服务器计算和存储资源的消耗,提升区块链存储性能。
附图说明
[0032]图1为本申请实施例的交易数据存储方法的应用环境示意图;
[0033]图2为本申请所述的交易数据存储方法的一种实施例的流程图;
[0034]图3为本申请一实施方式中将所述新的key值与所述键值对中的value值组成待存储数据,并将所述待存储数据插入IAVL树中的步骤细化流程图;
[0035]图4为本申请所述的交易数据存储装置的一种实施例的程序模块图;
[0036]图5为本申请实施例提供的执行交易数据存储方法的计算机设备的硬件结构示意图。
具体实施方式
[0037]以下结合附图与具体实施例进一步阐述本申请的优点。
[0038]这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
[0039]在本公开采用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所采用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中采用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0040]应当理解,尽管在本公开可能采用术语本文档来自技高网
...

【技术保护点】

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

value键值对;计算所述键值对中的key值的哈希值;获取所述哈希值中处于预设位的字符,将所述字符拼接所述合约地址及所述哈希值,得到新的key值;将所述新的key值与所述键值对中的value值组成待存储数据,并将所述待存储数据插入IAVL树中。2.根据权利要求1所述的交易数据存储方法,其特征在于,所述计算所述键值对中的key值的哈希值包括:通过预设的哈希算法计算所述键值对中的key值的哈希值。3.根据权利要求2所述的交易数据存储方法,其特征在于,所述预设的哈希算法为SHA

256算法。4.根据权利要求1所述的交易数据存储方法,其特征在于,所述获取所述哈希值中处于预设位的字符,将所述字符拼接所述合约地址及所述哈希值,得到新的key值包括:获取所述哈希值中处于首位的字符,将所述字符拼接所述合约地址及所述哈希值,得到新的key值。5.根据权利要求1至4任一项所述的交易数据存储方法,其特征在于,所述将所述新的key值与所述键值对中的value值组成待存储数据,并将所述待存储数据插入IAVL树中包括:将所述新的key值与所述键值对中的value值组成待存储数据,并将所述待存储数据缓存至内存中;当所述内存中缓存有多个所述交易数据对应的key

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

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

1