一种支付验证方法、支付验证节点、全量节点及存储介质与流程

文档序号:22502226发布日期:2020-10-13 09:36阅读:137来源:国知局
一种支付验证方法、支付验证节点、全量节点及存储介质与流程

本发明涉及通信技术,尤其涉及一种支付验证方法、支付验证节点、全量节点及存储介质。



背景技术:

区块链技术及其应用正在颠覆现有的业务模式。由于区块链本身防篡改和可追溯等特点,各行各业都在积极探索将自身业务在区块链网络中实现,其中包括金融机构,政府部门,传统企业,互联网公司等等。

在比特币系统中,支付验证为交易的确认过程。例如,甲方收到来自乙方的一个通知,乙方声称已经从自身账户中汇款一定数额的钱给甲方,甲方需要确认这笔钱已经在区块链上得到共识,以及具体的确认数,之后,甲方才会执行相应的实际交易。

在实现本发明的过程中,发明人发现现有技术中至少存在如下问题:

简单支付验证(simplifiedpaymentverification,spv)节点只存储区块头信息,并不存储具体的区块信息。在实际支付验证过程中,spv节点会构建布隆过滤器,将布隆过滤器发送给全量节点,由全量节点逐一遍历区块链中的区块的所有交易,获取备选交易以发送给spv节点,进行后续支付验证。然而,随着交易越来越多,区块也越来越多,采用该支付验证方法的效率较低。



技术实现要素:

本发明实施例提供一种支付验证方法、支付验证节点、全量节点及存储介质,在进行支付验证时,支付验证节点可以根据区块头信息中增加的交易哈希组合值,先进行区块的过滤,从而减少了全量节点需要过滤的区块,提高了支付验证的效率。

本发明实施例的技术方案是这样实现的:

第一方面,本发明实施例提供一种支付验证方法,应用与支付验证节点,所述支付验证节点中存储区块链中每个区块的区块头信息,所述区块头信息中包括对应区块中全部哈希值进行按位或运算获得的交易哈希组合值,所述方法包括:

获取目标哈希值,并根据所述目标哈希值和所述交易哈希组合值,对所述区块链进行遍历,确定备选区块列表;

若所述备选区块列表中区块高度数量大于预设备选阈值,根据所述目标哈希值构建布隆过滤器;

将所述布隆过滤器和所述备选区块列表发送至全量节点,并接收所述全量节点根据所述布隆过滤器和所述备选区块列表确定的交易备选列表;

根据所述交易备选列表获取目标交易对应的目标默克尔树,并根据所述目标默克尔树进行支付验证。

在上述方法中,所述根据所述目标哈希值和所述交易哈希组合值,对所述区块链进行区块头遍历,确定备选区块列表,包括:

按照从最高区块向创世区块的遍历顺序,依次将每个所述交易哈希组合值分别与所述目标哈希值进行按位与运算,获得所述区块链中每个区块对应的运算结果;

从所述运算结果中确定大于零的目标运算结果;

获取所述区块链中所述目标运算结果对应的区块的区块高度;

将所述区块高度加入所述备选区块列表。

在上述方法中,所述根据所述交易备选列表获取目标交易对应的目标默克尔树,包括:

从所述交易备选列表中确定所述目标哈希值对应的所述目标交易;

根据所述目标交易确定目标区块高度;

将所述目标区块高度发送至所述全量节点,并接收所述全量节点根据所述目标区块高度获取的所述目标默克尔树。

在上述方法中,所述确定备选区块列表之后,所述方法还包括:

若所述备选区块列表中所述区块高度数量小于或等于所述预设备选阈值,将所述备选区块列表中的区块高度发送给所述全量节点;

接收所述全量节点根据所述备选区块列表中的区块高度获取的所述目标默克尔树,并根据所述目标默克尔树进行支付验证。

第二方面,本发明实施例提供一种支付验证方法,应用于全量节点,所述全量节点中存储区块链,所述方法包括:

接收支付验证节点发送的布隆过滤器和备选区块列表;

根据所述布隆过滤器对所述备选区块列表对应的备选区块进行交易列表遍历,获得交易备选列表;

将所述交易备选列表发送至所述支付验证节点,并接收所述支付验证节点根据所述交易备选列表筛选后确定的目标区块高度;

根据所述目标区块高度获取目标默克尔树;

将所述目标默克尔树发送至所述支付验证节点,以供所述支付验证节点进行支付验证。

在上述方法中,所述根据所述布隆过滤器对所述备选区块列表对应的备选区块进行交易列表遍历,获得交易备选列表,包括:

根据所述备选区块列表中的区块高度,从所述区块链中确定所述备选区块;

获取所述备选区块中的交易列表;

根据所述布隆过滤器对所述交易列表中每个交易分别进行匹配,获得所述交易列表中每个交易对应的匹配结果;

从所述匹配结果中确定匹配成功的目标匹配结果;

将所述目标匹配结果对应的交易加入所述交易备选列表。

在上述方法中,所述将所述目标默克尔树发送至所述支付验证节点,以供所述支付验证节点进行支付验证之前,所述方法还包括:

接收所述支付验证节点发送的所述备选区块列表中的区块高度;

从所述区块链中确定所述备选区块列表中的区块高度的匹配区块,并从所述匹配区块中获取所述目标默克尔树。

第三方面,本发明实施例提供一种支付验证节点,所述支付验证节点包括:第一处理器、第一存储器和第一通信总线;

所述第一通信总线用于实现所述第一处理器和所述第一存储器之间的连接通信;

所述第一存储器中存储区块链中每个区块的区块头信息,所述区块头信息中包括对应区块中全部哈希值进行按位或运算获得的交易哈希组合值;

所述第一处理器用于执行所述第一存储器中存储的第一支付验证程序,以实现以下步骤:

获取目标哈希值,并根据所述目标哈希值和所述交易哈希组合值,对所述区块链进行遍历,确定备选区块列表;若所述备选区块列表中区块高度数量大于预设备选阈值,根据所述目标哈希值构建布隆过滤器;将所述布隆过滤器和所述备选区块列表发送至全量节点,并接收所述全量节点根据所述布隆过滤器和所述备选区块列表确定的交易备选列表;根据所述交易备选列表获取目标交易对应的目标默克尔树,并根据所述目标默克尔树进行支付验证。

在上述支付验证节点中,所述第一处理器,具体用于执行所述第一支付验证程序,以实现以下步骤:

按照从最高区块向创世区块的遍历顺序,依次将每个所述交易哈希组合值分别与所述目标哈希值进行按位与运算,获得所述区块链中每个区块对应的运算结果;从所述运算结果中确定大于零的目标运算结果;获取所述区块链中所述目标运算结果对应的区块的区块高度;将所述区块高度加入所述备选区块列表。

在上述支付验证节点中,所述第一处理器,具体用于执行所述第一支付验证程序,以实现以下步骤:

从所述交易备选列表中确定所述目标哈希值对应的所述目标交易;根据所述目标交易确定目标区块高度;将所述目标区块高度发送至所述全量节点,并接收所述全量节点根据所述目标区块高度获取的所述目标默克尔树。

在上述支付验证节点中,所述第一处理器在所述确定备选区块列表之后,还用于执行所述第一支付验证程序,以实现以下步骤:

若所述备选区块列表中所述区块高度数量小于或等于所述预设备选阈值,将所述备选区块列表中的区块高度发送给所述全量节点;接收所述全量节点根据所述备选区块列表中的区块高度获取的所述目标默克尔树;根据所述目标默克尔树进行支付验证。

第四方面,本发明实施例提供一种全量节点,所述全量节点包括:第二处理器、第二存储器和第二通信总线;

所述第二通信总线用于实现所述第二处理器和所述第二存储器之间的连接通信;

所述第二存储器中存储区块链;

所述第二处理器用于执行所述第二存储器中存储的第二支付验证程序,以实现以下步骤:

接收支付验证节点发送的布隆过滤器和备选区块列表;根据所述布隆过滤器对所述备选区块列表对应的备选区块进行交易列表遍历,获得交易备选列表;将所述交易备选列表发送至所述支付验证节点,并接收所述支付验证节点根据所述交易备选列表筛选后确定的目标区块高度;根据所述目标区块高度获取目标默克尔树,并将所述目标默克尔树发送至所述支付验证节点,以供所述支付验证节点进行支付验证。

在上述全量节点中,所述第二处理器具体用于执行所述第二支付验证程序,以实现以下步骤:

根据所述备选区块列表中的区块高度,从所述区块链中确定所述备选区块;获取所述备选区块中的交易列表;根据所述布隆过滤器对所述交易列表中每个交易分别进行匹配,获得所述交易列表中每个交易对应的匹配结果;若从所述匹配结果中确定匹配成功的目标匹配结果,将所述目标匹配结果对应的交易加入所述交易备选列表。

在上述全量节点中,所述第二处理器将所述目标默克尔树发送至所述支付验证节点,以供所述支付验证节点进行支付验证之前,还用于执行所述第二支付验证程序,以实现以下步骤:

接收所述支付验证节点发送的所述备选区块列表中的区块高度;从所述区块链中确定所述备选区块列表中的区块高度对应的匹配区块,并从所述匹配区块中获取所述目标默克尔树。

第五方面,本发明实施例提供了一种存储介质,应用于支付验证节点,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可以被一个或者多个处理器执行,以实现上述应用于支付验证节点的支付验证方法。

第六方面,本发明实施例提供了一种存储介质,应用于全量节点,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可以被一个或者多个处理器执行,以实现上述应用于全量节点的支付验证方法。

由此可见,在本发明实施例的支付验证节点中存储区块链中每个区块的区块头信息,区块头信息中包括对应区块中全部哈希值进行按位或运算获得的交易哈希组合值,支付验证节点获取目标哈希值,并根据目标哈希值和交易哈希组合值,对区块链进行遍历,确定备选区块列表;若备选区块列表中区块高度数量大于预设备选阈值,根据目标哈希值构建布隆过滤器;将布隆过滤器和备选区块列表发送至全量节点,并接收全量节点根据布隆过滤器和备选区块列表确定的交易备选列表;根据交易备选列表目标交易对应的目标默克尔树,并根据目标默克尔树进行支付验证。也就是说,本发明实施例提供的技术方案,在进行支付验证时,支付验证节点可以根据区块头信息中增加的交易哈希组合值,先进行区块的过滤,从而减少了全量节点需要过滤的区块,提高了支付验证的效率。

应用本发明实施例实现以下有益效果:

因为支付验证节点中存储区块链中每个区块的区块头信息,区块头信息中包括对应区块中全部哈希值进行按位或运算获得的交易哈希组合值,在进行支付验证时,支付验证节点可以根据区块头信息中增加的交易哈希组合值,先进行区块的过滤,从而减少了全量节点需要过滤的区块,提高了支付验证的效率。

附图说明

图1本发明实施例提供的一种支付验证方法的流程示意图一;

图2为本发明实施例提供的一种区块头信息的组成示意图;

图3为本发明实施例提供的一种支付验证方法的流程示意图二;

图4为本发明实施例提供的一种支付验证方法的流程示意图三;

图5为本发明实施例提供的一种支付验证方法的流程示意图四;

图6a为本发明实施例提供的一种示例性的支付验证节点和全量节点的交互示意图一;

图6b为本发明实施例提供的一种示例性的支付验证节点和全量节点的交互示意图二;

图7为本发明实施例提供的一种支付验证节点的结构示意图;

图8为本发明实施例提供的一种全量节点的结构示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。

对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。

1)交易(transaction),等同于计算机术语“事务”,包括三种不同的交易类型:部署(deploy),调用(invoke)和查询(query)。部署交易用于向区块链网络的节点安装指定的链码,调用和查询类型的交易用于调用部署号的链码,以实现对账本中的目标账户的相关数据的操作,包括增、查、改的操作修改账户中的键值(key-value)对形式的数据,或者在账本中增加新的账户,并非单指商业语境中的交易,鉴于在区块链技术中约定俗成地使用了“交易”这一术语,本发明实施例遵循了这一习惯。

2)区块(block),记录一段时间内交易所更新的账本数据的数据结构,被标记上时间戳和之前一个区块的独特标记(例如数字指纹),区块经过区块链网络中节点的共识验证后,会被追加到区块链的末尾成为新的区块。

3)区块链(blockchain),区块以顺序相连的方式组合成的一种链式数据结构,在每个区块中引用前一个区块或者其子集的哈希值,从而以密码学的方式保证所记录交易的不可篡改和不可伪造。

4)区块链网络,通过共识的方式将新区块纳入区块链的一系列的、无中心的节点的集合。

实施例一

本发明实施例提供了一种支付验证方法,应用于支付验证节点,该支付验证节点中存储区块链中每个区块的区块头信息,区块头信息中包括对应区块中全部哈希值进行按位或运算获得的交易哈希组合值。图1为本发明实施例提供的一种支付验证方法的流程示意图一。如图1所示,主要包括如下步骤:

s101、获取目标哈希值,并根据目标哈希值和交易哈希组合值,对区块链进行遍历,确定备选区块列表。

在本发明的实施例中,支付验证节点可以先获取目标哈希值,并根据目标哈希值和交易哈希组合值,对区块链进行区块头遍历,确定备选区块列表。

需要说明的是,在本发明的实施例中,目标哈希值即为需要进行支付验证的目标交易的哈希值,具体的目标哈希值本发明实施例不作限定。

需要说明的是,在本发明的实施例中,支付验证节点中仅存储区块链中每个区块的区块头信息,此外,还在区块链的每个区块头信息中增加了交易哈希组合值,具体为对应区块中全部哈希值进行按位或运算所获得的值。在区块链的每个区块中包含多个交易,其中,每个交易对应一个哈希值,这些哈希值组成了对应区块中的全部哈希值。按位或运算即将参与运算的哈希值各自对应的二进位相或。

示例性的,在本发明的实施例中,区块链中包括区块a,区块a中包括了交易1和交易2,其中,交易1对应哈希值1,交易2对应哈希值2,因此,将哈希值1和哈希值2按位或运算,从而得到区块a对应的交易哈希组合值,该交易哈希组合值具体存储在区块a的区块头中。

图2为本发明实施例提供的一种区块头信息的组成示意图。如图2所示,在本发明的实施例中,支付验证节点中存储的区块链中每个区块的区块头信息,不仅包括了现有的相关信息,即版本、前置哈希值、默克尔根、时间戳、难度目标和随机数,还增加了交易哈希组合值。

具体的,在本发明的实施例中,支付验证节点根据目标哈希值和交易哈希组合值,对区块链进行区块头遍历,确定备选区块列表,包括:按照从最高区块向创世区块的遍历顺序,依次将每个交易哈希组合值分别与目标哈希值进行按位与运算,获得区块链中每个区块对应的运算结果;若运算结果大于零,将区块链中对应区块的区块高度加入备选区块列表。

需要说明的是,在本发明的实施例中,最高区块为区块链中相连的最后一个区块,即最高区块不存在与其相连的下一个区块,只存在与其相连的上一个区块。创世区块为区块链中相连的第一个区块,最早构建的区块,即创世区块不存在与其相连的上一个区块,只存在与其相连的下一个区块。支付验证节点按照从最高区块向创世区块的遍历顺序进行遍历,也就是先将最高区块的区块头信息中的交易哈希组合值与目标哈希值进行按位与运算,获得最高区块对应的运算结果,之后,将与最高区块相连的上一个区块的区块头信息中的交易哈希组合值与目标哈希值进行按位与运算,获得与最高区块相连的上一个区块对应的运算结果,依次向上一个区块进行按位与运算,最后一个,将创世区块的区块头信息中的交易哈希组合值与目标哈希组合值进行按位与运算,获得创世区块对应的运算结果。

可以理解的是,在本发明的实施例中,支付验证节点将每个区块的区块头信息中的交易哈希组合值分别与目标哈希值进行按位与运算,即将每个交易哈希组合值和目标哈希值分别对应的二进位相与。

示例性的,在本发明的实施例中,区块链中包括了区块b,区块b的区块头信息中包括了区块b对应的交易哈希组合值b,目标哈希值为n,支付验证节点将交易哈希组合值b与目标哈希组合值n进行二进位相与,从而获得区块b对应的运算结果。

需要说明的是,在本发明的实施例中,支付验证节点在获取区块链中每个区块对应的运算结果之后,将运算结果中大于零的结果确定为目标运算结果,即只要区块链中某个区块对应的运算结果大于零,就将该运算结果确定为目标运算结果。进一步的,由于支付验证节点自身存储了区块链中每个区块的区块头信息,具体可以按照区块链的连接顺序进行存储的,因此,可以获知区块链中每个区块的位置,即获知每个区块的区块高度,因此,支付验证节点可以直接根据目标运算结果获取区块链中对应的区块的区块高度,之后,将获取的区块高度加入备选区块列表。

示例性的,在本发明的实施例中,区块链中包括m个区块,分别为从创世区块到最高区块依次为区块1、区块2,……,区块m,即创世区块为区块1,最高区块为区块m。支付验证节点获得每个区块对应的运算结果,其中,区块2对应的运算结果大于零,即区块2对应的运算结果为目标运算结果,因此,支付验证节点获取区块链中区块2的区块高度,具体的,支付验证节点可以获知区块2在区块链中的位置为第二个,该位置即为区块2的区块高度,并进一步将区块2的区块高度加入备选区块列表。

可以理解的是,在现有技术中,支付验证节点无法根据目标哈希值对区块链中的区块进行筛选,排除掉与需要进行支付验证的目标交易的无关的区块,必须由全量节点依次对区块链中的每个区块进行具体筛选,而在本发明的实施例中,由于支付验证节点中存储的区块链中每个区块的区块头信息包括对应区块的交易哈希组合值,支付验证节点可以根据交易哈希组合值和目标哈希值,先进行一次区块的筛选,从而减少了全量节点需要过滤的区块。

s102、若备选区块列表中区块高度数量大于预设备选阈值,根据目标哈希值构建布隆过滤器。

在本发明的实施例中,支付验证节点在确定备选区块列表之后,可以统计备选区块列表中的区块高度数量,若数量较多,即区块高度数量大于预设备选阈值,则根据目标哈希值构建布隆过滤器。

需要说明的是,在本发明的实施例中,支付验证节点根据目标哈希值构建布隆过滤器,实际上就是确定关于目标哈希值对应的目标交易的相关筛选条件。

需要说明的是,在本发明的实施例中,预设备选阈值可以根据实际支付验证需求预先设置在支付验证节点中,具体的预设备选阈值本发明实施例不作限定。

示例性的,在本发明的实施例中,支付验证节点确定的备选区块列表中包括了5个区块高度,即区块高度数量为5,预设备选阈值为3,因此,支付验证节点根据目标哈希值构建布隆过滤器。

s103、将布隆过滤器和备选区块列表发送至全量节点,并接收全量节点根据布隆过滤器和备选区块列表确定的交易备选列表。

在本发明的实施例中,支付验证节点在构建布隆过滤器之后,可以将布隆过滤器和备选区块列表发送至全量节点,从而接收全量节点根据布隆过滤器和备选区块列表确定的交易备选列表。

需要说明的是,在本发明的实施例中,支付验证节点周围的全量节点可以为多个,因此,支付验证节点可以将布隆过滤器和备选区块列表分别发送给多个全量节点,相应的,支付验证节点可以分别接收到多个全量节点中每个全量节点确定的交易备选列表。

需要说明的是,在本发明的实施例中,支付验证节点中仅存储了区块链中每个区块的区块头信息,而具体的交易列表是存储在每个区块的区块体中,因此,支付验证节点需要将备选区块列表和布隆过滤器发送给周围的全量节点,全量节点中存储了完整的区块链,包括每一个区块的完整数据,从而可以先根据备选区块列表中的每个区块高度,在区块链中查找对应的区块,获取区块的交易列表,并进一步根据布隆过滤器对交易列表中的每个交易进行匹配,将匹配成功的交易放入交易备选列表,最后,将交易备选列表发送给支付验证节点。

s104、根据交易备选列表获取目标交易对应的目标默克尔树,并根据目标默克尔树进行支付验证。

在本发明的实施例中,支付验证节点在接收到交易备选列表之后,可以根据交易备选列表获取目标交易对应的目标默克尔树,从而根据目标默克尔树进行支付验证。

具体的,在本发明的实施例中,支付验证节点根据交易备选列表获取目标交易对应的目标默克尔树,包括:从交易备选列表中确定目标哈希值对应的目标交易;根据目标交易确定目标区块高度;将目标区块高度发送至全量节点,并接收全量节点根据目标区块高度获取的目标默克尔树。

需要说明的是,在本发明的实施例中,支付验证节点接收到交易备选列表中包括了与布隆过滤器匹配的所有交易,但是,布隆过滤器仅仅是一个关于目标哈希值的较大的匹配条件,匹配出的交易并不完全与目标哈希值对应,因此,支付验证节点遍历交易备选列表中的每个交易,从交易备选列表中确定目标哈希值对应的目标交易,即真正符合目标哈希值的交易。

需要说明的是,在本发明的实施例中,支付验证节点可以将布隆过滤器和备选区块列表分别发送给多个全量节点,相应的,支付验证节点也可以接收到多个交易备选列表,由于全量节点根据隆过滤器和备选区块列表确定交易备选列表的过程完全相同,理论上支付验证节点接收到的多个交易备选列表应该是完全相同的,但是,仍然可能存在不可预见的偏差,即接收到的多个交易备选列表存在部分不同的情况,此时,可以选取重复率最高的交易备选列表,从其中确定目标哈希值对应的目标交易,以保证验证的准确性。

需要说明的是,在本发明的实施例中,支付验证节点在确定目标交易之后,就可以进一步根据目标交易确定目标区块高度,目标区块高度即区块链中存储目标交易的区块的区块高度,全量节点在确定备选交易列表时,将匹配的交易加入备选交易列表中,还同时指示了存储交易的区块的区块高度,因此,支付验证节点可以直接根据目标交易确定目标区块高度。

需要说明的是,在本发明的实施例中,支付验证节点在确定目标区块高度之后,将目标区块高度发送至全量节点,全量节点可以根据目标区块高度从区块链中查找对应的目标区块,并进一步在目标区块中获取目标默克尔树。

可以理解的是,在本发明的实施例中,支付验证节点中仅存储了区块链中每个区块的区块头信息,而具体的默克尔树是存储在每个区块的区块体中,因此,支付验证节点需要将目标区块高度发送给周围的全量节点,全量节点中存储了完整的区块链,包括每一个区块的完整数据,从而可以先根据目标区块高度,在区块链中查找对应的目标区块,获取目标区块的去块体中存储的目标默克尔树,最后,将目标默克尔树发送给支付验证节点,支付验证节点即可接收到目标默克尔树。

需要说明的是,在本发明的实施例中,目标默克尔树包括了目标交易的相关信息,因此,支付验证节点可以根据目标默克尔树进行后续支付验证,例如,进行逻辑验证等。具体的后续支付验证本发明实施例不作限定。

需要说明的是,在本发明的实施例中,在上述步骤s101中,支付验证节点确定备选区块列表之后,若备选区块列表中区块高度数量小于或等于预设备选阈值,支付验证节点还可以执行其它步骤。图3为本发明实施例提供的一种支付验证方法的流程示意图二。如图3所示,步骤s101之后,还包括如下步骤:

s301、若备选区块列表中区块高度数量小于或等于预设备选阈值,将备选区块列表中的区块高度发送给全量节点。

在本发明的实施例中,支付验证节点在确定备选区块列表之后,若备选区块列表中区块高度数量小于或等于预设备选阈值,可以将备选区块列表中的区块高度发送给全量节点。

可以理解的是,在本发明的实施例中,备选区块列表中区块高度数量小于或等于预设备选阈值,即区块链中只有较少的区块与目标哈希值相关,因此,可以直接将备选区块列表中的区块高度发送给全量节点。

具体的,在本发明的实施例中,支付验证节点可以一次发送备选区块列表中的一个区块高度,当然,也可以一次将备选区块列表中的区块高度全部发送给全量节点。具体的发送方式本发明实施例不作限定。

s302、接收全量节点根据备选区块列表中的区块高度获取的目标默克尔树,并根据目标默克尔树进行支付验证。

在本发明的实施例中,支付验证节点将备选区块列表中的区块高度发送给全量节点之后,全量节点将根据接收到备选区块列表中的区块高度获取目标默克尔树,从而将目标默克尔树发送给支付验证节点,支付验证节点即可接收到目标默克尔树,并进一步根据目标默克尔树进行支付验证。

需要说明的是,在本发明的实施例中,如果在步骤s301中支付验证节点是一次发送一个备选区块列表中的区块高度,相应的,全量节点也是一次接收到备选区块列表中的一个区块高度,此时,在全量节点接收到备选区块列表中的一个区块高度的情况下,全量节点将根据当前接收到的区块高度从区块链中查找对应的匹配区块,并从匹配区块中获取目标默克尔树,之后,在全量节点接收到备选区块列表中的下一个区块高度的情况下,全量节点将根据下一个区块高度从区块链中查找对应的匹配区块,并从下一个区块高度对应的匹配区块中获取目标默克尔树,即依次循环获得目标默克尔树。当然,如果在步骤s301中支付验证节点是一次将备选区块列表中的区块高度全部发送给全量节点,也可以理解为支付验证节点将备选区块列表直接发送给全量节点,此时,全量节点将根据备选区块列表中的区块高度从区块链中查找对应的匹配区块,即查找备选区块列表中的每一个区块高度分别对应的匹配区块,并从这些匹配区块中分别获取目标默克尔树。支付验证节点在接收到目标默克尔树之后,即可根据目标默克尔树进行后续支付验证过程,例如,逻辑验证等。

本发明实施例提供了一种支付验证方法,应用于支付验证节点,支付验证节点中存储区块链中每个区块的区块头信息,区块头信息中包括对应区块中全部哈希值进行按位或运算获得的交易哈希组合值,支付验证节点获取目标哈希值,并根据目标哈希值和交易哈希组合值,对区块链进行遍历,确定备选区块列表;若备选区块列表中区块高度数量大于预设备选阈值,根据目标哈希值构建布隆过滤器;将布隆过滤器和备选区块列表发送至全量节点,并接收全量节点根据布隆过滤器和备选区块列表确定的交易备选列表;根据交易备选列表目标交易对应的目标默克尔树,并根据目标默克尔树进行支付验证。也就是说,本发明实施例提供的技术方案,在进行支付验证时,支付验证节点可以根据区块头信息中增加的交易哈希组合值,先进行区块的过滤,从而减少了全量节点需要过滤的区块,提高了支付验证的效率。

实施例二

本发明另一实施例提供了一种支付验证方法,应用于全量节点,全量节点中存储区块链。图4为本发明实施例提供的一种支付验证方法的流程示意图三。如图4所示,主要包括以下步骤:

s401、接收支付验证节点发送的布隆过滤器和备选区块列表。

在本发明的实施例中,全量节点可以接收到支付验证节点发送的布隆过滤器和备选区块列表。

需要说明的是,在本发明的实施例中,支付验证节点可以先对区块链中的每个区块根据对应区块头信息中的交易哈希组合值进行过滤,确定备选区块列表之后,若备选区块列表中区块高度数量大于预设备选阈值,将布隆过滤器和备选区块列表发送给全量节点,此时,全量节点即可接收到布隆过滤器和备选区块列表。

需要说明的是,在本发明的实施例中,全量节点中存储有完整的区块链,也就是存储有区块链中每个区块的完整信息。

需要说明的是,在本发明的实施例中,全量节点可以为多个,即多个全量节点中的每一个全量节点都可以接收到支付验证节点发送的布隆过滤器,但是每个全量节点均是执行同样的后续步骤。

需要说明的是,在现有技术中,在进行支付验证的过程中,支付验证节点仅向全量节点发送根据目标哈希值构建的布隆过滤器,全量节点根据布隆过滤器匹配的对象为区块链中每个区块包括的交易列表中的交易,而在本发明的实施例中,全量节点接收到布隆过滤器和备选区块列表,根据布隆过滤器匹配的对象为备选区块列表中的区块高度所对应的区块,因此,减少了全量节点需要过滤的区块。

s402、根据布隆过滤器对备选区块列表对应的备选区块进行交易列表遍历,获得交易备选列表。

在本发明的实施例中,全量节点接收到布隆过滤器和备选区块列表之后,根据布隆过滤器对备选区块列表对应的备选区块进行交易列表遍历,获得交易备选列表。

具体的,在本发明的实施例中,全量节点根据布隆过滤器对备选区块列表对应的备选区块进行交易列表遍历,获得交易备选列表,包括:根据备选区块列表中的区块高度,从区块链中确定备选区块;获取备选区块中的交易列表;根据布隆过滤器对交易列表中每个交易分别进行匹配,获得交易列表中每个交易对应的匹配结果;从匹配结果中确定匹配成功的目标匹配结果;将目标匹配结果对应的交易加入交易备选列表。

需要说明的是,在本发明的实施例中,备选区块列表中包括了支付验证节点确定的多个区块高度,每个区块高度表示一个区块在区块链中的位置,全量节点根据备选区块列表中的区块高度,可以一一从区块链中查找到相应的区块,将这些区块确定为备选区块。

示例性的,在本发明的实施例中,备选区块列表中包括5个区块高度,分别为区块高度1、区块高度2、区块高度3、区块高度4和区块高度5。全量节点在区块链中查找到区块高度1对应的区块为区块1,区块高度2对应的区块为区块2,区块高度3对应的区块为区块3,区块高度4对应的区块为区块4,区块高度5对应的区块为区块5,因此,区块1、区块2、区块3、区块4和区块5均为备选区块。

需要说明的是,在本发明的实施例中,由于全量节点中存储了完整的区块链,因此,全量节点在确定备选区块之后,可以直接从备选区块列表中获取交易列表,进一步的,根据布隆过滤器对交易列表中的每个交易进行匹配,以获得每个交易对应的匹配结果。

需要说明的是,在本发明的实施例中,匹配成功的匹配结果为目标匹配结果,全量节点将目标匹配结果对应的交易加入交易备选列表。

示例性的,在本发明的实施例中,区块链中包括区块q,区块q为全量节点确定的一个备选区块,全量节点获取区块q中的交易列表q,交易列表中具体包括:交易1、交易2、交易3、交易4和交易5。全量节点根据布隆过滤器对将交易1、交易2、交易3、交易4和交易5分别进行匹配,获得交易1对应的匹配结果为匹配失败、交易2对应的匹配结果为匹配成功、交易3对应的匹配结果为匹配失败、交易4对应的匹配结果为匹配失败和交易5对应的匹配结果为匹配成功,因此,将交易2和交易5加入交易备选列表。

s403、将交易备选列表发送至支付验证节点,并接收支付验证节点根据交易备选列表筛选后确定的目标区块高度。

在本发明的实施例中,全量节点在获得交易备选列表之后,将交易备选列表发送至支付验证节点,支付验证节点将根据交易备选列表进行筛选,获得目标区块高度,并将目标区块高度传输至全量节点,全量节点即可接收到支付验证节点根据交易备选列表筛选后确定的目标区块高度。

需要说明的是,在本发明的实施例中,支付验证节点可以从交易备选列表中确定目标哈希值对应的目标交易,之后,再根据目标交易确定目标区块高度,具体的支付验证节点确定目标区块高度的过程在实施例一中已经详述,在此不再赘述。

s404、根据目标区块高度获取目标默克尔树。

在本发明的实施例中,全量节点在接收到目标区块高度之后,即可获取目标默克尔树,并将目标默克尔树发送至支付验证节点,以供支付验证节点进行支付验证。

需要说明的是,在本发明的实施例中,全量节点中存储了完整的区块链,因此,全量节点根据目标区块高度,即表征区块在区块链中的位置信息,即可从区块链查找到对应的目标区块,并从目标区块中直接获取目标默克尔树。

示例性的,在本发明的实施例中,目标区块高度为s,全量节点即可在区块链中查找位置为s的区块,该区块即为目标区块,并进一步直接从该区块中获取其中存储的默克尔树,该默克尔树即为目标默克尔树。

s405、将目标默克尔树发送至支付验证节点,以供支付验证节点进行支付验证。

在本发明的实施例中,全量节点在获取目标默克尔树之后,即可将目标默克尔树发送至支付验证节点,支付验证节点在接收到目标默克尔树之后,即可根据目标默克尔树进行后续支付验证过程,例如,逻辑验证等。

需要说明的是,在本发明的实施例中,在上述步骤s405之前,全量节点还存在另一种方式获取目标默克尔树。图5为本发明实施例提供的一种支付验证方法的流程示意图四。如图5所示,步骤s405之前,还可以包括如下步骤:

s501、接收支付验证节点发送的备选区块列表中的区块高度。

在本发明的实施例中,全量节点还可以接收支付验证节点发送的备选区块列表中的区块高度。

需要说明的是,在本发明的实施例中,支付验证节点可以先对区块链中的每个区块根据对应区块头信息中的交易哈希组合值进行过滤,确定备选区块列表之后,若备选区块列表中区块高度数量小于或等于预设备选阈值,将备选区块列表中的区块高度发送给全量节点,此时,全量节点即可接收到备选区块列表中的区块高度。

具体的,在本发明的实施例中,支付验证节点可以一次发送备选区块列表中的一个区块高度,当然,也可以一次将备选区块列表中的区块高度全部发送给全量节点,因此,全量节点可以依次接收不同的区块高度,也可以依次直接接收到备选区块列表中的全部区块高度。具体的接收方式本发明实施例不作限定。

s502、从区块链中确定备选区块列表中的区块高度的匹配区块,并从匹配区块中获取目标默克尔树。

在本发明的实施例中,全量节点在接收到备选区块列表中的区块高度之后,可以从区块链中确定备选区块列表中的区块高度的匹配区块,并从匹配区块中获取目标默克尔树。

需要说明的是,在本发明的实施例中,全量节点中存储有完整的区块链,区块高度表征一个区块在区块链中的位置,因此,全量节点根据接收到的备选区块列表中的区块高度,可以从区块链中查找对应的区块,将查找到的区块确定为匹配区块。

需要说明的是,在本发明的实施例中,全量节点中存储有完整的区块链,也就是存储了每个区块的具体信息,因此,全量节点在确定匹配区块之后,可以直接从匹配区块中获取存储的默克尔树,将获取的默克尔树确定为目标默克尔树。

本发明实施例提供了一种支付验证方法,应用于全量节点,全量节点中存储区块链,全量节点接收支付验证节点发送的布隆过滤器和备选区块列表;根据布隆过滤器对备选区块列表对应的备选区块进行交易列表遍历,获得交易备选列表;将交易备选列表发送至支付验证节点,并接收支付验证节点根据交易备选列表筛选后确定的目标区块高度;根据目标区块高度获取目标默克尔树;将目标默克尔树发送至支付验证节点,以供支付验证节点进行支付验证。也就是说,本发明实施例提供的技术方案,在进行支付验证时,全量节点不需要对区块链中每个区块进行交易列表遍历,仅对支付验证节点发送的备选区块列表对应的备选区块进行交易列表遍历,从而减少了全量节点需要过滤的区块,提高了支付验证的效率。

实施例三

图6a为本发明实施例提供的一种示例性的支付验证节点和全量节点的交互示意图一。如图6a所示,支付验证节点和全量节点实现支付验证的具体步骤如下:

s601、支付验证节点获取目标哈希值,并根据目标哈希值和交易哈希组合值,对区块链进行遍历,确定备选区块列表。

需要说明的是,在本发明的实施例中,支付验证节点中仅存储区块链中每个区块的区块头信息,此外,还在区块链的每个区块头信息中增加了交易哈希组合值,具体为对应区块中全部哈希值进行按位或运算所获得的值。在区块链的每个区块中包含多个交易,其中,每个交易对应一个哈希值,这些哈希值组成了对应区块中的全部哈希值。按位或运算即将参与运算的哈希值各自对应的二进位相或。

具体的,在本发明的实施例中,支付验证节点将每个交易哈希组合值分别与目标哈希值进行按位与运算,即将每个交易哈希组合值和目标哈希值分别对应的二进位相与,将运算结果大于零的目标运算结果对应的区块的区块高度加入备选区块列表。

s602、若备选区块列表中区块高度数量大于预设备选阈值,支付验证节点根据目标哈希值构建布隆过滤器。

可以理解的是,在本发明的实施例中,支付验证节点在确定备选区块列表之后,可以统计备选区块列表中的区块高度数量,若数量较多,即区块高度数量大于预设备选阈值,则根据目标哈希值构建布隆过滤器。

s603、支付验证节点将布隆过滤器和备选区块列表发送至全量节点。

s604、全量节点根据布隆过滤器对备选区块列表对应的备选区块进行交易列表遍历,获得交易备选列表。

具体的,在本发明的实施例中,全量节点根据布隆过滤器对备选区块列表对应的备选区块进行交易列表遍历,获得交易备选列表,包括:根据备选区块列表中的区块高度,从区块链中确定备选区块;获取备选区块中的交易列表;根据布隆过滤器对交易列表中每个交易分别进行匹配,获得交易列表中每个交易对应的匹配结果;从匹配结果中确定匹配成功的目标匹配结果;将目标匹配结果对应的交易加入交易备选列表。

s605、全量节点将交易备选列表发送至支付验证节点。

s606、支付验证节点从交易备选列表中确定目标哈希值对应的目标交易。

需要说明的是,在本发明的实施例中,支付验证节点接收到交易备选列表中包括了与布隆过滤器匹配的所有交易,但是,布隆过滤器仅仅是一个关于目标哈希值的较大的匹配条件,匹配出的交易并不完全与目标哈希值对应,因此,支付验证节点遍历交易备选列表中的每个交易,从交易备选列表中确定目标哈希值对应的目标交易,即真正符合目标哈希值的交易。

s607、支付验证节点根据目标交易确定目标区块高度。

需要说明的是,在本发明的实施例中,支付验证节点在确定目标交易之后,就可以进一步根据目标交易确定目标区块高度,目标区块高度即区块链中存储目标交易的区块的区块高度,全量节点在确定备选交易列表时,将匹配的交易加入备选交易列表中,还同时指示了存储交易的区块的区块高度,因此,支付验证节点可以直接根据目标交易确定目标区块高度。

s608、支付验证节点将目标区块高度发送至全量节点。

s609、全量节点根据目标区块高度获取目标默克尔树。

可以理解的是,在本发明的实施例中,支付验证节点中仅存储了区块链中每个区块的区块头信息,而具体的默克尔树是存储在每个区块的区块体中,因此,支付验证节点需要将目标区块高度发送给周围的全量节点,全量节点中存储了完整的区块链,包括每一个区块的完整数据,从而可以先根据目标区块高度,在区块链中查找对应的目标区块,获取目标区块的去块体中存储的目标默克尔树。

s610、全量节点将目标默克尔树发送至支付验证节点。

s611、支付验证节点根据目标默克尔树进行支付验证。

需要说明的是,在本发明的实施例中,支付验证节点可以根据目标默克尔树进行支付验证,例如,逻辑验证等,具体的验证过程本发明实施例不作限定。

图6b为本发明实施例提供的一种示例性的支付验证节点和全量节点的交互示意图二。如图6b所示,在本发明的实施例中,步骤s601之后,还包括另一分支步骤,具体步骤如下:

s612、若备选区块列表中区块高度数量小于或等于预设备选阈值,支付验证节点将备选区块列表中的区块高度发送给全量节点。

s613、全量节点从区块链中确定备选区块列表中的区块高度的匹配区块,并从匹配区块中获取目标默克尔树。

需要说明的是,在本发明的实施例中,全量节点中存储有完整的区块链,也就是存储了每个区块的具体信息,因此,全量节点在确定匹配区块之后,可以直接从匹配区块中获取存储的默克尔树,将获取的默克尔树确定为目标默克尔树。

需要说明的是,在本发明的实施例中,步骤s613之后,执行的步骤仍为上述s610和s611。

实施例四

本发明实施例提供了一种支付验证节点,图7为本发明实施例提供的一种支付验证节点的结构示意图。如图7所示,支付验证节点包括:第一处理器701、第一存储器702和第一通信总线703;

所述第一通信总线703用于实现所述第一处理器701和所述第一存储器702之间的连接通信;

所述第一存储器702中存储区块链中每个区块的区块头信息,所述区块头信息中包括对应区块中全部哈希值进行按位或运算获得的交易哈希组合值;

所述第一处理器701用于执行所述第一存储器702中存储的第一支付验证程序,以实现以下步骤:

获取目标哈希值,并根据所述目标哈希值和所述交易哈希组合值,对所述区块链进行遍历,确定备选区块列表;若所述备选区块列表中区块高度数量大于预设备选阈值,根据所述目标哈希值构建布隆过滤器;将所述布隆过滤器和所述备选区块列表发送至全量节点,并接收所述全量节点根据所述布隆过滤器和所述备选区块列表确定的交易备选列表;根据所述交易备选列表获取目标交易对应的目标默克尔树,并根据所述目标默克尔树进行支付验证。

可选的,所述第一处理器701,具体用于执行所述第一支付验证程序,以实现以下步骤:

按照从最高区块向创世区块的遍历顺序,依次将每个所述交易哈希组合值分别与所述目标哈希值进行按位与运算,获得所述区块链中每个区块对应的运算结果;从所述运算结果中确定大于零的目标运算结果;获取所述区块链中所述目标运算结果对应的区块的区块高度;将所述区块高度加入所述备选区块列表。

可选的,所述第一处理器701,具体用于执行所述第一支付验证程序,以实现以下步骤:

从所述交易备选列表中确定所述目标哈希值对应的所述目标交易;根据所述目标交易确定目标区块高度;将所述目标区块高度发送至所述全量节点,并接收所述全量节点根据所述目标区块高度获取的所述目标默克尔树。

可选的,所述第一处理器701在所述确定备选区块列表之后,还用于执行所述第一支付验证程序,以实现以下步骤:

若所述备选区块列表中所述区块高度数量小于或等于所述预设备选阈值,将所述备选区块列表中的区块高度发送给所述全量节点;接收所述全量节点根据所述备选区块列表中的区块高度获取的所述目标默克尔树;根据所述目标默克尔树进行支付验证。

本发明实施例提供了一种支付验证节点,支付验证节点中存储区块链中每个区块的区块头信息,区块头信息中包括对应区块中全部哈希值进行按位或运算获得的交易哈希组合值,支付验证节点获取目标哈希值,并根据目标哈希值和交易哈希组合值,对区块链进行遍历,确定备选区块列表;若备选区块列表中区块高度数量大于预设备选阈值,根据目标哈希值构建布隆过滤器;将布隆过滤器和备选区块列表发送至全量节点,并接收全量节点根据布隆过滤器和备选区块列表确定的交易备选列表;根据交易备选列表目标交易对应的目标默克尔树,并根据目标默克尔树进行支付验证。也就是说,本发明实施例提供的支付验证节点,在进行支付验证时,可以根据区块头信息中增加的交易哈希组合值,先进行区块的过滤,从而减少了全量节点需要过滤的区块,提高了支付验证的效率。

实施例五

本发明实施例提供了一种全量节点,图8为本发明实施例提供的一种全量节点的结构示意图。如图8所示,全量节点包括:第二处理器801、第二存储器802和第二通信总线803;

所述第二通信总线803用于实现所述第二处理器801和所述第二存储器802之间的连接通信;

所述第二存储器802中存储区块链;

所述第二处理器801用于执行所述第二存储器802中存储的第二支付验证程序,以实现以下步骤:

接收支付验证节点发送的布隆过滤器和备选区块列表;根据所述布隆过滤器对所述备选区块列表对应的备选区块进行交易列表遍历,获得交易备选列表;将所述交易备选列表发送至所述支付验证节点,并接收所述支付验证节点根据所述交易备选列表筛选后确定的目标区块高度;根据所述目标区块高度获取目标默克尔树,并将所述目标默克尔树发送至所述支付验证节点,以供所述支付验证节点进行支付验证。

可选的,所述第二处理器801具体用于执行所述第二支付验证程序,以实现以下步骤:

根据所述备选区块列表中的区块高度,从所述区块链中确定所述备选区块;获取所述备选区块中的交易列表;根据所述布隆过滤器对所述交易列表中每个交易分别进行匹配,获得所述交易列表中每个交易对应的匹配结果;若从所述匹配结果中确定匹配成功的目标匹配结果,将所述目标匹配结果对应的交易加入所述交易备选列表。

可选的,所述第二处理器801将所述目标默克尔树发送至所述支付验证节点,以供所述支付验证节点进行支付验证之前,还用于执行所述第二支付验证程序,以实现以下步骤:

接收所述支付验证节点发送的所述备选区块列表中的区块高度;从所述区块链中确定所述备选区块列表中的区块高度对应的匹配区块,并从所述匹配区块中获取所述目标默克尔树。

本发明实施例提供了一种全量节点,全量节点中存储区块链,全量节点接收支付验证节点发送的布隆过滤器和备选区块列表;根据布隆过滤器对备选区块列表对应的备选区块进行交易列表遍历,获得交易备选列表;将交易备选列表发送至支付验证节点,并接收支付验证节点根据交易备选列表筛选后确定的目标区块高度;根据目标区块高度获取目标默克尔树;将目标默克尔树发送至支付验证节点,以供支付验证节点进行支付验证。也就是说,本发明实施例提供的全量节点,在进行支付验证时,不需要对区块链中每个区块进行交易列表遍历,仅对支付验证节点发送的备选区块列表对应的备选区块进行交易列表遍历,从而减少了全量节点需要过滤的区块,提高了支付验证的效率。

综上所述,本发明实施例具有以下有益效果:

在进行支付验证时,支付验证节点可以根据区块头信息中增加的交易哈希组合值,先进行区块的过滤,从而减少了全量节点需要过滤的区块,提高了支付验证的效率。

以上所述,仅为本发明的实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1