[发明专利]并行修改和读取状态树的方法和装置有效
申请号: | 202010155154.3 | 申请日: | 2020-03-09 |
公开(公告)号: | CN111008201B | 公开(公告)日: | 2020-06-26 |
发明(设计)人: | 谢桂鲁 | 申请(专利权)人: | 支付宝(杭州)信息技术有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/2458;G06Q40/04 |
代理公司: | 北京亿腾知识产权代理事务所(普通合伙) 11309 | 代理人: | 张静娟;周良玉 |
地址: | 310000 浙江省杭州市*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 并行 修改 读取 状态 方法 装置 | ||
1.一种修改状态树的方法,所述状态树的每个节点包括区块链账户地址的一部分,所述状态树的叶节点包括区块链账户的状态、和状态哈希值,所述状态树中的父节点的哈希值基于其全部子节点的哈希值获取,所述状态树被预先划分出多个子树,其中各个子树两两之间没有交集,并且每个子树的根节点为该状态树的根节点的子节点,所述状态树根节点的子节点数目预先基于希望的子树数目确定;所述方法由区块链节点执行,包括:
获取将要执行的针对区块链中多个账户的多个修改操作;
将所述多个修改操作划分为多个分组,每个分组中的各个修改操作所针对的账户对应于一个子树;
对于所述多个分组,并行执行对相应子树的修改操作,以获取与各个分组对应的各个子树的根节点哈希值;
通过默克树算法,基于各个子树的根节点哈希值计算状态树的根节点的哈希值。
2.一种修改状态树的方法,所述状态树的每个节点包括区块链账户地址的一部分,所述状态树的叶节点包括区块链账户的状态、和状态哈希值,所述状态树中的父节点的哈希值基于其全部子节点的哈希值获取,所述状态树被预先划分出多个子树,其中各个子树两两之间没有交集,并且每个子树的根节点为该状态树的根节点的子节点,所述状态树根节点的子节点数目预先基于希望的子树数目确定;所述方法由区块链节点执行,包括:
获取将要执行的针对区块链中多个账户的多个修改操作;
将所述多个修改操作划分为多个分组,每个分组中的各个修改操作所针对的账户对应于一个子树;
对于所述多个分组,并行执行对相应子树的修改操作,以获取与各个分组对应的各个子树的根节点哈希值;
基于各个子树的根节点包括的账户地址的一部分将各个子树的根节点哈希值插入预定MPT树的各个叶节点中,计算所述预定MPT树的根节点哈希值作为所述状态树的根节点的哈希值。
3.根据权利要求1-2任一项所述的方法,其中,所述多个修改操作包括至少一种以下操作:插入操作、更新操作、删除操作。
4.根据权利要求1-2任一项所述的方法,其中,获取将要执行的针对区块链中多个账户的多个修改操作包括,通过执行从本地交易池中选定的用于打包为第一区块的多条交易,获取将要执行的针对区块链中多个账户的多个修改操作。
5.根据权利要求1-2任一项所述的方法,其中,对于所述多个分组,并行执行对相应子树的修改包括,对于所述多个分组,通过多个线程并行执行对相应子树的修改。
6.根据权利要求1-2任一项所述的方法,所述区块链节点包括计算机集群,其中,对于所述多个分组,并行执行对相应子树的修改包括,对于所述多个分组,通过计算机集群中的各个计算机并行执行对相应子树的修改。
7.一种读取状态树的方法,所述状态树的每个节点包括区块链账户地址的一部分,所述状态树的叶节点包括区块链账户的状态、和状态哈希值,所述状态树中的父节点的哈希值基于其全部子节点的哈希值获取,所述状态树被预先划分出多个子树,其中各个子树两两之间没有交集,并且每个子树的根节点为该状态树的根节点的子节点,所述状态树根节点的子节点数目预先基于希望的子树数目确定;所述方法由区块链节点执行,包括:
获取将要执行的针对区块链中多个账户的多个读取操作;
将所述多个读取操作划分为多个分组,每个分组中的各个读取操作所针对的账户对应于一个子树;
对于所述多个分组,并行执行对相应子树的读取操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于支付宝(杭州)信息技术有限公司,未经支付宝(杭州)信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010155154.3/1.html,转载请声明来源钻瓜专利网。