一种基于增量哈希的区块链世界状态校验和恢复方法技术

技术编号:22784435 阅读:39 留言:0更新日期:2019-12-11 04:31
本发明专利技术公开了一种基于增量哈希的区块链世界状态校验和恢复方法,涉及区块链技术,该方法包括:获取当前区块中用于计算哈希的交易执行结果;计算每个在所述区块合约交易执行过程中修改所涉及到的合约账户的增量哈希;根据所有账户修改情况的哈希摘要进行全局增量哈希计算,作为新的世界状态哈希;世界状态校验以及恢复方法。该方法不需要额外的数据存储,同时又极大压缩了哈希计算的运算量,极大提升了区块链系统性能。

A verification and recovery method of blockchain world state based on incremental hash

The invention discloses a verification and recovery method of blockchain world state based on incremental hash, which relates to blockchain technology. The method includes: obtaining the transaction execution result used to calculate hash in the current block; calculating the incremental hash of each contract account involved in the modification during the execution of the block contract transaction; and the hash summary according to all account modifications Row global incremental hash calculation as a new world state hash; world state verification and recovery method. This method does not need additional data storage, and at the same time, it greatly reduces the computation of hash calculation, and greatly improves the performance of blockchain system.

【技术实现步骤摘要】
一种基于增量哈希的区块链世界状态校验和恢复方法
本专利技术涉及区块链技术,尤其涉及一种基于增量哈希的区块链世界状态校验和恢复方法。
技术介绍
区块链技术,区块链是一种新型去中心化协议,能安全地存储数字货币交易或其他数据,信息不可伪造和篡改,区块链上的交易确认由区块链上的所有节点共同完成,由共识算法保证其一致性,区块链上维护一个公共的账本,公共账本位于存储区块上任何节点可见,从而保证其不可伪造和篡改。世界状态是基于账户模型的区块链系统在交易执行完之后产生的状态信息的总和,包括所有区块链中账户的包括余额在内的账户信息,和所有智能合约的状态信息。因而,智能合约的调用或者在不调用合约情况下的转账操作都会导致世界状态的改变。每一个区块的交易执行之后产生的最新世界状态,是下一个区块的交易执行的基础,准确的说,每笔交易的执行都会在前一笔交易执行之后的最新世界状态的基础上继续修改。在基于账户模型的区块链系统中,节点之间除了保证交易内容和顺序的一致性之外,也要保证世界状态信息的一致性,以防执行过程中可能出现的错误导致,在不同节点看来,同一个账户的余额,或者同一个合约的状态是不一致的。对世界状态计算哈希,并对于不同的区块链节点,比对相同高度的区块的状态哈希是否一致,是最高效且实用的方式。以太坊使用MPT树组织起整个世界状态,并为其计算哈希;hyperledgerfabric在0.6版本中用一棵bucket树做类似的操作。这两种树的共同点是计算代价很高,从而影响区块链系统的处理性能,且会带来严重的数据写放大情况(树的节点信息也需要额外存储一遍)。
技术实现思路
针对现有技术的不足,本专利技术提出了一种基于增量哈希的区块链世界状态校验和恢复方法,设计了一套高性能低存储量的区块链世界状态校验方法,并且当校验出现问题(节点间世界状态不一致)时,给出了相应的恢复方法。本方案是通过以下技术方案实现的:一种基于增量哈希的区块链世界状态校验方法,具体包括以下步骤:步骤一:获取当前区块中用于计算哈希的交易执行结果:区块链系统的执行模块执行区块中的交易,并生成当前区块提交时对应的世界状态修改集合。所述世界状态修改集合以合约账户为单位,将每个账户涉及到的世界状态修改分别存储。步骤二:计算每个在所述区块合约交易执行过程中修改所涉及到的合约账户的增量哈希:(2.1)对所述合约账户的合约状态空间的修改记录进行排序;(2.2)计算排序后的修改记录的哈希;(2.3)计算第一次修改后的所述合约账户增量哈希:利用一个空的哈希值以及对本次合约账户修改执行步骤2.1与步骤2.2所得第一次修改后的所述合约账户的世界状态修改哈希,计算得到第一次修改后的合约账户增量哈希;(2.4)计算第二次修改后的所述合约账户增量哈希:利用所述第一次修改后的所述合约账户的世界状态修改哈希以及对本次账户修改执行步骤2.1与步骤2.2所得第二次修改后的所述合约账户的世界状态修改哈希,计算得到第二次修改后的合约账户增量哈希;(2.5)对于之后的每一次修改所述合约账户增量哈希,通过步骤2.4的迭代方法,即利用所述合约账户上一次修改后计算得到的世界状态修改哈希以及对本次账户修改执行步骤2.1与步骤2.2所得到的当前合约账户的世界状态修改哈希,计算得到所述合约账户的最新修改的世界状态增量哈希。步骤三:根据所有合约账户修改的世界状态增量哈希进行全局增量哈希计算,作为新的世界状态哈希:(3.1)将所有在所述区块合约交易执行过程中被修改世界状态的账户进行序列化,得到序列化的账户。(3.2)将所述序列化的账户按照账户地址进行排序。(3.3)计算排序后的被修改账户的哈希。(3.4)计算第一个区块的增量全局世界状态哈希:利用一个空的哈希值以及对所述第一个区块执行步骤3.1-3.3所得到的所述第一个区块交易执行后被修改账户集合的哈希摘要,计算得到所述第一个区块的增量全局世界状态哈希;(3.5)计算第二个区块的增量全局世界状态哈希:利用所述第一个区块的增量全局世界状态哈希以及对所述第二个区块执行步骤3.1-3.3所得到的所述第二个区块交易执行后被修改账户集合的哈希,计算得到所述第二个区块的增量全局世界状态哈希;(3.6)对于之后的每一个区块,通过步骤3.5的迭代方法,即利用上一个区块交易执行后被修改的合约账户的哈希以及对本区块执行步骤3.1-3.3所得当前区块交易执行后被修改的账户的哈希,计算得到当前区块的增量全局世界状态哈希。步骤四:世界状态校验:每提交指定数量个区块之后,节点之间会进行最新区块的增量全局世界状态哈希的比对:对于任何一个节点,如满足共识算法要求个数个节点的增量全局世界状态哈希与所述节点的增量全局世界状态哈希一致,所述节点确认所述世界状态校验成功;否则,所述节点即为异常节点,所述世界状态校验失败。进一步地,步骤三中所述序列化账户中包括账户余额在内的最新世界状态信息,所述账户包括合约账户和普通账户,所述合约账户的序列化结果中还包括步骤二所计算得到合约账户增量哈希。进一步地,步骤二和步骤三中,采用稳定排序算法对合约账户及账户中的状态信息进行排序。进一步地,步骤四中,所述世界状态校验失败后,对所述区块链世界状态进行恢复,所述恢复的方法具体为:回滚掉所有和其他节点中不同的区块及其对应的世界状态修改,然后从其他节点拉取被回滚掉的区块。拉取区块的同时,把回滚前第一个与其他节点不同的区块对应的世界状态修改直接从区块来源节点拉取过来,并应用修改。之后重复执行步骤一到步骤三,直到恢复出正确的最新世界状态。本专利技术的有益效果:本专利技术应用于区块链平台上,提供了一套全新的世界状态维护、校验和恢复的方案,提升了计算世界状态哈希的效率,减少的不必要数据的存储量。同时,异常节点的世界状态修复也不再像之前一样可能需要回滚掉很多很多区块,提升了世界状态修复的效率。附图说明图1是增量哈希计算的流程图;图2是世界状态修复的流程图。具体实施方式下面结合附图对本专利技术进行详细描述,使得本专利技术的目的和效果将变得更加明显。一种基于增量哈希的区块链世界状态校验方法,具体包括如下步骤:步骤一:获取当前区块中用于计算哈希的交易执行结果:区块链系统的执行模块执行区块中的交易,并生成当前区块提交时对应的世界状态修改集合。所述世界状态修改集合以合约账户为单位,将每个账户涉及到的世界状态修改分别存储。这个世界状态修改集合是后续计算增量哈希过程中计算“增量”的依据。如图1为增量哈希计算的流程图,具体包括合约账户的增量哈希和全局增量哈希计算的计算。步骤二:计算每个在所述区块合约交易执行过程中修改所涉及到的合约账户的增量哈希:这一步主要是针对合约账户,因为每个合约账户会拥有一个合约,每个合约会有一个自己的状态空间。(2.1)对所述合约账户的合约状态空间的修改记录采用稳定排序算法进行排序;其目的是保证后续的哈本文档来自技高网
...

【技术保护点】
1.一种基于增量哈希的区块链世界状态校验方法,其特征在于,具体包括以下步骤:/n步骤一:获取当前区块中用于计算哈希的交易执行结果:/n区块链系统的执行模块执行区块中的交易,并生成当前区块提交时对应的世界状态修改集合。所述世界状态修改集合以合约账户为单位,将每个账户涉及到的世界状态修改分别存储。/n步骤二:计算每个在所述区块合约交易执行过程中修改所涉及到的合约账户的增量哈希:/n(2.1)对所述合约账户的合约状态空间的修改记录进行排序;/n(2.2)计算排序后的修改记录的哈希;/n(2.3)计算第一次修改后的所述合约账户增量哈希:利用一个空的哈希值以及对本次合约账户修改执行步骤2.1与步骤2.2所得第一次修改后的所述合约账户的世界状态修改哈希,计算得到第一次修改后的合约账户增量哈希;/n(2.4)计算第二次修改后的所述合约账户增量哈希:利用所述第一次修改后的所述合约账户的世界状态修改哈希以及对本次账户修改执行步骤2.1与步骤2.2所得第二次修改后的所述合约账户的世界状态修改哈希,计算得到第二次修改后的合约账户增量哈希;/n(2.5)对于之后的每一次修改所述合约账户增量哈希,通过步骤2.4的迭代方法,即利用所述合约账户上一次修改后计算得到的世界状态修改哈希以及对本次账户修改执行步骤2.1与步骤2.2所得到的当前合约账户的世界状态修改哈希,计算得到所述合约账户的最新修改的世界状态增量哈希。/n步骤三:根据所有合约账户修改的世界状态增量哈希进行全局增量哈希计算,作为新的世界状态哈希:/n(3.1)将所有在所述区块合约交易执行过程中被修改世界状态的账户进行序列化,得到序列化的账户。/n(3.2)将所述序列化的账户按照账户地址进行排序。/n(3.3)计算排序后的被修改账户的哈希。/n(3.4)计算第一个区块的增量全局世界状态哈希:利用一个空的哈希值以及对所述第一个区块执行步骤3.1-3.3所得到的所述第一个区块交易执行后被修改账户集合的哈希摘要,计算得到所述第一个区块的增量全局世界状态哈希;/n(3.5)计算第二个区块的增量全局世界状态哈希:利用所述第一个区块的增量全局世界状态哈希以及对所述第二个区块执行步骤3.1-3.3所得到的所述第二个区块交易执行后被修改账户集合的哈希,计算得到所述第二个区块的增量全局世界状态哈希;/n(3.6)对于之后的每一个区块,通过步骤3.5的迭代方法,即利用上一个区块交易执行后被修改的合约账户的哈希以及对本区块执行步骤3.1-3.3所得当前区块交易执行后被修改的账户的哈希,计算得到当前区块的增量全局世界状态哈希。/n步骤四:世界状态校验:/n每提交指定数量个区块之后,节点之间会进行最新区块的增量全局世界状态哈希的比对:对于任何一个节点,如满足共识算法要求个数个节点的增量全局世界状态哈希与所述节点的增量全局世界状态哈希一致,所述节点确认所述世界状态校验成功;否则,所述节点即为异常节点,所述世界状态校验失败。/n...

【技术特征摘要】
1.一种基于增量哈希的区块链世界状态校验方法,其特征在于,具体包括以下步骤:
步骤一:获取当前区块中用于计算哈希的交易执行结果:
区块链系统的执行模块执行区块中的交易,并生成当前区块提交时对应的世界状态修改集合。所述世界状态修改集合以合约账户为单位,将每个账户涉及到的世界状态修改分别存储。
步骤二:计算每个在所述区块合约交易执行过程中修改所涉及到的合约账户的增量哈希:
(2.1)对所述合约账户的合约状态空间的修改记录进行排序;
(2.2)计算排序后的修改记录的哈希;
(2.3)计算第一次修改后的所述合约账户增量哈希:利用一个空的哈希值以及对本次合约账户修改执行步骤2.1与步骤2.2所得第一次修改后的所述合约账户的世界状态修改哈希,计算得到第一次修改后的合约账户增量哈希;
(2.4)计算第二次修改后的所述合约账户增量哈希:利用所述第一次修改后的所述合约账户的世界状态修改哈希以及对本次账户修改执行步骤2.1与步骤2.2所得第二次修改后的所述合约账户的世界状态修改哈希,计算得到第二次修改后的合约账户增量哈希;
(2.5)对于之后的每一次修改所述合约账户增量哈希,通过步骤2.4的迭代方法,即利用所述合约账户上一次修改后计算得到的世界状态修改哈希以及对本次账户修改执行步骤2.1与步骤2.2所得到的当前合约账户的世界状态修改哈希,计算得到所述合约账户的最新修改的世界状态增量哈希。
步骤三:根据所有合约账户修改的世界状态增量哈希进行全局增量哈希计算,作为新的世界状态哈希:
(3.1)将所有在所述区块合约交易执行过程中被修改世界状态的账户进行序列化,得到序列化的账户。
(3.2)将所述序列化的账户按照账户地址进行排序。
(3.3)计算排序后的被修改账户的哈希。
(3.4)计算第一个区块的增量全局世界状态哈希:利用一个空的哈希值以及对所述第一个区块执行步骤3.1-3.3所得到的所述第一...

【专利技术属性】
技术研发人员:李伟邱炜伟李旺泰尹可挺梁秀波
申请(专利权)人:杭州趣链科技有限公司
类型:发明
国别省市:浙江;33

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

1