本申请涉及区块链,尤其涉及一种交易数据存储方法、装置、计算机设备及存储介质。
背景技术:
1、对于基于cosmos框架开发的区块链应用,底层的数据存储使用的是iavl树。当调用智能合约来处理用户的交易数据时,交易数据中的key-value键值对的相关数据会以键值对的形式存储在底层iavl树上。
2、然而,发明人发现,现有的iavl树上存储规则如下:对应的键为合约地址拼接数据key值的hash,对应的值为数据value值,因此相同合约内的交易数据在iavl树上具有相同的前缀(合约地址),根据iavl树特性,其存储的数据会落在相同的子树上。在此cosmos框架下,若某一合约内有大量数据需要存储,这些数据会插入到iavl树的同一子树下,进而会频繁造成当前子树高度差在整颗iavl树上失衡,触发iavl树自平衡动作,大量消耗服务器计算和存储资源,降低区块链存储性能。
技术实现思路
1、有鉴于此,现提供一种交易数据存储方法、装置、计算机设备及计算机可读存储介质,以解决现有技术中在通过cosmos框架开发的区块链应用进行交易数据存储时,会频繁造成iavl树的子树高度差在整颗iavl树上失衡,触发iavl树自平衡动作,大量消耗服务器计算和存储资源,降低区块链存储性能的问题。
2、本申请提供了一种交易数据存储方法,包括:
3、获取区块链的区块中的交易数据,其中,所述区块中包含多个交易数据;
4、对多个所述交易数据进行解析,得到每个所述交易数据对应的合约地址及key-value键值对;
5、计算所述键值对中的key值的哈希值;
6、获取所述哈希值中处于预设位的字符,将所述字符拼接所述合约地址及所述哈希值,得到新的key值;
7、将所述新的key值与所述键值对中的value值组成待存储数据,并将所述待存储数据插入iavl树中。
8、可选地,所述计算所述键值对中的key值的哈希值包括:
9、通过预设的哈希算法计算所述键值对中的key值的哈希值。
10、可选地,所述预设的哈希算法为sha-256算法。
11、可选地,所述获取所述哈希值中处于预设位的字符,将所述字符拼接所述合约地址及所述哈希值,得到新的key值包括:
12、获取所述哈希值中处于首位的字符,将所述字符拼接所述合约地址及所述哈希值,得到新的key值。
13、可选地,所述将所述新的key值与所述键值对中的value值组成待存储数据,并将所述待存储数据插入iavl树中包括:
14、将所述新的key值与所述键值对中的value值组成待存储数据,并将所述待存储数据缓存至内存中;
15、当所述内存中缓存有多个所述交易数据对应的key-value键值对所对应的待存储数据时,将内存中缓存的所有待存储数据批量插入iavl树中。
16、可选地,所述对所述交易数据进行解析之前,还包括:
17、对所述交易数据的发送者的签名信息进行校验。
18、可选地,所述方法还包括:
19、通过所述iavl树校验自身平衡是否被打破,若所述iavl树的自身平衡被打破,则触发执行自平衡动作。
20、本申请还提供了一种交易数据存储装置,包括:
21、获取模块,用于获取区块链的区块中的交易数据,其中,所述区块中包含多个交易数据;
22、解析模块,用于对多个所述交易数据进行解析,得到每个所述交易数据对应的合约地址及key-value键值对;
23、计算模块,用于计算所述键值对中的key值的哈希值;
24、拼接模块,用于获取所述哈希值中处于预设位的字符,将所述字符拼接所述合约地址及所述哈希值,得到新的key值;
25、插入模块,用于将所述新的key值与所述键值对中的value值组成待存储数据,并将所述待存储数据插入iavl树中。
26、本申请还提供了一种计算机设备,所述计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
27、本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
28、本实施例中通过获取区块链的区块中的交易数据,其中,所述区块中包含多个交易数据;对多个所述交易数据进行解析,得到每个所述交易数据对应的合约地址及key-value键值对;计算所述键值对中的key值的哈希值;获取所述哈希值中处于预设位的字符,将所述字符拼接所述合约地址及所述哈希值,得到新的key值;将所述新的key值与所述键值对中的value值组成待存储数据,并将所述待存储数据插入iavl树中。采用上述交易数据存储方案,可以将同一智能合约下需要存储的数据的前缀随机打散为多份,这样,这些需要存储的数据在插入iavl树过程中,会被随机分配到多颗子树下,从而可以有效降低子树高度失衡概率,减少iavl树触发自平衡动作的次数,进而可以减少服务器计算和存储资源的消耗,提升区块链存储性能。
1.一种交易数据存储方法,其特征在于,包括:
2.根据权利要求1所述的交易数据存储方法,其特征在于,所述计算所述键值对中的key值的哈希值包括:
3.根据权利要求2所述的交易数据存储方法,其特征在于,所述预设的哈希算法为sha-256算法。
4.根据权利要求1所述的交易数据存储方法,其特征在于,所述获取所述哈希值中处于预设位的字符,将所述字符拼接所述合约地址及所述哈希值,得到新的key值包括:
5.根据权利要求1至4任一项所述的交易数据存储方法,其特征在于,所述将所述新的key值与所述键值对中的value值组成待存储数据,并将所述待存储数据插入iavl树中包括:
6.根据权利要求1所述的交易数据存储方法,其特征在于,所述对所述交易数据进行解析之前,还包括:
7.根据权利要1所述的交易数据存储方法,其特征在于,所述方法还包括:
8.一种交易数据存储装置,其特征在于,包括:
9.一种计算机设备,所述计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现权利要求1至7任一项所述的方法的步骤。