CN112380064A - 一种区块链中的共识节点容错方法、装置及系统 - Google Patents
一种区块链中的共识节点容错方法、装置及系统 Download PDFInfo
- Publication number
- CN112380064A CN112380064A CN202011293196.XA CN202011293196A CN112380064A CN 112380064 A CN112380064 A CN 112380064A CN 202011293196 A CN202011293196 A CN 202011293196A CN 112380064 A CN112380064 A CN 112380064A
- Authority
- CN
- China
- Prior art keywords
- node
- candidate
- consensus
- nodes
- alternative
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1489—Generic software techniques for error detection or fault masking through recovery blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Quality & Reliability (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明公开了一种区块链中的共识节点容错方法、装置及系统,其中方法为:第一备选节点检测区块链中的多个共识节点中是否存在故障的共识节点;所述第一备选节点为所述区块链外的多个备选节点中任一备选节点;所述多个备选节点包括所述第一备选节点和各第二备选节点;所述多个备选节点用于备份所述多个共识节点中故障的共识节点;若所述第一备选节点在所述多个备选节点中最先确定第一共识节点故障,则将所述第一备选节点作为所述第一共识节点;所述多个共识节点包括所述第一共识节点和各第二共识节点。上述方法应用于金融科技(Fintech)时,提供了一种节点利用率高且灵活的共识节点容错方案。
Description
技术领域
本发明涉及金融科技(Fintech)领域中的区块链(blockchain)领域,尤其涉及一种区块链中的共识节点容错方法、装置及系统。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。随着区块链(blockchain)相关技术的不断发展和普及,在多方协作的场景中,越来越多的企业和机构开始应用区块链来提升协作效率,增强信任关系。
然而,区块链中的共识节点可能会宕机或故障,这时便需要用备选节点来替换共识节点。目前的方案中,为每个共识节点设置多个备选节点,这些备选节点设置了接替共识节点顺序的优先级。但这样以来,不仅造成大量备选节点的资源浪费,还受限于固定的备选策略,导致备选节点替换共识节点时不够灵活。所以亟待一种节点利用率高且灵活的共识节点容错方案。
发明内容
本发明提供一种区块链中的共识节点容错方法、装置及系统,解决了现有技术中缺乏节点利用率高且灵活的共识节点容错方案的问题。
第一方面,本发明提供一种区块链中的共识节点容错方法,包括:第一备选节点检测区块链中的多个共识节点中是否存在故障的共识节点;所述第一备选节点为所述区块链外的多个备选节点中任一备选节点;所述多个备选节点包括所述第一备选节点和各第二备选节点;所述多个备选节点用于备份所述多个共识节点中故障的共识节点;若所述第一备选节点在所述多个备选节点中最先确定第一共识节点故障,则将所述第一备选节点作为所述第一共识节点;所述多个共识节点包括所述第一共识节点和各第二共识节点。
上述方法中,所述多个备选节点用于备份所述多个共识节点中故障的共识节点,那么所述多个备选节点和所述多个共识节点间是多对多的关系,避免了一个备选节点只为一个共识节点做备选造成资源浪费,而且,多个备选节点中通过自适应的方式,最先确定出第一共识节点故障的节点便作为所述第一共识节点,从而提供了一种节点利用率高且灵活的共识节点容错方案。
可选的,所述第一备选节点按照以下方式确定所述第一共识节点故障:所述第一备选节点若确定与所述第一共识节点的心跳测试超时,则确定所述第一共识节点的疑似故障信息,并统计所述第一共识节点的疑似故障信息的信息总个数;所述第一共识节点的疑似故障信息包括:所述第一备选节点确定的疑似故障信息以及来自所述各第二备选节点的疑似故障信息;若在预设时长内,所述第一备选节点确定所述信息总个数大于预设阈值,则确定所述第一共识节点故障。
上述方法中,所述第一备选节点在确定与所述第一共识节点的心跳测试超时,并不是直接确定所述第一共识节点故障,而是统计所述第一共识节点的疑似故障信息的信息总个数,若在预设时长内,所述第一备选节点确定所述信息总个数大于预设阈值,才确定所述第一共识节点故障,从而不会因为所述第一备选节点对所述第一共识节点心跳测试超时的误判,导致对所述第一共识节点故障状态的误判,更准确地确定所述第一共识节点故障。
可选的,所述预设时长与所述多个共识节点的总数量呈正相关;所述预设阈值是根据所述多个共识节点的总数量和预设比例确定的。
上述方法中,所述预设时长与所述多个共识节点的总数量呈正相关,从而可以在预设时长内接收更多共识节点的反馈,且根据所述多个共识节点的总数量和预设比例确定所述预设阈值,从而可以得到适应所述多个共识节点的总数量的预设阈值。
可选的,所述将所述第一备选节点作为所述第一共识节点,包括:针对所述各第二共识节点中任一第二共识节点,所述第一备选节点将第一身份证书发送至所述第二共识节点,且获取来自所述第二共识节点的第二身份证书;所述第一备选节点将第一主公钥和第一随机值发送至所述第二共识节点,且获取来自所述第二共识节点的第二主公钥和第二随机值;所述第一备选节点基于所述第一主公钥、所述第一随机值、所述第二主公钥和所述第二随机值,根据椭圆曲线算法,生成第一临时私钥和第一临时公钥,并通过所述第一临时私钥对所述第一临时公钥签名,获得第一签名;所述第一备选节点发送所述第一临时公钥和所述第一签名至所述第二共识节点;所述第一备选节点获取来自所述第二共识节点的第二临时公钥和第二签名,并验证所述第二签名通过;所述第一备选节点获取来自第二共识节点的第一加密信息,通过共享密钥对所述第一加密信息解密,得到所述第一随机值;所述第一备选节点通过所述共享密钥对所述第二随机值加密,获得第二加密信息,并将所述第二加密信息发送至所述第二共识节点。
上述方式下,所述第一备选节点与所述第二共识节点交互身份证书,从而完成身份验证,并且通过圆曲线算法交互签名和随机值,验证了第一备选节点加入区块链的合法性,即便第一共识节点故障,也不会泄露第一共识节点的私钥等敏感信息,从而提升了共识节点备份的安全性。
可选的,若所述第一备选节点在所述多个备选节点中最先确定所述第一共识节点故障,所述第一备选节点在确定所述第一共识节点故障之后,将备份声明消息发送至所述各第二备选节点;所述备份声明消息用于声明所述第一备选节点为待备份所述第一共识节点的备选节点;所述第一备选节点将所述第一备选节点作为所述第一共识节点之后,还包括:所述第一备选节点将成功备份消息发送至所述各第二备选节点;所述成功备份消息用于声明所述第一备选节点成功备份了所述第一共识节点。
上述方式下,所述第一备选节点在确定所述第一共识节点故障之后,将备份声明消息发送至所述各第二备选节点,以及所述第一备选节点将所述第一备选节点作为所述第一共识节点之后,将成功备份消息发送至所述各第二备选节点,从而在备份或者故障时传递状态消息,及时在区块链中同步。
第二方面,本发明提供一种区块链中的共识节点容错装置,包括:检测模块,用于检测区块链中的多个共识节点中是否存在故障的共识节点;第一备选节点为所述区块链外的多个备选节点中任一备选节点;所述多个备选节点包括所述第一备选节点和各第二备选节点;所述多个备选节点用于备份所述多个共识节点中故障的共识节点;处理模块,用于若所述第一备选节点在所述多个备选节点中最先确定第一共识节点故障,则将所述第一备选节点作为所述第一共识节点;所述多个共识节点包括所述第一共识节点和各第二共识节点。
可选的,所述处理模块具体用于:若确定与所述第一共识节点的心跳测试超时,则确定所述第一共识节点的疑似故障信息,并统计所述第一共识节点的疑似故障信息的信息总个数;所述第一共识节点的疑似故障信息包括:所述第一备选节点确定的疑似故障信息以及来自所述各第二备选节点的疑似故障信息;若在预设时长内,确定所述信息总个数大于预设阈值,则确定所述第一共识节点故障。
可选的,所述预设时长与所述多个共识节点的总数量呈正相关;所述预设阈值是根据所述多个共识节点的总数量和预设比例确定的。
可选的,所述处理模块具体用于:针对所述各第二共识节点中任一第二共识节点,将第一身份证书发送至所述第二共识节点,且获取来自所述第二共识节点的第二身份证书;将第一主公钥和第一随机值发送至所述第二共识节点,且获取来自所述第二共识节点的第二主公钥和第二随机值;基于所述第一主公钥、所述第一随机值、所述第二主公钥和所述第二随机值,根据椭圆曲线算法,生成第一临时私钥和第一临时公钥,并通过所述第一临时私钥对所述第一临时公钥签名,获得第一签名;发送所述第一临时公钥和所述第一签名至所述第二共识节点;所述第一备选节点获取来自所述第二共识节点的第二临时公钥和第二签名,并验证所述第二签名通过;获取来自第二共识节点的第一加密信息,通过共享密钥对所述第一加密信息解密,得到所述第一随机值;通过所述共享密钥对所述第二随机值加密,获得第二加密信息,并将所述第二加密信息发送至所述第二共识节点。
可选的,所述处理模块还用于:若在所述多个备选节点中最先确定所述第一共识节点故障,在确定所述第一共识节点故障之后,将备份声明消息发送至所述各第二备选节点;所述备份声明消息用于声明所述第一备选节点为待备份所述第一共识节点的备选节点;所述处理模块还用于:将成功备份消息发送至所述各第二备选节点;所述成功备份消息用于声明所述第一备选节点成功备份了所述第一共识节点。
上述第二方面及第二方面各个可选装置的有益效果,可以参考上述第一方面及第一方面各个可选方法的有益效果,这里不再赘述。
第三方面,本发明提供一种区块链中的共识节点容错系统,包括:多个备选节点和多个共识节点;所述多个备选节点用于备份所述多个共识节点中故障的共识节点;第一备选节点,用于检测所述多个共识节点中是否存在故障的共识节点;所述第一备选节点为多个备选节点中任一备选节点;所述多个备选节点包括所述第一备选节点和各第二备选节点;所述第一备选节点,用于若在所述多个备选节点中最先确定第一共识节点故障,则将所述第一备选节点作为所述第一共识节点;所述多个共识节点包括所述第一共识节点和各第二共识节点。
可选的,针对各第二共识节点中任一第二共识节点,所述第一备选节点与所述第二共识节点之间维持心跳测试;针对各第二备选节点中任一第二备选节点,所述第一备选节点与所述第二备选节点之间维持心跳测试。
第四方面,本发明提供一种计算机设备,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面及第一方面各个可选的方法。
第五方面,本发明提供一种计算机可读存储介质,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面及第一方面各个可选的方法。
本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种区块链中的共识节点容错系统的流程示意图;
图2为本发明实施例提供的一种区块链中的共识节点容错方法对应的系统架构示意图;
图3为本发明实施例提供的一种区块链中的共识节点容错装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
首先列出本申请中出现的名词。
备选节点:用于在共识节点发送故障或宕机时,对故障节点进行替换,且备选节点同步了其所连接的共识节点的数据和网络信息。
公钥体系:密钥是成对生成的,每对密钥由一个公钥和一个私钥组成。在实际应用中,私钥由拥有者自己保存,而公钥则需要公布于众。
私钥:私钥是区块链账户的唯一凭证,用于对交易进行签名。
ECDH:一种密钥协商算法,定义了交互双方如何安全的生成和交换密钥。
交易签名:交易签名类似于盖章,用于确保对交易的所有权验证,节点在收到交易广播后就会对交易进行验证,通过后就会收录进内存、打包进Block,否则就会丢弃。
数字证书:指在互联网通讯中标志通讯各方身份信息的一个数字凭证,人们可以在网上用它来识别对方身份。
在金融机构(银行机构、保险机构或证券机构)在进行业务(如银行的贷款业务、存款业务等)运转过程中,越来越多的企业和机构开始应用区块链来提升协作效率,增强信任关系。然而,区块链中的共识节点可能会宕机或故障,这时便需要用备选节点来替换共识节点。目前的方案中,共识节点的备份受限于固定的备选策略,导致备选节点替换共识节点时不够灵活,亟待一种节点利用率高且灵活的共识节点容错方案。这种情况不符合银行等金融机构的需求,无法保证金融机构各项业务的高效运转。为此,如图1所示,本发明提供一种区块链中的共识节点容错方法。
步骤101:第一备选节点检测区块链中的多个共识节点中是否存在故障的共识节点。
步骤102:若所述第一备选节点在所述多个备选节点中最先确定第一共识节点故障,则将所述第一备选节点作为所述第一共识节点。
所述第一备选节点为所述区块链外的多个备选节点中任一备选节点;所述多个备选节点包括所述第一备选节点和各第二备选节点;所述多个备选节点用于备份所述多个共识节点中故障的共识节点;所述多个共识节点包括所述第一共识节点和各第二共识节点。
步骤101~步骤102的方式中,举例来说,区块链中有多个共识节点:共识节点1、共识节点2、…共识节点10;区块链外有多个备选节点:备选节点1、备选节点2、…备选节点10。备选节点1~10用于备份共识节点1~10。需要说明的是,具体可以根据场景灵活设置备选节点与共识节点之间的映射关系,如备选节点1~5用于备份共识节点1和2;备选节点2~6用于备份共识节点3和4;…;备选节点5~9用于备份共识节点9和10;备选节点10用于备份共识节点1~10;显然,上述例子中,备选节点可以复用,通过多对多的映射关系,实现多对多的节点备份。
所述多个备选节点可以检测多个共识节点中是否存在故障的共识节点,如可以采取心跳测试的方式,或者远程登录访问的方式等。
以第一备选节点为例,若第一备选节点在所述多个备选节点中最先确定第一共识节点故障,则将所述第一备选节点作为所述第一共识节点,也就是说,最先确定第一共识节点故障的备选节点(第一备选节点),将所述第一备选节点作为所述第一共识节点,即所述第一备选节点接替所述第一共识节点在区块链中的工作。
另外,需要说明的是,所述第一备选节点在所述多个备选节点中最先确定第一共识节点故障中,确定所述第一备选节点是“所述多个备选节点中最先确定第一共识节点故障的备选节点”的方式也可以有多种,如约定在确定第一共识节点故障后,都发送故障指示消息,并附上时间戳,通过比较时间戳来确定“确定第一共识节点故障”的先后顺序。再如,如果所述第一备选节点在确定第一共识节点故障之前,未收到任何其它第二备选节点的故障指示消息,那么便确定所述第一备选节点在所述多个备选节点中最先确定第一共识节点故障。
一种可选实施方式中,所述第一备选节点按照以下方式确定所述第一共识节点故障:
步骤(1-1):所述第一备选节点若确定与所述第一共识节点的心跳测试超时,则确定所述第一共识节点的疑似故障信息,并统计所述第一共识节点的疑似故障信息的信息总个数。
所述第一共识节点的疑似故障信息包括:所述第一备选节点确定的疑似故障信息以及来自所述各第二备选节点的疑似故障信息。
步骤(1-2):若在预设时长内,所述第一备选节点确定所述信息总个数大于预设阈值,则确定所述第一共识节点故障。
举例来说,所述第一备选节点在确定与所述第一共识节点的心跳测试超时后,则确定所述第一共识节点的疑似故障信息,即所述第一共识节点疑似出现了故障,但还未确定是否真正出现了故障,此时所述第一共识节点的疑似故障信息的信息总个数Count1=1,另外,所述第一备选节点还可以将所述第一共识节点的疑似故障信息发送至所述各第二备选节点。
而此时,其它的所述各第二备选节点也可能确定与所述第一共识节点的心跳测试超时,并确定所述第一共识节点的疑似故障信息,那么在预设时长内,所述第一备选节点也可能收到来自所述各第二备选节点的疑似故障信息,显然,在预设时长内,所述第一共识节点的疑似故障信息的信息总个数越多,所述第一共识节点发生故障越可信。
举例来说,预设时长为5分钟,5分钟内所述第一共识节点的疑似故障信息的信息总个数Count1=9。预设阈值为8,那么所述第一备选节点便确定所述第一共识节点故障。
步骤(1-1)~步骤(1-2)的实施方式中,可以做如下设置:
所述预设时长与所述多个共识节点的总数量呈正相关;所述预设阈值是根据所述多个共识节点的总数量和预设比例确定的。
显然,区块链的规模越大,需要的备选节点的数量也越多,那么备选节点需要收集疑似故障信息的时长也就越长,所需要的预设阈值也就越大,因此,设置所述预设时长和所述预设阈值,可以与区块链的规模相适应。
举例来说,预设比例为1/2,所述第一备选节点若确定过半数的备选节点也确定所述第一共识节点的疑似故障信息,那么便确定所述第一共识节点故障。
步骤102中,将所述第一备选节点作为所述第一共识节点的一种可选情形为:
步骤(2-1):针对所述各第二共识节点中任一第二共识节点,所述第一备选节点将第一身份证书发送至所述第二共识节点,且获取来自所述第二共识节点的第二身份证书。
步骤(2-2):所述第一备选节点将第一主公钥和第一随机值发送至所述第二共识节点,且获取来自所述第二共识节点的第二主公钥和第二随机值。
步骤(2-3):所述第一备选节点基于所述第一主公钥、所述第一随机值、所述第二主公钥和所述第二随机值,根据椭圆曲线算法,生成第一临时私钥和第一临时公钥,并通过所述第一临时私钥对所述第一临时公钥签名,获得第一签名。
步骤(2-4):所述第一备选节点发送所述第一临时公钥和所述第一签名至所述第二共识节点;所述第一备选节点获取来自所述第二共识节点的第二临时公钥和第二签名,并验证所述第二签名通过。
步骤(2-5):所述第一备选节点获取来自第二共识节点的第一加密信息,通过共享密钥对所述第一加密信息解密,得到所述第一随机值;所述第一备选节点通过所述共享密钥对所述第二随机值加密,获得第二加密信息,并将所述第二加密信息发送至所述第二共识节点。
步骤(2-1)~步骤(2-5)的方式下,所述第一备选节点与所述第二共识节点交互身份证书,从而完成身份验证,并且通过圆曲线算法交互签名和随机值,验证了第一备选节点加入区块链的合法性,即便第一共识节点故障,也不会泄露第一共识节点的私钥等敏感信息,从而提升了共识节点备份的安全性,使得在共识节点发生故障时,可以更安全快速的切换升级故障节点,使得切换效率更高,更安全。
一种可选实施方式中,若所述第一备选节点在所述多个备选节点中最先确定所述第一共识节点故障,所述第一备选节点在确定所述第一共识节点故障之后,将备份声明消息发送至所述各第二备选节点。
所述备份声明消息用于声明所述第一备选节点为待备份所述第一共识节点的备选节点。
上述方式下,所述第一备选节点将备份声明消息发送至所述各第二备选节点,从而将声明所述第一备选节点为待备份所述第一共识节点的备选节点,那么所述各第二备选节点便不需要再做尝试去做传递疑似故障信息等动作,从而保持了整个备选节点间的状态保持一致。
进一步地,一种可选实施方式中,所述第一备选节点将所述第一备选节点作为所述第一共识节点之后,还可以执行如下步骤:
所述第一备选节点将成功备份消息发送至所述各第二备选节点。
所述成功备份消息用于声明所述第一备选节点成功备份了所述第一共识节点。
上述方式下,所述第一备选节点将成功备份消息发送至所述各第二备选节点,从而将声明所述第一备选节点为待备份所述第一共识节点的备选节点,那么所述各第二备选节点便不需要再做尝试去做替换所述第一共识节点的动作,从而保持了整个备选节点间的状态保持一致。
相应地,本申请提供一种区块链中的共识节点容错系统,多个备选节点和多个共识节点;所述多个备选节点用于备份所述多个共识节点中故障的共识节点;
第一备选节点,用于检测所述多个共识节点中是否存在故障的共识节点;所述第一备选节点为多个备选节点中任一备选节点;所述多个备选节点包括所述第一备选节点和各第二备选节点;所述第一备选节点,用于若在所述多个备选节点中最先确定第一共识节点故障,则将所述第一备选节点作为所述第一共识节点;所述多个共识节点包括所述第一共识节点和各第二共识节点。
可选的,所述第一备选节点还用于:针对各第二共识节点中任一第二共识节点,所述第一备选节点与所述第二共识节点之间维持心跳测试;针对各第二备选节点中任一第二备选节点,所述第一备选节点与所述第二备选节点之间维持心跳测试。
具体来说,上述系统的一种架构可以如图2所示,下面结合图2,以图2示出的系统架构为例,进一步地详细说明本发明提供的一种区块链中的共识节点容错方法。
准备阶段:
区块链上的参与机构添加N个(N为正整数,N大于或等于3)备选节点,赋予其身份证书,备选节点连接该参与机构内的共识节点,并定时同步共识节点的网络配置数据、准入凭证、区块数据等。
进一步地,每个备选节点本地维护一份共识节点信息列表,并通过心跳机制来,检测共识节点的运行状态,连接共识节点时需根据身份证书验证双方身份Verify(cert),验证通过则使用密钥协商算法(ECDH)生成共享密钥SKey,并利用共享密钥SKey进行加密通信,保证节点之间的数据传输安全。
其中通过共享密钥SK建立加密通信的方法如下:
(1)交互节点互相交换双方公钥PK和一个随机值R,<PK,R>。
(2)双方节点通过椭圆曲线算法随机生成一组临时密钥对(PubK,PriK),然后用自己的私钥对临时公钥PubK进行签名并交换。
(3)双方可以通过自己的公钥验证签名,并得到本次连接的临时公钥,使用临时公钥可以提升数据传输的安全性,防止泄露。
(4)双方使用SK作为读写密钥,并使用SK采用AES算法加密收到的随机值R,并发送给对方,接收方使用SK解密,验证R是否为第(1)步发送的随机值。
需要说明的是,上述加密通信方法不仅适用于备选节点与共识节点之间,也适用于共识节点与共识节点之间。本发明在不同节点之间如共识节点与备选节点之间、备选节点与备选节点之间都采用了基于共享协商密钥的方式,保证了节点间数据的传输安全,防止链上信息的泄露。
上述通信方法中,每个备选节点内部维护一份备选节点信息列表,备选节点之间维持心跳测试(keep-alive),新增或退出备选会通过广播方式更新该列表信息。
在准备阶段完毕之后,便进入了故障检测阶段:
当第一备选节点(如CNodeA)检测到第一共识节点(如SNode)故障时,触发以下故障检测流程:
步骤1:第一备选节点CNodeA开始收集第一共识节点SNode的疑似故障信息,第一备选节点在本地统计收集到的第一共识节点SNode疑似故障信息的数量并标记为G,同时记录统计开始时间T1。
步骤2:第一备选节点广播共识节点SNode的疑似故障信息Fail-msg至其余第二备选节点。
进一步地,每个备选节点收到其它备选节点发来的SNode疑似故障信息时,都会将其本地统计的共识节点SNode疑似故障信息数量G进行累加。
G每次累加完成后,对当前时间T2与开始时间T1求差,判断是否超过了统计的预设时长t,时间t的计算逻辑为:t=20s(秒)+N*5(如当前节点数N=3,则统计超时时间为35秒,预设时长与节点数正相关),是否超时判断如下:
T2-T1>=t;
达到了预设时长t,则表明统计超时,这时将放弃当前节点SNode的故障统计信息,等待一定时间后,开始下一个周期的故障检测统计。
步骤3:若统计未超时,继而判断当前节点统计数量G是否超过N/2个节点,即是否收到过半节点的消息,若收到了过半消息,就确认节点SNode确实发生了故障,则触发当前备选节点(如CNodeB)的替换升级机制。需要进一步说明的是,网络拓扑中采取过半数原则可以保证集群信息的一致性。
显然,上述步骤中,对于某个共识节点发生故障时,须超过半数备选节点均检测到该节点故障时,才触发替换机制,达到确认故障的目的。备选节点替换的优先级采用选举的方式在观察节点群内进行,以最先收集到半数故障信息的备选节点作为替换节点,进行升级替换。
步骤4:第一备选节点CNodeA将备份声明消息Repalce-msg发送至其余第二备选节点,其余第二备选节点收到备份声明消息后,停止对于SNode疑似故障信息的统计,并将首先发送Repalce-msg的备选节点从备选列表中去除,具体操作语句可以为:
Receive(Repalce-msg)-->RemoveCandidateNode(CNodeA);
同时将第一备选节点作为替换节点,开始替换故障的第一共识节点。
步骤5:第一备选节点CNodeA将从本地取共识节点SNode的身份凭证信息SNode.cert,尝试加入区块链。
步骤5中,第一备选节点CNodeA与各第二共识节点进行身份验证,验证通过后与其余各第二共识节点开始加密通信,正式成为新的共识节点。
步骤6:第一备选节点CNodeA作为新的共识节点后,便广播成功备份消息Success-msg至备选节点。
备选节点收到节点CNodeA的成功备份消息Success-msg后,将该新共识节点加入共识节点列表,具体操作语句如下:
Receive(Success-msg)-->AddConsensusNode(CNodeA);
同时,开始监测新共识节点CNodeA,并同步CNodeA的节点数据。
至此,故障的共识节点SNode完成自动替换升级,第一备选节点CNodeA成为新共识节点,开始参与区块链上的共识。
本发明提出了以备选节点方式来替换故障的共识节点,这些备选节点会随时同步链上共识节点的区块数据和网络状态,且单个机构内观察节点是共用的,可作为备选替换该机构所有参与共识的节点,极大节省节点资源。
如图3所示,本发明提供一种区块链中的共识节点容错装置,包括:检测模块301,用于检测区块链中的多个共识节点中是否存在故障的共识节点;第一备选节点为所述区块链外的多个备选节点中任一备选节点;所述多个备选节点包括所述第一备选节点和各第二备选节点;所述多个备选节点用于备份所述多个共识节点中故障的共识节点;处理模块302,用于若所述第一备选节点在所述多个备选节点中最先确定第一共识节点故障,则将所述第一备选节点作为所述第一共识节点;所述多个共识节点包括所述第一共识节点和各第二共识节点。
可选的,所述处理模块302具体用于:若确定与所述第一共识节点的心跳测试超时,则确定所述第一共识节点的疑似故障信息,并统计所述第一共识节点的疑似故障信息的信息总个数;所述第一共识节点的疑似故障信息包括:所述第一备选节点确定的疑似故障信息以及来自所述各第二备选节点的疑似故障信息;若在预设时长内,确定所述信息总个数大于预设阈值,则确定所述第一共识节点故障。
可选的,所述预设时长与所述多个共识节点的总数量呈正相关;所述预设阈值是根据所述多个共识节点的总数量和预设比例确定的。
可选的,所述处理模块302具体用于:针对所述各第二共识节点中任一第二共识节点,将第一身份证书发送至所述第二共识节点,且获取来自所述第二共识节点的第二身份证书;将第一主公钥和第一随机值发送至所述第二共识节点,且获取来自所述第二共识节点的第二主公钥和第二随机值;基于所述第一主公钥、所述第一随机值、所述第二主公钥和所述第二随机值,根据椭圆曲线算法,生成第一临时私钥和第一临时公钥,并通过所述第一临时私钥对所述第一临时公钥签名,获得第一签名;发送所述第一临时公钥和所述第一签名至所述第二共识节点;所述第一备选节点获取来自所述第二共识节点的第二临时公钥和第二签名,并验证所述第二签名通过;获取来自第二共识节点的第一加密信息,通过共享密钥对所述第一加密信息解密,得到所述第一随机值;通过所述共享密钥对所述第二随机值加密,获得第二加密信息,并将所述第二加密信息发送至所述第二共识节点。
可选的,所述处理模块302还用于:若在所述多个备选节点中最先确定所述第一共识节点故障,在确定所述第一共识节点故障之后,将备份声明消息发送至所述各第二备选节点;所述备份声明消息用于声明所述第一备选节点为待备份所述第一共识节点的备选节点;所述处理模块302还用于:将成功备份消息发送至所述各第二备选节点;所述成功备份消息用于声明所述第一备选节点成功备份了所述第一共识节点。
基于同一发明构思,本发明实施例还提供了一种计算机设备,包括程序或指令,当所述程序或指令被执行时,如本发明实施例提供的区块链中的共识节点容错方法及任一可选方法被执行。
基于同一发明构思,本发明实施例还提供了一种计算机可读存储介质,包括程序或指令,当所述程序或指令被执行时,如本发明实施例提供的区块链中的共识节点容错方法及任一可选方法被执行。
本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种区块链中的共识节点容错方法,其特征在于,包括:
第一备选节点检测区块链中的多个共识节点中是否存在故障的共识节点;所述第一备选节点为所述区块链外的多个备选节点中任一备选节点;所述多个备选节点包括所述第一备选节点和各第二备选节点;所述多个备选节点用于备份所述多个共识节点中故障的共识节点;
若所述第一备选节点在所述多个备选节点中最先确定第一共识节点故障,则将所述第一备选节点作为所述第一共识节点;所述多个共识节点包括所述第一共识节点和各第二共识节点。
2.如权利要求1所述的方法,其特征在于,所述第一备选节点按照以下方式确定所述第一共识节点故障:
所述第一备选节点若确定与所述第一共识节点的心跳测试超时,则确定所述第一共识节点的疑似故障信息,并统计所述第一共识节点的疑似故障信息的信息总个数;所述第一共识节点的疑似故障信息包括:所述第一备选节点确定的疑似故障信息以及来自所述各第二备选节点的疑似故障信息;
若在预设时长内,所述第一备选节点确定所述信息总个数大于预设阈值,则确定所述第一共识节点故障。
3.如权利要求2所述的方法,其特征在于,所述预设时长与所述多个共识节点的总数量呈正相关;所述预设阈值是根据所述多个共识节点的总数量和预设比例确定的。
4.如权利要求1至3任一项所述的方法,其特征在于,所述将所述第一备选节点作为所述第一共识节点,包括:
针对所述各第二共识节点中任一第二共识节点,所述第一备选节点将第一身份证书发送至所述第二共识节点,且获取来自所述第二共识节点的第二身份证书;
所述第一备选节点将第一主公钥和第一随机值发送至所述第二共识节点,且获取来自所述第二共识节点的第二主公钥和第二随机值;
所述第一备选节点基于所述第一主公钥、所述第一随机值、所述第二主公钥和所述第二随机值,根据椭圆曲线算法,生成第一临时私钥和第一临时公钥,并通过所述第一临时私钥对所述第一临时公钥签名,获得第一签名;
所述第一备选节点发送所述第一临时公钥和所述第一签名至所述第二共识节点;所述第一备选节点获取来自所述第二共识节点的第二临时公钥和第二签名,并验证所述第二签名通过;
所述第一备选节点获取来自第二共识节点的第一加密信息,通过共享密钥对所述第一加密信息解密,得到所述第一随机值;所述第一备选节点通过所述共享密钥对所述第二随机值加密,获得第二加密信息,并将所述第二加密信息发送至所述第二共识节点。
5.如权利要求1至3任一项所述的方法,其特征在于,还包括:
若所述第一备选节点在所述多个备选节点中最先确定所述第一共识节点故障,所述第一备选节点在确定所述第一共识节点故障之后,将备份声明消息发送至所述各第二备选节点;所述备份声明消息用于声明所述第一备选节点为待备份所述第一共识节点的备选节点;
所述第一备选节点将所述第一备选节点作为所述第一共识节点之后,还包括:
所述第一备选节点将成功备份消息发送至所述各第二备选节点;所述成功备份消息用于声明所述第一备选节点成功备份了所述第一共识节点。
6.一种区块链中的共识节点容错系统,其特征在于,包括:多个备选节点和多个共识节点;所述多个备选节点用于备份所述多个共识节点中故障的共识节点;
第一备选节点,用于检测所述多个共识节点中是否存在故障的共识节点;所述第一备选节点为多个备选节点中任一备选节点;所述多个备选节点包括所述第一备选节点和各第二备选节点;
所述第一备选节点,用于若在所述多个备选节点中最先确定第一共识节点故障,则将所述第一备选节点作为所述第一共识节点;所述多个共识节点包括所述第一共识节点和各第二共识节点。
7.如权利要求6所述的系统,其特征在于,所述第一备选节点还用于:
针对各第二共识节点中任一第二共识节点,所述第一备选节点与所述第二共识节点之间维持心跳测试;
针对各第二备选节点中任一第二备选节点,所述第一备选节点与所述第二备选节点之间维持心跳测试。
8.一种区块链中的共识节点容错装置,其特征在于,包括:
检测模块,用于检测区块链中的多个共识节点中是否存在故障的共识节点;第一备选节点为所述区块链外的多个备选节点中任一备选节点;所述多个备选节点包括所述第一备选节点和各第二备选节点;所述多个备选节点用于备份所述多个共识节点中故障的共识节点;
处理模块,用于若所述第一备选节点在所述多个备选节点中最先确定第一共识节点故障,则将所述第一备选节点作为所述第一共识节点;所述多个共识节点包括所述第一共识节点和各第二共识节点。
9.一种计算机设备,其特征在于,包括程序或指令,当所述程序或指令被执行时,如权利要求1至5中任意一项所述的方法被执行。
10.一种计算机可读存储介质,其特征在于,包括程序或指令,当所述程序或指令被执行时,如权利要求1至5中任意一项所述的方法被执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011293196.XA CN112380064A (zh) | 2020-11-18 | 2020-11-18 | 一种区块链中的共识节点容错方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011293196.XA CN112380064A (zh) | 2020-11-18 | 2020-11-18 | 一种区块链中的共识节点容错方法、装置及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112380064A true CN112380064A (zh) | 2021-02-19 |
Family
ID=74584130
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011293196.XA Pending CN112380064A (zh) | 2020-11-18 | 2020-11-18 | 一种区块链中的共识节点容错方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112380064A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113268382A (zh) * | 2021-04-19 | 2021-08-17 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中切换分片节点的方法及装置 |
CN113949632A (zh) * | 2021-12-21 | 2022-01-18 | 北京溪塔科技有限公司 | 一种区块链的节点动态配置方法及装置 |
-
2020
- 2020-11-18 CN CN202011293196.XA patent/CN112380064A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113268382A (zh) * | 2021-04-19 | 2021-08-17 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中切换分片节点的方法及装置 |
CN113268382B (zh) * | 2021-04-19 | 2022-08-09 | 支付宝(杭州)信息技术有限公司 | 在区块链系统中切换分片节点的方法及装置 |
CN113949632A (zh) * | 2021-12-21 | 2022-01-18 | 北京溪塔科技有限公司 | 一种区块链的节点动态配置方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110351133B (zh) | 用于区块链系统中的主节点切换处理的方法及装置 | |
US10944624B2 (en) | Changing a master node in a blockchain system | |
Cachin et al. | Non-determinism in byzantine fault-tolerant replication | |
US5625692A (en) | Method and system for a public key cryptosystem having proactive, robust, and recoverable distributed threshold secret sharing | |
CN113098907B (zh) | 一种区块链的群组划分方法与装置 | |
US20180308091A1 (en) | Fairness preserving byzantine agreements | |
Amir et al. | Secure group communication using robust contributory key agreement | |
US8189789B2 (en) | Intrusion-tolerant group management for mobile ad-hoc networks | |
CN110545286B (zh) | 加入联盟链、退出联盟链的方法、装置、设备及存储介质 | |
Schultz et al. | MPSS: mobile proactive secret sharing | |
JP2020512708A (ja) | 分散システム、メッセージ処理方法、ノード、クライアント及び記憶媒体 | |
US20190386829A1 (en) | Method and system for byzantine fault - tolerance replicating of data | |
Abraham et al. | Efficient synchronous byzantine consensus | |
CN114048517B (zh) | 区块链的双通道共识系统和方法、计算机可读存储介质 | |
Tsai et al. | Design issues in permissioned blockchains for trusted computing | |
CN112380064A (zh) | 一种区块链中的共识节点容错方法、装置及系统 | |
CN105791307B (zh) | 网络时间协议报文安全认证方法及装置 | |
CN113837758A (zh) | 一种区块链系统的共识方法及装置 | |
CN107959569B (zh) | 一种基于对称密钥池的密钥补充方法和密钥补充装置、密钥补充系统 | |
Lewis-Pye | Quadratic worst-case message complexity for state machine replication in the partial synchrony model | |
CN113630445B (zh) | 一种基于区块链网络的数据存储方法及装置 | |
Cachin | State machine replication with Byzantine faults | |
CN113691376B (zh) | 一种密钥管理方法及装置 | |
CN111988202B (zh) | 节点切换方法、装置及存储介质 | |
CN113904869A (zh) | 一种区块链中恶意节点的检测方法及区块链 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |