【技术实现步骤摘要】
块链式账本中全局状态的哈希的生成方法、装置及设备
本说明书实施例涉及信息
,尤其涉及块链式账本中全局状态的哈希的生成方法、装置及设备。
技术介绍
在块链式账本中,通常都会存在一颗记录全局状态的全局状态树。当前对于全局状态的更新方式中每新产生一个交易就会计算一次全局状态所对应的哈希值。在交易频率较高的场景下,对系统的计算负担太大。
技术实现思路
本申请实施例的目的是提供一种在块链式账本中计算全局状态的哈希时可以降低系统负载的方案。为解决上述技术问题,本申请实施例是这样实现的:块链式账本中全局状态的哈希的生成方法,应用于以块链式账本存储数据记录的中心化的数据库服务端中,包括:获取已经确定需要写入账本的多个新交易,其中,所述多个新交易的哈希还没有写入全局状态树;根据所述多个新交易的哈希生成对应所述多个新交易的临时默克尔树;合并所述临时默克尔树和当前的全局状态树,生成以所述多个新交易的哈希为叶子节点的新的全局状态树;获取所述新的全局状态树的根哈希,将所述新的全局状态树的根哈希写入所述账本中的数据块的块头中。对应的,本说明书实施例还提供块链式账本中全局状态的哈希的生成装置,应用于以块链式账本存储数据记录的中心化的数据库服务端中,包括:获取模块,获取已经确定需要写入账本的多个新交易,其中,所述多个新交易的哈希还没有写入全局状态树;生成模块,根据所述多个新交易的哈希生成对应所述多个新交易的临时默克尔树;合并模块,合并所述临时默 ...
【技术保护点】
1.块链式账本中全局状态的哈希的生成方法,应用于以块链式账本存储数据记录的中心化的数据库服务端中,包括:/n获取已经确定需要写入账本的多个新交易,其中,所述多个新交易的哈希还没有写入全局状态树;/n根据所述多个新交易的哈希生成对应所述多个新交易的临时默克尔树;/n合并所述临时默克尔树和当前的全局状态树,生成以所述多个新交易的哈希为叶子节点的新的全局状态树;/n获取所述新的全局状态树的根哈希,将所述新的全局状态树的根哈希写入所述账本中的数据块的块头中。/n
【技术特征摘要】
1.块链式账本中全局状态的哈希的生成方法,应用于以块链式账本存储数据记录的中心化的数据库服务端中,包括:
获取已经确定需要写入账本的多个新交易,其中,所述多个新交易的哈希还没有写入全局状态树;
根据所述多个新交易的哈希生成对应所述多个新交易的临时默克尔树;
合并所述临时默克尔树和当前的全局状态树,生成以所述多个新交易的哈希为叶子节点的新的全局状态树;
获取所述新的全局状态树的根哈希,将所述新的全局状态树的根哈希写入所述账本中的数据块的块头中。
2.如权利要求1所述的方法,根据所述多个新交易的哈希生成对应所述多个新交易的临时默克尔树,包括:
确定每个新交易在账本中的排序信息,所述排序信息包括写入时间或者位置信息;
根据所述排序信息的先后对所述多个新交易排序,根据排序后的所述多个新交易的哈希生成临时默克尔树。
3.如权利要求1所述的方法,根据所述多个新交易的哈希生成对应所述多个新交易的临时默克尔树,包括:
对所述多个新交易进行排序,将排序后的所述多个新交易划分为K个有序的集合;
针对第i集合,创建与该集合对应的第i个线程,根据第i集合中所包含的新交易的顺
序,生成以第i集合中所包含的新交易为叶子节点的第i个子树,;
依序拼接生成得到的K个子树,生成以所述多个新交易为叶子节点的临时默克尔树。
4.如权利要求1所述的方法,合并所述临时默克尔树和当前的全局状态树,生成以所述多个新交易的哈希为叶子节点的新的全局状态树,包括:
确定所述临时默克尔树的根节点的高度;
保持所述临时默克尔树的根节点的高度不变,拼接所述临时默克尔树至当前的全局状态树中最晚的叶子节点的右侧,生成以所述多个新交易的哈希为叶子节点的新的全局状态树。
5.如权利要求1所述的方法,将所述新的全局状态树的根哈希写入所述账本中的数据块的块头中,包括:
生成包含所述多个新交易的新数据块,将所述新的全局状态树的根哈希写入所述新数据块的块头中。
6.如权利要求1所述的方法,所述方法还包括:删除所述临时默克尔树。
7.如权利要求1所述的方法,在所述块链式账本中,数据块通过如下方式生成:
接收待存储的数据记录,确定各数据记录的哈希值;
当达到预设的成块条件时,确定待写入数据块中的各数据记录,生成包含数据块的哈希值和数据记录的第N个数据块,具体包括:
当N=1时,初始数据块的哈希值和块高基于预设方式给定;
当N>1时,根据待写入数据块中的各数据记录和第N-1个数据块的哈希值确定第N个数据块的哈希值,生成包含第N个数据块的哈希...
【专利技术属性】
技术研发人员:张渊,李亿泽,杨新颖,俞本权,闫文远,
申请(专利权)人:支付宝杭州信息技术有限公司,
类型:发明
国别省市:浙江;33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。