CN117424904A - 共识处理方法、装置、计算机设备和区块链系统 - Google Patents
共识处理方法、装置、计算机设备和区块链系统 Download PDFInfo
- Publication number
- CN117424904A CN117424904A CN202210810584.3A CN202210810584A CN117424904A CN 117424904 A CN117424904 A CN 117424904A CN 202210810584 A CN202210810584 A CN 202210810584A CN 117424904 A CN117424904 A CN 117424904A
- Authority
- CN
- China
- Prior art keywords
- consensus
- node
- target
- height
- waiting time
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 19
- 238000003672 processing method Methods 0.000 title abstract description 28
- 238000000034 method Methods 0.000 claims abstract description 63
- 238000004590 computer program Methods 0.000 claims description 28
- 238000003860 storage Methods 0.000 claims description 15
- 238000009826 distribution Methods 0.000 claims description 12
- 230000001960 triggered effect Effects 0.000 claims description 8
- 238000012795 verification Methods 0.000 claims description 5
- 230000000977 initiatory effect Effects 0.000 claims description 4
- 230000000875 corresponding effect Effects 0.000 description 173
- 230000008569 process Effects 0.000 description 31
- 238000010586 diagram Methods 0.000 description 15
- 238000004891 communication Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000005266 casting Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 230000000007 visual 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Marketing (AREA)
- Economics (AREA)
- Development Economics (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种共识处理方法、装置、计算机设备和区块链系统。方法包括:获取从节点当前的第一共识高度,并获取主节点当前的第二共识高度;当第二共识高度小于第一共识高度时,基于第一共识高度和第二共识高度,确定主节点对应的共识落后信息;共识落后信息用于表征主节点相对于从节点的共识落后程度;基于主节点对应的共识落后信息,确定对预设等待时长进行衰减得到的目标等待时长;在开启针对当前共识轮次的投票等待计时的情况下,当计时时长达到目标等待时长且未接收到主节点广播的提案信息时,按照预设方式发起投票并在区块链系统中进行广播,以触发区块链系统切换至下一个共识轮次。采用本方法能够提高区块链的共识性能。
Description
技术领域
本申请涉及区块链技术领域,特别是涉及一种共识处理方法、装置、计算机设备、存储介质、计算机程序产品以及区块链系统。
背景技术
区块链系统是目前普遍使用的计算系统,应用于区块链、ZooKeeper分布式服务框架等等诸多领域。共识算法是用于供区块链系统中的节点就消息达成一致的方式,具体来说,在区块链系统的工作过程中,节点对来自客户端的待处理的消息达成一致(Consensus),即当区块链系统的全部节点或多数节点对接收的消息进行确认后然后对消息进行同步存储/处理。
相关技术中,区块链系统中的节点通过主节点和从节点两种角色来完成共识的过程,然而当主节点存在故障时,往往存在共识性能低的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高共识性能的共识处理方法、装置、计算机设备、计算机可读存储介质和计算机程序产品,以及一种区块链系统。
一方面,本申请提供了一种共识处理方法。所述方法包括:获取所述从节点当前的第一共识高度,并获取主节点当前的第二共识高度;当所述第二共识高度小于所述第一共识高度时,基于所述第一共识高度和所述第二共识高度,确定所述主节点对应的共识落后信息;所述共识落后信息用于表征所述主节点相对于所述从节点的共识落后程度;基于所述主节点对应的共识落后信息,确定对预设等待时长进行衰减得到的目标等待时长;在开启针对当前共识轮次的投票等待计时的情况下,当计时时长达到所述目标等待时长且未接收到所述主节点广播的提案信息时,按照预设方式发起投票并在所述区块链系统中进行广播,以触发所述区块链系统切换至下一个共识轮次。
另一方面,本申请还提供了一种共识处理装置。所述装置包括:共识高度获取模块,用于获取从节点当前的第一共识高度,并获取主节点当前的第二共识高度;共识落后信息确定模块,用于当所述第二共识高度小于所述第一共识高度时,基于所述第一共识高度和所述第二共识高度,确定所述主节点对应的共识落后信息;所述共识落后信息用于表征所述主节点相对于所述从节点的共识落后程度;等待时长确定模块,用于基于所述主节点对应的共识落后信息,确定对预设等待时长进行衰减得到的目标等待时长;共识轮次切换模块,用于在开启针对当前共识轮次的投票等待计时的情况下,当计时时长达到所述目标等待时长且未接收到所述主节点广播的提案信息时,按照预设方式发起投票并在所述区块链系统中进行广播,以触发所述区块链系统切换至下一个共识轮次。
另一方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:获取所述从节点当前的第一共识高度,并获取主节点当前的第二共识高度;当所述第二共识高度小于所述第一共识高度时,基于所述第一共识高度和所述第二共识高度,确定所述主节点对应的共识落后信息;所述共识落后信息用于表征所述主节点相对于所述从节点的共识落后程度;基于所述主节点对应的共识落后信息,确定对预设等待时长进行衰减得到的目标等待时长;在开启针对当前共识轮次的投票等待计时的情况下,当计时时长达到所述目标等待时长且未接收到所述主节点广播的提案信息时,按照预设方式发起投票并在所述区块链系统中进行广播,以触发所述区块链系统切换至下一个共识轮次。
另一方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:获取所述从节点当前的第一共识高度,并获取主节点当前的第二共识高度;当所述第二共识高度小于所述第一共识高度时,基于所述第一共识高度和所述第二共识高度,确定所述主节点对应的共识落后信息;所述共识落后信息用于表征所述主节点相对于所述从节点的共识落后程度;基于所述主节点对应的共识落后信息,确定对预设等待时长进行衰减得到的目标等待时长;在开启针对当前共识轮次的投票等待计时的情况下,当计时时长达到所述目标等待时长且未接收到所述主节点广播的提案信息时,按照预设方式发起投票并在所述区块链系统中进行广播,以触发所述区块链系统切换至下一个共识轮次。
另一方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:获取所述从节点当前的第一共识高度,并获取主节点当前的第二共识高度;当所述第二共识高度小于所述第一共识高度时,基于所述第一共识高度和所述第二共识高度,确定所述主节点对应的共识落后信息;所述共识落后信息用于表征所述主节点相对于所述从节点的共识落后程度;基于所述主节点对应的共识落后信息,确定对预设等待时长进行衰减得到的目标等待时长;在开启针对当前共识轮次的投票等待计时的情况下,当计时时长达到所述目标等待时长且未接收到所述主节点广播的提案信息时,按照预设方式发起投票并在所述区块链系统中进行广播,以触发所述区块链系统切换至下一个共识轮次。
另一方面,本申请还提供了一种区块链系统,包括多个节点;所述节点用于:在处于从节点的状态时,获取当前的第一共识高度,并获取主节点当前的第二共识高度;当所述第二共识高度小于所述第一共识高度时,基于所述第一共识高度和所述第二共识高度,确定所述主节点对应的共识落后信息;所述共识落后信息用于表征所述主节点相对于所述从节点的共识落后程度;基于所述主节点对应的共识落后信息,确定对预设等待时长进行衰减得到的目标等待时长;在开启针对当前共识轮次的投票等待计时的情况下,当计时时长达到所述目标等待时长且未接收到所述主节点广播的提案信息时,按照预设方式发起投票并在区块链系统中进行广播,以触发所述区块链系统切换至下一个共识轮次。
上述共识处理方法、装置、计算机设备、存储介质、计算机程序产品和区块链系统,通过获取从节点当前的第一共识高度,并获取主节点当前的第二共识高度,当第二共识高度小于第一共识高度时,基于第一共识高度和第二共识高度,确定主节点对应的共识落后信息,基于主节点对应的共识落后信息,确定对预设等待时长进行衰减得到的目标等待时长,在开启针对当前共识轮次的投票等待计时的情况下,当计时时长达到目标等待时长且未接收到主节点广播的提案信息时,按照预设方式发起投票并在区块链系统中进行广播,以触发区块链系统切换至下一个共识轮次,由于可以基于主节点对应的共识落后信息,动态确定目标等待时长,并且目标等待时长是对预设等待时长进行衰减得到的,可以在主节点故障的情况下,缩短共识过程中的超时等待时间,从而大幅度提升共识性能。
附图说明
图1为一个分布式系统应用于区块链系统的一个可选的结构示意图;
图2为一个实施例中区块结构的示意图;
图3为一个实施例中拜占庭容错共识算法的共识过程示意图;
图4为一个实施例中共识处理方法的应用环境图;
图5为一个实施例中共识处理方法的流程示意图;
图6为一个实施例中节点之间进行状态同步的示意图;
图7为一个实施例中主节点为正常节点的共识过程示意图;
图8为一个实施例中主节点为故障节点的共识过程示意图;
图9为一个实施例中目标等待时长的变化示意图;
图10为一个实施例中区块链系统的结构框图;
图11为一个实施例中共识处理装置的结构框图;
图12为一个实施例中计算机设备的内部结构图;
图13为另一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本发明实施例涉及区块链系统,区块链系统可以是由客户端、多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)通过网络通信的形式连接形成的分布式系统。参见图1,图1是本发明实施例提供的分布式系统100应用于区块链系统的一个可选的结构示意图,由多个节点200(接入网络中的任意形式的计算设备,如服务器、用户终端)和客户端300形成,节点之间形成组成的点对点(P2P,Peer To Peer)网络,P2P协议是一个运行在传输控制协议(TCP,Transmission Control Protocol)协议之上的应用层协议。在分布式系统中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作系统层和应用层。
参见图1示出的区块链系统中各节点的功能,涉及的功能包括:
1)路由,节点具有的基本功能,用于支持节点之间的通信。
节点除具有路由功能外,还可以具有以下功能:
2)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链系统中的其他节点,供其他节点在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。
例如,应用实现的业务包括:
2.1)钱包,用于提供进行电子货币的交易的功能,包括发起交易(即,将当前交易的交易记录发送给区块链系统中的其他节点,其他节点验证成功后,作为承认交易有效的响应,将交易的记录数据存入区块链的临时区块中;当然,钱包还支持查询电子货币地址中剩余的电子货币;
2.2)共享账本,用于提供账目数据的存储、查询和修改等操作的功能,将对账目数据的操作的记录数据发送到区块链系统中的其他节点,其他节点验证有效后,作为承认账目数据有效的响应,将记录数据存入临时区块中,还可以向发起操作的节点发送确认。
2.3)智能合约,计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的交易,例如查询买家所购买商品的物流状态,在买家签收货物后将买家的电子货币转移到商户的地址;当然,智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约。
3)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点提交的记录数据。
参见图2,图2是本申请实施例提供的区块结构(Block Structure)一个可选的示意图,每个区块中包括本区块存储交易记录的哈希值(本区块的哈希值)、以及前一区块的哈希值,各区块通过哈希值连接形成区块链。另外,区块中还可以包括有区块生成时的时间戳等信息。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了相关的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
在一个实施例中,本申请区块链系统中的共识算法可以采用拜占庭容错共识算法,(Practical Byzantine-Fault Tolerance,PBFT),拜占庭容错共识算法包括四个阶段,分别为提案(Proposal)阶段、预投票(Prevote)阶段、预提交(Precommit)阶段和提交(Commit)阶段。以下结合图3并以网络交易场景为例进行说明:
在提案阶段,若区块链系统中存在网络交易,则区块链系统中的主节点可以打包生成提案信息,并向区块链系统中除主节点之外的各个从节点广播该提案信息。若区块链系统中不存在网络交易,则区块链系统中的主节点不会打包生成提案信息。如图3中,区块链系统中的主节点为节点1,区块链系统中的从节点为节点2-4,节点1打包生成了提案信息,并向节点2-4广播该提案信息。
在预投票阶段,当区块链系统中的主节点打包生成提案信息,并向区块链系统中除主节点之外的各个从节点广播该提案信息之后,区块链系统中的任意一个节点(即从节点)可以接收到提案信息,接着进行针对提案信息的第一次投票,并向区块链系统中除该任意一个节点之外的各个节点广播该任意一个节点针对提案信息的第一次投票。如图3中,节点1进行针对提案信息的第一次投票,并向节点1、2和3广播节点1针对提案信息的第一次投票,节点2在接收到提案信息之后进行针对提案信息的第一次投票,并向节点1、3和4广播节点2针对提案信息的第一次投票。同样的,节点3在接收到提案信息之后进行针对提案信息的第一次投票,并向节点1、2和4广播节点3针对提案信息的第一次投票。节点4在接收到提案信息之后进行针对提案信息的第一次投票,并向节点1、2和3广播节点4针对提案信息的第一次投票。
在预投票阶段,当区块链系统中的主节点未打包生成提案信息时,区块链系统中的任一个从节点无法接收到提案信息,而无论主节点是否打包生成提案信息,主节点均不会接收到提案信息。因此,对于区块链系统中不会接收到提案信息的任意一个节点(可以为主节点,也可以为从节点),在预设等待时长后进行针对空提案的第一次投票,并向区块链系统中除该任意一个节点之外的各个节点广播该任意一个节点针对空提案的第一次投票。
在预提交阶段,对于区块链系统中的任意一个节点(可以为主节点,也可以为从节点),当该任意一个节点接收到区块链系统中除该任意一个节点之外不小于第一数量的节点广播的针对提案信息的第一次投票时,该任意一个节点进行针对提案信息的第二次投票,并向区块链系统中除该任意一个节点之外的各个节点广播该任意一个节点针对提案信息的第二次投票。本申请实施例不对第一数量做限定,举例说明,假设区块链系统中的节点数量为X,则第一数量可以为2X/3,X为正整数。如图3中,节点1在接收到节点2-4广播的针对提案信息的第一次投票时,进行针对提案信息的第二次投票,并向节点2-4广播节点1针对提案信息的第二次投票。同样的,节点2在接收到节1、3、4广播的针对提案信息的第一次投票时,进行针对提案信息的第二次投票,并向节点1、3、4广播节点2针对提案信息的第二次投票。节点3在接收到节1、2、4广播的针对提案信息的第一次投票时,进行针对提案信息的第二次投票,并向节点1、2、4广播节点3针对提案信息的第二次投票。节点4在接收到节点1、2、3广播的针对提案信息的第一次投票时,进行针对提案信息的第二次投票,并向节点1-3广播节点4针对提案信息的第二次投票。
在预提交阶段,对于区块链系统中的任意一个节点(可以为主节点,也可以为从节点),当该任意一个节点接收到区块链系统中除该任意一个节点之外不小于第一数量的节点广播的针对空提案的第一次投票时,该任意一个节点进行针对空提案的第二次投票,并向区块链系统中除该任意一个节点之外的各个节点广播该任意一个节点针对空提案的第二次投票。
在提交阶段,对于区块链系统中的任意一个节点(可以为主节点,也可以为从节点),当该任意一个节点接收到区块链系统中除该任意一个节点之外不小于第二数量的节点广播的针对提案信息的第二次投票时,该任意一个节点确定达成的共识是该提案信息。本申请实施例不对第二数量做限定,其中,第二数量可以与第一数量相同,也可以与第一数量不同。举例说明,若区块链系统中的节点数量为X,则第二数量为2X/3,X为正整数。如图3中,节点1在接收到节点2-4广播的针对提案信息的第二次投票时,节点1确定达成的共识是该提案信息。同样的,节点2在接收到节点1、3、4广播的针对提案信息的第二次投票时,节点2确定达成的共识是该提案信息。节点3在接收到节点1、2、4广播的针对提案信息的第二次投票时,节点3确定达成的共识是该提案信息。节点4在接收到节点1-3广播的针对提案信息的第二次投票时,节点4确定达成的共识是该提案信息。
在提交阶段,对于区块链系统中的任意一个节点(可以为主节点,也可以为从节点),当该任意一个节点接收到区块链系统中除该任意一个节点之外不小于第二数量的节点广播的针对空提案的第二次投票时,该任意一个节点确定达成的共识是空提案。
当任意一个节点确定达成的共识是提案信息时,表明该任意一个节点针对区块链系统中的网络交易达成了共识,因此,该任意一个节点的共识高度增加。当任意一个节点确定达成的共识是空提案时,该任意一个节点的区块高度不变,表明该任意一个节点未针对区块链系统中的网络交易达成了共识。无论达成的共识是提案信息或者空提案时,都表明该任意一个节点完成了一次共识过程,此时区块链系统重新选择主节点,重复以上流程进入下一个共识轮次。
为了保障共识能够稳定运行,各个节点在提案阶段会有一个定时器(为了保证主节点能够按时构造完提案信息,一般将超时时间设置的较大,如30s)用于等待让主节点去生成提案信息,如果从节点未在预设等待时长内接收到主节点构造的提案信息,那么为了保障共识能够继续进行且尽快进入下一轮共识,会对一个空提案进行投票。因此如果区块链系统中某个节点没有生成提案信息或者其他节点没有收到它的提案信息,那么根据共识流程就会达成一个空提案的共识。之后再切换另外一个节点成为主节点,如果这时候某个节点宕机或者其他原因关闭了,轮到它成为主节点的时候,由于它已经宕机或者关闭了,因此其他节点不会收到它生成的提案信息,所以其他节点就会等待预设等待时长后投空票(即对空提案进行投票),然后又会切换一个正常的节点成为主节点,这时候正常节点产生提案信息让共识继续。因此,如果某个节点宕机或者关闭了,当轮到它成为主节点的时候,是不会产生提案信息发给其他节点进行共识的,于是就会出现当轮到这个故障节点成为主节点的时候,整个区块链系统是没有提案信息进行共识,从而导致其他节点需要等待预设等待时长,然后超时投空票达成空的共识,然后换一个正常节点成为主节点,生成了有效的提案信息才能达成有提案信息的共识。
基于此,如果区块链系统中有一个故障节点,会导致它成为主节点的时候不会达成有提案信息的共识。假设区块链网络中有一个节点是故障节点,那么区块链的性能会下降非常多。因为当这个故障节点为主节点的时候达不成有效共识,只能是超时等待共识一个空提案,然后切换一个正常的节点成为主节点,但是下次轮到这个故障节点成为主节点的时候又要等待超时。因此为了提高区块链性能,如何处理故障节点的超时等待成为一个问题。
在一个实施例中,本申请实施例提供的共识处理方法,可以应用于如图4所示的应用环境中。其中,终端402通过网络与区块链系统中的主节点404进行通信,主节点404通过网络与区块链系统中的从节点406进行通信,主节点和从节点可以是区块链系统中任意一个节点,从节点406可以包括一个或者多个,多个指的是至少两个。具体地,终端402可以向主节点404发送请求,以触发区块链系统进入共识处理流程,在共识处理流程中,当从节点获取到主节点的共识高度时,比较自身的共识高度和主节点的共识高度,若主节点的共识高度小于自身的共识高度时,则判定主节点可能出现故障,此时,主节点可以通过确定主节点的共识落后信息,基于共识落后信息动态确定目标等待时长,以缩短共识等待时长,尽快进入下一轮共识,从而提高区块链系统的共识性能。
其中,终端402可以但不限于是各种台式计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。主节点404以及从节点406可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图5所示,提供了一种共识处理方法,以该方法应用于图4中的从节点406为例进行说明,包括以下步骤:
步骤502,获取从节点当前的第一共识高度,并获取主节点当前的第二共识高度。
其中,主节点是区块链系统中可生成提案信息的节点,从节点是区块链系统中除主节点之外的任意节点。区块链系统中任意一个节点均可作为主节点,区块链系统中任意一个节点均可作为从节点。共识高度指的是区块高度,是用于标识针对区块链系统中的提案信息达成共识的轮次信息,区块链系统中的多个节点每针对区块链系统中的提案信息达成一次共识,则这多个节点中各个节点的共识高度增加1。若区块链系统中任意一个节点初始的区块高度为0,而该任意一个节点当前的区块高度为Y,则可以表明该任意一个节点已针对区块链系统中的提案信息达成了Y次共识,Y为正整数。可以理解的是,这里的提案信息指的是包含真实数据的提案,并不是空提案,以网络交易场景为例,区块链系统中的多个节点每针对区块链系统中的网络交易达成一次共识,则这多个节点中各个节点的共识高度增加1。还可以理解的是,区块链系统中的一个提案信息仅能达成一次共识,也就是说,这Y次共识针对的是Y个提案信息。
具体地,区块链系统中的各个节点之间会互相广播自己的状态,能够知道其他节点当前的共识高度,因此,从节点可以获取主节点的第二共识高度,而第一共识高度是从节点自身的共识高度,从节点可以从本地存储中获取到自身当前的第一共识高度。
步骤504,当第二共识高度小于第一共识高度时,基于第一共识高度和第二共识高度,确定主节点对应的共识落后信息;共识落后信息用于表征主节点相对于从节点的共识落后程度。
其中,共识落后信息用于表征主节点相对于从节点的共识落后程度,共识落后程度越大,表明主节点的共识高度相当于从节点越是落后。主节点对应的共识落后信息与主节点落后从节点的共识高度差值成正相关关系。
具体地,从节点在获取到自身的第一共识高度以及主节点的第二共识高度后,可以比较第一共识高度和第二共识高度,若第二共识高度小于第一共识高度,则说明主节点当前的共识高度是落后的,主节点可能为故障节点,那么从节点可以基于第一共识高度和第二共识高度确定主节点对应的共识落后信息。
在一个实施例中,共识落后信息可以是基于第一共识高度和第二共识高度之间的差异值得到,即假设第一共识高度为Bh,第二共识高度为Ph,则共识落后信息可以基于(Bh-Ph)得到,此时,共识落后信息与共识落后程度呈正相关,即共识落后信息所对应的数值越大,则共识落后程度越大。在另一个实施例中,共识落后信息可以是基于第一共识高度和第二共识高度之间的比值得到,即假设第一共识高度为Bh,第二共识高度为Ph,则共识落后信息可以基于Ph/Bh得到,此时,共识落后信息与共识落后程度呈负相关,即共识落后信息所对应的数值越大,则共识落后程度越小。
在一个实施例中,从节点还可以将自身的共识高度和其他从节点的共识高度进行比较,若自身的共识高度和其他从节点的共识高度不一致、且其他大部分从节点的共识高度一致,则从节点可以不参与当前轮共识,可以直接从其他从节点获取未同步的区块,对自身的共识高度进行更新。
在一个实施例中,当主节点当前的第二共识高度等于从节点当前的第一共识高度时,说明此时主节点是正常的节点,从节点确定主节点对应的共识落后信息对应的数值为0,即主节点相对于从节点的共识落后程度为0,此时,从节点可以进行正常共识,即按照预设等待时长等待主节点生成提案信息。
步骤506,基于主节点对应的共识落后信息,确定对预设等待时长进行衰减得到的目标等待时长。
其中,预设等待时长指的是预先设定的在正常的共识过程中从节点等待主节点生成提案信息的时间,这里正常的共识过程指的是从节点和主节点均未出现故障,从节点和主节点的共识高度是一致的。对预设等待时长进行衰减指的是在预设等待时长的基础上进行数值减小,衰减的方式可以根据共识落后信息的确定方式进行确定。目标等待时长是在主节点的共识高度小于从节点的共识高度时,从节点动态确定的等待主节点生成提案信息的时间,目标等待时长小于预设等待时长。目标等待时长与共识落后程度成负相关关系,其中负相关关系指的是:在其他条件不变的情况下,两个变量变动方向相同,一个变量由大到小变化时,另一个变量也由小到大变化。可以理解的是,这里的负相关关系是指变化的方向是相反的,但并不是要求当一个变量有一点变化,另一个变量就必须也变化。例如,可以设置当变量a为10至20时,变量b为100,当变量a为20至30时,变量b为80。这样,a与b的变化方向都是当a变大时,b变小。但在a为10至20的范围内时,b可以是没有变化的。
具体地,当某个节点落后了其他节点多个高度,那么当它成为主节点的时候,其他节点等待它生成提案信息的超时等待时间就很短,因为当它落后了太多的共识高度,它需要从其他节点同步区块,只有同步完区块它的共识高度和其他节点一样的时候,它才能生成提案信息,因此当某个节点成为主节点的时候,他的共识高度越是落后,它能够生成提案信息的可能性就越低,那么从节点等待它生成提案信息的时间就越短,基于此,从节点在确定了主节点对应的共识落后信息后,由于共识落后信息可以表征主节点相对于从节点的共识落后程度,进而可以基于共识落后信息确定目标等待时长,目标等待时长是对预设等待时长进行衰减得到的,是小于预设等待时长的,从而可以基于缩短等待时间。
步骤508,在开启针对当前共识轮次的投票等待计时的情况下,当计时时长达到目标等待时长且未接收到主节点广播的提案信息时,按照预设方式发起投票并在区块链系统中进行广播,以触发区块链系统切换至下一个共识轮次。
其中,当前共识轮次指的是当前轮的共识过程,在拜占庭容错共识算法中,每一个共识轮次均包括提案(Proposal)阶段、预投票(Prevote)阶段、预提交(Precommit)阶段和提交(Commit)阶段,在这四个阶段完成后,进入下一个共识轮次。
具体地,在提案阶段,从节点可以开启针对当前共识轮次的投票等待计时,当计时时长达到目标等待时长且未接收到主节点广播的提案信息时,为了保证共识能够继续进行且尽快进入下一轮共识,从节点可以按照预设方式发起投票并在区块链系统中进行广播,以触发区块链系统重新选取主节点,开始下一个共识轮次。
在一个实施例中,从节点按照预设方式发起投票可以是对空提案进行投票,从而在预投票阶段,当从节点接收到第一数量的节点对空提案进行的投票后,进入到预提交,对该空提案进行第二次投票,最终在提交阶段,对该空提案达成共识,然后切换至下一个共识轮次。
在其他实施例中,从节点按照预设方式发起投票可以是对预设内容的提案进行投票,区块链系统中各个节点之间可以预先约定一个预设内容的提案,当接收到的提案信息是对该预设内容的提案时,即时最后能够达成共识,也不会将其写入区块链中,直接触发切换至下一个共识轮次。
上述共识处理方法中,通过获取从节点当前的第一共识高度,并获取主节点当前的第二共识高度,当第二共识高度小于第一共识高度时,基于第一共识高度和第二共识高度,确定主节点对应的共识落后信息,基于主节点对应的共识落后信息,确定对预设等待时长进行衰减得到的目标等待时长,在开启针对当前共识轮次的投票等待计时的情况下,当计时时长达到目标等待时长且未接收到主节点广播的提案信息时,按照预设方式发起投票并在区块链系统中进行广播,以触发区块链系统切换至下一个共识轮次,由于可以基于主节点对应的共识落后信息,动态确定目标等待时长,并且目标等待时长是对预设等待时长进行衰减得到的,可以在主节点故障的情况下,缩短共识过程中的超时等待时间,从而大幅度提升共识性能。
在一个实施例中,基于第一共识高度和第二共识高度,确定主节点对应的共识落后信息,包括:获取第一共识高度和第二共识高度之间的差异值,基于差异值确定主节点对应的共识落后信息;基于主节点对应的共识落后信息,确定对预设等待时长进行衰减得到的目标等待时长,包括:基于主节点对应的共识落后信息,确定对预设等待时长按照第一预设衰减方式进行衰减得到的目标等待时长。
具体地,从节点可以将第一共识高度减去第二共识高度得到二者之间的差异值,进而可以基于差异值确定主节点对应的共识落后信息。在一个具体的实施例中,从节点可以将差异值直接作为主节点对应的共识落后信息,例如,假设第一共识高度为Bh,第二共识高度为Ph,则共识落后信息为(Bh-Ph)。在其他实施例中,从节点可以将差异值除以一个预设的高度差系数得到共识落后信息,例如,假设第一共识高度为Bh,第二共识高度为Ph,则共识落后信息为(Bh-Ph)/y,其中y为预设的高度差系数,可以根据需要进行设定。
进一步,基于主节点对应的共识落后信息,从节点可以确定对预设等待时长按照第一预设衰减方式进行衰减得到的目标等待时长。其中,第一预设衰减方式用于指示将预设等待时长减去第一目标数值,第一目标数值基于共识落后信息进行确定。在一个具体的实施例中,从节点可以在共识过程中的提案阶段,按照第一预设衰减方式对预设等待时长进行衰减得到目标等待时长。在其他实施例中,各个从节点可以预先确定各种可能的共识落后信息,然后基于各种可能的共识落后信息,按照第一预设衰减方式对预设等待时长进行衰减得到对应的目标等待时长并进行存储,从而在共识过程中的提案阶段,可以直接查询得到目标等待时长。
上述实施例中,从节点通过获取到第一共识高度和第二共识高度之间的差异值,基于差异值确定主节点对应的共识落后信息,基于主节点对应的共识落后信息,确定对预设等待时长按照第一预设衰减方式进行衰减得到的目标等待时长,可以快速确定出目标等待时长,从而在提高共识性能的同时,还可以提高共识效率。
在一个实施例中,基于主节点对应的共识落后信息,确定对预设等待时长按照第一预设衰减方式进行衰减得到的目标等待时长,包括:在共识落后信息所对应的数值小于或者等于预设等待时长的情况下,将预设等待时长减去共识落后信息所对应的数值得到目标等待时长;在共识落后信息所对应的数值大于预设等待时长的情况下,将预设等待时长设为预设数值,预设数值是通过将预设等待时长减去与预设等待时长相匹配的数值得到的。
本实施例中,共识落后信息是基于第一共识高度和第二共识高度之间的差异值得到的数值,从节点可以在共识过程中的提案阶段,按照第一预设衰减方式对预设等待时长进行衰减得到目标等待时长,即在提案阶段,从节点可以将预设等待时长减去第一目标数值得到目标等待时长。
具体地,在共识落后信息所对应的数值小于或者等于预设等待时长的情况下,从节点可以将预设等待时长减去共识落后信息所对应的数值得到目标等待时长,举例说明,假设预设等待时长为T1,共识落后信息为T2,则目标等待时长为T1-T2。在共识落后信息所对应的数值大于预设等待时长的情况下,如果用预设等待时长减去共识落后信息所对应的数值,得到的值为负数,显然不符合实际情况,此时,计算机设备可以直接将预设等待时长设为预设数值,该预设数值是通过将预设等待时长减去与预设等待时长相匹配的数值得到的,例如,与预设等待时长相匹配的数值可以是与预设等待时长一致的数值,那么得到的预设数值为0,在这种情况下,从节点可以无需进行超时等待,直接按照预设方式进行投票并在区块链中进行广播,以触发区块链切换至下一个共识轮次。当然,在其他实施例中,与预设等待时长相匹配的数值还可以是与预设等待时长非常接近的一个数值,得到的预设数值可以是一个非常小的数值,从而可以预留一定的缓存时间,保证共识的顺利进行。
上述实施例中,在共识落后信息所对应的数值小于或者等于预设等待时长的情况下,将预设等待时长减去共识落后信息所对应的数值得到目标等待时长,在共识落后信息所对应的数值大于预设等待时长的情况下,将预设等待时长设为预设数值,由于在不同的情况下预设等待时长按照不同的方式得到,避免得到无法进行计时的目标等待时长,在提高共识效率的同时可以保证计算出来的目标等待时长更好地适应于共识过程。
在一个实施例中,上述共识处理方法还包括:确定多个参考共识落后信息;分别将预设等待时长减去各个参考共识落后信息所对应的数值,以得到各个参考共识落后信息各自对应的候选等待时长;建立各个参考共识落后信息和各自对应的候选等待时长之间的对应关系;基于主节点对应的共识落后信息,确定对预设等待时长按照第一预设衰减方式进行衰减得到的目标等待时长,包括:从多个参考共识落后信息中确定与主节点对应的共识落后信息匹配的目标参考共识落后信息,将目标参考共识落后信息对应的候选等待时长确定为目标等待时长。
其中,参考共识落后信息指的是用于作为参考来确定目标等待时长的信息。参考共识落后信息可以是对可能的共识落后信息进行划分得到的数值区间,或者是基于可能的共识落后信息确定的具体数值。这里,可能的共识落后信息可以是基于第一共识高度和第二共识高度之间可能的差异值进行确定。
本实施例中,从节点可以预先确定可能的共识落后信息,然后基于可能的共识落后信息,按照第一预设衰减方式对预设等待时长进行衰减得到对应的目标等待时长并进行存储,从而在共识过程中的提案阶段,可以直接查询得到目标等待时长。具体地,从节点在确定了多个参考共识落后信息后,可以分别将预设等待时长减去各个参考共识落后信息所对应的数值,以得到各个参考共识落后信息各自对应的候选等待时长。其中,当用预设等待时长减去某个参考共识落后信息所得到的数值大于或者等于零时,将得到的数值确定为该参考共识落后信息对应的候选等待时长,而当用预设等待时长减去某个参考共识落后信息所得到的数值为小于零时,可以将该参考共识落后信息对应的候选等待时长设为预设数值,预设数值例如可以是零。
进一步,从节点可以建立各个参考共识落后信息和各自对应的候选等待时长之间的对应关系并进行存储,进而在确定目标等待时长时,从节点可以查询该对应关系,从多个参考共识落后信息中确定与共识落后信息匹配的参考共识落后信息,将其确定为目标参考共识落后信息,进而获取目标参考共识落后信息对应的候选等待时长作为目标等待时长。举例说明,假设参考共识落后信息为具体的数值,包括X1、X2、X3、X4,在确定了各个参考共识落后信息各自对应的候选等待时长后,建立这些参考共识落后信息和各自对应的候选等待时长之间的对应关系,假设为X1-T1、X2-T2、X3-T3、X4-T4,那么从节点在确定目标等待时长时,可以将主节点对应的共识落后信息所对应的数值与各个参考共识落后信息进行匹配,假设差值最小的参考共识落后信息为X1,则将T1确定为目标等待时长。
上述实施例中,通过预先建立各个参考共识落后信息和各自对应的候选等待时长之间的对应关系,可以通过查询与共识落后信息匹配的目标参考共识落后信息来确定目标等待时长,避免对目标等待时长进行计算,进一步提高了共识效率。
在一个实施例中,确定多个参考共识落后信息,包括:将共识落后信息对应的数值分布范围划分为多个数值区间,将每一个数值区间作为一个参考共识落后信息;从多个参考共识落后信息中,确定与主节点对应的共识落后信息匹配的目标参考共识落后信息,将目标参考共识落后信息对应的候选等待时长确定为目标等待时长,包括:从多个数值区间中确定主节点对应的共识落后信息所属的目标区间,将目标区间对应的候选等待时长确定为目标等待时长。
具体地,从节点可以首先确定共识落后信息对应的数值分布范围,将该数值分布范围划分为多个数值区间,每一个数值区间即为一个参考共识落后信息,在保证参考共识落后信息所表征的共识落后程度与候选等待时长成负相关关系的前提下,确定各个数值区间各自所对应的数值,各个数值区间各自所对应的数值分别用于代表各个数值区间,例如,从节点可以将数值区间的中位数值确定为数值区间所对应的数值。进一步,从节点分别将预设等待时长减去各个数值区间各自所对应的数值,以得到各个数值区间各自对应的候选等待时长,从而在确定目标等待时长时,可以从多个数值区间中确定主节点对应的共识落后信息所属的数值区间,将主节点对应的共识落后信息所属的数值区间确定为目标区间,进而获取将目标区间对应的候选等待时长确定为目标等待时长。
举例说明,假设预设等待时长为30秒,共识落后信息对应的数值分布范围为大于零的正数区间,将该数值分布范围(单位为秒)划分为(0,10]、(10,20]、(20,30]以及大于30四个数值区间,这四个数值区间分别对应的数值为5、15、25以及X(X为大于30的任意数值),那么得到的候选等待时长分别为25秒、15秒、5秒、0秒,假设主节点对应的共识落后信息为12,则可以确定目标等待时长为15秒。
上述实施例中,通过将共识落后信息对应的数值分布范围划分为多个数值区间,将每一个数值区间作为一个参考共识落后信息,从而可以通过主节点对应的共识落后信息所属的数值区间即可以确定目标等待时长,提高了共识效率。
在一个实施例中,基于第一共识高度和第二共识高度,确定主节点对应的共识落后信息,包括:计算第二共识高度和第一共识高度的比值,基于比值确定主节点对应的共识落后信息;基于主节点对应的共识落后信息,确定对预设等待时长进行衰减得到的目标等待时长,包括:基于主节点对应的共识落后信息,确定对预设等待时长按照第二预设衰减方式进行衰减得到的目标等待时长。
具体地,从节点可以计算第二共识高度和第一共识高度的比值,进而可以基于计算得到的比值确定主节点对应的共识落后信息。在一个具体的实施例中,从节点可以将计算得到的比值直接作为主节点对应的共识落后信息,例如,假设第一共识高度为Bh,第二共识高度为Ph,则共识落后信息为Ph/Bh。在其他实施例中,从节点可以将计算得到的比值除以一个预设的高度差系数得到共识落后信息,例如,假设第一共识高度为Bh,第二共识高度为Ph,则共识落后信息为(Ph/Bh)/y,其中y为预设的常量,可以根据需要进行设定。
进一步,基于主节点对应的共识落后信息,从节点可以确定对预设等待时长按照第二预设衰减方式进行衰减得到的目标等待时长。其中,第二预设衰减方式用于指示将预设等待时长乘以第二目标数值,第二目标数值基于共识落后信息进行确定。在一个具体的实施例中,从节点可以在共识过程中的提案阶段,按照第二预设衰减方式对预设等待时长进行衰减得到目标等待时长。在其他实施例中,各个从节点可以预先确定各种可能的共识落后信息,然后基于各种可能的共识落后信息,按照第二预设衰减方式对预设等待时长进行衰减得到对应的目标等待时长并进行存储,从而在共识过程中的提案阶段,可以直接查询得到目标等待时长。
上述实施例中,从节点通过计算第一共识高度和第二共识高度之间的比值,基于计算得到的比值确定主节点对应的共识落后信息,基于主节点对应的共识落后信息,确定对预设等待时长按照第二预设衰减方式进行衰减得到的目标等待时长,可以快速确定出目标等待时长,从而在提高共识性能的同时,还可以提高共识效率。
在一个实施例中,基于主节点对应的共识落后信息,确定对预设等待时长按照第二预设衰减方式进行衰减得到的目标等待时长,包括:将预设等待时长乘以共识落后信息所对应的数值,得到目标等待时长。
本实施例中,共识落后信息是基于第二共识高度和第一共识高度之间的比值得到的数值,从节点可以在共识过程中的提案阶段,按照第二预设衰减方式对预设等待时长进行衰减得到目标等待时长,即在提案阶段,从节点可以将预设等待时长乘以共识落后信息所对应的数值,得到目标等待时长。举例说明,假设预设等待时长为T,主节点对应的共识落后信息所对应的数值为X,这目标等待时长为T*X。
上述实施例中,通过将预设等待时长乘以共识落后信息所对应的数值,得到目标等待时长,可以快速确定目标等待时长,提高共识效率。
在一个实施例中,上述共识处理方法还包括:确定多个参考共识落后信息;分别将预设等待时长乘以各个参考共识落后信息所对应的数值,得到各个参考共识落后信息各自对应的候选等待时长;建立各个参考共识落后信息和各自对应的候选等待时长之间的对应关系;基于主节点对应的共识落后信息,确定对预设等待时长按照第二预设衰减方式进行衰减得到的目标等待时长,包括:从多个参考共识落后信息中确定与共识落后信息匹配的目标参考共识落后信息,将目标参考共识落后信息对应的候选等待时长确定为目标等待时长。
其中,参考共识落后信息指的是用于作为参考来确定目标等待时长的信息。参考共识落后信息可以是对可能的共识落后信息进行划分得到的数值区间,或者是基于可能的共识落后信息确定的具体数值。这里,可能的共识落后信息可以是基于计算得到的第二共识高度和第一共识高度之间可能的比值进行确定。
本实施例中,从节点可以预先确定可能的共识落后信息,然后基于可能的共识落后信息,按照第二预设衰减方式对预设等待时长进行衰减得到对应的目标等待时长并进行存储,从而在共识过程中的提案阶段,可以直接查询得到目标等待时长。具体地,从节点在确定了多个参考共识落后信息后,可以分别将预设等待时长乘以各个参考共识落后信息所对应的数值,得到各个参考共识落后信息各自对应的候选等待时长。进一步,从节点可以建立各个参考共识落后信息和各自对应的候选等待时长之间的对应关系并进行存储,进而在确定目标等待时长时,从节点可以查询该对应关系,从多个参考共识落后信息中确定与共识落后信息匹配的参考共识落后信息,将其确定为目标参考共识落后信息,进而获取目标参考共识落后信息对应的候选等待时长作为目标等待时长。
在一个实施例中,确定多个参考共识落后信息,包括:将共识落后信息对应的数值分布范围划分为多个数值区间,将每一个数值区间作为一个参考共识落后信息;从多个参考共识落后信息中,确定与主节点对应的共识落后信息匹配的目标参考共识落后信息,将目标参考共识落后信息对应的候选等待时长确定为目标等待时长,包括:从多个数值区间中确定主节点对应的共识落后信息所属的目标区间,将目标区间对应的候选等待时长确定为目标等待时长。
具体地,从节点可以首先确定共识落后信息对应的数值分布范围,将该数值分布范围划分为多个数值区间,每一个数值区间即为一个参考共识落后信息,在保证参考共识落后信息所表征的共识落后程度与候选等待时长成负相关关系的前提下,确定各个数值区间各自所对应的数值,各个数值区间各自所对应的数值分别用于代表各个数值区间,例如,从节点可以将数值区间的中位数值确定为数值区间所对应的数值。进一步,从节点分别将预设等待时长乘以各个数值区间各自所对应的数值,得到各个数值区间各自对应的候选等待时长,从而在确定目标等待时长时,可以从多个数值区间中确定主节点对应的共识落后信息所属的数值区间,将主节点对应的共识落后信息所属的数值区间确定为目标区间,进而获取将目标区间对应的候选等待时长确定为目标等待时长。
上述实施例中,通过预先建立各个参考共识落后信息和各自对应的候选等待时长之间的对应关系,可以通过查询与共识落后信息匹配的目标参考共识落后信息来确定目标等待时长,避免对目标等待时长进行计算,进一步提高了共识效率。
在一个实施例中,上述共识处理方法还包括:当第二共识高度大于第一共识高度时,向主节点发送区块获取请求;区块获取请求携带第一共识高度;接收主节点根据第一共识高度返回的差异区块;对差异区块进行验证,在验证通过后,将差异区块写入从节点所存储的区块链中,并更新第一共识高度。
其中,差异区块指的是主节点的区块链中存在而从节点当前的区块链中并不存在的区块。本实施例中,当第二共识高度大于第一共识高度时,说明整个区块链系统已经达到了更高高度的共识,那么从节点就不需要等待提案信息进行共识了,直接同步区间即可。具体地,从节点可以向主节点发送区块获取请求,在区块获取请求中携带自身的第一共识高度,从而主节点在接收到从节点的区块获取请求后,可以基于第一共识高度确定与从节点之间的差异区块,将差异区块返回至从节点,从节点在接收到差异区块后,可以对差异区块进行验证,并在验证通过后,将差异区块写入从节点所存储的区块链中,以实现区块同步,每写入一个区块,从节点可以更新自身的第一共识高度,并从区块链系统中的其他节点广播更新后的第一共识高度,以使得其他各个节点可以及时获取到该从节点的状态。
可以理解的是,在其他实施例中,从节点还可以从其他任意一个正常的从节点获取差异区块,以实现区块同步。
上述实施例中,当第二共识高度大于第一共识高度时,从节点从主节点进行区块同步,并对自身的第一共识高度进行更新,以保证后续共识过程中可以根据更新后的第一共识高度来确定目标等待时长。
在一个实施例中,上述共识处理方法还包括:当第二共识高度等于第一共识高度时,将预设等待时长确定为目标等待时长;在开启针对当前共识轮次的投票等待计时的情况下,当计时时长达到目标等待时长且未接收到主节点广播的提案信息时,按照预设方式发起投票并在区块链系统中进行广播,以触发区块链系统切换至下一个共识轮次。
具体地,在当第二共识高度等于第一共识高度时,说明主节点此时的状态是正常的,那么从节点可以将预设等待时长确定为目标等待时长,以按照正常情况下的共识过程中的超时等待时长去等待主节点生成提案信息,基于此,在提案阶段,从节点开启针对共识轮次的投票等待计时,当计时时长达到预设等待时长且未接收到主节点广播的提案信息时,为了保证共识能够继续进行且尽快进入下一轮共识,从节点可以按照预设方式发起投票并在区块链系统中进行广播,以触发区块链系统重新选取主节点,开始下一个共识轮次。
在一个实施例中,从节点按照预设方式发起投票可以是对空提案进行投票,从而在预投票阶段,当从节点接收到第一数量的节点对空提案进行的投票后,进入到预提交,对该空提案进行第二次投票,最终在提交阶段,对该空提案达成共识,然后切换至下一个共识轮次。
在其他实施例中,从节点按照预设方式发起投票可以是对预设内容的提案进行投票,区块链系统中各个节点之间可以预先约定一个预设内容的提案,当接收到的提案信息是对该预设内容的提案时,即时最后能够达成共识,也不会将其写入区块链中,直接触发切换至下一个共识轮次。
上述实施例中,当当第二共识高度等于第一共识高度时,将预设等待时长确定为目标等待时长,从而从节点可以按照正常情况下的共识过程中的超时等待时长去等待主节点生成提案信息,从而保证共识过程的顺利进行。
在一个实施例中,主节点通过以下方式进行确定:获取区块链中的目标共识轮次和目标共识高度,基于目标共识轮次和目标共识高度,确定节点选取参考数值;对目标列表的节点标识进行统计,得到统计数值;基于节点选取参考数值对统计数值进行取模运算,得到目标数值,基于目标数值从目标列表中确定目标节点标识,将目标节点标识所对应的节点确定为主节点。
其中,区块链系统的各个节点对应的节点标识保存在目标列表中,并且各个节点标识都有各自对应的索引序号,根据索引序号可以从目标列表中确定对应的节点标识。例如,假设各个节点标识在目标列表中的索引序号为3,则可以根据3查找到该节点标识。目标共识轮次指的是区块链系统中已经完成的共识轮次的数量。目标共识高度指的是区块链系统中已经达成共识的区块高度。
在获取到目标共识轮次和目标共识高度后,可以按照预设方式对目标共识轮次和目标共识高度进行计算得到一个节点选取参考数值。其中,预设方式可以根据需要进行确定,例如,可以将目标共识轮次和目标共识高度进行相乘得到节点选取参考数值。进一步,对目标列表的节点标识的数量进行统计,得到统计数值。基于节点选取参考数值对统计数值进行取模运算,得到目标数值,该过程用公式表示如下:
p=f(h,r)Modv
其中,p为目标数值,h为目标共识高度,r为目标共识轮次,f是关于h和r的函数,可以自定义,v为统计数值。在计算得到目标数值后,可以将目标数值作为索引从目标列表中确定目标节点标识,将目标节点标识所对应的节点确定为主节点。举例说明,假设目标共识轮次为10,目标共识高度为8,对目标列表的节点标识进行统计得到的统计数值为6,则取模运算后得到的目标数值为2,从而可以从目标列表中确定索引序号为2的节点标识作为目标节点标识。
上述实施例中,通过获取区块链中的目标共识轮次和目标共识高度,基于目标共识轮次和目标共识高度,确定节点选取参考数值,对目标列表的节点标识进行统计,得到统计数值,进而可以通过取模运算来确定目标节点标识,从而可以确定主节点选取过程中随机性和公平性。
在一个具体的实施例中,本申请还提供一种应用场景,在该应用场景中,主节点的提案信息是基于网络交易数据生成的,上述共识处理方法用于对主节点接收到的网络交易数据进行共识。如前文,相关技术中是通过超时机制使正常节点投空票,换一个正常的节点来生成提案信息,这样可保证在主节点是正常节点的时候可以正常共识,轮到故障节点的时候超时等待。本申请的共识处理方法在该应用场景中的应用具体如下:
区块链系统中的各个节点可以互相广播自己的状态,并且保存其他节点的状态,从而能够知道其他节点当前的共识高度。举例说明,参考图6,节点1、节点2和节点3为正常节点,节点4因为宕机或者其他原因成为了一个故障节点,他在产生故障前的共识高度是10,那么节点1、节点2、节点3保存的节点4状态就是高度10,三个正常节点互相之间保存的共识状态高度是100。
由于节点之间互相保存了共识高度,从而在进行共识的过程中,区块链系统中的任意一个从节点可以获取自身的第一共识高度以及主节点当前的第二共识高度,当第二共识高度大于第一共识高度时,说明整个区块链系统已经达到了更高高度的共识,该任意一个从节点不需要等待提案信息进行共识了,直接从其他节点同步区块即可;当第二共识高度等于第一共识高度时,说明主节点当前处于正常状态,可以按照正常状态下的预设等待时长进行超时等待,即在开启针对当前共识轮次的投票等待计时的情况下,当计时时长达到预设等待时长且未接收到主节点广播的提案信息时,按照预设方式发起投票并在区块链系统中进行广播,以触发区块链系统切换至下一个共识轮次。
在主节点的第二共识高度小于从节点的第一共识高度的情况下,本申请实施例中将超时等待时间进行动态调整,从节点等待主节点生成提案信息的超时等待时间由正常状态下的预设等待时长调整为目标等待时长timeout,具体参见以下公式:
timeout(单位秒/s)=X-((Bh-Ph)/y)
其中Bh表示从节点当前的第二共识高度,Ph表示主节点当前的第一共识高度,X为一个常量,表示预设等待时长,即正常情况下从节点等待主节点生成提案信息的时间,y是一个常量,表示一个高度差系数。如果计算出timeout大于或者等于0,则将计算出的数值作为目标等待时长,如果计算出的timeout低于0,则将timeout设置为0秒。
从上面的超时等待公式可以看出,当某个节点落后了其他节点多个高度,那么当它成为主节点的时候,其他节点等待它生成提案信息的超时等待时间就很短,因为当它落后了太多的共识高度,它需要从其他节点同步区块,只有同步完区块它的高度和其他节点一样的时候,他才能生成提案信息。因此当某个节点成为主节点的时候,他的共识高度越是落后,它能够生成提案信息的可能性就越低,那么等待它生成提案信息的时间就越短。
举例说明,假设区块链系统的节点包括图6中的节点1、节点2、节点3和节点4,预设等待时长为X,则共识处理方法具体如下:
1、正常节点成为主节点(为了方便描述,下文用节点1是主节点进行阐述):
因为节点1是正常节点,因此它能够基于网络交易数据生成正常的提案信息,然后广播提案信息给其他节点。参考图7,节点2和节点3是正常节点,他们根据自己保存的节点1的共识高度和自己当前的共识高度进行比较,与节点1的共识高度一致,则预设等待时长X即为目标等待时长,因此节点2和节点3等待节点1生成提案信息的时间为X。在提案阶段,节点2和节点3开启针对当前共识轮次的投票等待计时,在X时间内,节点2和节点3能够收到节点1生成的提案信息;然后在预投票阶段,节点1进行针对提案信息的第一次投票,并向节点2和节点3进行广播,节点2在接收到提案信息之后进行针对提案信息的第一次投票,并向节点1和节点3进行广播,节点3在接收到提案信息之后进行针对提案信息的第一次投票,并向节点1和节点2进行广播;在预提交阶段,节点1在接收到节点2-3广播的针对提案信息的第一次投票时,进行针对提案信息的第二次投票,并向节点2-3进行广播,节点2在接收到节点1、3广播的针对提案信息的第一次投票时,进行针对提案信息的第二次投票,并向节点1、3进行广播,节点3在接收到节点1、2广播的针对提案信息的第一次投票时,进行针对提案信息的第二次投票,并向节点1、2进行广播;在提交阶段,节点1在接收到节点2-3广播的针对提案信息的第二次投票时,节点1确定达成的共识是该提案信息,节点2在接收到节点1、3广播的针对提案信息的第二次投票时,节点2确定达成的共识是该提案信息,节点3在接收到节点1、2广播的针对提案信息的第二次投票时,节点3确定达成的共识是该提案信息。
2、故障节点(即节点4)成为主节点:
因为节点4是故障节点,因此它不可能产生提案信息,参考图8,正常节点1、节点2、节点3会根据节点4的状态计算目标等待时长进行超时等待,如果节点4的故障时间较长,它落后的共识高度比较多,正常节点等待的超时时间就比较短。例如图6中正常节点的当前共识高度是100,故障节点4的高度是10,因此节点1、节点2、节点3的目标等待时长为(X-90/y)秒。因此在等待(X–90/y)秒之后,节点1、节点2、节点3就会超时投空票,最终达成一个空提案的共识,然后节点1、节点2、节点3中的一个正常节点成为主节点又可以正常生成提案信息进行共识。
3、共识继续推进,共识可能的情况:
1)随着共识的继续推进,节点1、节点2、节点3的高度会继续增加,而节点4是故障节点它的共识高度不会增加,因此当节点4成为主节点的时候,节点1、节点2、节点3等待节点4生成提案信息的目标等待时长就会越来越短。甚至当节点4落后他们某个共识高度的时候,节点4成为主节点的时候,节点1、节点2、节点3等待节点4生成提案信息的目标等待时长就成为了0,这个时候对于共识来说,节点4是故障节点的存在基本上不影响区块链系统的共识性能了。
2)故障节点4在某个时间重启恢复了,节点4恢复之后,和所有的区块链系统一样,它开始从其他节点同步区块,于是它的共识高度也是慢慢的追上正常节点。随着它逐渐追上正常节点的共识高度,当它成为主节点的时候,节点1、节点2、节点3判断它能够生成提案信息的可能性越来越大,因此等待它生成提案信息的超时等待时间就越大。当节点4追上正常节点之后,它成为主节点能够产生提案信息了,共识的性能也恢复了。
通过上文的公式我们知道,从节点等待主节点生成提案信息的目标等待时长是一个变化的值,从0秒到X秒之间的一个滑动的值,如图9所示,当节点状态落后很多的时候,它成为主节点的时候,其他节点等待它生成提案信息的目标等待时长就很短,后面它逐渐追上网络中的共识状态时,他就恢复成为正常节点的可能性就越大,因此轮到它成为主节点的时候,其他节点等待它生成提案信息的目标等待时长就越长。最后它恢复成为正常节点能够生成提案信息了,区块链性能也恢复正常了。
应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的共识处理方法的共识处理系统。该共识处理系统所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个共识处理系统实施例中的具体限定可以参见上文中对于共识处理方法的限定,在此不再赘述。
在一个实施例中,如图10所示,提供了一种区块链系统1000,该区块链系统1000包括多个节点,例如图10中的节点1002、节点1004、节点1006以及节点1008,可以理解的是,区块链系统1000还可以包括其他节点,本申请在此不做限制。具体地,该区块链系统1000中的任意一个节点用于:
在处于从节点的状态时,获取当前的第一共识高度,并获取主节点当前的第二共识高度;
当第二共识高度小于第一共识高度时,基于第一共识高度和第二共识高度,确定主节点对应的共识落后信息;共识落后信息用于表征主节点相对于从节点的共识落后程度;
基于主节点对应的共识落后信息,确定对预设等待时长进行衰减得到的目标等待时长;
在开启针对当前共识轮次的投票等待计时的情况下,当计时时长达到目标等待时长且未接收到主节点广播的提案信息时,按照预设方式发起投票并在区块链系统中进行广播,以触发区块链系统切换至下一个共识轮次。
上述区块链系统,节点在处于从节点的状态时,可以获取从节点当前的第一共识高度,并获取主节点当前的第二共识高度,当第二共识高度小于第一共识高度时,基于第一共识高度和第二共识高度,确定主节点对应的共识落后信息,基于主节点对应的共识落后信息,确定对预设等待时长进行衰减得到的目标等待时长,在开启针对当前共识轮次的投票等待计时的情况下,当计时时长达到目标等待时长且未接收到主节点广播的提案信息时,按照预设方式发起投票并在区块链系统中进行广播,以触发区块链系统切换至下一个共识轮次,由于可以基于主节点对应的共识落后信息,动态确定目标等待时长,并且目标等待时长是对预设等待时长进行衰减得到的,可以在主节点故障的情况下,缩短共识过程中的超时等待时间,从而大幅度提升共识性能。
可以理解的是,上述区块链系统1000中的任意一个节点,在处于从节点的状态时,可以执行上文中共识处理方法所对应的任意一个实施例中的步骤。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的共识处理方法的共识处理装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个共识处理装置实施例中的具体限定可以参见上文中对于共识处理方法的限定,在此不再赘述。
在一个实施例中,如图11所示,提供了一种共识处理装置1100,包括:
共识高度获取模块1102,用于获取从节点当前的第一共识高度,并获取主节点当前的第二共识高度;
共识落后信息确定模块1104,用于当第二共识高度小于第一共识高度时,基于第一共识高度和第二共识高度,确定主节点对应的共识落后信息;共识落后信息用于表征主节点相对于从节点的共识落后程度;
等待时长确定模块1106,用于基于主节点对应的共识落后信息,确定对预设等待时长进行衰减得到的目标等待时长;
共识轮次切换模块1108,用于在开启针对当前共识轮次的投票等待计时的情况下,当计时时长达到目标等待时长且未接收到主节点广播的提案信息时,按照预设方式发起投票并在区块链系统中进行广播,以触发区块链系统切换至下一个共识轮次。
上述共识处理装置,通过获取从节点当前的第一共识高度,并获取主节点当前的第二共识高度,当第二共识高度小于第一共识高度时,基于第一共识高度和第二共识高度,确定主节点对应的共识落后信息,基于主节点对应的共识落后信息,确定对预设等待时长进行衰减得到的目标等待时长,在开启针对当前共识轮次的投票等待计时的情况下,当计时时长达到目标等待时长且未接收到主节点广播的提案信息时,按照预设方式发起投票并在区块链系统中进行广播,以触发区块链系统切换至下一个共识轮次,由于可以基于主节点对应的共识落后信息,动态确定目标等待时长,并且目标等待时长是对预设等待时长进行衰减得到的,可以在主节点故障的情况下,缩短共识过程中的超时等待时间,从而大幅度提升共识性能。
在一个实施例中,共识落后信息确定模块还用于:获取第一共识高度和第二共识高度之间的差异值,基于差异值确定主节点对应的共识落后信息;等待时长确定模块,还用于:基于主节点对应的共识落后信息,确定对预设等待时长按照第一预设衰减方式进行衰减得到的目标等待时长;第一预设衰减方式用于指示将预设等待时长减去第一目标数值,第一目标数值基于共识落后信息进行确定。
在一个实施例中,等待时长确定模块,还用于:在共识落后信息所对应的数值小于或者等于预设等待时长的情况下,将预设等待时长减去共识落后信息所对应的数值得到目标等待时长;在共识落后信息所对应的数值大于预设等待时长的情况下,将预设等待时长设为预设数值,预设数值是通过将预设等待时长减去与预设等待时长相匹配的数值得到的。
在一个实施例中,上述装置还包括:第一对应关系建立模块,用于确定多个参考共识落后信息;分别将预设等待时长减去各个参考共识落后信息所对应的数值,以得到各个参考共识落后信息各自对应的候选等待时长;建立各个参考共识落后信息和各自对应的候选等待时长之间的对应关系;等待时长确定模块,还用于从多个参考共识落后信息中,确定与主节点对应的共识落后信息匹配的目标参考共识落后信息,将目标参考共识落后信息对应的候选等待时长确定为目标等待时长。
在一个实施例中,对应关系建立模块,还用于将共识落后信息对应的数值分布范围划分为多个数值区间,将每一个数值区间作为一个参考共识落后信息;等待时长确定模块,还用于从多个数值区间中确定主节点对应的共识落后信息所属的目标区间,将目标区间对应的候选等待时长确定为目标等待时长。
在一个实施例中,共识落后信息确定模块,还用于:计算第二共识高度和第一共识高度的比值,基于比值确定主节点对应的共识落后信息;等待时长确定模块,用于基于主节点对应的共识落后信息,确定对预设等待时长按照第二预设衰减方式进行衰减得到的目标等待时长;第二预设衰减方式用于指示将预设等待时长乘以第二目标数值,第二目标数值基于共识落后信息进行确定。
在一个实施例中,等待时长确定模块,还用于将预设等待时长乘以共识落后信息所对应的数值,得到目标等待时长。
在一个实施例中,上述装置还包括:第一对应关系建立模块,确定多个参考共识落后信息;分别将预设等待时长乘以各个参考共识落后信息所对应的数值,得到各个参考共识落后信息各自对应的候选等待时长;建立各个参考共识落后信息和各自对应的候选等待时长之间的对应关系;等待时长确定模块,用于从多个参考共识落后信息中确定与共识落后信息匹配的目标参考共识落后信息,将目标参考共识落后信息对应的候选等待时长确定为目标等待时长。
在一个实施例中,装置还包括:共识高度更新模块,用于当第二共识高度大于第一共识高度时,向主节点发送区块获取请求;区块获取请求携带第一共识高度;接收主节点根据第一共识高度返回的差异区块;对差异区块进行验证,在验证通过后,将差异区块写入从节点所存储的区块链中,并更新第一共识高度。
在一个实施例中,装置还用于当第二共识高度等于第一共识高度时,将预设等待时长确定为目标等待时长;在开启针对当前共识轮次的投票等待计时的情况下,当计时时长达到目标等待时长且未接收到主节点广播的提案信息时,按照预设方式发起投票并在区块链系统中进行广播,以触发区块链系统切换至下一个共识轮次。
在一个实施例中,区块链系统的各个节点对应的节点标识保存在目标列表中;装置还包括:主节点确定模块,用于获取区块链中的目标共识轮次和目标共识高度,基于目标共识轮次和目标共识高度,确定节点选取参考数值;对目标列表的节点标识进行统计,得到统计数值;基于节点选取参考数值对统计数值进行取模运算,得到目标数值,基于目标数值从目标列表中确定目标节点标识,将目标节点标识所对应的节点确定为主节点。
上述共识处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是区块链系统中的任意一个节点,其内部结构图可以如图12所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储区块数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种共识处理方法。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是区块链系统中的任意一个节点,其内部结构图可以如图13所示。该计算机设备包括处理器、存储器、输入/输出接口、通信接口、显示单元和输入装置。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口、显示单元和输入装置通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种共识处理方法。该计算机设备的显示单元用于形成视觉可见的画面,可以是显示屏、投影装置或虚拟现实成像装置,显示屏可以是液晶显示屏或电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图12和图13中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述共识处理方法的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述共识处理方法的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述共识处理方法的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。例如,本申请中涉及到的共识轮次、共识高度等都是在充分授权的情况下获取的。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (16)
1.一种共识处理方法,应用于区块链系统中的从节点,其特征在于,所述方法包括:
获取所述从节点当前的第一共识高度,并获取主节点当前的第二共识高度;
当所述第二共识高度小于所述第一共识高度时,基于所述第一共识高度和所述第二共识高度,确定所述主节点对应的共识落后信息;所述共识落后信息用于表征所述主节点相对于所述从节点的共识落后程度;
基于所述主节点对应的共识落后信息,确定对预设等待时长进行衰减得到的目标等待时长;
在开启针对当前共识轮次的投票等待计时的情况下,当计时时长达到所述目标等待时长且未接收到所述主节点广播的提案信息时,按照预设方式发起投票并在所述区块链系统中进行广播,以触发所述区块链系统切换至下一个共识轮次。
2.根据权利要求1所述的方法,其特征在于,所述基于所述第一共识高度和所述第二共识高度,确定所述主节点对应的共识落后信息,包括:
获取所述第一共识高度和所述第二共识高度之间的差异值,基于所述差异值确定所述主节点对应的共识落后信息;
所述基于所述主节点对应的共识落后信息,确定对预设等待时长进行衰减得到的目标等待时长,包括:
基于所述主节点对应的共识落后信息,确定对预设等待时长按照第一预设衰减方式进行衰减得到的目标等待时长;所述第一预设衰减方式用于指示将所述预设等待时长减去第一目标数值,所述第一目标数值基于所述共识落后信息进行确定。
3.根据权利要求2所述的方法,其特征在于,所述基于所述主节点对应的共识落后信息,确定对预设等待时长按照第一预设衰减方式进行衰减得到的目标等待时长,包括:
在所述共识落后信息所对应的数值小于或者等于所述预设等待时长的情况下,将所述预设等待时长减去所述共识落后信息所对应的数值得到目标等待时长;
在所述共识落后信息所对应的数值大于所述预设等待时长的情况下,将所述预设等待时长设为预设数值,所述预设数值是通过将所述预设等待时长减去与所述预设等待时长相匹配的数值得到的。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
确定多个参考共识落后信息;
分别将所述预设等待时长减去各个参考共识落后信息所对应的数值,以得到各个参考共识落后信息各自对应的候选等待时长;
建立各个参考共识落后信息和各自对应的候选等待时长之间的对应关系;
所述基于所述主节点对应的共识落后信息,确定对预设等待时长按照第一预设衰减方式进行衰减得到的目标等待时长,包括:
从所述多个参考共识落后信息中,确定与所述主节点对应的共识落后信息匹配的目标参考共识落后信息,将所述目标参考共识落后信息对应的候选等待时长确定为目标等待时长。
5.根据权利要求4所述的方法,其特征在于,所述确定多个参考共识落后信息,包括:
将共识落后信息对应的数值分布范围划分为多个数值区间,将每一个数值区间作为一个参考共识落后信息;
所述从所述多个参考共识落后信息中,确定与所述主节点对应的共识落后信息匹配的目标参考共识落后信息,将所述目标参考共识落后信息对应的候选等待时长确定为目标等待时长,包括:
从所述多个数值区间中确定所述主节点对应的共识落后信息所属的目标区间,将所述目标区间对应的候选等待时长确定为目标等待时长。
6.根据权利要求1所述的方法,其特征在于,所述基于所述第一共识高度和所述第二共识高度,确定所述主节点对应的共识落后信息,包括:
计算所述第二共识高度和所述第一共识高度的比值,基于所述比值确定所述主节点对应的共识落后信息;
所述基于所述主节点对应的共识落后信息,确定对预设等待时长进行衰减得到的目标等待时长,包括:
基于所述主节点对应的共识落后信息,确定对预设等待时长按照第二预设衰减方式进行衰减得到的目标等待时长;所述第二预设衰减方式用于指示将所述预设等待时长乘以第二目标数值,所述第二目标数值基于所述共识落后信息进行确定。
7.根据权利要求6所述的方法,其特征在于,所述基于所述主节点对应的共识落后信息,确定对预设等待时长按照第二预设衰减方式进行衰减得到的目标等待时长,包括:
将所述预设等待时长乘以所述共识落后信息所对应的数值,得到目标等待时长。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
确定多个参考共识落后信息;
分别将所述预设等待时长乘以各个参考共识落后信息所对应的数值,得到各个参考共识落后信息各自对应的候选等待时长;
建立各个参考共识落后信息和各自对应的候选等待时长之间的对应关系;
所述基于所述主节点对应的共识落后信息,确定对预设等待时长按照第二预设衰减方式进行衰减得到的目标等待时长,包括:
从所述多个参考共识落后信息中确定与所述共识落后信息匹配的目标参考共识落后信息,将所述目标参考共识落后信息对应的候选等待时长确定为目标等待时长。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述第二共识高度大于所述第一共识高度时,向所述主节点发送区块获取请求;所述区块获取请求携带所述第一共识高度;
接收所述主节点根据所述第一共识高度返回的差异区块;
对所述差异区块进行验证,在验证通过后,将所述差异区块写入从节点所存储的区块链中,并更新所述第一共识高度。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述第二共识高度等于所述第一共识高度时,将所述预设等待时长确定为目标等待时长;
在开启针对当前共识轮次的投票等待计时的情况下,当计时时长达到所述目标等待时长且未接收到所述主节点广播的提案信息时,按照预设方式发起投票并在所述区块链系统中进行广播,以触发所述区块链系统切换至下一个共识轮次。
11.根据权利要求1至10中任意一项所述的方法,其特征在于,所述区块链系统的各个节点对应的节点标识保存在目标列表中;所述主节点通过以下步骤进行确定:
获取所述区块链中的目标共识轮次和目标共识高度,基于所述目标共识轮次和目标共识高度,确定节点选取参考数值;
对所述目标列表的节点标识进行统计,得到统计数值;
基于所述节点选取参考数值对所述统计数值进行取模运算,得到目标数值,基于所述目标数值从所述目标列表中确定目标节点标识,将所述目标节点标识所对应的节点确定为主节点。
12.一种区块链系统,其特征在于,包括多个节点;所述节点用于:
在处于从节点的状态时,获取当前的第一共识高度,并获取主节点当前的第二共识高度;
当所述第二共识高度小于所述第一共识高度时,基于所述第一共识高度和所述第二共识高度,确定所述主节点对应的共识落后信息;所述共识落后信息用于表征所述主节点相对于所述从节点的共识落后程度;
基于所述主节点对应的共识落后信息,确定对预设等待时长进行衰减得到的目标等待时长;
在开启针对当前共识轮次的投票等待计时的情况下,当计时时长达到所述目标等待时长且未接收到所述主节点广播的提案信息时,按照预设方式发起投票并在区块链系统中进行广播,以触发所述区块链系统切换至下一个共识轮次。
13.一种共识处理装置,其特征在于,所述装置包括:
共识高度获取模块,用于获取从节点当前的第一共识高度,并获取主节点当前的第二共识高度;
共识落后信息确定模块,用于当所述第二共识高度小于所述第一共识高度时,基于所述第一共识高度和所述第二共识高度,确定所述主节点对应的共识落后信息;所述共识落后信息用于表征所述主节点相对于所述从节点的共识落后程度;
等待时长确定模块,用于基于所述主节点对应的共识落后信息,确定对预设等待时长进行衰减得到的目标等待时长;
共识轮次切换模块,用于在开启针对当前共识轮次的投票等待计时的情况下,当计时时长达到所述目标等待时长且未接收到所述主节点广播的提案信息时,按照预设方式发起投票并在所述区块链系统中进行广播,以触发所述区块链系统切换至下一个共识轮次。
14.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至11中任一项所述的方法的步骤。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述的方法的步骤。
16.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至11中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210810584.3A CN117424904A (zh) | 2022-07-11 | 2022-07-11 | 共识处理方法、装置、计算机设备和区块链系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210810584.3A CN117424904A (zh) | 2022-07-11 | 2022-07-11 | 共识处理方法、装置、计算机设备和区块链系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117424904A true CN117424904A (zh) | 2024-01-19 |
Family
ID=89521597
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210810584.3A Pending CN117424904A (zh) | 2022-07-11 | 2022-07-11 | 共识处理方法、装置、计算机设备和区块链系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117424904A (zh) |
-
2022
- 2022-07-11 CN CN202210810584.3A patent/CN117424904A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108717630B (zh) | 一种出块方法及其实现系统 | |
TWI690184B (zh) | 跨區塊鏈的認證方法及裝置、電子設備 | |
US11237896B2 (en) | Distributed system, message processing method, nodes, client, and storage medium | |
EP3635607B1 (en) | Computer-implemented system and method for managing transactions over a blockchain network | |
CN110163004B (zh) | 一种区块链生成的方法、相关设备及系统 | |
US20190354518A1 (en) | Chain mesh network for decentralized transaction systems | |
CN110009338B (zh) | 基于区块链的记账方法及装置、电子设备 | |
US20230315891A1 (en) | Transaction data processing method and apparatus, computer device and storage medium | |
CN110163755B (zh) | 基于区块链的数据压缩、查询方法及装置和电子设备 | |
WO2021023304A1 (zh) | 分叉处理方法以及区块链节点 | |
US11861612B2 (en) | Blockchain-based offline resource transfer method and apparatus | |
CN111698315B (zh) | 针对区块的数据处理方法、数据处理装置及计算机设备 | |
JP2023011695A (ja) | ブロックチェーンネットワークにおける整合性のある分散型メモリプールのための方法及びシステム | |
WO2020211498A1 (zh) | 区块链数据的分次获取方法和装置 | |
US20230275771A1 (en) | Pre-execution of block chain transaction in parallel during block consensus | |
CN113409145B (zh) | 一种跨区块链的交易同步方法和装置 | |
CN110570179B (zh) | 订单显示方法、装置、设备及存储介质 | |
CN110597922A (zh) | 数据处理方法、装置、终端及存储介质 | |
CN112017050B (zh) | 基于区块链的支持高并发场景的账户智能合约方法和系统 | |
CN113157450A (zh) | 在区块链系统中执行区块的方法及装置 | |
CN116896564A (zh) | 基于区块链网络的区块生成方法、装置和计算机设备 | |
CN108882230B (zh) | 通话记录管理方法、装置及系统 | |
CN117424904A (zh) | 共识处理方法、装置、计算机设备和区块链系统 | |
CN115879889A (zh) | 基于区块链的业务处理方法、装置和计算机设备 | |
CN117010889A (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 |