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

技术编号:31157249 阅读:40 留言:0更新日期:2021-12-04 09:54
一种在区块链中执行交易的方法、区块链和主节点。所述区块链包括主节点和从节点,所述方法包括:所述主节点基于预执行状态集预执行接收的每个交易,得到各个交易的预执行读写集;所述主节点在预执行完每个交易之后,串行地对每个交易进行如下处理:确定所述交易的预执行读集是否与所述预执行状态集存在冲突,其中,在确定不存在冲突的情况中,更新预执行状态集和预执行交易集合;所述主节点将所述预执行交易集合中的顺序排列的多个交易、其在预执行交易集合中的排列顺序、及所述多个交易的预执行读写集发送给所述从节点;所述从节点根据所述多个交易的排列顺序和各个交易的预执行读写集执行所述多个交易。读写集执行所述多个交易。读写集执行所述多个交易。

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


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

技术介绍

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

技术实现思路

[0003]本专利技术的目的在于提供一种在区块链中执行交易的方法、区块链和主节点,提高了区块链中的交易执行速度。
[0004]本说明书第一方面提供一种在区块链中执行交易的方法,所述区块链包括主节点和从节点,所述方法包括:所述主节点基于预执行状态集预执行接收的每个交易,得到各个交易的预执行读写集;所述主节点在预执行完每个交易之后,串行地对每个交易进行如下处理:确定所述交易的预执行读集是否与所述预执行状态集存在冲突,其中,在对于预执行完的第一交易确定不存在冲突的情况中,基于所述第一交易的预执行读写集更新所述预执行状态集,将所述第一交易顺序记录到预执行交易集合中,例如,将所述第一交易顺序记录到预执行交易集合的末尾位置;所述主节点将所述预执行交易集合中在先记录的顺序排列的多个交易(例如顺序排列的前n个交易)、所述多个交易在所述预执行交易集合中的排列顺序、及所述多个交易的预执行读写集发送给所述从节点;所述从节点根据所述多个交易的排列顺序和各个交易的预执行读写集执行所述多个交易。
[0005]本说明书第二方面提供一种在区块链中执行交易的方法,所述区块链包括主节点和从节点,所述方法包括:所述主节点基于预执行状态集预执行接收的每个交易,得到各个交易的预执行读写集;所述主节点在预执行完每个交易之后,串行地对每个交易进行如下处理:确定所述交易的预执行读集是否与所述预执行状态集存在冲突,其中,在对于预执行完的第一交易确定不存在冲突的情况中,基于所述第一交易的预执行读写集更新所述预执行状态集,将所述第一交易顺序记录预执行交易集合中;所述主节点从所述预执行交易集合中确定在先记录的顺序排列的多个交易;所述主节点根据所述多个交易的预执行读写集对所述多个交易进行分组;所述主节点将所述多个交易、所述多个交易在所述预执行交易集合中的排列顺序、及所述多个交易的分组结果发送给所述从节点;
所述从节点根据所述多个交易的排列顺序和分组结果并行执行所述多个交易。
[0006]本说明书第三方面提供一种在区块链中执行交易的方法,所述区块链包括主节点和从节点,所述方法由所述主节点执行,包括:基于预执行状态集预执行接收的每个交易,得到各个交易的预执行读写集;在预执行完每个交易之后,串行地对每个交易进行如下处理:确定所述交易的预执行读集是否与所述预执行状态集存在冲突,其中,在对于预执行完的第一交易确定不存在冲突的情况中,基于所述第一交易的预执行读写集更新所述预执行状态集,将所述第一交易顺序记录到预执行交易集合中;将所述预执行交易集合中在先记录的顺序排列的多个交易、所述多个交易在所述预执行交易集合中的排列顺序、及所述多个交易的预执行读写集发送给所述从节点。
[0007]本说明书第四方面提供一种在区块链中执行交易的方法,所述区块链包括主节点和从节点,所述方法由所述主节点执行,包括:基于预执行状态集预执行接收的每个交易,得到各个交易的预执行读写集;在预执行完每个交易之后,串行地对每个交易进行如下处理:确定所述交易的预执行读集是否与所述预执行状态集存在冲突,其中,在对于预执行完的第一交易确定不存在冲突的情况中,基于所述第一交易的预执行读写集更新所述预执行状态集,将所述第一交易顺序记录预执行交易集合中;从所述预执行交易集合中确定在先记录的顺序排列的多个交易;根据所述多个交易的预执行读写集对所述多个交易进行分组;将所述多个交易、所述多个交易在所述预执行交易集合中的排列顺序、及所述多个交易的分组结果发送给所述从节点。
[0008]本说明书第五方面提供一种区块链,所述区块链包括主节点和从节点,所述主节点用于基于预执行状态集预执行接收的每个交易,得到各个交易的预执行读写集;在预执行完每个交易之后,串行地对每个交易进行如下处理:确定所述交易的预执行读集是否与所述预执行状态集存在冲突,其中,在对于预执行完的第一交易确定不存在冲突的情况中,基于所述第一交易的预执行读写集更新所述预执行状态集,将所述第一交易顺序记录到预执行交易集合中;所述主节点还用于将所述预执行交易集合中在先记录的顺序排列的多个交易、所述多个交易在所述预执行交易集合中的排列顺序、及所述多个交易的预执行读写集发送给所述从节点;所述从节点用于根据所述多个交易的排列顺序和各个交易的预执行读写集执行所述多个交易。
[0009]本说明书第六方面提供一种区块链,包括主节点和从节点,所述主节点用于基于预执行状态集预执行接收的每个交易,得到各个交易的预执行读写集;在预执行完每个交易之后,串行地对每个交易进行如下处理:确定所述交易的预执行读集是否与所述预执行状态集存在冲突,其中,在对于预执行完的第一交易确定不存在冲突的情况中,基于所述第一交易的预执行读写集更新所述预执行状态集,将所述第一交易顺序记录预执行交易集合中;从所述预执行交易集合中确定在先记录的顺序排列的多个交易;根据所述多个交易的预执行读写集对所述多个交易进行分组;将所述多个交易、所述多个交易在所述预执行交易集合中的排列顺序、及所述多个交易的分组结果发送给所述从节点;所述从节点用于根据所述多个交易的排列顺序和分组结果并行执行所述多个交
易。
[0010]本说明书第七方面提供一种区块链主节点,包括:预执行单元,用于基于预执行状态集预执行接收的每个交易,得到各个交易的预执行读写集;冲突检测单元,用于在预执行完每个交易之后,串行地对每个交易进行如下处理:确定所述交易的预执行读集是否与所述预执行状态集存在冲突,其中,在对于预执行完的第一交易确定不存在冲突的情况中,基于所述第一交易的预执行读写集更新所述预执行状态集,将所述第一交易顺序记录到预执行交易集合中;发送单元,用于将所述预执行交易集合中在先记录的顺序排列的多个交易、所述多个交易在所述预执行交易集合中的排列顺序、及所述多个交易的预执行读写集发送给从节点。
[0011]本说明书第八方面提供一种区块链主节点,包括:预执行单元,用于基于预执行状态集预执行接收的每个交易,得到各个交易的预执行读写集;冲突检测单元,用于在预执行完每个交易之后,串行地对每个交易进行如下处理:确定所述交易的预执行读集是否与所述预执行状态集存在冲突,其中,在对于预执行完的第一交易确定不存在冲突的情况中,基于所述第一交易的预执行读写集更新所述预执行状态集,将所述第一交易顺序记录预执行交易集合中;确定单元,用于从所述预执行交易集合中确定在先记录的顺序排列的多个交易;分组本文档来自技高网
...

【技术保护点】

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

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

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

1