技术领域
[0001] 本
发明涉及
区块链技术领域,尤其涉及一种交易验证方法及装置。
背景技术
[0002] 区块链(Block chain)是分布式数据存储、点对点传输、共识机制、加密
算法等计算机技术的新型应用模式。区块链是
比特币的一个重要概念,它本质上是一个去中心化的
数据库,同时作为比特币的底层技术,是一串使用
密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
[0003] 区块链目前的主流共识算法包括拜占庭容错(Byzantine Fault Tolerance,简称“BFT”)。BFT是一类分布式计算领域的容错技术,拜占庭假设是对现实世界的模型化,由于
硬件错误、网络拥塞中断以及遭到恶意攻击等原因,计算机和网络可能出现不可预料的行为。该容错技术被设计用来处理这些异常行为,并满足所要解决的问题的规范要求。图1为
现有技术PBFT算法说明示意图,如图1所示,以BFT中的PBFT算法为例,PBFT算法的核心过程为pre-prepare、prepare和commit三个步骤,这三个步骤是串行执行的,且每一轮需要等上一轮commit之后才会开始,因此,导致现有技术的共识效率低下。
发明内容
[0004] 针对现有技术存在的问题,本发明
实施例提供一种交易验证方法及装置。
[0005] 本发明实施例提供一种交易验证方法,包括:
[0006] 在基于共识算法进行的本轮共识过程中,预测当前提案
节点的下一个提案节点,并获取所述下一个提案节点的打包信息;其中,所述共识算法为可预测提案节点的BFT类共识算法、所述打包信息至少包括所述下一个提案节点的交易集合;
[0007] 在非共识投票阶段根据所述交易集合,对所述下一个提案节点进行交易验证。
[0008] 其中,所述获取所述下一个提案节点的打包信息,包括:
[0009] 控制下一个提案节点广播所述打包信息,以供所述交易验证方法的执行方获取所述打包信息。
[0010] 其中,所述打包信息还包括与所述当前提案节点的提案区块对应的投票信息;相应的,所述获取所述下一个提案节点的打包信息,包括:
[0011] 控制下一个提案节点接收所述提案区块,由所述下一个提案节点校验所述提案区块,根据校验结果确定所述投票信息,并广播携带有所述投票信息和所述交易集合的打包信息,以供所述交易验证方法的执行方获取所述打包信息。
[0012] 其中,在对所述下一个提案节点进行交易验证的步骤之后,所述交易验证方法还包括:
[0013] 对交易验证结果进行缓存,并根据本轮出块结果执行相应的处理动作。
[0014] 其中,所述根据本轮出块结果执行相应的处理动作,包括:
[0015] 若所述本轮出块结果为出块不成功,则将缓存的交易验证结果删除;
[0016] 若所述本轮出块结果为出块成功,则确定所述下一个提案节点为当前提案节点,并继续执行预测当前提案节点的下一个提案节点的步骤,直到完成所有轮次共识。
[0017] 其中,所述非共识投票阶段包括:
[0018] 共识等待阶段或者账本写入等待IO阶段。
[0019] 本发明实施例提供一种交易验证装置,包括:
[0020] 获取单元,用于在基于共识算法进行的本轮共识过程中,预测当前提案节点的下一个提案节点,并获取所述下一个提案节点的打包信息;其中,所述共识算法为可预测提案节点的BFT类共识算法、所述打包信息至少包括所述下一个提案节点的交易集合;
[0021] 交易验证单元,用于在非共识投票阶段根据所述交易集合,对所述下一个提案节点进行交易验证。
[0022] 其中,所述获取单元具体用于:
[0023] 控制下一个提案节点广播所述打包信息,以供所述交易验证方法的执行方获取所述打包信息。
[0024] 本发明实施例提供一种
电子设备,包括:
存储器、处理器及存储在存储器上并可在处理器上运行的
计算机程序,其中,
[0025] 所述处理器执行所述程序时实现如下方法步骤:
[0026] 在基于共识算法进行的本轮共识过程中,预测当前提案节点的下一个提案节点,并获取所述下一个提案节点的打包信息;其中,所述共识算法为可预测提案节点的BFT类共识算法、所述打包信息至少包括所述下一个提案节点的交易集合;
[0027] 在非共识投票阶段根据所述交易集合,对所述下一个提案节点进行交易验证。
[0028] 本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如下方法步骤:
[0029] 在基于共识算法进行的本轮共识过程中,预测当前提案节点的下一个提案节点,并获取所述下一个提案节点的打包信息;其中,所述共识算法为可预测提案节点的BFT类共识算法、所述打包信息至少包括所述下一个提案节点的交易集合;
[0030] 在非共识投票阶段根据所述交易集合,对所述下一个提案节点进行交易验证。
[0031] 本发明实施例提供的交易验证方法及装置,通过在本轮共识过程中,获取当前提案节点的下一个提案节点的打包信息,在非共识投票阶段根据打包信息中下一个提案节点的交易集合,对下一个提案节点进行交易验证,能够提高共识效率。
附图说明
[0032] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0033] 图1为现有技术PBFT算法说明示意图;
[0034] 图2为本发明交易验证方法实施例
流程图;
[0035] 图3为本发明实施例每一轮未更换提案节点的示意图;
[0036] 图4为本发明实施例每一轮更换提案节点的示意图;
[0037] 图5为本发明交易验证装置实施例结构示意图;
[0038] 图6为本发明实施例提供的电子设备实体结构示意图。
具体实施方式
[0039] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0040] 图2为本发明交易验证方法实施例流程图,如图2所示,本发明实施例提供的一种交易验证方法,包括以下步骤:
[0041] S201:在基于共识算法进行的本轮共识过程中,预测当前提案节点的下一个提案节点,并获取所述下一个提案节点的打包信息;其中,所述共识算法为可预测提案节点的BFT类共识算法、所述打包信息至少包括所述下一个提案节点的交易集合。
[0042] 具体的,在基于共识算法进行的本轮共识过程中,预测当前提案节点的下一个提案节点,并获取所述下一个提案节点的打包信息;其中,所述共识算法为可预测提案节点的BFT类共识算法、所述打包信息至少包括所述下一个提案节点的交易集合。执行该方法步骤的可以是计算机设备,具体可以是终端,即可以是共识节点。本发明实施例是基于BFT类共识算法实现的,具体流程如下:
[0043] 1)共识节点(可以是所有共识节点)接收到当前提案节点的提案区块,块号为N。
[0044] 2)共识节点预测下一个提案区块VPN,即产生块号为N+1的区块信息。
[0045] 3)控制VPN节点接收到上述提案区块N,由VPN节点校验该提案区块N,根据校验结果确定投票信息,即如果提案区块N的区块信息错误,则投票信息为反对票;如果提案区块N的区块信息正确,则投票信息为赞成票。
[0046] 4)控制VPN节点打包VPN的交易集合和上述投票信息,并将该打包信息广播到共识网络(类似于tcp协议的ack回复方式),以供上述共识节点获取该打包信息。
[0047] 5)当共识节点接收到VPN广播的上述打包信息后,可以立刻进行对该交易集合的验证工作,并对交易验证结果进行缓存,验证工作可在本轮共识过程中的非共识投票阶段进行,并根据交易集合对VPN进行交易验证。即验证工作与共识工作并行进行,非共识投票阶段可以包括共识等待阶段或者账本写入等待IO阶段等,不作具体限定。
[0048] 6)如果本轮出块结果为出块不成功,则将上述缓存的交易验证结果删除。
[0049] 7)如果本轮出块结果为出块成功,则确定下一个提案节点为当前提案节点,并继续执行预测当前提案节点的下一个提案节点的步骤,直到完成所有轮次共识,即共识节点可预测(N+2)区块的提案节点,重复从第2)步执行。
[0050] 需要说明的是,上述打包信息也可以不包括上述投票信息,相应的,该方法可以包括:控制下一个提案节点广播所述打包信息,以供所述交易验证方法的执行方获取所述打包信息。
[0051] S202:在非共识投票阶段根据所述交易集合,对所述下一个提案节点进行交易验证。
[0052] 具体的,在非共识投票阶段根据所述交易集合,对所述下一个提案节点进行交易验证。非共识投票阶段可参照上述说明,交易验证可以具体包括签名验证、完整性验证等,不作具体限定。
[0053] 图3为本发明实施例每一轮未更换提案节点的示意图,图4为本发明实施例每一轮更换提案节点的示意图,如图3和图4所示,本发明实施例具有如下有益效果:
[0054] 1)提升共识效率,降低交易验证时间。该技术方案在某轮共识中可开始对下一轮区块交易集合进行验证。
[0055] 2)提高资源利用率。在投票等待期间、账本写入期间,CPU资源为空闲态,利用该时间进行签名验证等耗费CPU资源的操作。
[0056] 本发明实施例尤其适用于如下应用场景:
[0057] 在区块内交易较多、逻辑复杂和共识节点验证交易速度慢。
[0058] 本发明实施例提供的交易验证方法,通过在本轮共识过程中,获取当前提案节点的下一个提案节点的打包信息,在非共识投票阶段根据打包信息中下一个提案节点的交易集合,对下一个提案节点进行交易验证,能够提高共识效率。
[0059] 在上述实施例的
基础上,所述获取所述下一个提案节点的打包信息,包括:
[0060] 具体的,控制下一个提案节点广播所述打包信息,以供所述交易验证方法的执行方获取所述打包信息。可参照上述说明,不再赘述。
[0061] 本发明实施例提供的交易验证方法,能够高效获取到下一个提案节点的打包信息,有助于进一步提高共识效率。
[0062] 在上述实施例的基础上,所述打包信息还包括与所述当前提案节点的提案区块对应的投票信息;相应的,所述获取所述下一个提案节点的打包信息,包括:
[0063] 具体的,控制下一个提案节点接收所述提案区块,由所述下一个提案节点校验所述提案区块,根据校验结果确定所述投票信息,并广播携带有所述投票信息和所述交易集合的打包信息,以供所述交易验证方法的执行方获取所述打包信息。可参照上述说明,不再赘述。
[0064] 本发明实施例提供的交易验证方法,通过在打包信息中还携带投票信息,避免再单独发送携带投票信息的通信报文,能够节约通信资源。
[0065] 在上述实施例的基础上,在对所述下一个提案节点进行交易验证的步骤之后,所述交易验证方法还包括:
[0066] 具体的,对交易验证结果进行缓存,并根据本轮出块结果执行相应的处理动作。即根据本轮出块结果执行相应的处理动作具体包括:上述本轮出块结果为出块不成功和本轮出块结果为出块成功的情况,不再赘述。
[0067] 本发明实施例提供的交易验证方法,进一步优化了该方法的执行过程。
[0068] 在上述实施例的基础上,所述根据本轮出块结果执行相应的处理动作,包括:
[0069] 具体的,若所述本轮出块结果为出块不成功,则将缓存的交易验证结果删除;可参照上述说明,不再赘述。
[0070] 具体的,若所述本轮出块结果为出块成功,则确定所述下一个提案节点为当前提案节点,并继续执行预测当前提案节点的下一个提案节点的步骤,直到完成所有轮次共识。可参照上述说明,不再赘述。
[0071] 本发明实施例提供的交易验证方法,一方面能够及时删除缓存中的信息,另一方面能够实现该方法的快速循环
迭代,进一步提高共识效率。
[0072] 在上述实施例的基础上,具体的,所述非共识投票阶段包括:
[0073] 共识等待阶段或者账本写入等待IO阶段。
[0074] 本发明实施例提供的交易验证方法,通过在共识等待阶段或者账本写入等待IO阶段对下一个提案节点进行交易验证,实现交易验证和共识的并行进行,进一步提高共识效率。
[0075] 图5为本发明交易验证装置实施例结构示意图,如图5所示,本发明实施例提供了一种交易验证装置,包括获取单元501和交易验证单元502,其中:
[0076] 获取单元501用于在基于共识算法进行的本轮共识过程中,预测当前提案节点的下一个提案节点,并获取所述下一个提案节点的打包信息;其中,所述共识算法为可预测提案节点的BFT类共识算法、所述打包信息至少包括所述下一个提案节点的交易集合;交易验证单元502用于在非共识投票阶段根据所述交易集合,对所述下一个提案节点进行交易验证。
[0077] 具体的,获取单元501用于在基于共识算法进行的本轮共识过程中,预测当前提案节点的下一个提案节点,并获取所述下一个提案节点的打包信息;其中,所述共识算法为可预测提案节点的BFT类共识算法、所述打包信息至少包括所述下一个提案节点的交易集合;交易验证单元502用于在非共识投票阶段根据所述交易集合,对所述下一个提案节点进行交易验证。
[0078] 本发明实施例提供的交易验证装置,通过在本轮共识过程中,获取当前提案节点的下一个提案节点的打包信息,在非共识投票阶段根据打包信息中下一个提案节点的交易集合,对下一个提案节点进行交易验证,能够提高共识效率。
[0079] 在上述实施例的基础上,所述获取单元具体501用于:
[0080] 控制下一个提案节点广播所述打包信息,以供所述交易验证方法的执行方获取所述打包信息。
[0081] 本发明实施例提供的交易验证装置,能够高效获取到下一个提案节点的打包信息,有助于进一步提高共识效率。
[0082] 本发明实施例提供的交易验证装置具体可以用于执行上述各方法实施例的处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。
[0083] 图6为本发明实施例提供的电子设备实体结构示意图,如图6所示,所述电子设备包括:处理器(processor)601、存储器(memory)602和总线603;
[0084] 其中,所述处理器601、存储器602通过总线603完成相互间的通信;
[0085] 所述处理器601用于调用所述存储器602中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:在基于共识算法进行的本轮共识过程中,预测当前提案节点的下一个提案节点,并获取所述下一个提案节点的打包信息;其中,所述共识算法为可预测提案节点的BFT类共识算法、所述打包信息至少包括所述下一个提案节点的交易集合;在非共识投票阶段根据所述交易集合,对所述下一个提案节点进行交易验证。
[0086] 本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:在基于共识算法进行的本轮共识过程中,预测当前提案节点的下一个提案节点,并获取所述下一个提案节点的打包信息;其中,所述共识算法为可预测提案节点的BFT类共识算法、所述打包信息至少包括所述下一个提案节点的交易集合;在非共识投票阶段根据所述交易集合,对所述下一个提案节点进行交易验证。
[0087] 本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:在基于共识算法进行的本轮共识过程中,预测当前提案节点的下一个提案节点,并获取所述下一个提案节点的打包信息;其中,所述共识算法为可预测提案节点的BFT类共识算法、所述打包信息至少包括所述下一个提案节点的交易集合;在非共识投票阶段根据所述交易集合,对所述下一个提案节点进行交易验证。
[0088] 本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0089] 以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0090] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助
软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,
服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0091] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行
修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。