在区块链中并发执行交易的方法和装置制造方法及图纸

技术编号:30155336 阅读:26 留言:0更新日期:2021-09-25 15:06
本说明书实施例提供了一种在区块链中并发执行交易的方法和装置,所述方法在区块链中的第一节点中的第一执行体执行,包括:在处理第一交易的过程中进行预定操作之后,在共享内存中记录与第一交易对应的第一待处理任务、以及与该第一待处理任务对应的执行信息,以相对于所述第一交易进入等待过程;对于所述共享内存中已经记录的多个待处理任务,确定其中是否存在等待过程结束的待处理任务,所述多个待处理任务由所述预定数目的执行体记录;以及在确定第二待处理任务对应的等待过程结束的情况中,基于与所述第二待处理任务对应的执行信息,继续执行该第二待处理任务,其中,所述多个待处理任务中包括所述第二待处理任务。待处理任务中包括所述第二待处理任务。待处理任务中包括所述第二待处理任务。

【技术实现步骤摘要】
在区块链中并发执行交易的方法和装置
[0001]本申请为2019年8月30日提交的申请号为201910816530.6,名为“在区块链中并发执行交易的方法和装置”的专利技术专利申请的分案申请。


[0002]本说明书实施例涉及区块链
,更具体地,涉及一种在区块链中并发执行交易的方法和装置。

技术介绍

[0003]区块链技术是构建在点对点(P2P)网络上,利用链式数据结构来验证与存储数据,利用分布式节点共识算法来生成和更新数据,利用密码学的方式保证数据传输和访问的安全,利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。区块链技术也被称之为分布式账本技术,是一种去中心化的分布式数据库技术,其特点是去中心化、公开透明、不可篡改、可信任。区块链的每笔数据,都会广播到全网的区块链节点,每个全节点都有全量的、一致的数据。区块链中的节点通过发送交易而进行转账、存入数据等业务,区块链中的记账节点在交易池中收集区块链中的交易,执行所述交易,并在执行所述交易之后,将这些交易打包到区块中并扩散到区块链中。区块链中的验证节点会对从记账节点发出的区块进行验证,在验证通过之后,每个节点在接收到该区块时,都会执行该区块中包括的每个交易。为了保证各个节点的数据一致性,各个节点中在执行区块中的多个交易时,对该多个交易的提交顺序需要是一致的,这样才能得到一致的执行结果。因此,在现有技术中,记账节点在执行交易之前会按照预定规则对将要执行的多个交易进行编号,并按照编号的顺序依次执行多个交易,也即依次提交多个交易,并且其它节点在接收到该区块之后,也是按照上述交易编号顺序依次执行并提交所述多个交易。然而,所述多个交易并不一定都是相互依赖的,在两个交易之间不存在依赖性的情况中,并发执行这两个交易并不影响最终的结果。而如果并发执行的两个交易存在依赖性,则该并发执行将影响到最终的结果。
[0004]因此,需要一种更有效的在区块链中并发执行多个交易的方法。

技术实现思路

[0005]本说明书实施例旨在提供一种更有效的并发执行交易的方案,以解决现有技术中的不足。
[0006]为实现上述目的,本说明书一个方面提供一种在区块链中并发执行交易的方法,所述方法在区块链中的第一节点执行,所述第一节点中当前通过预设的预定数目的执行体并发执行交易,其中包括第一执行体,所述第一执行体当前在处理第一交易,所述方法由所述第一执行体执行,包括:
[0007]在处理第一交易的过程中进行预定操作之后,在共享内存中记录与第一交易对应的第一待处理任务、以及与该第一待处理任务对应的执行信息,以相对于所述第一交易进
入等待过程;
[0008]对于所述共享内存中已经记录的多个待处理任务,确定其中是否存在等待过程结束的待处理任务,所述多个待处理任务由所述预定数目的执行体记录;以及
[0009]在确定第二待处理任务对应的等待过程结束的情况中,基于与所述第二待处理任务对应的执行信息,继续执行该第二待处理任务,其中,所述多个待处理任务中包括所述第二待处理任务。
[0010]在一个实施例中,所述方法还包括,在确定所述多个待处理任务各自的等待过程都未结束的情况中,从共享内存中的第一缓冲区获取待处理的第二交易,并开始执行所述第二交易。
[0011]在一个实施例中,所述共享内存中包括第二缓冲区,其中,在处理第一交易的过程中进行预定操作之后,在共享内存中记录与第一交易对应的第一待处理任务、以及与该第一待处理任务对应的执行信息包括,在处理完成第一交易之后,在确定第二交易未提交的情况中,在所述第二缓冲区中记录与第一交易对应的第一待处理任务,其中,所述第二交易根据预定提交顺序为所述第一交易的前一个交易。
[0012]在一个实施例中,对于所述共享内存中已经记录的多个待处理任务,确定其中是否存在等待过程结束的待处理任务包括,基于共享内存中记录的当前应提交的交易,确定所述第二缓冲区中对应于最小交易编号的待处理任务的等待过程是否结束,以确定所述第二缓冲区中是否存在等待过程结束的待处理任务,其中,所述交易编号对应于交易的提交顺序。
[0013]在一个实施例中,在确定第二待处理任务对应的等待过程结束的情况中,基于与所述第二待处理任务对应的执行信息,继续执行该第二待处理任务包括,在确定所述第二缓冲区中的第二待处理任务的等待过程结束的情况中,基于与所述第二待处理任务对应的执行信息,继续执行对第三交易的提交,其中所述第二待处理任务与所述第三交易相对应。
[0014]在一个实施例中,所述共享内存中包括第三缓冲区,所述第一交易中包括对第一变量的读取操作,其中,在处理第一交易的过程中进行预定操作之后,在共享内存中记录与第一交易对应的第一待处理任务、以及与该第一待处理任务对应的执行信息包括,在请求对所述第一变量的读取之后,在所述第三缓冲区中记录与第一交易对应的第一待处理任务,其中,所述第一待处理任务中包括对所述第一变量的记录。
[0015]在一个实施例中,所述第三缓冲区中包括所述第二待处理任务,所述第二待处理任务与第二交易中对第二变量的读取操作相对应,对于所述共享内存中已经记录的多个待处理任务,确定其中是否存在等待过程结束的待处理任包括,确定所述第二变量的变量值是否被返回,在确定所述第二变量的变量值被返回的情况中,确定该第二待处理任务的等待过程结束。
[0016]在一个实施例中,对于所述共享内存中已经记录的多个待处理任务,确定其中是否存在等待过程结束的待处理任务包括,对于所述第三缓冲区中已经记录的多个待处理任务,基于各个待处理任务对应的交易编号从小至大的顺序,依次确定各个待处理任务的等待过程是否结束,其中,所述第二待处理任务为首次确定的等待过程结束的待处理任务,其中,所述交易编号对应于交易的预定提交顺序。
[0017]在一个实施例中,确定所述第二变量的变量值是否被返回包括,基于在共享内存
中的预定地址是否存储有第二变量的变量值,确定所述第二变量的变量值是否被返回,其中,所述预定地址与所述第二交易相对应。
[0018]在一个实施例中,在确定第二待处理任务对应的等待过程结束的情况中,基于与所述第二待处理任务对应的执行信息,继续执行该第二待处理任务包括,在确定所述第三缓冲区中存在等待过程结束的第二待处理任务的情况中,基于与所述第二待处理任务对应的执行信息和所述第二变量的变量值,继续执行所述第二交易。
[0019]在一个实施例中,所述共享内存中包括第四缓冲区,所述第一交易中包括对第一变量的读取操作,其中,在处理第一交易的过程中进行预定操作之后,在共享内存中记录与第一交易对应的第一待处理任务、以及与该第一待处理任务对应的执行信息包括,在执行到所述读取操作的代码之后,确定提交顺序在第一交易之前、且未提交的各个交易是否为已执行了对第一变量的写操作的冲突交易,所述各个交易中包括第二交易,在确定所述第二交易为距离第一交易最近的冲突交易的情况中,在第四缓冲区中记录与第一交易对应的第一待处理任务,其中,所述第一待本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种在区块链中并发执行交易的方法,所述方法由区块链中的第一节点中包括的第一执行体执行,包括:在处理第一交易的过程中进行预定操作之后,在共享内存中记录与第一交易对应的第一待处理任务、以及与该第一待处理任务对应的执行信息,并相对于所述第一交易进入等待过程;对于所述共享内存中已经记录的多个待处理任务,确定其中是否存在等待过程结束的待处理任务,所述多个待处理任务由所述第一节点中包括的预定数目的执行体记录;以及在确定第二待处理任务对应的等待过程结束的情况中,基于与所述第二待处理任务对应的执行信息,继续执行该第二待处理任务。2.根据权利要求1所述的方法,还包括,在确定所述多个待处理任务各自的等待过程都未结束的情况中,从共享内存中的第一缓冲区获取待处理的第二交易,并开始执行所述第二交易。3.根据权利要求1所述的方法,其中,所述共享内存中包括第二缓冲区,其中,在处理第一交易的过程中进行预定操作之后,在共享内存中记录与第一交易对应的第一待处理任务、以及与该第一待处理任务对应的执行信息包括,在处理完成第一交易之后,在确定第二交易未提交的情况中,在所述第二缓冲区中记录与第一交易对应的第一待处理任务,其中,所述第二交易根据预定提交顺序为所述第一交易的前一个交易。4.根据权利要求3所述的方法,其中,对于所述共享内存中已经记录的多个待处理任务,确定其中是否存在等待过程结束的待处理任务包括,基于共享内存中记录的当前应提交的交易,确定所述第二缓冲区中对应于最小交易编号的待处理任务的等待过程是否结束,以确定所述第二缓冲区中是否存在等待过程结束的待处理任务,其中,所述交易编号对应于交易的提交顺序。5.根据权利要求4所述的方法,其中,在确定第二待处理任务对应的等待过程结束的情况中,基于与所述第二待处理任务对应的执行信息,继续执行该第二待处理任务包括,在确定所述第二缓冲区中的第二待处理任务的等待过程结束的情况中,基于与所述第二待处理任务对应的执行信息,继续执行对第三交易的提交,其中所述第二待处理任务与所述第三交易相对应。6.根据权利要求1所述的方法,其中,所述共享内存中包括第三缓冲区,所述第一交易中包括对第一变量的读取操作,其中,在处理第一交易的过程中进行预定操作之后,在共享内存中记录与第一交易对应的第一待处理任务、以及与该第一待处理任务对应的执行信息包括,在请求对所述第一变量的读取之后,在所述第三缓冲区中记录与第一交易对应的第一待处理任务,其中,所述第一待处理任务中包括对所述第一变量的记录。7.根据权利要求6所述的方法,其中,所述第三缓冲区中包括所述第二待处理任务,所述第二待处理任务与第二交易中对第二变量的读取操作相对应,对于所述共享内存中已经记录的多个待处理任务,确定其中是否存在等待过程结束的待处理任包括,确定所述第二变量的变量值是否被返回,在确定所述第二变量的变量值被返回的情况中,确定该第二待处理任务的等待过程结束。8.根据权利要求7所述的方法,其中,对于所述共享内存中已经记录的多个待处理任务,确定其中是否存在等待过程结束的待处理任务包括,对于所述第三缓冲区中已经记录
的多个待处理任务,基于各个待处理任务对应的交易编号从小至大的顺序,依次确定各个待处理任务的等待过程是否结束,其中,所述第二待处理任务为首次确定的等待过程结束的待处理任务,其中,所述交易编号对应于交易的预定提交顺序。9.根据权利要求7所述的方法,其中,确定所述第二变量的变量值是否被返回包括,基于在共享内存中的预定地址是否存储有第二变量的变量值,确定所述第二变量的变量值是否被返回,其中,所述预定地址与所述第二交易相对应。10.根据权利要求7所述的方法,其中,在确定第二待处理任务对应的等待过程结束的情况中,基于与所述第二待处理任务对应的执行信息,继续执行该第二待处理任务包括,在确定所述第三缓冲区中存在等待过程结束的第二待处理任务的情况中,基于与所述第二待处理任务对应的执行信息和所述第二变量的变量值,继续执行所述第二交易。11.根据权利要求1所述的方法,其中,所述共享内存中包括第四缓冲区,所述第一交易中包括对第一变量的读取操作,其中,在处理第一交易的过程中进行预定操作之后,在共享内存中记录与第一交易对应的第一待处理任务、以及与该第一待处理任务对应的执行信息包括,在执行到所述读取操作的代码之后,确定提交顺序在第一交易之前、且未提交的各个交易是否为已执行了对第一变量的写操作的冲突交易,所述各个交易中包括第二交易,在确定所述第二交易为距离第一交易最近的冲突交易的情况中,在第四缓冲区中记录与第一交易对应的第一待处理任务,其中,所述第一待处理任务中包括对第二交易的记录。12.根据权利要求11所述的方法,其中,对于所述共享内存中已经记录的多个待处理任务,确定其中是否存在等待过程结束的待处理任务包括,基于共享内存中记录的当前应提交的交易,确定在所述第四缓冲区中记录的多个待处理任务中是否存在等待过程结束的待处理任务。13.根据权利要求1所述的方法,其中,所述共享内存中包括第五缓冲区,所述第一交易中包括对第一变量的读取操作,其中,在处理第一交易的过程中进行预定操作之后,在共享内存中记录与第一交易对应的第一待处理任务、以及与该第一待处理任务对应的执行信息包括,在执行到所述读取操作的代码之后,推断提交顺序在第一交易之前、且未提交的各个交易是否为将要对第一变量进行写操作的冲突交易,所述各个交易中包括第二交易,在推断所述第二交易为距离第一交易最近的冲突交易的情况中,在所述第五缓冲区中记录与第一交易对应的第一待处理任务,其中,所述第一待处理任务中包括对第二交易的记录。14.根据权利要求1所述的方法,其中,所述共享内存中包括至少一个...

【专利技术属性】
技术研发人员:刘晓建张兆勇
申请(专利权)人:创新先进技术有限公司
类型:发明
国别省市:

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

1