CN111147261B - 在区块链中使用HotStuff共识算法的方法及*** - Google Patents
在区块链中使用HotStuff共识算法的方法及*** Download PDFInfo
- Publication number
- CN111147261B CN111147261B CN201911414474.XA CN201911414474A CN111147261B CN 111147261 B CN111147261 B CN 111147261B CN 201911414474 A CN201911414474 A CN 201911414474A CN 111147261 B CN111147261 B CN 111147261B
- Authority
- CN
- China
- Prior art keywords
- block
- node
- stage
- certificate
- submission
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 34
- 230000008569 process Effects 0.000 claims abstract description 15
- 230000000977 initiatory effect Effects 0.000 claims abstract description 10
- 230000002085 persistent effect Effects 0.000 claims description 11
- 238000004806 packaging method and process Methods 0.000 claims description 6
- 238000005516 engineering process Methods 0.000 abstract description 4
- 238000012795 verification Methods 0.000 abstract description 3
- OLBCVFGFOZPWHH-UHFFFAOYSA-N propofol Chemical compound CC(C)C1=CC=CC(C(C)C)=C1O OLBCVFGFOZPWHH-UHFFFAOYSA-N 0.000 description 9
- 229960004134 propofol Drugs 0.000 description 9
- 238000013461 design Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 241000408529 Libra Species 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- 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/3263—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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
-
- 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/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/3263—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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
- H04L9/3268—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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate validation, registration, distribution or revocation, e.g. certificate revocation list [CRL]
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种在区块链中使用HotStuff共识算法的方法及***,方法包括:通过领导节点发起提案,并将该提案广播给副本节点,生成预备证书;领导节点将所述预备证书广播给副本节点,生成预提交证书;领导节点将所述预提交证书广播给副本节点,生成提交证书;领导节点将所述提交证书广播给副本节点,由所有副本节点执行所述提案;根据所述流水表和所述区块数据表,进行节点重启;根据所述流水表和所述区块数据表,进行节点的初次启动。本发明加入了节点初次启动和节点重启的步骤,提高了工程化过程的完备程度,完善区块链***的正常运行,能够保证共识证明过程的数据完整性,便于后续节点数据的同步和验证,可广泛应用于区块链技术领域。
Description
技术领域
本发明涉及区块链技术领域,尤其是一种在区块链中使用HotStuff共识算法的方法及***。
背景技术
HotStuff算法是一个针对区块链的PBFT类共识算法,比如Facebook的区块链项目Libra采用的共识算法就是基于HotStuff算法,该算法通过聚合签名和流水线设计,使得算法的通信复杂度和计算复杂度都下降到O(n)。
在HotStuff算法下,针对每一个区块的共识,分为四个阶段:预备阶段(Prepare),预提交阶段(Pre-commit),提交阶段(Commit),决定阶段(Decide),其中前三个阶段本质上都是通过“投票”动作来实现,即在Prepare,Pre-commit,Commit阶段都进行一次投票,当且仅当投票票数超过节点总数的2/3表示该阶段共识成功,并进入下一个阶段。每一个阶段的投票结果用QC(Quorum Certificate)来表示。在流水线设计中,将相邻区块的共识阶段的“投票”动作进行复用,即第一个区块的Pre-commit阶段同时完成第二个区块的Prepare阶段,第一个区块的Commit阶段同时完成第二个区块的Pre-commit阶段以及第三个区块的Prepare阶段,第一个区块的Decide阶段同时是第二个区块的Commit阶段,第三个区块的Pre-commit阶段以及第四个区块的Prepare阶段,并以此类推,相邻区块使用区块哈希值作为指向关系。在具体的流水线设计中,共识过程由多个轮次组成,每一个轮次称作一个视图(View),每一个View有一个Leader节点,每一个View中重复相同的动作,即每一个View的Leader节点将上一个View中的投票结果和本阶段的提出的区块同时广播给其他节点,本View中的Leader收集本阶段的投票结果然后发送给下一轮的Leader节点。每一个投票表示对提出的区块以及祖先区块(通过哈希值追溯)的“投票”,也就是确认投票结果或者是确认提交。
在HotStuff共识算法中,当且仅当一个区块到了Decide阶段,该区块才算真正意义上的被共识完成。而每一个区块需要经历四个阶段才能最终被共识,在现有技术的HotStuff算法中只提供了使用算法的分布式***的初次启动以及正常运行的过程的实现,但是并没有分布式***节点全部重启的处理方法。在实际的情况中,特别是区块链中的联盟链中,存在节点重启的问题,如果没有针对节点重启的考虑,在工程化过程中就会存在不完备的情况,最终导致整个区块链***无法正常运行。
发明内容
有鉴于此,本发明实施例提供一种能够进行节点重启以及节点初次启动的,在区块链中使用HotStuff共识算法的方法及***。
本发明的第一方面提供了一种在区块链中使用HotStuff共识算法的方法,包括预备阶段、预提交阶段、提交阶段和决定阶段;其中,
所述预备阶段包括:通过领导节点发起提案,并将该提案广播给副本节点,生成预备证书;所述预提交阶段包括:领导节点将所述预备证书广播给副本节点,生成预提交证书;
所述提交阶段包括:领导节点将所述预提交证书广播给副本节点,生成提交证书;
所述决定阶段包括:领导节点将所述提交证书广播给副本节点,由所有副本节点执行所述提案;
其中,当区块处于预提交阶段时,将该区块持久化存储到流水表中;当区块处于决定阶段时,将该区块持久化存储到区块数据表中;
根据所述流水表和所述区块数据表,进行节点重启;
根据所述流水表和所述区块数据表,进行节点的初次启动。
进一步,所述通过领导节点发起提案,并将该提案广播给副本节点,生成预备证书,包括:
通过可验证随机的方式确定领导节点;
通过领导节点发起提案;
将所述提案广播给区块链中的所有副本节点;
所述副本节点根据所述提案的合法性,向领导节点反馈第一签名信息;
将所有副本节点的第一签名信息打包得到预备证书。
进一步,所述领导节点将所述预备证书广播给副本节点,生成预提交证书,包括:
领导节点将预备证书广播给所有副本节点;
副本节点根据预备证书的合法性,向领导节点反馈第二签名信息;
将所有副本节点的第二签名信息打包得到预提交证书。
进一步,所述领导节点将所述预提交证书广播给副本节点,生成提交证书,包括:
领导节点将预提交证书广播给所有副本节点;
副本节点根据预提交证书的合法性,向领导节点反馈第三签名信息;
将所有副本节点的第三签名信息打包得到提交证书。
进一步,所述领导节点将所述提交证书广播给副本节点,由所有副本节点执行所述提案,包括:
领导节点将所述提交证书广播给所有副本节点;
副本节点根据所述提交证书的合法性,确定所述提案已经在区块链中达成共识,执行所述提案。
进一步,所述根据所述流水表和所述区块数据表,进行节点重启,包括:
从区块数据表中读取最新处于决定阶段的区块的信息;
根据该区块的信息从流水表中读取对应的预提交阶段和提交阶段的区块的信息;
生成一个空白区块来代替最新处于预备阶段的区块;
以及,
所述节点基于所述提交阶段、预提交阶段以及预备阶段的区块进行数据同步并在完成后参与共识。
进一步,所述节点基于所述提交阶段、预提交阶段以及预备阶段的区块进行数据同步并在完成后参与共识这一步骤,包括:
若区块链中存在正在共识的节点,则直接同步最新的提交阶段、预提交阶段以及预备阶段区块和所有已经执行的区块数据后,参与共识流程;
若区块链中不存在正在共识的节点,则直接基于上述的预提交阶段,提交阶段以及预备阶段的区块开始进行共识。
进一步,所述根据所述流水表和所述区块数据表,进行节点的初次启动,包括:
当区块链中只存在初次启动的节点时:
生成三个创世块;其中第一创世块作为决定阶段的区块,第二创世块作为提交阶段的区块,第三创世块作为预提交阶段的区块;生成空白区块作为预备阶段的区块;根据所述三个创世块和空白区块,然后执行根据所述流水表和所述区块数据表进行节点重启的步骤;
当区块链中存在非初次启动的节点时:
将区块链中初次启动节点同步所述非初次启动节点上的区块数据,然后执行根据所述流水表和所述区块数据表进行节点重启的步骤。
第二方面,本发明实施例还提供了一种在区块链中使用HotStuff共识算法的***,包括:
预备模块,用于通过领导节点发起提案,并将该提案广播给副本节点,生成预备证书;
预提交模块,用于领导节点将所述预备证书广播给副本节点,生成预提交证书;
提交模块,用于领导节点将所述预提交证书广播给副本节点,生成提交证书;
决定模块,用于领导节点将所述提交证书广播给副本节点,由所有副本节点执行所述提案;
其中,当区块处于预提交阶段时,将该区块持久化存储到流水表中;当区块处于决定阶段时,将该区块持久化存储到区块数据表中;
重启模块,用于根据所述流水表和所述区块数据表,进行节点重启;
初次启动模块,用于根据所述流水表和所述区块数据表,进行节点的初次启动。
第三方面,本发明实施例还提供了一种在区块链中使用HotStuff共识算法的***,包括:
至少一个处理器;
至少一个存储器,用于存储至少一个程序;
当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现所述的方法。
第四方面,本发明实施例还提供了一种存储介质,其中存储有处理器可执行的指令,所述处理器可执行的指令在由处理器执行时用于执行所述的方法。
上述本发明实施例中的一个或多个技术方案具有如下优点:本发明的实施例在HotStuff共识算法的流程下加入了节点初次启动和节点重启的步骤,提高了工程化过程中的完备程度,完善整个区块链***的正常运行;另外,本发明增设了流水表和区块数据表,能够保证共识证明过程的数据完整性,以及便于后续节点数据的同步和验证。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为HotStuff共识算法流水线示意图;
图2为HotStuff共识算法流程图;
图3为共识过程中数据持久化示意图;
图4为HotStuff共识节点启动处理流程图。
具体实施方式
下面结合说明书附图和具体实施例对本发明作进一步解释和说明。对于本发明实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。
在共识过程中,每一个节点需要依靠最新的决定区块,提交区块,预提交区块及预备区块来进行后续的共识操作,上述四种区块分别对应决定,提交,预提交,预备这四个共识阶段,本申请实施例假设共有n=3f+1个节点,则共识过程中,参照图1和图2,四个阶段中进行的操作步骤如下:
S1:预备阶段(Prepare):按照可验证随机方式来挑选一个领导节点(Leader),Leader负责提出一个提案(Proposal),并将该Proposal广播给所有其他副本节点(Replica);其他副本节点(Replica)在接受到所述Proposal后,如果确认合法,则使用Replica的私钥对Proposal进行签名并发送给Leader,一个签名(即第一签名信息)表示一个投票,如果确认Proposal非法,则忽略;Leader在接收到至少n-f个节点的针对Prepare中提出的Proposal的签名后,将这n-f个签名打包成一个法定人数证书(QuorumCertificate),简称QC,在Prepare阶段生成的QC也称作预备证书(PrepareQC);
S2:预提交阶段(Pre-commit):Leader将PrepareQC广播给所有Replica,Replica在接收到PrepareQC后,如果确认合法,则使用私钥对PrepareQC签名,并将签名发送给Leader。Leader在接收到至少n-f个针对PrepareQC的签名(即第二签名信息)后,将其打包成一个新的QC,这个阶段的QC也称预提交证书(PreCommitQC);
S3:提交阶段(Commit):Leader将PreCommitQC广播给所有Replica,Replica在接收到PreCommitQC后,如果确认合法,则使用私钥对PreCommitQC签名,并将签名发送给Leader。Leader在接收到至少n-f个针对PreCommitQC的签名(即第三签名信息)后,将其打包成一个新的QC,这个阶段的QC也称提交证书(CommitQC);
S4:决定阶段(Decide):Leader将CommitQC广播给所有Replica,Replica在接收到CommitQC后,如果确认合法,则表示Prepare阶段中的Proposal已经达成共识,执行Proposal中的交易。
上述共识流程在HotStuff共识算法中,进一步用“流水线”的方式来改进,改进方式如下:
1、每一个Proposal会指定一个上一个Proposal,在区块链中就是每一个Proposal对应一个区块,每一个区块都会之指定父区块;
2、整个共识过程由持续的轮组成,每一轮中做同样的动作:Leader提出一个Proposal,将Proposal和上一轮中生成的QC一起打包广播给Replica,Replica节点在确认Proposal以及QC的合法性后,用私钥对Proposal签名,Leader收集至少n-f个签名后打包成一个通用证书(Generic QC),这个通用证书就是下一轮Leader广播中的QC;
3、在逻辑上,每一轮生成的QC是本轮Proposal的PrepareQC,同时是上一轮的Proposal的PreCommitQC,同时是上上一轮的Proposal的CommitQC,指向关系由Proposal中指定的上一个Proposal来指定,因此可以通过回溯来确定一个Proposal在逻辑上的CommitQC是否以及生成,如果Replica接收到一个Proposal在逻辑上对应的CommitQC,则执行该Proposal;
参照图1和图2,在“流水线”的设计中可以看到,一个区块(即区块链语境下的Proposal)是否已经达成共识,需要依赖后续的两个区块及其两个区块各自的GenericQC来证明,为了保证节点能够在初次启动或者重启时能够正常运行,需要对这些区块数据进行适当存储,具体如下:
1、当一个区块处于Pre-commit阶段时,参照图3,将该区块持久化到一个“流水表”中,所谓流水表,该流水表中的区块不一定最终会被Decide,但是都是节点进行后续共识的根据;
2、当一个区块处于Decide阶段时,将该区块持久化到“区块数据表”中,该数据表中的数据表示达到了确定性的一致性;该区块数据表存储的就是已经达成共识的区块本身。
3、当节点重启时,首先从“区块数据表”中读取最新被Decide的区块数据,然后根据该区块数据从流水表中读取相邻的处于Pre-commit阶段和Commit阶段的区块数据,并生成一个空块来代替最新的处于Prepare阶段的区块。此时节点可能面临两种情况:
a)、***中存在正在共识的其他节点,此时,重启的节点只需要同步其他节点的所有已经Decide的区块数据和当前Prepare,Pre-commit,Commit的区块数据即可,因为在HotStuff中只处于Prepare阶段的区块可以被轻松丢弃,因此,此处的“空块”不会影响重启节点的后续的共识;
b)、***中共识已经停止,即所有的节点都在等待状态同步然后再开始共识,当状态完成同步后,所有节点的状态除了Prepare的区块以外都一样,但是按照HotStuff的共识过程算法,此时的Leader节点只会基于Pre-commit阶段的区块提出新的区块,然后进行后续的共识,因此,此处的“空块”同样不会影响重启后节点的后续共识。
4、当节点初次启动时,参照图4,也存在两种情况:
a)、***中都是初次启动的节点,此时***约定生成三个创世块(包括第一创世块、第二创世块和第三创世块),这三个创世块使用写在代码中的方式在开发阶段就确定,不需要节点的“投票”来确定合法性,第一个创世块充当最新被Decide的区块,第二,三个创世块分别充当处于Commit和Pre-commit阶段的区块,然后节点再生成一个空块来充当处于Prepare阶段的区块,此时节点的状态就可以和3中重启节点的一致,后续处理逻辑也一致;
b)、如果***中存在非初次启动的节点,则初次启动节点直接同步该节点的所有已经Decide的区块数据和当前处于Commit,Pre-commit和Prepare的区块数据,同步完成后,节点的状态也和3中节点重启一致,后续处理逻辑也一致。
本发明实施例还提供了一种在区块链中使用HotStuff共识算法的***,包括:
预备模块,用于通过领导节点发起提案,并将该提案广播给副本节点,生成预备证书;
预提交模块,用于领导节点将所述预备证书广播给副本节点,生成预提交证书;
提交模块,用于领导节点将所述预提交证书广播给副本节点,生成提交证书;
决定模块,用于领导节点将所述提交证书广播给副本节点,由所有副本节点执行所述提案;
其中,当区块处于预提交阶段时,将该区块持久化存储到流水表中;当区块处于决定阶段时,将该区块持久化存储到区块数据表中;
重启模块,用于根据所述流水表和所述区块数据表,进行节点重启;
初次启动模块,用于根据所述流水表和所述区块数据表,进行节点的初次启动。
本发明实施例还提供了一种在区块链中使用HotStuff共识算法的***,包括:
至少一个处理器;
至少一个存储器,用于存储至少一个程序;
当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现所述的方法。
本发明实施例还提供了一种存储介质,其中存储有处理器可执行的指令,所述处理器可执行的指令在由处理器执行时用于执行所述的方法。
综上所述,本发明从两个方面来完善了HotStuff共识算法在区块链下的工程化实现:一个是完善了节点初次启动,节点重启以及节点正常参与共识的处理逻辑,使得HotStuff算法能够真正的落地实现使用;另一方面,因为HotStuff共识算法的流水线设计,一个区块是否达成共识,需要后续区块数据的证明,本发明通过额外设计一个流水表来保证最新被Commit的区块的共识证明的完整,同时保证了区块数据表中的区块数据都是已经共识的且不存在冲突分叉,方便后续的节点数据同步和验证。
在一些可选择的实施例中,在方框图中提到的功能/操作可以不按照操作示图提到的顺序发生。例如,取决于所涉及的功能/操作,连续示出的两个方框实际上可以被大体上同时地执行或所述方框有时能以相反顺序被执行。此外,在本发明的流程图中所呈现和描述的实施例以示例的方式被提供,目的在于提供对技术更全面的理解。所公开的方法不限于本文所呈现的操作和逻辑流程。可选择的实施例是可预期的,其中各种操作的顺序被改变以及其中被描述为较大操作的一部分的子操作被独立地执行。
此外,虽然在功能性模块的背景下描述了本发明,但应当理解的是,除非另有相反说明,所述的功能和/或特征中的一个或多个可以被集成在单个物理装置和/或软件模块中,或者一个或多个功能和/或特征可以在单独的物理装置或软件模块中被实现。还可以理解的是,有关每个模块的实际实现的详细讨论对于理解本发明是不必要的。更确切地说,考虑到在本文中公开的装置中各种功能模块的属性、功能和内部关系的情况下,在工程师的常规技术内将会了解该模块的实际实现。因此,本领域技术人员运用普通技术就能够在无需过度试验的情况下实现在权利要求书中所阐明的本发明。还可以理解的是,所公开的特定概念仅仅是说明性的,并不意在限制本发明的范围,本发明的范围由所附权利要求书及其等同方案的全部范围来决定。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
以上是对本发明的较佳实施进行了具体说明,但本发明并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
Claims (7)
1.一种在区块链中使用HotStuff共识算法的方法,其特征在于,包括预备阶段、预提交阶段、提交阶段和决定阶段;其中,
所述预备阶段包括:通过领导节点发起提案,并将该提案广播给副本节点,生成预备证书;
所述预提交阶段包括:领导节点将所述预备证书广播给副本节点,生成预提交证书;
所述提交阶段包括:领导节点将所述预提交证书广播给副本节点,生成提交证书;
所述决定阶段包括:领导节点将所述提交证书广播给副本节点,由所有副本节点执行所述提案;
其中,当区块处于预提交阶段时,将该区块持久化存储到流水表中;当区块处于决定阶段时,将该区块持久化存储到区块数据表中;
根据所述流水表和所述区块数据表,进行节点重启;
根据所述流水表和所述区块数据表,进行节点的初次启动;
所述根据所述流水表和所述区块数据表,进行节点重启,包括:
从区块数据表中读取最新处于决定阶段的区块的信息;
根据该区块的信息从流水表中读取对应的预提交阶段和提交阶段的区块的信息;
生成一个空白区块来代替最新处于预备阶段的区块;
以及,
所述节点基于所述提交阶段、预提交阶段以及预备阶段的区块进行数据同步并在完成后参与共识;
所述节点基于所述提交阶段、预提交阶段以及预备阶段的区块进行数据同步并在完成后参与共识这一步骤,包括:
若区块链中存在正在共识的节点,则直接同步最新的提交阶段、预提交阶段以及预备阶段区块和所有已经执行的区块数据后,参与共识流程;
若区块链中不存在正在共识的节点,则直接基于上述的预提交阶段,提交阶段以及预备阶段的区块开始进行共识;
所述根据所述流水表和所述区块数据表,进行节点的初次启动,包括:
当区块链中只存在初次启动的节点时:
生成三个创世块;其中第一创世块作为决定阶段的区块,第二创世块作为提交阶段的区块,第三创世块作为预提交阶段的区块;生成空白区块作为预备阶段的区块;根据所述三个创世块和空白区块,然后执行根据所述流水表和所述区块数据表进行节点重启的步骤;
当区块链中存在非初次启动的节点时:
将区块链中初次启动节点同步所述非初次启动节点上的区块数据,然后执行根据所述流水表和所述区块数据表进行节点重启的步骤。
2.根据权利要求1所述的一种在区块链中使用HotStuff共识算法的方法,其特征在于,所述通过领导节点发起提案,并将该提案广播给副本节点,生成预备证书,包括:
通过可验证随机的方式确定领导节点;
通过领导节点发起提案;
将所述提案广播给区块链中的所有副本节点;
所述副本节点根据所述提案的合法性,向领导节点反馈第一签名信息;
将所有副本节点的第一签名信息打包得到预备证书。
3.根据权利要求1所述的一种在区块链中使用HotStuff共识算法的方法,其特征在于,所述领导节点将所述预备证书广播给副本节点,生成预提交证书,包括:
领导节点将预备证书广播给所有副本节点;
副本节点根据预备证书的合法性,向领导节点反馈第二签名信息;
将所有副本节点的第二签名信息打包得到预提交证书。
4.根据权利要求1所述的一种在区块链中使用HotStuff共识算法的方法,其特征在于,所述领导节点将所述预提交证书广播给副本节点,生成提交证书,包括:
领导节点将预提交证书广播给所有副本节点;
副本节点根据预提交证书的合法性,向领导节点反馈第三签名信息;
将所有副本节点的第三签名信息打包得到提交证书。
5.根据权利要求1所述的一种在区块链中使用HotStuff共识算法的方法,其特征在于,所述领导节点将所述提交证书广播给副本节点,由所有副本节点执行所述提案,包括:
领导节点将所述提交证书广播给所有副本节点;
副本节点根据所述提交证书的合法性,确定所述提案已经在区块链中达成共识,执行所述提案。
6.一种在区块链中使用HotStuff共识算法的***,其特征在于,包括:
预备模块,用于通过领导节点发起提案,并将该提案广播给副本节点,生成预备证书;
预提交模块,用于领导节点将所述预备证书广播给副本节点,生成预提交证书;
提交模块,用于领导节点将所述预提交证书广播给副本节点,生成提交证书;
决定模块,用于领导节点将所述提交证书广播给副本节点,由所有副本节点执行所述提案;
其中,当区块处于预提交阶段时,将该区块持久化存储到流水表中;当区块处于决定阶段时,将该区块持久化存储到区块数据表中;
重启模块,用于根据所述流水表和所述区块数据表,进行节点重启;
初次启动模块,用于根据所述流水表和所述区块数据表,进行节点的初次启动;
所述重启模块具体用于:从区块数据表中读取最新处于决定阶段的区块的信息;根据该区块的信息从流水表中读取对应的预提交阶段和提交阶段的区块的信息;生成一个空白区块来代替最新处于预备阶段的区块;以及,所述节点基于所述提交阶段、预提交阶段以及预备阶段的区块进行数据同步并在完成后参与共识;
其中,若区块链中存在正在共识的节点,则直接同步最新的提交阶段、预提交阶段以及预备阶段区块和所有已经执行的区块数据后,参与共识流程;
若区块链中不存在正在共识的节点,则直接基于上述的预提交阶段,提交阶段以及预备阶段的区块开始进行共识;
所述初次启动模块具体用于:当区块链中只存在初次启动的节点时:生成三个创世块;其中第一创世块作为决定阶段的区块,第二创世块作为提交阶段的区块,第三创世块作为预提交阶段的区块;生成空白区块作为预备阶段的区块;根据所述三个创世块和空白区块,然后执行根据所述流水表和所述区块数据表进行节点重启的步骤;当区块链中存在非初次启动的节点时:将区块链中初次启动节点同步所述非初次启动节点上的区块数据,然后执行根据所述流水表和所述区块数据表进行节点重启的步骤。
7.一种在区块链中使用HotStuff共识算法的***,其特征在于,包括:
至少一个处理器;
至少一个存储器,用于存储至少一个程序;
当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现如权利要求1-5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911414474.XA CN111147261B (zh) | 2019-12-31 | 2019-12-31 | 在区块链中使用HotStuff共识算法的方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911414474.XA CN111147261B (zh) | 2019-12-31 | 2019-12-31 | 在区块链中使用HotStuff共识算法的方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111147261A CN111147261A (zh) | 2020-05-12 |
CN111147261B true CN111147261B (zh) | 2022-07-12 |
Family
ID=70522644
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911414474.XA Active CN111147261B (zh) | 2019-12-31 | 2019-12-31 | 在区块链中使用HotStuff共识算法的方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111147261B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112182113B (zh) * | 2020-10-23 | 2024-06-25 | 网易(杭州)网络有限公司 | 区块链共识方法、***、电子设备及存储介质 |
CN112381649B (zh) * | 2020-11-17 | 2024-06-18 | 深圳前海微众银行股份有限公司 | 基于区块链的交易共识方法、装置及设备 |
CN112887436B (zh) * | 2021-04-28 | 2021-08-03 | 支付宝(杭州)信息技术有限公司 | 一种共识方法、共识节点和流水线方式的区块链*** |
CN112991067B (zh) * | 2021-04-28 | 2021-08-03 | 支付宝(杭州)信息技术有限公司 | 一种区块链共识方法、装置和*** |
CN114047899B (zh) * | 2022-01-12 | 2022-03-18 | 南京金宁汇科技有限公司 | 一种区块链的视图同步方法及*** |
CN115052017A (zh) * | 2022-06-14 | 2022-09-13 | 上海交通大学 | 车联网环境下基于动态信誉机制的分层共识方法和*** |
CN115186035B (zh) * | 2022-09-13 | 2022-11-22 | 腾讯科技(深圳)有限公司 | 一种区块处理方法、相关***及存储介质和服务器 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107368507A (zh) * | 2017-03-28 | 2017-11-21 | 阿里巴巴集团控股有限公司 | 一种基于区块链的共识方法及装置 |
CN108182635A (zh) * | 2017-12-18 | 2018-06-19 | 深圳前海微众银行股份有限公司 | 区块链共识方法、***和计算机可读存储介质 |
CN108667614A (zh) * | 2018-04-19 | 2018-10-16 | 上海分布信息科技有限公司 | 一种拜占庭容错方法及其实现*** |
CN110032436A (zh) * | 2019-04-04 | 2019-07-19 | 杭州秘猿科技有限公司 | 支持暂停和启动的区块链共识方法、***和电子设备 |
CN110618841A (zh) * | 2019-09-10 | 2019-12-27 | 杭州秘猿科技有限公司 | 内部松耦合的共识方法、***、电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8627135B2 (en) * | 2010-08-14 | 2014-01-07 | Teradata Us, Inc. | Management of a distributed computing system through replication of write ahead logs |
-
2019
- 2019-12-31 CN CN201911414474.XA patent/CN111147261B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107368507A (zh) * | 2017-03-28 | 2017-11-21 | 阿里巴巴集团控股有限公司 | 一种基于区块链的共识方法及装置 |
CN108182635A (zh) * | 2017-12-18 | 2018-06-19 | 深圳前海微众银行股份有限公司 | 区块链共识方法、***和计算机可读存储介质 |
CN108667614A (zh) * | 2018-04-19 | 2018-10-16 | 上海分布信息科技有限公司 | 一种拜占庭容错方法及其实现*** |
CN110032436A (zh) * | 2019-04-04 | 2019-07-19 | 杭州秘猿科技有限公司 | 支持暂停和启动的区块链共识方法、***和电子设备 |
CN110618841A (zh) * | 2019-09-10 | 2019-12-27 | 杭州秘猿科技有限公司 | 内部松耦合的共识方法、***、电子设备 |
Non-Patent Citations (1)
Title |
---|
HotStuff: BFT Consensus with Linearity and Responsiveness;Maofan Yin等;《In 2019 ACM Symposium on Principles of Distributed Computing (PODC 19)》;20190802;第347-356页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111147261A (zh) | 2020-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111147261B (zh) | 在区块链中使用HotStuff共识算法的方法及*** | |
CN114401150B (zh) | 区块链网络中加入节点的方法和区块链*** | |
Chan et al. | Streamlet: Textbook streamlined blockchains | |
CN108683539B (zh) | 区块链网络的管理方法、装置、介质及电子设备 | |
CN110399424B (zh) | 区块生成方法、装置、区块链节点及存储介质 | |
CN110417502B (zh) | 一种区块链节点时钟共识方法及装置 | |
CN109981565B (zh) | 基于Meta-BFT共识机制的区块链平台及实现方法 | |
Abraham et al. | Efficient synchronous byzantine consensus | |
Yanovich et al. | Exonum: Byzantine fault tolerant protocol for blockchains | |
CN113630257B (zh) | 一种共识方法、区块链***和共识节点 | |
CN113610531B (zh) | 一种共识方法、区块链***和共识节点 | |
CN113132401B (zh) | 基于区块链的数据处理方法和装置 | |
CN112348518B (zh) | 一种区块链交易证明的方法及装置 | |
CN114422155B (zh) | 提案共识执行方法、区块链***、设备和存储介质 | |
CN114584312A (zh) | 一种共识方法、区块链***和共识节点 | |
US20240097919A1 (en) | Consensus trusted cluster changing method, computer device and computer-readable storage medium | |
Bentov et al. | The Sleepy Model of Consensus. | |
CN114785799B (zh) | 区块链共识方法、区块链副本装置、计算机设备及存储介质 | |
Lewis-Pye et al. | Fever: optimal responsive view synchronisation | |
CN113254526B (zh) | 区块链共识方法、装置及*** | |
CN114936253A (zh) | 区块链的共识方法及装置、电子设备、存储介质 | |
WO2020073246A1 (zh) | 基于区块链的交易数据处理方法、设备和存储介质 | |
CN110417833B (zh) | 基于区块链的数据处理方法、装置及存储介质 | |
CN116723200B (zh) | 集群变更方法、装置、电子设备及计算机可读存储介质 | |
Cohen et al. | Make every word count: adaptive Byzantine agreement with fewer words |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |