区块链状态数据处理方法技术

技术编号:32480250 阅读:22 留言:0更新日期:2022-03-02 09:43
本申请提供了一种区块链状态数据处理方法,应用于区块链节点,通过在每个时期e

【技术实现步骤摘要】
区块链状态数据处理方法


[0001]本申请涉及金融科技(Fintech)领域,尤其涉及一种区块链状态数据处理方法。

技术介绍

[0002]随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,区块链(Block chain)技术也不例外,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。
[0003]目前,一般每个区块链节点都会用树状存储结构即状态树的形式,来保存区块链节点运行所必须的信息即状态数据,但是随着区块链系统不断运行,状态数据越来越多,状态树也越来越大,这就使得数据的检索和访问效率大大下降。
[0004]即现有技术中存在当区块链系统运行一段时间后状态数据的检索和访问的效率大幅下降的技术问题。

技术实现思路

[0005]本申请提供一种区块链状态数据处理方法,以解决现有技术中存在当区块链系统运行一段时间后状态数据的检索和访问的效率大幅下降的技术问题。
[0006]第一个方面,本申请提供一种区块链状态数据处理方法,应用于区块链节点,该方法包括:
[0007]在每个时期e
n
开始时,创建与时期e
n
相对应的状态树S
n

[0008]获取状态数据,状态数据包括:时期标识以及区块链节点为处理传入的区块和/或接收到的业务事件所必须的信息;
[0009]根据时期标识以及预设要求,将状态数据存储到状态树S
n
中,以便于区块链节点在处理各项业务时调用状态数据;
[0010]其中,预设要求包括:每个时期e
n
内生成的状态数据只能存储到与时期e
n
对应的状态树S
n
中。
[0011]在一种可能的设计中,该方法还包括:在每个时期开始时,若区块链节点中存在前一个时期的第一历史状态树S
n
‑1,则保存并冻结第一历史状态树S
n
‑1。
[0012]在一种可能的设计中,当区块链节点为全节点时,在全节点中保存每个时期e
n
对应的状态树S
n

[0013]当区块链节点为轻节点时,在轻节点中至少保存:状态树S
n
以及第一历史状态树S
n
‑1,并在当前的时期e
n
开始时,删除不满足预设存储要求的第二历史状态树S
m

[0014]在一种可能的设计中,预设存储要求包括:第二历史状态树S
m
对应的历史时期e
m
与当前的时期e
n
的时间间隔小于预设间隔。
[0015]在一种可能的设计中,轻节点中能够保存预设数量个连续的时期e
n
所对应的所有状态树S
n
,预设数量大于或等于2。
[0016]在一种可能的设计中,获取状态数据,包括:
[0017]获取出块节点发送的区块,并根据区块确定状态数据;
[0018]或者,获取用户发送的交易请求,并根据交易请求确定状态数据。
[0019]在一种可能的设计中,状态数据对应的地址包括:时期标识以及地址编码,根据时期标识以及预设要求,将状态数据存储到状态树S
n
中,包括:
[0020]在当前时期e
now
对应的当前状态树S
now
上,根据地址判断是否存在对应的存储路径;
[0021]当存在存储路径时,根据存储路径将状态数据存入当前状态树S
now
中;
[0022]当不存在存储路径时,判断时期标识是否满足免证明要求;
[0023]若满足免证明要求,则在当前状态树S
now
上,根据地址编码创建对应的存储路径;
[0024]根据存储路径将状态数据存入当前状态树S
now
中。
[0025]在一种可能的设计中,根据时期标识判断是否满足免证明要求,包括:
[0026]判断在区块链网络的任意一个区块链节点中是否都储存有时期标识对应的状态树S0。
[0027]在一种可能的设计中,判断时期标识是否满足免证明要求,包括:
[0028]判断第一时期e0是否在当前时期e
now
之前的预设时间范围内,第一时期e0与时期标识相对应。
[0029]可选的,时间范围包括:k个周期,周期为每个时期e
n
所持续的时间长度,k大于或等于1。
[0030]在一种可能的设计中,在判断时期标识是否满足免证明要求之后,还包括:
[0031]若不满足免证明要求,则根据地址,在各个历史时期对应的历史状态树上判断是否存在状态数据;
[0032]若不存在,则利用预设验证模型生成第一证明信息,且当区块链节点为出块节点时,将第一证明信息添加到状态数据对应的区块中,并将区块发送到区块链网络中进行共识,第一证明信息用于表征状态数据不在各个历史状态树上;
[0033]并在当前状态树S
now
上,根据地址编码创建存储路径,根据存储路径将状态数据存入当前状态树S
now
中。
[0034]在一种可能的设计中,根据地址,在各个历史时期对应的历史状态树上判断是否存在状态数据,包括:
[0035]在各个目标历史时期所对应的目标历史状态树上,根据地址编码判断是否存在状态数据,目标历史时期包括:从时期标识对应的第一时期e0开始的各个历史时期;
[0036]其中,目标历史状态树不包括已经存储在轻节点上的各个轻节点状态树,轻节点状态树至少包括:当前时期的状态树S
n
以及当前时期之前一个时期的第一历史状态树S
n
‑1。
[0037]可选的,目标历史时期不包括:当前时期e
now
以及当前时期e
now
的前一个时期e
now
‑1。
[0038]在一种可能的设计中,在各个目标历史时期所对应的目标历史状态树上,根据地址编码判断是否存在状态数据之后,还包括:
[0039]若存在,则利用预设验证模型生成第二证明信息,并且当区块链节点为出块节点时,将第二证明信息添加到状态数据对应的区块中,并将区块发送到区块链网络中进行共识,第二证明信息用于表征:状态数据在最后一次被修改时所对应的第二状态树S1上,并且在最后修改时期e1之后的各个历史状态树上都不存在状态数据,最后修改时期与第二状态
树S1相对应;
[0040]并在当前状态树S
now
上,根据地址编码创建存储路径,根据存储路径将状态数据存入当前状态树S
now
中。
[0041]在一种可能的设计中,在根据时期标识以及预设要求,将状态数据存储到状态树S
n
...

【技术保护点】

【技术特征摘要】
1.一种区块链状态数据处理方法,其特征在于,应用于区块链节点,所述方法包括:在每个时期e
n
开始时,创建与所述时期e
n
相对应的状态树S
n
;获取状态数据,所述状态数据包括:时期标识以及所述区块链节点为处理传入的区块和/或接收到的业务事件所必须的信息;根据所述时期标识以及预设要求,将所述状态数据存储到所述状态树S
n
中,以便于所述区块链节点在处理各项业务时调用所述状态数据;其中,所述预设要求包括:每个所述时期e
n
内生成的所述状态数据只能存储到与所述时期e
n
对应的所述状态树S
n
中。2.根据权利要求1所述的区块链状态数据处理方法,其特征在于,还包括:在每个所述时期开始时,若所述区块链节点中存在前一个时期的第一历史状态树S
n
‑1,则保存并冻结所述第一历史状态树S
n
‑1。3.根据权利要求2所述的区块链状态数据处理方法,其特征在于,当所述区块链节点为全节点时,在所述全节点中保存每个时期e
n
对应的状态树S
n
;当所述区块链节点为轻节点时,在所述轻节点中至少保存:所述状态树S
n
以及所述第一历史状态树S
n
‑1,并在当前的时期e
n
开始时,删除不满足预设存储要求的第二历史状态树S
m
。4.根据权利要求3所述的区块链状态数据处理方法,其特征在于,所述预设存储要求包括:所述第二历史状态树S
m
对应的历史时期e
m
与当前的所述时期e
n
的时间间隔小于预设间隔。5.根据权利要求3所述的区块链状态数据处理方法,其特征在于,所述轻节点中能够保存预设数量个连续的所述时期e
n
所对应的所有所述状态树S
n
,所述预设数量大于或等于2。6.根据权利要求1

5中任意一项所述的区块链状态数据处理方法,其特征在于,所述获取状态数据,包括:获取出块节点发送的区块,并根据所述区块确定所述状态数据;或者,获取用户发送的交易请求,并根据所述交易请求确定所述状态数据。7.根据权利要求6所述的区块链状态数据处理方法,其特征在于,所述状态数据对应的地址包括:所述时期标识以及地址编码,所述根据所述时期标识以及预设要求,将所述状态数据存储到所述状态树S
n
中,包括:在当前时期e
now
对应的当前状态树S
now
上,根据所述地址判断是否存在对应的存储路径;当存在所述存储路径时,根据所述存储路径将所述状态数据存入所述当前状态树S
now
中;当不存在所述存储路径时,判断所述时期标识是否满足免证明要求;若满足所述免证明要求,则在所述当前状态树S
now
上,根据所述地址编码创建对应的所述存储路径;根据所述存储路径将所述状态数据存入所述当前状态树S
now
中。8.根据权利要求7所述的区块链状态数据处理方法,其特征在于,所述根据所述时期标识判断是否满足免证明要求,包括:判断在区块链网络的任意一个所述区块链节点中是否都储存有所述时期标识对应的状态树S0。
9.根据权利要求7所述的区块链状态数据处理方法,其特征在于,所述判断所述时期标识是否满足免证明要求,包括:判断第一时期e0是否在当前时期e
now
之前的预设时间范围内,所述第一时期e0...

【专利技术属性】
技术研发人员:冼祥斌周禄张开翔范瑞彬
申请(专利权)人:深圳前海微众银行股份有限公司
类型:发明
国别省市:

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

1