一种智能合约分簇并行的区块链实现方法及装置制造方法及图纸

技术编号:27938627 阅读:15 留言:0更新日期:2021-04-02 14:19
本发明专利技术提供了一种智能合约分簇并行的区块链实现方法及装置,将没有依赖关系的智能合约分配进入不同的合约簇、每个合约簇有独立的待执行交易池、待执行交易序列、合约簇状态,以及独立的交易执行线程执行交易。同时修改区块构成将每个合约簇的交易序列的共识和执行结果的共识分开并异步进行,在做到支持任意长耗时的智能合约交易、无依赖关系的智能合约互不干扰的同时,通过区块生成和验证时交易执行无等待或短等待和分属不同合约簇的交易并行执行的方式,大幅度缩短区块链协议栈的整体时延,大大提高区块链协议栈的并发能力和吞吐能力。

【技术实现步骤摘要】
一种智能合约分簇并行的区块链实现方法及装置
本专利技术涉及区块链
,尤其是区块组成、区块生成、区块验证和智能合约交易执行这一

技术介绍
无论基于什么共识算法,一个区块链网络上的区块生成节点在生成区块时,会从执行上一区块中的交易序列达成的世界状态开始,从等待交易池中选择一批待执行交易予以执行,然后把这些交易、执行这些交易达成的新的世界状态(或其哈希值),上一个区块的哈希值,连同其他必要信息,生成新的区块并把该区块发送给区块链网络上的其他节点,进而对该区块完成显式或隐式的共识。一个区块链网络上的区块验证节点在收到一个新区块时,会初步验证该区块和其中的交易的有效性,然后从执行上一区块中的交易达成的世界状态开始,执行区块中包含的所有交易并达成的新的世界状态(或其哈希值),然后与区块中声称的新的世界状态进行比较。比较成功之后,该区块链节点会依共识流程对该区块完成显式或隐式的共识(即接受或拒绝该区块)。在区块生成和验证时,执行交易需要的时间在整个区块共识全流程所需总时间中占据很大一部分,从而直接影响了区块链网络的并发和吞吐能力。而且,现实场景通常比较复杂、交易执行的耗时甚至可能超过区块生成、验证和共识可能允许的最大交易执行时长,甚至导致这样的场景不被区块链协议栈直接支持。还有,如果区块链网络上的各个节点软硬件配置和负载不完全相同,在给定的时间敏感的共识机制下,一个长耗时的交易可能在一组节点上能够完成运行,但在另一组节点上则不能,从而因为出现本应避免的不确定性而造成区块链协议栈的瘫痪。还有,一个区块链网络上部署的智能合约,经常互不关联。不相关的智能合约相互干扰,降低了区块链网络的整体吞吐能力。
技术实现思路
为了解决上述技术问题中的至少一个,本专利技术提供了一种智能合约分簇并行的区块链实现方法及装置。本专利技术的第一方面,提供了一种智能合约分簇并行的区块链实现方法,包括:区块链的节点并行地处理各个合约簇的待执行交易池中的交易,生成各个合约簇的交易处理信息和各个合约簇的世界状态;其中,每个合约簇包括一个智能合约或多个存在依赖关系的智能合约;所述区块链的节点根据所述交易处理信息和所述世界状态,生成或者验证第一区块。可选地,所述交易处理信息,包括:第一待执行交易队列的已执行交易信息;所述世界状态,包括:执行所述第一待执行交易队列后达成的世界状态。本专利技术实施例中,一个区块包含了多个合约簇的待执行交易队列和执行该区块的待执行交易队列之后达至的世界状态。可选地,所述交易处理信息,包括:第二待执行交易队列和第二区块包括的第三待执行交易队列对应的已执行交易信息;其中,所述第二区块包括所述第一区块和在所述第一区块之前生成的区块,或者,所述第二区块包括在所述第一区块之前生成的区块;所述世界状态,包括:执行所述第三待执行交易队列后达成的世界状态。区别于上一个实施例,本专利技术实施例中,一个区块包含的世界状态是执行完成该区块或该区块之前的某一个区块内的全部或部分的待执行交易队列之后达至的世界状态,与此同时,区块内不仅包含一组当前生成的待执行交易队列,还包含了在先的区块的待执行交易队列对应的已执行交易信息。可选地,所述第一区块和所述第二区块间隔预设个数的区块;所述第二待执行交易队列在生成或验证第三区块时执行,所述第三区块在所述第一区块之后生成,所述第三区块与所述第一区块间隔所述预设个数的区块。可选地,方法还包括:所述区块链的节点接收第一交易;所述区块链的节点获取所述第一交易包括的智能合约信息;所述区块链的节点根据所述第一交易包括的智能合约信息,查询第一状态库,确定所述第一交易对应的合约簇;其中,所述第一状态库包括智能合约与合约簇的关系;所述区块链的节点将所述第一交易放入所述第一交易对应的合约簇的待执行交易池。可选地,所述第一状态库包括:智能合约标识和智能合约所属的合约簇标识;或者,智能合约标识、智能合约当前所属的合约簇标识和智能合约原先所属的合约簇标识。可选地,方法还包括:所述区块链的节点接收第二交易;所述区块链的节点获取所述第二交易包括的待部署智能合约的信息;所述区块链的节点根据所述待部署智能合约的信息,确定所述待部署智能合约对应的合约簇;所述区块链的节点根据所述待部署智能合约对应的合约簇部署所述待部署智能合约。可选地,所述区块链的节点根据所述待部署智能合约对应的合约簇部署所述待部署智能合约之后,还包括:所述区块链的节点更新所述待部署智能合约对应的合约簇的第一状态库,以及,更新第二状态库;其中,所述第一状态库包括智能合约与合约簇的关系;所述第二状态库包括单个合约簇的智能合约信息和世界状态。可选地,所述区块链的节点根据所述待部署智能合约的信息,确定所述待部署智能合约对应的合约簇,包括:所述区块链的节点为所述待部署智能合约创建第一合约簇,将所述第一合约簇作为所述待部署智能合约对应的合约簇;或者,所述区块链的节点确定所述待部署智能合约仅与第二合约簇包括的智能合约存在依赖关系,将所述第二合约簇作为所述待部署智能合约对应的合约簇;或者,所述区块链的节点确定所述待部署智能合约与至少两个第三合约簇包括的智能合约存在依赖关系,合并所述至少两个第三合约簇,形成第四合约簇,将所述第四合约簇作为所述待部署智能合约对应的合约簇。可选地,所述区块链的节点在合并所述至少两个第三合约簇之前,还包括:所述区块链的节点将所述第二交易放入所述至少两个所述第三合约簇的待执行交易队列的队头。可选地,所述区块链的节点合并所述至少两个第三合约簇,包括:所述区块链的节点合并所述至少两个第三合约簇的待执行交易池、待执行交易队列、第二状态库,分别形成第四合约簇的待执行交易池、待执行交易队列、第二状态库;以及,根据所述待部署智能合约的信息更新第一状态库;其中,所述第一状态库包括智能合约与合约簇的关系;所述第二状态库包括单个合约簇的智能合约信息和世界状态。可选地,所述合约簇的标识根据所述合约簇包括的智能合约的地址按照预设规则形成。可选地,所述区块链的节点预先为各个合约簇分配独立的进程或者线程,分别用于处理各个合约簇的交易。可选地,方法还包括:所述区块链的节点触发区块回滚或区块修剪;所述区块链的节点更新与回滚或修剪的区块关联的合约簇的待执行交易池和待执行交易队列;或者,所述区块链的节点更新与回滚或修剪的区块关联的合约簇的待执行交易池、待执行交易队列和第二状态库;其中,所述第二状态库包括单个合约簇的智能合约信息和世界状态。本专利技术的第二方面,提供了一种区块链的节点装置,包括:交易处理模块,用于并行地处理各个合约簇的待执行交易池中的交易,生成各个合约簇的交易处理信息和各个合约簇的世界状态;其中,每个合约簇包括一个智能合约或多个本文档来自技高网
...

【技术保护点】
1.一种智能合约分簇并行的区块链实现方法,其特征在于,包括:/n区块链的节点并行地处理各个合约簇的待执行交易池中的交易,生成各个合约簇的交易处理信息和各个合约簇的世界状态;其中,每个合约簇包括一个智能合约或多个存在依赖关系的智能合约;/n所述区块链的节点根据所述交易处理信息和所述世界状态,生成或者验证第一区块。/n

【技术特征摘要】
1.一种智能合约分簇并行的区块链实现方法,其特征在于,包括:
区块链的节点并行地处理各个合约簇的待执行交易池中的交易,生成各个合约簇的交易处理信息和各个合约簇的世界状态;其中,每个合约簇包括一个智能合约或多个存在依赖关系的智能合约;
所述区块链的节点根据所述交易处理信息和所述世界状态,生成或者验证第一区块。


2.如权利要求1所述的方法,其特征在于,
所述交易处理信息,包括:
第一待执行交易队列的已执行交易信息;
所述世界状态,包括:
执行所述第一待执行交易队列后达成的世界状态。


3.如权利要求1所述的方法,其特征在于,
所述交易处理信息,包括:
第二待执行交易队列和第二区块包括的第三待执行交易队列对应的已执行交易信息;其中,所述第二区块包括所述第一区块和在所述第一区块之前生成的区块,或者,所述第二区块包括在所述第一区块之前生成的区块;
所述世界状态,包括:
执行所述第三待执行交易队列后达成的世界状态。


4.如权利要求3所述的方法,其特征在于,所述第一区块和所述第二区块间隔预设个数的区块;
所述第二待执行交易队列在生成或验证第三区块时执行,所述第三区块在所述第一区块之后生成,所述第三区块与所述第一区块间隔所述预设个数的区块。


5.如权利要求1所述的方法,其特征在于,还包括:
所述区块链的节点接收第一交易;
所述区块链的节点获取所述第一交易包括的智能合约信息;
所述区块链的节点根据所述第一交易包括的智能合约信息,查询第一状态库,确定所述第一交易对应的合约簇;其中,所述第一状态库包括智能合约与合约簇的关系;
所述区块链的节点将所述第一交易放入所述第一交易对应的合约簇的待执行交易池。


6.如权利要求5所述的方法,其特征在于,所述第一状态库包括:
智能合约标识和智能合约所属的合约簇标识;或者,
智能合约标识、智能合约当前所属的合约簇标识和智能合约原先所属的合约簇标识。


7.如权利要求1所述的方法,其特征在于,还包括:
所述区块链的节点接收第二交易;
所述区块链的节点获取所述第二交易包括的待部署智能合约的信息;
所述区块链的节点根据所述待部署智能合约的信息,确定所述待部署智能合约对应的合约簇;
所述区块链的节点根据所述待部署智能合约对应的合约簇部署所述待部署智能合约。


8.如权利要求7所述的方法,其特征在于,所述区块链的节点根据所述待部署智能合约对应的合约簇部署所述待部署智能合约之后,还包括:
所述区块链的节点更新所述待部署智能合约对应的合约簇的第一状态库,以及,更新第二状态库;
其中,所述第一状态库包括智能合约与合约簇的关系;所述第二状态库包括单个合约簇的智能合约信息和世界状态。


9.如权利要求7所述的方法,其特征在于,所述区块链的节点根据所述待部署智能合约的信息,确定所述待部署智能合约对应的合约簇,包括:
所述区块链的节点为所述待部署智能合约创建第一合约簇,将所述第一合约簇作为所述待部署智能合约对应的合约簇;或者,
所述区块链的节点确定所述待部署智能合约仅与第二合约簇包括的智能合约存在依赖关系,将所述第二合约簇作为所述待部署智能合约对应的合约簇;或者,
所述区块链的节点确定所述待部署智能合约与至少两个第三合约簇包括的智能合约存在依赖关系,合并所述至少两个第三合约簇,形成第四合约簇,将所述第四合约簇作为所述待部署智能合约对应的合约簇。


10.如权利要求9所述的方法,其特征在于,所述区块链的节点在合并所述至少两个第三合约簇之前,还包括:
所述区块链的节点将所述第二交易放入所述至少两个所述第三合约簇的待执行交易队列的队头。


11.如权利要求9所述的方法,其特征在于,所述区块链的节点合并所述至少两个第三合约簇,包括:
所述区块链的节点合并所述至少两个第三合约簇的待执行交易池、待执行交易队列、第二状态库,分别形成第四合约簇的待执行交易池、待执行交易队列、第二状态库;以及,根据所述待部署智能合约的信息更新第一状态库;
其中,所述第一状态库包括智能合约与合约簇的关系;所述第二状态库包括单个合约簇的智能合约信息和世界状态。


12.如权利要求1所述的方法,其特征在于,所述合约簇的标识根据所述合约簇包括的智能合约的地址按照预设规则形成。


13.如权利要求1所述的方法,其特征在于,所述区块链的节点预先为各个合约簇分配独立的进程或者线程,分别用于处理各个合约簇的交易。


14.如权利要求1所述的方法,其特征在于,还包括:
所述区块链的节点触发区块回滚或区块修剪;
所述区块链的节点更新与回滚或修剪的区块关联的合约簇的待执行交易池和待执行交易队列;或者,所述区块链的节点更新与回滚或修剪的区块关联的合约簇的待执行交易池、待执行交易队列和第二状态库;
其中,所述第二状态库包括单个合约簇的智能合约信息和世界状态。


15.一种区块链的节点装置,其特征在于,包括:
交易处理模块,用于并行地处理各个合约簇的待执行交易...

【专利技术属性】
技术研发人员:张建钢
申请(专利权)人:北京全息智信科技有限公司
类型:发明
国别省市:北京;11

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

1