CN117319411A - 一种基于可靠传输协议的异步共识方法、区块链节点 - Google Patents
一种基于可靠传输协议的异步共识方法、区块链节点 Download PDFInfo
- Publication number
- CN117319411A CN117319411A CN202311442316.1A CN202311442316A CN117319411A CN 117319411 A CN117319411 A CN 117319411A CN 202311442316 A CN202311442316 A CN 202311442316A CN 117319411 A CN117319411 A CN 117319411A
- Authority
- CN
- China
- Prior art keywords
- consensus
- message
- messages
- proposal
- indication information
- 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
- 238000000034 method Methods 0.000 title claims abstract description 97
- 230000005540 biological transmission Effects 0.000 title claims abstract description 90
- 230000004044 response Effects 0.000 claims abstract description 33
- 230000008569 process Effects 0.000 claims description 36
- 230000000977 initiatory effect Effects 0.000 claims description 11
- 230000001960 triggered effect Effects 0.000 claims description 9
- 238000012795 verification Methods 0.000 claims description 9
- 238000012790 confirmation Methods 0.000 claims description 3
- 239000012634 fragment Substances 0.000 description 18
- 230000003993 interaction Effects 0.000 description 17
- 230000006870 function Effects 0.000 description 12
- 238000012545 processing Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 230000006872 improvement Effects 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 238000013467 fragmentation Methods 0.000 description 5
- 238000006062 fragmentation reaction Methods 0.000 description 5
- 230000002452 interceptive effect Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 239000003999 initiator Substances 0.000 description 3
- 241000282344 Mellivora capensis Species 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000007795 chemical reaction product Substances 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000002779 inactivation Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 229920001296 polysiloxane Polymers 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/1854—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with non-centralised forwarding system, e.g. chaincast
-
- 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
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/46—Secure multiparty computation, e.g. millionaire problem
- H04L2209/463—Electronic voting
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
Abstract
一种基于可靠传输协议的异步共识方法,包括:响应于接收到的由目标共识节点发送的第一消息,向其它共识节点广播发送第二消息;第一消息包含共识提议;第二消息包含用于指示共识提议的传输状态的指示信息;响应于收集到了至少Quorum个包含的指示信息相同的第二消息,确定是否发送过包含的指示信息与至少Quorum个第二消息不相同的第二消息;如果否,则向其它共识节点广播发送第三消息;第三消息用于表示不再发送包含的指示信息与至少Quorum个第二消息不相同的第二消息;响应于收集到了至少Quorum个包含的指示信息相同的第三消息,基于指示信息输出针对共识提议的共识结果。
Description
技术领域
本说明书实施例属于区块链技术领域,尤其涉及一种基于可靠传输协议的共识方法、区块链节点。
背景技术
区块链系统中,不同参与方通过部署的节点(Node)可以建立一个分布式的区块链网络。利用链式区块结构构造的去中心化(或称为多中心化)的分布式账本,保存于分布式的区块链网络中的每个节点(或大多节点上,如共识节点)上。这样的区块链系统需要解决去中心化(或多中心化)的多个节点上各自的账本数据的一致性和正确性的问题。每个节点上都运行着区块链程序,在一定容错需求的设计下,通过共识(consensus)机制保证所有忠诚节点具有相同的交易,从而保证所有忠诚节点对相同交易的执行结果一致,并将交易及执行结果打包生成区块。
当前主流的共识协议包括:工作量证明(Proof of Work,POW)、股权证明(Proofof Stake,POS)、委任权益证明(Delegated Proof of Stake,DPOS)、实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)算法,蜜獾拜占庭容错(HoneyBadgerBFT)算法等。
其中,以上列举的各种共识协议中,既包括异步共识协议,也包括非异步共识协议。例如,PBFT协议就属于半同步(partial synchronous)协议,而HoneyBadgerBFT算法属于一种异步(asynchronous)协议。
由于异步协议适用于异步网络,也就是这个网络中节点间的消息可以被任意延迟,但最终会达到,因此目前异步共识协议相对于非异步共识协议而言应用更加广泛。
发明内容
本说明书提出一种基于可靠传输协议的异步共识方法,所述可靠传输协议包括发起对节点设备的共识提议进行可靠传输的第一阶段,对接收到的共识提议进行可靠传输响应的第二阶段,以及对接收到的共识提议进行可靠传输确认的第三阶段,所述方法应用于区块链系统中的任一目标共识节点,所述方法包括:
响应于接收到的由目标共识节点发送的与所述第一阶段对应的第一消息,向其它共识节点广播发送与所述第二阶段对应的第二消息;其中,所述第一消息包含待传输的共识提议;所述第二消息包含用于指示所述共识提议的传输状态的指示信息;
收集其它共识节点广播发送的第二消息,并响应于收集到了至少Quorum个包含的所述指示信息相同的第二消息,确定是否发送过包含的指示信息与所述至少Quorum个第二消息不相同的第二消息;
如果未发送过包含的指示信息与所述至少Quorum个第二消息不同的第二消息,则向其它共识节点广播发送与所述第三阶段对应的第三消息;其中,所述第三消息包含的指示信息与接收到的所述至少Quorum个第二消息相同;所述第三消息用于表示在输出针对所述共识提议的共识结果之前,不再发送包含的指示信息与所述至少Quorum个第二消息不相同的第二消息;
收集其它共识节点广播发送的所述第三消息;响应于收集到了至少Quorum个包含的指示信息相同的第三消息,则基于所述指示信息输出针对所述共识提议的共识结果。
可选的,所述方法还包括:
如果发送过包含的指示信息与所述至少Quorum个第二消息不同的第二消息,则向其它共识节点广播与所述第三阶段对应的第四消息;其中,所述第四消息包含的指示信息与接收到的所述至少Quorum个第二消息相同;所述第四消息用于对所述共识提议进行可靠传输确认。
可选的,所述第二消息携带消息发送者的签名;
向其它共识节点广播与所述第三阶段对应的第三消息,包括:
向其它共识节点广播与所述第三阶段对应的第三消息,所述第三消息包含由所述至少Quorum个第二消息构成的消息列表,以触发接收到所述第三消息且未收集到至少Quorum个包含的指示信息相同的第二消息的其它共识节点,对所述消息列表中的各个第二消息携带的签名进行验证,并在验证通过后,向其它共识节点广播与所述第三阶段对应的第三消息;
向所述区块链系统中的其它共识节点广播与所述第三阶段对应的第四消息,包括:
向其它共识节点广播与所述第三阶段对应的第四消息,所述第四消息包含由所述至少Quorum个第二消息构成的消息列表,以触发接收到所述第四消息,且未收集到至少Quorum个包含的指示信息相同的第二消息的其它共识节点,对所述消息列表中的各个第二消息携带的签名进行验证,并在验证通过后,向其它共识节点广播与所述第三阶段对应的第四消息。
可选的,所述可靠传输协议包括RBC可靠广播协议;所述第一消息为RBC协议中与所述第一阶段对应的Initiate消息;所述第二消息为RBC协议中与所述第二阶段对应的Echo消息;所述第四消息为RBC协议中与所述第三阶段对应的Ready消息;所述第三消息为针对RBC协议定义与所述第三阶段对应的扩展消息。
可选的,所述指示信息包括用于指示已经接收到所述共识提议的第一指示信息,和用于指示未接收到所述共识提议的第二指示信息;
所述响应于收集到了至少Quorum个包含的指示信息相同的第三消息,则基于所述指示信息输出针对所述共识提议的共识结果,包括:
响应于收集到了至少Quorum个包含所述第一指示信息的第三消息,则输出所述共识提议通过共识的共识结果;
响应于收集到了至少Quorum个包含所述第二指示信息的第三消息,则输出所述共识提议未通过共识的共识结果。
可选的,所述第一指示信息包括所述共识提议;或者所述共识提议的摘要;所述第二指示信息包括预设的标识符;
输出所述共识提议通过共识的共识结果,包括:将所述共识提议或者所述共识提议的摘要作为所述共识提议通过共识的共识结果进行输出;
输出所述共识提议未通过共识的共识结果,包括:将所述预设的标识符作为所述共识提议未通过共识的共识结果进行输出。
可选的,所述第三消息携带消息发送者的签名;
所述方法还包括:
响应于收集到了至少Quorum个包含的指示信息相同的第三消息,将所述至少Quorum个包含的指示信息相同的第三消息,广播发送至其它共识节点,以触发所述其它共识节点中未收集到至少Quorum个包含的指示信息相同的第三消息的共识节点,对所述至少Quorum个第三消息携带的签名进行验证,并在验证通过后,基于所述至少Quorum个第三消息包含的所述指示信息输出针对所述共识提议的共识结果。
可选的,所述方法还包括:
响应于收集到了至少Quorum个包含的指示信息相同的消息中,除了包含所述第三消息以外还包含所述第四消息,则基于所述指示信息确定针对所述共识提议的二元投票值,并将确定出的所述二元投票值输入至运行的二元共识协议中,以对所述共识提议进行二元共识;
基于所述二元共识协议输出的二元共识结果进一步输出针对所述共识提议的共识结果。
可选的,所述指示信息包括用于指示已经接收到所述共识提议的第一指示信息,和用于指示未接收到所述共识提议的第二指示信息;所述二元投票值包括用于表示认可所述共识提议的第一取值,和用于表示不认可所述共识提议的第二取值;
基于所述指示信息确定针对所述共识提议的二元共识投票值,包括:
如果所述指示信息为所述第一指示信息,则将针对所述共识提议的二元共识投票值确定为所述第一取值;
如果所述指示信息为所述第二指示信息,则将针对所述共识提议的二元共识投票值确定为所述第二取值。
可选的,所述第一指示信息包括所述共识提议;或者所述共识提议的摘要;所述第二指示信息包括预设的标识符;
基于二元共识结果输出针对所述共识提议的共识结果,包括:
如果所述二元共识协议输出的二元共识结果为所述第一取值,则进一步将所述共识提议或者所述共识提议的摘要作为所述共识提议通过共识的共识结果进行输出;
如果所述二元共识协议输出的二元共识结果为所述第二取值,则进一步将所述预设的标识符作为所述共识提议未通过共识的共识结果进行输出。
可选的,所述方法还包括:
如果在收集到至少Quorum个包含的指示信息相同的第三消息之前,接收到用于指示退出针对所述共识提议的共识过程的退出信号,则响应于所述退出信号,确定是否已经向其它共识节点广播发送了与所述第三阶段对应的第三消息;
如果是,重新向其它共识节点广播发送包含的指示信息与收集到的所述至少Quorum个第二消息相同的第二消息;
如果否,重新向其它共识节点广播发送包含的指示信息与收集到的所述至少Quorum个第二消息不相同的第二消息。
可选的,所述退出信号为,由至少Quorum个共识节点在可靠传输阶段成功接收到了所述共识提议的事件所触发的退出信号。
本说明书还提出一种区块链系统的节点设备,区块链系统中参与共识的节点设备运行了可靠传输协议,所述可靠传输协议包括发起对节点设备的共识提议进行可靠传输的第一阶段,对接收到的共识提议进行可靠传输响应的第二阶段,以及对接收到的共识提议进行可靠传输确认的第三阶段,包括:
第一发送模块,响应于接收到的由目标共识节点单播发送的与所述第一阶段对应的第一消息,向其它共识节点广播与所述第二阶段对应的第二消息;其中,所述第一消息包含待传输的共识提议;所述第二消息包含用于指示所述共识提议的传输状态的指示信息;
确定模块,收集其它共识节点广播发送的第二消息,并响应于收集到了至少Quorum个包含的所述指示信息相同的第二消息,确定是否发送过包含的指示信息与所述至少Quorum个第二消息不相同的第二消息;
第二发送模块,如果未发送过包含的指示信息与所述至少Quorum个第二消息不同的第二消息,则向其它共识节点广播发送与所述第三阶段对应的第三消息;其中,所述第三消息包含的指示信息与接收到的所述至少Quorum个第二消息相同;所述第三消息用于表示在输出针对所述共识提议的共识结果之前,不再发送包含的指示信息与所述至少Quorum个第二消息不相同的第二消息;
共识模块,收集其它共识节点广播发送的所述第三消息;响应于收集到了至少Quorum个包含的指示信息相同的第三消息,则基于所述指示信息输出针对所述共识提议的共识结果。
上述实施例中,可以让参与共识的节点在完成针对共识提议的可靠传输之后,就可以提前输出针对该共识提议的共识结果,而不再需要继续运行二元共识协议,并等待二元共识的结果,从而可以减少基于可靠传输协议进行异步共识的过程中需要交互的消息的轮数,进而缩短异步共识的延迟。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本说明书一实施例中示出的一种可退出式的可靠广播共识机制的交互图;
图2是本说明书一实施例中示出的一种基于可靠传输协议的异步共识方法的流程图;
图3是本说明书一实施例中示出的另一种可退出式的可靠广播共识机制的交互图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
RBC(Reliable Broadcast,可靠广播)协议和二元共识协议,是目前主流的异步共识协议中常用的协议。
在一些主流的异步共识协议中,采用了可退出式的可靠广播共识机制;例如,典型应用是基于ACS(Asynchronous Common Subset,异步公共子集协议)的Hoeny Badger BFT共识协议。
上述可退出式的可靠广播共识机制,通常可以由运行的一个RBC协议、运行的一个二元共识协议和一个由特定事件触发的退出信号组成。
参与共识的各个共识节点在针对某一节点的共识提议进行异步共识时,可以通过运行RBC协议,在各个共识节点之间进行消息交互,来针对该共识提议进行可靠传输。然后再通过运行二元共识协议,对可靠传输的结果进行二元共识。
如果通过运行RBC协议,成功的输出了该共识提议(表示完成了针对该共识提议的可靠传输,也即成功接收到了该共识提议),可以继续向运行的二元共识协议中输入一个1作为自身的二元投票值。反之,如果没有成功的输出该共识提议(表示未完成针对该共识提议的可靠传输),可以继续向运行的二元共识协议中输入一个0作为自身的二元投票值。
后续,各个共识节点可以根据运行的二元共识协议对各自输入的二元投票值的二元共识结果,对上述共识提议异步的达成共识。
然而,在实际应用中,上述流程可能并不能保证共识协议的活性。其中,共识协议具有活性,是指运行该共识协议,让所有参与共识的节点(包含诚实节点和恶意节点)都会存在一个对应的输出。
例如,如果各个共识节点中存在恶意不发送RBC协议相关的交互消息的恶意节点,可能会导致运行的二元共识协议中,始终缺失部分恶意节点的输入,无法保证所有的共识节点都有对应的输出,进而无法完成二元共识过程,从而导致所有共识节点,在可靠广播的过程中,都无法成功的输出该共识提议。
基于此,为了保证共识协议的活性,在上述共识机制中,通常还会引入一个外部的“退出”信号。该退出信号,具体可以由一些特定的事件所触发。
在一种情况下,该退出信号,通常可以是由至少Quorum个共识节点在可靠传输阶段成功输出了该共识提议的事件所触发的信号。也即,如果监测到至少Quorum个共识节点在可靠传输阶段成功输出了该共识提议的事件,此时可以立即触发一个上述退出信号。
需要说明的是,Quorum通常是指一个能够代表区块链中的大多数的共识节点的数量取值。比如,在区块链中参与共识的共识节点的数量n为3f+1的情况下,Quorum的取值为n-f,即2f+1。这样,对于包含4个节点的分布式系统,任意3个节点可以构成一个Quorum。f是指区块链能够容忍的拜占庭节点(即恶意节点)的数量。
在另一种情况下,该退出信号,具体也可以是由至少Quorum个共识节点的共识提议均共识通过的事件所触发的信号。也即,如果监测到至少Quorum个共识节点发起的共识提议均共识通过的事件,此时可以立即触发一个上述退出信号。
例如,以HoneyBadger BFT共识协议为例,假设参与共识提议的共识节点为3f+1个,则这些共识节点在共同对某一区块进行共识提议时,如果其中的2f+1个共识节点针对该区块的共识提议已经共识通过,则会对该剩余的(即剩下的f个)其它共识节点针对该区块的共识提议,发出退出信号。
需要说明的是,在实际应用中,上述退出信号的具体形式,在本说明书中不再进行特别的限定。例如,上述退出信号,具体可以是指令的形式,或者也可以是指令以外的其它的形式,比如消息的形式。
对于各个共识节点来说,如果收到退出信号,自己已经成功输出共识提议,则可以继续向运行的二元共识协议中输入一个1作为自身的二元投票值。如果收到退出信号,还没有结束针对上述共识提议的可靠传输,则可以继续向运行的二元共识协议中输入一个0作为自身的二元投票值。
需要强调的是,共识节点收到退出信号之后,如果其还没有结束针对上述共识提议的可靠传输,通常是强制性的继续向二元共识协议中输入一个0作为自身的二元投票值。
通过这种方式,可以保证所有共识节点(自然也包括其中的恶意节点)在运行的二元共识协议中都存在一个输入,进而保证运行的二元共识协议也一定能够输出相关的二元共识结果(为0或1),以此来保证算法的活性。
请参见图1,图1为本说明书示出的一种可退出式的可靠广播共识机制的交互图。
假设区块链中参与共识的节点可以分别记为P1、P2、P3和P4,由P1发起的共识提议记为m,则P1、P2、P3和P4在对P1发起的共识提议m进行共识的过程,可以如图1所示。
请继续参考图1,P1、P2、P3和P4都可以在其本地分别运行RBC协议,在各个共识节点之间进行消息交互,来针对该共识提议m进行可靠广播。
RBC协议通常包括三个阶段的消息交互,第一阶段为Initiate消息的交互,Initiate消息用于发起对共识提议m进行可靠传输。第二阶段为echo消息的交互,echo消息用于对接收到的共识提议m进行可靠传输响应。第三阶段为ready消息的交互,ready消息对接收到的共识提议m进行可靠传输确认。
其中,关于以上列举的Initiate消息、echo消息和ready消息的详细消息格式,本说明书中不再进行详细描述。
请继续参见图1,作为共识提议的发起方,P1可以打包一个Initiate消息,并在该Initiate消息中携带共识提议m,然后分别向P2、P3和P4发送该Initiate消息。
例如,基于RBC协议,P1通常可以基于纠删码技术对共识提议m进行分片处理,分片数量为共识节点的总数量,比如将共识提议m划分为4个数据分片,P1可以持有其中的一个数据分片,并为P2、P3和P4分别分配一个数据分片。然后,P1可以为P2、P3和P4分别构造一个Initiate消息,并在Initiate消息中分别携带分配给P2、P3和P4的数据分片,再将构造的各个Initiate消息分别单播发送给P2、P3和P4。
P2、P3和P4在收到P1发送的Initiate消息之后,可以继续向其它共识节点广播发送echo消息,并收集其它共识节点广播发送的echo消息。对于P1来说,也可以继续收集P2、P3和P4广播发送的echo消息。
例如,基于RBC协议,P2、P3和P4向其它共识节点广播发送的echo消息中,可以携带接收到的P1单播发送的Initiate消息中的数据分片,通过这种方式,P2、P3和P4可以将接收到的Initiate消息中的数据分片继续广播给其它的各个共识节点。
当P1、P2、P3和P4中的任一共识节点,收集到Quorum个echo消息,可以继续向其它共识节点广播发送ready消息,并收集其它共识节点广播发送的ready消息。
例如,基于RBC协议,P1、P2、P3和P4中的任一共识节点,在收集到Quorum个echo消息之后,可以将收集到的Quorum个echo消息中携带的数据分片的集合,继续携带在广播发送给其它的共识节点的ready消息中,
当P1、P2、P3和P4中的任一共识节点,收集到Quorum个携带的内容相同的ready消息,可以输出共识提议m。
例如,基于RBC协议,P1、P2、P3和P4中的任一共识节点,在收集到Quorum个携带的内容相同的ready消息之后,可以基于纠删码技术,基于这些ready消息携带的数据分片集合恢复出共识提议m,然后输出恢复出的共识提议m,以表示自身完成了针对该共识提议m的可靠传输。
P1、P2、P3和P4还可以在其本地分别运行二元共识协议,P1、P2、P3和P4中成功输出共识提议m的共识节点,会继续向其运行的二元共识协议输入一个1作为自身的二元投票值。相应的,P1、P2、P3和P4中未成功输出共识提议m的共识节点,会在收到退出信号时,强制性的继续向其运行的二元共识协议输入一个0作为自身的二元投票值。
请继续参见图1,假设P1、P2、P3是诚实节点,P4是恶意节点,则P1、P2、P3在成功输出了共识提议m之后,可以继续向其运行的二元共识协议输入一个1作为自身的二元投票值。而P4在收到上述退出信号后,可以强制性的向其运行的二元共识协议输入一个0作为自身的二元投票值。
后续,P1、P2、P3和P4可以根据运行的二元共识协议对各自输入的二元投票值的二元共识结果,对上述共识提议m异步的达成共识。
可见,基于现有的RBC协议,所有参与共识提议的共识节点,无论自身是否在可靠传输阶段已经成功输出了共识提议,都必须等待二元共识的结果,才能最终决定是否接受该共识提议。然而,在实际应用中,二元共识过程,往往也包含多轮的消息交互;例如,以二元共识协议为抛币协议为例,通常可能需要再交互多轮的抛币消息才能够达成共识;这显然会对算法的性能造成影响,导致对共识提议的共识过程的延迟过大。
有鉴于此,本说明书提出一种在基于可靠传输协议进行异步共识过程中,能够跳过二元共识过程的异步共识解决方案。
请参见图2,图2为本说明书示出的一种基于可靠传输协议的异步共识方法的流程图,其中,所述可靠传输协议可以包括发起对共识提议进行可靠传输的第一阶段,对接收到的共识提议进行可靠传输响应的第二阶段,以及对接收到的共识提议进行可靠传输确认的第三阶段,所述方法应用于所述区块链系统中的任一共识节点,所述方法包括如下的执行过程:
步骤202:响应于接收到的由目标共识节点发送的与所述第一阶段对应的第一消息,向其它共识节点广播发送与所述第二阶段对应的第二消息;其中,所述第一消息包含所述目标共识节点的共识提议;所述第二消息包含用于指示所述共识提议的传输状态的指示信息;
区块链系统中的共识节点都可以运行上述可靠传输协议,在各个共识节点之间进行消息交互,对共识提议进行可靠传输。
上述可靠传输协议,可以包括三个阶段的消息交互,分别为发起对共识提议进行可靠传输的第一阶段,对接收到的共识提议进行可靠传输响应的第二阶段,以及对接收到的共识提议进行可靠传输确认的第三阶段。
例如,在一个例子中,上述可靠传输协议可以是RBC(Reliable Broadcast,可靠广播)协议为例,在这种情况下,上述第一阶段可以是通过交互Initiate消息,发起对共识提议进行可靠传输的阶段,上述第二阶段可以是通过交互echo消息,对接收到的共识提议m进行可靠传输响应的阶段,上述第三阶段可以是通过交互ready消息,对接收到的共识提议进行可靠传输确认的阶段。
需要说明的是,在实际应用中,上述可靠传输协议也可以是除了RBC协议以外的其它类似的可靠传输协议,在本说明书中不再进行特别限定。比如,上述可靠传输协议也可以是本领域技术人员基于本说明书中披露的技术方案,开发出的一种新的可靠传输协议。
上述目标共识节点,可以是区块链系统中的任一具有发起共识提议的权限的共识节点。该共识节点作为共识提议的发起方,可以向其它共识节点发送与上述第一阶段对应的第一消息;例如,以上述可靠传输协议为RBC协议为例,上述第一消息可以是RBC协议中与上述第一阶段对应的Initiate消息。
其中,该第一消息具体用于发起对共识提议进行可靠传输,在该第一消息中可以包含该目标共识节点的共识提议。
在示出的一种实施方式中,上述目标共识节点具体可以采用单播的方式,向其它共识节点分别发送与上述第一阶段对应的第一消息。其中,该第一消息可以包含该目标共识节点的共识提议;其中,该共识提议通常可以是需要进行共识的交易列表。
例如,在一个例子中,目标共识节点可以基于纠删码技术对该共识提议进行分片处理,分片数量为共识节点的总数量,并为区块链系统中的每一个共识节点,分别分配一个数据分片。也即,上述第一消息中包含的共识提议,实际上是共识提议的一个数据分片;然后,可以针对其它各个共识节点分别构造一个第一消息,并在第一消息中分别携带分配给其它各个共识节点的数据分片,再将构造的第一消息,分别的单播发送给其它的各个共识节点。此时,其它的各个共识节点,均可以接收到一个第一消息,获得共识提议的其中一个数据分片。
当然,在实际应用中,也可以采用广播发送的方式,向其它共识节点分别发送与上述第一阶段对应的第一消息。
例如,在另一个例子中,目标共识节点也可以不采用纠删码技术对该共识提议进行分片处理,而是将该共识提议通过其它的方式加密后,完整的携带在上述第一消息中,然后采用广播的方式,将该第一消息广播发送至其它的各个共识节点。其它的各个共识节点收到第一消息后,可以采用约定的解密方式,对第一消息中携带的共识提议进行解密来获取共识提议的明文内容。
区块链系统中的任一共识节点,在接收到上述目标共识节点发送的第一消息之后,可以响应该第一消息,继续向其它共识节点广播发送与上述第二阶段对应的第二消息。例如,仍以上述可靠传输协议为RBC协议为例,上述第二消息可以是RBC协议中与上述第二阶段对应的Echo消息。
其中,在该第二消息可以包含指示信息。该指示信息具体可以用于指示针对接收到的上述第一消息中包含的共识提议的传输状态。
例如,在实际应用中,该指示信息指示的状态,可以包括已经接收到上述第一消息中包含的共识提议的状态,和未接收到上述第一消息中包含的共识提议的状态。
在示出的一种实施方式中,上述指示信息具体可以包括一个用于指示已经接收到上述第一消息中包含的共识提议的第一指示信息,和用于指示未接收到上述第一消息中包含的共识提议的第二指示信息。
其中,需要说明的是,上述第一指示信息和上述第二指示信息所包含的具体内容,在本说明书中不进行特别限定。
例如,在一个例子中,该第一指示信息,可以是上述第一消息中包含的共识提议本身,或者,也可以是上述第一消息中包含的共识提议的摘要(比如hash值)。也即,可以将上述第一消息中包含的共识提议作为上述第一指示信息,来表示已经接收到该共识提议,或者也可以将上述第一消息中包含的共识提议的摘要作为上述第一指示信息,来表示已经接收到该共识提议。
在另一个例子中,上述第二指示信息可以是一个预设的标识符;比如,该预设的标识符可以用空值标识符来表示。也即,可以将该预设的标识符作为上述第二指示信息,来表示未接收到该共识提议。
需要说明的是,对于区块链系统中的诚实节点而言,在收到其它共识节点发送的上述第一消息之后,通常可以如实的向其它共识节点广播包含上述第一指示信息的第二消息,来表明自身已经收到了该共识提议。
如果诚实节点未收到其它共识节点发送的上述第一消息,则通常并不会做出响应;也即,诚实节点不会在未收到其它共识节点广播的第一消息的前提下,主动向其它共识节点广播第二消息。
而区块链系统中的作恶节点,在收到其它共识节点发送的上述第一消息之后,可以出于作恶的目的,在明明收到了其它共识节点传输的共识提议的情况下,向其它共识节点广播包含上述第二指示信息的第二消息,来表明自身并没有收到过该共识提议。
其中,需要说明的是,在上述第二消息中,除了可以包含上述指示信息以外,在实际应用中,也可以包含上述共识提议。
在示出的一种实施方式中,如前所述,目标共识节点可以基于纠删码技术对该共识提议进行分片处理,分片数量为共识节点的总数量,并为区块链系统中的每一个共识节点,分别分配一个数据分片;然后,可以针对其它各个共识节点分别构造一个第一消息,并在第一消息中分别携带分配给其它各个共识节点的数据分片,再将构造的第一消息,分别的单播发送给其它的各个共识节点。
在这种情况下,区块链系统中的任一共识节点,接收到上述目标共识节点发送的第一消息之后,还可以将该第一消息中携带的数据分片,也继续携带在与上述第二阶段对应的第二消息中,广播发送至其它共识节点。通过这种方式,可以将自己收到的数据分片通过广播的方式,扩散到其它的各个共识节点。
在示出的一种实施方式中,如前所述,如果目标共识节点并没有基于纠删码技术对该共识提议进行分片处理,而是将该共识提议通过其它的方式加密后,完整的携带在上述第一消息中,然后采用广播的方式,将该第一消息广播发送至其它的各个共识节点。在这种情况下,区块链系统中的任一共识节点,在接收到上述目标共识节点发送的第一消息之后,可以采用约定的解密方式,对第一消息中携带的共识提议进行解密来获取共识提议的明文内容,并在本地保存该共识提议的明文内容。此时,该共识节点继续广播发送的第二消息中,可以不携带上述共识提议。
步骤204:收集其它共识节点广播发送的第二消息,并响应于收集到了至少Quorum个包含的所述指示信息相同的第二消息,确定是否发送过包含的指示信息与所述至少Quorum个第二消息不相同的第二消息;
区块链系统中的任一共识节点,在继续向其它共识节点广播发送与上述第二阶段对应的第二消息之后,还可以继续收集其它共识节点广播发送的第二消息,并确定收集到的包含的指示信息相同的第二消息的数量是否达到至少Quorum个。
如果收集到的包含的指示信息相同的第二消息的数量达到了至少Quorum个,此时该共识节点可以响应收集到的至少Quorum个包含的指示信息相同的第二消息,进一步确定自己是否发送过包含的指示信息与上述至少Quorum个第二消息不相同的第二消息。
例如,假设收集到的上述至少Quorum个第二消息中包含的指示信息为上述第一指示信息,则此时需要确定自己是否发送过包含上述第二指示信息的第二消息;反之,假设收集到的上述至少Quorum个第二消息中包含的指示信息为上述第二指示信息,则此时需要确定自己是否发送过包含上述第一指示信息的第二消息。
步骤206,如果未发送过包含的指示信息与所述至少Quorum个第二消息不同的第二消息,则向其它共识节点广播发送与所述第三阶段对应的第三消息;其中,所述第三消息包含的指示信息与接收到的所述至少Quorum个第二消息相同;所述第三消息用于表示在输出针对所述共识提议的共识结果之前,不再发送包含的指示信息与所述至少Quorum个第二消息不相同的第二消息;
在本实施例中,与上述第三阶段对应的消息,具体可以包括第三消息和第四消息。
其中,该第三消息可以包含与接收到的上述至少Quorum个第二消息相同的指示信息;该第三消息具体可以用于表示在输出针对上述共识提议的共识结果之前,不再发送包含的指示信息与上述至少Quorum个第二消息不相同的第二消息。上述第四消息,也可以包含与接收到的上述至少Quorum个第二消息相同的指示信息;该第四消息具体可以用于对所述共识提议进行可靠传输确认。
例如,仍以上述可靠传输协议为RBC协议为例,上述第四消息可以为RBC协议中与所述第三阶段对应的Ready消息;而上述第三消息可以为针对RBC协议定义的一个与上述第三阶段对应的扩展消息。比如,在一个例子中,该扩展消息可以记为prom消息。
区块链系统中的任一共识节点,在收集到包含的指示信息相同的至少Quorum个第二消息之后,可以根据自己是否发送过包含的指示信息与上述至少Quorum个第二消息相同的第二消息的确定结果,来进一步决定自己在第三阶段需要发送的消息。
在示出的一种实施方式中,如果该共识节点确定自己未发送过包含的指示信息与收集到的上述至少Quorum个第二消息不同的第二消息,则可以向其它共识节点广播发送与上述第三阶段对应的第三消息。
在示出的一种实施方式中,如果该共识节点确定自己发送过包含的指示信息与收集到的上述至少Quorum个第二消息不同的第二消息,此时可以向其它共识节点正常的广播与上述第三阶段对应的第四消息。
其中,需要说明的是,在上述第三消息或者第四消息中,在实际应用中,除了可以包含上述指示信息以外,也可以包含上述共识提议。
在示出的一种实施方式中,如前所述,目标共识节点可以基于纠删码技术对该共识提议进行分片处理,分片数量为共识节点的总数量,并为区块链系统中的每一个共识节点,分别分配一个数据分片,然后可以针对其它各个共识节点分别构造一个第一消息,并在第一消息中分别携带分配给其它各个共识节点的数据分片,再将构造的第一消息,分别的单播发送给其它的各个共识节点。
相应的,区块链系统中的任一共识节点,接收到上述目标共识节点发送的第一消息之后,还可以将该第一消息中携带的数据分片也继续携带在上述第二阶段对应的第二消息中,广播发送至其它共识节点,以将自己收到的数据分片通过广播的方式,扩散到其它的各个共识节点。
在这种情况下,区块链系统中的任一共识节点,在收集到包含的指示信息相同的至少Quorum个第二消息之后,还可以将收集到的Quorum个第二消息中携带的数据分片的集合,继续携带在广播发送给其它的共识节点的第三消息或者第四消息中。也即,此时该第三消息或者第四消息中携带的共识提议,可以是针对该共识提议进行分片得到的数据分片的集合。
在示出的一种实施方式中,如前所述,如果目标共识节点并没有基于纠删码技术对该共识提议进行分片处理,而是将该共识提议通过其它的方式加密后,完整的携带在上述第一消息中,然后采用广播的方式,将该第一消息广播发送至其它的各个共识节点。
相应的,区块链系统中的任一共识节点,在接收到上述目标共识节点发送的第一消息之后,可以采用约定的解密方式,对第一消息中携带的共识提议进行解密来获取共识提议的明文内容,并在本地保存该共识提议的明文内容。此时,该共识节点继续广播发送的第二消息中,可以不携带上述共识提议。
在这种情况下,区块链系统中的任一共识节点,在收集到包含的指示信息相同的至少Quorum个第二消息之后,继续广播发送的第三消息或者第四消息中,也可以不携带上述共识提议。
需要说明的是,在实际应用中,当一个共识节点向其它共识节点广播发送了上述第三消息或者第四消息之后,其它共识节点在接收到该第三消息或者第四消息时,其自身收集到的包含的指示信息相同的第二消息的数量,有可能还尚未达到至少Quorum个。
例如,接收到该第三消息或者第四消息的其它共识节点,可能是由于异步网络中天然存在的网络延迟,导致自己收集到的包含的指示信息相同的第二消息的数量还未达到至少Quorum个。
在这种情况下,可能就会出现接收到上述第三消息或者第四消息的共识节点,由于自己收集到的包含的指示信息相同的第二消息的数量不足,还尚未达到至少Quorum个,而无法向其它共识节点继续广播第三消息或者第四消息的情况。无法向其它共识节点继续广播第三消息或者第四消息,势必会导致第三消息或者第四消息的广播出现阻塞,让共识协议失去活性。
在示出的一种实施方式中,为了应对上述的这种情况,在上述第二消息中,具体可以携带消息发送者的签名。对于区块链中的任一共识节点,如果该共识节点确定自己未发送过包含的指示信息与收集到的上述至少Quorum个第二消息不同的第二消息,则可以在向其它共识节点广播发送与上述第三阶段对应的第三消息时,在该第三消息中携带由上述至少Quorum个第二消息构成的消息列表。
而自己尚未收集到至少Quorum个包含的指示信息相同的第二消息的其它共识节点,在接收到上述第三消息之后,可以对该第三消息中包含的上述消息列表中的各个第二消息携带的签名进行验证;如果针对上述消息列表中的各个第二消息携带的签名均验证通过,则可以向其它共识节点广播与上述第三阶段对应的第三消息。
通过这种方式,可以通过在发出的第三消息中携带自己收集到的至少Quorum个第二消息的签名,来触发接收到该第三消息,并且自己尚未收集到至少Quorum个包含的指示信息相同的第二消息的共识节点,也可以继续向其它共识节点广播发送该第三消息,避免出现第三消息的广播出现阻塞,而导致共识协议失去活性的问题。
对于区块链中的任一共识节点,如果该共识节点确定自己发送过包含的指示信息与收集到的上述至少Quorum个第二消息不同的第二消息,则可以在向其它共识节点广播发送与上述第三阶段对应的第四消息时,也在该第四消息中携带由上述至少Quorum个第二消息构成的消息列表。
而自己尚未收集到至少Quorum个包含的指示信息相同的第二消息的其它共识节点,在接收到上述第四消息之后,也可以对该第四消息中包含的上述消息列表中的各个第二消息携带的签名进行验证;如果针对上述消息列表中的各个第二消息携带的签名均验证通过,则也可以向其它共识节点广播与上述第三阶段对应的第四消息。
相应的,通过这种方式,也可以通过在发出的第四消息中携带自己收集到的至少Quorum个第二消息的签名,来触发接收到该第四消息,并且自己尚未收集到至少Quorum个包含的指示信息相同的第二消息的共识节点,也向其它共识节点广播发送该第四消息,避免出现第四消息的广播出现阻塞,而导致共识协议失去活性的问题。
步骤208,收集其它共识节点广播发送的所述第三消息;响应于收集到了至少Quorum个包含的指示信息相同的第三消息,则基于所述指示信息输出针对所述共识提议的共识结果。
在向其它共识节点广播发送了与上述第三阶段对应的第三消息或者第四消息之后,也可以收集其它共识节点关键发送的第三消息或者第四消息。
对于区块链中的任一共识节点,如果收集到了至少Quorum个包含的指示信息相同的第三消息,此时该共识节点可以基于上述至少Quorum个第三消息包含的指示信息,提前输出针对上述共识提议的共识结果,而不再需要等待后续的二元共识的结果。
需要说明的是,由于收集到了至少Quorum个包含的指示信息相同的第三消息之后,就已经能够确定出针对该共识提议的可靠传输的结果;因此,基于上述至少Quorum个第三消息包含的指示信息,提前输出针对上述共识提议的共识结果,相当于是基于针对该共识提议的可靠传输的结果,提前输出针对上述共识提议的共识结果,而不再需要继续等待基于二元共识协议对该可靠传输的结果进行二元共识的结果。
还需要补充说明的是,提前输出针对上述共识提议的共识结果的共识节点,可以不再需要继续参与后续的二元共识过程,而那些并没有成功收集到至少Quorum个包含的指示信息相同的第三消息的共识节点,则仍然会继续参与后续的二元共识过程。只有部分共识节点参与后续的二元共识过程,并不会对共识提议最终的共识结果造成影响;
例如,在网络未出现延迟的情况下,按照以上的方案,正常的诚实节点,均可以提前输出针对上述共识提议的共识结果,而不再需要等待后续的二元共识的结果。对于恶意节点,将会继续参与后续的二元共识过程。而且,该二元共识过程由于缺乏足够的输入,无法在各个共识节点之间达成共识。在一般情况下,当二元共识协议长时间无法输出二元共识结果,运行该二元共识协议的节点,最终会停止运行该二元共识协议,在整个过程中,不会对诚实节点造成任何的影响。
在示出的一种实施方式中,如前所述,目标共识节点可以基于纠删码技术对该共识提议进行分片处理,分片数量为共识节点的总数量,并为区块链系统中的每一个共识节点,分别分配一个数据分片,然后可以针对其它各个共识节点分别构造一个第一消息,并在第一消息中分别携带分配给其它各个共识节点的数据分片,再将构造的第一消息,分别的单播发送给其它的各个共识节点。
相应的,区块链系统中的任一共识节点,接收到上述目标共识节点发送的第一消息之后,还可以将该第一消息中携带的数据分片也继续携带在上述第二阶段对应的第二消息中,广播发送至其它共识节点,以将自己收到的数据分片通过广播的方式,扩散到其它的各个共识节点。
类似的,区块链系统中的任一共识节点,在收集到包含的指示信息相同的至少Quorum个第二消息之后,还可以将收集到的Quorum个第二消息中携带的数据分片的集合,继续携带在广播发送给其它的共识节点的第三消息或者第四消息中。
在这种情况下,对于区块链中的任一共识节点,如果收集到了至少Quorum个包含的指示信息相同的第三消息,则可以基于纠删码技术,基于这些第三消息中携带的数据分片集合恢复出上述共识提议,然后输出恢复出的该共识提议,以表示自身完成了针对该共识提议的可靠传输。
在示出的另一种实施方式中,如果目标共识节点并没有基于纠删码技术对该共识提议进行分片处理,而是将该共识提议通过其它的方式加密后,完整的携带在上述第一消息中,然后采用广播的方式,将该第一消息广播发送至其它的各个共识节点。
相应的,区块链系统中的任一共识节点,在接收到上述目标共识节点发送的第一消息之后,可以采用约定的解密方式,对第一消息中携带的共识提议进行解密来获取共识提议的明文内容,并在本地保存该共识提议的明文内容。此时,该共识节点继续广播发送的第二消息中,可以不携带上述共识提议。类似的,区块链系统中的任一共识节点,在收集到包含的指示信息相同的至少Quorum个第二消息之后,继续广播发送的第三消息或者第四消息中,也可以不携带上述共识提议。
在这种情况下,对于区块链中的任一共识节点,如果收集到了至少Quorum个包含的指示信息相同的第三消息,则可以输出之前已经保存在本地的解密后的上述共识提议,以表示自身完成了针对该共识提议的可靠传输。
在示出的一种实施方式中,对于区块链中的任一共识节点来说,如果在收集到至少Quorum个包含的指示信息相同的第三消息之前,就接收到了用于指示退出针对上述共识提议的共识过程的退出信号,此时该共识节点可以响应于该退出信号,确定是否已经向其它共识节点广播发送了与上述第三阶段对应的第三消息。
一方面,如果该共识节点已经向其它共识节点广播发送了与上述第三阶段对应的第三消息,表明该共识节点已经收集到了至少Quorum个包含的指示信息相同的第二消息,并且自身未发送过包含的指示信息与上述至少Quorum个第二消息不相同的第二消息;此时,该共识节点可以重新向其它共识节点广播发送包含的指示信息与收集到的上述至少Quorum个第二消息相同的第二消息。
也即,该共识节点之前已经通过发送第三消息承诺了,在输出针对上述共识提议的共识结果之前,不再发送包含的指示信息与之前已经收集到的上述至少Quorum个第二消息不相同的第二消息,此时继续遵守该承诺,重新向其它共识节点广播发送包含的指示信息与收集到的上述至少Quorum个第二消息相同的第二消息。
需要解释的是,在相关技术中,对于区块链中的任一共识节点来说,如果接收到了用于指示退出针对上述共识提议的共识过程的退出信号,通常会继续向二元可以继续向运行的二元共识协议中输入一个表示不认可该共识提议的二元投票值(比如0)作为自身的二元投票值。在本实施例中,对于区块链中的任一共识节点来说,在收集到至少Quorum个包含的指示信息相同的第三消息之前,接收到了用于指示退出针对上述共识提议的共识过程的退出信号,此时则并不需要继续向运行的二元共识协议输入二元投票值,而是重新执行一轮与上述第二阶段对应的消息交互,向其它共识节点广播发送与第二阶段对应的第二消息。
另一方面,如果该共识节点并没有向其它共识节点广播发送了与上述第三阶段对应的第三消息,而是广播发送了与上述第三阶段对应的第四消息,表明该共识节点虽然在此之前已经收集到了至少Quorum个包含的指示信息相同的第二消息,但自身发送过包含的指示信息与上述至少Quorum个第二消息不相同的第二消息。此时,该共识节点可以重新向其它共识节点广播发送包含的指示信息与收集到的上述至少Quorum个第二消息相同的第二消息,也可以重新向其它共识节点广播发送包含的指示信息与收集到的上述至少Quorum个第二消息不相同的第二消息。
也即,该共识节点之前并没有通过发送第三消息承诺了,在输出针对上述共识提议的共识结果之前,不再发送包含的指示信息与之前已经收集到的上述至少Quorum个第二消息不相同的第二消息,此时该共识节点可以灵活的更改自己发出的与上述第二阶段对应的第二消息中包含的指示消息。
需要说明的是,由于上述第三消息可以用于表示在输出针对上述共识提议的共识结果之前,将不再发送包含的指示信息与收集到的上述至少Quorum个第二消息不相同的第二消息;因此,一个共识节点在收集到了至少Quorum个包含的指示信息相同的第三消息之后,也就意味着区块链系统中有至少Quorum个共识节点承诺了,不再发送包含的指示信息与上述至少Quorum个第二消息不相同的第二消息。
而且,在实际应用中,上述至少Quorum个共识节点中所包含的诚实节点的数量,通常也会大于恶意节点;例如,在区块链中参与共识的共识节点的数量n为3f+1的情况下,Quorum的取值可以为n-f,即2f+1。在极端情况下,即便f个恶意节点均包含在上述至少Quorum个共识节点之中,那么也仍然会存在n-2f个诚实节点,也即f+1个诚实节点。此时诚实节点的数量仍然大于恶意节点的数量。
不难理解,足够多的诚实节点承诺不再发送包含的指示信息与上述至少Quorum个第二消息不相同的第二消息,显然可以保证后续的二元共识过程的输出结果,不会由于恶意节点随意更改自己发出的第二消息里携带的指示信息而发生任何的改变。
基于此,对于区块链中的任一共识节点来说,如果收集到了至少Quorum个包含的指示信息相同的第三消息,此时该共识节点基于上述至少Quorum个第三消息包含的指示信息,提前输出针对上述共识提议的共识结果,而无需等待后续的二元共识的结果,显然是具有安全性的。毕竟,后续的二元共识结果,并不会因为恶意节点的存在而发生任何的改变。
在本说明书中,针对上述共识提议的共识结果,通常包含共识通过和未共识通过两种结果。共识节点在提前输出针对上述共识提议的共识结果时,具体可以基于收集到的至少Quorum个包含的指示信息相同的第三消息中携带的指示信息的具体类型,来确定最终需要输出的共识结果。
在示出的一种实施方式中,如前所述,上述指示信息可以包括用于指示已经接收到共识提议的第一指示信息,和用于指示未接收到共识提议的第二指示信息;
一方面,如果收集到的上述至少Quorum个第三消息包含的指示信息为上述第一指示信息,此时可以确定针对上述共识提议的可靠传输完成,该共识节点可以响应于收集到的至少Quorum个包含该第一指示信息的第三消息,提前输出该共识提议通过共识的共识结果。
另一方面,如果收集到的上述至少Quorum个第三消息包含的指示信息为上述第二指示信息,此时可以确定针对上述共识提议的可靠传输未完成,该共识节点可以响应于收集到的至少Quorum个包含第二指示信息的第三消息,提前输出该共识提议未通过共识的共识结果。
需要说明的是,以上提到的通过共识的共识结果和未通过共识的共识结果,具体可以根据上述第一指示信息和上述第二提示消息的消息内容来加以区分。
例如,在一个例子中,如前所述,上述第一提示消息,可以是上述第一消息中包含的共识提议本身;或者,也可以是上述第一消息中包含的共识提议的摘要(比如hash值);而上述第二指示信息可以是一个预设的标识符。
在这种情况下,共识节点在输出上述共识提议通过共识的共识结果时,可以将该共识提议本身,或者该共识提议的摘要作为该共识提议通过共识的共识结果进行输出。而共识节点在输出该共识提议未通过共识的共识结果时,可以将上述预设的标识符作为共识提议未通过共识的共识结果进行输出;比如,该预设的标识符可以用空值标识符来表示,此时共识节点可以针对该共识提议输出一个空值标识符/>来表示该共识提议未通过共识。
在以上实施例中,是以区块链系统中的目标共识节点,发起共识提议的角度来进行描述的。在实际应用中,区块链系统中同时发起共识提议的共识节点可以有多个。例如,在异步共识协议中,通常可以支持多个共识提议向同一区块同时提议需要进行共识的交易列表,来组成一个区块。
在区块链系统中有多个共识节点同时发起共识提议的情况下,此时区块链系统中共存在需要进行共识处理的多个共识提议。针对上述多个共识提议中的每一个共识提议,区块链系统中的参与共识的各个区块链节点,都可以通过运行上述可靠传输协议,经过步骤202-步骤206描述的三轮的消息交互,来完成针对该共识提议的可靠传输。
在运行上述可靠传输协议,针对上述多个共识提议分别进行可靠传输的过程中,为了区分与不同的共识提议对应的消息,还可以在消息中增加用于区分不同的共识提议的标识。
例如,在一个例子中,可以为每一个共识提议分别创建一个与之对应的共识标识,而在运行上述可靠传输协议对某一共识提议进行可靠传输的过程中,可以在与该共识提议对应的三轮的消息中,分别携带该共识标识,用以明确这三轮的消息是用于针对与该共识标识对应的共识提议进行可靠传输。
通过这种方式,使得区块链系统中的各个共识节点,在对多个共识提议同时进行共识处理时,可以根据接收到的消息中携带的共识标识,来正确的区分出该消息所针对的共识提议。
相应的,共识节点在提前输出针对上述多个共识提议的共识结果时,也可以通过在输出的共识结果中携带上述共识标识,来区分针对不同的共识提议的共识结果。
在实际应用中,当一个共识节点收集到针对某一共识提议的至少Quorum个包含的指示信息相同的第三消息,并提前输出了针对该共识节点的共识结果之后,此时其它共识节点自身收集到的包含的指示信息相同的第三消息的数量,有可能还尚未达到至少Quorum个。例如,可能是由于异步网络中天然存在的网络延迟,导致其它共识节点收集到的包含的指示信息相同的第三消息的数量还未达到至少Quorum个。
在这种情况下,可能就会出现部分共识节点,已经提前输出了针对该共识提议的共识结果,而其它共识节点还尚未输出针对该共识提议的共识结果的情况。例如,尚未输出针对该共识提议的共识结果的共识节点,可能是由于网络延迟等原因始终无法输出共识结果。这种情况的发生,势必也会让共识协议失去活性。
在示出的一种实施方式中,为了应对上述的这种情况,在上述第三消息中,具体可以携带消息发送者的签名。对于区块链中的任一共识节点,如果收集到了针对某一共识提议的额至少Quorum个包含的指示信息相同的第三消息,可以响应于该收集到了的至少Quorum个包含的指示信息相同的第三消息,继续将携带签名的上述至少Quorum个包含的指示信息相同的第三消息构成的消息列表,广播发送至其它共识节点。
尚未收集到至少Quorum个包含的指示信息相同的第三消息的其它共识节点,在收到该消息列表后,可以对该消息列表中的至少Quorum个第三消息携带的签名进行验证,并上述至少Quorum个第三消息携带的签名均验证通过后,也可以基于上述至少Quorum个第三消息包含的指示信息输出针对该共识提议的共识结果。其中,基于上述至少Quorum个第三消息包含的指示信息输出针对该共识提议的共识结果的具体过程,已在之前的实施例中进行了介绍,不再赘述。
通过这种方式,使得提前输出了共识结果的共识节点,可以通过将自己收集到的携带签名的至少Quorum个包含的指示信息相同的第三消息,也广播发送给尚未收集到至少Quorum个包含的指示信息相同的第三消息的其它共识节点,来触发其它共识节点也可以提前输出针对该共识提议的共识结果,从而可以避免共识协议失去活性。
在本说明书中,区块链系统中的共识节点除了可以运行上述可靠传输协议,在各个共识节点之间进行消息交互,对共识提议进行可靠传输以外,还可以运行二元共识协议,对参与共识的各个共识节点针对上述共识提议的可靠传输结果进一步的进行二元共识。
需要说明的是,对参与共识的各个共识节点针对上述共识提议的可靠传输结果进行二元共识,也就是对各个共识节点在可靠传输的过程中,是否成功接收到该共识提议的结果进行二元共识,以在各个共识节点之间达成一致。
例如,在相关技术中,如果共识节点在可靠传输的过程中,成功的输出了该共识提议(表示完成了针对该共识提议的可靠传输,也即成功接收到了该共识提议),可以继续向运行的二元共识协议中输入一个1作为自身的二元投票值。反之,如果没有成功的输出该共识提议,可以继续向运行的二元共识协议中输入一个0作为自身的二元投票值。后续,可以基于二元共识协议输出的二元共识的结果,在各个共识节点之间,对各自输入的二元投票值达成一致。
在示出的一种实施方式中,区块链系统中的任一共识节点,如果收集到了针对某一共识提议的至少Quorum个包含的指示信息相同的与上述第三阶段对应的消息,并且收集到的这些消息中,除了包含上述第三消息以外还包含上述第四消息,表明该共识节点收集到的上述第三消息的数量不足Quorum个,将无法提前输出针对上述共识提议的共识结果。
此时,该共识节点可以继续运行二元共识协议对上述共识提议的可靠传输结果进一步的进行二元共识,然后再根据二元共识结果,来进一步输出针对该共识提议的共识结果。
在示出的一种实施方式中,上述共识节点继续运行二元共识协议针对该共识提议进行二元共识时,具体可以基于收集到的针对该共识提议的至少Quorum个消息中包含的指示信息,来确定该共识节点针对上述共识提议的二元投票值,再将确定出的该二元投票值输入至运行的二元共识协议中进行二元共识。
其中,参与共识的各个共识节点分别运行二元共识协议对输入的二元投票值进行二元共识的具体过程,不是本说明书讨论的范畴,因而不再具体详述。
例如,在一个例子中,如前所述,上述至少Quorum个消息中包含的指示信息,具体可以包括用于指示已经接收到上述共识提议的第一指示信息,和用于指示未接收到上述共识提议的第二指示信息。相应的,上述二元投票值,具体也可以包括用于表示认可该共识提议的第一取值,和用于表示不认可该共识提议的第二取值。
共识节点在基于收集到的针对该共识提议的至少Quorum个消息中包含的指示信息,来确定该共识节点针对上述共识提议的二元投票值时,可以先确定上述至少Quorum个消息中包含的指示信息的具体类型。
一方面,如果上述至少Quorum个消息中包含的指示信息为上述第一指示信息,则将可以将该共识节点针对该共识提议的二元投票值确定为上述第一取值;比如,该第一取值可以用1来表示。
另一方面,如果上述至少Quorum个消息中包含的指示信息为上述第二指示信息,则可以将针对该共识提议的二元投票值确定为上述第二取值。比如,该第二取值可以用0来表示。
在本说明书中,当参与共识的各个共识节点,分别基于运行的二元共识协议针对上述共识提议的可靠传输结果完成了二元共识,可以基于二元共识协议输出的二元共识结果,进一步的输出针对上述共识提议的共识结果。
在示出的一种实施方式中,如前所述,上述第一指示信息可以是上述共识提议本身;或者也可以是上述共识提议的摘要;上述第二指示信息可以是一个预设的标识符。相应的,二元投票值也可以包括用于表示认可共识提议的第一取值,和用于表示不认可共识提议的第二取值。
共识节点在基于运行的二元共识协议输出的二元共识结果,来进一步输出针对上述共识提议的共识结果时,具体也可以先确定该二元共识结果的具体类型;
一方面,如果运行的二元共识协议输出的二元共识结果为上述第一取值,表明各个共识节点对认可该共识提议的投票值达成一致,此时该共识节点可以将上述共识提议或者上述共识提议的摘要(比如hash值)作为该共识提议通过共识的共识结果进行输出。
另一方面,如果运行的二元共识协议输出的二元共识结果为上述第二取值,表明各个共识节点对不认可该共识提议的投票值达成一致,此时该共识节点可以将上述预设的标识符作为该共识提议未通过共识的共识结果进行输出。比如,上述预设的标识符可以用空值标识符来表示,此时可以输出一个空值标识符/>作为该共识提议未通过共识的结果。
以下将以上述可靠传输协议为RBC(Reliable Broadcast,可靠广播)协议为例,对图2示出的异步共识方法进行详细说明。
请参见图3,图3为本说明书示出的另一种可退出式的可靠广播共识机制的交互图。
如图3所示,上述第一消息可以是RBC协议中的Initiate消息,上述第二消息可以是RBC协议中的Echo消息,第三消息可以是可针对RBC协议定义的一个与上述第三阶段对应的扩展消息,该第三消息可以记为prom消息。
假设区块链中参与共识的节点可以分别记为P1、P2、P3和P4,由P1发起的共识提议记为m,作为共识提议的发起方,P1可以打包一个Initiate消息,并在该Initiate消息中携带共识提议m,然后分别向P2、P3和P4发送该Initiate消息。其中,Initiate消息可以单播发送也可以广播发送,不再赘述。
P2、P3和P4在收到P1发送的Initiate消息之后,可以继续向其它共识节点广播发送echo消息,并收集其它共识节点广播发送的echo消息。对于P1来说,也可以继续收集P2、P3和P4广播发送的echo消息。
其中,该echo消息中,可以携带指示该共识提议m的传输状态的指示信息。该指示信息可以包括指示已经接收到共识提议m的第一指示信息,和用于指示未接收到共识提议m的第二指示信息。在本实施例中,第一指示信息可以用共识提议m本身来表示;第二指示信息可以用空值标识符来表示。
如图3所示,P2、P3和P4在成功收到P1发送的Initiate消息之后,可以继续向其它共识节点广播发送携带该共识提议m(该共识提议m作为上述第一指示信息)的echo消息,来表明自身已经接收到共识提议m。
当P1、P2、P3和P4中的任一共识节点,收集到至少Quorum个携带该共识提议m的echo消息,由于自身均未发送过携带空值标识符的echo消息,可以继续向其它共识节点广播发送prom消息,来承诺在输出针对共识提议m的共识结果之前,不再发送携带空值标识符/>的echo消息,并收集其它共识节点广播发送的prom消息。
请继续参见图1,假设P1、P2、P3是诚实节点,P4是恶意节点(存在恶意不发送RBC协议中定义的交互消息的行为),则P1、P2、P3在收集到携带共识提议m的至少Quorum个的prom消息之后,可以提前输出共识提议m,以作为该共识提议m共识通过的结果,而不再需要参与后续的二元共识过程。由于P1、P2、P3均成功输出了该共识提议m,因此成功输出了该共识提议m的节点的数量也达到了Quorum个,此时针对该共识提议的最终的共识结果为共识通过。
除此之外,P1、P2、P3可以将自身收集到的携带共识提议m的至少Quorum个的prom消息打包成消息集合后广播发送给其它共识节点。其中,这些prom消息都会携带消息发送节点的签名。而对于恶意节点P4,其无法自主的收集到携带共识提议m的至少Quorum个prom消息,但是可以接收到P1、P2、P3广播发送的打包后的携带共识提议m的至少Quorum个的prom消息集合。
请继续参见图3,恶意节点P4在收到P1、P2、P3中任一节点广播发送的打包后的携带共识提议m的至少Quorum个prom消息集合后,可以对这些prom消息集合中的prom消息的签名进行验证,并在验证通过后,也可以提前输出共识提议m,以作为该共识提议m共识通过的结果。
本说明书还提供一种区块链系统的节点设备的实施例,其中区块链系统中参与共识的节点设备运行了可靠传输协议,所述可靠传输协议包括发起对节点设备的共识提议进行可靠传输的第一阶段,对接收到的共识提议进行可靠传输响应的第二阶段,以及对接收到的共识提议进行可靠传输确认的第三阶段,包括:
第一发送模块,响应于接收到的由目标共识节点发送的与所述第一阶段对应的第一消息,向其它共识节点广播发送与所述第二阶段对应的第二消息;其中,所述第一消息包含所述目标共识节点的共识提议;所述第二消息包含用于指示所述共识提议的传输状态的指示信息;
确定模块,收集其它共识节点广播发送的第二消息,并响应于收集到了至少Quorum个包含的所述指示信息相同的第二消息,确定是否发送过包含的指示信息与所述至少Quorum个第二消息不相同的第二消息;
第二发送模块,如果未发送过包含的指示信息与所述至少Quorum个第二消息不同的第二消息,则向其它共识节点广播发送与所述第三阶段对应的第三消息;其中,所述第三消息包含的指示信息与接收到的所述至少Quorum个第二消息相同;所述第三消息用于表示在输出针对所述共识提议的共识结果之前,不再发送包含的指示信息与所述至少Quorum个第二消息不相同的第二消息;
共识模块,收集其它共识节点广播发送的所述第三消息;如果收集到了至少Quorum个包含的指示信息相同的第三消息,则基于所述指示信息输出针对所述共识提议的共识结果。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为服务器系统。当然,本申请不排除随着未来计算机技术的发展,实现上述实施例功能的计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。
Claims (13)
1.一种基于可靠传输协议的异步共识方法,所述可靠传输协议包括发起对共识提议进行可靠传输的第一阶段,对接收到的共识提议进行可靠传输响应的第二阶段,以及对接收到的共识提议进行可靠传输确认的第三阶段,所述方法应用于区块链系统中的任一共识节点,所述方法包括:
响应于接收到的由目标共识节点发送的与所述第一阶段对应的第一消息,向其它共识节点广播发送与所述第二阶段对应的第二消息;其中,所述第一消息包含所述目标共识节点的共识提议;所述第二消息包含用于指示所述共识提议的传输状态的指示信息;
收集其它共识节点广播发送的第二消息,并响应于收集到了至少Quorum个包含的所述指示信息相同的第二消息,确定是否发送过包含的指示信息与所述至少Quorum个第二消息不相同的第二消息;
如果未发送过包含的指示信息与所述至少Quorum个第二消息不同的第二消息,则向其它共识节点广播发送与所述第三阶段对应的第三消息;其中,所述第三消息包含的指示信息与接收到的所述至少Quorum个第二消息相同;所述第三消息用于表示在输出针对所述共识提议的共识结果之前,不再发送包含的指示信息与所述至少Quorum个第二消息不相同的第二消息;
收集其它共识节点广播发送的所述第三消息;响应于收集到了至少Quorum个包含的指示信息相同的第三消息,则基于所述指示信息输出针对所述共识提议的共识结果。
2.如权利要求1所述的方法,所述方法还包括:
如果发送过包含的指示信息与所述至少Quorum个第二消息不同的第二消息,则向其它共识节点广播与所述第三阶段对应的第四消息;其中,所述第四消息包含的指示信息与接收到的所述至少Quorum个第二消息相同;所述第四消息用于对所述共识提议进行可靠传输确认。
3.如权利要求2所述的方法,所述第二消息携带消息发送者的签名;
向其它共识节点广播与所述第三阶段对应的第三消息,包括:
向其它共识节点广播与所述第三阶段对应的第三消息,所述第三消息包含由所述至少Quorum个第二消息构成的消息列表,以触发接收到所述第三消息且未收集到至少Quorum个包含的指示信息相同的第二消息的其它共识节点,对所述消息列表中的各个第二消息携带的签名进行验证,并在验证通过后,向其它共识节点广播与所述第三阶段对应的第三消息;
向所述区块链系统中的其它共识节点广播与所述第三阶段对应的第四消息,包括:
向其它共识节点广播与所述第三阶段对应的第四消息,所述第四消息包含由所述至少Quorum个第二消息构成的消息列表,以触发接收到所述第四消息,且未收集到至少Quorum个包含的指示信息相同的第二消息的其它共识节点,对所述消息列表中的各个第二消息携带的签名进行验证,并在验证通过后,向其它共识节点广播与所述第三阶段对应的第四消息。
4.如权利要求2所述的方法,所述可靠传输协议包括RBC可靠广播协议;所述第一消息为RBC协议中与所述第一阶段对应的Initiate消息;所述第二消息为RBC协议中与所述第二阶段对应的Echo消息;所述第四消息为RBC协议中与所述第三阶段对应的Ready消息;所述第三消息为针对RBC协议定义的与所述第三阶段对应的扩展消息。
5.如权利要求1所述的方法,所述指示信息包括用于指示已经接收到所述共识提议的第一指示信息,和用于指示未接收到所述共识提议的第二指示信息;
所述响应于收集到了至少Quorum个包含的指示信息相同的第三消息,则基于所述指示信息输出针对所述共识提议的共识结果,包括:
响应于收集到了至少Quorum个包含所述第一指示信息的第三消息,则输出所述共识提议通过共识的共识结果;
响应于收集到了至少Quorum个包含所述第二指示信息的第三消息,则输出所述共识提议未通过共识的共识结果。
6.如权利要求5所述的方法,所述第一指示信息包括所述共识提议;或者所述共识提议的摘要;所述第二指示信息包括预设的标识符;
输出所述共识提议通过共识的共识结果,包括:将所述共识提议或者所述共识提议的摘要作为所述共识提议通过共识的共识结果进行输出;
输出所述共识提议未通过共识的共识结果,包括:将所述预设的标识符作为所述共识提议未通过共识的共识结果进行输出。
7.如权利要求2所述的方法,所述第三消息携带消息发送者的签名;
所述方法还包括:
响应于收集到了至少Quorum个包含的指示信息相同的第三消息,将所述至少Quorum个包含的指示信息相同的第三消息,广播发送至其它共识节点,以触发所述其它共识节点中未收集到至少Quorum个包含的指示信息相同的第三消息的共识节点,对所述至少Quorum个第三消息携带的签名进行验证,并在验证通过后,基于所述至少Quorum个第三消息包含的所述指示信息输出针对所述共识提议的共识结果。
8.如权利要求2所述的方法,所述方法还包括:
响应于收集到了至少Quorum个包含的指示信息相同的与所述第三阶段对应的消息中,除了包含所述第三消息以外还包含所述第四消息,则基于所述指示信息确定针对所述共识提议的二元投票值,并将确定出的所述二元投票值输入至运行的二元共识协议中,以对所述共识提议进行二元共识;
基于所述二元共识协议输出的二元共识结果进一步输出针对所述共识提议的共识结果。
9.如权利要求8所述的方法,所述指示信息包括用于指示已经接收到所述共识提议的第一指示信息,和用于指示未接收到所述共识提议的第二指示信息;所述二元投票值包括用于表示认可所述共识提议的第一取值,和用于表示不认可所述共识提议的第二取值;
基于所述指示信息确定针对所述共识提议的二元共识投票值,包括:
如果所述指示信息为所述第一指示信息,则将针对所述共识提议的二元投票值确定为所述第一取值;
如果所述指示信息为所述第二指示信息,则将针对所述共识提议的二元投票值确定为所述第二取值。
10.如权利要求9所述的方法,所述第一指示信息包括所述共识提议;或者所述共识提议的摘要;所述第二指示信息包括预设的标识符;
基于二元共识结果输出针对所述共识提议的共识结果,包括:
如果所述二元共识协议输出的二元共识结果为所述第一取值,则进一步将所述共识提议或者所述共识提议的摘要作为所述共识提议通过共识的共识结果进行输出;
如果所述二元共识协议输出的二元共识结果为所述第二取值,则进一步将所述预设的标识符作为所述共识提议未通过共识的共识结果进行输出。
11.如权利要求2所述的方法,所述方法还包括:
如果在收集到至少Quorum个包含的指示信息相同的第三消息之前,接收到用于指示退出针对所述共识提议的共识过程的退出信号,则响应于所述退出信号,确定是否已经向其它共识节点广播发送了与所述第三阶段对应的第三消息;
如果是,重新向其它共识节点广播发送包含的指示信息与收集到的所述至少Quorum个第二消息相同的第二消息。
12.如权利要求11所述的方法,所述退出信号为,由至少Quorum个共识节点在可靠传输阶段成功接收到了所述共识提议的第一事件所触发的退出信号;或者,由至少Quorum个共识节点的共识提议均共识通过的第二事件所触发的退出信号。
13.一种区块链系统的节点设备,区块链系统中参与共识的节点设备运行了可靠传输协议,所述可靠传输协议包括发起对节点设备的共识提议进行可靠传输的第一阶段,对接收到的共识提议进行可靠传输响应的第二阶段,以及对接收到的共识提议进行可靠传输确认的第三阶段,包括:
第一发送模块,响应于接收到的由目标共识节点发送的与所述第一阶段对应的第一消息,向其它共识节点广播发送与所述第二阶段对应的第二消息;其中,所述第一消息包含所述目标共识节点的共识提议;所述第二消息包含用于指示所述共识提议的传输状态的指示信息;
确定模块,收集其它共识节点广播发送的第二消息,并响应于收集到了至少Quorum个包含的所述指示信息相同的第二消息,确定是否发送过包含的指示信息与所述至少Quorum个第二消息不相同的第二消息;
第二发送模块,如果未发送过包含的指示信息与所述至少Quorum个第二消息不同的第二消息,则向其它共识节点广播发送与所述第三阶段对应的第三消息;其中,所述第三消息包含的指示信息与接收到的所述至少Quorum个第二消息相同;所述第三消息用于表示在输出针对所述共识提议的共识结果之前,不再发送包含的指示信息与所述至少Quorum个第二消息不相同的第二消息;
共识模块,收集其它共识节点广播发送的所述第三消息;如果收集到了至少Quorum个包含的指示信息相同的第三消息,则基于所述指示信息输出针对所述共识提议的共识结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311442316.1A CN117319411A (zh) | 2023-10-31 | 2023-10-31 | 一种基于可靠传输协议的异步共识方法、区块链节点 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311442316.1A CN117319411A (zh) | 2023-10-31 | 2023-10-31 | 一种基于可靠传输协议的异步共识方法、区块链节点 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117319411A true CN117319411A (zh) | 2023-12-29 |
Family
ID=89262264
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311442316.1A Pending CN117319411A (zh) | 2023-10-31 | 2023-10-31 | 一种基于可靠传输协议的异步共识方法、区块链节点 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117319411A (zh) |
-
2023
- 2023-10-31 CN CN202311442316.1A patent/CN117319411A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3531316B1 (en) | Block chain-based data processing method and device | |
CN107368507B (zh) | 一种基于区块链的共识方法及装置 | |
CN107040585B (zh) | 一种业务校验的方法及装置 | |
CN107450981B (zh) | 一种区块链共识方法及设备 | |
CN107391320B (zh) | 一种共识方法及装置 | |
CN113766035B (zh) | 一种业务受理及共识的方法及装置 | |
CN114584312B (zh) | 一种共识方法、区块链系统和共识节点 | |
CN113630257B (zh) | 一种共识方法、区块链系统和共识节点 | |
CN113761071B (zh) | 一种共识方法、区块链系统和共识节点 | |
CN113630258B (zh) | 一种共识方法、区块链系统和共识节点 | |
CN113610531B (zh) | 一种共识方法、区块链系统和共识节点 | |
CN113783935A (zh) | 一种拜占庭容错方法及装置 | |
CN114390063B (zh) | 用于区块链网络的消息广播方法、区块链节点和区块链系统 | |
CN113630259A (zh) | 一种共识方法、区块链系统和共识节点 | |
CN117319411A (zh) | 一种基于可靠传输协议的异步共识方法、区块链节点 | |
CN116366666A (zh) | 区块链系统中的链状态更新方法和区块链节点 | |
CN117319410A (zh) | 一种基于可靠传输协议的异步共识方法、区块链节点 | |
CN113794566B (zh) | 一种可再投票的二元共识方法、装置、及存储介质 | |
CN114980099B (zh) | 一种设备之间的连接方法、装置及设备 | |
CN114782016A (zh) | 基于智能合约的债权数据处理方法、装置及区块链系统 | |
CN115129728A (zh) | 一种文件校验的方法及装置 | |
CN113783946A (zh) | 一种基于门限签名的可再投票二元共识方法及装置 | |
CN117408704A (zh) | 交易重放检查方法、区块链节点及其设备 | |
CN116431312A (zh) | 区块链系统中的交易执行方法和区块链节点 | |
CN117997698A (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 |