区块链系统中的交易执行方法、存储服务和区块链节点技术方案

技术编号:37443103 阅读:17 留言:0更新日期:2023-05-06 09:15
一种区块链系统中的交易执行方法、存储服务和区块链节点,单个区块链节点与包含多个存储节点的存储服务关联。由存储服务执行的方法包括:根据读取请求向区块链节点返回响应数据,使其根据该响应数据获得第一交易的执行结果;接收区块链节点根据该执行结果发起的包含第一变量值的存储请求;如果存储节点中存储的参考变量的变量值与第一变量值不同则对应返回错误提示信息,使区块链节点将其自身和存储节点中存储的参考变量的变量值更新为第三变量值,将分片数据更新至第一区块高度并重新执行第一交易,其中对应第一区块高度的区块是第一交易所属区块的前一区块,分片数据被回滚至相同区块高度的情况下存储节点中存储的参考变量的变量值会发生变更。变量的变量值会发生变更。变量的变量值会发生变更。

【技术实现步骤摘要】
区块链系统中的交易执行方法、存储服务和区块链节点


[0001]本说明书实施例属于区块链领域,尤其涉及一种区块链系统中的交易执行方法、存储服务和区块链节点。

技术介绍

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

技术实现思路

[0003]本专利技术的目的在于提供一种区块链系统中的交易执行方法、存储服务和区块链节点。
[0004]第一方面,提供了一种区块链系统中的交易执行方法,所述区块链系统中包括区块链节点,所述区块链节点与包含多个存储节点的存储服务关联,所述方法应用于所述存储服务。所述方法包括:接收所述区块链节点在执行第一交易的过程中发起的第一读取请求,并根据所述第一读取请求返回响应数据,使得所述区块链节点根据所述响应数据获得所述第一交易的执行结果;接收所述区块链节点根据所述第一交易的执行结果发起的第一存储请求,所述第一存储请求中包括所述区块链节点中存储的参考变量的第一变量值;确定所述存储节点中存储的所述参考变量的第二变量值与所述第一变量值是否相同,如果不同则向所述区块链节点返回错误提示信息,使得所述区块链节点将所述区块链节点和所述多个存储节点中各自存储的所述参考变量的变量值更新为相同的第三变量值,将所述多个存储节点中各自存储的分片数据更新至第一区块高度,并重新执行所述第一交易,其中所述区块链系统中对应所述第一区块高度的区块是所述第一交易所属区块的前一个区块,所述多个存储节点各自存储的分片数据被回滚至相同区块高度的情况下,所述多个存储节点中各自存储的所述参考变量的变量值发生变更。
[0005]第二方面,提供了一种区块链系统中的交易执行方法,所述区块链系统中包括区块链节点,所述区块链节点与包含多个存储节点的存储服务关联,所述方法应用于所述区块链节点。所述方法包括:在执行第一交易的过程中向所述存储服务发送第一读取请求,获得所述存储服务根据所述第一读取请求返回的响应数据,并根据所述响应数据获得所述第一交易的执行结果;根据所述第一交易的执行结果向所述存储服务发送第一存储请求,所述第一存储请求中包括所述区块链节点中存储的参考变量的第一变量值,使得所述存储服务在所述多个存储节点中各自存储的所述参考变量的变量值与所述第一变量值不同的情况下,返回错误提示信息;响应于所述错误提示信息,将所述区块链节点和所述多个存储节点中各自存储的所述参考变量的变量值更新为相同的第三变量值,将所述多个存储节点中各自存储的分片数据更新至第一区块高度,并重新执行所述第一交易,其中所述区块链系
统中对应所述第一区块高度的区块是所述第一交易所属区块的前一个区块,所述多个存储节点各自存储的分片数据被回滚至相同区块高度的情况下,所述多个存储节点中各自存储的所述参考变量的变量值发生变更。
[0006]第三方面,提供了一种区块链系统中的存储服务,所述区块链系统中包括区块链节点,所述区块链节点与所述存储服务关联,所述存储服务包括多个存储节点。所述存储节点用于执行:接收所述区块链节点在执行第一交易的过程中发起的第一读取请求,并根据所述第一读取请求返回响应数据,使得所述区块链节点根据所述响应数据获得所述第一交易的执行结果;接收所述区块链节点根据所述第一交易的执行结果发起的第一存储请求,所述第一存储请求中包括所述区块链节点中存储的参考变量的第一变量值;确定所述存储节点中存储的所述参考变量的第二变量值与所述第一变量值是否相同,如果不同则向所述区块链节点返回错误提示信息,使得所述区块链节点将所述区块链节点和所述多个存储节点中各自存储的所述参考变量的变量值更新为相同的第三变量值,将所述多个存储节点中各自存储的分片数据更新至第一区块高度,并重新执行所述第一交易,所述区块链系统中对应所述第一区块高度的区块是所述第一交易所属区块的前一个区块,所述多个存储节点各自存储的分片数据被回滚至相同区块高度的情况下,所述多个存储节点中各自存储的所述参考变量的变量值发生变更。
[0007]第四方面,提供了一种区块链系统中的区块链节点,所述区块链节点与包含多个存储节点的存储服务关联。所述区块链节点包括:交易执行单元,用于在执行第一交易的过程中向所述存储服务发送第一读取请求,获得所述存储服务根据所述第一读取请求返回的响应数据,并根据所述响应数据获得所述第一交易的执行结果;区块管理单元,用于根据所述第一交易的执行结果向所述存储服务发送第一存储请求,所述第一存储请求中包括所述区块链节点中存储的参考变量的第一变量值,使得所述存储服务在所述多个存储节点中各自存储的所述参考变量的变量值与所述第一变量值不同的情况下,返回错误提示信息;以及,响应于所述错误提示信息,将所述区块链节点和所述多个存储节点中各自存储的所述参考变量的变量值更新为相同的第三变量值,将所述多个存储节点中各自存储的分片数据更新至第一区块高度,并触发所述交易执行单元重新执行所述第一交易,其中所述区块链系统中对应所述第一区块高度的区块是所述第一交易所属区块的前一个区块,所述多个存储节点各自存储的分片数据被回滚至相同区块高度的情况下,所述多个存储节点中各自存储的所述参考变量的变量值发生变更。
[0008]第五方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面或第二方面中所述的方法。
[0009]在本说明书实施例的方案中,存储服务正常运行时,其关联的区块链节点以及其包括的多个存储节点中各自存储的参考变量的变量值相同;存储服务中存在发生异常的存储节点时,多个存储节点中各自存储的分片数据可以被回滚至相同区块高度,且该多个存储节点各自存储的参考变量的变量值会发生变更,导致区块链节点和多个存储节点中存储的参考变量具有不同的变量值。与之相应的是,因分片数据已经发生回滚,区块链节点基于来自存储服务的响应数据而获得的第一交易的执行结果则并非正确的执行结果;区块链节点基于该第一交易的执行结果向存储服务发起的存储请求包含由其自身存储的参考变量的变量值,存储服务可以通过判断存储请求中的变量值与存储节点中存储的参考变量的变
量值不同,向区块链节点对应返回错误提示信息以提示区块链节点未能正确执行第一交易。进而,区块链节点可以基于该错误提示信息,将其自身和多个存储节点中各自存储的参考变量的变量值重置为相同的第三变量值,然后基于该第三变量值将多个存储节点中各自存储的分片数据更新至第一区块高度,对应第一区块高度的区块是第一交易所属区块的前一个区块,并基于存储服务中更新后的分片数据重新正确的执行第一交易。
附图说明
[0010]为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种区块链系统中的交易执行方法,所述区块链系统中包括区块链节点,所述区块链节点与包含多个存储节点的存储服务关联,所述方法应用于所述存储服务,所述方法包括:接收所述区块链节点在执行第一交易的过程中发起的第一读取请求,并根据所述第一读取请求返回响应数据,使得所述区块链节点根据所述响应数据获得所述第一交易的执行结果;接收所述区块链节点根据所述第一交易的执行结果发起的第一存储请求,所述第一存储请求中包括所述区块链节点中存储的参考变量的第一变量值;确定所述存储节点中存储的所述参考变量的第二变量值与所述第一变量值是否相同,如果不同则向所述区块链节点返回错误提示信息,使得所述区块链节点将所述区块链节点和所述多个存储节点中各自存储的所述参考变量的变量值更新为相同的第三变量值,将所述多个存储节点中各自存储的分片数据更新至第一区块高度,并重新执行所述第一交易,其中所述区块链系统中对应所述第一区块高度的区块是所述第一交易所属区块的前一个区块,所述多个存储节点各自存储的分片数据被回滚至相同区块高度的情况下,所述多个存储节点中各自存储的所述参考变量的变量值发生变更。2.根据权利要求1所述的方法,所述存储服务还包括主节点;所述方法还包括:在所述多个存储节点中的第一存储节点发生重启之后,所述主节点获取所述多个存储节点各自存储的分片数据所分别对应的区块高度;所述主节点确定其获得的各个所述区块高度中最小的第二区块高度;所述主节点向所述多个存储节点发送包括所述第二区块高度的数据回滚请求;所述存储节点将其存储的分片数据回滚至所述第二区块高度,并将所述存储节点存储的所述参考变量的变量值变更为所述第二变量值。3.根据权利要求1所述的方法,在所述第一存储节点发生重启之前,所述区块链节点和所述多个存储节点中各自存储的所述参考变量的变量值均为所述第一变量值;其中,所述方法还包括:所述第一存储节点在发生重启之后,将所述第一存储节点中存储的所述参考变量的变量值由所述第一变量值变更为第四变量值;所述主节点获取所述多个存储节点各自存储的所述参考变量的变量值;所述主节点根据其获取的各个变量值确定所述第二变量值,所述数据回滚请求中还包括所述第二变量值。4.根据权利要求1

3中任一项所述的方法,所述方法还包括:从所述区块链节点接收状态同步请求,所述状态同步请求中包括所述第三变量值;将所述多个存储节点中各自存储的所述参考变量的变量值更新为所述第三变量值。5.根据权利要求4所述的方法,所述方法还包括:向所述区块链节点发送发生回滚后的所述分片数据所对应第二区块高度;从所述区块链节点接收其根据所述第二区块高度发送的第二存储请求,所述第二存储请求中包括所述第三变量值;根据所述第二存储请求将所述多个存储节点各自存储的分片数据更新至第一区块高度。
6.一种区块链系统中的交易执行方法,所述区块链系统中包括区块链节点,所述区块链节点与包含多个存储节点的存储服务关联,所述方法应用于所述区块链节点,所述方法包括:在执行第一交易的过程中向所述存储服务发送第一读取请求,获得所述存储服务根据所述第一读取请求返回的响应数据,并根据所述响应数据获得所述第一交易的执行结果;根据所述第一交易的执行结果向所述存储服务发送第一存储请求,所述第一存储请求中包括所述区块链节点中存储的参考变量的第一变量值,使得所述存储服务在所述多个存储节点中各自存储的所述参考变量的变量值与所述第一变量值不同的情况下,返回错误提示信息;响应于所述错误提示信息,将所述区块链节点和所述多个存储节点中各自存储的所述参考变量的变量值更新为相同的第三变量值,将所述多个存储节点中各自存储的分片数据更新至第一区块高度,并重新执行所述第一交易,其中所述区块链系统中对应所述第一区块高度的区块是所述第一交易所属区块的前一个区块,所述多个存储节点各自存储的分片数据被回滚至相同区块高度的情况下,所述多个存储节点各自存储的所述参考变量的变量值发生变更。7.根据权利要求6所述的方法,所述将所述区块链节点和所述多个存储节点中各自存储的所述参考变量的变量值更新为相同的第三变量值,具体包括:将所述区块链节点中存储的所述参考变量的变量值更新为第三变量值;向所述存储服务发送状态同步请求,所述状态同步请求中包括所述第三变量值,使得所述多个存储节点将其各自存储的所述参考变量的变量值更新为所述第三变量值。8.根据权利要求6所述的方法,所述方法还包括:从所述存储服务获取所述第二区块高度;其中,所述将所述多个存储节点中各自存储的分片数据更新至第一区块高度,具体包括:根据所述第二区块高度向所述存储服务发送第二存储请求,所述第二存储请求中包括所述第三变量值,使得所述多个存储节点将其各自存储的分片数据更新至所述第一区块高度。9.一种区块链系统中的存储服务,所述区块链系统中包括区块链...

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

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

1