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

技术编号:31157253 阅读:33 留言:0更新日期:2021-12-04 09:54
本说明书提供一种区块链中执行交易的方法及装置,应用于区块链节点,根据该方法,接收属于第一区块的多个第一交易,对所述多个第一交易进行预执行,得到所述多个第一交易的预执行读写集;所述预执行读写集用于对所述多个第一交易进行分组;在对所述多个第一交易进行预执行的过程中,并行地对第二区块进行共识;所述第二区块为所述第一区块之前的区块。述第二区块为所述第一区块之前的区块。述第二区块为所述第一区块之前的区块。

【技术实现步骤摘要】
区块链中执行交易的方法及装置


[0001]本说明书一个或多个实施例涉及区块链
,特别涉及一种区块链中执行交易的方法及装置。

技术介绍

[0002]区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证数据区块不可篡改和不可伪造。区块链节点在执行区块中的多个交易时,可通过并行执行交易加快交易执行速度。然而,由于调用智能合约的交易在执行前不能预知访问的变量,因此通常不能并行执行。

技术实现思路

[0003]本说明书一个或多个实施例提供一种区块链中执行交易的方法及装置。
[0004]根据第一方面,提供一种区块链中执行交易的方法,应用于区块链节点,包括:接收属于第一区块的多个第一交易,对所述多个第一交易进行预执行,得到所述多个第一交易的预执行读写集;所述预执行读写集用于对所述多个第一交易进行分组;在对所述多个第一交易进行预执行的过程中,并行地对第二区块进行共识;所述第二区块为所述第一区块之前的区块。
[0005]根据第二方面,提供一种区块链中执行交易的装置,部署于区块链节点,包括:预执行模块,用于接收属于第一区块的多个第一交易,对所述多个第一交易进行预执行,得到所述多个第一交易的预执行读写集;所述预执行读写集用于对所述多个第一交易分组;共识模块,用于在对所述多个第一交易进行预执行的过程中,并行地对第二区块进行共识;所述第二区块为所述第一区块之前的区块
[0006]根据第三方面,提供一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面中任一项所述的方法。
[0007]根据第四方面,提供一种及计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述第一方面中任一项所述的方法。
[0008]本说明书的实施例提供的技术方案可以包括以下有益效果:本说明书的实施例提供的区块链中执行交易的方法和装置,通过将区块的交易执行流程至少分成预执行流水线和共识流水线,并行地通过预执行流水线和共识流水线完成交易执行流程,从而缩短了区块对应的出块时间,提高了交易的执行效率,也提高了计算资源的利用率以及区块链系统的性能。另外,通过比较交易的执行读集和预执行读集(或者执行读写集和预执行读写集),确定执行和预执行时变量状态不一致的交易,回滚该交易的执行,并在处理完全部交易之后再重新执行该交易,保证了各个节点在执行多个交易之后的
状态一致性。通过该方案,在不同交易访问相同变量的概率较小的情况中,回滚的交易数量较少,从而提高了交易执行速度。
[0009]应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
[0010]为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0011]图1是相关技术提供的一种区块链中执行交易的过程示意图;图2A是本说明书根据一示例性实施例示出的一种区块链架构图;图2B是本说明书根据一示例性实施例示出的一种区块链中执行交易的过程示意图;图3A是本说明书实施例提供的区块链的一个节点的一种结构图;图3B是本说明书实施例提供的区块链的一个节点的另一种结构图;图4是本说明书根据一示例性实施例示出的一种区块链中执行交易的方法流程图;图5本说明书根据一示例性实施例示出的一种区块链中执行交易的装置框图。
具体实施方式
[0012]为了使本
的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
[0013]图1是相关技术提供的一种区块链中执行交易的过程示意图。
[0014]如图1所示,一般来说,在相关技术中,在执行区块链中的交易时,是逐个区块完成的。例如,先完成区块N的交易执行流程,在完成区块N+1的交易执行流程等。任意一个区块的交易执行流程至少可以包括共识阶段,执行阶段以及写块阶段。即,针对任意一个区块,先获取属于该区块的交易,然后针对该区块进行共识操作,共识成功后,执行该区块。最后,进行持久化操作,以将执行该区块的执行结果写入状态数据库,从而完成对该区块的写块。由于此过程逐个区块逐一完成执行流程的各个执行阶段,出块时间为各个执行阶段耗时总和,例如,图1示出的区块N的出块时间为t1。因此,使得区块链中的每秒执行交易(TPS)指标较低,计算资源利用率低,区块链系统的性能难以提高。
[0015]在另一些相关技术中,为了提高区块链中的每秒执行交易(TPS)指标,需要加快交易的执行速度。为此,区块链节点中可通过并行执行交易来加快交易的执行速度。在一种实施方式中,区块链节点可通过单机中的多个进程并行执行交易,在另一种实施方式中,区块链节点可部署在服务器集群中,通过多台服务器并行执行交易。通常,对于转账交易,区块
链节点首先根据交易访问的账户将多个交易划分为多个交易组,各个交易组之间不访问相同的账户,从而可并行执行各个交易组。然而,当交易中调用智能合约时,在执行该交易之前不能预知该交易中访问的变量,从而无法对多个交易进行有效的分组,也就无法对并行执行交易。
[0016]图2A示出本说明书实施例所应用的区块链架构图。
[0017]如图2A中,区块链中例如包含节点1~节点6共6个节点。节点之间的连线示意性的表示P2P(Peer to Peer,点对点)连接。这些节点上都存储全量的账本,即存储全部区块和全部账户的状态。其中,区块链中的每个节点通过执行相同的交易而产生区块链中的相同的状态,区块链中的每个节点存储相同的状态数据库。每个节点1均可从客户端接收交易,并向各个从节点发起共识提议,该共识提议中例如包括将要成块的区块(例如区块B1)中的多个交易及各个交易的提交顺序等信息。在区块链中的节点对共识提议共识成功之后,各个节点可根据共识提议中的提交顺序执行该多个交易,从而生成区块B1。
[0018]可以理解,图2A所示的区块链仅仅是示例性的,本说明书实施例不限于应用于图2A所示的区块链,例如还可以应用于包括分片的区块链系统中。
[0019]另外,图2A中虽然示出了区块链中包括6个节点,本说明书实施例不限于此,而是可以包括其他数目的节点。具体是,区块链中包含的节点可以满足拜占庭容错(Byzantine Fault Tolerance,BFT)要求。所述的拜占庭容错要求可以理解为在区块链内部可以存在本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种区块链中执行交易的方法,应用于区块链节点,所述方法包括:接收属于第一区块的多个第一交易,对所述多个第一交易进行预执行,得到所述多个第一交易的预执行读写集;所述预执行读写集用于对所述多个第一交易进行分组;在对所述多个第一交易进行预执行的过程中,并行地对第二区块进行共识;所述第二区块为所述第一区块之前的区块。2.根据权利要求1所述的方法,其中,所述对第二区块进行共识,包括:将属于所述第二区块的多个第二交易、在先生成的各个第二交易的预执行读写集和所述多个第二交易的提交顺序发送给所述区块链的其它节点进行共识。3.根据权利要求1所述的方法,其中,所述对第二区块进行共识,包括:根据在先生成的属于所述第二区块的多个第二交易的预执行读写集,对所述多个第二交易进行分组得到分组结果;将所述多个第二交易、所述多个第二交易的预执行读写集、所述分组结果和所述多个第二交易的提交顺序发送给所述区块链的其它节点进行共识。4.根据权利要求1所述的方法,其中,还包括:在对所述第二区块进行共识的过程中,并行执行第三区块;所述第三区块为所述第二区块之前的区块。5.根据权利要求4所述的方法,其中,还包括:在执行所述第三区块的过程中,并行地将所述第三区块之前的区块所对应的执行结果写入状态数据库中。6.根据权利要求1所述的方法,其中,所述对所述多个第一交易进行预执行,包括:并行地对所述多个第一交易进行预执行。7.根据权利要求1所述的方法,其中,所述对所述多个第一交易进行预执行,包括:基于各个第一交易各自对应的最新区块的世界状态预执行所述各个第一交易。8.根据权利要求1所述的方法,其中,所述对所述多个第一交易进行预执行,包括:基于各个第一交易各自对应的最新区块的世界状态,并行地对所述多个第一交易进行预执行。9.根据权利要求4所述的方法,其中,所述执行第三区块,包括:基于在先生成的属于所述第三区块的多个第三交易的预执行读写集,对所述多个第三交易进行分组,得到分组结果;根据所述分组结果并行地执行所述多个第三交易。10.根据权利要求4所述的方法,其中,所述执行第三区块,包括:获取对属于所述第三区块的多个第三交易进行分组得到的分组结果;所述分组为在对所述第三区块进行共识之前,基于在先生成的所述多个第三交易的预执行读写集进行的;根据所述分组结果并行地执行所述多个第三交易。11.根据权利要求9或10所述的方法,其中,对于任一第三交易,若执行该第三交易后得到的执行读写集与该第三交易的预执行读写集不一致,回滚对该第三交易的执行。12.根据权利要求11所述的方法,其中,在执行完成所述多个第三交易之后,还包括:重新执行经回滚的第三交易。13.根据权利要求12所述的方法,其中,所述重新执行经回滚的第三交易,包括:串行地重新执行经回滚的第三交易。
14.根据权利要求13所述的方法,其中,所述串行地重新执行经回滚的...

【专利技术属性】
技术研发人员:谢桂鲁邓福喜
申请(专利权)人:支付宝杭州信息技术有限公司
类型:发明
国别省市:

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

1