一种区块链交易快速确认方法及系统
技术领域
本发明涉及计算机技术领域,特别涉及一种区块链交易快速确认方法及系统。
背景技术
在联盟区块链中,考虑到作恶节点的存在,因此通常使用拜占庭共识算法支持联盟链的运转。拜占庭共识算法主要分为三个阶段:提议阶段,由提议节点选择交易并打包广播给全网节点;预投票阶段,收到提议区块的节点,对提议区块进行预投票并广播至其余节点;提交阶段,当接收到2f+1个来自其它节点的预投票后,进入提交阶段。提交阶段对提议区块进行预提交投票,当接收到的预提交投票中有2f+1个赞成票后执行区块交易,并开始下一高度的提议阶段,其中f是指系统最多允许的拜占庭节点数量,系统总节点数为3f+1。上述共识算法需要执行两次投票,过程较为复杂,且由于拜占庭算法中消息在网络中传递的复杂度较高,导致其区块确认速度及其网络节点规模受到限制,影响区块链中交易的确认速度。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种区块链交易快速确认方法及系统。所述技术方案如下:
一方面,提供了一种区块链交易快速确认方法,所述方法包括:
S1、提议节点将交易打包成区块并将所述区块广播至参与共识的节点;
S2、所述参与共识的节点验证所述区块,若验证通过则进行预投票,并使用门限签名作为所述预投票的数字签名,将签名后的所述预投票发送至收集节点;
S3、当所述收集节点收集到所述预投票的数量满足第一预设数量时,则根据第一预设数量的所述门限签名恢复出新签名,根据所述新签名构造预提交投票,将所述预提交投票发送至所述参与共识的节点;
S4、所述参与共识的节点接收到所述预提交投票后验证所述新签名,验证通过后,所述提议节点可将所述区块上传至区块链存储。
进一步地,所述提议节点和所述收集节点根据区块高度和共识轮次确定。
进一步地,所述方法还包括:
所述参与共识的节点计算接收所述新投票的等待时间;
若所述等待时间小于或等于预设等待时间,则执行所述步骤S4;
若所述等待时间大于所述预设等待时间,则确定新提议节点,所述新提议节点生成一个空区块,并将所述空区块广播至所述参与共识的节点,所述参与共识的节点针对所述空区块进行新一轮共识。
进一步地,所述新一轮共识包括:
所述参与共识的节点进行针对所述空区块的预投票,并等待收集其它参与共识的节点的针对所述空区块的预投票;
当收集到针对所述空区块的预投票的数量满足第二预设数量时,则针对所述空区块的进行预提交投票,并等待收集其它参与共识的节点的针对所述空区块的预提交投票;
当收集到针对所述空区块的预提交投票中赞成票的数量满足第三预设数量时,所述提议节点可将所述区块上传至区块链存储。
进一步地,所述第一预设数量、所述第二预设数量和所述第三预设数量均为2f+1个,其中f为拜占庭算法中系统最多允许的无效或者恶意节点数量。
另一方面,提供了一种区块链交易快速确认系统,所述系统包括:
区块生成模块,用于提议节点将交易打包成区块;
共识模块,用于参与共识的节点对所述区块进行预投票;
签名模块,用于所述参与共识的节点对所述预投票进行门限签名;
判定模块,用于收集节点判定收集到所述预投票的数量是否满足第一预设数量;
新签名生成模块,用于当所述收集节点收集到所述预投票的数量满足第一预设数量时,所述收集节点根据第一预设数量的所述门限签名恢复出所述新签名,根据所述新签名构造预提交投票;
验签模块,用于所述参与共识的节点验证所述新签名;
通信模块,用于所述提议节点广播所述区块,所述参与共识的节点发送所述预投票,所述收集节点发送所述预提交投票,以及所述提议节点将所述区块上传至区块链存储。
进一步地,所述系统还包括:提议节点以及收集节点确定模块,用于根据区块高度和共识轮次确定所述提议节点和所述收集节点。
进一步地,所述系统还包括:
计时模块,用于所述参与共识的节点计算接收所述新投票的等待时间,若所述等待时间小于或等于预设等待时间,则执行所述步骤S4,若所述等待时间大于所述预设等待时间,则确定新提议节点;
所述区块生成模块,还用于所述新提议节点生成一个空区块;
所述通信模块,还用于所述新提议节点广播所述空区块;
所述共识模块,还用于所述参与共识的节点针对所述空区块进行新一轮共识。
进一步地,所述共识模块,具体用于所述参与共识的节点进行针对所述空区块的预投票,以及所述参与共识的节点进行针对所述空区块的预提交投票;
所述判定模块,还用于所述参与共识的节点判定收集到针对所述空区块的预投票的数量是否满足第二预设数量,以及所述参与共识的节点判定收集到针对所述空区块的预提交投票中赞成票的数量是否满足第三预设数量。
进一步地,所述第一预设数量、所述第二预设数量和所述第三预设数量均为2f+1个,其中f为拜占庭算法中系统最多允许的无效或者恶意节点数量。
本发明实施例提供的技术方案带来的有益效果是:
1、本发明采用门限签名技术以及通过设置收集节点,提高了交易确认速度,有利于节点规模的扩充;
2、本发明考虑到收集节点故障情况,提供了快速确认方法和普通共识方法之间的切换方法,确保交易能够正常被确认。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的区块链交易快速确认方法流程图;
图2是本发明实施例提供的收集节点无故障时交易确认过程图;
图3是本发明实施例提供的区块链交易确认方法流程图;
图4是本发明实施例提供的收集节点故障时交易确认过程图;
图5是本发明实施例提供的区块链交易快速确认系统模块示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了解决现有技术中联盟链采用的共识机制会导致其区块确认速度及其网络结点规模受限制的问题,本发明提供了一种区块链交易快速确认方法及系统,本发明能够提高区块链对交易的确认速度,并且能够扩大现有区块链的节点规模。具体技术方案如下:
如图1所示,一种区块链交易快速确认方法,包括:
S1、提议节点将交易打包成区块并将所述区块广播至参与共识的节点;
S2、所述参与共识的节点验证所述区块,若验证通过则进行预投票,并使用门限签名作为所述预投票的数字签名,将签名后的所述预投票发送至收集节点;
S3、当所述收集节点收集到所述预投票的数量满足第一预设数量时,则根据第一预设数量的所述门限签名恢复出新签名,根据所述新签名构造预提交投票,将所述预提交投票发送至所述参与共识的节点;
S4、所述参与共识的节点接收到所述预提交投票后验证所述新签名,验证通过后,所述提议节点可将所述区块上传至区块链存储。
需要说明的是,如图2所示,上述方法中涉及到三种节点分别为:提议节点(proposer),参与共识的节点(follower和proposer),其中follower为除proposer以外其余参与共识的节点,收集节点(collecter),其中提议节点(proposer)用于将交易打包成区块,并且提议将区块上传至区块链存储。参与共识的节点(follower和proposer)用于参与共识,对区块进行预投票(prevote)并对预投票进行门限签名,参与共识的节点是指参与共识过程的所有节点,可能是除提议节点之外的节点,也可能是包括提议节点的参与共识的节点,本实施例属于后一种情况。参与节点(follower和proposer)收到区块后,首先验证区块,验证包括:区块的有效性验证,内容验证等等,若认为区块可以提交上链,则验证通过对区块进行预投票。收集节点(collecter)用于收集参与共识节点的门限签名,并将一定数量的门限签名恢复成新签名,并根据新签名构造预提交投票(precommit),然后将新签名发送至参与共识的节点(follower和proposer)。门限签名又叫做多重签名,是指在n个用户有t个签名时,即可根据t个签名恢复出一个新的签名,这个新的签名可以被任意一个参与签名的节点验证。因此采用门限签名作为节点共识过程中的数字签名无需传统共识方法中每个节点都需要等待收集其它节点的投票,仅需要设置一个收集节点收集参与共识节点的投票即可,加快了共识的过程。上述方法中第一预设数量可以是2f+1个,其中f为拜占庭算法中系统最多允许的无效或者恶意节点数量,即当收集节点收集到2f+1个签名节点的预投票后即可恢复出新签名,新签名可以被参与共识的节点中的任意一个节点验证。
因此本发明实施例公开的方法相较于传统的共识算法的不同之处在于,本发明提供的方法实际上仅经过了一轮投票过程,而传统的共识算法通常需要两轮甚至两轮以上的投票过程。本发明公开的方法的复杂度大大低于传统的共识算法,有利于扩大网络中的节点规模。
上述方法中提议节点和收集节点均根据区块高度和共识轮次确定。区块高度是指该区块在区块链中的位置,可以作为区块的标识符之一。共识轮次表示各节点针对该区块达成共识所经历的共识次数,如果一个区块的某一轮共识失败,则轮次加1后重新进行共识,共识成功后,进入下一高度的区块的共识,此时针对下一个高度的区块的共识轮次为零。
当然,上述方法中也存在节点故障的风险,尤其是收集节点,若收集节点发生宕机,那么收集节点就无法接收参与共识节点发来的预投票,或者无法向参与共识的节点发出新投票,并且一旦启用了收集节点,轮次的切换只能依靠收集节点完成,提议节点和收集节点也只能在切换轮次时重新确定,因此收集节点出现故障将会影响整个区块确认过程的正常进行。因此为了不影响区块的共识,本发明实施例该包括共识算法切换的方法,如图3所示,即当收集节点发生故障时,共识算法由上述方法切换到普通的共识算法,具体包括:
所述参与共识的节点计算接收所述新投票的等待时间;
若所述等待时间小于或等于预设等待时间,则执行所述步骤S4;
若所述等待时间大于所述预设等待时间,则确定新提议节点,所述新提议节点生成一个空区块,并将所述空区块广播至所述参与共识的节点,所述参与共识的节点针对所述空区块进行新一轮共识。
需要说明的是,上述方法中首先需要预设一个等待时间,如图1所示,在完成步骤S2后,参与共识的节点便开始计算接收新投票的实际等待时间,当参与共识的节点的接收新投票的实际等待时间超过了预设等待时间则认定收集节点故障,系统将转成普通的共识算法进行新一轮共识。由于参与共识的节点已经收到过提议的区块,为了加快共识过程,在新一轮共识前提议节点另生成一个交易列表为空的空区块,新一轮共识针对空区块展开。
新一轮共识包括:
所述参与共识的节点进行针对所述空区块的预投票,并等待收集其它参与共识的节点的针对所述空区块的预投票;
当收集到针对所述空区块的预投票的数量满足第二预设数量时,则针对所述空区块的进行预提交投票,并等待收集其它参与共识的节点的针对所述空区块的预提交投票;
当收集到针对所述空区块的预提交投票中赞成票的数量满足第三预设数量时,所述提议节点可将所述区块上传至区块链存储。
需要说明的是,如图4所示在新一轮共识中,提议节点(proposer)将空区块广播至参与共识的节点(follower和proposer),参与共识的节点对空区块进行预投票(prevote),并等待其他参与共识的节点的预投票(prevote),当满足预投票数量第二预设数量时则进行预提交投票(precommit)并等待其他参与共识的节点发来的预提交投票(precommit),当预提交投票数量满足第三预设数量时,提议节点(proposer)可将所述交易上传至区块链存储。
上述方法中第二预设数量和第三预设数量均为2f+1个,其中f为拜占庭算法中系统最多允许的无效或者恶意节点数量。进行新一轮共识时,区块高度不变共识轮次加一,新一轮共识中,参与交易的节点也可以对预投票、预提交投票进行数字签名,但该数字签名即为普通的利用非对称加密技术产生公私钥对的数字签名。
更进一步地,若参与共识的节点在一轮共识过程中认定收集节点发生故障,那么在其针对下一个区块高度的新区块的共识过程中,仍然先执行步骤S2,若此时收集节点已经恢复正常,则可以进行后续的步骤S3和S4,若此时收集节点还未恢复正常,则切换至针对空区块的新一轮共识。
本发明实施例提供了一种区块链交易快速确认的方法,并且考虑到若收集节点发生故障如何保障继续确认交易的问题。与上述方法相对应的,如图5所示,本发明实施例还提供一种区块链交易快速确认系统,包括:
提议节点以及收集节点确定模块,用于根据区块高度和共识轮次确定所述提议节点和所述收集节点;
区块生成模块,用于提议节点将交易打包成区块;
共识模块,用于参与共识的节点对所述区块进行预投票;
签名模块,用于所述参与共识的节点对所述预投票进行门限签名;
判定模块,用于收集节点判定收集到所述预投票的数量是否满足第一预设数量;
新签名生成模块,当所述收集节点收集到所述预投票的数量满足第一预设数量时,用于所述收集节点根据第一预设数量的所述门限签名恢复出所述新签名,根据所述新签名构造预提交投票;
验签模块,用于所述参与共识的节点验证所述新签名;
通信模块,用于所述提议节点广播所述区块,所述参与共识的节点发送所述预投票,所述收集节点发送所述预提交投票,以及所述提议节点将所述区块上传至区块链存储。
上述系统能够执行上述方法中的步骤S1~S4。此外,为了应对收集节点出现故障的问题上述系统还包括:
计时模块,用于所述参与共识的节点计算接收所述新投票的等待时间,若所述等待时间小于或等于预设等待时间,则执行所述步骤S4,若所述等待时间大于所述预设等待时间,则确定新提议节点;
所述区块生成模块,还用于所述新提议节点生成一个空区块;
所述通信模块,还用于所述新提议节点广播所述空区块;
所述共识模块,还用于所述参与共识的节点针对所述空区块进行新一轮共识,具体用于所述参与共识的节点进行针对所述空区块的预投票,以及所述参与共识的节点进行针对所述空区块的预提交投票;
所述判定模块,还用于所述参与共识的节点判定收集到针对所述空区块的预投票的数量是否满足第二预设数量,以及所述参与共识的节点判定收集到针对所述空区块的预提交投票中赞成票的数量是否满足第三预设数量。
需要说明的是,上述系统中所述第一预设数量、所述第二预设数量和所述第三预设数量均为2f+1个,其中f为拜占庭算法中系统最多允许的无效或者恶意节点数量。
1、本发明采用门限签名技术以及通过设置收集节点,提高了交易确认速度,有利于节点规模的扩充;
2、本发明考虑到收集节点故障情况,提供了快速确认方法和普通共识方法之间的切换方法,确保交易能够正常被确认。
上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。