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

技术编号:23352327 阅读:27 留言:0更新日期:2020-02-15 07:06
本文实施方式包括通过多次迭代遍历世界状态MPT,在每次迭代中,针对世界状态MPT的当前节点,执行以下操作之一:将当前节点标记为账户节点,并将该当前节点的地址存储在地址列表中,确定该当前节点是扩展节点,并且移动至遍历的下一次迭代,该下一次迭代将该当前节点设置为扩展节点引用的节点,将该当前节点标记为过渡节点,并将该当前节点的地址存储在地址列表中;基于地址列表创建世界状态MPT的子树,子树的根节点包括世界状态MPT的根节点,子树的与世界状态MPT的节点对应的一个或多个子节点的地址存储在地址列表中。

Building block chain world state Merkel Patricia dictionary tree subtree

【技术实现步骤摘要】
【国外来华专利技术】构建区块链世界状态默克尔帕特里夏字典树子树
技术介绍
分布式账本系统(DLS),也可称为共识网络和/或区块链网络,使参与的实体能够安全地且不可篡改地存储数据。在不引用任何特定用例的情况下,DLS通常被称为区块链网络。区块链网络的示例类型可以包括公有区块链网络、私有区块链网络和联盟区块链网络。公有区块链网络向所有实体开放使用DLS,并开放参与共识处理。私有区块链网络针对特定实体提供,该实体集中控制读写权限。联盟区块链网络针对选择的实体组群提供,该实体组群控制共识处理,并且联盟区块链网络包括访问控制层。哈希树可以用于区块链网络存储信息。例如,区块链网络的世界状态(例如,区块链网络中的节点(账户)的状态)可以被存储在哈希树中。哈希树的示例包括维护区块链网络内的所有节点(账户)的世界状态的世界状态默克尔帕特里夏字典树(MerklePatriciaTrie,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的根节点,子树的与世界状态MPT的节点对应的一个或多个子节点的地址存储在地址列表中。为本文实施方式提供进一步的背景,并且如上所述,分布式账本系统(DLS),又可称为共识网络(例如,由点对点节点组成)和区块链网络,使参与的实体能够安全地、不可篡改地进行交易和存储数据。虽然“区块链”一词通常与特定网络和/或用例相关联,但是本文所使用的区块链一般指在不参考任何特定用例情况下的DLS。区块链是以交易不可篡改的方式存储交易的数据结构。因此,区块链上记录的交易是可靠且可信的。区块链包括一个或多个区块。链中的每个区块通过包含在链中紧邻其之前的前一区块的加密哈希值(cryptographichash)链接到该前一区块。每个区块还包括时间戳、自身的加密哈希值以及一个或多个交易。已经被区块链网络中的节点验证的交易经哈希处理并编入默克尔(Merkle)树中。Merkle树是一种数据结构,在该树的叶节点处的数据是经哈希处理的,并且在该树的每个分支中的所有哈希值在该分支的根处连接。此过程沿着树持续一直到整个树的根,在整个树的根处存储了代表树中所有数据的哈希值。声称是存储在本文档来自技高网
...

【技术保护点】
1.一种计算机实现的方法,所述方法用于提供区块链网络内的世界状态默克尔帕特里夏字典树MPT的子树,所述方法包括:/n所述区块链网络的共识客户端提供世界状态MPT和用于存储所述区块链网络内的节点的地址的地址列表,所述地址列表初始为空;/n所述共识客户端通过多次迭代遍历所述世界状态MPT的至少一部分,并且在每次迭代中,针对所述世界状态MPT的所述至少一部分的当前节点,执行以下操作之一:/n将所述当前节点标记为账户节点,并将所述当前节点的地址存储在所述地址列表中,/n确定所述当前节点是扩展节点,并且移动至所述遍历的下一次迭代,该下一次迭代将所述当前节点设置为所述扩展节点引用的节点,/n将所述当前节点标记为过渡节点,并将所述当前节点的地址存储在所述地址列表中;/n所述共识客户端基于所述地址列表创建所述世界状态MPT的子树,所述子树的根节点包括所述世界状态MPT的根节点,所述子树的与所述世界状态MPT的节点对应的一个或多个子节点的地址存储在所述地址列表中;/n所述共识客户端将所述世界状态MPT的所述子树发送到所述区块链网络的非共识客户端,所述子树提供与所述非共识客户端关联的账户的状态。/n

【技术特征摘要】
【国外来华专利技术】1.一种计算机实现的方法,所述方法用于提供区块链网络内的世界状态默克尔帕特里夏字典树MPT的子树,所述方法包括:
所述区块链网络的共识客户端提供世界状态MPT和用于存储所述区块链网络内的节点的地址的地址列表,所述地址列表初始为空;
所述共识客户端通过多次迭代遍历所述世界状态MPT的至少一部分,并且在每次迭代中,针对所述世界状态MPT的所述至少一部分的当前节点,执行以下操作之一:
将所述当前节点标记为账户节点,并将所述当前节点的地址存储在所述地址列表中,
确定所述当前节点是扩展节点,并且移动至所述遍历的下一次迭代,该下一次迭代将所述当前节点设置为所述扩展节点引用的节点,
将所述当前节点标记为过渡节点,并将所述当前节点的地址存储在所述地址列表中;
所述共识客户端基于所述地址列表创建所述世界状态MPT的子树,所述子树的根节点包括所述世界状态MPT的根节点,所述子树的与所述世界状态MPT的节点对应的一个或多个子节点的地址存储在所述地址列表中;
所述共识客户端将所述世界状态MPT的所述子树发送到所述区块链网络的非共识客户端,所述子树提供与所述非共识客户端关联的账户的状态。


2.如权利要求1所述的方法,其中,响应于确定所述当前节点是叶节点和没有空值的分支节点之一,将所述当前节点标记为账户节点。


3.如权利要求1所述的方法,其中,响应于确定所述当前节点是分支节点,并且所述分支节点的所有子节点已被遍历,将所述当前节点标记为过渡节点。


4.如权利要求1所述的方法,其中,在将所述当前节点标记为账户节点之后,所述遍历的下一次迭代的当前节点包括所述账户节点的父节点。


5.如权利要求1所述的方法,其中,在将所述当前节点标记为账户节点和过渡节点之一之后,所述遍历的下一次迭代的当前节点包括所述账户节点和所述过渡节点之一的子节点。


6.如权利要求1所述的方法,其中,基于所述地址列表创建所述世界状态MPT的子树至少部分地包括:针对所述地址列表中被标记为账户节点的地址,确定所述世界状态MPT内的路径,并将所述路径添加至所述子树。


7.如权利要求1所述的方法,其中,所述遍历包括深度优先前序遍历。


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


9.如权利要求8所述的计算机...

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

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

1