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树做类似的操作。这两种树的共同点是计算代价很高,从而影响区块链系统的处理性能,且会带来严重的数据写放大情况(树的节点信 ...
【技术保护点】
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 ...
【技术特征摘要】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。