CN113395165A - 共识流程处理方法、装置、存储介质及计算机设备 - Google Patents
共识流程处理方法、装置、存储介质及计算机设备 Download PDFInfo
- Publication number
- CN113395165A CN113395165A CN202110594394.8A CN202110594394A CN113395165A CN 113395165 A CN113395165 A CN 113395165A CN 202110594394 A CN202110594394 A CN 202110594394A CN 113395165 A CN113395165 A CN 113395165A
- Authority
- CN
- China
- Prior art keywords
- stage
- consensus
- consensus process
- view
- target
- 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
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/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
-
- 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
- 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
- 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/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- 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/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Abstract
本申请实施例公开了一种共识流程处理方法、装置、存储介质及计算机设备。该方法包括:当检测到区块链网络触发了视图切换的切换条件时,获取当前节点所保存的共识状态数据以及当前视图的视图值,将共识状态数据和视图值所对应的视频切换请求进行广播,当接收到超过第一预设比例或第一预设数量的其他节点广播的针对视图值的视图切换请求时,对所接收到的所有视图切换请求中的共识状态数据进行统计处理,以确定共识流程执行的最新阶段,从共识流程执行的最新阶段继续执行共识流程。本申请实施例从最新阶段继续执行共识流程,无需触发新的共识流程,从而节约视图切换后的共识流程执行的时间,提高共识效率。
Description
技术领域
本申请涉及区块链技术领域,具体涉及一种共识流程处理方法、装置、存储介质及计算机设备。
背景技术
在区块链领域中,共识算法是区块链的关键部分,各节点通过共识达成一致,接收并认可一致的区块。即共识算法为不可靠的网络提供了可靠性。
目前区块链的共识算法包括PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错)算法,PBFT共识算法是一个三阶段串行执行的共识算法,是联盟币的共识算法的基础。在PBFT算法实现中,如果出块节点出故障,所有正常节点都会发起view change(视图切换)共识事件,如果view change达成共识,则会发生区块链的视图切换,即将view值加1,然后重新选出新的出块节点,发起三阶段节点共识。在PBFT中,可以通过view change来解决PBFT共识过程中所遇到的一切异常问题,例如共识超时、出块节点出现故障等异常。
因此每次出现异常时,都需要通过view change来重新触发新的共识流程,每次都需要重新执行新的三阶段的共识流程,因此耗费较长的时间,降低了共识效率。
发明内容
本申请实施例提供一种共识流程处理方法、装置、存储介质及计算机设备,可以提高共识效率。
本申请实施例提供了一种共识流程处理方法,包括:
当检测到区块链网络触发了视图切换的切换条件时,获取所述区块链网络中的当前节点在执行共识流程的过程中所保存的共识状态数据、以及所述当前节点中对应的当前视图的视图值;
根据所述共识状态数据和所述视图值向所述区块链网络中的其他节点广播视图切换请求;
当所述当前节点接收到超过第一预设比例或第一预设数量的其他节点广播的针对所述视图值的视图切换请求时,对所接收到的所有视图切换请求中的共识状态数据进行统计处理,以确定所述共识流程执行的最新阶段;
从所述共识流程执行的最新阶段继续执行所述共识流程。本申请实施例还提供一种共识流程处理装置,包括:
获取模块,用于当检测到区块链网络触发了视图切换的切换条件时,获取所述区块链网络中的当前节点在执行共识流程的过程中所保存的共识状态数据、以及所述当前节点中对应的当前视图的视图值;
广播模块,用于根据所述共识状态数据和所述视图值向所述区块链网络中的其他节点广播视图切换请求;
确定模块,用于当所述当前节点接收到超过第一预设比例或第一预设数量的其他节点广播的针对所述视图值的视图切换请求时,对所接收到的所有视图切换请求中的共识状态数据进行统计处理,以确定所述共识流程执行的最新阶段;
执行模块,用于从所述共识流程执行的最新阶段继续执行所述共识流程。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于处理器进行加载,以执行如上任一实施例所述的共识流程处理方法中的步骤。
本申请实施例还提供一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器通过调用所述存储器中存储的所述计算机程序,执行如上任一实施例所述的共识流程处理方法中的步骤。
本申请实施例提供的共识流程处理方法、装置、存储介质及计算机设备,通过在执行共识流程的过程中保存共识状态数据,当检测到区块链网络触发了视图切换的切换条件时,获取当前节点所保存的共识状态数据以及当前视图的视图值,将共识状态数据和视图值所对应的视频切换请求进行广播,当接收到超过第一预设比例或第一预设数量的其他节点广播的针对视图值的视图切换请求时,对所接收到的所有视图切换请求中的共识状态数据进行统计处理,以确定共识流程执行的最新阶段,从共识流程执行的最新阶段继续执行共识流程。本申请实施例可在进行视图切换后,根据共识状态数据确定共识流程执行的最新阶段,从最新阶段继续执行共识流程,无需触发新的共识流程,从而节约视图切换后的共识流程执行的时间,提高共识效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的共识流程处理装置的系统示意图。
图2为本申请实施例提供的共识流程处理方法的流程示意图。
图3为本申请实施例提供的共识流程处理方法的另一流程示意图。
图4为本申请实施例提供的现有技术中的视图切换的流程示意图。
图5为本申请实施例提供的共识流程处理方法的另一流程示意图。
图6为本申请实施例提供的共识流程处理方法的子流程示意图。
图7为本申请实施例提供的共识流程处理装置的结构示意图。
图8为本申请实施例提供的计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种共识流程处理方法、装置、计算机可读存储介质及计算机设备。具体地,本申请实施例的共识流程处理方法可以由计算机设备执行,其中,该计算机设备可以为终端或者服务器等设备。该终端可以为智能手机、平板电脑、笔记本电脑、触控屏幕、游戏机、个人计算机(PC,Personal Computer)等加入至区块链网络中并成为区块链网络中的节点的终端设备。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群,还可以是提供云服务、云数据库等基础云计算服务的云服务器;该服务器加入至区块链网络并成为区块链网络中的节点。
本申请实施例中的区块链是由节点参与的分布式数据库系统,或者,也可称之为一个基于P2P(点对点)网络的分布式公共账本,由于对区块链加入了可信时间戳,因此,区块链的特点是不可更改、不可伪造。区块链中包括一系列按照产生的先后时间顺序相互接续的区块,新区块一旦加入到区块链就不会再被移除。
区块链网络,指的是区块链的多个节点,以及多个节点之间相互连接的关系所形成的网络,该网络中的多个节点通过点对点(P2P,Peer To Peer)协议进行通信。
区块链网络的节点,指的是参与构建区块链网络的任意形式的计算机设备,如终端设备和服务器。任何计算机设备可以加入区块链网络而成为区块链网络中的节点。节点存储有相关区块的区块数据,区块数据可以包括区块头和区块体等数据。
主节点,指的是区块链网络中的当前可生成区块的节点,也可称为leader节点或者区块节点等。同时需要说明的是,区块链网络中同一时刻只有一个节点可以生成区块。从节点,指的是区块链网络中的当前不生成区块的节点。
区块链网络中的共识是通过节点的投票,在很短的时间内完成对交易的验证和确认;对一笔交易,如果利益不相干的若干个节点能够达成共识,就可以认为区块链网络对此也能够达成共识。
请参阅图1,图1是本申请实施例提供的共识流程处理装置的系统示意图。该系统中包括多个节点,多个节点之间相互连接,形成点对点网络,该网络也可称为区块链网络。在多个节点中,包括一个主节点11,该主节点属于区块链网络节点中的一个节点,主节点11在当前共识流程中作为出块节点,在区块链网络的共识流程中,可以通过当前区块链网络中的主节点11发起共识流程。将除主节点11之外的其他节点作为从节点12,除了主节点外,从节点12也可以发起共识流程。
本申请实施例中的共识流程处理装置和共识流程处理方法应用在区块链网络中的每个非异常的节点上。本实施例提供的共识流程处理装置和共识流程处理方法可以应用于PBFT(拜占庭容错技术)中,拜占庭容错技术是一类分布式计算领域的容错技术。拜占庭容错技术假设是对现实世界的模型化,由于硬件错误、网络拥塞或中断以及遭到恶意攻击等原因,计算机设备和网络可能出现不可预料的行为。拜占庭容错技术被设计用来处理这些异常行为,并满足所要解决的问题的规范要求。
下面将对本申请实施例中的一种共识流程处理方法、装置、计算机可读存储介质及计算机设备分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
下文的步骤中除了已经限定是主节点执行之外,其他步骤都可以在区块链网络中的每个非异常节点(包括主节点和从节点)上执行。本申请实施例中以在区块链网络中的其中一个节点中执行为例进行说明,将该节点作为当前节点。
请参阅图2,图2是本申请实施例提供的一种共识流程处理方法的流程示意图,该共识流程处理方法的流程可以如下所示。
101,当检测到区块链网络需对待共识区块的区块数据进行共识时,区块链网络的节点获取所建立的共识状态缓存。
其中,在区块链网络接收到客户端的共识请求时,确定检测待区块链网络需对待共识区块的区块数据进行共识。本申请实施例的客户端可以为与区块链网络中的节点通信连接的设备。用户可以通过客户端向区块链网络发送共识请求,区块链网络在接收到上述共识请求后,可以使主节点和从节点并行发起共识流程。其中,并行发起是指不同节点发起的共识流程独立运行,相互之间并不存在干扰。因此,在同一时间内同一个区块链网络内可能有多个并行的共识流程同时处理。
区块链网络接收到客户端的共识请求时,区块链网络的节点获取共识请求所对应的待共识区块的区块数据,以及获取所建立的共识状态缓存。其中,共识状态缓存用于保存待共识区块的区块数据,以及共识状态信息。共识状态信息指的是在目标阶段的每个阶段中接收的来自于其他节点的签名值所构成的签名集合,下文中将会详细描述。若区块链网络的节点中不存在共识状态缓存,则会新建一个共识状态缓存。
102,区块链网络的节点对区块数据执行共识流程,该共识流程包括第一阶段和目标阶段,并利用共识状态缓存将区块数据、执行目标阶段的每个阶段所对应的共识状态信息进行保存,其中,目标阶段是共识流程的所有阶段中除去第一阶段之外的其他所有阶段。
请参看图3,是本申请实施例提供的共识流程处理方法的示意图,具体地为PBFT的实现流程,包括了共识流程的三个阶段(即图3中的1.proposal、2.sign和3.commit),可以通过三个阶段保证消息的防篡改以及强一致性。
其中,图3中的H为handle(处理)的缩写,B为broadcast(广播)缩写,P为proposal(提议)的缩写,S为sign(标识)的缩写,C为commit(确认)的缩写;H-P为handle_proposal的缩写,H-S为handle_sign的缩写,H-C为handle_commit的缩写;B-P为broadcast_proposal的缩写,B-S为broadcast_sign的缩写,B-C为broadcast_commit的缩写。
本申请实施例中以第一阶段为proposal阶段,目标阶段包括sign阶段和commit阶段为例进行说明,其中,sign阶段和commit阶段分别对应第二阶段和第三阶段。
在第一阶段中,如图3所示,包括1.1leader select、1.2B-P、1.3H-P。
其中,1.1leader select包括:从区块链网络的节点中选择主节点。具体地,可以通过下述算式从区块链网络的节点中确定主节点:num_index=(block_number+view_nunber)%node_number。
其中,num_index为所确定的主节点的索引,如主节点的标识,block_number为区块链的当前区块高度的标识,view_number为区块链的当前视图的标识,node_number为区块链网络中的节点数量,%为取余计算符。通过视图(view)和区块高度来确定主节点的索引,其中,view可以为一个long类型的变量参数,正常情况下,view从0开始,即view_number的初始值等于0,每次经过视图切换时,view值加1。
在通过上述算式确定主节点之后,可以通过从区块链网络除主节点之外的节点中,选择预设个数的节点作为从节点,也可以将区块链网络除主节点之外的所有节点作为从节点。
其中,1.2B-P包括:通过所确定的主节点发起并广播第一阶段(proposal阶段)的第一广播请求,第一广播请求即为proposal请求,也即共识请求。具体地,主节点在接收到客户端发送的共识请求后,会保存并验证该共识请求,当该共识请求验证通过后,在共识状态缓存中保存共识请求所对应的待共识区块的区块数据,并广播proposal请求。需要注意的是,共识流程中通过主节点广播proposal请求,也可以理解为广播proposal请求是主节点独有的执行步骤,从节点并不执行广播proposal请求的步骤;在共识流程中的其他步骤中,主节点和从节点所执行的步骤都是一致的。
其中,1.2H-P包括:区块链网络的节点接收proposal请求后,对proposal请求执行handle_proposal(H-P)处理,并在handle_proposal处理通过后,将proposal请求中的待共识区块的区块数据保存在共识状态缓存中。即区块链网络中的每个节点接收proposal请求,对proposal请求进行验证(验签以及系列校验),在验证通过后,将proposal请求中的待共识区块的区块数据保存在共识状态缓存中。
共识状态缓存可以是如下格式:CURRENT_PRPOSAL_STATE{content:block,sign_phase_quorum:sign_set,commit_phase_quorum:commit_set}。其中,content为提案所共识的block,即待共识的共识区块的区块数据,将proposal请求中的待共识区块的区块数据保存在共识状态缓存的block中。sign_phase_quorum为第二阶段(sign阶段)所收集的签名集合;commit_phase_quorum为第三阶段(commit阶段)所收集的签名集合。下文中将会对签名集合sign_phase_quorum、签名集合commit_phase_quorum进行描述。
在校验通过后,执行共识流程的第二阶段,sign阶段。sign阶段包括2.1B-S、2.2H-S。
其中,2.1B-S包括:区块链网络的节点生成第二阶段(sign阶段)的第二广播请求,并向区块链网络中的其他节点广播该第二广播请求,第二广播请求即为sign请求,即通过P2P网络全网发起并广播sign请求。该sign请求中包括区块链网络的对应节点的签名值,可以理解地,区块链网络的每个节点广播sign请求时,都会在sign请求中携带对应节点生成的签名值。
区块链网络中的每个节点生成第二阶段的第二广播请求的步骤相同,以当前节点为例进行说明。当前节点生成第二阶段的第二广播请求的步骤,包括:获取第二阶段所对应的预设字符串、待共识区块的哈希值和区块链网络的当前节点的私钥;利用私钥对预设字符串和待共识区块的哈希值进行签名,以得到当前节点的签名值;根据签名值生成当前节点的第二广播请求。
其中,每个节点中当前共识流程的第二阶段所对应的预设字符串可相同也可不同。若都相同,第二阶段所对应的预设字符串用SIGN表示;待共识区块的哈希值用block_hash来表示,每个待共识区块的哈希值都不同;区块链网络的当前节点的私钥private_key来表示。
利用私钥对预设字符串和待共识区块的哈希值进行签名,以得到当前节点的签名值。例如,该签名值可通过doSign(hash(SIGN,block_hash),private_key)来计算得到。其中,hash函数以第二阶段的预设字符串SIGN以及待共识区块的哈希值block_hash作为输入,对SIGN和block_hash进行哈希运算,输出新的哈希值。doSign为签名函数,输入为计算出的新的哈希值以及当前节点的私钥private_key,对计算出的新的哈希值以及private_key进行签名,得到签名值。最后根据签名值生成当前节点的第二广播请求。
由于区块链网络的每个节点所对应的私钥都不相同,因此,第二阶段中每个节点计算得到的签名值也不相同。
其中,2.2H-S包括:区块链网络的节点接收到sign请求后,对sign请求执行handle_sign(H-S)处理,将处理通过后的sign请求中的签名值保存在共识状态缓存中,并对处理通过的sign请求进行票数归档。区块链网络的全网节点接收到来自P2P网络的sign请求后,对sign请求进行验证(验签以及一系列校验),将通过验证的sign请求中的签名值保存在共识状态缓存中,具体地,将签名值保存在共识状态缓存中的签名集合sign_phase_quorum中。
区块链网络的每个节点在第二阶段都会接收到多个sign请求,在每个sign请求验证通过后,获取每个sign请求中的签名值,并保存在第二阶段所对应的签名集合sign_phase_quorum中,将第二阶段的签名集合中的签名值作为第二阶段所对应的共识状态信息。
在sign请求验证通过的票数与全网节点的比例超过第二预设比例(如2/3)或者在sign请求验证通过的票数达到第二预设数量(第二预设数量与第二预设比例与全网节点数量相乘之后得到的数量值一致,或者也可以是其他数量值)时,执行共识流程的第三阶段,commit阶段。commit阶段包括3.1B-C、3.2H-C。
其中,3.1B-C包括:区块链网络的节点生成第三阶段(commit阶段)的第三广播请求并广播第三广播请求,第三广播请求即为commit请求,即通过P2P网络全网发起并广播commit请求。该commit请求中包括区块链网络的对应节点的签名值,可以理解地,区块链网络的每个节点广播commit请求时,都会在commit请求中携带对应节点生成的签名值。
区块链网络中的每个节点生成第三阶段的第三广播请求的步骤相同,以当前节点为例进行说明。当前节点生成第三阶段的第三广播请求的步骤,包括:获取第三阶段所对应的预设字符串、待共识区块的哈希值和区块链网络的当前节点的私钥;利用私钥对预设字符串和待共识区块的哈希值进行签名,以得到当前节点的签名值;根据签名值生成当前节点的第三广播请求。
其中,每个节点中当前共识流程的第三阶段所对应的预设字符串可相同也可不同。若都相同,第三阶段所对应的预设字符串用COMMIT表示。第三阶段中节点的签名值可通过doSign(hash(SIGN,block_hash),private_key)来计算得到。
由于区块链网络的每个节点所对应的私钥都不相同,因此,第三阶段中每个节点计算得到的签名值也不相同。
其中,3.2H-C包括:区块链网络的节点接收到commit请求后,对commit请求执行handle_sign(H-S)处理,将处理通过后的commit请求中的签名值保存在共识状态缓存中,并对处理通过的commit请求进行票数归档。区块链网络的全网节点接收到来自P2P网络的commit请求后,对commit请求进行验证(验签以及一系列校验),将通过验证的commit请求中的签名值保存在共识状态缓存中,具体地,将签名值保存在共识状态缓存中的签名集合commit_phase_quorum中。
区块链网络的每个节点在第三阶段都会接收到多个commit请求,在每个commit请求验证通过后,获取每个commit请求中的签名值,并保存在第三阶段所对应的签名集合commit_phase_quorum中,将第三阶段的签名集合中的签名值作为第三阶段所对应的共识状态信息。
在commit请求的通过票数与全网节点的比例超过第三预设比例(如2/3)或者commit请求的通过票数达到第三预设数量时,则意味着区块链网络对待共识区块的区块数据达成共识,然后将待共识区块落盘(do-commit)。其中,第三预设数量与第三预设比例与全网节点数量相乘之后得到的数量值一致,或者也可以是其他数量值。
需要注意的是,上述共识流程的三个阶段中共识的内容都是待共识区块block,待共识区块block包括区块头和区块体,其中,区块体中包括多个交易,上文中提到的proposal请求、sign请求以及commit请求只是待共识区块block的共识请求在不同阶段的状态表示而已。
上述对于共识流程的目标阶段的每个阶段,区块链网络的当前节点生成对应阶段的广播请求,并向区块链网络中的其他节点广播该广播请求,该广播请求中携带有当前节点的签名值;当前节点接收区块链网络中的其他节点广播的广播请求,该广播请求中同样携带有对应的其他节点的签名值;在所接收的广播请求验证通过后,保存签名值,以得到目标阶段的每个阶段对应的签名集合;将签名集合作为目标阶段中每个阶段对应的共识状态信息。
上述共识流程处理方法中利用共识状态缓存来保存待共识区块以及共识流程的目标阶段中每个阶段对应的共识状态信息。现有技术中的共识流程中,并没有获取/创建共识状态缓存的步骤,也没有利用共识状态缓存来保存待共识区块、共识流程的目标阶段中每个阶段对应的共识状态信息的步骤。其中,可将待共识区块以及共识流程的目标阶段中每个阶段对应的共识状态信息统称为共识状态数据,在一些实施例中,共识状态数据也可仅包括共识流程的目标阶段中每个阶段对应的共识状态信息。
上述共识流程处理方法中,区块链网络的每个节点在处理每一阶段的广播请求后,都会立刻判断共识流程的当前阶段是否超时,如果超时,则发起视图切换(viewchange)请求;或者如果检测到主节点出现故障,从节点会发起视图切换请求,以更换主节点。
现有技术中,如图4所示,区块链网络的节点发起视图切换(view change)请求,该视图切换请求中仅包括当前节点的视图值(view),当区块链网络中有超过第四预设比例(如2/3)或者第四预设数量(第四预设数量与第四预设比例与区块链网络节点数量相乘之后得到的数量值一致或者也可以是其他数量值)的节点都对视图切换请求达成一致时,则区块链网络的节点的view值会变成view+1,区块链中的节点对该视图值进行确认(view-confirm),确认通过之后,之后再接着执行共识流程的第一阶段,即proposal阶段。在现有技术中,每次发出视图切换后,都需要从共识流程的第一阶段(proposal阶段)开始新的共识流程,或者每次都需要重新出发新的共识流程,造成共识效率低。
本申请实施例基于上述共识状态缓存中的保存的共识状态数据,当发生视图切换时,根据共识状态数据来确定共识流程执行的最新阶段,执行视图切换后,从该最新阶段继续共识流程,提高了共识效率。具体请参看下文中的描述。
图5是本申请实施例提供的共识流程处理方法的另一流程示意图。该共识流程处理方法可以应用于区块链网络的任一非异常的节点中,其中,以区块链网络的当前节点为例进行说明。该共识流程处理方法包括如下步骤。
201,当检测到区块链网络触发了视图切换的切换条件时,获取区块链网络中的当前节点在执行共识流程的过程中所保存的共识状态数据、以及当前节点中对应的当前视图的视图值。
其中,当检测到区块链网络执行共识流程的过程中出现超时,或者检测到主节点出现故障,则确定检测到区块链网络触发了视图切换的切换条件。当检测到区块链网络触发了视图切换的切换条件时,获取区块链网络中的当前节点在执行共识流程的过程中所保存的共识状态数据、以及当前节点中对应的当前视图的视图值view。需要注意的是,区块链网络中的其他节点可能也会检测到触发了视图切换的切换条件,则其他节点也会获取在执行共识流程的过程中所保存的共识状态数据、以及其他节点中对应的当前视图的视图值。由于共识状态数据保存在共识状态缓存中,因此,可直接获取共识状态缓存。
202,根据共识状态数据和视图值向区块链网络中的其他节点广播视图切换请求。
当前节点会根据当前节点中保存的共识状态数据和当前视图的视图值view生成视图切换请求,并向区块链网络的其他节点广播视图切换请求。区块链网络的其他节点(非异常节点)也会根据对应的共识状态数据和当前视图的视图值生成视图切换请求,并广播该视图切换请求。需要注意的是,视图切换请求中不仅包括了对应节点中的当前视图的视图值view,还包括了对应节点中所保存的共识状态数据。
由于共识状态缓存中还包括待共识区块的区块数据,因此,在一些实施例中,将待共识区块的区块数据和共识状态数据,以及当前视图的视图值view一起生成视图切换请求。如此,视图切换请求中不仅包括对应节点中的当前视图的视图值view,还包括了对应节点中所保存的共识状态数据、待共识区块的区块数据。
203,当当前节点接收到超过第一预设比例或第一预设数量的其他节点广播的针对视图值的视图切换请求时,对所接收到的所有视图切换请求中的共识状态数据进行统计处理,以确定共识流程执行的最新阶段。
当前节点接收其他节点广播的针对视图值view的视图切换请求,并对视图切换请求进行票数统计;当接收到超过第一预设比例(如2/3)或第一预设数量的其他节点广播的视图切换请求时,执行切图切换,即将视图值view变更为view+1。同时会对所接收到的所有视图切换请求中的共识状态数据进行统计处理,以确定共识流程执行的最新阶段。其中,第一预设数量与第一预设比例与区块链网络节点数量相乘之后得到的数量值一致。
其中,当前节点接收到多少个区块链网络的其他节点发送的共识状态请求,就会接收到对应个数的共识状态数据。接收到对应个数的共识状态数据后,对共识状态数据进行统计处理,以确定共识流程执行的最新阶段。
在一实施例中,如图6所示,对所接收到的所有视图切换请求中的共识状态数据进行统计处理,以确定共识流程执行的最新阶段的步骤,包括如下步骤301-304。需要注意的是,区块链网络的每个节点都执行如下步骤301-304。
301,获取所接收到的所有视图切换请求中的共识状态数据,并获取共识状态数据对应的目标阶段中每个阶段所对应的签名集合。
本申请实施例中以目标阶段包括第二阶段和第三阶段为例进行说明,其中,第二阶段为sign阶段,第三阶段为commit阶段。当前节点获取所接收到的所有视图切换请求中的共识状态数据,并获取所有共识状态数据中对应的第二阶段的签名集合sign_phase_quorum和第三节点所对应的签名集合commit_phase_quorum。其中,第二阶段的签名集合中包括当前节点在所述目标阶段的每个阶段中接收的来自于其他节点的签名值所构成的签名集合。
302,将签名集合中的签名值进行校验,以移除校验不通过的签名值。
签名值是根据区块链的节点中的私钥来生成的,每个其他节点中都保存有对应的公钥,当前节点中也保存有区块链网络中的每个节点的公钥,利用公钥对签名集合中的签名值进行校验,若校验不通过,则将对应的签名值进行移除,以保留签名集合中的校验通过的签名值。
303,将校验后的签名集合中的签名值进行去重处理,以得到目标阶段中每个阶段所对应的目标签名集合。
对校验后的同一阶段的所有签名集合中的签名值进行去重处理,以得到目标阶段中每个阶段所对应的目标签名集合。
当前节点会接收到多个共识状态数据,每个共识状态数据中包括第二阶段的签名集合和第三节点的签名集合。因此,分别对所接收的第二阶段的所有签名集合中的签名值进行去重处理,得到第二阶段的目标签名集合;对第三阶段的所有签名集合中的签名值进行去重处理,得到第三阶段的目标签名集合。
304,根据目标签名集合确定共识流程执行的最新阶段。
将第二阶段的目标签名集合作为第二目标签名集合,将第三阶段的目标签名集合作为第三目标签名集合,根据目标签名集合确定共识流程执行的最新阶段的步骤,包括:根据第二目标签名集合和第三目标签名集合确定共识流程执行的最新阶段。
在一实施例中,步骤304,包括如下步骤:当第二目标签名和第三目标签名集合均为空时,意味着还未收到第二阶段的签名值,则确定共识流程执行的最新阶段为第一阶段中的重新选择主节点的阶段;当第二目标签名集合不为空,第三目标签名集合为空时,确定共识流程执行的最新阶段为第二阶段中已收集到第二目标签名集合中的签名值所对应的阶段;当第二目标签名集合和所述第三目标签名集合均不为空时,确定共识流程执行的最新阶段为第三阶段中已收集到第三目标签名集合中的签名值所对应的阶段。
该实施例进一步限定如何对所接收到的所有视图切换请求中的共识状态数据进行统计处理,以确定共识流程执行的最新阶段。
204,从共识流程执行的最新阶段继续执行共识流程。
从共识流程执行的最新阶段继续执行共识流程,如此无需触发新的共识流程,从而节约视图切换后的共识流程执行的时间,提高共识效率。
在一实施例中,步骤204,包括如下步骤:当共识流程执行的最新阶段为第一阶段中的重新选择主节点的阶段时,保持待共识区块不变,从区块链网络的节点中确定一个主节点;通过主节点发起并广播第一阶段的第一广播请求,所述第一广播请求中包括待共识区块对应的区块数据;区块链网络的节点收到第一广播请求后,对区块数据进行校验,并在校验通过后,执行第二阶段的共识流程。
其中,从区块链网络的节点中确定一个主节点,可理解为从区块链网络的从节点中确定一个主节点,具体确定主节点的步骤请参看上文中对应的描述,需要注意的是,当前视图的视图值已经是view+1了,当前节点的节点数量也发生了变化。
可以理解地,当共识流程执行的最新阶段为第一阶段中的重新选择主节点的阶段时,从共识流程的第一阶段开始执行共识流程。
步骤204,还包括如下步骤:当共识流程执行的最新阶段为第二阶段中已收集到第二目标签名集合中的签名值所对应的阶段时,保持待共识区块不变,将当前节点的当前阶段设置为第二阶段;将当前节点在第二阶段的签名集合设置为第二目标签名集合;生成第二阶段的第二广播请求,并向区块链网络中的其他节点广播第二广播请求。
其中,将当前节点在第二阶段的签名集合设置为第二目标签名集合,意味着将当前节点恢复到了视图切换之前共识流程执行的最新阶段。可以理解地,并不是简单地将当前节点的共识流程恢复到第二阶段,而是将当前节点的共识流程恢复到视图切换之前共识流程执行的最新阶段,如此,进一步提高共识效率。区块链网络的其他节点同样也是恢复到对应节点在视图切换之前共识流程执行的最新阶段。
将当前节点恢复到了视图切换之前共识流程执行的最新阶段后,接着生成并广播第二阶段的第二广播请求,即sign请求。其他节点也会生成并广播第二广播请求。其中,生成第二阶段的第二广播请求请参看上文中对应的描述。
在一实施例中,在生成第二阶段的第二广播请求,并向区块链网络中的其他节点广播第二广播请求的步骤之后,还包括:接收区块链网络的其他节点广播的第二广播请求;对第二广播请求进行校验,并在校验通过后获取第二广播请求中对应的签名值;当第二目标签名集合中不存在对应的签名值时,将对应的签名值保存在第二目标签名集合中;当第二目标签名集合中存在对应的签名值时,丢弃第二广播请求;当第二广播请求验证通过的票数与区块链网络节点的比例超过第二预设比例或第二广播请求验证通过的票数达到第二预设数量时,执行共识流程的第三阶段。
当第二目标签名集合中不存在第二广播请求对应的签名值时,意味着还未收到该第二广播请求,则将对应的签名值保存在第二目标签名集合中;当第二目标签名集合中存在第二广播请求对应的签名值时,意味着已经收到过该第二广播请求,则将该第二广播请求丢弃。当第二广播请求验证通过时会对验证通过的第二广播请求进行票数归档,当第二广播请求验证通过的票数与区块链网络节点的比例超过第二预设比例(如2/3)或第二广播请求验证通过的票数达到第二预设数量时,执行共识流程的第三阶段。
步骤204,还包括如下步骤:当共识流程执行的最新阶段为第三阶段中已收集到第三目标签名集合中的签名值所对应的阶段时,则保持待共识区块不变,将当前节点的当前阶段设置为第三阶段;将当前节点在第三阶段的签名集合设置为第三目标签名集合;生成第三阶段的第三广播请求,并向区块链网络中的其他节点广播第三广播请求。
其中,将当前节点在第三阶段的签名集合设置为第三目标签名集合,意味着将当前节点恢复到了视图切换之前共识流程执行的最新阶段。如此,进一步提高共识效率。区块链网络的其他节点同样也是恢复到对应节点在视图切换之前共识流程执行的最新阶段。
将当前节点恢复到了视图切换之前共识流程执行的最新阶段后,接着生成并广播第三阶段的第三广播请求,即commit请求。其他节点也会生成并广播第三广播请求。其中,生成第三阶段的第三广播请求请参看上文中对应的描述。
在一实施例中,在生成第三阶段的第三广播请求,并向区块链网络中的其他节点广播第三广播请求的步骤之后,还包括:接收区块链网络的其他节点广播的第三广播请求;对第三广播请求进行校验,并在校验通过后获取第三广播请求中对应的签名值;当第三目标签名集合中不存在对应的签名值时,将对应的签名值保存在第三目标签名集合中;当第三目标签名集合中存在对应的签名值时,丢弃第三广播请求;当第三广播请求验证通过的票数与区块链网络节点的比例超过第三预设比例或第三广播请求验证通过的票数达到第三预设数量时,执行共识流程的落盘阶段。
当第三目标签名集合中不存在第三广播请求对应的签名值时,意味着还未收到该第三广播请求,则将对应的签名值保存在第三目标签名集合中;当第三目标签名集合中存在第三广播请求对应的签名值时,意味着已经收到过该第三广播请求,则将该第三广播请求丢弃。当第三广播请求验证通过时会对验证通过的第三广播请求进行票数归档,当第三广播请求验证通过的票数与区块链网络节点的比例超过第三预设比例(如2/3)或第三广播请求验证通过的票数达到第三预设数量时,执行共识流程的落盘阶段。落盘之后,本轮共识流程结束,区块链中多了该待共识区块。
上述方法实施例中在执行共识流程的过程中保存共识状态数据,当检测到区块链网络触发了视图切换的切换条件时,获取当前节点所保存的共识状态数据以及当前视图的视图值,将共识状态数据和视图值所对应的视频切换请求进行广播,当接收到超过第一预设比例或第一预设数量的其他节点广播的针对视图值的视图切换请求时,对所接收到的所有视图切换请求中的共识状态数据进行统计处理,以确定共识流程执行的最新阶段,从共识流程执行的最新阶段继续执行共识流程。本申请实施例可在进行视图切换后,根据共识状态数据确定共识流程执行的最新阶段,从最新阶段继续执行共识流程,无需触发新的共识流程,从而节约视图切换后的共识流程执行的时间,提高共识效率。
上述所有的技术方案,可以采用任意结合形成本申请的可选实施例,在此不再一一赘述。
为便于更好的实施本申请实施例的共识流程处理方法,本申请实施例还提供一种共识流程处理装置。请参阅7,图7为本申请实施例提供的共识流程处理装置的结构示意图。该共识流程处理装置400可以包括获取模块401,广播模块402,确定模块403以及执行模块404。
获取模块401,用于当检测到区块链网络触发了视图切换的切换条件时,获取区块链网络中的当前节点在执行共识流程的过程中所保存的共识状态数据、以及当前节点中对应的当前视图的视图值。
其中,共识状态数据包括当前节点在执行共识流程的目标阶段中每个阶段所对应的共识状态信息,目标阶段是共识流程的所有阶段中除去共识流程的第一阶段之外的其他所有阶段,目标阶段中每个阶段所对应的共识状态信息包括当前节点在目标阶段的每个阶段中接收的来自于其他节点的签名值所构成的签名集合。
广播模块402,用于根据共识状态数据和视图值向区块链网络中的其他节点广播视图切换请求。
确定模块403,用于当当前节点接收到超过第一预设比例或第一预设数量的其他节点广播的针对视图值的视图切换请求时,对所接收到的所有视图切换请求中的共识状态数据进行统计处理,以确定共识流程执行的最新阶段。
在一实施例中,确定模块403在执行对所接收到的所有视图切换请求中的共识状态数据进行统计处理,以确定所述共识流程执行的最新阶段的步骤时,具体执行:获取所接收到的所有视图切换请求中的共识状态数据,并获取所述共识状态数据对应的目标阶段中每个阶段所对应的签名集合;将所述签名集合中的签名值进行校验,以移除校验不通过的签名值;将校验后的所述签名集合中的签名值进行去重处理,以得到所述目标阶段中每个阶段所对应的目标签名集合;根据所述目标签名集合确定所述共识流程执行的最新阶段。
在一实施例中,目标阶段至少包括第二阶段和第三阶段,将所述第二阶段的目标签名集合作为第二目标签名集合,将所述第三阶段的目标签名集合作为第三目标签名集合,所述根据所述目标签名集合确定所述共识流程执行的最新阶段的步骤,包括:当所述第二目标签名集合和所述第三目标签名集合均为空时,确定所述共识流程执行的最新阶段为第一阶段中的重新选择主节点的阶段;当所述第二目标签名集合不为空,所述第三目标签名集合为空时,确定所述共识流程执行的最新阶段为第二阶段中已收集到所述第二目标签名集合中的签名值所对应的阶段;当所述第二目标签名集合和所述第三目标签名集合均不为空时,确定所述共识流程执行的最新阶段为第三阶段中已收集到所述第三目标签名集合中的签名值所对应的阶段。
执行模块404,用于从共识流程执行的最新阶段继续执行共识流程。
在一实施例中,共识状态数据还包括共识流程所对应的待共识区块的区块数据。
当共识流程执行的最新阶段为第一阶段中的重新选择主节点的阶段时,执行模块404,具体用于:从所述区块链网络的节点中确定一个主节点;通过所述主节点发起并广播第一阶段的第一广播请求,所述第一广播请求中包括所述待共识区块对应的区块数据;所述区块链网络的节点收到所述区块数据后,对所述区块数据进行校验,并在校验通过后,执行共识流程的第二阶段。
在一实施例中,所述从所述区块链网络的节点中确定一个主节点的步骤,包括:获取所述待共识区块的区块高度标识、所述区块链网络中的当前视图的视图值、以及所述区块链网络中的节点数量;根据所述区块高度标识、所述当前视图的视图值和所述节点数量,从所述区块链网络的节点中确定一个主节点。
当所述共识流程执行的最新阶段为第二阶段中已收集到所述第二目标签名集合中的签名值所对应的阶段时,执行模块404,具体用于:保持所述待共识区块不变,将所述当前节点的当前阶段设置为第二阶段;将所述当前节点在所述第二阶段的签名集合设置为所述第二目标签名集合;生成所述第二阶段的第二广播请求,并向所述区块链网络中的其他节点广播所述第二广播请求。
在一实施例中,生成所述第二阶段的第二广播请求的步骤,包括:
获取所述第二阶段所对应的预设字符串、所述待共识区块的哈希值和所述当前节点的私钥;利用所述私钥对所述预设字符串和所述待共识区块的哈希值进行签名,以得到当前节点的签名值;根据所述签名值生成所述当前节点的第二广播请求。
在一实施例中,执行模块404,还用于接收所述区块链网络的其他节点广播的第二广播请求;对所述第二广播请求进行校验,并在校验通过后获取所述第二广播请求中对应的签名值;当所述第二目标签名集合中不存在对应的签名值时,将对应的签名值保存在所述第二目标签名集合中;当所述第二目标签名集合中存在对应的签名值时,丢弃所述第二广播请求;在所述第二广播请求验证通过的票数与区块链网络节点的比例超过第二预设比例或者所述第二广播请求验证通过的票数达到第二预设数量时,执行共识流程的第三阶段。
当所述共识流程执行的最新阶段为第三阶段中已收集到所述第三目标签名集合中的签名值所对应的阶段时,执行模块404,具体用于保持所述待共识区块不变,将所述当前节点的当前阶段设置为第三阶段;将所述当前节点在所述第三阶段的签名集合设置为所述第三目标签名集合;生成所述第三阶段的第三广播请求,并向所述区块链网络中的其他节点广播所述第三广播请求。
在一实施例中,执行模块404,还用于接收所述区块链网络的其他节点广播的第三广播请求;对所述第三广播请求进行校验,并在校验通过后获取所述第三广播请求中对应的签名值;当所述第三目标签名集合中不存在对应的签名值时,将对应的签名值保存在所述第三目标签名集合中;当所述第三目标签名集合中存在对应的签名值时,丢弃所述第三广播请求;在所述第三广播请求验证通过的票数与区块链网络节点的比例超过第三预设比例或所述第三广播请求验证通过的票数达到第三预设数量时,执行共识流程的落盘阶段。
在一实施例中,获取模块401,还用于当检测到区块链网络需对待共识区块的区块数据进行共识时,区块链网络的节点获取所建立的共识状态缓存。
执行模块404,还用于区块链网络的节点对区块数据执行共识流程,该共识流程包括第一阶段和目标阶段,并利用共识状态缓存将区块数据、执行目标阶段的每个阶段所对应的共识状态信息进行保存,其中,目标阶段是共识流程的所有阶段中除去第一阶段之外的其他所有阶段。
上述所有的技术方案,可以采用任意结合形成本申请的可选实施例,在此不再一一赘述。
相应的,本申请实施例还提供一种计算机设备,该计算机设备可以为终端或者服务器。如图8所示,图8为本申请实施例提供的计算机设备的结构示意图。该计算机设备500包括有一个或者一个以上处理核心的处理器501、有一个或一个以上计算机可读存储介质的存储器502及存储在存储器502上并可在处理器上运行的计算机程序。其中,处理器501与存储器502电性连接。本领域技术人员可以理解,图中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
处理器501是计算机设备500的控制中心,利用各种接口和线路连接整个计算机设备500的各个部分,通过运行或加载存储在存储器502内的软件程序(计算机程序)和/或模块,以及调用存储在存储器502内的数据,执行计算机设备500的各种功能和处理数据,从而对计算机设备500进行整体监控。
在本申请实施例中,计算机设备500中的处理器501会按照如下的步骤,将一个或一个以上的应用程序的进程对应的指令加载到存储器502中,并由处理器501来运行存储在存储器502中的应用程序,从而实现各种功能:
当检测到区块链网络触发了视图切换的切换条件时,获取所述区块链网络中的当前节点在执行共识流程的过程中所保存的共识状态数据、以及所述当前节点中对应的当前视图的视图值;根据所述共识状态数据和所述视图值向所述区块链网络中的其他节点广播视图切换请求;当所述当前节点接收到超过第一预设比例或第一预设数量的其他节点广播的针对所述视图值的视图切换请求时,对所接收到的所有视图切换请求中的共识状态数据进行统计处理,以确定所述共识流程执行的最新阶段;从所述共识流程执行的最新阶段继续执行所述共识流程。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
可选的,如图8所示,计算机设备500还包括:触控显示屏503、射频电路504、音频电路505、输入单元506以及电源507。其中,处理器501分别与触控显示屏503、射频电路504、音频电路505、输入单元506以及电源507电性连接。本领域技术人员可以理解,图8中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
触控显示屏503可用于显示图形用户界面以及接收用户作用于图形用户界面产生的操作指令。触控显示屏503可以包括显示面板和触控面板。其中,显示面板可用于显示由用户输入的信息或提供给用户的信息以及计算机设备的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。可选的,可以采用液晶显示器(LCD,Liquid Crystal Display)、有机发光二极管(OLED,Organic Light-EmittingDiode)等形式来配置显示面板。触控面板可用于收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并生成相应的操作指令,且操作指令执行对应程序。触控面板可覆盖显示面板,当触控面板检测到在其上或附近的触摸操作后,传送给处理器501以确定触摸事件的类型,随后处理器501根据触摸事件的类型在显示面板上提供相应的视觉输出。在本申请实施例中,可以将触控面板与显示面板集成到触控显示屏503而实现输入和输出功能。但是在某些实施例中,触控面板与触控面板可以作为两个独立的部件来实现输入和输出功能。即触控显示屏503也可以作为输入单元506的一部分实现输入功能。
在本申请实施例中,该触控显示屏503用于呈现图形用户界面以及接收用户作用于图形用户界面产生的操作指令。
射频电路504可用于收发射频信号,以通过无线通信与网络设备或其他计算机设备建立无线通讯,与网络设备或其他计算机设备之间收发信号。
音频电路505可以用于通过扬声器、传声器提供用户与计算机设备之间的音频接口。音频电路505可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路505接收后转换为音频数据,再将音频数据输出处理器501处理后,经射频电路504以发送给比如另一计算机设备,或者将音频数据输出至存储器502以便进一步处理。音频电路505还可能包括耳塞插孔,以提供外设耳机与计算机设备的通信。
输入单元506可用于接收输入的数字、字符信息或用户特征信息(例如指纹、虹膜、面部信息等),以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
电源507用于给计算机设备500的各个部件供电。可选的,电源507可以通过电源管理系统与处理器501逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源507还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
尽管图8中未示出,计算机设备500还可以包括摄像头、传感器、无线保真模块、蓝牙模块等,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条计算机程序,该计算机程序能够被处理器进行加载,以执行本申请实施例所提供的任一种共识流程处理方法中的步骤。例如,该计算机程序可以执行如下步骤:
当检测到区块链网络触发了视图切换的切换条件时,获取所述区块链网络中的当前节点在执行共识流程的过程中所保存的共识状态数据、以及所述当前节点中对应的当前视图的视图值;根据所述共识状态数据和所述视图值向所述区块链网络中的其他节点广播视图切换请求;当所述当前节点接收到超过第一预设比例或第一预设数量的其他节点广播的针对所述视图值的视图切换请求时,对所接收到的所有视图切换请求中的共识状态数据进行统计处理,以确定所述共识流程执行的最新阶段;从所述共识流程执行的最新阶段继续执行所述共识流程。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的计算机程序,可以执行本申请实施例所提供的任一种共识流程处理方法中的步骤,因此,可以实现本申请实施例所提供的任一种共识流程处理方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本申请实施例所提供的一种共识流程处理方法、装置、存储介质及计算机设备进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (14)
1.一种共识流程处理方法,其特征在于,包括:
当检测到区块链网络触发了视图切换的切换条件时,获取所述区块链网络中的当前节点在执行共识流程的过程中所保存的共识状态数据、以及所述当前节点中对应的当前视图的视图值;
根据所述共识状态数据和所述视图值向所述区块链网络中的其他节点广播视图切换请求;
当所述当前节点接收到超过第一预设比例或第一预设数量的其他节点广播的针对所述视图值的视图切换请求时,对所接收到的所有视图切换请求中的共识状态数据进行统计处理,以确定所述共识流程执行的最新阶段;
从所述共识流程执行的最新阶段继续执行所述共识流程。
2.根据权利要求1所述的共识流程处理方法,其特征在于,所述共识状态数据包括所述当前节点在执行共识流程的目标阶段中每个阶段所对应的共识状态信息,所述目标阶段是所述共识流程的所有阶段中除去所述共识流程的第一阶段之外的其他所有阶段,所述目标阶段中每个阶段所对应的共识状态信息包括所述当前节点在所述目标阶段的每个阶段中接收的来自于其他节点的签名值所构成的签名集合。
3.根据权利要求2所述的共识流程处理方法,其特征在于,所述对所接收到的所有视图切换请求中的共识状态数据进行统计处理,以确定所述共识流程执行的最新阶段的步骤,包括:
获取所接收到的所有视图切换请求中的共识状态数据,并获取所述共识状态数据对应的目标阶段中每个阶段所对应的签名集合;
将所述签名集合中的签名值进行校验,以移除校验不通过的签名值;
将校验后的所述签名集合中的签名值进行去重处理,以得到所述目标阶段中每个阶段所对应的目标签名集合;
根据所述目标签名集合确定所述共识流程执行的最新阶段。
4.根据权利要求3所述的共识流程处理方法,其特征在于,所述目标阶段至少包括第二阶段和第三阶段,将所述第二阶段的目标签名集合作为第二目标签名集合,将所述第三阶段的目标签名集合作为第三目标签名集合,所述根据所述目标签名集合确定所述共识流程执行的最新阶段的步骤,包括:
当所述第二目标签名集合和所述第三目标签名集合均为空时,确定所述共识流程执行的最新阶段为第一阶段中的重新选择主节点的阶段;
当所述第二目标签名集合不为空,所述第三目标签名集合为空时,确定所述共识流程执行的最新阶段为第二阶段中已收集到所述第二目标签名集合中的签名值所对应的阶段;
当所述第二目标签名集合和所述第三目标签名集合均不为空时,确定所述共识流程执行的最新阶段为第三阶段中已收集到所述第三目标签名集合中的签名值所对应的阶段。
5.根据权利要求4所述的共识流程处理方法,其特征在于,所述共识状态数据还包括所述共识流程所对应的待共识区块;所述从所述共识流程执行的最新阶段继续执行所述共识流程的步骤,包括:
当所述共识流程执行的最新阶段为第二阶段中已收集到所述第二目标签名集合中的签名值所对应的阶段时,保持所述待共识区块不变,将所述当前节点的当前阶段设置为第二阶段;
将所述当前节点在所述第二阶段的签名集合设置为所述第二目标签名集合;
生成所述第二阶段的第二广播请求,并向所述区块链网络中的其他节点广播所述第二广播请求。
6.根据权利要求5所述的共识流程处理方法,其特征在于,所述生成所述第二阶段的第二广播请求的步骤,包括:
获取所述第二阶段所对应的预设字符串、所述待共识区块的哈希值和所述当前节点的私钥;
利用所述私钥对所述预设字符串和所述待共识区块的哈希值进行签名,以得到当前节点的签名值;
根据所述签名值生成所述当前节点的第二广播请求。
7.根据权利要求5所述的共识流程处理方法,其特征在于,所述共识流程处理方法还包括:
接收所述区块链网络的其他节点广播的第二广播请求;
对所述第二广播请求进行校验,并在校验通过后获取所述第二广播请求中对应的签名值;
当所述第二目标签名集合中不存在对应的签名值时,将对应的签名值保存在所述第二目标签名集合中;
当所述第二目标签名集合中存在对应的签名值时,丢弃所述第二广播请求;
在所述第二广播请求验证通过的票数与区块链网络节点的比例超过第二预设比例或在所述第二广播请求验证通过的票数达到第二预设数量时,执行所述共识流程的第三阶段。
8.根据权利要求4所述的共识流程处理方法,其特征在于,所述共识状态数据还包括所述共识流程所对应的待共识区块;所述从所述共识流程执行的最新阶段继续执行所述共识流程的步骤,包括:
当所述共识流程执行的最新阶段为第三阶段中已收集到所述第三目标签名集合中的签名值所对应的阶段时,则保持所述待共识区块不变,将所述当前节点的当前阶段设置为第三阶段;
将所述当前节点在所述第三阶段的签名集合设置为所述第三目标签名集合;
生成所述第三阶段的第三广播请求,并向所述区块链网络中的其他节点广播所述第三广播请求。
9.根据权利要求4所述的共识流程处理方法,其特征在于,所述共识状态数据还包括所述共识流程所对应的待共识区块;所述从所述共识流程执行的最新阶段继续执行所述共识流程的步骤,包括:
当所述共识流程执行的最新阶段为第一阶段中的重新选择主节点的阶段时,从所述区块链网络的节点中确定一个主节点;
通过所述主节点发起并广播第一阶段的第一广播请求,所述第一广播请求中包括所述待共识区块;
所述区块链网络的节点收到所述待共识区块后,对所述待共识区块进行校验,并在校验通过后,执行所述共识流程的第二阶段。
10.根据权利要求9所述的共识流程处理方法,其特征在于,所述从所述区块链网络的节点中确定一个主节点的步骤,包括:
获取所述待共识区块的区块高度标识、所述区块链网络中的当前视图的视图值、以及所述区块链网络中的节点数量;
根据所述区块高度标识、所述当前视图的视图值和所述节点数量,从所述区块链网络的节点中确定一个主节点。
11.根据权利要求2所述的共识流程处理方法,其特征在于,所述共识流程处理方法,还包括:
在所述当前节点执行共识流程的过程中,对于所述目标阶段的每个阶段,所述当前节点接收所述区块链网络中的其他节点广播的广播请求,所述广播请求中携带有对应的其他节点的签名值;
在所述广播请求验证通过后,保存所述签名值,以得到所述目标阶段的每个阶段对应的签名集合;
将所述签名集合中的签名值作为目标阶段中每个阶段对应的共识状态信息。
12.一种共识流程处理装置,其特征在于,包括:
获取模块,用于当检测到区块链网络触发了视图切换的切换条件时,获取所述区块链网络中的当前节点在执行共识流程的过程中所保存的共识状态数据、以及所述当前节点中对应的当前视图的视图值;
广播模块,用于根据所述共识状态数据和所述视图值向所述区块链网络中的其他节点广播视图切换请求;
确定模块,用于当所述当前节点接收到超过第一预设比例或第一预设数量的其他节点广播的针对所述视图值的视图切换请求时,对所接收到的所有视图切换请求中的共识状态数据进行统计处理,以确定所述共识流程执行的最新阶段;
执行模块,用于从所述共识流程执行的最新阶段继续执行所述共识流程。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于处理器进行加载,以执行如权利要求1-11任一项所述的共识流程处理方法中的步骤。
14.一种计算机设备,其特征在于,所述计算机设备包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器通过调用所述存储器中存储的所述计算机程序,执行如权利要求1-11任一项所述的共识流程处理方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110594394.8A CN113395165B (zh) | 2021-05-28 | 2021-05-28 | 共识流程处理方法、装置、存储介质及计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110594394.8A CN113395165B (zh) | 2021-05-28 | 2021-05-28 | 共识流程处理方法、装置、存储介质及计算机设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113395165A true CN113395165A (zh) | 2021-09-14 |
CN113395165B CN113395165B (zh) | 2022-08-16 |
Family
ID=77619550
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110594394.8A Active CN113395165B (zh) | 2021-05-28 | 2021-05-28 | 共识流程处理方法、装置、存储介质及计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113395165B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114254050A (zh) * | 2022-03-02 | 2022-03-29 | 恒生电子股份有限公司 | 区块链网络共识预加载方法、装置、设备及存储介质 |
WO2023098042A1 (zh) * | 2021-12-01 | 2023-06-08 | 深圳前海微众银行股份有限公司 | 基于区块链的交易共识方法、装置、设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391320A (zh) * | 2017-03-10 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 一种共识方法及装置 |
CN107528882A (zh) * | 2017-07-14 | 2017-12-29 | 阿里巴巴集团控股有限公司 | 区块链共识网络中处理共识请求的方法、装置和电子设备 |
CN111526165A (zh) * | 2020-07-03 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 联盟链中的共识方法和系统 |
CN111526216A (zh) * | 2020-07-03 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 联盟链中的共识方法和系统 |
CN111556133A (zh) * | 2020-04-26 | 2020-08-18 | 布比(北京)网络技术有限公司 | 区块链共识方法、系统及计算机存储介质、电子设备 |
US20200286049A1 (en) * | 2019-03-06 | 2020-09-10 | 0Chain Llc | Systems and methods of self-administered protocols on a blockchain platform |
CN111865608A (zh) * | 2020-07-02 | 2020-10-30 | 南京邮电大学 | 一种应用于联盟链的共识机制运行方法 |
CN112398692A (zh) * | 2020-11-16 | 2021-02-23 | 网易(杭州)网络有限公司 | 共识流程处理方法、装置和电子设备 |
CN112507019A (zh) * | 2020-11-20 | 2021-03-16 | 南京航空航天大学 | 一种基于智能合约的pbft共识系统及方法 |
-
2021
- 2021-05-28 CN CN202110594394.8A patent/CN113395165B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391320A (zh) * | 2017-03-10 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 一种共识方法及装置 |
CN107528882A (zh) * | 2017-07-14 | 2017-12-29 | 阿里巴巴集团控股有限公司 | 区块链共识网络中处理共识请求的方法、装置和电子设备 |
CN112804349A (zh) * | 2017-07-14 | 2021-05-14 | 创新先进技术有限公司 | 区块链共识网络中处理共识请求的方法、装置和电子设备 |
US20200286049A1 (en) * | 2019-03-06 | 2020-09-10 | 0Chain Llc | Systems and methods of self-administered protocols on a blockchain platform |
CN111556133A (zh) * | 2020-04-26 | 2020-08-18 | 布比(北京)网络技术有限公司 | 区块链共识方法、系统及计算机存储介质、电子设备 |
CN111865608A (zh) * | 2020-07-02 | 2020-10-30 | 南京邮电大学 | 一种应用于联盟链的共识机制运行方法 |
CN111526165A (zh) * | 2020-07-03 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 联盟链中的共识方法和系统 |
CN111526216A (zh) * | 2020-07-03 | 2020-08-11 | 支付宝(杭州)信息技术有限公司 | 联盟链中的共识方法和系统 |
CN112398692A (zh) * | 2020-11-16 | 2021-02-23 | 网易(杭州)网络有限公司 | 共识流程处理方法、装置和电子设备 |
CN112507019A (zh) * | 2020-11-20 | 2021-03-16 | 南京航空航天大学 | 一种基于智能合约的pbft共识系统及方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023098042A1 (zh) * | 2021-12-01 | 2023-06-08 | 深圳前海微众银行股份有限公司 | 基于区块链的交易共识方法、装置、设备及存储介质 |
CN114254050A (zh) * | 2022-03-02 | 2022-03-29 | 恒生电子股份有限公司 | 区块链网络共识预加载方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113395165B (zh) | 2022-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108040108B (zh) | 通信切换方法、装置、协调服务器及可读存储介质 | |
CN113395165B (zh) | 共识流程处理方法、装置、存储介质及计算机设备 | |
CN110601849B (zh) | 一种可信时间戳添加方法、装置和存储介质 | |
WO2020258912A1 (zh) | 一种区块链共识方法、装置和系统 | |
CN106708734B (zh) | 软件异常检测方法及装置 | |
CN113157810B (zh) | 一种区块同步方法、计算机设备和存储介质 | |
CN111277645B (zh) | 主备节点热切换方法、区块链系统、区块链节点及介质 | |
WO2021184587A1 (zh) | 基于Prometheus的私有云监控方法、装置、计算机设备及存储介质 | |
CN111898124B (zh) | 进程访问控制方法和装置、存储介质及电子设备 | |
CN108446207B (zh) | 计算机系统容灾能力评估方法、装置及系统 | |
CN112398692B (zh) | 共识流程处理方法、装置和电子设备 | |
JP2023503736A (ja) | シーン検出方法及び装置、電子機器、コンピュータ記憶媒体 | |
CN114049123A (zh) | 区块链的共识方法、装置、计算机设备和存储介质 | |
CN113506100B (zh) | 联盟链数据处理方法、装置、计算机设备及存储介质 | |
CN112883106B (zh) | 一种区块链的出块节点确定方法、装置、设备和介质 | |
CN113609107A (zh) | 数据库管理方法、装置、电子设备及存储介质 | |
CN111930565B (zh) | 分布式管理系统中组件的进程故障自愈方法、装置及设备 | |
CN113890753B (zh) | 数字身份管理方法、装置、系统、计算机设备和存储介质 | |
JP7031735B2 (ja) | 情報処理装置、制御方法、及びプログラム | |
CN113364874B (zh) | 基于区块链的节点同步方法、装置、存储介质及服务器 | |
CN114092101B (zh) | 交易验证方法、装置、存储介质及电子设备 | |
CN113342893B (zh) | 基于区块链的节点同步方法、装置、存储介质及服务器 | |
CN116668269A (zh) | 一种用于双活数据中心的仲裁方法、装置及系统 | |
EP4193625A1 (en) | Techniques for device to device authentication | |
CN115378803B (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 |