CN110336707A - 区块链共识装置、方法及计算机可读存储介质 - Google Patents
区块链共识装置、方法及计算机可读存储介质 Download PDFInfo
- Publication number
- CN110336707A CN110336707A CN201910727557.8A CN201910727557A CN110336707A CN 110336707 A CN110336707 A CN 110336707A CN 201910727557 A CN201910727557 A CN 201910727557A CN 110336707 A CN110336707 A CN 110336707A
- Authority
- CN
- China
- Prior art keywords
- node
- block
- host node
- undetermined
- host
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/30—Decision processes by autonomous network management units using voting and bidding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1044—Group management mechanisms
- H04L67/1051—Group master selection mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Abstract
一种区块链共识方法,包括:判断系统是否存在待定主节点;若存在,则控制每一从节点向待定主节点发送数据同步请求;控制每一从节点对接收到的同步数据区块进行验证,若验证通过,则广播验证通过消息;当从节点接收到超过第一预设个数的验证通过消息且每一验证通过信息所包含的最后一个区块的摘要符合一致性性时,将从节点从搜索状态切换为从属状态,保存同步数据区块,及发送同步完成消息至待定主节点;当待定主节点接收到超过第一预设个数的同步完成消息时,切换为领导状态,变更为正式的主节点。本发明还提供一种区块链共识装置及计算机可读存储介质。本发明可实现在主节点被选出后,进行数据同步和同步数据验证,使得每一节点保持数据同步。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及一种基于PBFT算法的区块链共识装置、方法及计算机可读存储介质。
背景技术
PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错系统)算法是区块链共识的经典算法,可以解决当系统存在恶意节点或故障节点的情况下,交易仍然可进行确认和记账。然而,现有的PBFT算法至少存在以下缺陷:主节点的真伪性未做判断,一旦选举出来的主节点是恶意节点,后续流程无法正确完成;且由于网络延迟和带宽问题,可能出现宕机、重连等故障,往往会导致节点的区块高度不一致,选举出主节点没有进行数据同步,无法保证系统中每一节点的数据同步性。
发明内容
有鉴于此,有必要提供一种区块链共识装置、方法及计算机可读存储介质,其可使得区块链系统中每一节点保持数据同步。
本发明一实施方式提供一种区块链共识方法,包括:判断区块链系统是否存在待定主节点;若所述区块链系统中存在待定主节点,则控制所述区块链系统中的每一从节点向所述待定主节点发送数据同步请求;控制每一所述从节点对接收到的同步数据区块进行合法性验证;若所述从节点对接收到的同步数据区块验证通过,则控制所述从节点广播验证通过消息,其中所述验证通过消息包含有所述同步数据区块中最后一个区块的摘要;当所述从节点接收到超过第一预设个数的验证通过消息且接收到的每一验证通过信息所包含的最后一个区块的摘要被一致性验证通过时,将所述从节点从搜索状态切换为从属状态,保存所述同步数据区块,及发送同步完成消息至所述待定主节点;及当所述待定主节点接收到超过所述第一预设个数的同步完成消息时,将所述待定主节点从待确定状态切换为领导状态,以变更为正式的主节点。
优选地,所述判断区块链系统是否存在待定主节点的步骤之后还包括:
若所述区块链系统中不存在待定主节点,则控制所述区块链系统中每一节点进入搜索状态,以投票选举主节点;及
控制得票数最高的节点进入待确定状态,以作为所述待定主节点。
优选地,所述数据同步请求包括视图编号及最大事务编号,所述控制所述区块链系统中的每一从节点向所述待定主节点发送数据同步请求的步骤之后还包括:
控制所述待定主节点对所述视图编号进行校验,以判断所述视图编号是否合法;
若所述视图编号合法,则验证所述待定主节点的最后一个区块的编号是否等于所述最大事务编号;及
若所述待定主节点的最后一个区块的编号等于所述最大事务编号,则控制所述待定主节点将所述同步数据区块发送至每一所述从节点。
优选地,所述验证所述待定主节点的最后一个区块的编号是否等于所述最大事务编号的步骤之后还包括:
若所述待定主节点的最后一个区块的编号不等于所述最大事务编号,则控制所述待定主节点根据其他节点所占有的数据区块情形确定需同步的数据区块,以将所述数据区块同步至所述待定主节点;
其中,所述数据区块为超过所述第一预设个数的从节点均占有最长链的区块。
优选地,所述控制每一所述从节点对接收到的同步数据区块进行合法性验证的步骤之后还包括:
若所述从节点对接收到的同步数据区块验证不通过,则控制所述从节点丢弃所述同步数据区块;及
若所述从节点未接收到超过所述第一预设个数的验证通过消息和/或接收到的每一验证通过信息所包含的最后一个区块的摘要进行一致性验证不通过,请求重新进行投票选举主节点;
其中,所述区块链系统包括f个恶意节点,所述第一预设个数为2f+1。
优选地,所述方法还包括:当交易发起方向所述区块链系统发送已签名的交易时,控制每一接收到所述交易的节点广播的节点对所述签名进行合法性验证;若所述签名被验证为合法,则控制所述节点缓存所述交易,并将签名验证通过的信息发送至所述主节点;当所述主节点接收到超过第二预设个数的签名验证通过的信息时,控制所述主节点基于所述交易构建一新区块,并为所述新区块形成一提案及向每一所述从节点广播所述提案;控制每一所述从节点对接收到的提案进行验证;若所述从节点对接收到的提案验证通过,则控制所述从节点广播提案确认消息,并将接收到的提案及所述提案确认消息写入日志;及当所述区块链系统中的节点接收到超过所述第一预设个数的提案确认消息时,控制所述节点对所述新区块进行记账。
优选地,所述控制每一所述从节点对接收到的提案进行验证的步骤之后还包括:
若所述从节点对接收到的提案验证不通过,则控制所述从节点广播视图变更请求,其中所述视图变更请求包含有新视图号及旧视图号;
控制其他从节点根据接收到的视图变更请求判断所述主节点是否失效,并在判定所述主节点失效时,广播视图变更确认消息;
当所述从节点在预设时间内接收到超过所述第一预设个数的视图变更确认消息时,则控制所述从节点从所述从属状态切换至所述搜索状态,以重新投票选举主节点。
优选地,所述方法还包括:当所述区块链系统中的节点在所述预设时间内未接收到超过所述第一预设个数的提案确认消息时,控制所述节点不对所述新区块进行记账。
本发明一实施方式提供一种区块链共识装置,所述装置包括处理器及存储器,所述存储器上存储有若干计算机程序,所述处理器用于执行存储器中存储的计算机程序时实现上述区块链共识方法的步骤。
本发明一实施方式还提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,多条所述指令可被一个或者多个处理器执行,以实现上述的区块链共识方法的步骤。
与现有技术相比,上述区块链共识装置、方法及计算机可读存储介质,在主节点选出后,增加数据同步和验证环节,实现节点数据同步并验证主节点的真伪性,保证每一节点数据同步性,同时确保主节点可信。
附图说明
图1是本发明一实施方式的区块链系统的架构示意图。
图2是本发明一实施方式的区块链共识装置的功能模块图。
图3是本发明一实施方式的区块链共识程序的功能模块图。
图4是本发明一实施方式的区块链共识方法的流程图。
主要元件符号说明
如下具体实施方式将结合上述附图进一步说明本发明。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
进一步需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
请参阅图1,为本发明区块链系统较佳实施例的架构示意图。
所述区块链系统1包括区块链网络及区块链。所述区块链网络包括多个节点,不同的节点对应不同的区块链参与者,该多个节点可以被分成两种类型:主节点和从节点。图1示出了区块链系统1包括节点A、B、C、D,但并不是以四个节点为限,更多的节点在图1中未示出。以区块链系统1包括Q个节点为例,节点编号可以为{P0,P1,…,P(Q-1)},设恶意节点数量为f,Q的值优选满足以下条件:Q>=3f+1。每一节点可以存在以下四种状态:搜索(Searching)状态、待确定(Undetermined)状态、领导(mastering)状态、从属(slaving)状态。
请同时参阅图2,为本发明区块链共识装置较佳实施例的示意图。
所述区块链共识装置100包括存储器10、处理器20以及存储在所述存储器10中并可在所述处理器20上运行的区块链共识程序30。所述处理器20执行所述区块链共识程序30时实现数据处理方法实施例中的步骤,例如图4所示的步骤S400~S412。或者,所述处理器20执行所述区块链共识程序30时实现区块链共识程序实施例中各模块的功能,例如图3中的模块101~107。
所述区块链共识程序30可以被分割成一个或多个模块,所述一个或者多个模块被存储在所述存储器10中,并由所述处理器20执行,以完成本发明。所述一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,所述指令段用于描述所述区块链共识程序30在所述区块链共识装置100中的执行过程。例如,所述区块链共识程序30可以被分割成图3中的判断模块101、第一控制模块102、第二控制模块103、第一切换模块104、第二切换模块105、第三控制模块106及第四控制模块107。各模块具体功能参见下图3中各模块的功能。
本领域技术人员可以理解,所述示意图仅是区块链共识装置100的示例,并不构成对区块链共识装置100的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述区块链共识装置100还可以包括网络接入设备、总线等。
所称处理器20可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者所述处理器20也可以是任何常规的处理器等,所述处理器20可以利用各种接口和总线连接区块链共识装置100的各个部分。
所述存储器10可用于存储所述区块链共识程序30和/或模块,所述处理器20通过运行或执行存储在所述存储器10内的计算机程序和/或模块,以及调用存储在存储器10内的数据,实现所述区块链共识装置100的各种功能。所述存储器10可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart MediaCard,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
图3为本发明区块链共识程序较佳实施例的功能模块图。
参阅图3所示,区块链共识程序30可以包括判断模块101、第一控制模块102、第二控制模块103、第一切换模块104、第二切换模块105、第三控制模块106及第四控制模块107。在一实施方式中,上述模块可以为存储于所述存储器10中且可被所述处理器20调用执行的可程序化软件指令。可以理解的是,在其他实施方式中,上述模块也可为固化于所述处理器20中的程序指令或固件(firmware)。
所述判断模块101用于判断区块链系统1是否存在待定主节点。
在一实施方式中,所述判断模块101可以根据所述区块链系统1中每一节点的状态来判断是否存在待定主节点。若所述区块链系统1中不存在待定主节点,则每一节点进行投票选举来推选主节点。具体地,可以控制所述区块链系统1中每一节点进入搜索状态,以投票选举主节点,得票数最高的节点进入待确定状态,以作为所述待定主节点。
在一实施方式中,所述区块链系统1优选在一时刻只有一个待定主节点或主节点,当确定了某一节点为待定主节点或主节点时,其他节点为从节点。当待定主节点被确认为可信后,才会被切换成主节点。
所述第一控制模块102用于在所述区块链系统1中存在待定主节点时,控制所述区块链系统1中的每一从节点向所述待定主节点发送数据同步请求。
在一实施方式中,若所述区块链系统1中存在待定主节点,则区块链系统1中的其他节点为从节点。比如,以区块链系统1包括Q个节点为例,编号为1的节点为待定主节点,则其余编号为{0,2,3,…,Q-1}的节点为从节点。
在一实施方式中,每一从节点需要与占有最长链的待定主节点同步数据,具体地,所述第一控制模块102可以控制所述区块链系统1中的每一从节点向所述待定主节点发送数据同步请求,以同步所述待定主节点的数据。
在一实施方式中,从节点向待定主节点发送的同步请求消息可以是:<SYN-REQUEST,v,v_nid,Mi,i>,其中,v是视图编号(任期编号),v_nid是该节点已经提交的最大事务编号,Mi是消息签名,i为该节点自身的编号。比如,当待定主节点接收到编号为2的从节点P2发送的同步请求消息时,可以控制所述待定主节点对同步请求消息中的视图编号进行校验,以判断视图编号是否合法,若所述视图编号合法,则待定主节点继续验证自身的最后一个区块的编号是否等于同步请求消息中的最大事务编号;若所述待定主节点的最后一个区块的编号等于所述最大事务编号,则所述待定主节点发送请求同步成功消息给该编号为2的从节点P2,同时还会将同步数据区块发送至该编号为2的从节点P2。所述请求同步成功消息可以是:<SYN-SUCCESS,v,Mi,i>。所述待定主节点自身存储了视图编号,可以将同步请求消息中的视图编号与自身存储的视图编号进行比对,以判断同步请求消息中的视图编号是否合法。
在一实施方式中,若所述待定主节点的最后一个区块的编号不等于所述最大事务编号,所述待定主节点可以依据其他节点所占有的数据区块情况,确定需要同步的数据区块,然后向其他节点发送数据同步消息,当所述待定主节点完成数据同步后,再参考上述同步方式实现将同步数据同步至其他需要同步的从节点。该数据同步消息可以为:<<SYN-DATA,v,Mi,i>,blocks>,其中blocks为需同步的数据区块。具体地,若所述待定主节点的最后一个区块的编号不等于所述最大事务编号,则所述待定主节点需要先完成自身的数据同步,然后再同步至其他需同步的节点。当所述待定主节点进行数据同步时,所述待定主节点可以找出2f+1(f为恶意节点数量)个从节点均占有最长链的待同步数据,然后将该待同步数据同步在待定主节点,当待定主节点完成数据同步后,其他需同步的从节点可以与所述待定主节点进行数据同步。
所述第二控制模块103用于控制每一所述从节点对接收到的同步数据区块进行合法性验证。
在一实施方式中,当从节点接收到待定主节点返回的同步数据区块后,需要对所述同步数据区块进行合法性验证。所述第二控制模块103可以控制每一从节点对其接收到的同步数据区块进行合法性验证。
在一实施方式中,对同步数据区块进行合法性验证可以是对同步数据区块中的必要信息进行验证。可以理解的,数据区块包含有上一个区块的哈希值(PreHash)及本区块体的哈希值(Hash),所述必要信息可以是“PreHash”。
在一实施方式中,若从节点P2对接收到的同步数据区块验证通过,则可以控制从节点P2广播验证通过消息,所述验证通过消息可以是:<SYN-ACK,v,Mi,i,d>,其中d代表同步数据区块最后一个区块的摘要。即所述验证通过消息包含有所述同步数据区块中最后一个区块的摘要d。若从节点P2对接收到的同步数据区块验证不通过,则表明该待定主节点不可信,可能为恶意节点或者故障节点,所述第二控制模块103可以控制从节点P2丢弃所述同步数据区块。
所述第一切换模块104用于在所述从节点接收到超过第一预设个数的验证通过消息且接收到的每一验证通过信息所包含的最后一个区块的摘要被一致性验证通过时,将所述从节点从搜索状态切换为从属状态,保存所述同步数据区块,及发送同步完成消息至所述待定主节点。
在一实施方式中,所述第一预设个数可以是2f+1个。当一从节点对接收到的同步数据区块验证通过后会广播验证通过消息,其他节点可以接收到其广播的验证通过消息。当某一从节点接收到超过第一预设个数的验证通过消息时,表明至少有2f+1个从节点已经对同步数据区块验证通过。进一步地,由于每一验证通过消息均包含有同步数据区块中最后一个区块的摘要d,当对每一验证通过信息所包含的最后一个区块的摘要d进行一致性验证时,若一致性验证通过,则表明所述待定主节点发送给每个从节点的同步数据区块都是相同的,所述待定主节点的身份可以得到确认。
以从节点P2为例进行举例说明,当从节点P2接收到超过2f+1个的验证通过消息且该些验证通过信息所包含的最后一个区块的摘要d均相同时,所述第一切换模块104可以将从节点P2从搜索状态切换为从属状态,从节点P2保存所述同步数据区块并发送同步完成消息至所述待定主节点。所述同步完成消息可以是:<SYN-ACHIEVE,v,Mi,i>。
当从节点P2未接收到超过2f+1个的验证通过消息和/或从节点P2接收到的每一验证通过信息所包含的最后一个区块的摘要一致性验证不通过时,表明该待定主节点不可信,可能为恶意节点或故障节点,从节点P2可以请求重新进行投票选举主节点。
在一实施方式中,当有超过2f+1个从节点请求重新进行投票选举主节点时,区块链系统1进入重新推举主节点阶段,每一节点重新进行投票选举来推选主节点,得票数最高的节点进入待确定状态,以重新作为待定主节点。
所述第二切换模块105用于在所述待定主节点接收到超过所述第一预设个数的同步完成消息时,将所述待定主节点从待确定状态切换为领导状态,进而使得所述待定主节点变更为正式的主节点,视图编号v自增1。
在一实施方式中,当所述待定主节点接收到超过所述第一预设个数(2f+1)的同步完成消息时,代表有足够多的从节点认可自己,所述第二切换模块105可以将所述待定主节点从待确定状态切换为领导状态,以变更为正式的主节点,实现确保选举出的主节点是可信的。当所述待定主节点未接收到超过2f+1个的同步完成消息时,代表没有足够多的从节点认可自己,无法切换为正式的主节点,可以重新进行主节点投票选举阶段。
在一实施方式中,区块链系统1中的任意两个节点之间可以发起交易。当交易发起方向区块链系统1发送已签名的交易时,其会广播该笔交易的信息,进而区块链系统1中的其他节点可以接收到该笔交易的节点广播。所述节点广播包含有交易发起方的签名。即当有交易发生时,交易发起方会广播该笔交易的信息,每一节点都会记录该笔交易的信息,进而可以在后续主节点基于该笔交易进行提案创建时,从节点可以依据自身记录的信息对主节点广播的提案进行验证。
所述第三控制模块106用于控制每一接收到所述交易的节点广播的节点对签名进行合法性验证。
举例而言,假设节点P3接收到该笔交易的节点广播,则节点P3可以对该节点广播中包含的签名进行合法性验证。该节点P3可以是主节点或者从节点。当所述签名被验证为合法,表明该笔交易是合法的,则第三控制模块106可控制所述节点P3缓存所述交易,并将签名验证通过的信息发送至所述主节点。可以理解的,当节点P3是主节点,则只需要控制节点P3缓存所述交易即可。当节点P3是从节点,则需要控制节点P3缓存所述交易,并同时将签名验证通过的信息发送至主节点。
当主节点接收到超过第二预设个数的签名验证通过的信息时,表明有足够多的从节点对该笔交易的签名验证通过,所述第三控制模块106可以控制所述主节点基于所述交易构建一新区块,并为所述新区块形成一提案及向每一所述从节点广播所述提案。所述主节点同时会为所述提案分配一个编号,假设编号为n。所述第二预设个数可以根据实际需要进行设定,比如所述第二预设个数同样可以设置为2f+1。所述提案可以是:<<PROPOSAL,v,n,Mi,Di>,block>。其中,Di表示消息摘要,block表示该新区块。
在一实施方式中,当主节点在预设时间内接收到超过第二预设个数的签名验证通过的信息时,所述第三控制模块106控制所述主节点基于所述交易构建一新区块,该预设时间可以根据实际需求进行设定,在此不作限定。
当从节点接收到主节点广播的提案后,可以对接收到的提案进行验证。在一实施方式中,从节点可以对提案中的“v,n,Mi,Di”等信息进行验证,如果某一从节点验证通过,该从节点可以进入确认阶段,如果某一从节点验证不通过,则该从节点可以对主节点的可信性表示质疑,该从节点可以广播视图变更请求,以请求推翻当前主节点。
在一实施方式中,所述视图变更请求可以是:<VIEW_CHANGE,v_new,v_old,Mi,i>。其中,v_new是新视图编号,v_old是旧视图编号,v_new=v_old+1。其他从节点接收到该从节点广播的视图变更请求时,可以验证v_old是否和自身存储的视图编号一致,且验证是否v_new=v_old+1,以确认当前主节点是否失效,如果认定当前主节点并未失效,则丢弃接收到的视图变更请求;如果认为当前主节点失效,则广播视图变更确认消息给其他节点。所述视图变更确认消息可以是:<VIEW_CHANGE_CONFIRM,v_new,v_old,Mi,i>。
当一从节点接收到超过2f+1个的视图变更确认消息时,表明大多数从节点均认为当前主节点失效,该从节点可以从从属状态切换至搜索状态,以重新投票选举主节点。
举例而言,从节点P2对其接收到的提案验证不通过,该从节点P2可以广播视图变更请求给其他节点,以请求推翻当前主节点。当从节点P3接收到从节点P2广播的视图变更请求时,从节点P3可以验证v_old是否和自身存储的视图编号一致,且验证是否v_new=v_old+1,如果v_old和自身存储的视图编号一致且v_new=v_old+1,则从节点P3认为当前主节点并未失效,可以丢弃从节点P2广播的视图变更请求,否则从节点P3认为当前主节点失效,从节点P3将会广播视图变更确认消息给其他节点。同样地,其他从节点也会对从节点P2广播的视图变更请求进行确认。当从节点P3接收到超过2f+1个的视图变更确认消息时,表明大多数从节点均认为当前主节点失效,从节点P3可以从从属状态切换至搜索状态,以重新投票选举主节点。
在一实施方式中,再次以从节点P2为例进行举例说明,当从节点P2接收到主节点广播的提案并对该提案验证通过时,所述从节点P2可以进入确认阶段。当从节点P2进入确认阶段时,从节点P2可以向除自己之外的其他节点广播提案确认消息。该提案确认消息可以是:<CONFIRM,v,n,Mi,Di,i>。该从节点P2还可以将接收到的提案及所述提案确认消息写入自身的日志中。
在一实施方式中,由于每一从节点均可以在接收到主节点广播的提案并对提案验证通过时,向除自己之外的其他节点广播提案确认消息。当区块链系统1中的某一节点接收到超过2f+1个的提案确认消息时,所述第四控制模块107可以控制该节点对所述新区块进行记账。
当区块链系统1中的某一节点在预设时间内接收到超过2f+1个的提案确认消息时,所述第四控制模块107可以控制该节点对所述新区块进行记账。当所述区块链系统1中的某一节点在所述预设时间内未接收到超过2f+1个的提案确认消息时,则该节点不对所述新区块进行记账。所述预设时间可以根据实际使用需求进行设定,在此不作限定。
在一实施方式中,节点对所述新区块进行记账的方式可以是将新区块添加至自身的区块链的尾部。
图4为本发明一实施方式中区块链共识方法的流程图。根据不同的需求,所述流程图中步骤的顺序可以改变,某些步骤可以省略。
步骤S400,判断区块链系统是否存在待定主节点。
步骤S402,若所述区块链系统中不存在待定主节点,则控制所述区块链系统中每一节点进入搜索状态,以投票选举主节点。
步骤S404,若所述区块链系统中存在待定主节点,则控制所述区块链系统中的每一从节点向所述待定主节点发送数据同步请求。
步骤S406,控制每一所述从节点对接收到的同步数据区块进行合法性验证。
步骤S408,若所述从节点对接收到的同步数据区块验证通过,则控制所述从节点广播验证通过消息。其中所述验证通过消息包含有所述同步数据区块中最后一个区块的摘要。
步骤S410,当所述从节点接收到超过第一预设个数的验证通过消息且接收到的每一验证通过信息所包含的最后一个区块的摘要被一致性验证通过时,将所述从节点从搜索状态切换为从属状态,保存所述同步数据区块,及发送同步完成消息至所述待定主节点。
步骤S412,当所述待定主节点接收到超过所述第一预设个数的同步完成消息时,将所述待定主节点从待确定状态切换为领导状态,以变更为正式的主节点。
上述区块链共识装置、方法及计算机可读存储介质,在主节点选出后,增加数据同步和验证环节,同步数据并验证主节点的真伪,使得每一节点保持数据同步,并且确保主节点可信,同时增加了节点缓存机制,使得所有节点都可以在接收到一笔交易时缓存该交易信息,当节点接收到超过预设数量的提案确认消息时即可立即记账,且任意从节点一旦怀疑主节点时,便可广播视图变更请求,从而触发视图变更确认流程。
对本领域的技术人员来说,可以根据本发明的发明方案和发明构思结合生产的实际需要做出其他相应的改变或调整,而这些改变和调整都应属于本发明所公开的范围。
Claims (10)
1.一种区块链共识方法,其特征在于,包括:
判断区块链系统是否存在待定主节点;
若所述区块链系统中存在待定主节点,则控制所述区块链系统中的每一从节点向所述待定主节点发送数据同步请求;
控制每一所述从节点对接收到的同步数据区块进行合法性验证;
若所述从节点对接收到的同步数据区块验证通过,则控制所述从节点广播验证通过消息,其中所述验证通过消息包含有所述同步数据区块中最后一个区块的摘要;
当所述从节点接收到超过第一预设个数的验证通过消息且接收到的每一验证通过信息所包含的最后一个区块的摘要被一致性验证通过时,将所述从节点从搜索状态切换为从属状态,保存所述同步数据区块,及发送同步完成消息至所述待定主节点;及
当所述待定主节点接收到超过所述第一预设个数的同步完成消息时,将所述待定主节点从待确定状态切换为领导状态,以变更为正式的主节点。
2.如权利要求1所述的方法,其特征在于,所述判断区块链系统是否存在待定主节点的步骤之后还包括:
若所述区块链系统中不存在待定主节点,则控制所述区块链系统中每一节点进入搜索状态,以投票选举主节点;及
控制得票数最高的节点进入待确定状态,以作为所述待定主节点。
3.如权利要求1所述的方法,其特征在于,所述数据同步请求包括视图编号及最大事务编号,所述控制所述区块链系统中的每一从节点向所述待定主节点发送数据同步请求的步骤之后还包括:
控制所述待定主节点对所述视图编号进行校验,以判断所述视图编号是否合法;
若所述视图编号合法,则验证所述待定主节点的最后一个区块的编号是否等于所述最大事务编号;及
若所述待定主节点的最后一个区块的编号等于所述最大事务编号,则控制所述待定主节点将所述同步数据区块发送至每一所述从节点。
4.如权利要求3所述的方法,其特征在于,所述验证所述待定主节点的最后一个区块的编号是否等于所述最大事务编号的步骤之后还包括:
若所述待定主节点的最后一个区块的编号不等于所述最大事务编号,则控制所述待定主节点根据其他节点所占有的数据区块情形确定需同步的数据区块,以将所述数据区块同步至所述待定主节点;
其中,所述数据区块为超过所述第一预设个数的从节点均占有最长链的区块。
5.如权利要求1所述的方法,其特征在于,所述控制每一所述从节点对接收到的同步数据区块进行合法性验证的步骤之后还包括:
若所述从节点对接收到的同步数据区块验证不通过,则控制所述从节点丢弃所述同步数据区块;及
若所述从节点未接收到超过所述第一预设个数的验证通过消息和/或接收到的每一验证通过信息所包含的最后一个区块的摘要进行一致性验证不通过,请求重新进行投票选举主节点;
其中,所述区块链系统包括f个恶意节点,所述第一预设个数为2f+1。
6.如权利要求1所述的方法,其特征在于,所述方法还包括:
当交易发起方向所述区块链系统发送已签名的交易时,控制每一接收到所述交易的节点广播的节点对所述签名进行合法性验证;
若所述签名被验证为合法,则控制所述节点缓存所述交易,并将签名验证通过的信息发送至所述主节点;
当所述主节点接收到超过第二预设个数的签名验证通过的信息时,控制所述主节点基于所述交易构建一新区块,并为所述新区块形成一提案及向每一所述从节点广播所述提案;
控制每一所述从节点对接收到的提案进行验证;
若所述从节点对接收到的提案验证通过,则控制所述从节点广播提案确认消息,并将接收到的提案及所述提案确认消息写入日志;及
当所述区块链系统中的节点接收到超过所述第一预设个数的提案确认消息时,控制所述节点对所述新区块进行记账。
7.如权利要求6所述的方法,其特征在于,所述控制每一所述从节点对接收到的提案进行验证的步骤之后还包括:
若所述从节点对接收到的提案验证不通过,则控制所述从节点广播视图变更请求,其中所述视图变更请求包含有新视图编号及旧视图编号;
控制其他从节点根据接收到的视图变更请求判断所述主节点是否失效,并在判定所述主节点失效时,广播视图变更确认消息;
当所述从节点在预设时间内接收到超过所述第一预设个数的视图变更确认消息时,则控制所述从节点从所述从属状态切换至所述搜索状态,以重新投票选举主节点。
8.如权利要求6所述的方法,其特征在于,所述方法还包括:
当所述区块链系统中的节点在所述预设时间内未接收到超过所述第一预设个数的提案确认消息时,控制所述节点不对所述新区块进行记账。
9.一种区块链共识装置,所述装置包括处理器及存储器,所述存储器上存储有若干计算机程序,其特征在于,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1-8任一项所述的区块链共识方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有多条指令,多条所述指令可被一个或者多个处理器执行,以实现如权利要求1-8任一项所述的区块链共识方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910727557.8A CN110336707A (zh) | 2019-08-07 | 2019-08-07 | 区块链共识装置、方法及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910727557.8A CN110336707A (zh) | 2019-08-07 | 2019-08-07 | 区块链共识装置、方法及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110336707A true CN110336707A (zh) | 2019-10-15 |
Family
ID=68148867
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910727557.8A Pending CN110336707A (zh) | 2019-08-07 | 2019-08-07 | 区块链共识装置、方法及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110336707A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110855791A (zh) * | 2019-11-18 | 2020-02-28 | 腾讯科技(深圳)有限公司 | 一种区块链节点部署方法及相关设备 |
CN111049928A (zh) * | 2019-12-24 | 2020-04-21 | 北京奇艺世纪科技有限公司 | 数据同步方法、系统、电子设备及计算机可读存储介质 |
CN111277645A (zh) * | 2020-01-16 | 2020-06-12 | 深圳市网心科技有限公司 | 主备节点热切换方法、区块链系统、区块链节点及介质 |
CN111274317A (zh) * | 2020-01-07 | 2020-06-12 | 书生星际(北京)科技有限公司 | 多节点数据同步的方法和装置,以及计算机设备 |
CN111327414A (zh) * | 2020-01-20 | 2020-06-23 | 布比(北京)网络技术有限公司 | 一种区块链共识方法、系统及计算机存储介质、电子设备 |
CN112486736A (zh) * | 2020-12-28 | 2021-03-12 | 山西中液互联能源有限公司 | 一种基于区块链数据备份系统及备份方法 |
CN112527901A (zh) * | 2020-12-10 | 2021-03-19 | 杭州比智科技有限公司 | 数据存储系统、方法、计算设备及计算机存储介质 |
CN112835854A (zh) * | 2021-02-01 | 2021-05-25 | 北京百度网讯科技有限公司 | 文件存储方法、装置、电子设备和存储介质 |
CN114047899A (zh) * | 2022-01-12 | 2022-02-15 | 南京金宁汇科技有限公司 | 一种区块链的视图同步方法及系统 |
CN114338715A (zh) * | 2021-12-31 | 2022-04-12 | 杭州趣链科技有限公司 | 数据同步方法、区块链系统、终端设备及存储介质 |
CN115225639A (zh) * | 2022-09-15 | 2022-10-21 | 杭州趣链科技有限公司 | 共识可信集群的变更方法、装置、计算机设备及介质 |
CN116915796A (zh) * | 2023-09-14 | 2023-10-20 | 杭州趣链科技有限公司 | 集群视图分叉后的自主恢复方法、装置以及电子设备 |
CN117834656A (zh) * | 2024-03-06 | 2024-04-05 | 广州优刻谷科技有限公司 | 一种边缘计算跨域同步方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107368507A (zh) * | 2017-03-28 | 2017-11-21 | 阿里巴巴集团控股有限公司 | 一种基于区块链的共识方法及装置 |
CN109347804A (zh) * | 2018-09-19 | 2019-02-15 | 电子科技大学 | 一种用于区块链的拜占庭容错共识优化方法 |
CN109559120A (zh) * | 2018-12-03 | 2019-04-02 | 国网电子商务有限公司 | 基于权重的区块链共识方法、系统、存储介质及电子设备 |
US10360191B2 (en) * | 2016-10-07 | 2019-07-23 | International Business Machines Corporation | Establishing overlay trust consensus for blockchain trust validation system |
-
2019
- 2019-08-07 CN CN201910727557.8A patent/CN110336707A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10360191B2 (en) * | 2016-10-07 | 2019-07-23 | International Business Machines Corporation | Establishing overlay trust consensus for blockchain trust validation system |
CN107368507A (zh) * | 2017-03-28 | 2017-11-21 | 阿里巴巴集团控股有限公司 | 一种基于区块链的共识方法及装置 |
CN109347804A (zh) * | 2018-09-19 | 2019-02-15 | 电子科技大学 | 一种用于区块链的拜占庭容错共识优化方法 |
CN109559120A (zh) * | 2018-12-03 | 2019-04-02 | 国网电子商务有限公司 | 基于权重的区块链共识方法、系统、存储介质及电子设备 |
Non-Patent Citations (1)
Title |
---|
甘俊等: "区块链实用拜占庭容错共识算法的改进", 《计算机应用》 * |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110855791B (zh) * | 2019-11-18 | 2021-07-27 | 腾讯科技(深圳)有限公司 | 一种区块链节点部署方法及相关设备 |
CN110855791A (zh) * | 2019-11-18 | 2020-02-28 | 腾讯科技(深圳)有限公司 | 一种区块链节点部署方法及相关设备 |
CN111049928A (zh) * | 2019-12-24 | 2020-04-21 | 北京奇艺世纪科技有限公司 | 数据同步方法、系统、电子设备及计算机可读存储介质 |
CN111049928B (zh) * | 2019-12-24 | 2022-03-29 | 北京奇艺世纪科技有限公司 | 数据同步方法、系统、电子设备及计算机可读存储介质 |
CN111274317A (zh) * | 2020-01-07 | 2020-06-12 | 书生星际(北京)科技有限公司 | 多节点数据同步的方法和装置,以及计算机设备 |
CN111277645A (zh) * | 2020-01-16 | 2020-06-12 | 深圳市网心科技有限公司 | 主备节点热切换方法、区块链系统、区块链节点及介质 |
CN111277645B (zh) * | 2020-01-16 | 2023-02-10 | 深圳市迅雷网络技术有限公司 | 主备节点热切换方法、区块链系统、区块链节点及介质 |
CN111327414A (zh) * | 2020-01-20 | 2020-06-23 | 布比(北京)网络技术有限公司 | 一种区块链共识方法、系统及计算机存储介质、电子设备 |
CN112527901A (zh) * | 2020-12-10 | 2021-03-19 | 杭州比智科技有限公司 | 数据存储系统、方法、计算设备及计算机存储介质 |
CN112486736A (zh) * | 2020-12-28 | 2021-03-12 | 山西中液互联能源有限公司 | 一种基于区块链数据备份系统及备份方法 |
CN112835854A (zh) * | 2021-02-01 | 2021-05-25 | 北京百度网讯科技有限公司 | 文件存储方法、装置、电子设备和存储介质 |
CN114338715A (zh) * | 2021-12-31 | 2022-04-12 | 杭州趣链科技有限公司 | 数据同步方法、区块链系统、终端设备及存储介质 |
CN114047899A (zh) * | 2022-01-12 | 2022-02-15 | 南京金宁汇科技有限公司 | 一种区块链的视图同步方法及系统 |
CN114047899B (zh) * | 2022-01-12 | 2022-03-18 | 南京金宁汇科技有限公司 | 一种区块链的视图同步方法及系统 |
CN115225639A (zh) * | 2022-09-15 | 2022-10-21 | 杭州趣链科技有限公司 | 共识可信集群的变更方法、装置、计算机设备及介质 |
CN115225639B (zh) * | 2022-09-15 | 2022-12-27 | 杭州趣链科技有限公司 | 共识可信集群的变更方法、装置、计算机设备及介质 |
CN116915796A (zh) * | 2023-09-14 | 2023-10-20 | 杭州趣链科技有限公司 | 集群视图分叉后的自主恢复方法、装置以及电子设备 |
CN116915796B (zh) * | 2023-09-14 | 2023-12-12 | 杭州趣链科技有限公司 | 集群视图分叉后的自主恢复方法、装置以及电子设备 |
CN117834656A (zh) * | 2024-03-06 | 2024-04-05 | 广州优刻谷科技有限公司 | 一种边缘计算跨域同步方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110336707A (zh) | 区块链共识装置、方法及计算机可读存储介质 | |
CN107579848B (zh) | 实用拜占庭容错共识机制中动态更改共识节点的方法 | |
CN105511805B (zh) | 集群文件系统的数据处理方法和装置 | |
CN102308559B (zh) | 一种用于集群计算机系统的投票仲裁方法及装置 | |
CN111767347B (zh) | 共识算法的切换方法、装置、节点设备及存储介质 | |
CN107040594A (zh) | 基于pbft的许可区块链节点准入的方法及装置 | |
US11165766B2 (en) | Implementing authentication protocol for merging multiple server nodes with trusted platform modules utilizing provisioned node certificates to support concurrent node add and remove | |
CN114301972B (zh) | 一种基于云边协同的区块链节点分级部署方法和系统 | |
CN111683118B (zh) | 基于区块链的共识方法、装置、主节点设备及从节点设备 | |
CN110784331B (zh) | 一种共识流程恢复方法及相关节点 | |
CN110602108B (zh) | 基于区块链网络的数据通信方法、装置、设备及存储介质 | |
CN109919760A (zh) | 基于投票机制的拜占庭容错共识算法 | |
CN111737104A (zh) | 区块链网络服务平台及其测试用例共享方法、存储介质 | |
CN106330786A (zh) | Mac地址的同步方法、装置及系统 | |
CN116107828A (zh) | 主节点选择方法、分布式数据库及存储介质 | |
CN112583712A (zh) | 区块链路由器及区块链网络 | |
CN114244835A (zh) | 基于区块链的去中心化自适应协同训练方法和装置 | |
CN113890739B (zh) | 跨区块链的认证方法、装置、电子设备及介质 | |
CN113220421B (zh) | 一种服务器集群的管理方法、管理服务器及管理系统 | |
CN106576068B (zh) | 一种软件安全验证方法、设备及系统 | |
CN113810216A (zh) | 一种集群的故障切换方法、装置及电子设备 | |
KR102285882B1 (ko) | 가변 정족수 기반의 블록체인 합의 방법, 이를 이용하는 블록체인 노드 및 프로그램 | |
CN110708383B (zh) | 区块链节点的网络连接方法及相关设备 | |
Mao et al. | Towards low latency state machine replication for uncivil wide-area networks | |
CN112650626A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191015 |