一种区块链的并行交易执行方法、装置和电子设备制造方法及图纸

技术编号:27687834 阅读:23 留言:0更新日期:2021-03-17 04:11
本发明专利技术提供一种区块链的并行交易执行方法、装置及电子设备,通过在智能合约部署时和区块链交易提交时主动声明、区块链协议栈通过代码分析主动发现和执行交易时通过世界状态的读写被动发现等方式发掘和维护智能合约间的依赖关系,然后在区块生成和验证时基于依赖关系将没有依赖关系的交易分到不同的交易桶、每个交易桶由一个单独的交易执行线程依据确定的顺序执行桶中的交易,从而实现对没有依赖关系的交易的并发执行。本发明专利技术并发执行没有依赖关系的交易的方式,与本发明专利技术前区块链协议栈顺次执行所有交易的方式相比,能够有效节省区块生成和验证时执行交易所需要的时间,从而提高区块链的并发能力、降低区块链的时延,改善区块链协议栈的整体性能。

【技术实现步骤摘要】
一种区块链的并行交易执行方法、装置和电子设备
本专利技术涉及区块链
,尤其是在区块生成和区块验证中交易执行这一

技术介绍
区块链网络上的节点在生成区块时,需要选择并依确定性的顺序,顺次执行一组交易,达成新的世界状态,方可生成区块,进而参与共识。同样,区块链节点在验证区块时,需要依同样的确定性的顺序,顺次执行区块里包含的一组交易并达成新的世界状态,方可验证区块并进而参与共识。因为交易是顺次执行,为了提高出块速度,每个区块能够包含的交易数量可能非常有限,这严重影响区块链的并发能力等性能。执行逻辑复杂、耗时较长的交易时,这个问题就更突出。
技术实现思路
为了解决上述技术问题中的至少一个,本专利技术提供了一种区块链的并行交易执行方法、装置、电子设备和可读存储介质。本专利技术的第一方面,提供了一种区块链的并行交易执行方法,包括:获取每个交易的有效依赖关系;根据所述每个交易的有效依赖关系,为所述每个交易分配交易桶;并行地执行每个交易桶中的交易。可选地,获取每个交易的有效依赖关系,包括:获取每个交易的目标智能合约的有效依赖关系;和/或,获取每个交易声明的有效依赖关系。其中,预先设置每个交易的目标智能合约的有效依赖关系,直接获取每个交易的目标智能合约的有效依赖关系作为交易的有效依赖关系;或者,规定每个交易需要声明有效依赖关系,将交易声明的有效依赖关系作为交易的有效依赖关系;又或者,预先设置每个交易的目标智能合约的有效依赖关系,以及,每个交易需要声明有效依赖关系,将交易的目标智能合约的有效依赖关系和交易声明的有效依赖关系的并集作为交易的有效依赖关系。在本专利技术实施例中,有效依赖关系通过一个元数据表达,元数据包括未设定、不相关、以及至少一个地址三种取值情况。可选地,获取每个交易的有效依赖关系,包括:获取每个交易的目标智能合约的依赖关系和依赖解除;获取所述每个交易声明的依赖关系和依赖解除;根据所述每个交易的目标智能合约的依赖关系和依赖解除,以及所述每个交易声明的依赖关系和依赖解除,确定所述每个交易的有效依赖关系。可选地,根据所述每个交易的目标智能合约的依赖关系和依赖解除,以及所述每个交易声明的依赖关系和依赖解除,确定所述每个交易的有效依赖关系,包括:对于所述每个交易中的任一交易,当所述任一交易的目标智能合约的依赖关系和所述任一交易声明的依赖关系均不为未设定时,计算所述任一交易的目标智能合约的依赖关系和所述任一交易声明的依赖关系的并集,将所述并集减去所述任一交易的目标智能合约的显式依赖解除和所述任一交易声明的显式依赖解除,得到所述任一交易的有效依赖关系。其中,显式依赖解除指包括一个或多个地址的依赖解除。可选地,根据所述每个交易的目标智能合约的依赖关系和依赖解除,以及所述每个交易声明的依赖关系和依赖解除,确定所述每个交易的有效依赖关系,包括:对于所述每个交易中的任一交易,当所述任一交易的目标智能合约的依赖关系和所述任一交易声明的依赖关系均为未设定时,确定所述任一交易的有效依赖关系为未设定;对于所述每个交易中的任一交易,当所述任一交易的目标智能合约的依赖关系和所述任一交易声明的依赖关系中的一个为未设定时,将所述任一交易的目标智能合约的依赖关系和所述每个交易声明的依赖关系中的另一个减去所述任一交易的目标智能合约的显式依赖解除和所述任一交易声明的显式依赖解除,得到所述任一交易的有效依赖关系。其中,显式依赖解除指包括一个或多个地址的依赖解除。可选地,根据所述每个交易的有效依赖关系,为所述每个交易分配交易桶,包括:对于所述每个交易中的任一交易,当所述任一交易的有效依赖关系为不相关时,为所述任一交易分配单独的交易桶。可选地,根据所述每个交易的有效依赖关系,为所述每个交易分配交易桶,包括:对于所述每个交易中的任一交易,当所述任一交易的有效依赖关系为未设定时,将所述任一交易分配至用于存放有效依赖关系为未设定的至少一个交易的交易桶。对于所述每个交易中的任一交易,当所述任一交易的有效依赖关系为一个或多个地址时,将所述任一交易分配至用于存放有效依赖关系相同的交易的交易桶。可选地,根据所述每个交易的有效依赖关系,为所述每个交易分配交易桶,包括:对于所述每个交易中的任一交易,当所述任一交易的有效依赖关系为未设定时,或者,当所述任一交易的有效依赖关系为一个或多个地址时,将所述任一交易分配至用于存放有效依赖关系不为不相关的至少一个交易的交易桶。可选地,方法还包括:当用于分配的交易桶不存在时,创建对应的交易桶。可选地,并行地执行每个交易桶中的交易,包括:为每个交易桶创建一个线程,各个线程并行地执行每个交易桶中的交易。可选地,并行地执行每个交易桶中的交易,包括:创建多个线程,每个线程对应至少一个用于存放有效依赖关系为不相关的交易的交易桶,和/或,每个线程对应至少一个用于存放有效依赖关系相同的交易的交易桶;各个线程并行地执行对应的多个交易桶中的交易。可选地,获取每个交易的有效依赖关系之后,还包括:将所述有效依赖关系更新至区块链网络的世界状态数据。可选地,所述执行每个交易桶中的交易之后,还包括:判断所述每个交易桶中的交易在执行时使用的依赖关系与所述有效依赖关系是否一致;如果是,确定交易执行成功;否则,确定交易执行失败。可选地,所述确定交易执行失败之后,还包括:如果确定所述目标智能合约的依赖关系和/或依赖解除有误导致交易执行失败,修正所述目标智能合约的依赖关系和/或依赖解除,如果确定交易声明的依赖解除导致交易执行失败,执行惩罚交易发起方的处理流程。可选地,当区块生成时,或者,当区块验证时,获取每个交易的有效依赖关系,根据所述每个交易的有效依赖关系,为所述每个交易分配交易桶,并行地执行每个交易桶中的交易。本专利技术的第二方面,提供了一种区块链的并行交易执行装置,包括:有效依赖关系获取模块,用于获取每个交易的有效依赖关系;交易桶分配模块,用于根据所述每个交易的有效依赖关系,为所述每个交易分配交易桶;交易执行模块,用于并行地执行每个交易桶中的交易。可选地,所述有效依赖关系获取模块,具体用于:获取每个交易的目标智能合约的有效依赖关系;和/或,获取每个交易声明的有效依赖关系。可选地,所述有效依赖关系获取模块,具体用于:获取每个交易的目标智能合约的依赖关系和依赖解除;获取所述每个交易声明的依赖关系和依赖解除;根据所述每个交易的目标智能合约的依赖关系和依赖解除,以及所述每个交易声明的依赖关系和依赖解除,确定所述每个交易的有效依赖关系。可选地,所述有效依赖关系获取模块用于根据所述每个交易的目标智能合约的依赖关系和依赖解除,以及所述每个交易声明的依赖关系和依赖解除,确定所述每个交易的有效依赖关系时,具体用于:...

【技术保护点】
1.一种区块链的并行交易执行方法,其特征在于,包括:/n获取每个交易的有效依赖关系;/n根据所述每个交易的有效依赖关系,为所述每个交易分配交易桶;/n并行地执行每个交易桶中的交易。/n

【技术特征摘要】
1.一种区块链的并行交易执行方法,其特征在于,包括:
获取每个交易的有效依赖关系;
根据所述每个交易的有效依赖关系,为所述每个交易分配交易桶;
并行地执行每个交易桶中的交易。


2.如权利要求1所述的方法,其特征在于,获取每个交易的有效依赖关系,包括:
获取每个交易的目标智能合约的有效依赖关系;和/或,获取每个交易声明的有效依赖关系。


3.如权利要求1所述的方法,其特征在于,获取每个交易的有效依赖关系,包括:
获取每个交易的目标智能合约的依赖关系和依赖解除;
获取所述每个交易声明的依赖关系和依赖解除;
根据所述每个交易的目标智能合约的依赖关系和依赖解除,以及所述每个交易声明的依赖关系和依赖解除,确定所述每个交易的有效依赖关系。


4.如权利要求3所述的方法,其特征在于,根据所述每个交易的目标智能合约的依赖关系和依赖解除,以及所述每个交易声明的依赖关系和依赖解除,确定所述每个交易的有效依赖关系,包括:
对于所述每个交易中的任一交易,当所述任一交易的目标智能合约的依赖关系和所述任一交易声明的依赖关系均不为未设定时,计算所述任一交易的目标智能合约的依赖关系和所述任一交易声明的依赖关系的并集,将所述并集减去所述任一交易的目标智能合约的显式依赖解除和所述任一交易的显式依赖解除,得到所述任一交易的有效依赖关系。


5.如权利要求3所述的方法,其特征在于,根据所述每个交易的目标智能合约的依赖关系和依赖解除,以及所述每个交易声明的依赖关系和依赖解除,确定所述每个交易的有效依赖关系,包括:
对于所述每个交易中的任一交易,当所述任一交易的目标智能合约的依赖关系和所述任一交易声明的依赖关系均为未设定时,确定所述任一交易的有效依赖关系为未设定;
对于所述每个交易中的任一交易,当所述任一交易的目标智能合约的依赖关系和所述任一交易声明的依赖关系中的一个为未设定时,将所述任一交易的目标智能合约的依赖关系和所述每个交易声明的依赖关系中的另一个减去所述任一交易的目标智能合约的显式依赖解除和所述任一交易声明的显式依赖解除,得到所述任一交易的有效依赖关系。


6.如权利要求1所述的方法,其特征在于,根据所述每个交易的有效依赖关系,为所述每个交易分配交易桶,包括:
对于所述每个交易中的任一交易,当所述任一交易的有效依赖关系为不相关时,为所述任一交易分配单独的交易桶。


7.如权利要求1所述的方法,其特征在于,根据所述每个交易的有效依赖关系,为所述每个交易分配交易桶,包括:
对于所述每个交易中的任一交易,当所述任一交易的有效依赖关系为未设定时,将所述任一交易分配至用于存放有效依赖关系为未设定的至少一个交易的交易桶;
对于所述每个交易中的任一交易,当所述任一交易的有效依赖关系为一个或多个地址时,将所述任一交易分配至用于存放有效依赖关系相同的交易的交易桶。


8.如权利要求6或7所述的方法,其特征在于,方法还包括:
当用于分配的交易桶不存在时,创建对应的交易桶。


9.如权利要求1所述的方法,其特征在于,并行地执行每个交易桶中的交易,包括:
为每个交易桶创建一个线程,各个线程并行地执行每个交易桶中的交易。


10.如权利要求1所述的方法,其特征在于,并行地执行每个交易桶中的交易,包括:
创建多个线程,每个线程对应至少一个用于存放有效依赖关系为不相关的交易的交易桶,和/或,每个线程对应至少一个用于存放有效依赖关系相同的交易的交易桶;
各个线程并行地执行对应的多个交易桶中的交易。


11.如权利要求1所述的方法,其特征在于,获取每个交易的有效依赖关系之后,还包括:
将所述有效依赖关系更新至区块链网络的世界状态数据。


12.如权利要求1所述的方法,其特征在于,所述执行每个交易桶中的交易之后,还包括:
判断所述每个交易桶中的交易在执行时使用的依赖关系与所述有效依赖关系是否一致;如果是,确定交易执行成功;否则,确定交易执行失败。


13.如权利要求12所述的方法,其特征在于,所述确定交易执行失败之后,还包括:
如果确定目标智能合约的依赖关系和/或依赖解除有误导致交易执行失败,修正所述目标智能合约的依赖关系和/或依赖解除,如果确定交易声明的依赖解除导致交易执行失败,执行惩罚交易发起方的处理流程。


14.如权利要求1所述的方法,其特征在于,
当区块生成时,或者,当区块验证时,获取每个交易的有效依赖关系,根据所述每个交易的有效依赖关系,为所述每个交易分配交易桶,并行地执行每个交易桶中的交易。

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

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

1