CN115617818B - 区块链中的mpt树批量更新方法、电子设备及存储介质 - Google Patents
区块链中的mpt树批量更新方法、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115617818B CN115617818B CN202211611522.6A CN202211611522A CN115617818B CN 115617818 B CN115617818 B CN 115617818B CN 202211611522 A CN202211611522 A CN 202211611522A CN 115617818 B CN115617818 B CN 115617818B
- Authority
- CN
- China
- Prior art keywords
- node
- tree
- nodes
- child
- key value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 70
- 230000008569 process Effects 0.000 claims description 13
- 238000004590 computer program Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 9
- 230000009286 beneficial effect Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000012966 insertion method Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种区块链中的MPT树批量更新方法、电子设备及存储介质,所述区块链中的MPT树批量更新方法包括:获取待更新键值数据,将所述待更新键值数据转换成字典树;通过遍历匹配所述字典树中各节点与原MPT树中各子节点,将所述字典树中的键值数据插入所述原MPT树中,以将所述原MPT树中的各子节点进行更新;将所述原MPT树中更新过的子节点进行哈希运算,得到更新后的MPT树。本申请解决了MPT树中数据批量更新效率低的技术问题。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种区块链中的MPT树批量更新方法、电子设备及存储介质。
背景技术
随着区块链技术的不断发展,以太坊中应用到一种重要的数据结构MPT(MerklePatricia Tree,梅克尔帕特里夏树),MPT树是一种经过改良的、融合了默克尔树和字典树两种树结构优点的数据结构。当前区块链中的MPT树中的各字节点中有一个flag(标志)字段,所述字段用于保存各节点中的用户数据通过默克树路径生成的哈希值。当所述MPT树中的各子节点中的用户数据发生更新或者插入新的用户数据时,每插入一个数据便需要重新计算并更新几乎整棵默克树的哈希值。尤其是在需要插入大批量数据时,哈希计算次数更会线性增长,其中计算过程耗时较长,更新实时性低,因此导致MPT树中数据批量更新效率较低。
发明内容
本申请的主要目的在于提供一种区块链中的MPT树批量更新方法、电子设备及存储介质,旨在解决MPT树中数据批量更新效率低的技术问题。
为实现上述目的,本申请提供一种区块链中的MPT树批量更新方法,所述区块链中的MPT树批量更新方法包括:
获取待更新键值数据,将所述待更新键值数据转换成字典树;
通过遍历匹配所述字典树中各节点与原MPT树中各子节点,将所述字典树中的键值数据插入所述原MPT树中,以将所述原MPT树中的各子节点进行更新;
将所述原MPT树中更新过的子节点进行哈希运算,得到更新后的MPT树。
可选地,所述通过遍历匹配所述字典树中各节点与原MPT树中各子节点,将所述字典树中的键值数据插入所述原MPT树中的步骤包括:
若所述原MPT树为空,则将所述字典树转换成MPT树;
若所述原MPT树不为空,则将所述字典树中各节点与所述原MPT树中各子节点进行匹配,以更新所述原MPT树中各子节点。
可选地,所述MPT树中至少包括分支节点、扩展节点以及叶子节点中的一种,所述将所述字典树转换成MPT树的步骤包括:
若所述字典树中的节点包括不少于两个子节点,则将所述节点转换成分支节点;
若所述字典树中的节点仅包括一个子节点且所述子节点不为叶子节点,则将所述节点与对应的子节点共同转换成更新扩展节点,其中,所述更新扩展节点的键值由所述节点的键值与所述子节点的键值拼接得到;
其中,若存在连续的节点均仅包括一个子节点,则将各所述节点以及所述子节点共同转换成所述更新扩展节点;
若所述字典树中的节点仅包括一个子节点,且所述子节点为叶子节点,则将所述节点与所述叶子节点共同转换成更新叶子节点,其中,所述更新叶子节点的键值由所述节点的键值与所述子节点的键值拼接得到;
其中,若存在连续的节点均仅包括一个子节点,则将各所述节点以及所述子节点共同转换成所述更新叶子节点。
可选地,所述将所述字典树中各节点与所述原MPT树中各子节点进行匹配,以更新所述原MPT树中各子节点的步骤包括:
当所述字典树中的节点的键值匹配到所述原MPT树的分支节点时,且所述分支节点的子节点为空时,将所述字典树的节点下的所有子节点转换成更新MPT树并插入到所述分支节点下;
当所述字典树中的节点的键值匹配到所述原MPT树的分支节点,且所述分支节点的子节点不为空时,继续遍历匹配所述字典树的其他节点,以更新所述原MPT树中各子节点。
可选地,所述将所述字典树中各节点与所述原MPT树中各子节点进行匹配,以更新所述原MPT树中各子节点的步骤包括:
当所述字典树中的节点的键值匹配到所述原MPT树的扩展节点时,若所述节点的子节点不止一个,则将所述节点转换成分支节点;
若所述扩展节点只包括一个键值,则将所述分支节点替代所述扩展节点;
若所述扩展节点包括不止一个键值,则将所述分支节点替代所述扩展节点,并将所述扩展节点的第一个键值移除后插入到所述分支节点下。
可选地,所述将所述字典树中各节点与所述原MPT树中各子节点进行匹配,以更新所述原MPT树中各子节点的步骤包括:
当所述字典树中的节点的键值匹配到所述原MPT树的扩展节点时,若所述节点仅包括一个子节点且所述节点的键值与所述扩展节点的键值匹配失败,则创建一个分支节点并替代所述扩展节点;
将所述字典树的节点下的所有子节点转换成MPT树插入到所述分支节点下;
将所述扩展节点的第一个键值置为所述分支节点的一路径;
基于所述扩展节点中除所述第一个键值以外的其他键值构建更新扩展节点,并将所述更新拓展节点插入到所述路径下。
可选地,所述将所述字典树中各节点与所述原MPT树中各子节点进行匹配,以更新所述原MPT树中各子节点的步骤包括:
当所述字典树中的节点的键值匹配到所述原MPT树的扩展节点时,若所述节点的仅包括一个子节点且所述节点的键值与所述扩展节点的第一个键值匹配成功,则继续匹配所述扩展节点的其他键值;
若所述扩展节点的其他键值均匹配成功,则继续匹配所述扩展节点的子节点;
若在匹配所述扩展节点的其他键值的过程中匹配失败,则创建更新扩展节点,并将匹配成功的键值添加到所述更新扩展节点中;
在所述更新扩展节点下创建一分支节点,将所述扩展节点的匹配失败的键值和所述扩展节点的子节点插入到所述分支节点下,并继续遍历匹配所述字典树中各子节点。
可选地,所述将所述字典树中各节点与所述原MPT树中各子节点进行匹配,以更新所述原MPT树中各子节点的步骤包括:
当所述字典树中的节点的键值匹配到所述原MPT树的叶子节点时,则创建一分支节点;
若匹配成功的键值为一位,则将所述分支节点替换所述叶子节点;
若匹配成功的键值不止一位,则依据匹配成功的键值创建更新扩展节点,以替换所述叶子节点,并将所述分支节点插入到所述更新扩展节点下;
将所述节点的所有子节点转换成MPT树以及所述叶子节点的未匹配成功的键值插入到所述分支节点下。
本申请还提供一种区块链中的MPT树批量更新装置,所述区块链中的MPT树批量更新装置应用于区块链中的MPT树批量更新设备,所述区块链中的MPT树批量更新装置包括:
字典树生成模块,用于获取待更新键值数据,将所述待更新键值数据转换成字典树;
节点匹配模块,用于通过遍历匹配所述字典树中各节点与原MPT树中各子节点,将所述字典树中的键值数据插入所述原MPT树中,以将所述原MPT树中的各子节点进行更新;
哈希运算模块,用于将所述原MPT树中更新过的子节点进行哈希运算,得到更新后的MPT树。
可选地,所述节点匹配模块还用于:
若所述原MPT树为空,则将所述字典树转换成MPT树;若所述原MPT树不为空,则将所述字典树中各节点与所述原MPT树中各子节点进行匹配,以更新所述原MPT树中各子节点。
可选地,所述节点匹配模块还用于:
若所述字典树中的节点包括不少于两个子节点,则将所述节点转换成分支节点;
若所述字典树中的节点仅包括一个子节点且所述子节点不为叶子节点,则将所述节点与对应的子节点共同转换成更新扩展节点,其中,所述更新扩展节点的键值由所述节点的键值与所述子节点的键值拼接得到;
其中,若存在连续的节点均仅包括一个子节点,则将各所述节点以及所述子节点共同转换成所述更新扩展节点;
若所述字典树中的节点仅包括一个子节点,且所述子节点为叶子节点,则将所述节点与所述叶子节点共同转换成更新叶子节点,其中,所述更新叶子节点的键值由所述节点的键值与所述子节点的键值拼接得到;
其中,若存在连续的节点均仅包括一个子节点,则将各所述节点以及所述子节点共同转换成所述更新叶子节点。
可选地,所述节点匹配模块还用于:
当所述字典树中的节点的键值匹配到所述原MPT树的分支节点时,且所述分支节点的子节点为空时,将所述字典树的节点下的所有子节点转换成更新MPT树并插入到所述分支节点下;
当所述字典树中的节点的键值匹配到所述原MPT树的分支节点,且所述分支节点的子节点不为空时,继续遍历匹配所述字典树的其他节点,以更新所述原MPT树中各子节点。
可选地,所述节点匹配模块还用于:
当所述字典树中的节点的键值匹配到所述原MPT树的扩展节点时,若所述节点的子节点不止一个,则将所述节点转换成分支节点;
若所述扩展节点只包括一个键值,则将所述分支节点替代所述扩展节点;
若所述扩展节点包括不止一个键值,则将所述分支节点替代所述扩展节点,并将所述扩展节点的第一个键值移除后插入到所述分支节点下。
可选地,所述节点匹配模块还用于:
当所述字典树中的节点的键值匹配到所述原MPT树的扩展节点时,若所述节点仅包括一个子节点且所述节点的键值与所述扩展节点的键值匹配失败,则创建一个分支节点并替代所述扩展节点;
将所述字典树的节点下的所有子节点转换成MPT树插入到所述分支节点下;
将所述扩展节点的第一个键值置为所述分支节点的一路径;
基于所述扩展节点中除所述第一个键值以外的其他键值构建更新扩展节点,并将所述更新拓展节点插入到所述路径下。
可选地,所述节点匹配模块还用于:
当所述字典树中的节点的键值匹配到所述原MPT树的扩展节点时,若所述节点的仅包括一个子节点且所述节点的键值与所述扩展节点的第一个键值匹配成功,则继续匹配所述扩展节点的其他键值;
若所述扩展节点的其他键值均匹配成功,则继续匹配所述扩展节点的子节点;
若在匹配所述扩展节点的其他键值的过程中匹配失败,则创建更新扩展节点,并将匹配成功的键值添加到所述更新扩展节点中;
在所述更新扩展节点下创建一分支节点,将所述扩展节点的匹配失败的键值和所述扩展节点的子节点插入到所述分支节点下,并继续遍历匹配所述字典树中各子节点。
可选地,所述节点匹配模块还用于:
当所述字典树中的节点的键值匹配到所述原MPT树的叶子节点时,则创建一分支节点;
若匹配成功的键值为一位,则将所述分支节点替换所述叶子节点;
若匹配成功的键值不止一位,则依据匹配成功的键值创建更新扩展节点,以替换所述叶子节点,并将所述分支节点插入到所述更新扩展节点下;
将所述节点的所有子节点转换成MPT树以及所述叶子节点的未匹配成功的键值插入到所述分支节点下。
本申请还提供一种电子设备,所述电子设备为实体设备,所述电子设备包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的所述区块链中的MPT树批量更新方法的程序,所述区块链中的MPT树批量更新方法的程序被处理器执行时可实现如上述的区块链中的MPT树批量更新方法的步骤。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有实现区块链中的MPT树批量更新方法的程序,所述区块链中的MPT树批量更新方法的程序被处理器执行时实现如上述的区块链中的MPT树批量更新方法的步骤。
本申请还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述的区块链中的MPT树批量更新方法的步骤。
本申请提供了一种区块链中的MPT树批量更新方法、电子设备及存储介质,首先获取待更新键值数据,将所述待更新键值数据转换成字典树,再通过遍历匹配所述字典树中各节点与原MPT树中各子节点,将所述字典树中的键值数据插入所述原MPT树中,以将所述原MPT树中的各子节点进行更新,最后将所述原MPT树中更新过的子节点进行哈希运算,得到更新后的MPT树,本申请的技术方案通过先将键值数据组织成字典树的形式,再一次性将所述字典树中的键值数据插入到所述原MPT树中,最后统一进行哈希运算,克服了逐个向MPT数中插入数据导致的哈希运算量大、实时性低的技术缺陷,减少了计算过程的耗时量,提高了MPT树中的数据批量更新效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请区块链中的MPT树批量更新方法第一实施例的流程示意图;
图2为本申请区块链中的MPT树批量更新方法第一实施例中待更新键值数据转换成的字典树示意图;
图3为本申请区块链中的MPT树批量更新方法第一实施例中步骤A10的节点更新示意图;
图4为本申请实施例中区块链中的MPT树批量更新装置的组成结构示意图;
图5为本申请实施例中区块链中的MPT树批量更新方法涉及的硬件运行环境的设备结构示意图。
本申请目的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其它实施例,均属于本申请保护的范围。
实施例一
MPT树是区块链以及以太坊中重要的数据结构,当前区块链中的梅克尔帕特里夏树(MPT)中的各节点中有一个flag字段,该字段用于保存各节点中的用户数据通过默克树路径生成的哈希值。当节点中的用户数据发生更新或者插入新的用户数据时,往往需要重新计算并更新几乎整棵默克树的哈希值。当需要插入一批数据时,更新hash次数就会线性增长。因此,亟需一种区块链中的MPT树的批量更新方法以提高现有的区块中的批量数据更新效率。
本申请实施例提供一种区块链中的MPT树批量更新方法,在本申请区块链中的MPT树批量更新方法的第一实施例中,参照图1,所述区块链中的MPT树批量更新方法包括:
步骤S10,获取待更新键值数据,将所述待更新键值数据转换成字典树;
步骤S20,通过遍历匹配所述字典树中各节点与原MPT树中各子节点,将所述字典树中的键值数据插入所述原MPT树中,以将所述原MPT树中的各子节点进行更新;
步骤S30,将所述原MPT树中更新过的子节点进行哈希运算,得到更新后的MPT树。
在本申请实施例中,需要说明的是,所述待更新键值数据为需要插入到所述原MPT树中的批量用户数据,所述字典树用于排序和保存大量的字符串,能利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率较高;所述遍历匹配过程中包括对所述字典树中逐级的子节点中的键值与所述原MPT树中各子节点的键值进行匹配,直到全部键值数据插入完成,其中,当所述字典树中的键值匹配到不同类型的节点时,采取不同的更新策略;步骤S30包括将节点更新完成后的MPT树中各节点进行哈希计算,并保存到各节点的flag字段中;所述区块链中的MPT树批量更新方法涉及数据结构包括字典(前缀)树,Merkel(默克尔)树以及以太坊MPT树。使用到的哈希运算包括SHA256,用于储存数据模块为LevelDB。
作为一种示例,步骤S10至步骤S30包括:将获取到的待更新键值转换成字典树的形式存储,得到所述字典树,其中,各所述待更新键值存储在所述字典树中;通过遍历所述字典树中的各个节点,通过哈希提取各所述节点的键值与原MPT树中的各子节点进行匹配,并插入到所述原MPT树中,以将所述原MPT树中得到各子节点进行更新;对所述原MPT树中更新过的子节点进行哈希运算,并将得到的各节点哈希值保存在对应的flag字段中,以完成所述原MPT树的更新。
作为一种示例,所述待更新键值数据包括:S1 3123456789、S2 a823461234、S31461234567、S4 a831234567、S5 aa42234567以及S6 aa31234578,转换生成的字典树如图2所示。
其中,所述通过遍历匹配所述字典树中各节点与原MPT树中各子节点,将所述字典树中的键值数据插入所述原MPT树中的步骤包括:
步骤S21,若所述原MPT树为空,则将所述字典树转换成MPT树;
步骤S22,若所述原MPT树不为空,则将所述字典树中各节点与所述原MPT树中各子节点进行匹配,以更新所述原MPT树中各子节点。
在本申请实施例中,需要说明的是,本申请实施例提供了一种在所述原MPT树为空时的键值数据插入方法,其中具体包括了在所述原MPT树为空时,通过将所述字典树转换成MPT树,以替代所述原MPT树的实施步骤。
作为一种示例,步骤S21至步骤S22包括:判断所述原MPT树是否为空;若所述原MPT树为空,则将所述字典树转换成MPT树,并将所述MPT树中的各子节点作为所述原MPT树更新后的子节点;若所述原MPT树不为空,通过遍历所述字典树中各节点,提取所述字典树中各节点的键值与所述原MPT树中各子节点进行匹配,以更新所述原MPT树中各子节点。
其中,所述MPT树中至少包括分支节点、扩展节点以及叶子节点中的一种,所述将所述字典树转换成MPT树的步骤包括:
步骤S211,若所述字典树中的节点包括不少于两个子节点,则将所述节点转换成分支节点;
步骤S212,若所述字典树中的节点仅包括一个子节点且所述子节点不为叶子节点,则将所述节点与对应的子节点共同转换成更新扩展节点,其中,所述更新扩展节点的键值由所述节点的键值与所述子节点的键值拼接得到;
步骤S213,其中,若存在连续的节点均仅包括一个子节点,则将各所述节点以及所述子节点共同转换成所述更新扩展节点;
步骤S214,若所述字典树中的节点仅包括一个子节点,且所述子节点为叶子节点,则将所述节点与所述叶子节点共同转换成更新叶子节点,其中,所述更新叶子节点的键值由所述节点的键值与所述子节点的键值拼接得到;
步骤S215,其中,若存在连续的节点均仅包括一个子节点,则将各所述节点以及所述子节点共同转换成所述更新叶子节点。
在本申请实施例中,需要说明的是,本申请实施例提供了一种根据字典树中节点的分布情况执行对应的字典树中节点转换成MPT树中节点的方法,以便于高效地将所述字典树转换成对应的MPT树;所述连续的节点指为父子节点位置关系的节点。
作为一种示例,步骤S211至步骤S215包括:依次判断所述字典树中各节点的子节点情况;若所述字典树中的节点包括不少于两个子节点,则将所述节点转换成分支节点,并将各所述子节点转换成所述分支节点的子节点;若所述字典树中的节点仅包括一个子节点且所述子节点不为叶子节点,则将所述节点与对应的子节点共同转换成更新扩展节点,其中,所述更新扩展节点的键值由所述节点的键值与所述子节点的键值拼接得到;其中,若存在连续分布的父子位置关系的节点均仅包括一个子节点,则将各所述节点以及所述子节点共同转换成所述更新扩展节点;若所述字典树中的节点仅包括一个子节点,且所述子节点为叶子节点,则将所述节点与所述叶子节点共同转换成更新叶子节点,其中,所述更新叶子节点的键值由所述节点的键值与所述子节点的键值拼接得到;其中,若存在连续分布的父子位置关系的节点均仅包括一个子节点,且分布在最后的子节点为叶子节点,则将各所述节点以及所述子节点共同转换成所述更新叶子节点。
其中,所述将所述字典树中各节点与所述原MPT树中各子节点进行匹配,以更新所述原MPT树中各子节点的步骤包括:
步骤A10,当所述字典树中的节点的键值匹配到所述原MPT树的分支节点时,且所述分支节点的子节点为空时,将所述字典树的节点下的所有子节点转换成更新MPT树并插入到所述分支节点下;
步骤A20,当所述字典树中的节点的键值匹配到所述原MPT树的分支节点,且所述分支节点的子节点不为空时,继续遍历匹配所述字典树的其他节点,以更新所述原MPT树中各子节点。
在本申请实施例中,需要说明的是,在步骤A10中的将所述字典树的节点下的所有子节点转换成MPT树的步骤已如步骤S211至步骤S215所示,在此不做赘述;所述遍历匹配所述字典树的其他节点的步骤与步骤S20类似,即逐级对所述字典树中的各节点与所述原MPT树中的子节点进行匹配。
作为一种示例,步骤A10至步骤A20包括:通过哈希运算提取所述字典树中各节点的键值,对所述字典树中各节点与所述原MPT树中各子节点进行匹配;对匹配到的子节点类型进行检测;当所述字典树中的节点的键值匹配到所述原MPT树的分支节点时,且所述分支节点的子节点为空时,将所述字典树的节点下的所有子节点转换成MPT树节点的形式,生成更新MPT树;将所述更新MPT树插入到所述分支节点下;当所述字典树中的节点的键值匹配到所述原MPT树的分支节点,且所述分支节点的子节点不为空时,继续遍历匹配所述字典树的其他节点;通过哈希运算提取所述字典树中各节点的键值,对所述字典树中各节点与所述原MPT树中各子节点进行匹配,以更新所述原MPT树中各子节点。
作为一种示例,所述待更新键值数据包括:S1 3123456789、S2 a823461234、S31461234567、S4 a831234567、S5 aa42234567以及S6 aa31234578,其中子节点包括a、1和3,参照图3,其中三角形代表扩展节点,矩形代表分支节点,圆形代表叶子节点,五边形代表新插入的节点,对节点S1进行匹配时,匹配到分支节点键值3的下面,则将所述节点S1除3以外的键值作为叶子节点插入到所述分支节点键值3下面。
其中,所述将所述字典树中各节点与所述原MPT树中各子节点进行匹配,以更新所述原MPT树中各子节点的步骤包括:
步骤B11,当所述字典树中的节点的键值匹配到所述原MPT树的扩展节点时,若所述节点的子节点不止一个,则将所述节点转换成分支节点;
步骤B12,若所述扩展节点只包括一个键值,则将所述分支节点替代所述扩展节点;
步骤B13,若所述扩展节点包括不止一个键值,则将所述分支节点替代所述扩展节点,并将所述扩展节点的第一个键值移除后插入到所述分支节点下。
在本申请实施例中,需要说明的是,本申请实施例提供了一种在所述字典树中的节点的键值匹配到所述原MPT树的节点类型为扩展节点时,且所述节点包括不止一个子节点的情况下的节点更新方法。
作为一种示例,步骤B11至步骤B13包括:通过哈希运算提取所述字典树中各节点的键值,对所述字典树中各节点与所述原MPT树中各子节点进行匹配;对匹配到的子节点类型进行检测;当所述字典树中的节点的键值匹配到所述原MPT树的扩展节点时,判断所述节点是否仅包括一个子节点;若所述节点仅包括一个子节点,则将所述节点转换成分支节点;对所述扩展节点的键值进行检测,判断所述扩展节点的键值是否只包括一个键值;若所述扩展节点只包括一个键值,则将所述分支节点替代所述扩展节点,其中,所述扩展节点的键值用作所述分支节点的键值之一;将所述扩展节点下面的子节点部分以及所述节点下的子节点均插入到所述分支节点下;若所述扩展节点包括不止一个键值,则将所述分支节点替代所述扩展节点,并将所述扩展节点的第一个键值移除,生成第二扩展节点,并将所述第二扩展节点插入到所述分支节点下,其中,所述扩展节点的第一个键值用作所述分支节点的键值之一;将所述节点下的子节点插入到所述分支节点下。
作为一种示例,例如,所述字典树中的a8节点的子节点有两个,分别是2和3,当匹配到的MPT树节点为扩展节点,其键值为2345,则创建一个分支节点。原有的键值为2345,将2作为所述分支节点的键值,所述扩展节点的键值变为345,插入到所述分支节点键值为2的后边,新增节点从3开始无论后面有多少子孙节点,都转换成MPT树的形式插入在所述分支节点的键值为3的后边。
其中,所述将所述字典树中各节点与所述原MPT树中各子节点进行匹配,以更新所述原MPT树中各子节点的步骤包括:
步骤B21,当所述字典树中的节点的键值匹配到所述原MPT树的扩展节点时,若所述节点仅包括一个子节点且所述节点的键值与所述扩展节点的键值匹配失败,则创建一个分支节点并替代所述扩展节点;
步骤B22,将所述字典树的节点下的所有子节点转换成MPT树插入到所述分支节点下;
步骤B23,将所述扩展节点的第一个键值置为所述分支节点的一路径;
步骤B24,基于所述扩展节点中除所述第一个键值以外的其他键值构建更新扩展节点,并将所述更新拓展节点插入到所述路径下。
在本申请实施例中,需要说明的是,本申请实施例提供了一种在所述字典树中的节点的键值匹配到所述原MPT树的节点类型为扩展节点时,且所述节点仅包括一个子节点的情况下与所述扩展节点的键值匹配失败时的节点更新方法。
作为一种示例,步骤B21至步骤B24包括:通过哈希运算提取所述字典树中各节点的键值,对所述字典树中各节点与所述原MPT树中各子节点进行匹配;对匹配到的子节点类型进行检测;当所述字典树中的节点的键值匹配到所述原MPT树的扩展节点时,判断所述节点是否仅包括一个子节点;若所述节点仅包括一个子节点,则对所述扩展节点的键值进行匹配;若所述节点的键值与所述扩展节点的键值匹配失败,则创建一个分支节点并替代所述扩展节点;将所述字典树的节点下的所有子节点转换成MPT树插入到所述分支节点下,其中,将所述节点下的所有子节点转换成MPT树的步骤已如步骤S211至步骤S215所示,在此不做赘述;将所述扩展节点的第一个键值设置为所述分支节点的路径;根据所述扩展节点中除第一个键值以外的其他键值,构建更新扩展节点,并将所述更新拓展节点插入到所述路径下。
其中,所述将所述字典树中各节点与所述原MPT树中各子节点进行匹配,以更新所述原MPT树中各子节点的步骤包括:
步骤B31,当所述字典树中的节点的键值匹配到所述原MPT树的扩展节点时,若所述节点仅包括一个子节点且所述节点的键值与所述扩展节点的第一个键值匹配成功,则继续匹配所述扩展节点的其他键值;
步骤B32,若所述扩展节点的其他键值均匹配成功,则继续匹配所述扩展节点的子节点;
步骤B33,若在匹配所述扩展节点的其他键值的过程中匹配失败,则创建更新扩展节点,并将匹配成功的键值添加到所述更新扩展节点中;
步骤B34,在所述更新扩展节点下创建一分支节点,将所述扩展节点的匹配失败的键值和所述扩展节点的子节点插入到所述分支节点下,并继续遍历匹配所述字典树中各子节点。
在本申请实施例中,需要说明的是,本申请实施例提供了一种在所述字典树中的节点的键值匹配到所述原MPT树的节点类型为扩展节点时,且所述节点仅包括一个子节点的情况下与所述扩展节点的第一个键值匹配成功时的节点更新方法。
作为一种示例,步骤B31至步骤B34包括:通过哈希运算提取所述字典树中各节点的键值,对所述字典树中各节点与所述原MPT树中各子节点进行匹配;对匹配到的子节点类型进行检测;当所述字典树中的节点的键值匹配到所述原MPT树的扩展节点时,判断所述节点是否仅包括一个子节点;若所述节点仅包括一个子节点,则对所述扩展节点的键值进行匹配;若所述节点的键值与所述扩展节点的第一个键值匹配成功时,继续匹配所述扩展节点的其他键值;若所述扩展节点的其他键值均匹配成功,则继续匹配所述扩展节点的子节点;若在匹配所述扩展节点的其他键值的过程中匹配失败,则创建更新扩展节点,并将匹配成功的键值添加到所述更新扩展节点中;若在匹配所述扩展节点的其他键值的过程中匹配失败,则创建更新扩展节点,并将匹配成功的部分键值添加到所述更新扩展节点中;在所述更新扩展节点下创建一分支节点,将所述扩展节点的未匹配成功的部分和所述扩展节点的子节点插入到所述分支节点下,并继续遍历匹配所述字典树中各子节点,以更新所述原MPT树中的各子节点。
其中,所述将所述字典树中各节点与所述原MPT树中各子节点进行匹配,以更新所述原MPT树中各子节点的步骤包括:
步骤C10,当所述字典树中的节点的键值匹配到所述原MPT树的叶子节点时,则创建一分支节点;
步骤C20,若匹配成功的键值为一位,则将所述分支节点替换所述叶子节点;
步骤C30,若匹配成功的键值不止一位,则依据匹配成功的键值创建更新扩展节点,以替换所述叶子节点,并将所述分支节点插入到所述更新扩展节点下;
步骤C40,将所述节点的所有子节点转换成MPT树以及所述叶子节点的未匹配成功的键值插入到所述分支节点下。
在本申请实施例中,需要说明的是,本申请实施例提供了一种在所述字典树中的节点的键值匹配到所述原MPT树的节点类型为叶子节点时的节点更方法,其中,匹配到的叶子节点一般情况不止一位键值,若匹配到的叶子节点仅包括一位键值,则判定数据插入长度异常,并向用户报错,结束更新过程。
作为一种示例步骤C10至步骤C40包括:通过哈希运算提取所述字典树中各节点的键值,对所述字典树中各节点与所述原MPT树中各子节点进行匹配;对匹配到的子节点类型进行检测;当所述字典树中的节点的键值匹配到所述原MPT树的叶子节点时,创建一分支节点;依次对所述叶子节点中的各键值进行匹配;若匹配成功的键值为一位,则将所述分支节点替换所述叶子节点;若匹配成功的键值不止一位,则基于匹配成功的键值数据创建更新扩展节点;将所述更新扩展节点替换所述叶子节点,并将所述分支节点插入到所述更新扩展节点下;无论匹配成功的键值位数多少,将所述节点的所有子节点转换成MPT树以及所述叶子节点的未匹配成功的键值插入到所述分支节点下,其中,将所述节点下的所有子节点转换成MPT树的步骤已如步骤S211至步骤S215所示,在此不做赘述。
本申请实施例提供了一种区块链中的MPT树批量更新方法,首先获取待更新键值数据,将所述待更新键值数据转换成字典树,再通过遍历匹配所述字典树中各节点与原MPT树中各子节点,将所述字典树中的键值数据插入所述原MPT树中,以将所述原MPT树中的各子节点进行更新,最后将所述原MPT树中更新过的子节点进行哈希运算,得到更新后的MPT树,本申请实施例提及的技术方案通过先将键值数据组织成字典树的形式,再一次性将所述字典树中的键值数据插入到所述原MPT树中,最后统一进行哈希运算,克服了逐个向MPT数中插入数据导致的哈希运算量大、实时性低的技术缺陷,减少了计算过程的耗时,提高了MPT树中数据批量更新效率。
实施例二
本申请实施例还提供一种区块链中的MPT树批量更新装置,所述区块链中的MPT树批量更新装置应用于区块链中的MPT树批量更新设备,参照图4,所述区块链中的MPT树批量更新装置包括:
字典树生成模块,用于获取待更新键值数据,将所述待更新键值数据转换成字典树;
节点匹配模块,用于通过遍历匹配所述字典树中各节点与原MPT树中各子节点,将所述字典树中的键值数据插入所述原MPT树中,以将所述原MPT树中的各子节点进行更新;
哈希运算模块,用于将所述原MPT树中更新过的子节点进行哈希运算,得到更新后的MPT树。
可选地,所述节点匹配模块还用于:
若所述原MPT树为空,则将所述字典树转换成MPT树;
若所述原MPT树不为空,则将所述字典树中各节点与所述原MPT树中各子节点进行匹配,以更新所述原MPT树中各子节点。
可选地,所述节点匹配模块还用于:
若所述字典树中的节点包括不少于两个子节点,则将所述节点转换成分支节点;
若所述字典树中的节点仅包括一个子节点且所述子节点不为叶子节点,则将所述节点与对应的子节点共同转换成更新扩展节点,其中,所述更新扩展节点的键值由所述节点的键值与所述子节点的键值拼接得到;
其中,若存在连续的节点均仅包括一个子节点,则将各所述节点以及所述子节点共同转换成所述更新扩展节点;
若所述字典树中的节点仅包括一个子节点,且所述子节点为叶子节点,则将所述节点与所述叶子节点共同转换成更新叶子节点,其中,所述更新叶子节点的键值由所述节点的键值与所述子节点的键值拼接得到;
其中,若存在连续的节点均仅包括一个子节点,则将各所述节点以及所述子节点共同转换成所述更新叶子节点。
可选地,所述节点匹配模块还用于:
当所述字典树中的节点的键值匹配到所述原MPT树的分支节点时,且所述分支节点的子节点为空时,将所述字典树的节点下的所有子节点转换成更新MPT树并插入到所述分支节点下;
当所述字典树中的节点的键值匹配到所述原MPT树的分支节点,且所述分支节点的子节点不为空时,继续遍历匹配所述字典树的其他节点,以更新所述原MPT树中各子节点。
可选地,所述节点匹配模块还用于:
当所述字典树中的节点的键值匹配到所述原MPT树的扩展节点时,若所述节点的子节点不止一个,则将所述节点转换成分支节点;
若所述扩展节点只包括一个键值,则将所述分支节点替代所述扩展节点;
若所述扩展节点包括不止一个键值,则将所述分支节点替代所述扩展节点,并将所述扩展节点的第一个键值移除后插入到所述分支节点下。
可选地,所述节点匹配模块还用于:
当所述字典树中的节点的键值匹配到所述原MPT树的扩展节点时,若所述节点仅包括一个子节点且所述节点的键值与所述扩展节点的键值匹配失败,则创建一个分支节点并替代所述扩展节点;
将所述字典树的节点下的所有子节点转换成MPT树插入到所述分支节点下;
将所述扩展节点的第一个键值置为所述分支节点的一路径;
基于所述扩展节点中除所述第一个键值以外的其他键值构建更新扩展节点,并将所述更新拓展节点插入到所述路径下。
可选地,所述节点匹配模块还用于:
当所述字典树中的节点的键值匹配到所述原MPT树的扩展节点时,若所述节点仅包括一个子节点且所述节点的键值与所述扩展节点的第一个键值匹配成功,则继续匹配所述扩展节点的其他键值;
若所述扩展节点的其他键值均匹配成功,则继续匹配所述扩展节点的子节点;
若在匹配所述扩展节点的其他键值的过程中匹配失败,则创建更新扩展节点,并将匹配成功的键值添加到所述更新扩展节点中;
在所述更新扩展节点下创建一分支节点,将所述扩展节点的匹配失败的键值和所述扩展节点的子节点插入到所述分支节点下,并继续遍历匹配所述字典树中各子节点。
可选地,所述节点匹配模块还用于:
当所述字典树中的节点的键值匹配到所述原MPT树的叶子节点时,则创建一分支节点;
若匹配成功的键值为一位,则将所述分支节点替换所述叶子节点;
若匹配成功的键值不止一位,则依据匹配成功的键值创建更新扩展节点,以替换所述叶子节点,并将所述分支节点插入到所述更新扩展节点下;
将所述节点的所有子节点转换成MPT树以及所述叶子节点的未匹配成功的键值插入到所述分支节点下。
本申请提供的区块链中的MPT树批量更新装置,采用上述实施例中的区块链中的MPT树批量更新方法,解决了MPT树中数据批量更新效率低的技术问题。与现有技术相比,本申请实施例提供的区块链中的MPT树批量更新装置的有益效果与上述实施例提供的区块链中的MPT树批量更新方法的有益效果相同,且该区块链中的MPT树批量更新装置中的其他技术特征与上一实施例方法公开的特征相同,在此不做赘述。
实施例三
本申请实施例提供一种电子设备,电子设备包括:至少一个处理器;以及,与至少一个处理器通信链接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述实施例一中的区块链中的MPT树批量更新方法。
下面参考图5,其示出了适于用来实现本公开实施例的电子设备的结构示意图。本公开实施例中的电子设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图5示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图5所示,电子设备可以包括处理装置(例如中央处理器、图形处理器等),其可以根据存储在只读存储器(ROM)中的程序或者从存储装置加载到随机访问存储器(RAM)中的程序而执行各种适当的动作和处理。在RAM中,还存储有电子设备操作所需的各种程序和数据。处理装置、ROM以及RAM通过总线彼此相连。输入/输出(I/O)接口也链接至总线。
通常,以下系统可以链接至I/O接口:包括例如触摸屏、触摸板、键盘、鼠标、图像传感器、麦克风、加速度计、陀螺仪等的输入装置;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置;包括例如磁带、硬盘等的存储装置;以及通信装置。通信装置可以允许电子设备与其他设备进行无线或有线通信以交换数据。虽然图中示出了具有各种系统的电子设备,但是应理解的是,并不要求实施或具备所有示出的系统。可以替代地实施或具备更多或更少的系统。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置从网络上被下载和安装,或者从存储装置被安装,或者从ROM被安装。在该计算机程序被处理装置执行时,执行本公开实施例的方法中限定的上述功能。
本申请提供的电子设备,采用上述实施例中的区块链中的MPT树批量更新方法,解决了MPT树中数据批量更新效率低的技术问题。与现有技术相比,本申请实施例提供的电子设备的有益效果与上述实施例一提供的区块链中的MPT树批量更新方法的有益效果相同,且该电子设备中的其他技术特征与上一实施例方法公开的特征相同,在此不做赘述。
应当理解,本公开的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式的描述中,具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
实施例四
本实施例提供一种计算机可读存储介质,具有存储在其上的计算机可读程序指令,计算机可读程序指令用于执行上述实施例一中的区块链中的MPT树批量更新的方法。
本申请实施例提供的计算机可读存储介质例如可以是U盘,但不限于电、磁、光、电磁、红外线、或半导体的系统、系统或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电链接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、系统或者器件使用或者与其结合使用。计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读存储介质可以是电子设备中所包含的;也可以是单独存在,而未装配入电子设备中。
上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被电子设备执行时,使得电子设备:获取待更新键值数据,将所述待更新键值数据转换成字典树;通过遍历匹配所述字典树中各节点与原MPT树中各子节点,将所述字典树中的键值数据插入所述原MPT树中,以将所述原MPT树中的各子节点进行更新;将所述原MPT树中更新过的子节点进行哈希运算,得到更新后的MPT树。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—链接到用户计算机,或者,可以链接到外部计算机(例如利用因特网服务提供商来通过因特网链接)。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块的名称在某种情况下并不构成对该单元本身的限定。
本申请提供的计算机可读存储介质,存储有用于执行上述区块链中的MPT树批量更新方法的计算机可读程序指令,解决了MPT树中数据批量更新效率低的技术问题。与现有技术相比,本申请实施例提供的计算机可读存储介质的有益效果与上述实施例提供的区块链中的MPT树批量更新方法的有益效果相同,在此不做赘述。
实施例五
本申请还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述的区块链中的MPT树批量更新方法的步骤。
本申请提供的计算机程序产品解决了MPT树中数据批量更新效率低的技术问题。与现有技术相比,本申请实施例提供的计算机程序产品的有益效果与上述实施例提供的区块链中的MPT树批量更新方法的有益效果相同,在此不做赘述。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利处理范围内。
Claims (8)
1.一种区块链中的MPT树批量更新方法,其特征在于,所述区块链中的MPT树批量更新方法包括:
获取待更新键值数据,将所述待更新键值数据转换成字典树;
通过遍历匹配所述字典树中各节点与原MPT树中各子节点,将所述字典树中的键值数据插入所述原MPT树中,以将所述原MPT树中的各子节点进行更新;
将所述原MPT树中更新过的子节点进行哈希运算,得到更新后的MPT树;
其中,所述通过遍历匹配所述字典树中各节点与原MPT树中各子节点,将所述字典树中的键值数据插入所述原MPT树中的步骤包括:
若所述原MPT树为空,则将所述字典树转换成MPT树;
若所述原MPT树不为空,则将所述字典树中各节点与所述原MPT树中各子节点进行匹配,以更新所述原MPT树中各子节点;
其中,所述MPT树中至少包括分支节点、扩展节点以及叶子节点中的一种,所述将所述字典树转换成MPT树的步骤包括:
若所述字典树中的节点包括不少于两个子节点,则将所述节点转换成分支节点;
若所述字典树中的节点仅包括一个子节点且所述子节点不为叶子节点,则将所述节点与对应的子节点共同转换成更新扩展节点,其中,所述更新扩展节点的键值由所述节点的键值与所述子节点的键值拼接得到;
其中,若存在连续的节点均仅包括一个子节点,则将各所述节点以及所述子节点共同转换成所述更新扩展节点;
若所述字典树中的节点仅包括一个子节点,且所述子节点为叶子节点,则将所述节点与所述叶子节点共同转换成更新叶子节点,其中,所述更新叶子节点的键值由所述节点的键值与所述子节点的键值拼接得到;
其中,若存在连续的节点均仅包括一个子节点,则将各所述节点以及所述子节点共同转换成所述更新叶子节点。
2.如权利要求1所述区块链中的MPT树批量更新方法,其特征在于,所述将所述字典树中各节点与所述原MPT树中各子节点进行匹配,以更新所述原MPT树中各子节点的步骤包括:
当所述字典树中的节点的键值匹配到所述原MPT树的分支节点时,且所述分支节点的子节点为空时,将所述字典树的节点下的所有子节点转换成更新MPT树并插入到所述分支节点下;
当所述字典树中的节点的键值匹配到所述原MPT树的分支节点,且所述分支节点的子节点不为空时,继续遍历匹配所述字典树的其他节点,以更新所述原MPT树中各子节点。
3.如权利要求1所述区块链中的MPT树批量更新方法,其特征在于,所述将所述字典树中各节点与所述原MPT树中各子节点进行匹配,以更新所述原MPT树中各子节点的步骤包括:
当所述字典树中的节点的键值匹配到所述原MPT树的扩展节点时,若所述节点的子节点不止一个,则将所述节点转换成分支节点;
若所述扩展节点只包括一个键值,则将所述分支节点替代所述扩展节点;
若所述扩展节点包括不止一个键值,则将所述分支节点替代所述扩展节点,并将所述扩展节点的第一个键值移除后插入到所述分支节点下。
4.如权利要求1所述区块链中的MPT树批量更新方法,其特征在于,所述将所述字典树中各节点与所述原MPT树中各子节点进行匹配,以更新所述原MPT树中各子节点的步骤包括:
当所述字典树中的节点的键值匹配到所述原MPT树的扩展节点时,若所述节点仅包括一个子节点且所述节点的键值与所述扩展节点的键值匹配失败,则创建一个分支节点并替代所述扩展节点;
将所述字典树的节点下的所有子节点转换成MPT树插入到所述分支节点下;
将所述扩展节点的第一个键值置为所述分支节点的一路径;
基于所述扩展节点中除所述第一个键值以外的其他键值构建更新扩展节点,并将所述更新扩展节点插入到所述路径下。
5.如权利要求1所述区块链中的MPT树批量更新方法,其特征在于,所述将所述字典树中各节点与所述原MPT树中各子节点进行匹配,以更新所述原MPT树中各子节点的步骤包括:
当所述字典树中的节点的键值匹配到所述原MPT树的扩展节点时,若所述节点仅包括一个子节点且所述节点的键值与所述扩展节点的第一个键值匹配成功,则继续匹配所述扩展节点的其他键值;
若所述扩展节点的其他键值均匹配成功,则继续匹配所述扩展节点的子节点;
若在匹配所述扩展节点的其他键值的过程中匹配失败,则创建更新扩展节点,并将匹配成功的键值添加到所述更新扩展节点中;
在所述更新扩展节点下创建一分支节点,将所述扩展节点的匹配失败的键值和所述扩展节点的子节点插入到所述分支节点下,并继续遍历匹配所述字典树中各子节点。
6.如权利要求1所述区块链中的MPT树批量更新方法,其特征在于,所述将所述字典树中各节点与所述原MPT树中各子节点进行匹配,以更新所述原MPT树中各子节点的步骤包括:
当所述字典树中的节点的键值匹配到所述原MPT树的叶子节点时,则创建一分支节点;
若匹配成功的键值为一位,则将所述分支节点替换所述叶子节点;
若匹配成功的键值不止一位,则依据匹配成功的键值创建更新扩展节点,以替换所述叶子节点,并将所述分支节点插入到所述更新扩展节点下;
将所述节点的所有子节点转换成MPT树以及所述叶子节点的未匹配成功的键值插入到所述分支节点下。
7.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信链接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1至6中任一项所述的区块链中的MPT树批量更新方法的步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有实现区块链中的MPT树批量更新方法的程序,所述实现区块链中的MPT树批量更新方法的程序被处理器执行以实现如权利要求1至6中任一项所述区块链中的MPT树批量更新方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211611522.6A CN115617818B (zh) | 2022-12-15 | 2022-12-15 | 区块链中的mpt树批量更新方法、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211611522.6A CN115617818B (zh) | 2022-12-15 | 2022-12-15 | 区块链中的mpt树批量更新方法、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115617818A CN115617818A (zh) | 2023-01-17 |
CN115617818B true CN115617818B (zh) | 2023-03-24 |
Family
ID=84880217
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211611522.6A Active CN115617818B (zh) | 2022-12-15 | 2022-12-15 | 区块链中的mpt树批量更新方法、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115617818B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021036175A1 (zh) * | 2019-08-30 | 2021-03-04 | 创新先进技术有限公司 | 一种更新状态默克树的方法及装置 |
CN113254450A (zh) * | 2021-05-28 | 2021-08-13 | 山大地纬软件股份有限公司 | 一种基于区块链的增量mpt树账户状态存储方法及系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA3057738A1 (en) * | 2019-03-04 | 2019-05-31 | Alibaba Group Holding Limited | Constructing blockchain world state merkle patricia trie subtree |
KR102322729B1 (ko) * | 2019-03-04 | 2021-11-05 | 어드밴스드 뉴 테크놀로지스 씨오., 엘티디. | 블록체인 월드 스테이트 머클 패트리샤 트라이 서브트리의 업데이트 |
CN110457319B (zh) * | 2019-07-31 | 2020-09-08 | 阿里巴巴集团控股有限公司 | 区块链状态数据存储方法及装置、电子设备 |
CN111522833B (zh) * | 2020-07-03 | 2020-10-09 | 支付宝(杭州)信息技术有限公司 | 一种区块链中的mpt树的更新方法、装置和电子设备 |
CN112988761B (zh) * | 2021-05-07 | 2022-04-08 | 支付宝(杭州)信息技术有限公司 | 区块链数据存储方法及装置、电子设备 |
CN114706848A (zh) * | 2022-02-25 | 2022-07-05 | 蚂蚁区块链科技(上海)有限公司 | 区块链数据存储、更新、读取方法及装置、电子设备 |
-
2022
- 2022-12-15 CN CN202211611522.6A patent/CN115617818B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021036175A1 (zh) * | 2019-08-30 | 2021-03-04 | 创新先进技术有限公司 | 一种更新状态默克树的方法及装置 |
CN113254450A (zh) * | 2021-05-28 | 2021-08-13 | 山大地纬软件股份有限公司 | 一种基于区块链的增量mpt树账户状态存储方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN115617818A (zh) | 2023-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108733317B (zh) | 数据存储方法和装置 | |
CN109726217B (zh) | 一种数据库操作方法、装置、设备及存储介质 | |
CN111309304B (zh) | 一种生成idl文件的方法、装置、介质和电子设备 | |
CN111338944B (zh) | 远程过程调用rpc接口测试方法、装置、介质及设备 | |
CN111124541A (zh) | 一种配置文件的生成方法、装置、设备及介质 | |
CN115617818B (zh) | 区块链中的mpt树批量更新方法、电子设备及存储介质 | |
CN111753238A (zh) | 数据映射方法、装置和电子设备 | |
CN111752644A (zh) | 接口模拟方法、装置、设备及存储介质 | |
CN116860286A (zh) | 页面动态更新方法、装置、电子设备和计算机可读介质 | |
CN111399902B (zh) | 客户端源文件处理方法、装置、可读介质与电子设备 | |
CN112000667B (zh) | 用于检索树形数据的方法、装置、服务器和介质 | |
CN114968260A (zh) | 混合预编译方法、装置、电子设备及存储介质 | |
CN111143355B (zh) | 数据处理方法及装置 | |
CN110908867B (zh) | 任务完成的判定方法、装置、存储介质及电子设备 | |
CN110545108B (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
CN114116517B (zh) | 前端项目分析方法、装置、介质及电子设备 | |
CN117539538B (zh) | 程序说明文档生成方法、装置、电子设备和可读介质 | |
CN116186093B (zh) | 地址信息处理方法、装置、电子设备与计算机可读介质 | |
CN111581331B (zh) | 文案处理的方法、装置、电子设备及计算机可读介质 | |
CN111984645B (zh) | 一种数据处理的方法、装置、介质和电子设备 | |
CN116467178B (zh) | 数据库检测方法、装置、电子设备和计算机可读介质 | |
CN112688863B (zh) | 网关数据处理方法、装置及电子设备 | |
CN114327591B (zh) | 应用于多阶段多版本的数据处理方法、装置、介质及设备 | |
CN113434124B (zh) | 多语言项目工程的搭建方法、装置、设备和介质 | |
CN117850956A (zh) | 应用包数据处理方法、装置、电子设备与计算机可读介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |