交易执行方法、区块链、主节点和主存储设备技术

技术编号:31157256 阅读:12 留言:0更新日期:2021-12-04 09:54
一种在区块链中执行交易的方法、区块链、主节点和主存储设备,所述方法由所述主存储设备执行,包括:从所述计算设备接收各个交易的预执行读写集,所述预执行读写集通过基于所述从存储设备中存储的第一预执行状态集预执行交易获得;串行地对每个交易进行如下处理:确定所述交易的预执行读集是否与本地存储的第二预执行状态集存在冲突,其中,在对于第一交易确定不存在冲突的情况中,基于所述第一交易的预执行读写集更新所述第二预执行状态集,将所述第一交易顺序记录到预执行交易集合中;指示所述从存储设备根据所述第二预执行状态集更新所述第一预执行状态集。更新所述第一预执行状态集。更新所述第一预执行状态集。

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


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

技术介绍

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

技术实现思路

[0003]本专利技术的目的在于提供一种在区块链中执行交易的方法、区块链、主节点和主存储设备,提高了区块链中的交易执行速度。
[0004]本说明书第一方面提供一种在区块链中执行交易的方法,所述区块链包括主节点和从节点,所述主节点包括从存储设备、主存储设备和计算设备,所述方法包括:所述计算设备基于所述从存储设备中存储的第一预执行状态集预执行接收的每个交易,得到各个交易的预执行读写集,将各个交易的预执行读写集发送给所述主存储设备;所述主存储设备串行地对每个交易进行如下处理:确定所述交易的预执行读集是否与本地存储的第二预执行状态集存在冲突,其中,在对于第一交易确定不存在冲突的情况中,基于所述第一交易的预执行读写集更新所述第二预执行状态集,将所述第一交易顺序记录到预执行交易集合中;所述主存储设备指示所述从存储设备根据所述第二预执行状态集更新所述第一预执行状态集;所述主存储设备将所述预执行交易集合中的在先记录的顺序排列的多个交易、所述多个交易在所述预执行交易集合中的排列顺序、及所述多个交易的预执行读写集发送给所述从节点;所述从节点根据所述多个交易的排列顺序和各个交易的预执行读写集执行所述多个交易。
[0005]本说明书第二方面提供一种在区块链中执行交易的方法,所述区块链包括主节点和从节点,所述主节点包括从存储设备、主存储设备和计算设备,所述方法包括:所述计算设备基于所述从存储设备中存储的第一预执行状态集预执行接收的每个交易,得到各个交易的预执行读写集,将各个交易的预执行读写集发送给所述主存储设备;所述主存储设备串行地对每个交易进行如下处理:确定所述交易的预执行读集是
否与本地存储的第二预执行状态集存在冲突,其中,在对于第一交易确定不存在冲突的情况中,基于所述第一交易的预执行读写集更新所述第二预执行状态集,将所述第一交易顺序记录到预执行交易集合中;所述主存储设备指示所述从存储设备根据所述第二预执行状态集更新所述第一预执行状态集。
[0006]本说明书第三方面提供一种在区块链中执行交易的方法,所述区块链包括主节点和从节点,所述主节点包括从存储设备、主存储设备和计算设备,所述方法由所述主存储设备执行,包括:从所述计算设备接收各个交易的预执行读写集,所述预执行读写集通过基于所述从存储设备中存储的第一预执行状态集预执行交易获得;串行地对每个交易进行如下处理:确定所述交易的预执行读集是否与本地存储的第二预执行状态集存在冲突,其中,在对于第一交易确定不存在冲突的情况中,基于所述第一交易的预执行读写集更新所述第二预执行状态集,将所述第一交易顺序记录到预执行交易集合中;指示所述从存储设备根据所述第二预执行状态集更新所述第一预执行状态集。
[0007]本说明书第四方面提供一种区块链,包括主节点和从节点,所述主节点包括从存储设备、主存储设备和计算设备,所述计算设备用于基于所述从存储设备中存储的第一预执行状态集预执行接收的每个交易,得到各个交易的预执行读写集,将各个交易的预执行读写集发送给所述主存储设备;所述主存储设备用于串行地对每个交易进行如下处理:确定所述交易的预执行读集是否与本地存储的第二预执行状态集存在冲突,其中,在对于第一交易确定不存在冲突的情况中,基于所述第一交易的预执行读写集更新所述第二预执行状态集,将所述第一交易顺序记录到预执行交易集合中;指示所述从存储设备根据所述第二预执行状态集更新所述第一预执行状态集;所述主存储设备还用于将所述预执行交易集合中的在先记录的顺序排列的多个交易、所述多个交易在所述预执行交易集合中的排列顺序、及所述多个交易的预执行读写集发送给所述从节点;所述从节点用于根据所述多个交易的排列顺序和各个交易的预执行读写集执行所述多个交易。
[0008]本说明书第五方面提供一种区块链主节点,包括从存储设备、主存储设备和计算设备,所述计算设备用于基于所述从存储设备中存储的第一预执行状态集预执行接收的每个交易,得到各个交易的预执行读写集,将各个交易的预执行读写集发送给所述主存储设备;所述主存储设备用于串行地对每个交易进行如下处理:确定所述交易的预执行读集是否与本地存储的第二预执行状态集存在冲突,其中,在对于第一交易确定不存在冲突的情况中,基于所述第一交易的预执行读写集更新所述第二预执行状态集,将所述第一交易顺序记录到预执行交易集合中;指示所述从存储设备根据所述第二预执行状态集更新所
述第一预执行状态集。
[0009]本说明书第六方面提供一种用于区块链主节点的主存储设备,所述主节点还包括从存储设备和计算设备,所述主存储设备包括:接收单元,用于从所述计算设备接收各个交易的预执行读写集,所述预执行读写集通过基于所述从存储设备中存储的第一预执行状态集预执行交易获得;冲突检测单元,用于串行地对每个交易进行如下处理:确定所述交易的预执行读集是否与本地存储的第二预执行状态集存在冲突,其中,在对于第一交易确定不存在冲突的情况中,基于所述第一交易的预执行读写集更新所述第二预执行状态集,将所述第一交易顺序记录到预执行交易集合中;指示单元,用于指示所述从存储设备根据所述第二预执行状态集更新所述第一预执行状态集。
[0010]本说明书第七方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行如第三方面所述的方法。
[0011]本说明书第八方面提供一种区块链主节点中的主存储设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现如第三方面所述的方法。
[0012]通过本说明书实施例提供的方案,区块链中的主节点在预执行交易时,考虑交易之间的冲突,并且根据对各个交易进行预执行冲突检测的先后顺序确定交易提交的顺序,使得在主节点不作恶的情况中从节点在执行交易时的世界状态与主节点预执行该交易时的世界状态一致。主节点中通过在从存储设备中定时更新预执行状态集,并在预执行交易时从从存储设备读取预执行状态,减轻了主存储设备的负担,提高了系统性能。
附图说明
[0013]为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0014]图1为本说明书一本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种在区块链中执行交易的方法,所述区块链包括主节点和从节点,所述主节点包括从存储设备、主存储设备和计算设备,所述方法包括:所述计算设备基于所述从存储设备中存储的第一预执行状态集预执行接收的每个交易,得到各个交易的预执行读写集,将各个交易的预执行读写集发送给所述主存储设备;所述主存储设备串行地对每个交易进行如下处理:确定所述交易的预执行读集是否与本地存储的第二预执行状态集存在冲突,其中,在对于第一交易确定不存在冲突的情况中,基于所述第一交易的预执行读写集更新所述第二预执行状态集,将所述第一交易顺序记录到预执行交易集合中;所述主存储设备指示所述从存储设备根据所述第二预执行状态集更新所述第一预执行状态集;所述主存储设备将所述预执行交易集合中的在先记录的顺序排列的多个交易、所述多个交易在所述预执行交易集合中的排列顺序、及所述多个交易的预执行读写集发送给所述从节点;所述从节点根据所述多个交易的排列顺序和各个交易的预执行读写集执行所述多个交易。2.根据权利要求1所述的方法,其中,所述计算设备基于所述从存储设备中存储的第一预执行状态集预执行接收的每个交易包括,所述计算设备在预执行任一交易中读取第一变量时,确定所述从存储设备中存储的第一预执行状态集中是否包括所述第一变量的值,在确定所述第一预执行状态集中不包括所述第一变量的值的情况中,从状态数据库读取所述第一变量的值。3.根据权利要求1或2所述的方法,其中,所述主存储设备确定所述交易的预执行读集是否与本地存储的第二预执行状态集存在冲突包括,确定所述第二预执行状态集中是否包括所述交易的预执行读集中的第二变量,在确定所述第二预执行状态集中包括所述第二变量的情况中,确定所述第二预执行状态集中的第二变量的值与所述预执行读集中的第二变量的值是否一致,如果不一致,则确定所述第二预执行状态集与所述预执行读集存在冲突。4.根据权利要求1或2所述的方法,还包括,所述主存储设备在确定第二交易的预执行读集与所述第二预执行状态集存在冲突的情况中,通知所述计算设备,所述计算设备对所述第二交易重新预执行。5.根据权利要求1或2所述的方法,其中,所述从节点根据所述多个交易的排列顺序和预执行读写集执行所述多个交易包括,所述从节点根据所述多个交易的预执行读写集对所述多个交易进行分组,根据所述多个交易的排列顺序和分组结果并行执行所述多个交易。6.根据权利要求5所述的方法,还包括,所述从节点在执行任一交易之后,比较该交易的执行读写集与该交易的预执行读写集是否一致,在相对于第三交易确定不一致的情况中,对所述第三交易的执行进行回滚。7.根据权利要求6所述的方法,还包括,所述从节点在执行完所述多个交易之后,重新执行经回滚的交易,所述经回滚的交易中包括所述第三交易。8.根据权利要求7所述的方法,还包括,所述从节点在重新执行经回滚的交易之后,生成第一区块,所述第一区块中包括所述多个交易的预执行读写集。9.一种在区块链中执行交易的方法,所述区块链包括主节点和从节点,所述主节点包
括从存储设备、主存储设备和计算设备,所述方法包括:所述计算设备基于所述从存储设备中存储的第一预执行状态集预执行接收的每个交易,得到各个交易的预执行读写集,将各个交易的预执行读写集发送给所述主存储设备;所述主存储设备串行地对每个交易进行如下处理:确定所述交易的预执行读集是否与本地存储的第二预执行状态集存在冲突,其中,在对于第一交易确定不存在冲突的情况中,基于所述第一交易的预执行读写集更新所述第二预执行状态集,将所述第一交易顺序记录到预执行交易集合中;所述主存储设备指示所述从存储设备根据所述第二预执行状态集更新所述第一预执行状态集。10.根据权利要求9所述的方法,还包括:所述主存储设备将所述预执行交易集合中的在先记录的顺序排列的多个交易、所述多个交易在所述预执行交易集合中的排列顺序、及所述多个交易的预执行读写集发送给所述从节点,以用于使得所述从节点执行所述多个交易。11.根据权利要求9或10所述的方法,其中,所述计算设备基于所述从存储设备中存储的第一预执行状态集预执行接收的每个交易包括,所述计算设备在预执行任一交易中读取第一变量时,确定所述从存储设备中存储的第一预执行状态集中是否包括所述第一变量的值,在确定所述第一预执行状态集中不包括所述第一变量的值的情况中,从状态数据库读取所述第一变量的值。12.根据权利要求9或10所述的方法,其中,所述主存储设备确定所述交易的预执行读集是否与本地存储的第二预执行状态集存在冲突包括,所述主存储设备确定所述第二预执行状态集中是否包括所述交易的预执行读集中的第二变量,在确定所述第二预执行状态集中包括所述第二变量的情况中,确定所述第二预执行状态集中的第二变量的值与所述预执行读集中的第二变量的值是否一致,如果不一致,则确定所述第二预执行状态集与所述预执行读集存在冲突。13.根据权利要求9或10所述的方法,还包括,所述主存储设备在确定第二交易的预执行读集与所述第二预执行状态集存在冲突的情况中,通知所述计算设备,所述计算设备对所述第二交易重新预执行。14.根据权利要求9或10所述的方法,所述主节点包括多...

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

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

1