在区块链中执行交易的方法、区块链、主节点和从节点技术

技术编号:31157257 阅读:12 留言:0更新日期:2021-12-04 09:54
本说明书实施例提供了一种在区块链中执行交易的方法、区块链主节点和从节点,所述方法包括:所述主节点预执行接收的多个交易,得到各个交易的预执行读写集;所述主节点将多个交易及各个交易的预执行读写集发送给从节点;所述从节点基于各个交易的预执行读写集对所述多个交易进行分组;所述从节点基于所述多个交易的分组结果并行执行所述多个交易。交易的分组结果并行执行所述多个交易。交易的分组结果并行执行所述多个交易。

【技术实现步骤摘要】
在区块链中执行交易的方法、区块链、主节点和从节点


[0001]本说明书实施例涉及区块链
,更具体地,涉及一种在区块链中执行交易的方法、区块链、主节点和从节点。

技术介绍

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

技术实现思路

[0003]本说明书实施例旨在提供一种在区块链中执行交易的方法和区块链主节点和从节点,提高了区块链中的交易执行速度。
[0004]为实现上述目的,本说明书第一方面提供一种在区块链中执行交易的方法,所述区块链包括主节点和从节点,所述方法包括:所述主节点预执行接收的多个交易,得到各个交易的预执行读写集;所述主节点将多个交易及各个交易的预执行读写集发送给从节点;所述从节点基于各个交易的预执行读写集对所述多个交易进行分组;所述从节点基于所述多个交易的分组结果并行执行所述多个交易。其中,交易的执行读集即为执行该交易得到的读集,该读集中包括执行该交易中包括的读取某个变量的操作而读取的该变量的值,交易的预执行读集即为预执行该交易得到的读集,该读集中包括预执行该交易中包括的读取某个变量的操作而读取的该变量的值。
[0005]本说明书第二方面提供一种在区块链中执行交易的方法,所述区块链包括主节点和从节点,所述方法由所述主节点执行,包括:预执行接收的多个交易,得到各个交易的预执行读写集;将多个交易及各个交易的预执行读写集发送给从节点;基于各个交易的预执行读写集对所述多个交易进行分组;基于所述多个交易的分组结果并行执行所述多个交易。
[0006]本说明书第三方面提供一种在区块链中执行交易的方法,所述区块链包括主节点和从节点,所述方法由所述从节点执行,包括:从所述主节点接收多个交易及各个交易的预执行读写集,所述预执行读写集通过由所述主节点预执行各个交易得到;基于各个交易的预执行读写集对所述多个交易进行分组;基于所述多个交易的分组结果并行执行所述多个交易。
[0007]本说明书第四方面提供一种区块链主节点,包括:预执行单元,用于预执行接收的多个交易,得到各个交易的预执行读写集;发送单元,用于将多个交易及各个交易的预执行读写集发送给从节点;分组单元,用于基于各个交易的预执行读写集对所述多个交易进行分组;并行执行单元,用于基于所述多个交易的分组结果并行执行所述多个交易。
[0008]本说明书第五方面提供一种区块链从节点,包括:接收单元,用于从所述主节点接收多个交易及各个交易的预执行读写集,所述预执行读写集通过由所述主节点预执行各个交易得到;分组单元,用于基于各个交易的预执行读写集对所述多个交易进行分组;并行执行单元,用于基于所述多个交易的分组结果并行执行所述多个交易。
[0009]本说明书第六方面提供一种区块链,包括主节点和从节点,所述主节点用于:预执行接收的多个交易,得到各个交易的预执行读写集;将所述多个交易及各个交易的预执行读写集发送给从节点;所述从节点用于:基于各个交易的预执行读写集对所述多个交易进行分组;基于所述多个交易的分组结果并行执行所述多个交易。
[0010]本说明书第七方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述第二方面所述的方法。
[0011]本说明书第八方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述第二方面所述方法。
[0012]本说明书第九方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述第三方面所述的方法。
[0013]本说明书第十方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述第三方面所述方法。
[0014]通过本说明书实施例提供的方案,区块链中的各个节点基于相同的预执行读写集对多个交易进行分组,基于相同的世界状态并行执行多个交易组的交易。在多个交易中的冲突交易较少、且主节点不作恶的情况中,可提高区块链中的交易执行速度。
附图说明
[0015]通过结合附图描述本说明书实施例,可以使得本说明书实施例更加清楚:图1为本说明书一实施例所应用的区块链架构图;图2为本说明书一实施例中的区块链的主节点和从节点的结构图;图3为本说明书一实施例中的主节点和从节点执行交易的方法流程图;图4为本说明书一实施例中的一种区块链主节点的架构图;图5为本说明书一实施例中的一种区块链从节点的架构图。
具体实施方式
[0016]下面将结合附图描述本说明书实施例。
[0017]图1示出本说明书实施例所应用的区块链架构图。如图1中,区块链中例如包含主节点1、从节点2~从节点6共6个节点。节点之间的连线示意性的表示P2P(Peer to Peer,点对点)连接。这些节点上都存储全量的账本,即存储全部区块和全部账户的状态。其中,区块链中的每个节点通过执行相同的交易而产生区块链中的相同的状态,区块链中的每个节点存储相同的状态数据库。所不同的是,主节点1可负责从客户端接收交易,并向各个从节点发起共识提议,该共识提议中例如包括将要成块的区块(例如区块B1)中的多个交易及各个交易的提交顺序等信息。在区块链中的节点对共识提议共识成功之后,各个节点可根据共识提议中的提交顺序执行该多个交易,从而生成区块B1。
[0018]可以理解,图1所示的区块链仅仅是示例性的,本说明书实施例不限于应用于图1所示的区块链,例如还可以应用于包括分片的区块链系统中。
[0019]另外,图1中虽然示出了区块链中包括6个节点,本说明书实施例不限于此,而是可以包括其他数目的节点。具体是,区块链中包含的节点可以满足拜占庭容错(Byzantine Fault Tolerance,BFT)要求。所述的拜占庭容错要求可以理解为在区块链内部可以存在拜占庭节点,而区块链对外不体现拜占庭行为。一般的,一些拜占庭容错算法中要求节点个数大于3f+1,f为拜占庭节点个数,例如实用拜占庭容错算法PBFT(Practical Byzantine Fault Tolerance)。
[0020]在相关技术中,为了提高区块链中的每秒执行交易(TPS)指标,需要加快交易的执行速度。为此,区块链节点中可通过并行执行交易来加快交易的执行速度。在一种实施方式中,区块链节点可通过单机中的多个进程并行执行交易,在另一种实施方式中,区块链节点可部署在服务器集群中,通过多台服务器并行执行交易。通常,对于转账交易,区块链节点首先根据交易访问的账户将多个交易划分为多个交易组,各个交易组之间不访问相同的账户,从本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种在区块链中执行交易的方法,所述区块链包括主节点和从节点,所述方法包括:所述主节点预执行接收的多个交易,得到各个交易的预执行读写集;所述主节点将所述多个交易及各个交易的预执行读写集发送给从节点;所述从节点基于各个交易的预执行读写集对所述多个交易进行分组;所述从节点基于所述多个交易的分组结果并行执行所述多个交易。2.根据权利要求1所述的方法,还包括,所述从节点在执行所述多个交易中的第一交易之后回滚对所述第一交易的执行,所述第一交易在执行后得到的执行读写集与所述第一交易的预执行读写集不一致。3.根据权利要求2所述的方法,还包括:所述从节点在执行完成所述多个交易之后,重新执行一个或多个所述第一交易。4.根据权利要求1或2所述的方法,其中,所述主节点预执行接收的多个交易包括,所述主节点基于各个交易对应的最新区块的世界状态预执行各个交易。5.根据权利要求3所述的方法,所述从节点在执行完成所述多个交易之后,重新执行一个或多个所述第一交易包括,所述从节点在执行完成所述多个交易之后基于最新的世界状态重新执行一个或多个所述第一交易。6.根据权利要求1或2所述的方法,还包括,所述从节点在完成对所述多个交易的执行之后,生成第一区块,所述第一区块中包括所述多个交易的预执行读写集。7.根据权利要求2所述的方法,所述第一交易的所述执行读写集与所述第一交易的预执行读写集不一致包括:所述第一交易的执行读写集中的写集与所述第一交易的预执行读写集中的写集不一致。8.根据权利要求1或2所述的方法,其中,各个交易的预执行读写集中包括相关的区块高度。9.一种在区块链中执行交易的方法,所述区块链包括主节点和从节点,所述方法由所述主节点执行,包括:预执行接收的多个交易,得到各个交易的预执行读写集;将所述多个交易及各个交易的预执行读写集发送给所述从节点;基于各个交易的预执行读写集对所述多个交易进行分组;基于所述多个交易的分组结果并行执行所述多个交易。10.根据权利要求9所述的方法,还包括,在执行所述多个交易中的第二交易之后回滚对所述第二交易的执行,所述第二交易在执行后得到的执行读集与所述第二交易的预执行读写集中的读集不一致。11.根据权利要求10所述的方法,还包括:在执行完成所述多个交易之后,重新执行一个或多个所述第二交易。12.根据权利要求9或10所述的方法,其中,所述预执行接收的多个交易包括,基于各个交易对应的最新区块的世界状态预执行各个交易。13.根据权利要求11所述的方法,在执行完成所述多个交易之后,重新执行一个或多个所述第二交易包括,在执行完成所述多个交易之后,基于最新的世界状态重新执行一个或多个所述第二交易。14.一种在区块链中执行交易的方法,所述区块链包括主节点和...

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

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

1