CN114553434A - 一种共识方法、区块链系统和共识节点 - Google Patents
一种共识方法、区块链系统和共识节点 Download PDFInfo
- Publication number
- CN114553434A CN114553434A CN202210158410.3A CN202210158410A CN114553434A CN 114553434 A CN114553434 A CN 114553434A CN 202210158410 A CN202210158410 A CN 202210158410A CN 114553434 A CN114553434 A CN 114553434A
- Authority
- CN
- China
- Prior art keywords
- message
- consensus
- node
- consensus node
- signature
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 94
- 230000008569 process Effects 0.000 claims description 45
- 238000012795 verification Methods 0.000 claims description 6
- 238000004422 calculation algorithm Methods 0.000 description 27
- 238000010586 diagram Methods 0.000 description 17
- 230000008859 change Effects 0.000 description 13
- 230000006870 function Effects 0.000 description 11
- 230000003993 interaction Effects 0.000 description 11
- 230000006872 improvement Effects 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 239000000470 constituent Substances 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 210000003743 erythrocyte Anatomy 0.000 description 4
- 230000000977 initiatory effect Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 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
- 238000013461 design Methods 0.000 description 3
- 241000282346 Meles meles Species 0.000 description 2
- 235000013929 Psidium pyriferum Nutrition 0.000 description 2
- 244000236580 Psidium pyriferum Species 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 230000018109 developmental process Effects 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
- 241000282344 Mellivora capensis Species 0.000 description 1
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 230000004931 aggregating effect Effects 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
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000004519 manufacturing process Methods 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
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 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/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/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
- H04L9/3239—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 involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Hardware Redundancy (AREA)
- Computer And Data Communications (AREA)
Abstract
一种共识方法、区块链系统和共识节点,该共识方法包括:第一轮:第一共识节点广播第一消息,第一消息中包括共识提议的交易集合和第一共识节点的签名;第二轮:接收到所述第一消息的共识节点广播第二消息,第二消息中包括对所述交易集合的投票和签名;所述投票包括所述交易集合的摘要值;第三轮:接收到第二消息的共识节点收集到至少Quorum个来自于不同共识节点的一致的投票后,如果自身针对该提议没有广播过不同的投票,则广播第三消息,第三消息包括所述摘要值以及收集到的签名集合;共识节点收集到至少Quorum个来自于不同节点的第三消息后,将所述摘要值对应的交易集合作为共识结果的至少一部分输出。
Description
技术领域
本说明书实施例属于区块链技术领域,尤其涉及一种共识方法、区块链系统和共识节点。
背景技术
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区块链具有去中心化、信息不可篡改、自治性等特性,区块链也有着越来越多的应用。
发明内容
本发明的目的在于提供一种共识方法、区块链系统和共识节点,包括:
一种区块链系统中的共识方法实施例,包括:
第一轮:第一共识节点广播第一消息,第一消息中包括共识提议的交易集合和第一共识节点的签名;
第二轮:接收到所述第一消息的共识节点广播第二消息,第二消息中包括对所述交易集合的投票和签名;所述投票包括所述交易集合的摘要值;
第三轮:接收到第二消息的共识节点收集到至少Quorum个来自于不同共识节点的一致的投票后,如果自身针对该提议没有广播过不同的投票,则广播第三消息,第三消息包括所述摘要值以及收集到的签名集合;
共识节点收集到至少Quorum个来自于不同节点的第三消息后,将所述摘要值对应的交易集合作为共识结果的至少一部分输出。
一种区块链系统中的共识方法实施例,包括:
第一轮:第一共识节点广播第一消息,第一消息中包括共识提议的交易集合和第一共识节点的签名;
第二轮:接收到所述第一消息的共识节点广播第二消息,第二消息中包括对所述交易集合的投票和签名;所述投票包括表示不认可所述交易集合的值;
第三轮:接收到第二消息的共识节点收集到至少Quorum个来自于不同共识节点的一致的投票后,如果自身针对该提议没有广播过不同的投票,则广播第三消息,第三消息包括所述表示不认可所述交易集合的值以及收集到的签名集合;
共识节点收集到至少Quorum个来自于不同节点的第三消息后,不将所述交易集合作为共识结果的一部分输出。
一种区块链系统实施例,包括共识节点,其中:
第一共识节点广播第一消息,第一消息中包括共识提议的交易集合和第一共识节点的签名;
接收到所述第一消息的共识节点广播第二消息,第二消息中包括对所述交易集合的投票和签名;所述投票包括所述交易集合的摘要值;
接收到第二消息的共识节点收集到至少Quorum个来自于不同共识节点的一致的投票后,如果自身针对该提议没有广播过不同的投票,则广播第三消息,第三消息包括所述摘要值以及收集到的签名集合;
共识节点收集到至少Quorum个来自于不同节点的第三消息后,将所述摘要值对应的交易集合作为共识结果的至少一部分输出。
一种区块链系统实施例,包括共识节点,其中:
第一共识节点广播第一消息,第一消息中包括共识提议的交易集合和第一共识节点的签名;
接收到所述第一消息的共识节点广播第二消息,第二消息中包括对所述交易集合的投票和签名;所述投票包括表示不认可所述交易集合的值;
接收到第二消息的共识节点收集到至少Quorum个来自于不同共识节点的一致的投票后,如果自身针对该提议没有广播过不同的投票,则广播第三消息,第三消息包括所述表示不认可所述交易集合的值以及收集到的签名集合;
共识节点收集到至少Quorum个来自于不同节点的第三消息后,不将所述交易集合作为共识结果的一部分输出。
一种区块链系统中的共识节点实施例,包括:
第一消息接收单元,用于接收第一共识节点广播的第一消息,第一消息中包括共识提议的交易集合和第一共识节点的签名;
第二消息广播单元,用于当第一消息接收单元接收到所述第一消息后广播第二消息,第二消息中包括对所述交易集合的投票和签名;所述投票包括所述交易集合的摘要值;
投票收集单元,用于收集来自于共识节点的投票;
第三消息广播单元,当投票收集单元收集到至少Quorum个来自于不同共识节点的一致的投票,如果自身针对该提议没有广播过不同的投票,则广播第三消息,第三消息包括所述摘要值以及收集到的签名集合;
第三消息收集单元,收集来自于共识节点的第三消息;
输出单元,当第三消息收集单元收集到至少Quorum个来自于不同节点的第三消息后,将所述摘要值对应的交易集合作为共识结果的至少一部分输出。
一种区块链系统中的共识节点实施例,包括:
第一消息接收单元,用于接收第一共识节点广播的第一消息,第一消息中包括共识提议的交易集合和第一共识节点的签名;
第二消息广播单元,用于当第一消息接收单元接收到所述第一消息后广播第二消息,第二消息中包括对所述交易集合的投票和签名;所述投票包括表示不认可所述交易集合的值;
投票收集单元,用于收集来自于共识节点的投票;
第三消息广播单元,当投票收集单元收集到至少Quorum个来自于不同共识节点的一致的投票后,如果自身针对该提议没有广播过不同的投票,则广播第三消息,第三消息包括所述表示不认可所述交易集合的值以及收集到的签名集合;
第三消息收集单元,收集来自于共识节点的第三消息;
输出单元,当第三消息收集单元收集到至少Quorum个来自于不同节点的第三消息后,不将所述摘要值对应的交易集合作为共识结果的至少一部分输出。
上述实施例中,可以在一定前提下缩短至3个轮次完成一次共识,相对于HBBFT中的至少6轮,大大降低了共识过程带来的延迟。本申请实施例中相当于采用前瞻投票和数字签名技术将HBBFT中RBC过程的后两轮和ABA过程的前两轮进行了合并,从而缩短了所需的轮次。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是一实施例中实用拜占庭容错算法常规阶段的示意图;
图2是一实施例中实用拜占庭容错算法视图切换阶段的示意图;
图3是一实施例中蜜獾拜占庭容错算法的示意图;
图4是本说明书一实施例中共识算法的流程图;
图5是本说明书一实施例中共识算法的示意图;
图6是本说明书一实施例中共识算法的示意图;
图7是本说明书一实施例中共识算法的示意图;
图8是本说明书一实施例中共识算法的示意图;
图9是本说明书一实施例中共识算法的示意图;
图10是本说明书一实施例中共识算法的流程图;
图11是本说明书一实施例中共识节点架构图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
区块链系统中,不同参与方通过部署的节点(Node)可以建立一个分布式的区块链网络。利用链式区块结构构造的去中心化(或称为多中心化)的分布式账本,保存于分布式的区块链网络中的每个节点(或大多节点上,如共识节点)上。这样的区块链系统需要解决去中心化(或多中心化)的多个节点上各自的账本数据的一致性和正确性的问题。每个节点上都运行着区块链程序,在一定容错需求的设计下,通过共识(consensus)机制保证所有忠诚节点具有相同的交易,从而保证所有忠诚节点对相同交易的执行结果一致,并将交易及执行结果打包生成区块。当前主流的共识机制包括:工作量证明(Proof of Work,POW)、股权证明(Proof of Stake,POS)、委任权益证明(Delegated Proof of Stake,DPOS)、实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)算法,蜜獾拜占庭容错(HoneyBadgerBFT)算法等。
以PBFT为例,该算法是Miguel Castro(卡斯特罗)和Barbara Liskov(利斯科夫)在1999年提出来的,解决了原始拜占庭容错算法效率不高的问题,将算法复杂度由指数级降低到多项式级,使得拜占庭容错算法在实际系统应用中变得可行。该论文发表在1999年的操作系统设计与实现国际会议上(OSDI99)。PBFT算法中,所有的副本(replica)在一个被称为视图(View)的轮换过程(succession of configuration)中运行。在某个视图中,一个副本作为主节点(primary),其他的副本作为备份节点(backups)。视图是连续编号的整数。主节点由公式p=v mod|R|计算得到,这里v是视图编号,p是副本编号,|R|是副本集合的个数。该算法中假设,当最多存在f个副本(即节点)失效时,如果存在总数为至少3f+1个副本,就能保证在异步系统中提供安全性和活性。为了能够确保所有副本的数据一致性要求和容错要求而需要的一定数量副本的集合,一般是分布式系统中的大多数节点构成的集合,构成大多数(Quorum)。例如在总节点数n为3f+1(n=3f+2或n=3f的情况一般不会对容错效果带来提升)的情况下,Quorum为2f+1。这样,对于包含四个节点的分布式系统,任意三个节点可以构成一个Quorum。
PBFT包括Normal Case Phase和View Change Phase两个过程,图1为Normal CasePhase(常规阶段)过程的流程图。Normal Case Phase中主要包括PRE-PREPARE(预准备)、PREPARE(准备)和COMMIT(提交)三个阶段,其中3号节点例如可以表示宕机的节点(图1中以×表示)。当主节点失效的时候(图2中以×表示,如更换视图前主节点Primary也就是Replica 0(副本0)失效)就需要启动视图更换(view change)过程,从而在系统存在故障时进行状态调整,更换新的主节点(如更换视图后Replica 1为主节点Primary)。图2为ViewChange Phase(视图切换)的示意图。如果主节点掉线或者作恶而不广播客户端的请求等,客户端可以设置超时机制。如果超时的话,客户端可以向所有副本节点广播请求消息。副本节点检测出主节点作恶或者下线后,也可以发起View Change协议阶段,以更换主节点(经常简称为“换主”)。此外,也可能由于主节点发起错误的提议导致PRE-PREPARE、PREPARE和COMMIT三阶段共识过程失败,或者,PREPARE、COMMIT阶段可能达不成Quorum数量(如3f+1个节点中的2f+1个,也称为法定数量)的一致,也都无法完成共识。这些情况下也可能发起View Change协议阶段,以更换主节点。
PBFT协议属于半同步(partial synchronous)协议,其特点是假设网络一开始是异步的,但是能够从某一时刻开始同步。要在网络中让不同节点对同一提议达成共识,最简便的方式是设置主节点,由主节点来统一各个节点的意见。通过设置定时器,可以防止主节点出错。PBFT中,如果在有限时间内没有完成Normal Case Phase,会触发Backups发起ViewChange Phase,以更换主节点。PBFT将主节点固定在一个位置,所有请求都可以先发送到主节点,再由主节点广播到其他共识节点。除了引入额外的、将请求发送到主节点的延迟之外,主节点的出入口带宽也可能成为性能瓶颈。与此相对的,HoneyBadgerBFT(也常简称为HBBFT)算法属于一种异步(asynchronous)协议。异步协议适用于异步网络,也就是这个网络中节点间的消息可以被任意延迟,但最终会到达。HoneyBadgerBFT中去掉了定时器,而是通过消息来驱动协议的执行。同时,HoneyBadgerBFT算法中所有节点都是对等的,没有主节点和备份节点之分,也就没有换主的过程。HBBFT等异步网络共识协议无主节点的概念,各节点都可提议请求,尝试构造区块,因此异步网络协议在一定程度上缓解了公平性和单节点瓶颈的问题。
图3为HoneyBadgerBFT算法单节点角度的流程图。实际上,如前所述,HoneyBadgerBFT算法中所有节点都是对等的,也就是说,所有节点都可以执行图3所示的流程。如图3所示,从单节点的视角来看,HoneyBadgerBFT主要包括两个阶段,分别为可靠广播(Reliable BroadCast,RBC)和异步共识(Asynchronous Binary Agreement,ABA,异步二进制协议,也称为“01异步共识”)。此外,还有RBC和ABA之上的异步公共子集(AsynchronousCommon Subset,ACS)协议。RBC阶段至少包括Rval、Echo、Ready三轮消息交互,ABA阶段至少包括Bval、Aux和Coin三轮消息交互。RBC使用三轮消息交互保证可靠的提议广播。ABA首先进行两轮投票(Bval和AUX消息),然后借助抛硬币(Coin)对各节点的提议统一认识,从而绕开半同步协议对网络同步的要求。一次HoneyBadgerBFT共识,要经过RBC阶段和至少一次ABA阶段。最好的情况下,存在1/2的概率可以结束本次HoneyBadgerBFT共识过程,这样,需要经过6个轮次完成一次共识。此外,有1/4概率会进入再一次的ABA过程,如图3中第二次ABA过程(7、8、9轮次表示的ABA过程),有1/4概率会在第二轮结束,且存在至少1/4的概率可以结束本次HoneyBadgerBFT共识过程,这样,需要经过9个轮次完成一次共识。在第二次ABA过程后,整体上有1/8的概率会进入再一次的ABA过程……以此类推。
另外,对于一个最终生成的区块(对应一个epoch)来说,一个节点可以运行一个ACS和n个RBC+n个ABA,n为共识节点个数,且其中1个RBC和ABA对应自身发起的共识提议,其它(n-1)个RBC和ABA对应其它(n-1)个节点发起的共识提议。也就是说,对于一个epoch来说,一个节点发起共识提议的同时,也会配合完成其它节点发起的共识提议。这样,对于一个节点来说,至少(n-f)个RBC结束后会将这些RBC已经完成的情况(通过Ready消息表示)发至ACS,进而由ACS为对应的ABA赋初值,启动对应的ABA过程。在至少(n-f)个共识提议完成ABA之后如果剩余的共识提议仍未完成RBC,则会被赋初值为0,进而执行该提议对应的ABA过程。从全局的视角来看,至少(n-f)个节点会执行相同的上述共识过程(至少(n-f)个不同节点发起提议的过程),并最终由ACS来收集各个提议的ABA结果后按照某种规则对ABA结果为1的提议排序后输出。
综上所述,HoneyBadgerBFT至少包括一次RBC(三轮)和一次ABA(三轮),如果ABA的投票结果与抛币结果不一致,协议进入新一轮的ABA(至少额外三轮)。抛币给共识的轮次带来不确定性,可能增加延迟。
本申请提供一种共识算法实施例,如图4所示,具体包括:
S41:【第一轮】第一共识节点广播第一消息,第一消息中包括共识提议的交易集合和第一共识节点的签名。
本申请一种共识算法实施例中,可以包括3轮的交互。与HBBFT类似的,图5所示实施例的共识算法,也属于一种异步协议,即假设网络中节点间的消息可以被任意延迟,但最终会到达。类似的,图5实施例中也去掉了定时器,通过消息来驱动协议的执行;同时,所有节点可以都是对等的,没有主节点和备份节点之分,任一共识节点都可以发起共识提议,每一个共识节点也都可以参与其他节点提起共识提议的共识过程。一次共识的结果,可以包括本次共识中所有节点提起且获得至少Quorum数量投票一致的共识提议中的交易集合的总和。
以一个节点的视角来看,例如以Node0发起共识提议的视角来看,交互过程如图5所示。在一次共识中,Node0可以发起共识提议,这个共识提议中可以包括打包的交易集合,例如标记为m0,m0中可以包括一系列的交易构成的集合{tx01,tx02,...,tx0n}。进而,Node0可以广播第一消息至其它共识节点,如图5中广播至Node1、Node2和Node3。广播的第一消息中可以包括Node0的共识提议的交易集合m0。这个消息可以称为Val消息。
此外,这个消息还可以包括第一共识节点对m0的签名,例如记为sig00。一般地,第一共识节点Node0可以用自身的私钥对m0直接签名,得到sig00,也可以是先对m0进行hash计算,得到hash值(即摘要值),进而再用自身的私钥对该hash值签名,从而得到sig00,还可以是用自身的私钥对m0和ts0在内的数据直接进行签名或对m0和ts0在内的数据的hash值进行签名Val消息的格式可以如<r,m0,sig00>,其中r可以表示第r次共识。例如这里对m0的共识提议是第r次共识,则下一个共识提议的交易集合m1可以对应第r+1次共识。所述sig00,也可以是采用自身私钥对包括r和m0在内的数据的签名。类似的,也可以是先对m0进行hash计算,得到hash值,进而再用自身的私钥对该hash值和r在内的数据进行签名,从而得到sig00,还可以是用自身的私钥对该m0和r在内的数据的hash值进行签名。
S43:【第二轮】接收到所述第一消息的共识节点广播第二消息,第二消息中包括对所述交易集合的投票和签名;所述投票包括所述交易集合m0的摘要值。
在第一轮的末尾,接收到第一消息的共识节点可以验证接收到的第一消息的正确性。例如,Node1可以采用Node0的公钥对第一消息中的Node0的签名进行验证。如果通过验证,则进入S43。
S43,具体如图5中,接收到第一消息的共识节点可以广播第二消息。第二轮次的消息交互中,Node1、Node2、Node3各自分别广播第二消息至其它共识节点。共识节点广播的第二消息中,可以包括对Node0发起的共识提议的投票。
例如,Node1、Node2、Node3可以通过广播第二消息来告诉其他共识节点自身对共识提议的投票,投票可以是对共识提议中的消息集合表示认可或者不认可。具体的,在第一轮的末尾,收到Val消息的共识节点,可以计算Val消息中共识提议的交易集合的hash值。进而,如果共识节点认可该次共识中Node0提议的交易集合,可以在第2轮次的消息交互中广播该hash值。相反的,如果共识节点不认可该次共识中Node0提议的交易集合,可以在第2轮次的消息交互中广播0。这个广播的第二消息可以记为Bval。此外,也可以是在第2轮次的消息交互中广播该hash值的同时,用1来表示对该hash值代表的提议投票认可或通过,用0来表示对该hash值代表的提议投票不认可或不通过,这只是简单的变化。
本轮次中,Node0可以不参与广播,这是因为Node0在第一轮次中发起共识提议,本身即可以代表Node0对共识提议中的消息集合是认可的,从而第二轮次中可以由Node1、Node2、Node3分别广播第二消息至其它共识节点。
需要说明的是,共识节点可以更改自己的观点并再次投票,即发出多个不同的Bval消息。例如,Node1可以首次发出内容是所述交易集合的hash值的Bval消息,以表示对所述共识提议中的交易集合的认可,而后续可以再次发送内容是0的Bval消息,以表示对所述共识提议中的交易集合的不认可。再例如,Node2可以首次发出内容是0的Bval消息,以表示对所述共识提议中的交易集合的不认可,而后续可以再次发出内容是所述交易集合的hash值的Bval消息,以表示对所述共识提议中的交易集合的认可。
此外,第二消息中还可以包括对所述交易集合的签名。前述提到,在第一轮的末尾接收到第一消息的共识节点可以验证接收到的第一消息的正确性,例如Node1验证Node0的签名是否正确。进而,接收到第一消息的共识节点,可以用自己的私钥对第一消息中的交易集合进行签名。例如Node1对第一消息中的交易集合m0进行签名,得到sig10;也可以是Node1先对m0进行hash计算,得到hash值(即摘要值),进而再用自身的私钥对该hash值签名,从而得到sig10。
类似的,Bval消息的格式可以如<r,hash,sig10>,其中r可以表示第r次共识,hash为m0的hash值,表示对m0的投票观点是认同。则所述sig10,也可以是采用自身私钥对包括r和m0在内的数据的签名。类似的,也可以是先对m0进行hash计算,得到hash值,进而再用自身的私钥对该hash值和r在内的数据进行签名,从而得到sig10,还可以是用自身的私钥对r和hash在内的数据的hash值进行签名。
Node2收到Node0发来的Val消息后,类似的,也可以计算Val消息中的m0的hash值,并采用自身私钥对该hash值签名得到sig20,进而也可以广播Bval消息。Bval消息中可以包括计算得到的hash值以及签名sig20,也可以是包括r、hash值以及签名sig20。
Node3收到Node0发来的Val消息后,类似的,也可以计算Val消息中的m0的hash值,并采用自身私钥对该hash值签名得到sig30,进而也可以广播Bval消息。Bval消息中可以包括计算得到的hash值以及签名sig30,也可以是包括r、hash值以及签名sig30。
S45:【第三轮】接收到第二消息的共识节点收集到至少Quorum个来自于不同共识节点的一致的投票后,如果自身针对该提议没有广播过不同的投票,则广播第三消息,第三消息包括所述摘要值以及收集到的签名。
第二轮中的共识节点广播第二消息,这样,在第二轮的末尾,接收到第二消息的共识节点可以收集第二消息中的投票,进而广播第三消息。
例如Node0,在第二轮的末尾可以收集Bval消息中的投票。假设Node0收集到Node1,Node2、Node3分别广播的Bval消息中的投票都是所述交易集合m0的hash值,且Node0在第一轮中广播的Val消息中也是m0,其对应的hash显然也是m0的hash值,则Node0在本轮次中收集到至少Quorum个一致的摘要值(例如此时f=1,Quorum=3,实际收集到4)。
例如Node1,在第二轮的末尾可以收集Bval消息中的投票,假设Node1收集到Node2、Node3分别广播的第二消息中的投票都是所述交易集合m0的hash值,且Node1在第二轮中广播的第二消息中的投票如果也是所述交易集合m0的hash值(也表示对所述交易集合的认可),且在第一轮中接收到的Node0发出的Val消息中的m0也是同样的hash值,则Node1在本轮次中收集到至少Quorum个一致的摘要值(例如此时f=1,Quorum=3,实际收集到4)。需要说明的是,第一轮中,Node0广播的Val消息中可以包括m0,这样在第一轮的末尾Node1可以计算Val消息中包括的m0的hash值,从而可以统计与第二轮中Node1广播的Bval消息中的m0的hash值是否相同,以及是否与第二轮中接收到的Node2和Node3发来的m0的hash值是否相同,进而得出是否收集到至少Quorum个来自于不同共识节点的一致的hash值。
Node2和Node3与Node1类似,不再赘述。
此外,共识节点还可以在第二轮末尾收集到不同节点的签名,如前所述。通过签名可以统计截止到第二轮所收集到的投票的数量。例如Node1收集到分别有sig10、sig20、sig30签名的同一hash值,则说明对该hash共有3个表示认可的投票(此外还可以包括在第一轮末尾接收到Node0发送的Val消息中对同一hash值的签名sig00,则对同一hash值一共收集到4个签名)。
对于Node1,如果收集到至少Quorum个来自于不同共识节点的一致的hash值,且自身针对该提议m0没有广播过0(即不同的投票),则广播第三消息。第三消息可以记为Prom消息,意思是承诺不会对提议m0更改观点。如前所述,m0的hash值可以表示认可,0可以表示不认可。Node1针对该提议m0没有广播过0,是指没有对提议m0持有过不认可的观点,当然也可以用0以外的其它形式表示这种不认可。Node2和Node3也是类似的。
广播的第三消息中,可以包括收集到的对m0的投票,例如上述第一轮和第二轮中收集到的hash值和签名。
这样,Prom消息的格式可以如<r,hash,<签名集合>>。
例如Node0,假设Node0在第二轮中收集到Node1,Node2、Node3分别广播的Bval消息中的投票都是所述交易集合m0的hash值,这样也就收集到Node1、Node2和Node3各自分别对m0(或m0的hash值)的签名是sig10、sig20、sig30的投票,且Node0在第一轮中广播的Val消息中也包括自身对m0(或m0的hash值)的签名为sig00的hash值。这样,Node0在本轮次中收集到至少Quorum个一致的摘要值(例如此时Quorum=3)。进而,Node0在第三轮中广播的Prom消息中,可以包括该hash值以及收集到的不同节点针对该提议的交易集合m0表示认可的hash值及签名集合,签名集合例如为sig00、sig10、sig20、sig30。
例如,假设Node1在第二轮中收集到Node2、Node3分别广播的Bval消息中的投票都是所述交易集合m0的hash值,这样也就收集到Node2和Node3各自分别对m0(或m0的hash值)的签名是sig20、sig30的投票,且Node0在第一轮中广播的Val消息中也包括其对m0(或m0的hash值)的签名是sig00的投票,且Node1在第二轮中广播的Bval消息中也包括其对m0(或m0的hash值)的签名是sig10的投票。这样,Node1在第一轮和第二轮中收集到至少Quorum个一致的摘要值(例如此时Quorum=3)和不同节点的签名。进而,Node1在第三轮中广播的Prom消息中,可以包括该hash值以及收集到的不同节点针对该提议的交易集合m0表示认可的hash值及签名集合,签名集合例如包括sig00、sig10、sig20、sig30。
Node2和Node3也类似于Node1。
需要说明的是,上述签名集合,也可以用聚合签名或门限签名替代。
S47:共识节点收集到至少Quorum个来自于不同节点的第三消息后,将所述摘要值对应的交易集合作为共识结果的至少一部分输出。
第三轮执行后,接收到Prom消息的共识节点可以统计收集的Prom消息的数量。共识节点在第三轮中发出Prom消息的条件是第二轮中收集到至少Quorum个来自于不同共识节点的一致的投票,且自身针对该提议没有广播过不同的投票,即相当于第二轮末尾该共识节点确认总计至少Quorum数量的共识节点(包括自身)对该提议m0的投票都是认同的。但是,第二轮结束之后还不能马上输出共识结果,而是还需要观察其他节点是否也是在第二轮末尾收集到至少Quorum数量的对提议m0的表示认同的投票,因此需要通过第三轮的Prom消息来确认,并且通过该Prom消息承诺自身不会再针对同一提议m0的表示不同的观点。
例如Node0在第一轮和第二轮中收集到至少Quorum个一致的摘要值,进而,Node0在第三轮中广播的Prom消息中,可以包括该hash值以及收集到的不同节点针对该提议的交易集合m0表示认可的hash值及签名集合,签名集合例如包括sig00、sig10、sig20、sig30。
例如Node1在第一轮和第二轮中收集到至少Quorum个一致的摘要值,进而,Node1在第三轮中广播的Prom消息中,可以包括该hash值以及收集到的不同节点针对该提议的交易集合m0表示认可的hash值及签名集合,签名集合例如包括sig00、sig10、sig20、sig30。
Node2和Node3也类似于Node1。
这样,通过第三轮,例如Node0可以收集到至少Quorum个Prom消息。通过Quorum个Prom消息,Node0可以确认至少Quorum个共识节点中的每一个都收集到了对该提议的交易集合m0表示认可的至少Quorum数量的投票,且发出Prom消息的每一个共识节点都承诺不再会更改投票的观点,这样,Node0可以进一步完成本次共识,即将所述摘要值对应的交易集合m0作为共识结果的至少一部分输出。Node1、Node2和Node3也类似。类似的,其它共识节点如Node1、Node2和Node3也可以进一步完成本次共识,即将所述摘要值对应的交易集合m0作为共识结果的至少一部分输出。
第三轮的Prom消息可以增加签名。例如Node1在第三轮中广播的Prom消息中可以包括Node1对Prom消息中<r,hash,<签名集合>>的签名。
上述图5的实施例,可以由如图中的Node0来执行,也可以扩展到由Node0、Node1、Node2和Node3均执行。前者的情况,实际上,每一收集到至少Quorum个来自于不同节点的第三消息后的共识节点,各自均可以将所述摘要值对应的交易集合作为共识结果的全部来输出,除了图5以外,也可以是图6、图7、图8中的任一。
对于后者,即由Node0、Node1、Node2和Node3均执行的情况,图5是以Node0这一个节点的发起共识提议的视角,实际上Node1、Node2和Node3中的任一也可以发起提议而其它共识节点配合完成上述类似的过程,这样整体上是图5、图6、图7、图8的叠加。
对于后者的情况,例如Node0发起共识提议的交易集合为m0,Node1发起共识提议的交易集合为m1、Node2发起共识提议的交易集合为m2,Node3发起共识提议的交易集合为m3,这样,m0可以对应hash0,m1可以对应hash1,m2可以对应hash2,m3可以对应hash3。如果正常执行,大概率上每个共识节点本次共识的输出结果为{m0,m1,m2,m3},至于输出结果中m0,m1,m2,m3的顺序,可以按照一定规则来排序,例如按照对应hash值的大小顺序来排序。
具体的,可以由共识节点收集上述过程的结果。例如对于图5、图6、图7、图8叠加的情形,对于Node0,可以收集Node0执行上述共识过程的结果,例如包括针对m0的最终为1的共识结果,针对m1的最终为1的共识结果,针对m2的最终为1的共识结果,针对m3的最终为1的共识结果。其中,m0为由Node0发起的共识提议,m1为由Node1发起的共识提议,m2为由Node2发起的共识提议,m3为由Node3发起的共识提议。
上述实施例中,可以在一定前提下缩短至3个轮次完成一次共识,相对于HBBFT中的至少6轮,大大降低了共识过程带来的延迟。实际上,本申请实施例中,相当于采用前瞻投票和数字签名技术将HBBFT中RBC过程的后两轮和ABA过程的前两轮进行了合并,从而缩短了所需的轮次。所述前瞻投票,是指上述实施例中第二轮次的Bval中进行投票,而HBBFT在ABA过程中需要在第五轮次的Bval中才投票。所述数字签名,指上述实施例中第一轮次和第二轮次中采用的数字签名。
本申请实施例中,与PBFT和HBBFT类似,可以容忍一定数量的错误节点,例如是总数n为3f+1的共识节点中可以容错f个错误节点,Quorum为2f+1。以下给出一个存在f(f=1)的失效节点的例子。
在图9所示的例子中,假设Node3为失效节点的情况,则:
第一轮中,Node0广播Val消息,第一消息中包括共识提议的交易集合m0和Node0的签名sig00。m0中例如包括一系列的交易构成的集合{tx01,tx02,...,tx0n}。sig00例如是Node0先对m0进行hash计算,得到hash值,进而再用自身的私钥对该hash值签名得到。
Val消息的格式可以如<r,m0,sig00>,其中r可以表示第r次共识。这样,也可以是先对m0进行hash计算,得到hash值,进而再用自身的私钥对该hash值和r在内的数据进行签名,从而得到sig00,还可以是用自身的私钥对m0和r在内的数据直接进行签名或对m0和r在内的数据的hash值进行签名。
第一轮的末尾,接收到Val消息的共识节点可以验证接收到的Val消息的正确性。具体的,Node1可以采用Node0的公钥对第一消息中的Node0的签名sig00进行验证,如果通过验证,则进入第二轮。类似的,Node2可以采用Node0的公钥对第一消息中的Node0的签名sig00进行验证,如果通过验证,则进入第二轮。而Node3为失效节点。
第二轮中,接收到所述Val消息的共识节点广播Bval消息,Bval消息中包括对所述交易集合m0的投票和签名;所述投票包括所述交易集合m0的hash值。由于Node3是失效节点,因此不响应,即不会广播Bval消息,而由Node1、Node2分别广播Bval消息至其它共识节点。Node1广播的Bval消息例如包括m0的hash值和Node1采用自身的私钥对m0的hash值的签名sig10。此外,Bval消息也可以是如<r,hash,sig10>,则其中的sig10可以是Node1用自身私钥对包括r和m0的hash值在内的数据的签名。
Node2收到Node0发来的Val消息后,类似的,也可以计算Val消息中的m0的hash值,并采用自身私钥对该hash值签名得到sig20,进而也可以广播Bval消息。Bval消息中可以包括m0的hash值以及签名sig20。
第二轮的末尾,接收到Bval消息的共识节点可以收集Bval中的投票。对于Node0,在第二轮的末尾收集Bval消息中的投票,收集到Node1,Node2分别广播的Bval消息中的投票都包括所述交易集合m0的hash值,且Node0在第一轮中广播的Val消息中也是m0,其对应的hash也是m0的hash值,且Node1,Node2分别广播的Bval消息中包括各自的签名sig10和sig20,Node0在第一轮中广播的Val消息中也包括签名sig00,则Node0在第二轮末尾收集到总计3个一致的hash值(此时f=1,Quorum=3)。对于Node1,在第二轮的末尾收集Node2广播的Bval消息中的投票是m0的hash值和sig20,且Node1在第二轮中广播的Bval消息中的投票也是hash值及sig10,且在第一轮中接收到的Node0发出的Val消息中的m0也是同样的hash值以及sig00,则Node1在本轮次中收集到3个一致的hash值,满足Quorum数量。对于Node2,在第二轮的末尾收集Node1广播的Bval消息中的投票是m0的hash值和sig10,且Node2在第二轮中广播的Bval消息中的投票也是hash值及sig20,且在第一轮中接收到的Node0发出的Val消息中的m0也是同样的hash值以及sig00,则Node2在本轮次中收集到3个一致的hash值,满足Quorum数量。
第三轮中,接收到Bval消息的共识节点收集到至少Quorum个来自于不同共识节点的一致的hash值后,如果自身针对该提议没有广播过0,则广播Prom消息,Prom消息包括所述hash值以及收集到的签名。
例如,Node0在第三轮中广播的Prom消息中,可以包括该hash值以及收集到的不同节点针对该提议的交易集合m0表示认可的hash值及签名集合,签名集合为sig00、sig10、sig20。Node1在第三轮中广播的Prom消息中,可以包括该hash值以及收集到的不同节点针对该提议的交易集合m0表示认可的hash值及签名集合,签名集合也是sig00、sig10、sig20。Node2在第三轮中广播的Prom消息中,可以包括该hash值以及收集到的不同节点针对该提议的交易集合m0表示认可的hash值及签名集合,签名集合也是sig00、sig10、sig20。
第三轮执行后,接收到Prom消息的共识节点统计收集的Prom消息的数量,如果收集到至少Quorum个来自于不同节点的Prom消息后,将所述hash值对应的交易集合m0作为共识结果的至少一部分输出。
对于Node0,在第三轮结束后收集到Node1和Node2广播的Prom消息,且自身也广播过Prom消息,因此总计收集到3个Prom消息。
类似的对于Node1,在第三轮结束后收集到Node0和Node2广播的Prom消息,且自身也广播过Prom消息,因此总计收集到3个Prom消息。
类似的对于Node2,在第三轮结束后收集到Node0和Node1广播的Prom消息,且自身也广播过Prom消息,因此总计收集到3个Prom消息。
通过第三轮,Node0收集到3个Prom,可以确认至少3个共识节点中的每一个(满足Quorum)都收集到了对该提议的交易集合m0表示认可的至少3个投票(满足Quorum),且发出Prom消息的每一个共识节点都承诺不再会更改投票的观点,这样,Node0可以进一步完成本次共识,即将所述hash值对应的交易集合m0作为共识结果的至少一部分输出。Node1、Node2也类似,即Node1、Node2也将所述hash值对应的交易集合m0作为共识结果的至少一部分输出。
上述图9是Node0发起共识提议的过程,类似的,Node1和Node2也可以执行类似的过程,即Node1和Node2也可以分别发起针对交易集合m1和m2发起共识提议。而Node3如前所述是失效节点,因此不会发起共识提议。这样,最终Node0、Node1和Node2在本次共识中输出结果为{m0,m1,m2},即保持了相同的共识结果,其中共识结果中包括相同内容和顺序的交易集合。当然,也有可能是通过上述共识过程,输出结果为{m0,m2},而m1经过共识后收到的是反对的投票,因此m1并未收入本次共识输出的结果中。
本申请还提供另一种共识算法实施例,如图10所示,具体包括:
S101:【第一轮】第一共识节点广播第一消息,第一消息中包括共识提议的交易集合和第一共识节点的签名。
以一个节点的视角来看,例如以Node0发起共识提议的视角来看,交互过程如图5所示。在一次共识中,Node0可以发起共识提议,这个共识提议中可以包括打包的交易集合,例如标记为m0,m0中可以包括一系列的交易构成的集合{tx01,tx02,...,tx0n}。进而,Node0可以广播第一消息至其它共识节点,如图5中广播至Node1、Node2和Node3。广播的第一消息中可以包括Node0的共识提议的交易集合m0。这个消息可以称为Val消息。
此外,这个消息还可以包括第一共识节点对m0的签名,例如记为sig00。一般地,第一共识节点Node0可以用自身的私钥对m0直接签名,得到sig00,也可以是先对m0进行hash计算,得到hash值(即摘要值),进而再用自身的私钥对该hash值签名,从而得到sig00。
Val消息的格式可以如<r,m0,sig00>,其中r可以表示第r次共识。例如这里对m0的共识提议是第r次共识,则下一个共识提议的交易集合m1可以对应第r+1次共识。所述sig00,也可以是采用自身私钥对包括r和m0在内的数据的签名。类似的,也可以是先对m0进行hash计算,得到hash值,进而再用自身的私钥对该hash值和r在内的数据进行签名,从而得到sig00。
S103:【第二轮】接收到所述第一消息的共识节点广播第二消息,第二消息中包括对所述交易集合的投票和签名;所述投票包括表示不认可所述交易集合的值。
在第一轮的末尾,接收到第一消息的共识节点可以验证接收到的第一消息的正确性。例如,Node1可以采用Node0的公钥对第一消息中的Node0的签名进行验证。如果没有通过验证,则在S103广播不认可该交易集合m0的投票,例如用0来表示不认可。
S103,具体如图5中,接收到第一消息的共识节点可以广播第二消息。第二轮次的消息交互中,Node1、Node2、Node3各自分别广播第二消息至其它共识节点。共识节点广播的第二消息中,可以包括对Node0发起的共识提议m0的投票,例如如前所述是0。这个广播的第二消息可以记为Bval。
本轮次中,Node0可以不参与广播,这是因为Node0在第一轮次中发起共识提议,本身即可以代表Node0对共识提议中的消息集合是认可的,从而第二轮次中可以由Node1、Node2、Node3分别广播第二消息至其它共识节点。
需要说明的是,共识节点可以更改自己的观点并再次投票,即发出多个不同的Bval消息。例如,Node1可以首次发出内容是所述交易集合的hash值的Bval消息,以表示对所述共识提议中的交易集合的认可,而后续可以再次发送内容是0的Bval消息,以表示对所述共识提议中的交易集合的不认可。再例如,Node2可以首次发出内容是0的Bval消息,以表示对所述共识提议中的交易集合的不认可,而后续可以再次发出内容是所述交易集合的hash值的Bval消息,以表示对所述共识提议中的交易集合的认可。
此外,第二消息中还可以包括对所述交易集合的签名。接收到第一消息的共识节点,可以用自己的私钥对表示不认可所述第一消息中的交易集合的值进行签名。例如Node1用0表示对第一消息中的交易集合m0不认可,则用自身私钥对0签名得到sig10。
类似的,Bval消息的格式可以如<r,0,sig10>,其中r可以表示第r次共识,0表示不认可所述交易集合m0的值。则所述sig10,也可以是共识节点采用自身私钥对包括r和0在内的数据的签名。
Node2和Node3与Node1的操作类似,不再赘述。
S105:【第三轮】接收到第二消息的共识节点收集到至少0uorum个来自于不同共识节点的一致的投票后,如果自身针对该提议没有广播过不同的投票,则广播第三消息,第三消息包括所述表示不认可所述交易集合的值以及收集到的签名集合。
第二轮中的共识节点广播第二消息,这样,在第二轮的末尾,接收到第二消息的共识节点可以收集第二消息中的投票,进而广播第三消息。
例如Node1,在第二轮的末尾可以收集Bval消息中的投票,假设Node1收集到Node2、Node3分别广播的第二消息中的投票都是0值,且Node1在第二轮中广播的第二消息中的投票也是0值,则Node1在本轮次中收集到至少Quorum个一致的摘要值(例如此时f=1,Quorum=3,实际收集到3)。
Node2和Node3与Node1类似,不再赘述。
此外,共识节点还可以在第二轮末尾收集到不同节点的签名,如前所述。通过签名可以统计第二轮中收集到的投票的数量。例如Node1收集到分别有sig10、sig20、sig30签名的0值,则说明对该提议的交易集合m0共有3个表示不认可的投票。当然,也可以通过共识节点之间建立的安全传输通道来确定消息的唯一性,进而确定消息的数量。所述安全传输通道例如通过消息认证码(Message Authentication Code,MAC)、安全传输层协议(TransportLayer Security,TTL)之类的技术创建。
对于Node1,如果收集到至少Quorum个来自于不同共识节点的0值,且自身针对该提议m0没有广播过不同的投票,则广播第三消息。第三消息可以记为Prom消息,意思是承诺不会对提议m0更改观点。如前所述,0可以表示不认可。Node1针对该提议m0没有广播过其它观点,是指没有对提议m0持有过认可的观点,Node2和Node3也是类似的。
广播的第三消息中,可以包括收集到的对m0的投票,例如上述第一轮和第二轮中收集到的0值和签名。
这样,Prom消息的格式可以如<r,0,<签名集合>>。
例如,假设Node1在第二轮中收集到Node2、Node3分别广播的Bva1消息中的投票都是0值,这样也就收集到Node2和Node3各自的签名,且Node1在第二轮中广播的Bval消息中也包括其对投票0的签名是sig10。这样,Node1在第一轮和第二轮中收集到至少Quorum个一致的0值(例如此时Quorum=3)和不同节点的签名。进而,Node1在第三轮中广播的Prom消息中,可以包括该0值以及收集到的不同节点针对该提议的交易集合m0表示不认可的0值及签名集合,签名集合例如包括sig10、sig20、sig30。
Node2和Node3也类似于Node1。
需要说明的是,上述签名集合,也可以用聚合签名或门限签名替代。
此外,由于Node0在第一轮中广播提议的交易集合m0代表了对该提议的交易集合的认可,因此,Node0可以在第三轮中不发Prom消息,或者在第二轮之后更改自己的意见,即发出投票内容不同的Bval消息,不过都不影响其它节点的执行结果。
S107:共识节点收集到至少Quorum个来自于不同节点的第三消息后,不将所述交易集合作为共识结果的一部分输出。
第三轮执行后,接收到Prom消息的共识节点可以统计收集的Prom消息的数量。共识节点在第三轮中发出Prom消息的条件是第二轮中收集到至少Quorum个来自于不同共识节点的一致的投票,且自身针对该提议没有广播过不同的投票,即相当于第二轮末尾该共识节点确认总计至少Quorum数量的共识节点(包括自身)对该提议m0的投票都是不认同的。但是,第二轮结束之后还不能马上输出共识结果,而是还需要观察其他节点是否也是在第二轮末尾收集到至少Quorum数量的对提议m0的表示不认同的投票,因此需要通过第三轮的Prom消息来确认,并且通过该Prom消息承诺自身不会再针对同一提议m0的表示不同的观点。
例如Node1在第一轮和第二轮中收集到至少Quorum个一致的0值,进而,Node1在第三轮中广播的Prom消息中,可以包括该0值以及收集到的不同节点针对该提议的交易集合m0表示不认可的0值及签名集合,签名集合例如包括sig10、sig20、sig30。
Node2和Node3也类似于Node1。
对于Node0,如前所述,由于其在第一轮中广播提议的交易集合m0代表了对该提议的交易集合的认可,因此,Node0可以在第三轮中不发Prom消息,或者在第二轮之后更改自己的意见,即发出投票内容不同的Bval消息,不过都不影响其它节点的执行结果。
这样,通过第三轮,例如Node1可以收集到至少Quorum个Prom消息。通过Quorum个Prom消息,Node1可以确认至少Quorum个共识节点中的每一个都收集到了对该提议的交易集合m0表示不认可的至少Quorum数量的投票,且发出Prom消息的每一个共识节点都承诺不再会更改投票的观点,这样,Node1可以进一步完成本次共识,即不将所述交易集合m0作为共识结果的一部分输出。至于Node0,即使其将交易集合m0作为共识结果的一部分输出,并不会影响区块链系统整体的可用性,因为Node1、Node2和Node3构成的Quorum数量的节点的意见是一致的。
第三轮的Prom消息可以增加签名。例如Node1在第三轮中广播的Prom消息中可以包括Node1对Prom消息中<r,0,<签名集合>>的签名。
上述图10的实施例,可以由如图中的Node0来执行,也可以扩展到由Node0、Node1、Node2和Node3均执行,即除了图5以外,也可以是图6、图7、图8中的任一。由Node0、Node1、Node2和Node3均执行的情况,图5是以Node0这一个节点的发起共识提议的视角,实际上Node1、Node2和Node3中的任一也可以发起提议而其它共识节点配合完成上述类似的过程,这样整体上是图5、图6、图7、图8的叠加。
此外,由Node0、Node1、Node2和Node3均执行图5的情况,可以是以部分发起共识提议的节点的视角看是图4所示的流程,而以另一部分发起共识提议的节点的视角看是图10所示的流程。
本申请还提供一种区块链系统实施例,包括共识节点,其中:
第一共识节点广播第一消息,第一消息中包括共识提议的交易集合和第一共识节点的签名;
接收到所述第一消息的共识节点广播第二消息,第二消息中包括对所述交易集合的投票和签名;所述投票包括所述交易集合的摘要值;
接收到第二消息的共识节点收集到至少Quorum个来自于不同共识节点的一致的投票后,如果自身针对该提议没有广播过不同的投票,则广播第三消息,第三消息包括所述摘要值以及收集到的签名集合;
共识节点收集到至少Quorum个来自于不同节点的第三消息后,将所述摘要值对应的交易集合作为共识结果的至少一部分输出。
在同一次共识过程中,所述区块链系统中的至少Quorum数量的共识节点中的每一个作为第一共识节点执行前述方法。
本申请还提供一种区块链系统实施例,包括共识节点,其中:
第一共识节点广播第一消息,第一消息中包括共识提议的交易集合和第一共识节点的签名;
接收到所述第一消息的共识节点广播第二消息,第二消息中包括对所述交易集合的投票和签名;所述投票包括表示不认可所述交易集合的值;
接收到第二消息的共识节点收集到至少Quorum个来自于不同共识节点的一致的投票后,如果自身针对该提议没有广播过不同的投票,则广播第三消息,第三消息包括所述表示不认可所述交易集合的值以及收集到的签名集合;
共识节点收集到至少Quorum个来自于不同节点的第三消息后,不将所述交易集合作为共识结果的一部分输出。
在同一次共识过程中,所述区块链系统中的至少Quorum数量的共识节点中的每一个作为第一共识节点执行前述方法。
本申请还提供一种区块链系统中的共识节点实施例,可以如图11所示,包括:
第一消息接收单元111,用于接收第一共识节点广播的第一消息,第一消息中包括共识提议的交易集合和第一共识节点的签名;
第二消息广播单元112,用于当第一消息接收单元接收到所述第一消息后广播第二消息,第二消息中包括对所述交易集合的投票和签名;所述投票包括所述交易集合的摘要值;
投票收集单元113,用于收集来自于共识节点的投票;
第三消息广播单元114,当投票收集单元收集到至少Quorum个来自于不同共识节点的一致的投票,如果自身针对该提议没有广播过不同的投票,则广播第三消息,第三消息包括所述摘要值以及收集到的签名集合;
第三消息收集单元115,收集来自于共识节点的第三消息;
输出单元116,当第三消息收集单元收集到至少Quorum个来自于不同节点的第三消息后,将所述摘要值对应的交易集合作为共识结果的至少一部分输出。
本申请还提供一种区块链系统中的共识节点实施例,也可以如图11所示,包括:
第一消息接收单元111,用于接收第一共识节点广播的第一消息,第一消息中包括共识提议的交易集合和第一共识节点的签名;
第二消息广播单元112,用于当第一消息接收单元接收到所述第一消息后广播第二消息,第二消息中包括对所述交易集合的投票和签名;所述投票包括表示不认可所述交易集合的值;
投票收集单元113,用于收集来自于共识节点的投票;
第三消息广播单元114,当投票收集单元收集到至少Quorum个来自于不同共识节点的一致的投票后,如果自身针对该提议没有广播过不同的投票,则广播第三消息,第三消息包括所述表示不认可所述交易集合的值以及收集到的签名集合;
第三消息收集单元115,收集来自于共识节点的第三消息;
输出单元116,当第三消息收集单元收集到至少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 (26)
1.一种区块链系统中的共识方法,包括:
第一轮:第一共识节点广播第一消息,第一消息中包括共识提议的交易集合和第一共识节点的签名;
第二轮:接收到所述第一消息的共识节点广播第二消息,第二消息中包括对所述交易集合的投票和签名;所述投票包括所述交易集合的摘要值;
第三轮:接收到第二消息的共识节点收集到至少Quorum个来自于不同共识节点的一致的投票后,如果自身针对该提议没有广播过不同的投票,则广播第三消息,第三消息包括所述摘要值以及收集到的签名集合;
共识节点收集到至少Quorum个来自于不同节点的第三消息后,将所述摘要值对应的交易集合作为共识结果的至少一部分输出。
2.如权利要求1所述的方法,第一轮中的签名包括第一共识节点采用自身私钥对包括所述交易集合在内的数据的签名,或对包括所述交易集合的摘要值在内的数据的签名。
3.如权利要求1所述的方法,在第一轮的末尾,接收到第一消息的共识节点还验证接收到的第一消息的正确性;验证通过后进入第二轮。
4.如权利要求1所述的方法,第二轮中的签名包括广播第二消息的共识节点采用自身私钥对包括所述交易集合的摘要值在内的数据的签名。
5.如权利要求2或4所述的方法,所述数据还包括轮次。
6.如权利要求1所述的方法,在第三轮的末尾,接收到第三消息的共识节点还验证第三消息的正确性。
7.如权利要求6所述的方法,所述验证第三消息的正确性,包括验证第三消息的签名的正确性以及验证第三消息的签名集合中包括至少Quorum个签名。
8.如权利要求1所述的方法,广播第三消息的共识节点不再更改针对同一提议的交易集合的投票观点。
9.如权利要求1所述的方法,所述签名集合用聚合签名或门限签名替代。
10.如权利要求1所述的方法,在同一次共识过程中,所述区块链系统中的至少Quorum数量的共识节点中的每一个作为第一共识节点执行权利要求1的方法。
11.如权利要求10所述的方法,在区块链系统总节点数为3f+1的情况下,Quorum为2f+1。
12.一种区块链系统中的共识方法,包括:
第一轮:第一共识节点广播第一消息,第一消息中包括共识提议的交易集合和第一共识节点的签名;
第二轮:接收到所述第一消息的共识节点广播第二消息,第二消息中包括对所述交易集合的投票和签名;所述投票包括表示不认可所述交易集合的值;
第三轮:接收到第二消息的共识节点收集到至少Quorum个来自于不同共识节点的一致的投票后,如果自身针对该提议没有广播过不同的投票,则广播第三消息,第三消息包括所述表示不认可所述交易集合的值以及收集到的签名集合;
共识节点收集到至少Quorum个来自于不同节点的第三消息后,不将所述交易集合作为共识结果的一部分输出。
13.如权利要求12所述的方法,第二轮中的签名包括广播第二消息的共识节点采用自身私钥对包括表示不认可所述交易集合的值在内的数据的签名。
14.如权利要求12所述的方法,验证第三消息的正确性,包括验证第三消息的签名的正确性以及验证第三消息的签名集合中包括至少Quorum个签名。
15.如权利要求12所述的方法,广播第三消息的共识节点不再更改针对同一提议的交易集合的投票观点。
16.如权利要求12-15中任一项所述的方法,所述签名集合用聚合签名或门限签名替代。
17.如权利要求12所述的方法,在同一次共识过程中,所述区块链系统中的至少Quorum数量的共识节点中的每一个作为第一共识节点执行权利要求12的方法。
18.如权利要求17所述的方法,在区块链系统总节点数为3f+1的情况下,Quorum为2f+1。
19.一种区块链系统,包括共识节点,其中:
第一共识节点广播第一消息,第一消息中包括共识提议的交易集合和第一共识节点的签名;
接收到所述第一消息的共识节点广播第二消息,第二消息中包括对所述交易集合的投票和签名;所述投票包括所述交易集合的摘要值;
接收到第二消息的共识节点收集到至少Quorum个来自于不同共识节点的一致的投票后,如果自身针对该提议没有广播过不同的投票,则广播第三消息,第三消息包括所述摘要值以及收集到的签名集合;
共识节点收集到至少Quorum个来自于不同节点的第三消息后,将所述摘要值对应的交易集合作为共识结果的至少一部分输出。
20.如权利要求19所述的系统,在同一次共识过程中,所述区块链系统中的至少Quorum数量的共识节点中的每一个作为第一共识节点执行权利要求19的相关操作。
21.如权利要求20所述的系统,在区块链系统总节点数为3f+1的情况下,Quorum为2f+1。
22.一种区块链系统,包括共识节点,其中:
第一共识节点广播第一消息,第一消息中包括共识提议的交易集合和第一共识节点的签名;
接收到所述第一消息的共识节点广播第二消息,第二消息中包括对所述交易集合的投票和签名;所述投票包括表示不认可所述交易集合的值;
接收到第二消息的共识节点收集到至少Quorum个来自于不同共识节点的一致的投票后,如果自身针对该提议没有广播过不同的投票,则广播第三消息,第三消息包括所述表示不认可所述交易集合的值以及收集到的签名集合;
共识节点收集到至少Quorum个来自于不同节点的第三消息后,不将所述交易集合作为共识结果的一部分输出。
23.如权利要求22所述的系统,在同一次共识过程中,所述区块链系统中的至少Quorum数量的共识节点中的每一个作为第一共识节点执行权利要求22的相关操作。
24.如权利要求23所述的系统,在区块链系统总节点数为3f+1的情况下,Quorum为2f+1。
25.一种区块链系统中的共识节点,包括:
第一消息接收单元,用于接收第一共识节点广播的第一消息,第一消息中包括共识提议的交易集合和第一共识节点的签名;
第二消息广播单元,用于当第一消息接收单元接收到所述第一消息后广播第二消息,第二消息中包括对所述交易集合的投票和签名;所述投票包括所述交易集合的摘要值;
投票收集单元,用于收集来自于共识节点的投票;
第三消息广播单元,当投票收集单元收集到至少Quorum个来自于不同共识节点的一致的投票,如果自身针对该提议没有广播过不同的投票,则广播第三消息,第三消息包括所述摘要值以及收集到的签名集合;
第三消息收集单元,收集来自于共识节点的第三消息;
输出单元,当第三消息收集单元收集到至少Quorum个来自于不同节点的第三消息后,将所述摘要值对应的交易集合作为共识结果的至少一部分输出。
26.一种区块链系统中的共识节点,包括:
第一消息接收单元,用于接收第一共识节点广播的第一消息,第一消息中包括共识提议的交易集合和第一共识节点的签名;
第二消息广播单元,用于当第一消息接收单元接收到所述第一消息后广播第二消息,第二消息中包括对所述交易集合的投票和签名;所述投票包括表示不认可所述交易集合的值;
投票收集单元,用于收集来自于共识节点的投票;
第三消息广播单元,当投票收集单元收集到至少Quorum个来自于不同共识节点的一致的投票后,如果自身针对该提议没有广播过不同的投票,则广播第三消息,第三消息包括所述表示不认可所述交易集合的值以及收集到的签名集合;
第三消息收集单元,收集来自于共识节点的第三消息;
输出单元,当第三消息收集单元收集到至少Quorum个来自于不同节点的第三消息后,不将所述交易集合作为共识结果的至少一部分输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210158410.3A CN114553434B (zh) | 2021-10-09 | 2021-10-09 | 一种共识方法、区块链系统和共识节点 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210158410.3A CN114553434B (zh) | 2021-10-09 | 2021-10-09 | 一种共识方法、区块链系统和共识节点 |
CN202111175184.1A CN113630257B (zh) | 2021-10-09 | 2021-10-09 | 一种共识方法、区块链系统和共识节点 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111175184.1A Division CN113630257B (zh) | 2021-10-09 | 2021-10-09 | 一种共识方法、区块链系统和共识节点 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114553434A true CN114553434A (zh) | 2022-05-27 |
CN114553434B CN114553434B (zh) | 2024-03-12 |
Family
ID=78390703
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111175184.1A Active CN113630257B (zh) | 2021-10-09 | 2021-10-09 | 一种共识方法、区块链系统和共识节点 |
CN202210158410.3A Active CN114553434B (zh) | 2021-10-09 | 2021-10-09 | 一种共识方法、区块链系统和共识节点 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111175184.1A Active CN113630257B (zh) | 2021-10-09 | 2021-10-09 | 一种共识方法、区块链系统和共识节点 |
Country Status (2)
Country | Link |
---|---|
CN (2) | CN113630257B (zh) |
WO (1) | WO2023056958A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115174572A (zh) * | 2022-06-30 | 2022-10-11 | 蚂蚁区块链科技(上海)有限公司 | 区块链中的数据组播方法和区块链节点 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113630257B (zh) * | 2021-10-09 | 2022-01-04 | 支付宝(杭州)信息技术有限公司 | 一种共识方法、区块链系统和共识节点 |
CN114782047B (zh) * | 2021-12-29 | 2023-06-30 | 张海滨 | 数据共识方法及分布式系统 |
CN114401271A (zh) * | 2022-01-13 | 2022-04-26 | 中国人民解放军国防科技大学 | 一种试验数据防篡改方法、区块链系统及介质 |
CN117527266B (zh) * | 2024-01-05 | 2024-05-17 | 杭州趣链科技有限公司 | 异步网络共识方法、装置、电子设备及可读存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108182635A (zh) * | 2017-12-18 | 2018-06-19 | 深圳前海微众银行股份有限公司 | 区块链共识方法、系统和计算机可读存储介质 |
CN110247774A (zh) * | 2019-06-28 | 2019-09-17 | 深圳市网心科技有限公司 | 一种区块链数据的共识方法及相关设备 |
CN110300172A (zh) * | 2019-06-28 | 2019-10-01 | 深圳市网心科技有限公司 | 一种区块链数据的共识方法及相关设备 |
WO2019213867A1 (zh) * | 2018-05-09 | 2019-11-14 | 合肥达朴汇联科技有限公司 | 区块链共识达成方法和装置 |
WO2020042805A1 (zh) * | 2018-08-31 | 2020-03-05 | 阿里巴巴集团控股有限公司 | 基于区块链的交易共识处理方法及装置、电子设备 |
CN111416708A (zh) * | 2020-03-16 | 2020-07-14 | 北京有链科技有限公司 | 一种区块链拜占庭容错共识方法及系统 |
US20200403776A1 (en) * | 2019-06-18 | 2020-12-24 | Electronics And Telecommunications Research Institute | Apparatus and method for achieving distributed consensus based on decentralized byzantine fault tolerance |
CN112532396A (zh) * | 2020-12-04 | 2021-03-19 | 广东工业大学 | 一种基于聚合签名的优化拜占庭容错方法及存储介质 |
CN112689848A (zh) * | 2019-06-28 | 2021-04-20 | 深圳市网心科技有限公司 | 一种区块链数据的共识方法及相关设备 |
CN113630257B (zh) * | 2021-10-09 | 2022-01-04 | 支付宝(杭州)信息技术有限公司 | 一种共识方法、区块链系统和共识节点 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020000011A1 (en) * | 2018-06-25 | 2020-01-02 | Commonwealth Scientific And Industrial Research Organisation | Blockchain system and method |
PL3542514T3 (pl) * | 2018-11-07 | 2021-08-30 | Advanced New Technologies Co., Ltd. | Ułatwianie konsensusu łańcucha bloków i praktycznej odporności na uszkodzenia bizantyjskie i synchronizacji węzła |
CN110113388B (zh) * | 2019-04-17 | 2020-01-14 | 四川大学 | 一种基于改进型聚类算法的区块链系统共识的方法和装置 |
CN110570311B (zh) * | 2019-09-17 | 2021-05-25 | 北京海益同展信息科技有限公司 | 区块链的共识方法、装置及设备 |
CN111049696B (zh) * | 2020-03-16 | 2020-06-12 | 支付宝(杭州)信息技术有限公司 | 用于区块链系统的节点管理的方法、节点和计算设备 |
CN111523899B (zh) * | 2020-07-03 | 2021-09-07 | 支付宝(杭州)信息技术有限公司 | 联盟链的共识方法、数据校验方法、装置及系统 |
CN111526219B (zh) * | 2020-07-03 | 2021-02-09 | 支付宝(杭州)信息技术有限公司 | 一种联盟链的共识方法及联盟链系统 |
CN112416905A (zh) * | 2020-07-03 | 2021-02-26 | 支付宝(杭州)信息技术有限公司 | 蜜獾拜占庭容错共识机制的区块链共识方法、节点及系统 |
CN112506671B (zh) * | 2021-02-03 | 2021-05-07 | 支付宝(杭州)信息技术有限公司 | 区块链中的交易处理方法、装置及电子设备 |
-
2021
- 2021-10-09 CN CN202111175184.1A patent/CN113630257B/zh active Active
- 2021-10-09 CN CN202210158410.3A patent/CN114553434B/zh active Active
-
2022
- 2022-10-09 WO PCT/CN2022/123979 patent/WO2023056958A1/zh unknown
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108182635A (zh) * | 2017-12-18 | 2018-06-19 | 深圳前海微众银行股份有限公司 | 区块链共识方法、系统和计算机可读存储介质 |
WO2019213867A1 (zh) * | 2018-05-09 | 2019-11-14 | 合肥达朴汇联科技有限公司 | 区块链共识达成方法和装置 |
WO2020042805A1 (zh) * | 2018-08-31 | 2020-03-05 | 阿里巴巴集团控股有限公司 | 基于区块链的交易共识处理方法及装置、电子设备 |
US20200403776A1 (en) * | 2019-06-18 | 2020-12-24 | Electronics And Telecommunications Research Institute | Apparatus and method for achieving distributed consensus based on decentralized byzantine fault tolerance |
CN110247774A (zh) * | 2019-06-28 | 2019-09-17 | 深圳市网心科技有限公司 | 一种区块链数据的共识方法及相关设备 |
CN110300172A (zh) * | 2019-06-28 | 2019-10-01 | 深圳市网心科技有限公司 | 一种区块链数据的共识方法及相关设备 |
CN112689848A (zh) * | 2019-06-28 | 2021-04-20 | 深圳市网心科技有限公司 | 一种区块链数据的共识方法及相关设备 |
CN111416708A (zh) * | 2020-03-16 | 2020-07-14 | 北京有链科技有限公司 | 一种区块链拜占庭容错共识方法及系统 |
CN112532396A (zh) * | 2020-12-04 | 2021-03-19 | 广东工业大学 | 一种基于聚合签名的优化拜占庭容错方法及存储介质 |
CN113630257B (zh) * | 2021-10-09 | 2022-01-04 | 支付宝(杭州)信息技术有限公司 | 一种共识方法、区块链系统和共识节点 |
Non-Patent Citations (5)
Title |
---|
FATCAT: "实用拜占庭容错算法(PBFT)", 《HTTP://YANGZHE.ME/2019/11/25/PBFT/》, pages 1 - 12 * |
JINNAN ZHANG等: "A Hybrid Model for Central Bank Digital Currency Based on Blockchain", 《IEEE ACCESS》, vol. 9, pages 53589 - 53601, XP011849707, DOI: 10.1109/ACCESS.2021.3071033 * |
SHENG GAO等: "T-PBFT: An EigenTrust-based practical Byzantine fault tolerance consensus algorithm", 《CHINA COMMUNICATIONS》, vol. 6, no. 12, pages 111 - 123, XP011768306, DOI: 10.23919/JCC.2019.12.008 * |
刘懿中等: "区块链共识机制研究综述", 《密码学报》, pages 395 - 432 * |
宋宇波;张仕奇;宋睿;: "一种基于投票权竞争的区块链共识机制", 山东大学学报(理学版), no. 03, pages 47 - 54 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115174572A (zh) * | 2022-06-30 | 2022-10-11 | 蚂蚁区块链科技(上海)有限公司 | 区块链中的数据组播方法和区块链节点 |
CN115174572B (zh) * | 2022-06-30 | 2024-01-05 | 蚂蚁区块链科技(上海)有限公司 | 区块链中的数据组播方法、区块链节点和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114553434B (zh) | 2024-03-12 |
WO2023056958A1 (zh) | 2023-04-13 |
CN113630257A (zh) | 2021-11-09 |
CN113630257B (zh) | 2022-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113630257B (zh) | 一种共识方法、区块链系统和共识节点 | |
CN113645044B (zh) | 一种共识方法、区块链系统和共识节点 | |
CN113610531B (zh) | 一种共识方法、区块链系统和共识节点 | |
CN113630258B (zh) | 一种共识方法、区块链系统和共识节点 | |
CN110730204A (zh) | 区块链网络中删除节点的方法和区块链系统 | |
CN113609515B (zh) | 一种共识方法、区块链系统 | |
CN109949157A (zh) | 一种区块链共识的处理方法、装置及系统 | |
CN113761071A (zh) | 一种共识方法、区块链系统和共识节点 | |
WO2023056966A1 (zh) | 共识方法、区块链系统和共识节点 | |
WO2023185045A1 (zh) | 一种区块链上产生随机数种子的方法、系统和共识节点 | |
WO2023185051A1 (zh) | 一种区块链上产生随机数种子的方法、系统和共识节点 | |
CN115174048A (zh) | 一种共识方法、系统和共识节点 | |
CN115174572A (zh) | 区块链中的数据组播方法和区块链节点 | |
CN115987528A (zh) | 区块链系统中的区块同步方法和区块链节点 | |
CN116846912A (zh) | Pbft算法中的视图切换方法、共识节点和区块链系统 | |
CN116484417A (zh) | 区块链系统中的交易提议方法、共识节点和区块链系统 | |
CN116846907A (zh) | 一种共识方法、区块链节点 | |
CN116846906A (zh) | 一种共识方法、区块链节点 | |
CN116823463A (zh) | 区块链系统中的交易提议方法、共识节点和区块链系统 | |
CN116823466A (zh) | 区块链系统中的交易提议方法、共识节点和区块链系统 | |
CN116527694A (zh) | 一种区块链系统中的共识方法和共识节点、区块链系统 | |
CN117527266B (zh) | 异步网络共识方法、装置、电子设备及可读存储介质 | |
CN116846916B (zh) | 数据同步方法、装置、电子设备及计算机可读存储介质 | |
Bashir | Early Protocols | |
Antoniadis | The Hidden Complexity of Distributed Systems |
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 |