一种交易验证方法、装置、设备及存储介质制造方法及图纸

技术编号:30169486 阅读:44 留言:0更新日期:2021-09-25 15:27
本申请实施例公开了一种交易验证方法、装置、设备及存储介质,该方法包括:区块链网络中的出块节点获取用户节点发送的待验证交易以及待验证交易对应的交易验证信息;在区块头链中,查找与第一区块头中的区块标识相匹配的区块头,将查找到的区块头作为第二区块头,基于第二区块头中的第一状态快照,对状态读取集合以及状态写入集合进行校验,得到待验证交易的第一校验结果;在第一校验结果指示校验成功时,基于状态读取集合执行交易业务,得到目标交易执行结果以及待写入状态数据;基于初始交易执行结果、目标交易执行结果、状态写入集合以及待写入状态数据,对待验证交易进行合法性校验。采用本申请实施例,可以加快出块节点的启动时间。启动时间。启动时间。

【技术实现步骤摘要】
一种交易验证方法、装置、设备及存储介质
[0001]本申请为在2021年05月18日提交中国专利局、申请号为2021105371826、申请名称为“一种交易验证方法、装置、设备及存储介质”的中国专利申请的分案申请,其全部内容通过引用结合在本申请中。


[0002]本申请涉及区块链
,尤其涉及一种交易验证方法、装置、设备及存储介质。

技术介绍

[0003]应当理解,区块链网络中的出块节点在生成新区块时,需要收集在该区块链网络中传播的未确认的交易,进而可以逐个执行收集到的交易所对应的交易业务,以得到交易执行结果。其中,出块节点在执行交易业务的过程中,需要从该区块链网络的区块链中,事先获取从创世区块至当前最新区块(即具有最大生成时间戳的区块)中的所有状态数据,以此来对该交易进行合法性校验。例如,出块节点在执行某交易对应的资产转移业务时,需要判断资产转移方是否有足够的额度。此时,该出块节点需要花费较长的时间来读取区块链上的所有状态数据,以至于降低了合法性校验的效率。这样,在区块链上的区块越来越多的情况下,针对于同一个状态数据而言,该状态数据的读取或者写入操作所需要消耗的资源开销将会不断上升,从而造成出块节点的运行负担过重,进而导致该出块节点的启动时间较长。

技术实现思路

[0004]本申请实施例提供一种交易验证方法、装置、设备及存储介质,可以加快出块节点的启动时间。
[0005]本申请实施例一方面提供一种交易验证方法,该方法由区块链网络中的出块节点执行,出块节点为区块链网络中的轻量节点,包括:
[0006]获取区块链网络中的用户节点发送的待验证交易以及待验证交易对应的交易验证信息;交易验证信息是由区块链网络中的全量节点在执行待验证交易对应的交易业务后所确定的;交易验证信息包括状态读取集合、状态写入集合、初始交易执行结果以及区块标识;区块标识用于指向全量节点的全量区块链上具有最大生成时间戳的目标区块;且目标区块的第一区块头中包含区块标识;
[0007]在轻量节点的区块头链中,查找与第一区块头中的区块标识相匹配的区块头,将查找到的区块头作为第二区块头,基于第二区块头中的第一状态快照,对状态读取集合以及状态写入集合进行校验,得到待验证交易的第一校验结果;
[0008]在第一校验结果指示校验成功时,基于状态读取集合执行交易业务,得到交易业务对应的目标交易执行结果以及待写入状态数据;
[0009]基于初始交易执行结果、目标交易执行结果、状态写入集合以及待写入状态数据,
对待验证交易进行合法性校验。
[0010]本申请实施例一方面提供一种交易验证方法,该方法由区块链网络中的全量节点执行,包括:
[0011]在获取到与区块链网络中的用户节点相关联的待验证交易时,在全量节点的全量区块链上,将具有最大生成时间戳的区块作为目标区块,且将目标区块的区块头作为第一区块头;
[0012]获取目标区块中的默克尔帕特里夏树,基于目标区块中的默克尔帕特里夏树,执行待验证交易对应的交易业务,得到交易业务对应的初始交易执行结果、状态读取集合以及状态写入集合;
[0013]获取第一区块头中的区块标识,将初始交易执行结果、状态读取集合、状态写入集合以及区块标识,作为待验证交易对应的交易验证信息;交易验证信息用于指示区块链网络中的出块节点,基于区块头链中的第二区块头中的第一状态快照,对待验证交易进行合法性校验;第二区块头为区块头链中与区块标识相匹配的区块头;出块节点为区块链网络中的轻量节点。
[0014]本申请实施例一方面提供一种交易验证装置,包括:
[0015]交易获取模块,用于获取区块链网络中的用户节点发送的待验证交易以及待验证交易对应的交易验证信息;交易验证信息是由区块链网络中的全量节点在执行待验证交易对应的交易业务后所确定的;交易验证信息包括状态读取集合、状态写入集合、初始交易执行结果以及区块标识;区块标识用于指向全量节点的全量区块链上具有最大生成时间戳的目标区块;且目标区块的第一区块头中包含区块标识;
[0016]集合校验模块,用于在轻量节点的区块头链中,查找与第一区块头中的区块标识相匹配的区块头,将查找到的区块头作为第二区块头,基于第二区块头中的第一状态快照,对状态读取集合以及状态写入集合进行校验,得到待验证交易的第一校验结果;
[0017]目标执行结果确定模块,用于在第一校验结果指示校验成功时,基于状态读取集合执行交易业务,得到交易业务对应的目标交易执行结果以及待写入状态数据;
[0018]合法性校验模块,用于基于初始交易执行结果、目标交易执行结果、状态写入集合以及待写入状态数据,对待验证交易进行合法性校验。
[0019]其中,状态读取集合和状态写入集合是全量节点基于目标区块中的默克尔帕特里夏树所生成的;
[0020]该集合校验模块包括:
[0021]状态快照获取单元,用于从轻量节点的区块头链中,查找与第一区块头中的区块标识相匹配的区块头,将查找到的区块头作为第二区块头,且将第二区块头中的状态快照作为第一状态快照;
[0022]读取集合校验单元,用于从状态读取集合中获取第一状态数据的第一存在性证明,基于第一状态快照,对第一存在性证明进行校验,得到第一证明校验结果;第一状态数据为全量节点在目标区块中的默克尔帕特里夏树上读取到的与待验证交易相关联的状态数据;
[0023]写入集合校验单元,用于从状态写入集合中获取第二状态数据的可修改证明,基于第一状态快照,对可修改证明进行校验,得到第二证明校验结果;第二状态数据为全量节
点在执行交易业务的过程中记录到的模拟写入目标区块的下一区块的状态数据;
[0024]校验结果确定单元,用于基于第一证明校验结果和第二证明校验结果,确定待验证交易的第一校验结果。
[0025]其中,该读取集合校验单元包括:
[0026]证明获取子单元,用于从状态读取集合中获取第一状态数据的第一存在性证明;第一存在性证明为全量节点从目标区块中的默克尔帕特里夏树中,获取到的与第一状态数据相关联的节点路径;节点路径包含叶子节点和树根节点;叶子节点用于存储第一状态数据;
[0027]初始比对结果确定子单元,用于基于节点路径所指示的第一节点索引关系,将叶子节点作为子节点,且将叶子节点的上一节点作为子节点对应的父节点,将子节点的子节点哈希值与父节点的哈希指针进行比对,得到初始比对结果;
[0028]第一比对结果确定子单元,用于若初始比对结果指示比对成功,则基于第一节点索引关系更新子节点以及父节点,直到更新后的父节点为树根节点时,得到第一存在性证明的第一比对结果;
[0029]第二比对结果确定子单元,用于将树根节点的树根哈希值与第一状态快照进行比对,得到第一存在性证明的第二比对结果;
[0030]校验结果确定子单元,用于基于第一比对结果和第二比对结果,得到第一证明校验结果。
[0031]其中,该合法性校验模块包括:
[003本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种交易验证方法,其特征在于,包括:区块链网络中的全量节点在获取到与所述区块链网络中的用户节点相关联的待验证交易时,在所述全量节点的全量区块链上,将具有最大生成时间戳的区块作为目标区块,且将所述目标区块的区块头作为第一区块头;所述用户节点与所述全量节点部署在不同的计算机设备上;所述全量节点获取所述目标区块中的默克尔帕特里夏树,基于所述目标区块中的默克尔帕特里夏树,执行所述待验证交易对应的交易业务,得到所述交易业务对应的初始交易执行结果、状态读取集合以及状态写入集合;所述全量节点获取所述第一区块头中的区块标识,将所述初始交易执行结果、所述状态读取集合、所述状态写入集合以及所述区块标识,作为所述待验证交易对应的交易验证信息,且将所述交易验证信息发送至所述用户节点,以使所述用户节点将所述待验证交易以及所述交易验证信息发送至所述区块链网络中的出块节点;所述出块节点为所述区块链网络中的轻量节点;所述出块节点在所述轻量节点的区块头链中,查找与所述区块标识相匹配的区块头,将查找到的区块头作为第二区块头,基于所述第二区块头中的第一状态快照,对所述状态读取集合以及所述状态写入集合进行校验,得到所述待验证交易的第一校验结果;所述出块节点在所述第一校验结果指示校验成功时,基于所述状态读取集合执行所述交易业务,得到所述交易业务对应的目标交易执行结果以及待写入状态数据;所述出块节点基于所述初始交易执行结果、所述目标交易执行结果、所述状态写入集合以及所述待写入状态数据,对所述待验证交易进行合法性校验。2.根据权利要求1所述的方法,其特征在于,所述区块链网络中的全量节点在获取到与所述区块链网络中的用户节点相关联的待验证交易时,在所述全量节点的全量区块链上,将具有最大生成时间戳的区块作为目标区块,且将所述目标区块的区块头作为第一区块头,包括:区块链网络中的全量节点接收所述区块链网络中的用户节点发送的待验证交易以及所述待验证交易对应的交易签名信息;所述交易签名信息为所述用户节点基于用户私钥,对所述待验证交易的第一摘要信息进行签名处理后所得到的;所述第一摘要信息为所述用户节点根据获取到的哈希计算规则对所述待验证交易进行哈希计算后所得到的;所述全量节点获取所述用户私钥对应的用户公钥,基于所述用户公钥对所述交易签名信息进行验签,得到所述第一摘要信息,且获取所述哈希计算规则,对所述待验证交易进行哈希计算,得到所述待验证交易的第二摘要信息;所述全量节点将所述第一摘要信息与所述第二摘要信息进行比对,得到验签结果;在所述验签结果指示验签成功时,所述全量节点在所述全量节点的全量区块链上,获取具有最大生成时间戳的区块,将获取到的区块作为目标区块,且将所述目标区块的区块头作为第一区块头。3.根据权利要求2所述的方法,其特征在于,所述全量节点将所述第一摘要信息与所述第二摘要信息进行比对,得到验签结果,包括:所述全量节点将所述第一摘要信息与所述第二摘要信息进行比对;若所述第一摘要信息与所述第二摘要信息不相同,则所述全量节点得到用于指示验签
失败的验签结果;若所述第一摘要信息与所述第二摘要信息相同,则所述全量节点得到用于指示验签成功的验签结果。4.根据权利要求1所述的方法,其特征在于,所述全量节点获取所述目标区块中的默克尔帕特里夏树,基于所述目标区块中的默克尔帕特里夏树,执行所述待验证交易对应的交易业务,得到所述交易业务对应的初始交易执行结果、状态读取集合以及状态写入集合,包括:所述全量节点获取所述目标区块中的默克尔帕特里夏树,将获取到的默克尔帕特里夏树作为待处理树,从所述待处理树中读取与所述待验证交易相关联的状态数据,将读取到的状态数据作为第一状态数据;所述全量节点基于所述第一状态数据,执行所述待验证交易对应的交易业务,得到所述交易业务对应的初始交易执行结果,且在执行所述交易业务的过程中,记录模拟写入所述目标区块的下一区块的状态数据,将记录到的状态数据作为第二状态数据;所述全量节点基于所述待处理树,收集所述第一状态数据的第一存在性证明,基于所述第一存在性证明生成状态读取集合;所述全量节点在将所述第二状态数据插入到所述待处理树之前,获取与所述第二状态数据相关联的关键字符串,基于所述关键字符串获取所述第二状态数据的可修改证明;所述全量节点在将所述第二状态数据插入到所述待处理树之后,获取所述第二状态数据的存在性证明,将所述第二状态数据的存在性证明作为第二存在性证明;所述全量节点基于所述可修改证明和所述第二存在性证明,生成状态写入集合。5.根据权利要求4所述的方法,其特征在于,所述全量节点基于所述待处理树,收集所述第一状态数据的第一存在性证明,基于所述第一存在性证明生成状态读取集合,包括:所述全量节点在所述待处理树中,查找用于存储所述第一状态数据的叶子节点;所述全量节点基于所述待处理树,获取包括所述叶子节点和树根节点的节点路径,将获取到的节点路径作为与所述第一状态数据相关联的节点路径,且将所述节点路径作为所述第一状态数据的第一存在性证明;所述全量节点基于所述第一存在性证明生成状态读取集合。6.根据权利要求4所述的方法,其特征在于,所述待...

【专利技术属性】
技术研发人员:冯浩铭王鹤赵勇陈秋平任鹏陈家宝何立宝屠海涛周水平
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

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

1