区块链的确定性交易并发调度方法及系统技术方案

技术编号:33669470 阅读:89 留言:0更新日期:2022-06-02 20:53
本申请提出了一种区块链的确定性交易并发调度方法及系统,涉及区块链技术领域,该方法包括:获取待调度的预排序后的多个交易,启动调度实例并行预执行排序后的多个交易;将每个交易的执行结果写入对应的交易,并启动一个协程,按照排序后的多个交易的顺序依次对每个交易的执行结果进行冲突检测;在检测出冲突交易的情况下,将冲突交易之前的无冲突交易进行打包,同时生成一个快照工具进行后续交易的冲突检测;启动一个新的调度实例,以冲突交易为起点重新并行调度冲突交易之后的交易;重复执行上述步骤直至交易全部调度完成。该方法可以显著提升交易的并发处理效率,且调度过程无需生成有向无环图,降低了交易处理占用的带宽。生成有向无环图,降低了交易处理占用的带宽。生成有向无环图,降低了交易处理占用的带宽。

【技术实现步骤摘要】
区块链的确定性交易并发调度方法及系统


[0001]本申请涉及区块链
,尤其涉及一种区块链的确定性交易并发调度方法及系统。

技术介绍

[0002]目前,区块链技术已经广泛应用于金融、物联网、物流和公共服务等各个领域。在实际应用中,由区块链的节点执行每笔交易,通过区块记录交易是在何时以及何种顺序成为区块链中的一部分。
[0003]相关技术中,在执行交易时,通常采用将交易预执行后生成交易的执行结果,然后将交易打包为区块并分发给所有节点的方式,或者采用接收待处理交易请求后,对交易预执行,生成执行结果,并在共识过程中根据执行结果形成依赖,即有向无环图DAG,而后并行执行交易的方式。
[0004]举例而言,在第一种相关方案中,在HyperledgerFabric1.0之后,用户的智能合约交易经背书节点预执行后生成交易的读写集合,而后排序节点将交易打包为区块并分发给所有节点。节点可根据读写集合分析依赖关系生成DAG后并行执行。在第二种相关方案中,在超级链中,首先接收待处理交易请求,用户的智能合约交易经某一节点预执行后,生成读写集合,而后在共识过程中,节点可根据读写集合形成依赖DAG再并行执行。在第三种相关方案中,在FISCOBCOS中,用户编写智能合约时可遵循并行框架。在节点验证区块中,可根据并行合约框架分析交易间的依赖关系,形成DAG后并行执行。
[0005]然而,申请人发现,上述第一种方案中,同一区块内的一批交易预执行时间不确定,导致需要使用版本号确定预执行和真正执行入库时key是否被更改,key的版本号使用上次改动时的区块编号,导致同一区块内的冲突交易只能成功一笔,无法进行“先写后读”的操作。上述第二种和第三种方案,是基于接收的交易请求进行依赖分析再并行交易执行,并行调度及执行交易过程中需要生成DAG,会占用一定的带宽,且第三种方案依赖并行编程框架来判断智能合约交易间依赖关系,导致对开发人员要求和约束更高。
[0006]即,相关技术中的交易执行方案,执行的效率较低,执行过程较复杂,且必须生成有向无环图DAG,占用了一定的带宽。

技术实现思路

[0007]本申请旨在至少在一定程度上解决相关技术中的技术问题之一。
[0008]为此,本申请的第一个目的在于提出一种区块链的确定性交易并发调度方法,该方法基于预排序交易,节点对排序后交易并行预执行及并行依赖管理,显著提升了依赖管理处理效率,且全过程无需DAG的生成,能够实现交易并发处理效率的提升。
[0009]本申请的第二个目的在于提出一种区块链的确定性交易并发调度系统。
[0010]本申请的第三个目的在于提出一种非临时性计算机可读存储介质。
[0011]为达上述目的,本申请的第一方面实施例在于提出一种区块链的确定性交易并发
调度方法,该方法包括以下步骤:S101:获取待调度的多个交易,对所述多个交易进行预排序,并启动一个调度实例,并行预执行排序后的多个交易;S102:将每个交易的执行结果写入对应的交易,并启动一个用于冲突检测的协程,按照所述排序后的多个交易的顺序依次对每个交易的执行结果进行冲突检测;S103:在检测出冲突交易的情况下,将所述冲突交易之前的无冲突交易进行打包,同时生成一个快照工具Snapshot进行后续交易的冲突检测;S104:启动一个新的调度实例,以所述冲突交易为起点重新并行调度所述冲突交易之后的交易;S105:重复执行S102至S104,直至所述多个交易全部调度完成。
[0012]可选地,在本申请的一个实施例中,在所述启动一个调度实例,并行预执行排序后的多个交易的同时,启动一个所述用于冲突检测的协程。
[0013]可选地,在本申请的一个实施例中,按照所述排序后的多个交易的顺序依次对每个交易的执行结果进行冲突检测,包括:按照所述顺序依次检测每个交易是否执行完毕;如果当前交易执行完毕,则对所述当前交易的执行结果进行冲突检测;如果当前交易未执行完毕,则等待全部交易执行完毕并返回执行结果后,进行冲突检测判定。
[0014]可选地,在本申请的一个实施例中,将所述冲突交易之前的无冲突交易进行打包之后,还包括:根据打包的当前批次内的全部无冲突交易进行出块的共识处理。
[0015]可选地,在本申请的一个实施例中,交易的执行结果包括:执行交易后生成的读集合和写集合,所述将每个交易的执行结果写入对应的交易,包括:将所述读集合和所述写集合写回对应的交易中。
[0016]为达上述目的,本申请的第二方面实施例还提出了一种区块链的确定性交易并发调度系统,包括以下模块:预执行模块,用于获取待调度的多个交易,对所述多个交易进行预排序,并启动一个调度实例,并行预执行排序后的多个交易;冲突检测模块,用于将每个交易的执行结果写入对应的交易,并启动一个用于冲突检测的协程,按照所述排序后的多个交易的顺序依次对每个交易的执行结果进行冲突检测;生成模块,用于在检测出冲突交易的情况下,将所述冲突交易之前的无冲突交易进行打包,同时生成一个快照工具Snapshot进行后续交易的冲突检测;启动模块,用于启动一个新的调度实例,以所述冲突交易为起点重新并行调度所述冲突交易之后的交易;重复模块,用于控制所述冲突检测模块、所述生成模块和所述启动模块重复执行自身的功能,直至所述多个交易全部调度完成。
[0017]可选地,在本申请的一个实施例中,预执行模块,具体用于:在所述启动一个调度实例,并行预执行排序后的多个交易的同时,启动一个所述用于冲突检测的协程。
[0018]可选地,在本申请的一个实施例中,冲突检测模块,具体用于:按照所述顺序依次检测每个交易是否执行完毕;如果当前交易执行完毕,则对所述当前交易的执行结果进行冲突检测;如果当前交易未执行完毕,则等待全部交易执行完毕并返回执行结果后,进行冲
突检测。
[0019]可选地,在本申请的一个实施例中,生成模块,还用于:根据打包的当前批次内的全部无冲突交易进行出块的共识处理。
[0020]为了实现上述实施例,本申请第三方面实施例还提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例中的区块链的确定性交易并发调度方法。
[0021]本申请的实施例提供的技术方案至少带来以下有益效果:本申请基于预排序交易,能够对交易进行确定性并发调度,且能够边执行边进行依赖管理,即节点对排序后交易并行预执行及并行依赖管理。在无冲突的情况下,本方案交易执行结果冲突检测和依赖管理处理效率接近于仅进行冲突检测的效率,从而显著提升了依赖管理处理效率。并且,本申请基于交易执行结果的确定性,在交易调度和执行的全过程无需生成有向无环图DAG,避免占用额外的带宽,降低了交易并发调度的成本和限制,显著提升了交易的并发处理效率。
[0022]本专利技术附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本专利技术的实践了解到。
附图说明
[0023]本申请上述的和/或附加的方面和优点从下面结本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种区块链的确定性交易并发调度方法,其特征在于,包括以下步骤:S101:获取待调度的多个交易,对所述多个交易进行预排序,并启动一个调度实例,并行预执行排序后的多个交易;S102:将每个交易的执行结果写入对应的交易,并启动一个用于冲突检测的协程,按照所述排序后的多个交易的顺序依次对每个交易的执行结果进行冲突检测;S103:在检测出冲突交易的情况下,将所述冲突交易之前的无冲突交易进行打包,同时生成一个快照工具Snapshot进行后续交易的冲突检测;S104:启动一个新的调度实例,以所述冲突交易为起点重新并行调度所述冲突交易之后的交易;S105:重复执行S102至S104,直至所述多个交易全部调度完成。2.根据权利要求1所述的调度方法,其特征在于,在所述启动一个调度实例,并行预执行排序后的多个交易的同时,启动一个所述用于冲突检测的协程。3.根据权利要求1或2所述的调度方法,其特征在于,所述按照所述排序后的多个交易的顺序依次对每个交易的执行结果进行冲突检测,包括:按照所述顺序依次检测每个交易是否执行完毕;如果当前交易执行完毕,则对所述当前交易的执行结果进行冲突检测;如果当前交易未执行完毕,则等待全部交易执行完毕并返回执行结果后,进行冲突检测。4.根据权利要求1所述的调度方法,其特征在于,在所述将所述冲突交易之前的无冲突交易进行打包之后,还包括:根据打包的当前批次内的全部无冲突交易进行出块的共识处理。5.根据权利要求1所述的调度方法,其特征在于,所述交易的执行结果包括:执行交易后生成的读集合和写集合,所述将每个交易的执行结果写入对应的交易,包括:将所述读集合和所述写集合写回对应的交易中。6.一...

【专利技术属性】
技术研发人员:ꢀ七四专利代理机构
申请(专利权)人:北京微芯感知科技有限公司
类型:发明
国别省市:

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

1