更新区块链世界状态默克尔帕特里夏字典树子树制造技术

技术编号:23352820 阅读:33 留言:0更新日期:2020-02-15 07:18
本文实施方式包括通过多次迭代遍历世界状态MPT的子树,在每次迭代,针对子树的当前节点,执行以下操作之一:将世界状态MPT的当前节点添加到更新树,并且移动至所述遍历的下一次迭代,该下一次迭代将所述子树的当前节点设置为所述扩展节点引用的节点,将世界状态MPT的当前节点添加到更新树,并且移动至所述遍历的下一次迭代,该下一次迭代将所述子树的当前节点设置为子树的当前节点的槽指向的节点,将更新树发送到用于使用更新树更新本地存储的子树的客户端。

Update blockchain world state Merkel Patricia dictionary tree subtree

【技术实现步骤摘要】
【国外来华专利技术】更新区块链世界状态默克尔帕特里夏字典树子树
技术介绍
分布式账本系统(DLS),也可称为共识网络和/或区块链网络,使参与的实体能够安全地且不可篡改地存储数据。在不引用任何特定用例的情况下,DLS通常被称为区块链网络。区块链网络的示例类型可以包括公有区块链网络、私有区块链网络和联盟区块链网络。公有区块链网络向所有实体开放使用DLS,并开放参与共识处理。私有区块链网络针对特定实体提供,该实体集中控制读写权限。联盟区块链网络针对选择的实体组群提供,该实体组群控制共识处理,并且联盟区块链网络包括访问控制层。哈希树可以用于区块链网络存储信息。例如,区块链网络的世界状态(例如,区块链网络中的节点(账户)的状态)可以被存储在哈希树中。哈希树的示例包括维护区块链网络内的所有节点(账户)的世界状态的世界状态默克尔帕特里夏字典树(MerklePatriciaTrie,MPT)。随着区块链网络增长,世界状态信息相应地增加,从而产生复杂的数据密集型哈希树。不是区块链网络内的所有节点都需要维护区块链的世界状态。例如,参与将交易添加到区块链网络内的区块链的所谓的共识节点(全量客户端)维护世界状态哈希树以能够参与共识处理。仅在区块链网络内进行交易的其他节点(轻量客户端)不需要维护世界状态,或者甚至不需要知道世界状态。然而,这样的节点需要知道他们自己的状态和在区块链内与他们交易的其他节点的状态(例如,局部状态)。考虑到世界状态哈希树的大小和复杂度以及轻量客户端使用的设备的资源限制,需要资源和带宽高效的数据结构以及用于更新数据结构以维护区块链网络的局部状态的处理。
技术实现思路
本文实施方式包括一种计算机实现的方法,用于生成世界状态默克尔帕特里夏字典树MPT的子树并更新该子树。在一些实施方式中,操作包括:区块链网络的共识客户端创建包括世界状态MPT的根节点并且最初没有其他节点的更新树;该共识客户端多次迭代地对子树的至少一部分执行遍历,在每次迭代中,针对该子树的当前节点,执行以下操作之一:确定该子树的当前节点和该世界状态MPT的当前节点是叶节点并且他们的值不相等,作为响应,将该世界状态MPT的当前节点添加到该更新树,确定该子树的该当前节点和该世界状态MPT的该当前节点是扩展节点,作为响应,将该世界状态MPT的该当前节点添加到该更新树,并且移动至遍历的下一次迭代,该下一次迭代将所述子树的当前节点设置为所述扩展节点引用的节点,确定该子树的当前节点和该世界状态MPT的当前节点是分支节点,并且他们的值不相等,作为响应,将该世界状态MPT的当前节点添加到更新树,确定该子树的当前节点和该世界状态MPT的当前节点是分支节点,并且他们的值相等,作为响应,移动至所述遍历的下一次迭代,该下一次迭代将所述子树的当前节点设置为该子树的当前节点的槽指向的节点;由该共识客户端将该子树的该更新树发送到该区块链网络的非共识客户端,该非共识客户端使用该更新树更新本地存储的子树以提供更新的子树,该更新的子树提供与该非共识客户端关联的账户的状态。其他实施方式包括相应系统、设备和编码在计算机存储设备上被配置为执行方法的操作的计算机程序。这些和其他实施方式均可可选地包括以下特征中的一个或多个:操作还包括在至少一次迭代期间,查找世界状态MPT中的相应节点,并提供搜索路径,该搜索路径中的一个或多个节点被标记为中间节点,并被标记为不在子树中;响应于确定该子树的当前节点和该世界状态MPT的当前节点是分支节点,并且当前迭代是该子树的当前节点被考虑的首次迭代,将该子树的当前节点的值与该世界状态MPT的当前节点的值进行比较;响应于确定该子树的当前节点是根节点,终止遍历;该本地存储的子树是通过一次或多次地用更新树的节点替换该子树的节点,并将该更新树的节点插入该子树来更新的;响应于共识客户端从非共识客户端接收到的请求而创建该更新树;响应于确定该子树的根节点的值与该世界状态MPT的该根节点的值不同而创建该更新树。本文还提供了耦接到一个或多个处理器并且其上存储有指令的一个或多个非暂态计算机可读存储介质,当所述指令由所述一个或多个处理器执行时,所述指令将促使所述一个或多个处理器按照本文提供的方法的实施例执行操作。本文还提供了用于实施本文提供的所述方法的系统。该系统包括一个或多个处理器以及耦接到所述一个或多个处理器并且其上存储有指令的计算机可读存储介质,当所述指令由所述一个或多个处理器执行时,所述指令将促使所述一个或多个处理器按照本文提供的方法的实施例执行操作。应了解,依据本文的方法可以包括本文描述的方面和特征的任意组合。也就是说,根据本文的方法不限于本文具体描述的方面和特征的组合,还包括所提供的方面和特征的任意组合。以下在附图和描述中阐述了本文的一个或多个实施例的细节。根据文和附图以及权利要求,本文的其他特征和优点将显而易见。附图说明图1描绘了可用于执行本文实施方式的环境的示例。图2描绘了根据本文实施方式的概念架构的示例。图3描绘了世界状态默克尔帕特里夏字典树(MerklePatriciaTrie,MPT)的示例。图4描绘了根据本文实施方式的基于图3的示例性世界状态MPT生成的子树的示例。图5A和图5B描绘了可根据本文实施方式执行的处理的示例。图6描绘了包括更新的图3的示例世界状态MPT。图7描绘了根据本文实施方式的基于图6的示例性世界状态MPT的包括更新的图4的子树。图8A和图8B描绘了可根据本文实施方式执行的处理的示例。图9描绘了根据本文实施方式的装置的模块的示例。图10描绘了根据本文实施方式的装置的模块的示例。各附图中的相同附图标记表示相同的元件。具体实施方式本文实施方式包括计算机实现的方法,用于生成世界状态默克尔帕特里夏字典树(MPT)的子树并更新该子树。在一些实施方式中,操作包括通过多次迭代遍历世界状态MPT的子树,并且在每次迭代中,针对该子树的当前节点,执行以下操作之一:将世界状态MPT的当前节点添加到更新树,将世界状态MPT的当前节点添加到更新树,并移动至遍历的下一次迭代,其将子树的当前节点设置为由扩展节点引用的节点;将世界状态MPT的当前节点添加到更新树,并移动至遍历的下一次迭代,其将子树的当前节点设置为子树的当前节点的槽指向的节点。所述操作还包括将更新树发送到客户端以使得该客户端使用更新树更新本地存储的子树。为本文实施方式提供进一步的背景,并且如上所述,分布式账本系统(DLS),又可称为共识网络(例如,由点对点节点组成)和区块链网络,使参与的实体能够安全地、不可篡改地进行交易和存储数据。虽然“区块链”一词通常与特定网络和/或用例相关联,但是本文所使用的区块链一般指在不参考任何特定用例情况下的DLS。区块链是以交易不可篡改的方式存储交易的数据结构。因此,区块链上记录的交易是可靠且可信的。区块链包括一个或多个区块。链中的每个区块通过包含在链中紧邻其之前的前一区块的加密哈希值(cryptographichash)链接到该前一区块。每个区块还包本文档来自技高网
...

【技术保护点】
1.一种计算机实现的方法,所述方法用于更新区块链网络内的世界状态默克尔帕特里夏字典树MPT的子树,所述方法包括:/n所述区块链网络的共识客户端创建包括所述世界状态MPT的根节点并且最初没有其他节点的更新树;/n所述共识客户端通过多次迭代遍历所述子树的至少一部分,并且在每次迭代中,针对所述子树的当前节点,执行以下操作之一:/n确定所述子树的当前节点和所述世界状态MPT的当前节点是叶节点并且他们的值不相等,且作为响应,将所述世界状态MPT的当前节点添加到所述更新树,/n确定所述子树的当前节点和所述世界状态MPT的当前节点是扩展节点,且作为响应,将所述世界状态MPT的当前节点添加到所述更新树,并且移动至所述遍历的下一次迭代,该下一次迭代将所述子树的当前节点设置为所述扩展节点引用的节点,/n确定所述子树的当前节点和所述世界状态MPT的当前节点是分支节点,并且他们的值不相等,且作为响应,将所述世界状态MPT的当前节点添加到所述更新树,/n确定所述子树的当前节点和所述世界状态MPT的当前节点是分支节点,并且他们的值相等,且作为响应,并且移动至所述遍历的下一次迭代,该下一次迭代将所述子树的当前节点设置为所述子树的当前节点的槽指向的节点;/n所述共识客户端将所述子树的所述更新树发送到所述区块链网络的非共识节点,所述非共识客户端使用所述更新树更新本地存储的子树以提供更新的子树,所述更新的子树提供与所述非共识客户端关联的账户的状态。/n...

【技术特征摘要】
【国外来华专利技术】1.一种计算机实现的方法,所述方法用于更新区块链网络内的世界状态默克尔帕特里夏字典树MPT的子树,所述方法包括:
所述区块链网络的共识客户端创建包括所述世界状态MPT的根节点并且最初没有其他节点的更新树;
所述共识客户端通过多次迭代遍历所述子树的至少一部分,并且在每次迭代中,针对所述子树的当前节点,执行以下操作之一:
确定所述子树的当前节点和所述世界状态MPT的当前节点是叶节点并且他们的值不相等,且作为响应,将所述世界状态MPT的当前节点添加到所述更新树,
确定所述子树的当前节点和所述世界状态MPT的当前节点是扩展节点,且作为响应,将所述世界状态MPT的当前节点添加到所述更新树,并且移动至所述遍历的下一次迭代,该下一次迭代将所述子树的当前节点设置为所述扩展节点引用的节点,
确定所述子树的当前节点和所述世界状态MPT的当前节点是分支节点,并且他们的值不相等,且作为响应,将所述世界状态MPT的当前节点添加到所述更新树,
确定所述子树的当前节点和所述世界状态MPT的当前节点是分支节点,并且他们的值相等,且作为响应,并且移动至所述遍历的下一次迭代,该下一次迭代将所述子树的当前节点设置为所述子树的当前节点的槽指向的节点;
所述共识客户端将所述子树的所述更新树发送到所述区块链网络的非共识节点,所述非共识客户端使用所述更新树更新本地存储的子树以提供更新的子树,所述更新的子树提供与所述非共识客户端关联的账户的状态。


2.如权利要求1所述的方法,还包括:
在至少一次迭代期间,查找所述世界状态MPT中的相应节点,并提供搜索路径,所述搜索路径中的一个或多个节点被标记为中间节点,并被标记为不在所述子树中。


3.如权利要求1所述的方法,其中,响应于确定所述子树的当前节点和所述世界状态MPT的当前节点是分支节点,并且当前迭代是所述子树的当前节点被考虑的首次迭代,将所述子树的当前节点的值与所述世界状态MPT的当前节点的值进行比较。


4.如权利要求1所述的方法,其中,响应于确定所述子树的当前节点是所述根节点,终止所述遍历。


5.如权利要求1所述的方法,其中,所述本地存储的子树是通过一次或多次地用所述更新树的节点替换该子树的节点,并将所述更新树的节点插入该子树来更新的。


6.如权利要求1所述的方法,其中,响应于所述共识客户端从所述非共识客户端接收到的请求而创建所述更新树。


7.如权利要求1所述的方法,其中,响应于确定所述子树的根节点的值与所述世界状态MPT的所述根节点的值不同而创建所述更新树。


8.一种耦接到一个或多个计算机且其上存储有指令的非暂时性计算机可读存储介质,所述指令能够执行以更新区块链网络内的世界状态默克尔帕特里夏字典树MPT的子树,所述指令能够由所述一个或多个计算机执行以实现以下操作:
所述区块链网络的共识客户端创建包括所述世界状态MPT的根节点并且最初没有其他节点的更新树;
所述共识客户端通过多次迭代遍历所述子树的至少一部分,并且在每次迭代中,针对所述子树的当前节点,执行以下操作之一:
确定所述子树的当前节点和所述世界状态MPT的当前节点是叶节点并且他们的值不相等,且作为响应,将所述世界状态MPT的当前节点添加到所述更新树,
确定所述子树的当前节点和所述世界状态MPT的当前节点是扩展节点,且作为响应,将所述世界状态MPT的当前节点添加到所述更新树,并且移动至所述遍历的下一次迭代,该下一次迭代将所述子树的当前节点设置为所述扩展节点引用的节点,
确定所述子树的所述当前节点和所述世界状态MPT的所述当前节点是分支节点,并且他们的值不相等,且作为响应,将所述世界状态MPT的所述当前节点添加到所述更新树,
确定所述子树的当前节点和所述世界状态MPT的当前节点是分支节点,并且他们的值相等,且作为响应,移动至所述遍历的下一次迭代,该下一次迭代将所述子树的当前节点设置为所述子树的当前节点的槽指向的节点;
所述共识客户端将所述子树的所述更新树发送到所述区块链网络的非共识节点,所述非共识客户端使用所述更新树更新本地存储的子树以提供更新的子树,所述更新的子树提供与所述非共识客户端关联的账户的状态。


9...

【专利技术属性】
技术研发人员:张文彬
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

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

1