【技术实现步骤摘要】
【国外来华专利技术】更新区块链世界状态默克尔帕特里夏字典树子树
技术介绍
分布式账本系统(DLS),也可称为共识网络和/或区块链网络,使参与的实体能够安全地且不可篡改地存储数据。在不引用任何特定用例的情况下,DLS通常被称为区块链网络。区块链网络的示例类型可以包括公有区块链网络、私有区块链网络和联盟区块链网络。公有区块链网络向所有实体开放使用DLS,并开放参与共识处理。私有区块链网络针对特定实体提供,该实体集中控制读写权限。联盟区块链网络针对选择的实体组群提供,该实体组群控制共识处理,并且联盟区块链网络包括访问控制层。哈希树可以用于区块链网络存储信息。例如,区块链网络的世界状态(例如,区块链网络中的节点(账户)的状态)可以被存储在哈希树中。哈希树的示例包括维护区块链网络内的所有节点(账户)的世界状态的世界状态默克尔帕特里夏字典树(MerklePatriciaTrie,MPT)。随着区块链网络增长,世界状态信息相应地增加,从而产生复杂的数据密集型哈希树。不是区块链网络内的所有节点都需要维护区块链的世界状态。例如,参与将交易添加到区块链网络内的区块链的所谓的共识节点(全量客户端)维护世界状态哈希树以能够参与共识处理。仅在区块链网络内进行交易的其他节点(轻量客户端)不需要维护世界状态,或者甚至不需要知道世界状态。然而,这样的节点需要知道他们自己的状态和在区块链内与他们交易的其他节点的状态(例如,局部状态)。考虑到世界状态哈希树的大小和复杂度以及轻量客户端使用的设备的资源限制,需要资源和带宽高效的数据结构以及用于更新数据结构以维护区块链网络的局部状态的处理。 ...
【技术保护点】
1.一种计算机实现的方法,所述方法用于更新区块链网络内的世界状态默克尔帕特里夏字典树MPT的子树,所述方法包括:/n所述区块链网络的共识客户端创建包括所述世界状态MPT的根节点并且最初没有其他节点的更新树;/n所述共识客户端通过多次迭代遍历所述子树的至少一部分,并且在每次迭代中,针对所述子树的当前节点,执行以下操作之一:/n确定所述子树的当前节点和所述世界状态MPT的当前节点是叶节点并且他们的值不相等,且作为响应,将所述世界状态MPT的当前节点添加到所述更新树,/n确定所述子树的当前节点和所述世界状态MPT的当前节点是扩展节点,且作为响应,将所述世界状态MPT的当前节点添加到所述更新树,并且移动至所述遍历的下一次迭代,该下一次迭代将所述子树的当前节点设置为所述扩展节点引用的节点,/n确定所述子树的当前节点和所述世界状态MPT的当前节点是分支节点,并且他们的值不相等,且作为响应,将所述世界状态MPT的当前节点添加到所述更新树,/n确定所述子树的当前节点和所述世界状态MPT的当前节点是分支节点,并且他们的值相等,且作为响应,并且移动至所述遍历的下一次迭代,该下一次迭代将所述子树的当前节点设 ...
【技术特征摘要】
【国外来华专利技术】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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。