本申请涉及区块链,特别是涉及一种区块链节点状态数据处理方法、电子装置和存储介质。
背景技术:
1、区块链是一种分布式数据库或账本,它由一系列有序的区块(block)通过哈希指针链接而成,形成一条不可篡改的链式结构。每个区块内包含了多笔交易(transaction),这些交易记录了系统中资产转移、智能合约调用等事件。当某个区块链节点执行交易时,会产生状态变更信息,状态变更信息的集合称之为状态变更集合。状态树(state tree)是区块链系统中用于存储当前全局状态的数据结构,主要用来记录所有账户及其相关的状态信息。
2、状态膨胀是影响区块链系统性能的因素之一,而状态树占据了绝大部分比例。在区块链节点执行交易的过程中,需要对状态树的数据进行访问,对于tps(transactionsper second,每秒交易处理量)比较高的区块链系统而言,这会带来较大的磁盘负载压力。
3、为应对状态膨胀问题,区块链引入了状态剪枝技术。状态剪枝实质上是对区块链状态树的历史数据进行删减,使区块链节点能够只持有近期一定范围内的状态数据,从而降低部分类型区块链节点所需要的硬件资源要求。在对区块链节点的状态树进行剪枝时,若裁剪时机不合适,会影响区块链节点的业务性能。
4、针对相关技术中存在区块链状态剪枝会影响正常业务的性能的问题,目前还没有提出有效的解决方案。
技术实现思路
1、在本实施例中提供了一种区块链节点状态数据处理方法、电子装置和存储介质,以解决相关技术中区块链状态剪枝会影响正常业务的性能的问题。
2、第一个方面,在本实施例中提供了一种区块链节点状态数据处理方法,包括:
3、扫描区块链节点的状态变更集合,得到多个监控参数;
4、判断所述多个监控参数中是否有任意一个监控参数命中触发条件;
5、在判断到有任意一个监控参数命中所述触发条件的情况下,根据所述状态变更集合对所述区块链节点的状态数据进行持久化操作。
6、在其中一个实施例中,所述监控参数包括以下至少之一:
7、时间驱动参数,所述时间驱动参数用于表征当前时间距离上一次对所述区块链节点的状态数据进行持久化操作的时间间隔;
8、事务累积参数,所述事务累积参数用于表征自上一次对所述区块链节点的状态数据进行持久化操作以来新增的区块数目;
9、数据容量参数,所述数据容量参数用于表征当前时间所述区块链节点的待进行持久化操作的状态数据的数据量。
10、在其中一个实施例中,所述区块链节点的状态数据以树形结构存储至持久化存储空间形成状态树,且所述状态树中每一个子节点只有一个唯一的父节点。
11、在其中一个实施例中,所述状态变更集合包括所述区块链节点执行区块交易时,所产生的对状态树节点的写集和裁剪集;在判断到有任意一个监控参数命中所述触发条件的情况下,根据所述状态变更集合对所述区块链节点的状态数据进行持久化操作,包括:
12、在所述状态树中删除所述裁剪集中的数据,以及,在所述状态树中插入所述写集中的数据。
13、在其中一个实施例中,在根据所述状态变更集合对所述区块链节点的状态数据进行持久化操作之前,所述方法还包括:
14、将所述状态变更集合写入剪枝日志;
15、将所述剪枝日志分别进行持久化存储和缓存,并根据所述执行区块的区块号对所述剪枝日志设置索引。
16、在其中一个实施例中,在根据所述状态变更集合对所述区块链节点的状态数据进行持久化操作之后,所述方法还包括:
17、删除当前所述区块链节点的状态变更集合所对应的剪枝日志。
18、在其中一个实施例中,所述方法还包括:
19、当所述区块链节点执行区块交易时,根据所述索引访问缓存的所述剪枝日志,从缓存的所述剪枝日志中寻找执行交易所需要的状态值;
20、若缓存中不存在所述状态值,则从所述状态树中寻找执行交易所需要的状态值。
21、在其中一个实施例中,所述方法还包括:
22、在判断到所述多个监控参数没有任意一个监控参数命中触发条件的情况下,间隔预设时间后,扫描所述区块链节点的状态变更集合,得到多个新的监控参数。
23、第二个方面,在本实施例中提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行述第一个方面所述的区块链节点状态数据处理方法。
24、第三个方面,在本实施例中提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时执行上述第一个方面所述的区块链节点状态数据处理方法的步骤。
25、上述区块链节点状态数据处理方法、电子装置和存储介质,在区块链节点状态变更过程中,基于多个维度对其中的关键参数进行量化监控得到多个监控参数,在任意一个监控参数命中触发条件的情况下,根据状态变更集合对区块链节点的状态数据进行持久化操作,实现了剪枝机制动态化,以便于找准剪枝时机,使得剪枝合理化,改善了区块链状态剪枝对正常业务性能的影响。
26、本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
1.一种区块链节点状态数据处理方法,其特征在于,包括:
2.根据权利要求1所述的区块链节点状态数据处理方法,其特征在于,所述监控参数包括以下至少之一:
3.根据权利要求1所述的区块链节点状态数据处理方法,其特征在于,所述区块链节点的状态数据以树形结构存储至持久化存储空间形成状态树,且所述状态树中每一个子节点只有一个唯一的父节点。
4.根据权利要求3所述的区块链节点状态数据处理方法,其特征在于,所述状态变更集合包括所述区块链节点执行区块交易时,所产生的对状态树节点的写集和裁剪集;在判断到有任意一个监控参数命中所述触发条件的情况下,根据所述状态变更集合对所述区块链节点的状态数据进行持久化操作,包括:
5.根据权利要求4所述的区块链节点状态数据处理方法,其特征在于,在根据所述状态变更集合对所述区块链节点的状态数据进行持久化操作之前,所述方法还包括:
6.根据权利要求5所述的区块链节点状态数据处理方法,其特征在于,在根据所述状态变更集合对所述区块链节点的状态数据进行持久化操作之后,所述方法还包括:
7.根据权利要求5所述的区块链节点状态数据处理方法,其特征在于,所述方法还包括:
8.根据权利要求1所述的区块链节点状态数据处理方法,其特征在于,所述方法还包括:
9.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1至权利要求8中任一项所述的区块链节点状态数据处理方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至权利要求8中任一项所述的区块链节点状态数据处理方法的步骤。