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

技术编号:31157247 阅读:32 留言:0更新日期:2021-12-04 09:54
一种在区块链中执行交易的方法、区块链、主节点和从节点。所述方法包括:所述主节点基于预执行状态集和/或状态数据库预执行接收的每个交易;在预执行完每个交易之后,基于所述预执行状态集串行地对每个交易进行冲突检测,在检测通过的情况中,更新所述预执行状态集和预执行交易集合;从所述预执行交易集合中确定多个交易,计算所述多个交易的预执行读写集的第一哈希值;对所述多个交易进行分组;将所述多个交易、其排列顺序、分组结果以及第一哈希值发送给从节点;从节点并行执行所述多个交易组中的交易;计算所述多个交易的执行读写集的第二哈希值;根据所述第一哈希值与所述第二哈希值的比较结果确定是否提交所述多个交易的执行结果。执行结果。执行结果。

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


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

技术介绍

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

技术实现思路

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

【技术保护点】

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

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

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

1