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

技术编号:33639543 阅读:22 留言:0更新日期:2022-06-02 01:57
一种在区块链中执行交易的方法、区块链、主节点和从节点。所述方法包括:主节点预执行接收的第一交易,生成第一交易的预执行读写集,预执行读写集中包括对第一变量的访问;主节点根据第一交易的预执行读写集、在先记录的最近更新所述第一变量的第二交易的标识,生成DAG数据,第二交易为在预执行所述第一交易之前最近的在预执行后更新所述第一变量的预执行状态的交易,所述DAG数据指示第一交易和第二交易访问所述第一变量的时间顺序;主节点将DAG数据发送给从节点;从节点基于DAG数据执行第一交易和第二交易。第一交易和第二交易。第一交易和第二交易。

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


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

技术介绍

[0002]区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区块链具有去中心化、信息不可篡改、自治性等特性,区块链也受到人们越来越多的重视和应用。然而,由于调用智能合约的交易在执行前不能预知访问的变量,因此通常不能并行执行。

技术实现思路

[0003]本专利技术的目的在于提供一种在区块链中执行交易的方法,使得可以区块链中的从节点可根据主节点的共识提议并行执行交易。
[0004]本说明书第一方面提供一种在区块链中执行交易的方法,所述区块链包括主节点和从节点,所述方法包括:
[0005]所述主节点预执行接收的第一交易,生成所述第一交易的预执行读写集,所述预执行读写集中包括对第一变量的访问;
[0006]所述主节点根据所述第一交易的预执行读写集、在先记录的最近更新所述第一变量的第二交易的标识,生成DAG数据,所述第二交易为在预执行所述第一交易之前最近的在预执行后更新所述第一变量的预执行状态的交易,所述DAG数据指示所述第一交易和所述第二交易访问所述第一变量的时间顺序;
[0007]所述主节点将所述DAG数据发送给所述从节点;
[0008]所述从节点基于所述DAG数据执行所述第一交易和所述第二交易。
[0009]本说明书第二方面提供一种区块链,所述区块链包括主节点和从节点,
[0010]所述主节点用于:预执行接收的第一交易,生成所述第一交易的预执行读写集,所述预执行读写集中包括对第一变量的访问;根据所述第一交易的预执行读写集、在先记录的最近更新所述第一变量的第二交易的标识,生成DAG数据,所述第二交易为在预执行所述第一交易之前最近的在预执行后更新所述第一变量的预执行状态的交易,所述DAG数据指示所述第一交易和所述第二交易访问所述第一变量的时间顺序;将所述DAG数据发送给所述从节点;
[0011]所述从节点用于基于所述DAG数据执行所述第一交易和所述第二交易。
[0012]本说明书第三方面提供一种区块链主节点,包括:
[0013]预执行单元,用于预执行接收的第一交易,生成所述第一交易的预执行读写集,所述预执行读写集中包括对第一变量的访问;
[0014]生成单元,用于根据所述第一交易的预执行读写集、在先记录的最近更新所述第
一变量的第二交易的标识,生成DAG数据,所述第二交易为在预执行所述第一交易之前最近的在预执行后更新所述第一变量的预执行状态的交易,所述DAG数据指示所述第一交易和所述第二交易访问所述第一变量的时间顺序;
[0015]发送单元,用于将所述DAG数据发送给所述区块链的从节点。
[0016]本说明书第四方面提供一种区块链从节点,包括:
[0017]接收单元,用于从所述区块链的主节点接收DAG数据,所述DAG数据指示第一交易和第二交易访问第一变量的时间顺序;
[0018]执行单元,用于基于所述DAG数据执行所述第一交易和所述第二交易。
[0019]通过本说明书实施例提供的在区块链中执行交易的方案,从节点根据主节点生成的DAG数据,对于没有冲突的交易可以并行执行,对于有冲突的交易可根据DAG数据中的先后顺序先后执行,从而提高了交易执行效率。
附图说明
[0020]为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0021]图1为本说明书实施例所应用的区块链架构图;
[0022]图2为本说明书一实施例中的在区块链中执行交易的方法流程图;
[0023]图3为本说明书一实施例中的DAG图;
[0024]图4为本说明书一实施例中的一种区块链主节点的架构图;
[0025]图5为本说明书一实施例中的一种区块链从节点的架构图。
具体实施方式
[0026]为了使本
的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
[0027]图1示出本说明书实施例所应用的区块链架构图。如图1中,区块链中例如包含主节点1、从节点2~从节点6共6个节点。节点之间的连线示意性的表示P2P(Peer to Peer,点对点)连接。这些节点上都存储全量的账本,即存储全部区块和全部账户的状态。其中,区块链中的每个节点通过执行相同的交易而产生区块链中的相同的状态,区块链中的每个节点存储相同的状态数据库。所不同的是,主节点1可负责从客户端接收交易,并向各个从节点发起共识提议,该共识提议中例如包括将要成块的区块(例如区块B1)中的多个交易及各个交易的提交顺序等信息。在区块链中的节点对共识提议共识成功之后,各个节点可根据共识提议中的提交顺序执行该多个交易,从而生成区块B1。
[0028]可以理解,图1所示的区块链仅仅是示例性的,本说明书实施例不限于应用于图1所示的区块链,例如还可以应用于包括分片的区块链系统中。
[0029]另外,图1中虽然示出了区块链中包括6个节点,本说明书实施例不限于此,而是可以包括其他数目的节点。具体是,区块链中包含的节点可以满足拜占庭容错(Byzantine Fault Tolerance,BFT)要求。所述的拜占庭容错要求可以理解为在区块链内部可以存在拜占庭节点,而区块链对外不体现拜占庭行为。一般的,一些拜占庭容错算法中要求节点个数大于3f+1,f为拜占庭节点个数,例如实用拜占庭容错算法PBFT(Practical Byzantine Fault Tolerance)。
[0030]区块链领域中的交易可以指在区块链中执行并记录在区块链中的任务单元。交易中通常包括发送字段(From)、接收字段(To)和数据字段(Data)。其中,在交易为转账交易的情况中,From字段表示发起该交易(即发起对另一个账户的转账任务)的账户地址,To字段表示接收该交易(即接收转账)的账户地址,Data字段中包括转账金额。在交易调用区块链中的智能合约的情况中,From字段表示发起该交易的账户地址,To字段表示交易所调用的合约的账户地址,Data字段中包括调用合约中的函数名、及对该函数的传入参数等数据,以用于在交易执行时从区块链中获取该函数的代码并执行该函数本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种在区块链中执行交易的方法,所述区块链包括主节点和从节点,所述方法包括:所述主节点预执行接收的第一交易,生成所述第一交易的预执行读写集,所述预执行读写集中包括对第一变量的访问;所述主节点根据所述第一交易的预执行读写集、在先记录的最近更新所述第一变量的第二交易的标识,生成有向无环图DAG数据,所述第二交易为在预执行所述第一交易之前最近的在预执行后更新所述第一变量的预执行状态的交易,所述DAG数据指示所述第一交易和所述第二交易访问所述第一变量的时间顺序;所述主节点将所述DAG数据发送给所述从节点;所述从节点基于所述DAG数据执行所述第一交易和所述第二交易。2.根据权利要求1所述的方法,所述主节点预执行接收的第一交易包括,所述主节点基于预执行状态集预执行接收的第一交易,在预执行完成所述第一交易之后,基于所述第一交易的预执行读写集更新所述预执行状态集。3.根据权利要求1或2所述的方法,其中,所述DAG数据包括已预执行完成的多个交易各自的DAG表,每个交易的DAG表中包括该交易在DAG图中的后继交易和入度交易数目。4.根据权利要求3所述的方法,所述预执行读写集中包括对所述第一变量的读操作,所述主节点根据所述第一交易的预执行读写集、在先记录的最近更新所述第一变量的第二交易的标识,生成DAG数据包括:所述主节点在所述第二交易的DAG表中将所述第一交易记录为所述第二交易的后继交易,在所述第一交易的DAG表中将所述第一交易的入度数加1。5.根据权利要求3所述的方法,所述预执行读写集中包括对所述第一变量的读操作,所述第二交易标识为空交易标识,所述主节点根据所述第一交易的预执行读写集、在先记录的最近更新所述第一变量的第二交易的标识,生成DAG数据包括:所述主节点与所述第一变量的空交易标识关联地记录所述第一交易的标识;所述主节点在预执行完成所述第一交易之后,预执行接收的第三交易,生成所述第三交易的预执行读写集,所述第三交易的预执行读写集中包括对所述第一变量的写操作;所述主节点根据所述第三交易的预执行读写集和与所述第一变量的空交易标识关联记录的所述第一交易的标识,在所述第一交易的DAG表中将所述第三交易记录为所述第一交易的后继交易,在所述第三交易的DAG表中将所述第三交易的入度数加1,记录所述第三交易为最近更新所述第一变量的交易。6.根据权利要求3所述的方法,所述第一交易的预执行读写集中包括对所述第一变量的写操作,所述主节点根据所述第一交易的预执行读写集、在先记录的最近更新所述第一变量的第二交易的标识,生成DAG数据包括:所述主节点读取所述第二交易的DAG表,在所述第二交易具有后继的第四交易的情况中,在所述第四交易的DAG表中将所述第一交易记录为所述第四交易的后继交易,在所述第一交易的DAG表中将所述第一交易的入度数加1,记录所述第一交易为最近更新所述第一变量的交易。7.根据权利要求6所述的方法,所述主节点根据所述第一交易的预执行读写集、在先记录的最近更新所述第一变量的第二交易的标识,生成DAG数据还包括:在所述第二交易没有后继交易的情况中,在所述第二交易的DAG表中将所述第一交易记录为所述第二交易的后
继交易,在所述第一交易的DAG表中将所述第一交易的入度数加1,记录所述第一交易为最近更新所述第一变量的交易。8.根据权利要求3所述的方法,还包括:所述主节点根据所述多个交易各自的DAG表获取第一集合,所述第一集合中包括所述多个交易中入度数为零的交易,将所述第一集合发送给所述从节点。9.根据权利要求8所述的方法,所述第一集合中包括所述第二交易,所述第一交易为所述第二交易的后继交易,所述从节点基于所述DAG数据执行所述第一交易和所述第二交易包括:所述从节点并行...

【专利技术属性】
技术研发人员:刘晓建张兆勇
申请(专利权)人:蚂蚁区块链科技上海有限公司
类型:发明
国别省市:

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

1