CN110572429B - 基于区块链的共识方法、装置、设备及存储介质 - Google Patents
基于区块链的共识方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN110572429B CN110572429B CN201910694191.9A CN201910694191A CN110572429B CN 110572429 B CN110572429 B CN 110572429B CN 201910694191 A CN201910694191 A CN 201910694191A CN 110572429 B CN110572429 B CN 110572429B
- Authority
- CN
- China
- Prior art keywords
- consensus
- round
- phase
- valid
- stage
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/30—Decision processes by autonomous network management units using voting and bidding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- 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)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Technology Law (AREA)
- Strategic Management (AREA)
- Marketing (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Economics (AREA)
- Development Economics (AREA)
- Hardware Redundancy (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于区块链的共识方法、装置、设备及存储介质,所述的方法应用于所述区块链的第一节点,所述的方法包括:进入第R1轮共识的第一共识阶段,R1为自然数;在满足预定条件时触发计时器开始计时;若所述计时器计时的时长大于或等于预定时长,且保持在第R1轮共识的第一共识阶段,则打包有效投票集;其中,所述有效投票集中包括第一有效投票,所述第一有效投票用于证明所述第一节点进入第R1轮共识的第一共识阶段;广播所述有效投票集。通过本发明实施例,能够提高共识效率。
Description
技术领域
本发明属于区块链领域,尤其涉及一种基于区块链的共识方法、装置、设备及存储介质。
背景技术
区块链是一种去中心化的分布式账本系统,它可以用于登记和发行数字化资产、产权凭证、积分等,并以点对点的方式进行转账、支付和交易。区块链系统与传统的中心化账本系统相比,具有完全公开、不可篡改、防止多重支付等优点,并且不依赖于任何的可信第三方。
由于点对点网络下存在较高的网络延迟,各个节点所观察到的事务先后顺序不可能完全一致。因此区块链系统需要设计一种机制对在差不多时间内发生的事务的先后顺序进行共识。这种对一个时间窗口内的事务的先后顺序达成共识的算法被称为“共识机制”。
目前,区块链共识方法主要包括故障容错(Crash Fault Tolerance,CFT)和拜占庭容错(Byzantine Fault Tolerance,BFT)等算法。但是,共识算法在具体实施时,在共识数据的处理效率上比较低。
发明内容
本发明实施例提供一种基于区块链的共识方法、装置、设备及存储介质,能够提高区块链的共识效率。
第一方面,本发明实施例提供一种基于区块链的共识方法,所述方法应用于所述区块链的第一节点,所述的方法包括:
进入第R1轮共识的第一共识阶段,R1为自然数;
在满足预定条件时触发计时器开始计时;
若所述计时器计时的时长大于或等于预定时长,且保持在第R1轮共识的第一共识阶段,则打包有效投票集;其中,所述有效投票集中包括第一有效投票,所述第一有效投票用于证明所述第一节点进入第R1轮共识的第一共识阶段;
广播所述有效投票集。
第二方面,本发明实施例提供了一种基于区块链的共识方法,所述方法应用于所述区块链的第二节点,所述的方法包括:
获取所述区块链的第一节点广播的有效投票集;其中,所述有效投票集中包括第一有效投票,所述第一有效投票用于证明所述第一节点进入第R1轮共识的第一共识阶段;
根据所述第R1轮共识的第一共识阶段,确定目标轮次的共识阶段;
判断所述第二节点是否达到所述目标轮次的共识阶段;
若所述第二节点未达到所述目标轮次的共识阶段,则结束所述第二节点的当前共识阶段,并进入所述目标轮次的共识阶段。
第三方面,本发明实施例提供了一种基于区块链的共识装置,所述的装置应用于所述区块链的第一节点,所述的装置包括:
第一共识模块,用于进入第R1轮共识的第一共识阶段,R1为自然数;
计时模块,用于在满足预定条件时触发计时器开始计时;
投票集打包模块,用于若所述计时器计时的时长大于或等于预定时长,且保持在第R1轮共识的第一共识阶段,则打包有效投票集;其中,所述有效投票集中包括第一有效投票,所述第一有效投票用于证明所述第一节点进入第R1轮共识的第一共识阶段;
投票集广播模块,用于广播所述有效投票集。
第四方面,本发明实施例提供了一种基于区块链的共识装置,所述装置应用于所述区块链的第二节点,所述的装置包括:
投票集获取模块,用于获取所述区块链的第一节点广播的有效投票集;其中,所述有效投票集中包括第一有效投票,所述第一有效投票用于证明所述第一节点进入第R1轮共识的第一共识阶段;
目标阶段确定模块,用于根据所述第R1轮共识的第一共识阶段,确定目标轮次的共识阶段;
阶段判断模块,用于判断所述第二节点是否达到所述目标轮次的共识阶段;
阶段快进模块,用于若所述第二节点未达到所述目标轮次的共识阶段,则结束所述第二节点的当前共识阶段,并进入所述目标轮次的共识阶段。
第五方面,本发明实施例提供了一种计算机设备,所述设备包括:处理器以及存储有计算机程序指令的存储器;
所述处理器执行所述计算机程序指令时实现所述的基于区块链的共识方法。
第六方面,本发明实施例提供了一种计算机存储介质,所述计算机存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现所述的基于区块链的共识方法。
本发明实施例的基于区块链的共识方法、装置、设备及存储介质,当第一节点在第R1轮共识的第一共识阶段时进行计时,如果计时的时长大于或等于预定时长,第一节点依然在第R1轮共识的第一共识阶段,说明第一节点无法正常进行共识,则打包有效投票集,使得没达到第R1轮共识的第二节点从第R1轮继续进行共识。可以使得第二节点快进共识,提高了共识效率。而且在第一节点无法正常共识时,第二节点接替第一节点继续进行共识,这样可以保证有足够多的节点参与共识,从而保证共识能够继续下去。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单的介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明第一个实施例提供的基于区块链的共识方法的流程示意图;
图2是本发明第二个实施例提供的基于区块链的共识方法的流程示意图;
图3是本发明第三个实施例提供的基于区块链的共识方法的流程示意图;
图4示出了本发明第四个实施例提供的基于区块链的共识方法的流程示意图;
图5示出了本发明实施例提供的预投票阶段的流程示意图;
图6示出了本发明实施例提供的预提交阶段的流程示意图;
图7示出了本发明实施例提供的节点共识的原理示意图;
图8示出了本发明第一个实施例提供的基于区块链的共识装置的结构示意图;
图9示出了本发明第二个实施例提供的基于区块链的共识装置的结构示意图。
图10示出了本发明实施例提供的计算机设备的硬件结构示意图。
具体实施方式
下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本发明,并不被配置为限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
为了解决现有技术问题,本发明实施例提供了一种基于区块链的共识方法、装置、设备及存储介质。
区块链的参与共识的节点以投票的形式参与共识,下面基于Tendermint BFT的共识算法,对共识进行简要说明。
如图1所示,共识包括以下几个阶段:
S101,初始阶段。
S102,新高度(NewHeight)阶段。
S103,propose(H,R)阶段,即提名块阶段。
当该阶段结束时,从该阶段进入S104,或者从该阶段进入S105。
S104,prevote(H,R)阶段,即预投票阶段。在该阶段进行prevote投票。
当该阶段结束时,从该阶段进入S106,或者从该阶段进入S105。
S105,执行共识阶段退出逻辑。
S106,precommit(H,R)阶段,即预提交阶段。在该阶段进行precommit投票。
当该阶段结束时,从该阶段进入S107,或者从该阶段进入S105。
S107,commit(H)阶段,即提交阶段,H=H+1,返回到S102。
以上可以看出,共识包括初始阶段、新高度(NewHeight)阶段、propose(H,R)阶段、prevote(H,R)阶段、precommit(H,R)阶段、commit(H)阶段。H表示对应的共识高度,R表示对应的共识轮次。
其中,propose(H,R)阶段、prevote(H,R)阶段、precommit(H,R)阶段、commit(H)阶段为Tendermint BFT定义的共识阶段。
基于上述共识的内容,下面对本发明实施例提供的基于区块链的共识方法进行说明。
区块链参与共识的节点包括第一节点和第二节点。如图2所示,基于区块链的共识方法包括:
S201,进入第R1轮共识的第一共识阶段,R1为自然数。
S202,在满足预定条件时触发计时器开始计时。
S203,判断计时器计时的时长是否大于或等于预定时长,并且保持在第R1轮共识的第一共识阶段,在判断结果为是时,进入S204,在判断结果为否时,即在计时器计时的时长小于预定时长,并且保持在第R1轮共识的第一共识阶段的情况下,返回S203。
S204,打包有效投票集;其中,有效投票集中包括第一有效投票,第一有效投票用于证明第一节点进入第R1轮共识的第一共识阶段。
第一共识阶段有两种情况:
第一种情况:第一共识阶段为prevote阶段
如果R1=0,说明不存在第R1-1轮共识的precommit阶段,用于证明第一节点进入第R1轮共识的第一共识阶段为空,即第一有效投票为空。
如果R1≠0,第一有效投票包括:在第R1-1轮共识的precommit阶段的有效precommit投票,该有效precommit投票的数量大于预定比例×N,N为区块链中参与共识的节点总数量,预定比例比如是2/3。
因为如果第R1-1轮共识的precommit阶段的有效precommit投票的数量大于2/3×N,才可以进入第R1轮共识,进而才可以进入第R1轮共识的prevote阶段。所以通过第R1-1轮共识的precommit阶段的有效precommit投票,证明第一节点进入第R1轮共识的prevote阶段。
第二种情况:第一共识阶段为precommit阶段
第一有效投票包括:在第R1轮共识的prevote阶段的有效prevote投票,该有效prevote投票的数量大于预定比例×N,根据算法描述,预定比例是2/3。
因为如果第R1轮共识的prevote阶段的有效prevote投票的数量大于2/3×N,才可以进入第R1轮共识的precommit阶段。所以通过在第R1轮共识的prevote阶段的数量大于2/3×N的有效prevote投票,证明第一节点进入第R1轮共识的precommit阶段。
S204,广播有效投票集。
广播该有效投票集用于使接收有效投票集的第二节点结束第R2轮的共识,进入第R1轮共识,R2小于R1。这样使得第二节点从第R2轮的共识,快进进入到第R1轮共识,即不进行第R2轮至第R1轮之间的共识,从而使得第二节点快速进入到与第一节点一致的共识轮次。
在本发明实施例中,当第一节点在第R1轮共识的第一共识阶段时进行计时,如果计时的时长大于或等于预定时长,第一节点依然在第R1轮共识的第一共识阶段,说明第一节点无法正常进行共识,则打包有效投票集,使得没达到第R1轮共识的第二节点从第R1轮进行共识,从而实现了第二节点共识的轮次赶上了第一节点共识的轮次。进而使得第二节点快进共识,提高了共识效率。
由于共识算法要求共识节点获取一定的有效票,同步最新的共识数据,才能有效参与共识。通过有效投票集,共识节点能够在收到第一个有效投票集后就能立刻有效参与共识,不必等到接收和处理了一定数量的共识成员的单独投票后才能有效参与共识,因此提高了共识效率。
另外,只要有至少一个正常的共识节点在线,就可以为新加入共识的节点提供有效投票集,使得新加入共识的节点同步共识状态从而参与共识,这种带有冗余度的设计使得共识节点无需再将自身共识数据落盘。若出现所有共识节点全部离线的极端情况,则视为系统整体回到初始共识状态。
在本发明的一个实施例中,有效投票集中还包括在第R1轮共识的第一共识阶段的有效投票。
其中,在第一共识阶段为prevote阶段的情况下,有效投票集中还包括在第R1轮共识的prevote阶段的所有有效prevote投票。
在第一共识阶段为precommit阶段的情况下,有效投票集中还包括在第R1轮共识的precommit阶段的所有有效precommit投票。
在本发明的一个实施例中,S202包括:
在进入第R1轮共识的第一共识阶段的时刻,触发计时器开始计时。
其中,在进入第R1轮共识的prevote阶段的时刻,触发计时器开始计时。或者,在进入第R1轮共识的precommit阶段的时刻,触发计时器开始计时。
在本发明的一个实施例中,基于区块链的共识方法还包括:
在第R1轮共识的第一共识阶段收到投票的时刻,触发计时器重新开始计时。
其中,在第R1轮共识的prevote阶段,每当收到prevote投票,则重置计时器,以重新计时。或者,在第R1轮共识的precommit阶段,每当收到precommit投票,则重置计时器,以重新计时。
作为一个示例,S202包括:在进入第R1轮共识的第一共识阶段的时刻,触发计时器开始计时;并且在第R1轮共识的第一共识阶段收到投票的时刻,触发计时器重新计时。
如图3所示,基于区块链的共识方法应用于区块链的第二节点,基于区块链的共识方法包括:
S301,获取区块链的第一节点广播的有效投票集;其中,有效投票集中包括第一有效投票,第一有效投票用于证明第一节点进入第R1轮共识的第一共识阶段。
其中,第一共识阶段有两种情况
第一种情况:第一共识阶段为prevote阶段
若R1=0,则第一有效投票为空。
若R1≠0,第一有效投票包括:第一节点在第R1-1轮共识的precommit阶段的有效precommit投票。
第二种情况:第一共识阶段为precommit阶段
第一有效投票包括:第一节点在第R1轮共识的prevote阶段的有效prevote投票。
有效投票集中还包括在第R1轮共识的第一共识阶段的有效投票。第R1轮共识的第一共识阶段的有效投票用于供第二节点判断是否进入下一个阶段,使得第二节点继续前进。
其中,针对第一种情况,第R1轮共识的第一共识阶段的有效投票是在第R1轮共识的prevote阶段的有效prevote投票。这样如果第二节点收到大于2/3×N的有效prevote投票,就有进入precommit的资格。
针对第二种情况,第R1轮共识的第一共识阶段的有效投票是在第R1轮共识的precommit阶段的有效precommit投票。这样如果第二节点收到大于2/3×N的有效precommit投票,就有进入propose或者commit的资格。
S302,根据第R1轮共识的第一共识阶段,确定目标轮次的共识阶段。
其中,第一节点与第二节点共识的高度一致。
S303,判断第二节点是否达到目标轮次的共识阶段;在判断结果为是时,进入S304,在判断结果为否时,进入S305。
S304,结束第二节点的当前共识阶段,并进入目标轮次的共识阶段。
S305,保持在当前共识阶段不变。
在本发明实施例中,如果第二节点未达到目标轮次的共识阶段,说明第二节点进行共识比较慢,则快进到目标轮次的共识阶段,使得第二节点的共识数据同步至与第一节点的共识数据一致。
共识数据包括高度、轮次、阶段(NewHeight、Propose、Prevote、Precommit、Commit)以及投票等,可以根据有效投票集中的投票,决定其轮次、阶段等共识数据,从而保证第二节点的共识数据与第一节点的共识数据一致。
在本发明的一个实施例中,在第一共识阶段为prevote阶段并且R1=0的情况下,第一有效投票为空。
在本发明的一个实施例中,在第一共识阶段为prevote阶段并且R1≠0的情况下,第一有效投票包括:在第R1-1轮共识的precommit阶段的有效precommit投票。
其中,目标轮次的共识阶段为第R1-1轮共识的precommit阶段。
在本发明的一个实施例中,在第一共识阶段为precommit阶段的情况下,第一有效投票包括:在第R1轮共识的prevote阶段的有效prevote投票。
其中,目标轮次的共识阶段为第R1轮共识的prevote阶段。
下面通过一个具体的实施例对上述技术方案进行说明。
区块链的参与共识的节点包括第一节点和第二节点,区块链的参与共识的节点总数为N。
实施例一
第一节点进入prevote(50,100)阶段,在满足预定条件时触发计时器开始计时。
若计时器计时的时长大于或等于预定时长,且未离开prevote(50,100)阶段,则第一节点打包有效投票集。
其中,有效投票集包括第一节点在precommit(50,99)阶段的大于2/3×N的有效precommit投票(即上述中的第一有效投票)以及第一节点在prevote(50,100)阶段的所有有效prevote投票。
第二节点收到有效投票集之后,1、如果第二节点在prevote(50,30)阶段,第二节点进行共识比较慢,第二节点本身阶段尚未达到precommit(50,99),因为有了大于2/3×N的有效precommit投票,则第二节点可以直接进入precommit(50,99)阶段;2、若第二节点本身阶段为precommit(50,99),则保持阶段不变;3、若第二节点本身阶段已经高过precommit(50,99),则不作任何处理,直接退出处理逻辑。
然后,执行precommit(50,99)的投票处理逻辑:在依次处理有效投票集中的投票之后,基于投票的情况进入如下处理:
若存在提交候选块的证明(该证明是大于2/3×N的有效precommit投票对应同一非空候选块),则提交候选块并广播证明;
若不存在提交候选块的证明,并且有其他快进证明,则进入到最高的阶段,并执行对应的处理逻辑;
若不存在提交候选块的证明,并且存在大于2/3×N的有效precommit票,则启动计时器(算法本身需要,和有效投票集无关),超时后,才能进入propose(50,100)阶段。
实施例二
第一节点进入precommit(50,100)阶段,在满足预定条件时触发计时器开始计时。
若所述计时器计时的时长大于或等于预定时长,且未离开precommit(50,100)阶段,则第一节点打包有效投票集。
有效投票集包括:在prevote(50,100)阶段的大于2/3×N的有效prevote投票以及在precommit(50,100)阶段的所有precommit投票。
第二节点收到有效投票集之后,如果第二节点在prevote(50,30)阶段,第二节点进行共识比较慢,第二节点本身阶段尚未达到prevote(50,100)阶段,则第二节点结束当前的prevote(50,30)阶段,进入prevote(50,100)阶段。
在上面两个实施例中,在第二节点收到有效投票集合时,从第30轮共识快进到第100轮共识,这样第二节点的轮次与第一节点的轮次一样,从而提高了共识效率。
另外,节点通过共识投票进行共识,并且产生共识数据。
其中,共识投票包括投票类型(包括预投票prevote和预提交precommit两种类型)、高度、轮次、投票目标区块的摘要(该摘要可以为空,表示空候选块)、投票者的标识、投票者的数字签名等属性,其中投票者的数字签名防止投票属性被篡改。
共识数据包括:高度、轮次、共识投票容器、候选块容器、锁定的候选块和锁定的轮次。其中锁定需要的证明(某候选块或空候选块)为某同一轮次对应的大于2/3×N的prevote投票,N为区块链中参与共识的节点总数量。
图4示出了本发明一个实施例提供的基于区块链的共识方法的流程示意图。
在图4中,在进入新高度阶段之前,进行初始阶段。
其中,初始阶段的逻辑:监听并处理最新区块高度事件,初始化自身共识数据。高度为最新区块高度;共识轮次为0;共识投票容器为空;候选块容器为空;共识投票锁定的轮次为未锁定;锁定的候选块为未锁定。并进入NewHeight(H=最新区块高度+1)阶段。
新高度阶段即NewHeight(H)阶段,NewHeight(H)阶段的逻辑为:等待一段时间,进入Propose(共识高度=H,共识轮次=0)阶段。
提名块阶段即propose(H,R)阶段,propose(H,R)阶段的逻辑为:通过(H+R)对区块链中参与共识的节点总数量N取余,将取余的数值与共识节点自身所在的顺位相比较,若相等,则发送构建候选块事件,否则没有操作。比如,H=101,R=20,N是4,(H+R)对N取余得到的数值是1,那么顺位是1的共识节点构建候选块事件,即第一个共识节点出块。
出块的共识节点在出块的一段时间后进入Prevote(共识高度=H,共识轮次=R);若在出块的一段时间收到本轮次的候选块,并且可以锁定该候选块,则直接进入Prevote(共识高度=H,共识轮次=R)阶段;若期间满足一般退出逻辑,则调用共识阶段一般退出逻辑。
预投票阶段即Prevote(H,R)阶段,Prevote(H,R)阶段的逻辑为:如图5所示,在该阶段包括如下的步骤:
S401,判断是否存在锁定的候选块和存在改变锁定候选块的证明,并且满足锁定候选块的轮次<锁定的证明对应的轮次<当前轮次R,在判断结果为是时,即存在锁定的候选块、存在改变锁定候选块的证明,并且满足锁定候选块的轮次<锁定的证明对应的轮次<当前轮次,进入S402,在判断结果为否时,则进入S403。
其中,锁定改变的证明是大于2/3×N的prevote投票,这些prevote投票中轮次和候选块(可以是空块)这两个属性,决定了锁定改变的证明的属性,设锁定的证明对应的轮次为R'。
锁定的候选块是根据改变锁定候选块的证明来确定的,设锁定候选块的轮次属性为R”。
在R'和R”都存在的前提下,判断是否R”<R',并且R'<当前轮次R,简写为R”<R'<R。
S402,解锁锁定的候选块。
S403,判断是否存在锁定的候选块,在判断结果为是时,进入S404,在判断结果为否时,进入S405。
S404,对锁定的候选块对应的轮次进行投票。
S405,判断当前轮次是否及时接收到有效候选块,在判断结果为是时,进入S406,在判断结果为否时,进入S407。
S406,对有效候选块投票。
S407,对空块投票。
整体来说,在进入Prevote(H,R)阶段之后,首先,如果存在锁定的候选块和改变锁定候选块的证明,并且满足锁定候选块的轮次<锁定的证明对应的轮次<当前轮次,则解锁锁定的候选块。
如果存在锁定的候选块,则对锁定的候选块对应的轮次投票。
否则,如果当前轮次收到有效候选块,则对有效候选块投票。
否则,如果当前轮次的候选块无效,或者当前轮次没有及时收到有效候选块,则对空块投票。
另外,在Prevote(H,R)阶段,若有本轮锁定的证明,则进入Precommit(H,R);否则,若收到大于2/3节点数量本轮的prevote投票,则在等待一定时间后进入Precommit(H,R)阶段。若在等待进入Precommit阶段的期间满足一般退出逻辑,则调用共识阶段一般退出逻辑。
继续参考图4,在进入预投票阶段,(a)设置超时计时器A,退出预投票prevote阶段时自动取消。(b)如果超时计时器A发生超时,广播自身的有效投票集,根据Tendermint BFT的算法,只要提供足够的票到达当前状态即可,最后重置并重启超时计时器A。
预提交阶段即precommit(H,R)阶段,precommit(H,R)阶段的逻辑为:如图6所示,在该阶段包括如下的步骤:
S501,判断是否存在改变锁定候选块的证明,在判断结果为是时,进入S502,在判断结果为否时,进入S503。
S502,将锁定的候选块和轮次变换到该证明对应的候选块和轮次,并对该候选块进行投票。
S503,判断是否存在解锁候选块的证明,在判断结果为是时,进入S504,在判断结果为否时,进入S505。
S504,解锁候选块,并对空块投票。
S505,保持锁定状态不变,对空块进行投票。
继续参见图4,在图4中,在预提交阶段,(c)设置超时计时器B,退出预提交阶段时自动取消;(d)超时计时器B发生超时,广播自身票的集合,根据Tendermint BFT的算法,只要提供足够的票到达当前状态即可。最后重置并重启超时计时器B。
提交阶段即Commit(H)阶段,Commit(H)阶段的逻辑:等待候选块到来,发送达成共识事件并进入NewHeight(H+1)阶段。
共识阶段一般退出逻辑,若有大于2/3×N的同一轮次的有效投票,都对应某特定的区块,则进入commit(H)阶段;若任意大于2/3×N的有效prevote投票对应的轮次R’>R,则进入prevote(H,R’)阶段;若任意大于2/3×N的有效precommit投票对应的轮次R’>R,则进入precommit(H,R’)阶段。
共识方法除了包括上述阶段之外,还可以包括追块阶段。
追块阶段的逻辑:监听并处理追块完成事件,若追块完成,则进入初始阶段。比如:节点A的区块链中有100个区块,节点B的区块链中有50个区块,节点B从节点A获取节点B的区块链中所没有的区块,依次放入到自身的区块链中,从而实现追块。
图7示出了本发明实施例提供的节点共识的原理示意图。如图7所示,参与共识的节点(即共识成员)接收和发送外部事件以及处理内部事件,还根据需要读写共识数据。
外部事件包括与参与共识的其他节点交互的投票事件(单张投票或上述有效投票集),以及与本节点其他模块交互的模块间事件等。
内部事件包括共识算法定义的各种定时器超时事件等。
图8示出了本发明第一个实施例提供的基于区块链的共识装置的结构示意图。该装置应用于区块链的第一节点,如图8所示,该装置600包括:
第一共识模块601,用于进入第R1轮共识的第一共识阶段,R1为自然数。
计时模块602,用于在满足预定条件时触发计时器开始计时。
投票集打包模块603,用于若计时器计时的时长大于或等于预定时长,且保持在第R1轮共识的第一共识阶段,则打包有效投票集;其中,有效投票集中包括第一有效投票,第一有效投票用于证明第一节点进入第R1轮共识的第一共识阶段。
投票集广播模块604,用于广播有效投票集。
在本发明的一个实施例中,计时模块602包括:
第一计时模块,用于在进入第R1轮共识的第一共识阶段的时刻,触发计时器开始计时。
在本发明的一个实施例中,计时模块602还可以:
第二计时模块,用于在第R1轮共识的第一共识阶段收到投票的时刻,触发计时器重新开始计时。
图9示出了本发明第二个实施例提供的基于区块链的共识装置的结构示意图。该装置应用于区块链的第二节点,如图9所示,该装置700包括:
投票集获取模块701,用于获取区块链的第一节点广播的有效投票集;其中,有效投票集中包括第一有效投票,第一有效投票用于证明第一节点进入第R1轮共识的第一共识阶段。
目标阶段确定模块702,用于根据第R1轮共识的第一共识阶段,确定目标轮次的共识阶段。
阶段判断模块703,用于判断第二节点是否达到目标轮次的共识阶段。
阶段快进模块704,用于若第二节点未达到目标轮次的共识阶段,则结束第二节点的当前共识阶段,并进入目标轮次的共识阶段。
在第一共识阶段为prevote阶段并且R1=0的情况下,第一有效投票为空。
在本发明的一个实施例中,在第一共识阶段为prevote阶段并且R1≠0的情况下,第一有效投票包括:在第R1-1轮共识的precommit阶段的有效precommit投票。
其中,目标轮次的共识阶段为第R1-1轮共识的precommit阶段。
在本发明的一个实施例中,在第一共识阶段为precommit阶段的情况下,第一有效投票包括:在第R1轮共识的prevote阶段的有效prevote投票。
其中,目标轮次的共识阶段为第R1轮共识的prevote阶段。
在本发明的一个实施例中,有效投票集中还包括在第R1轮共识的第一共识阶段的有效投票。
图10示出了本发明实施例提供的计算机设备的硬件结构示意图。
计算机设备可以包括处理器801以及存储有计算机程序指令的存储器802。
具体地,上述处理器801可以包括中央处理器(CPU),或者特定集成电路(Application Specific IntegR1ated CiR1cuit,ASIC),或者可以被配置成实施本发明实施例的一个或多个集成电路。
存储器802可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器802可包括硬盘驱动器(HaR1d Disk DR1ive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(UniveR1sal SeR1ial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器802可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器802可在综合网关容灾设备的内部或外部。在特定实施例中,存储器802是非易失性固态存储器。在特定实施例中,存储器802包括只读存储器(R1OM)。在合适的情况下,该R1OM可以是掩模编程的R1OM、可编程R1OM(PR1OM)、可擦除PR1OM(EPR1OM)、电可擦除PR1OM(EEPR1OM)、电可改写R1OM(EAR1OM)或闪存或者两个或更多个以上这些的组合。
处理器801通过读取并执行存储器802中存储的计算机程序指令,以实现上述实施例中的任意一种基于区块链的共识方法。
在一个示例中,计算机设备还可包括通信接口803和总线310。其中,如图10所示,处理器801、存储器802、通信接口803通过总线310连接并完成相互间的通信。
通信接口803,主要用于实现本发明实施例中各模块、装置、单元和/或设备之间的通信。
总线310包括硬件、软件或两者,将计算机设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-ExpR1ess(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线310可包括一个或多个总线。尽管本发明实施例描述和示出了特定的总线,但本发明考虑任何合适的总线或互连。
该计算机设备可以执行本发明实施例中的基于区块链的共识方法,从而实现结合图1-图9描述的基于区块链的共识方法和装置。
另外,结合上述实施例中的基于区块链的共识方法,本发明实施例可提供一种计算机存储介质来实现。该计算机存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种基于区块链的共识方法。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、R1OM、闪存、可擦除R1OM(ER1OM)、软盘、CD-R1OM、光盘、硬盘、光纤介质、射频(R1F)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本发明中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本发明不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
以上所述,仅为本发明的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。
Claims (13)
1.一种基于区块链的共识方法,其特征在于,所述方法应用于所述区块链的第一节点,所述的方法包括:
进入第R1轮共识的第一共识阶段,R1为自然数;
在满足预定条件时触发计时器开始计时;
若所述计时器计时的时长大于或等于预定时长,且保持在第R1轮共识的第一共识阶段,则打包有效投票集;其中,所述有效投票集中包括第一有效投票,所述第一有效投票用于证明所述第一节点进入第R1轮共识的第一共识阶段;
广播所述有效投票集;
所述在满足预定条件时触发计时器开始计时,包括:
在进入第R1轮共识的第一共识阶段的时刻,触发所述计时器开始计时。
2.根据权利要求1所述的方法,其特征在于,
在所述第一共识阶段为prevote阶段并且R1=0的情况下,所述第一有效投票为空;
在所述第一共识阶段为prevote阶段并且R1≠0的情况下,所述第一有效投票包括:在第R1-1轮共识的precommit阶段的有效precommit投票;
在所述第一共识阶段为precommit阶段的情况下,所述第一有效投票包括:在第R1轮共识的prevote阶段的有效prevote投票。
3.根据权利要求1所述的方法,其特征在于,所述有效投票集中还包括在第R1轮共识的第一共识阶段的有效投票。
4.根据权利要求1所述的方法,其特征在于,还包括:
在第R1轮共识的第一共识阶段收到投票的时刻,触发所述计时器重新开始计时。
5.一种基于区块链的共识方法,其特征在于,所述方法应用于所述区块链的第二节点,所述的方法包括:
获取所述区块链的第一节点广播的有效投票集;其中,所述有效投票集中包括第一有效投票,所述第一有效投票用于证明所述第一节点进入第R1轮共识的第一共识阶段,R1为自然数;
根据所述第R1轮共识的第一共识阶段,确定目标轮次的共识阶段;
判断所述第二节点是否达到所述目标轮次的共识阶段;
若所述第二节点未达到所述目标轮次的共识阶段,则结束所述第二节点的当前共识阶段,并进入所述目标轮次的共识阶段。
6.根据权利要求5所述的方法,其特征在于,
在所述第一共识阶段为prevote阶段并且R1=0的情况下,所述第一有效投票为空。
7.根据权利要求5所述的方法,其特征在于,
在所述第一共识阶段为prevote阶段并且R1≠0的情况下,所述第一有效投票包括:在第R1-1轮共识的precommit阶段的有效precommit投票;
所述目标轮次的共识阶段为第R1-1轮共识的precommit阶段。
8.根据权利要求5所述的方法,其特征在于,
在所述第一共识阶段为precommit阶段的情况下,所述第一有效投票包括:在第R1轮共识的prevote阶段的有效prevote投票;
所述目标轮次的共识阶段为第R1轮共识的prevote阶段。
9.根据权利要求5所述的方法,其特征在于,所述有效投票集中还包括在第R1轮共识的第一共识阶段的有效投票。
10.一种基于区块链的共识装置,其特征在于,所述的装置应用于所述区块链的第一节点,所述的装置包括:
第一共识模块,用于进入第R1轮共识的第一共识阶段,R1为自然数;
计时模块,用于在满足预定条件时触发计时器开始计时;
投票集打包模块,用于若所述计时器计时的时长大于或等于预定时长,且保持在第R1轮共识的第一共识阶段,则打包有效投票集;其中,所述有效投票集中包括第一有效投票,所述第一有效投票用于证明所述第一节点进入第R1轮共识的第一共识阶段;
投票集广播模块,用于广播所述有效投票集;
所述计时模块包括:
第一计时模块,用于在进入第R1轮共识的第一共识阶段的时刻,触发所述计时器开始计时。
11.一种基于区块链的共识装置,其特征在于,所述装置应用于所述区块链的第二节点,所述的装置包括:
投票集获取模块,用于获取所述区块链的第一节点广播的有效投票集;其中,所述有效投票集中包括第一有效投票,所述第一有效投票用于证明所述第一节点进入第R1轮共识的第一共识阶段;
目标阶段确定模块,用于根据所述第R1轮共识的第一共识阶段,确定目标轮次的共识阶段;
阶段判断模块,用于判断所述第二节点是否达到所述目标轮次的共识阶段;
阶段快进模块,用于若所述第二节点未达到所述目标轮次的共识阶段,则结束所述第二节点的当前共识阶段,并进入所述目标轮次的共识阶段。
12.一种计算机设备,其特征在于,所述设备包括:处理器以及存储有计算机程序指令的存储器;
所述处理器执行所述计算机程序指令时实现如权利要求1-9任意一项所述的基于区块链的共识方法。
13.一种计算机存储介质,其特征在于,所述计算机存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如权利要求1-9任意一项所述的基于区块链的共识方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910694191.9A CN110572429B (zh) | 2019-07-30 | 2019-07-30 | 基于区块链的共识方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910694191.9A CN110572429B (zh) | 2019-07-30 | 2019-07-30 | 基于区块链的共识方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110572429A CN110572429A (zh) | 2019-12-13 |
CN110572429B true CN110572429B (zh) | 2022-01-07 |
Family
ID=68773035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910694191.9A Active CN110572429B (zh) | 2019-07-30 | 2019-07-30 | 基于区块链的共识方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110572429B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111163148B (zh) * | 2019-12-24 | 2021-09-28 | 腾讯科技(深圳)有限公司 | 一种区块链系统的共识状态的同步方法及相关设备 |
CN111507840B (zh) * | 2020-04-15 | 2024-03-26 | 财付通支付科技有限公司 | 区块链共识方法、装置、计算机以及可读存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108122165A (zh) * | 2017-12-15 | 2018-06-05 | 北京中电普华信息技术有限公司 | 一种区块链共识方法及系统 |
CN108961017A (zh) * | 2018-06-21 | 2018-12-07 | 中科新松有限公司 | 一种区块链共识机制和基于该共识机制的区块链系统 |
WO2019040886A1 (en) * | 2017-08-24 | 2019-02-28 | Alibaba Group Holding Limited | METHOD AND APPARATUS FOR SELECTING CONSENSUS NODE AND SERVER |
CN109447795A (zh) * | 2018-09-11 | 2019-03-08 | 中国人民解放军国防科技大学 | 一种支持快速达成最终确认性的拜占庭共识方法 |
CN109450659A (zh) * | 2018-12-25 | 2019-03-08 | 杭州复杂美科技有限公司 | 区块延时广播方法、设备和存储介质 |
CN109525636A (zh) * | 2018-10-12 | 2019-03-26 | 上海保险交易所股份有限公司 | 基于Raft算法的区块链共识方法 |
CN109919760A (zh) * | 2019-01-11 | 2019-06-21 | 南京邮电大学 | 基于投票机制的拜占庭容错共识算法 |
CN109964446A (zh) * | 2018-06-08 | 2019-07-02 | 北京大学深圳研究生院 | 一种基于投票的共识方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10360191B2 (en) * | 2016-10-07 | 2019-07-23 | International Business Machines Corporation | Establishing overlay trust consensus for blockchain trust validation system |
-
2019
- 2019-07-30 CN CN201910694191.9A patent/CN110572429B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019040886A1 (en) * | 2017-08-24 | 2019-02-28 | Alibaba Group Holding Limited | METHOD AND APPARATUS FOR SELECTING CONSENSUS NODE AND SERVER |
CN108122165A (zh) * | 2017-12-15 | 2018-06-05 | 北京中电普华信息技术有限公司 | 一种区块链共识方法及系统 |
CN109964446A (zh) * | 2018-06-08 | 2019-07-02 | 北京大学深圳研究生院 | 一种基于投票的共识方法 |
CN108961017A (zh) * | 2018-06-21 | 2018-12-07 | 中科新松有限公司 | 一种区块链共识机制和基于该共识机制的区块链系统 |
CN109447795A (zh) * | 2018-09-11 | 2019-03-08 | 中国人民解放军国防科技大学 | 一种支持快速达成最终确认性的拜占庭共识方法 |
CN109525636A (zh) * | 2018-10-12 | 2019-03-26 | 上海保险交易所股份有限公司 | 基于Raft算法的区块链共识方法 |
CN109450659A (zh) * | 2018-12-25 | 2019-03-08 | 杭州复杂美科技有限公司 | 区块延时广播方法、设备和存储介质 |
CN109919760A (zh) * | 2019-01-11 | 2019-06-21 | 南京邮电大学 | 基于投票机制的拜占庭容错共识算法 |
Non-Patent Citations (4)
Title |
---|
IEEE 15th International Conference on Smart City * |
IEEE 3rd International Conference on Data Science and Systems (HPCC/SmartCity/DSS)》.2017, * |
Kejiao Li.Proof of Vote: A High-Performance Consensus Protocol Based on Vote Mechanism & Consortium Blockchain.《2017 IEEE 19th International Conference on High Performance Computing and Communications * |
基于区块链的安全投票系统设计与实现;颜春辉;《通信技术》;20180831;第51卷(第8期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110572429A (zh) | 2019-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108648078B (zh) | 一种交易预处理方法、装置及电子设备 | |
CN108683630B (zh) | 跨区块链的认证方法及装置、电子设备 | |
US20190354518A1 (en) | Chain mesh network for decentralized transaction systems | |
US11893583B2 (en) | Settlement system, settlement method, user device, and settlement program | |
US10476682B2 (en) | Transaction management in distributed ledger systems | |
US20180372502A1 (en) | Road traffic management | |
CN111723406B (zh) | 一种区块链的共识算法及系统 | |
CN110572429B (zh) | 基于区块链的共识方法、装置、设备及存储介质 | |
US11362832B2 (en) | Distributed proof-of-work for sharded or parallel blockchains | |
CN113570466B (zh) | 一种交易数据处理方法、装置以及可读存储介质 | |
WO2020087042A1 (en) | Blockchain consensus systems and methods involving a time parameter | |
CN110012100B (zh) | 一种带宽优化的区块链共识方法、装置及电子设备 | |
US10970305B2 (en) | Methods and systems of database cluster formation and management | |
CN113609515B (zh) | 一种共识方法、区块链系统 | |
CN113037416B (zh) | 时间同步方法、装置、车载设备及存储介质 | |
CN109213828B (zh) | 区块生成方法、装置、设备及存储介质 | |
CN111130875B (zh) | 一种区块链的共识方法、装置、设备及存储介质 | |
Schiper et al. | On the inherent cost of atomic broadcast and multicast in wide area networks | |
CN100502314C (zh) | 绝对时间数据采集方法及系统 | |
JP5239769B2 (ja) | リクエスト順序制御システム、リクエスト順序制御方法およびリクエスト順序制御プログラム | |
CN111507840B (zh) | 区块链共识方法、装置、计算机以及可读存储介质 | |
CN110163606B (zh) | 基于区块链的退款方法和装置、电子设备 | |
RU2768202C2 (ru) | Системы и способы для обеспечения неизменяемых записей | |
JP7393047B2 (ja) | 不正検証装置、および、不正検知システム | |
CN116846916B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |