【技术实现步骤摘要】
基于区块链的数据处理方法、装置、设备及可读存储介质
[0001]本申请涉及计算机
,尤其涉及一种基于区块链的数据处理方法、装置、设备及可读存储介质。
技术介绍
[0002]区块链系统是由多个区块链节点组成的区块链网络,每个区块链节点会存储该区块链网络对应的最新上链世界状态,即区块链中的最大区块高度的区块上链后,区块链网络中各个账户所拥有的状态数据共同组成的世界状态。
[0003]现有区块链网络中,区块内交易的执行会修改若干账户所拥有的部分状态数据,因此每当有一个区块上链后,就会有对应有一个新的最新上链世界状态。新区块在共识时,又需要依赖其父区块上链后对应的最新上链世界状态来确定自己上链后对应的最新上链世界状态,因此现有共识机制中往往仅允许一个区块进行共识。若采用多个区块同时进行共识的共识机制,则往往无法保证区块链系统的状态数据的一致性。
技术实现思路
[0004]本申请实施例提供了一种数据处理方法、装置、设备及可读存储介质,可以维护多个待上链区块的世界状态,保证区块链系统的状态数据的一致性。
[0005]本申请实施例一方面提供了一种基于区块链的数据处理方法,包括:
[0006]生成初始区块,创建初始区块对应的第一世界状态;第一世界状态具有指向初始区块的父区块对应的第二世界状态的链式关系;第一世界状态和第二世界状态存在于世界状态链中;若父区块为已上链区块中具有最大区块高度的区块,则第二世界状态为共识根世界状态;世界状态链中的第一个世界状态为最新上链世界状态;共识根世界状态具 ...
【技术保护点】
【技术特征摘要】
1.一种基于区块链的数据处理方法,其特征在于,包括:生成初始区块,创建所述初始区块对应的第一世界状态;所述第一世界状态具有指向所述初始区块的父区块对应的第二世界状态的链式关系;所述第一世界状态和所述第二世界状态存在于世界状态链中;若所述父区块为已上链区块中具有最大区块高度的区块,则所述第二世界状态为共识根世界状态;所述世界状态链中的第一个世界状态为最新上链世界状态;所述共识根世界状态具有指向最新上链世界状态的链式关系;所述最新上链世界状态用于记录所述已上链区块对应的最新世界状态;根据所述初始区块中的交易更新所述第一世界状态,得到目标第一世界状态,根据所述世界状态链对所述目标第一世界状态进行构建干净状态树处理,得到包含干净现世界状态树的更新目标第一世界状态;将所述干净现世界状态树对应的第一世界状态根写入所述初始区块,得到待上链区块,将所述待上链区块发送至共识节点,以使所述共识节点基于所述第一世界状态根对所述待上链区块进行共识处理,得到共识结果;若所述共识结果为共识通过结果,则将所述待上链区块写入区块链中,通过所述世界状态链将所述更新目标第一世界状态逐级提交至所述最新上链世界状态,将所述更新目标第一世界状态确定为新的共识根世界状态,所述新的共识根世界状态具有指向提交后的最新上链世界状态的链式关系。2.根据权利要求1所述的方法,其特征在于,所述创建所述初始区块对应的第一世界状态,包括:创建所述初始区块对应的初始世界状态;所述初始世界状态包含有第一前世界状态指针和第一树节点缓存;所述第一树节点缓存包含有第一前树节点缓存指针;将所述第一前世界状态指针指向所述初始区块的父区块对应的第二世界状态,将所述第一前树节点缓存指针指向所述第二世界状态包含的第二树节点缓存,得到所述初始区块对应的第一世界状态。3.根据权利要求1所述的方法,其特征在于,所述根据所述初始区块中的交易更新所述第一世界状态,得到目标第一世界状态,包括:顺序遍历所述初始区块中的交易,获取所述初始区块中的第k个交易;k为小于或等于H的正整数;H为所述初始区块中的交易的总数量;创建所述第k个交易对应的第k个交易世界状态;所述第k个交易世界状态具有指向第k
‑
1个提交世界状态的链式关系;k为1时,所述第k
‑
1个提交世界状态为所述第一世界状态;执行所述第k个交易,在第k个交易执行的过程中对所述第k个交易世界状态进行状态更新处理,得到第k个更新交易世界状态;若所述第k个交易执行成功,则将所述第k个更新交易世界状态提交至所述第k
‑
1个提交世界状态,得到第k个提交世界状态;当k等于H时,将第H个提交世界状态作为目标第一世界状态。4.根据权利要求3所述的方法,其特征在于,所述第k个交易世界状态包含有账户状态映射和脏账户地址集合;所述执行所述第k个交易,在第k个交易执行的过程中对所述第k个交易世界状态进行状态更新处理,得到第k个更新交易世界状态,包括:
执行所述第k个交易,在第k个交易执行的过程中确定第k个交易对应的待更新数据;所述待更新数据包括待更新账户地址、待更新状态数据键和待更新状态数据值;根据所述第k个交易世界状态获取所述待更新账户地址对应的账户状态,作为待更新账户状态;所述待更新账户状态包含有待更新状态数据映射和待更新脏状态数据键集合;将所述待更新状态数据键和所述待更新状态数据值的映射关系更新到所述待更新状态数据映射中,将所述待更新状态数据键插入到所述待更新脏状态数据键集合中,得到现账户状态;将所述待更新账户地址和所述现账户状态的映射关系更新到所述第k个交易世界状态包含的账户状态映射中,将所述待更新账户地址插入到所述第k个交易世界状态包含的脏账户地址集合中,得到第k个更新交易世界状态。5.根据权利要求3所述的方法,其特征在于,所述根据所述第k个交易世界状态获取所述待更新账户地址对应的账户状态,作为待更新账户状态,包括:根据所述待更新账户地址对所述第k个交易世界状态至所述最新上链世界状态进行账户状态映射顺序检索;若在账户状态映射顺序检索的过程中检索到与所述待更新账户地址具有映射关系的账户状态,则将最先检索到的与所述待更新账户地址具有映射关系的账户状态作为待更新账户状态;若在账户状态映射顺序检索的过程中未检索到与所述待更新账户地址具有映射关系的账户状态,则根据所述最新上链世界状态中的世界状态树获取所述待更新账户地址对应的待更新状态树根,根据所述待更新账户地址和所述待更新状态树根建立待更新账户状态。6.根据权利要求4所述的方法,其特征在于,所述若所述第k个交易执行成功,则将所述第k个更新交易世界状态向所述第k
‑
1个提交世界状态进行提交,得到第k个提交世界状态,包括:遍历所述第k个更新交易世界状态包含的脏账户地址集合中的账户地址,顺序获取第j个账户地址;j为小于或等于I的正整数;I为所述第k个更新交易世界状态包含的脏账户地址集合中的账户地址的总数量;从所述第k个更新交易世界状态包含的账户状态映射中获取所述第j个账户地址对应的现账户状态;根据所述第k
‑
1个提交世界状态获取所述第j个账户地址的前账户状态;将所述第j个账户地址对应的现账户状态提交至所述第j个账户地址的前账户状态,将所述第j个账户地址插入到所述第k
‑
1个提交世界状态包含的脏账户地址集合,得到第j个过渡提交世界状态;当j等于I时,清空第k个更新交易世界状态包含的脏账户地址集合和账户状态映射,将所述第I个过渡提交世界状态作为第k个提交世界状态。7.根据权利要求6所述的方法,其特征在于,所述将所述第j个账户地址对应的现账户状态提交至所述第j个账户地址的前账户状态,将所述第j个账户地址插入到所述第k
‑
1个提交世界状态包含的脏账户地址集合,得到第j个过渡提交世界状态,包括:将所述第j个账户地址对应的现账户状态包含的状态数据映射中的状态数据键和状态
数据值的映射关系,更新到所述第j个账户地址的前账户状态包含的状态数据映射中;将所述第j个账户地址对应的现账户状态包含的状态数据映射中的状态数据键插入到所述第j个账户地址的前账户状态包含的脏状态数据键集合中,得到第j个过渡提交世界状态。8.根据权利要求2所述的方法,其特征在于,所述根据所述世界状态链对所述目标第一世界状态进行构建干净状态树处理,得到更新目标第一世界状态,包括:对所述目标第一世界状态进行世界状态树查询;若所述目标第一世界状态包含第一世界状态树,则对包含所述第一世界状态树的所述目标第一世界状态进行全链脏账户状态提交处理,得到包含干净现世界状态树的更新目标第一世界状态;若所述目标第一世界状态未包含所述第一世界状态树,则根据所述第一前世界状态指针查找所述第二世界状态;...
【专利技术属性】
技术研发人员:冯浩铭,颜喆明,屠海涛,何立宝,陈家宝,
申请(专利权)人:腾讯科技深圳有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。