CN113301114A - 区块链共识节点选择方法、装置、计算机设备和存储介质 - Google Patents
区块链共识节点选择方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN113301114A CN113301114A CN202110395307.6A CN202110395307A CN113301114A CN 113301114 A CN113301114 A CN 113301114A CN 202110395307 A CN202110395307 A CN 202110395307A CN 113301114 A CN113301114 A CN 113301114A
- Authority
- CN
- China
- Prior art keywords
- node
- nodes
- verification
- information
- candidate
- 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
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering 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
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- 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/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- 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/3242—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 keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3297—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 time stamps, e.g. generation of time stamps
-
- 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
技术领域
本申请涉及区块链技术领域,特别是涉及一种区块链共识节点选择方法、装置、计算机设备和存储介质。
背景技术
区块链是一个去中心化的分布式系统,由网络中的所有节点共同维护一个持有该网络中所有数据的公共账本,因此共识算法是区块链的核心。它的作用是公平地选出指定的节点把交易打包成区块,并将区块加入区块链,网络中的其它节点都认同该操作,从而使区块链网络中所有节点一致性维护同一条链,共识算法让区块链可以在无需中央机构的环境下稳定的运行,因此它的安全性直接决定了区块链系统的安全性。
随着区块链网络中的节点和交易量越来越多,达成共识的速度和事务处理的速度都会随着节点数量的增多而减慢,因此采用固定的共识算法不适用与现阶段各行业的区块链应用,目前通常采用的是选取共识节点委员的方法,让共识节点委员中的节点负责某段时间区块的产生,其它节点认同且跟随共识节点委员产生的区块结果。目前对于共识节点的选取方式通常是通过DPoS(Delegated Proof of Stake,代理权益证明)或PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错算法)进行,然而,通过上述方式进行节点选取,容易让攻击者展开网络攻击,破坏区块链节点的一致性。
因此,目前的区块链共识节点选择方法存在安全性不高的缺陷。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高节点安全性的区块链共识节点选择方法、装置、计算机设备和存储介质。
一种区块链共识节点选择方法,应用于区块链网络中的节点,所述方法包括:
响应于区块链任务启动信号,生成本节点对应的验证信息,并将所述验证信息广播至所述区块链网络中的其他节点;所述验证信息基于预设可验证随机函数以及本节点的节点信息得到;
若接收到来自所述其他节点中设定数量的节点返回的第一验证通过信息,确定本节点为候选节点;所述第一验证通过信息为所述其他节点在第一验证条件下对所述验证信息验证通过时返回的信息;
将所述验证信息广播至所述区块链网络中的其他候选节点;
若接收到来自所述其他候选节点中设定数量的候选节点返回的第二验证通过信息,确定本候选节点为本轮区块链任务的主节点;所述第二验证通过信息为所述其他候选节点在第二验证条件下对所述验证信息验证通过时返回的信息。
在其中一个实施例中,所述生成本节点对应的验证信息,包括:
根据预设可验证随机函数,获取本节点对应的哈希输出值以及证明值;
获取本节点对应的健康数值、本节点对应的公钥以及本节点对应的数字签名;所述健康数值基于本节点的节点信息以及本节点在每轮区块链任务中的参与度以及发送消息一致度得到;
根据所述健康数值、当前时间、所述公钥、所述哈希输出值以及所述证明值,并通过所述数字签名进行加密,得到所述验证信息。
在其中一个实施例中,所述预设可验证随机函数包括哈希生成函数以及证明生成函数;
所述根据预设可验证随机函数,获取本节点对应的哈希输出值以及证明值,包括:
获取本节点对应的私钥;
将所述私钥输入所述哈希生成函数,获取所述哈希生成函数的输出结果;
若所述输出结果在预设阈值范围内,将所述输出结果作为所述哈希输出值,并将所述私钥输入所述证明生成函数,获取所述证明生成函数输出的证明值。
在其中一个实施例中,所述获取本节点对应的健康数值,包括:
若所述本节点在上一轮区块链任务中为候选节点,且所述本节点在所述上一轮区块链任务中向其他节点发送了相同共识信息且所述共识信息与最终共识结果一致,根据第一候选节点健康数值函数以及所述本节点对应的上一轮健康数值,得到本轮区块链任务中所述本节点对应的健康数值;
若所述本节点在上一轮区块链任务中为候选节点,且所述本节点在所述上一轮区块链任务中不向所述其他节点发送所述共识信息和/或所述本节点的共识信息与所述最终共识结果不一致和/或所述本节点向不同的所述其他节点发送不同的所述共识信息,根据第二候选节点健康数值函数以及所述本节点对应的上一轮健康数值,得到本轮区块链任务中所述本节点对应的健康数值;
若所述本节点在上一轮区块链任务中为主节点,且所述本节点在所述上一轮区块链任务中产生新区块,根据第一主节点健康数值函数以及所述本节点对应的上一轮健康数值,得到本轮区块链任务中所述本节点对应的健康数值;
若所述本节点在上一轮区块链任务中为主节点,且所述本节点在所述上一轮区块链任务中未产生新区块和/或向不同的其他节点发送不同的共识信息,根据第二主节点健康数值函数以及所述本节点对应的上一轮健康数值,得到本轮区块链任务中所述本节点对应的健康数值。
在其中一个实施例中,所述预设可验证随机函数包括哈希验证函数以及证明验证函数;
所述方法还包括:
获取所述其他节点发送的验证信息;所述验证信息包括所述其他节点对应的数字签名、哈希输出值、证明值以及健康数值;
根据所述哈希验证函数以及所述证明验证函数,判断所述其他节点对应的哈希输出值以及证明值是否正确;
若所述其他节点对应的所述数字签名正确、所述其他节点对应的哈希输出值和所述证明值正确、以及所述其他节点对应的健康数值大于或等于预设健康数值阈值,确定所述其他节点通过验证;
根据所述本节点对应的数字签名以及当前时间,生成第一验证通过信息并返回至所述其他节点,以使所述其他节点根据接收到的至少一个所述第一验证通过信息以及所述其他节点对应的数字签名,生成对应的第一确认信息并发送至本节点;
获取所述其他节点发送的第一确认信息,判断所述第一确认信息中的至少一个第一验证通过信息是否正确以及所述其他节点对应的数字签名是否正确;若所述至少一个第一验证通过信息正确且所述其他节点对应的数字签名正确,向所述其他节点发送第一状态更改确认信息,以使所述其他节点根据所述第一状态更改确认信息,确定所述其他节点为候选节点。
在其中一个实施例中,所述若接收到来自所述其他节点中设定数量的节点返回的第一验证通过信息,确定本节点为候选节点,包括:
接收所述其他节点返回的第一验证通过信息,获取所述第一验证通过信息的数量;
若所述第一验证通过信息的数量与所述区块链中的节点数量的比值大于第一预设比值,确定本节点为候选节点;
所述确定本节点为候选节点之后,还包括:
向所述其他节点发送根据所述第一验证通过信息以及本节点对应的数字签名生成的第一确认信息;
获取所述其他节点基于所述第一确认信息返回的第一状态更改确认信息,确认本节点的状态更改为候选节点。
在其中一个实施例中,所述方法还包括:
在预设时间内,获取至少一个其他候选节点发送的验证信息;所述验证信息包括所述其他候选节点对应的数字签名、哈希输出值、证明值以及健康数值;
根据所述哈希验证函数以及所述证明验证函数,判断所述至少一个其他候选节点对应的哈希输出值以及证明值是否正确;
若所述至少一个其他候选节点对应的数字签名正确、所述至少一个其他候选节点对应的哈希输出值和所述证明值正确,获取所述至少一个其他候选节点中每个其他候选节点对应的健康数值;
将健康数值最高的其他候选节点作为验证通过的节点;
根据所述本节点对应的数字签名、当前时间、所述至少一个其他候选节点的节点信息,生成第二验证通过信息并发送至通过验证的其他候选节点,以使所述其他候选节点根据接收到的至少一个所述第二验证通过信息,生成对应的第二确认信息并发送至本节点;
获取所述其他候选节点发送的第二确认信息,判断所述第二确认信息中的至少一个其他候选节点的节点信息是否正确以及所述其他候选节点对应的数字签名是否正确;若所述节点信息正确且所述其他候选节点对应的数字签名正确,向所述其他候选节点发送第二状态更改确认信息,以使所述其他候选节点根据所述第二状态更改确认信息,确定所述其他候选节点为主节点。
在其中一个实施例中,所述若接收到来自所述其他候选节点中设定数量的候选节点返回的第二验证通过信息,确定本候选节点为本轮区块链任务的主节点,包括:
接收所述其他候选节点返回的第二验证通过信息,获取所述第二验证通过信息的数量;
若所述第二验证通过信息的数量与所述候选节点集中的节点数量的比值大于的第二预设比值,确定本节点为主节点;
所述确定本节点为主节点之后,还包括:
向所述其他候选节点发送根据所述第二验证通过信息以及本节点对应的数字签名生成的第二确认信息;
获取所述其他候选节点基于所述第二确认信息返回的第二状态更改确认信息,确认本节点的状态更改为主节点。
一种区块链共识节点选择装置,应用于区块链网络中的节点,所述装置包括:
第一广播模块,用于响应于区块链任务启动信号,生成本节点对应的验证信息,并将所述验证信息广播至所述区块链网络中的其他节点;所述验证信息基于预设可验证随机函数以及本节点的节点信息得到;
第一确定模块,用于若接收到来自所述其他节点中设定数量的节点返回的第一验证通过信息,确定本节点为候选节点;所述第一验证通过信息为所述其他节点在第一验证条件下对所述验证信息验证通过时返回的信息;
第二广播模块,用于将所述验证信息广播至所述区块链网络中的其他候选节点;
第二确定模块,用于若接收到来自所述其他候选节点中设定数量的候选节点返回的第二验证通过信息,确定本候选节点为本轮区块链任务的主节点;所述第二验证通过信息为所述其他候选节点在第二验证条件下对所述验证信息验证通过时返回的信息。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述的方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法的步骤。
上述区块链共识节点选择方法、装置、计算机设备和存储介质,通过在需要进行节点变更时,将本节点的验证信息广播至区块链中的其他节点,并在接收到其他节点中设定数量的节点返回的第一验证通过信息时,确定本节点为候选节点;当本节点为候选节点时,将本候选节点验证信息广播至候选节点集中的多个候选节点,并在接收到来自其他候选节点中设定数量的候选节点返回的第二验证通过信息时,则确定本候选节点为主节点。相较于传统的通过代理权益证明或实用拜占庭容错算法进行节点选取,本方案通过利用基于多种节点信息以及可验证随机函数形成的验证信息,进行多轮验证,提高了节点选择的随机性,阻止了通过预测节点进行的网络攻击,从而实现提高节点安全性的效果。
附图说明
图1为一个实施例中区块链共识节点选择方法的应用环境图;
图2为一个实施例中区块链共识节点选择方法的流程示意图;
图3为另一个实施例中区块链共识节点选择方法的流程示意图;
图4为一个实施例中候选节点选择步骤的流程示意图;
图5为一个实施例中候选节点选择步骤数据交互的流程示意图;
图6为一个实施例中主节点选择步骤的流程示意图;
图7为一个实施例中主节点选择步骤数据交互的流程示意图;
图8为一个实施例中区块链共识节点选择装置的结构框图;
图9为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的区块链共识节点选择方法,可以应用于如图1所示的应用环境中。其中,服务器102以及服务器104可以是设置于同一区块链中的节点,服务器102可以是一个节点,服务器104可以是由多个节点组成的服务器集群形成。服务器102通过网络与服务器104进行通信。服务器102可以在区块链中需要选取节点时,例如区块链任务启动时,获取服务器102节点对应的验证信息,并将验证信息广播至服务器104中的其他节点,服务器104中的其他节点验证上述验证信息通过后,可以向服务器102返回第一验证通过信息,从而得到第一验证结果,当第一验证结果符合预设候选节点选择条件时,例如发送该信息的节点数量达到设定数量时,确定服务器102的节点为候选节点,并将上述验证信息广播至候选节点集中的其他候选节点,如服务器104中的其他候选节点,其他候选节点可以在利用第二验证条件验证上述验证信息通过后,向服务器102的候选节点返回第二验证通过信息,服务器102基于第二验证通过信息得到第二验证结果,若第二验证结果符合主节点选择条件,例如发送该信息的候选节点数量达到设定数量时,则确定服务器102的候选节点为本轮区块链任务的主节点。其中,服务器102以及服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种区块链共识节点选择方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
步骤S202,响应于区块链任务启动信号,生成本节点对应的验证信息,并将验证信息广播至所述区块链网络中的其他节点;验证信息基于预设可验证随机函数以及本节点的节点信息得到。
其中,服务器102以及服务器104均可以是设置于同一区块链中的节点,服务器102可以是一个上述区块链中的一个节点,服务器104可以是由区块链中多个节点对应的服务器组成的服务器集群形成,本实施例以服务器102为本节点为例。区块链中通常需要进行共识,从而从区块链中的各个节点中选取一个主节点进行区块链任务,例如负责区块的产生、验证和提交等任务。在区块链任务启动时,需要进行节点共识过程,服务器102可以在检测到区块链任务启动信号时,生成服务器102对应的本节点的验证信息,并将验证信息广播至本节点所在区块链中的至少一个其他节点,例如将验证信息发送至服务器104中的至少一个其他节点,上述至少一个其他节点可以各自接收服务器102发送的验证信息,并根据第一验证条件验证该验证信息,并根据验证的结果确定是否需要向上述服务器102返回信息,例如当上述验证通过时,各个其他节点可以向服务器102返回第一验证通过信息。其中,上述验证信息可以基于预设可验证随机函数以及本节点对应的节点信息得到。
例如,在一个实施例中,生成本节点对应的验证信息,包括:根据预设可验证随机函数,获取本节点对应的哈希输出值以及证明值;获取本节点对应的健康数值、本节点对应的公钥以及本节点对应的数字签名;健康数值基于本节点的节点信息以及本节点在每轮区块链任务中的参与度以及发送消息一致度得到;根据健康数值、当前时间、公钥、哈希输出值以及证明值,并通过数字签名进行加密,得到验证信息。本实施例中,服务器102可以基于预设可验证随机函数,计算得到服务器102对应的本节点的哈希输出值以及证明值。其中,可验证随机函数可以是一种用于进行验证的函数,可以根据特定输入产生特定输出,且该输出可以被验证确实是某个节点产生的一组函数,可验证随机函数的作用是:验证某个随机数确实是由发布该随机数的节点产生的。服务器102还可以获取本节点对应的健康数值、本节点对应的公钥以及本节点对应的数字签名,并根据健康数值;验证信息的发送时间,即当前时间;本节点的公钥;计算得到的哈希输出值和证明值,再通过本节点的数字签名进行加密,得到所述验证信息。其中,健康数值可以通过智能合约嵌入在每个节点中,通过共识协议进行调用,节点的健康数值可以基于本节点的节点信息以及本节点在每轮区块链任务中的参与度和发送消息一致度得到,具体可以通过预设的健康数值函数计算能得到;当前时间可以是上述验证信息发送的时间;公钥可以是本节点对应的公钥,公钥是与私钥算法一起使用的密钥对的非秘密一半,公钥和私钥是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),其中的一个向外界公开,称为公钥;另个自己保留,称为私钥,通过这种算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密,如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功;哈希输出值和证明值可以是通过预设可验证随机函数计算得到的数值,用于确定信息确实是由某个节点产生的;数字签名可以是本节点对应的数字签名,数字签名是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明,使用公钥加密领域的技术实现,用于鉴别数字信息。具体地,验证信息的格式可以如下所示:
步骤S204,若接收到来自其他节点中设定数量的节点返回的第一验证通过信息,确定本节点为候选节点;第一验证通过信息为其他节点在第一验证条件下对验证信息验证通过时返回的信息。
其中,验证信息可以是服务器102对应的本节点生成的用于进行节点验证的信息,服务器104中的至少一个其他节点可以接收来自上述服务器102发送的验证信息,且各个其他节点可以基于第一验证条件验证该验证信息,并根据验证的结果确定是否需要向服务器102返回信息,例如,验证不通过时,不返回信息,验证通过时,向服务器102返回第一验证通过信息。其中,第一验证条件可以是基于数字签名、哈希输出值、证明值以及健康数值的数值确定的验证条件。服务器102可以接收至少一个其他节点针对上述验证信息返回的第一验证通过信息,并基于接收到的第一验证通过信息得到第一验证结果。其中,第一验证通过信息可以是基于发送该验证通过信息的其他节点基于其节点信息生成的信息,用于通知服务器102的本节点验证通过。上述第一验证通过信息可以包含多个,服务器102可以基于第一验证通过信息的数量得到第一验证结果,并对第一验证结果进行判断,若第一验证结果符合预设候选节点选择条件,例如发送该第一验证通过信息的节点数量达到设定数量,则服务器102可以确定本节点为候选节点。例如,预设候选节点条件可以是基于数量形成的条件,服务器102可以根据接收到的第一验证通过信息的数量,确定是否通过验证,从而令本节点成为候选节点,例如当服务器102接收到的第一验证通过信息的数量足够多时,可以确定本节点为候选节点。具体地,上述第一验证通过信息的格式可以如下所示:其中,T表示节点验证通过返回消息给被验证节点i的时间戳,sigk表示该验证节点的数字签名,用以证明这个消息确实是由该节点发送的。
步骤S206,将所述验证信息广播至所述区块链网络中的其他候选节点。
其中,本节点可以是服务器102中的节点,候选节点可以是上述第一验证结果符合预设候选节点选择条件的节点,服务器102的本节点成为候选节点时,可以将本候选节点加入候选节点集,候选节点集中包括多个候选节点;且本轮区块链任务的主节点可以从候选节点集中选取得到。服务器102的节点成为候选节点后,可以将本候选节点对应的验证信息广播至本候选节点所在候选节点集中的至少一个其他候选节点,即区块链中的其他候选节点,其他候选节点可以接收来自服务器102发送的验证信息。
步骤S208,若接收到来自其他候选节点中设定数量的候选节点返回的第二验证通过信息,确定本候选节点为本轮区块链任务的主节点;第二验证通过信息为其他候选节点在第二验证条件下对验证信息验证通过时返回的信息。
其中,其他候选节点接收的验证信息可以包含一个或多个候选节点发送的验证信息,其他候选节点可以对接收到的验证信息进行验证,例如通过第二验证条件进行验证,并根据验证的结果确定对验证信息的处理,例如,当验证不通过时,其他候选节点可以直接将该验证信息删除;当验证通过时,其他候选节点可以向上述服务器102的候选节点发送第二验证通过信息。其中,由于其他候选节点接收到的验证信息可以包括多个,第二验证条件可以是基于所有被验证的候选节点的数字签名、所有被验证的候选节点的哈希输出值、所有被验证的候选节点的证明值以及所有被验证的候选节点的健康数值的高低得到。
当候选节点集中的其他候选节点对服务器102的候选节点的验证信息验证通过时,可以向服务器102发送第二验证通过信息,第二验证通过信息包括发送该验证通过信息的其他候选节点验证的所有节点的信息以及该其他候选节点自身的数字签名得到。服务器102接收到的第二验证通过信息可以有多个,服务器102可以根据接收到的第二验证通过信息的数量,得到第二验证结果,当第二验证结果符合预设主节点选择条件时,例如发送该第二验证通过信息的候选节点数量达到设定数量,服务器102可以确定本候选节点为本轮区块链任务的主节点,从而可以进行将所有交易打包成区块,将区块添加到区块链上等操作。其中,第二验证结果可以基于服务器102接收到的第二验证通过信息的数量得到,预设主节点选择条件可以是基于数量的条件,例如,当第二验证通过信息的数量足够多时,服务器102可以确定本候选节点为本轮区块链任务中的主节点。
上述区块链共识节点选择方法中,通过在需要进行节点变更时,将本节点的验证信息广播至区块链中的其他节点,并在接收到其他节点中设定数量的节点返回的第一验证通过信息时,确定本节点为候选节点;当本节点为候选节点时,将本候选节点验证信息广播至候选节点集中的多个候选节点,并在接收到来自其他候选节点中设定数量的候选节点返回的第二验证通过信息时,则确定本候选节点为主节点。相较于传统的通过代理权益证明或实用拜占庭容错算法进行节点选取,本方案通过利用基于多种节点信息以及可验证随机函数形成的验证信息,进行多轮验证,提高了节点选择的随机性,阻止了通过预测节点进行的网络攻击,从而实现提高节点安全性的效果。
在一个实施例中,根据预设可验证随机函数,获取本节点对应的哈希输出值以及证明值,包括:获取本节点对应的私钥;将私钥输入所述哈希生成函数,获取哈希生成函数的输出结果;若输出结果在预设阈值范围内,将输出结果作为哈希输出值,并将私钥输入所述证明生成函数,获取证明生成函数输出的证明值。
本实施例中,上述预设可验证随机函数包括生成函数,生成函数中包含哈希生成函数以及证明生成函数。其中哈希生成函数可以用于计算哈希输出值、证明生成函数可以用于计算证明值。服务器102可以利用上述哈希生成函数以及证明生成函数得到本节点对应的哈希输出值以及证明值。服务器102可以获取本节点对应的私钥,其中,私钥可以是与公钥算法一起使用的密钥对的秘密一半,并且满足以下条件:公钥和私钥成对出现;公开的密钥叫公钥,只有自己知道的叫私钥;用公钥加密的数据只有对应的私钥可以解密;用私钥加密的数据只有对应的公钥可以解密;如果可以用公钥解密,则必然是对应的私钥加的密;如果可以用私钥解密,则必然是对应的公钥加的密。服务器102可以将上述私钥输入哈希生成函数,并获取哈希生成函数的输出结果。例如,服务器102可以利用本候选节点Ci,通过上述可验证随机函数中的哈希生成函数计算本候选节点的哈希输出值Ri。其中,哈希生成函数的具体函数形式可以如下所示:R=VRF_Hash(SK,M);其中,SK是节点的私钥,M是系统设定的一个固定值,R为哈希生成值。服务器102可以对输出结果进行判断,若本候选节点的哈希输出值Ri在预设阈值范围内,则服务器102可以将私钥输入证明生成函数,并获取证明生成函数输出的证明值。例如,服务器102可以在当Ri在设定的阈值范围内时,利用证明生成函数得到证明值Pi。其中,证明生成函数的具体函数形式可以如下所示:P=VRF_Proof(SK,M);其中SK是节点的私钥,M是系统设定的一个固定值,P为证明值。另外,服务器102还可以将计算出的Ri和Pi值公布给全网中的其它节点,同时发送经过数字签名加密的请求验证消息给全网的节点,令其他节点进行验证。
另外,服务器102还可以利用预设的函数获取节点的健康数值。在一个实施例中,获取本节点对应的健康数值,包括:若本节点在上一轮区块链任务中为候选节点,且本节点在上一轮区块链任务中向其他节点发送了相同共识信息且共识信息与最终共识结果一致,根据第一候选节点健康数值函数以及本节点对应的上一轮健康数值,得到本轮区块链任务中本节点对应的健康数值;若本节点在上一轮区块链任务中为候选节点,且本节点在上一轮区块链任务中不向其他节点发送共识信息和/或本节点的共识信息与最终共识结果不一致和/或本节点向不同的其他节点发送不同的共识信息,根据第二候选节点健康数值函数以及本节点对应的上一轮健康数值,得到本轮区块链任务中所述本节点对应的健康数值;若本节点在上一轮区块链任务中为主节点,且本节点在上一轮区块链任务中产生新区块,根据第一主节点健康数值函数以及本节点对应的上一轮健康数值,得到本轮区块链任务中本节点对应的健康数值;若本节点在上一轮区块链任务中为主节点,且本节点在上一轮区块链任务中未产生新区块和/或向不同的其他节点发送不同的共识信息,根据第二主节点健康数值函数以及本节点对应的上一轮健康数值,得到本轮区块链任务中本节点对应的健康数值。
本实施例中,区块链任务可以包括多轮任务,每一轮任务均可以进行节点选取,以得到该轮任务对应的主节点。由于可验证随机函数并不能完成固定数量的抽签任务,只能根据系统中所有节点的权重设定抽签的阈值,因此本发明引入了健康数值作为节点的权重,根据健康数值的分布情况来决定抽签的数量。即各个节点均可以有对应的健康数值。服务器102可以获取本节点在上一轮区块链任务中的状态,包括候选节点和主节点等。若本节点在上一轮区块链任务中为候选节点,且本节点在上一轮区块链任务中向其他节点发送了相同共识信息,并且该共识信息与最终共识结果一致,则本节点的健康数值可以增加,例如服务器102可以通过第一候选节点健康数值函数,根据本节点对应的上一轮健康数值,得到本轮区块链任务中本节点对应的健康数值。
若服务器102检测到本节点在上一轮区块链任务中为候选节点,且本节点在上一轮任务中包含下列一项行为:向其他节点发送共识信息、发送的共识信息与最终共识结果不一致、向不同的其他节点发送不同的共识信息;则服务器102可以确定本节点需要降低健康数值,服务器102可以通过第二候选节点健康函数,利用本节点对应的上一轮健康数值,得到本轮任务中本节点对应的健康数值。其中,第二候选节点健康数值函数可以是由多个函数组成的函数组形成。具体地,当本节点在上一轮任务中为候选节点时,其对应的候选节点健康数值函数可以如下所示:
其中,Hi可以是节点的健康数值,t可以是区块链任务的轮数,k可以是系统设定的值。由上述函数可知,对于候选节点而言,如果在当前视图的第t轮共识过程中向其他节点发送了相同的消息并且与最终共识结果一致,则该节点的健康数值会缓慢增加,但同样不会超过系统设定的阈值1。随着同一视图下共识次数的增多,健康数值增加的速度也会下降;如果候选节点在某轮没有参与共识过程,即不发送任何消息给其它节点,则其健康数值会按一定比例降低。如果候选节点参与了共识过程,但是发送的消息与最终结果不一致,则其健康数值也会降低。如果检测到同一共识节点发送了不同的信息列表,则该节点将被视为恶意节点,其健康数值降为0,并将其从当前的候选节点集中删除。
若服务器102检测到本节点在上一轮任务中为主节点,且本节点在上一轮任务中有产生新的区块,服务器102可以利用第一主节点健康数值函数以及本节点对应的上一轮健康数值,得到本轮任务中本节点对应的健康数值,例如将上一轮的健康数值输入至上述第一主节点健康数值中,得到本轮的健康数值。
若服务器102检测到本节点在上一轮区块链任务中为主节点,且本节点在上一轮任务中包含下列一项行为:不产生新区块、向不同的其他节点发动不同的共识信息;则服务器102可以根据第二主节点健康数值函数,以及本节点对应的上一轮健康数值,得到本轮任务中本节点对应的健康数值。其中,第二主节点健康数值函数可以是由多个函数组成的函数组。具体地,上述主节点健康数值函数的具体函数形式可以如下所示:
由上述函数可知,对于主节点来说,在当前主节点参与的当前视图第t轮共识过程中如果有新区块产生,那么该主节点的健康数值会相应增加,但健康数值不会超过系统所设定的阈值1。如果主节点所在的当前视图号一直没有更改,则该主节点健康数值的增长速度会变慢,为了避免系统的集中化处理,当健康数值为1且该主节点打包的区块数量达到阈值时会触发视图更改协议,选择新一轮视图的主节点。若该主节点所在视图过程中没有产生新区块或者不响应客户端的请求,健康数值会下降。如果主节点向其它候选节点发送了不同的信息,那么主节点的健康数值将直接降为0,将该主节点踢出候选节点集,同时触发视图更改协议,更换主节点和视图。
通过上述实施例,服务器102可以利用哈希生成函数以及证明生成函数,得到本节点对应的哈希输出值以及证明值,用于进行节点验证;并利用候选节点健康数值函数以及主节点健康数值函数,得到本节点在每轮任务的健康数值,并且可以对积极参与的节点增加健康数值,对恶意节点或消极节点降低健康数值,从而提高了节点的安全性。
在一个实施例中,还包括:获取其他节点发送的验证信息;验证信息包括其他节点对应的数字签名、哈希输出值、证明值以及健康数值;根据哈希验证函数以及证明验证函数,判断其他节点对应的哈希输出值以及证明值是否正确;若其他节点对应的数字签名正确、其他节点对应的哈希输出值和证明值正确、以及其他节点对应的健康数值大于或等于预设健康数值阈值,确定其他节点通过验证;根据本节点对应的数字签名以及当前时间,生成第一验证通过信息并返回至其他节点,以使其他节点根据接收到的至少一个第一验证通过信息以及其他节点对应的数字签名,生成对应的第一确认信息并发送至本节点;获取其他节点发送的第一确认信息,判断第一确认信息中的至少一个第一验证通过信息是否正确以及其他节点对应的数字签名是否正确;若至少一个第一验证通过信息正确且其他节点对应的数字签名正确,向其他节点发送第一状态更改确认信息,以使其他节点根据第一状态更改确认信息,确定其他节点为候选节点。
本实施例中,上述预设可验证随机函数可以包括哈希验证函数以及证明验证函数。其中,哈希验证函数可以用于验证上述哈希输出值,证明验证函数可以用于验证上述证明值。上述候选节点的选取过程中,区块链中的其他节点也可以参与候选节点的选取,并且服务器102也可以对其他节点进行验证。服务器102可以获取其他节点发送的验证信息,验证信息包括其他节点的数字签名、哈希输出值、证明值以及健康数值。服务器102可以对上述其他节点的验证信息进行验证,验证步骤如下:接受到来自其他节点的请求验证消息后,需要验证签名是否正确、验证Ri,Pi的值是否正确以及检查该节点的健康数值是否达到阈值A。若上述其他节点的数字签名正确、其他节点对应的哈希输出值和证明值正确、以及其他节点对应的健康数值大于或等于预设健康数值阈值,则服务器102可以确定该其他节点通过验证,当服务器102确定节点通过验证后,可以根据本节点对应的数字签名,生成对应的第一验证通过信息并发送至通过验证的上述其他节点,例如,经过上述的验证通过后,验证节点将返回一个验证通过的消息给节点Ci。若验证不通过则不返回消息。验证通过消息的格式为:其中,T表示节点验证通过返回消息给被验证节点i的时间戳,sigk表示该验证节点的数字签名,用以证明这个消息确实是由该节点发送的。其他节点可以在接收到本节点发送的第一验证通过信息后,根据接收到的至少一个第一验证通过信息以及该其他节点的数字签名,生成第一确认信息发送至本节点。
服务器102在接收到其他节点发送的第一确认信息后,可以对第一确认信息中的至少一个第一验证通过信息是否正确进行判断,以及判断该其他节点的数字签名是否正确,若上述至少一个第一验证通过信息均正确,以及数字签名正确,则服务器102可以向其他节点发送第一状态更改确认信息,其他节点可以接收该第一状态更改确认信息,确认该其他节点为候选节点。具体地,在此阶段,本节点接收到来自被验证节点的确认消息后,需要验证Ψ消息集合中所有消息的正确性并验证节点i的签名是否正确,在验证通过后本节点确认该被验证节点已获得网络中大多数节点的共识,在本地日志中记录该被验证节点的状态更改,更发送一条确认消息返回给被验证节点。
通过本实施例,服务器102可以通过多段验证确定区块链中的节点是否可以通过验证成为候选节点,提高了节点的安全性。
在一个实施例中,若接收到来自其他节点中设定数量的节点返回的第一验证通过信息,确定本节点为候选节点,包括:接收其他节点返回的第一验证通过信息,获取第一验证通过信息的数量;若第一验证通过信息的数量与区块链中的节点数量的比值大于第一预设比值,确定本节点为候选节点。
本实施例中,服务器102可以根据其他节点返回的第一验证通过信息,确定第一验证结果。例如,服务器102可以接收来自多个其他节点发送的第一验证通过消息,每个第一验证通过信息可以根据发送该信息的其他节点基于该节点的数字签名以及发送该第一验证通过信息的时间戳得到。即每个第一验证通过信息对于其发送节点是唯一的。服务器102可以接收多个第一验证通过信息,并获取接收到的第一验证通过信息的和数量,作为第一验证结果。
服务器102还可以利用上述第一验证结果,确定本节点是否为候选节点。例如,服务器102可以将上述其他节点发送的第一验证通过信息的数量作为上述第一验证结果。并且服务器102还可以基于第一验证结果判断本节点是否为候选节点。例如,服务器102可以检测第一验证结果中的第一验证通过信息的数量,若大于一定数量,则确定第一验证结果通过,具体地,服务器102可以计算第一验证通过信息的数量与区块链中的节点数量的比值,若该比值大于第一预设比值,则说明区块链中大多数节点同意本节点成为候选节点,服务器102可以确定本节点为候选节点。
当服务器102确定本节点为候选节点后,可以向其他节点发送状态更改信息,使得其他节点更新自身的状态。例如,在一个实施例中,确定本节点为候选节点之后,还包括:向其他节点发送根据第一验证通过信息以及本节点对应的数字签名生成的第一确认信息;获取其他节点基于第一确认信息返回的第一状态更改确认信息,确认本节点的状态更改为候选节点。本实施例中,服务器102可以在确定本节点为候选节点后,根据上述第一验证通过信息以及本节点对应的数字签名,生成第一确认信息,例如,服务器102可以将接收到的所有第一验证通过信息形成集合,利用自身的数字签名进行加密后形成第一确认信息。服务器102可以将上述第一确认信息发送至其他节点,其他节点在接收到该第一确认信息后,需要验证Ψ消息集合中所有消息的正确性并验证节点i的签名是否正确,在验证通过后节点确认该被验证节点已获得网络中大多数节点的共识,在本地日志中记录该被验证节点的状态更改,更发送一条确认消息返回给被验证节点。
服务器102还可以获取至少一个其他节点基于上述第一确认信息返回的第一状态更改确认信息,从而令其他节点确认本节点更改为候选节点。具体地,服务器102的节点Ci接收到来自网络中其它节点的第一验证通过消息,并将这些消息收集打包,当节点Ci收到来自f+1个的不同候选节点的验证通过消息,则表示该节点得到了其它节点同意其选取为候选节点,并将此状态记录在自己的本地日志中。其中,f为系统中预设的容错数量。节点加入候选节点集并将返回一条第一确认消息给其它所有节点,该消息的格式为:其中,Ψ为被验证节点i接收到的来自超过f+1个的不同候选节点的验证通过消息的集合。当本节点接收到来自其他节点的确认状态更改信息后,正式成为获选节点,承担其在该系统中此阶段任务的角色。
通过上述实施例,服务器102可以基于三阶段的验证协议确认本节点是否为候选节点,从而提高了节点的安全性。
在一个实施例中,还包括:在预设时间内,获取至少一个其他候选节点发送的验证信息;验证信息包括其他候选节点对应的数字签名、哈希输出值、证明值以及健康数值;根据哈希验证函数以及证明验证函数,判断至少一个其他候选节点对应的哈希输出值以及证明值是否正确;若至少一个其他候选节点对应的数字签名正确、至少一个其他候选节点对应的哈希输出值和证明值正确,获取至少一个其他候选节点中每个其他候选节点对应的健康数值;将健康数值最高的其他候选节点作为验证通过的节点;根据本节点对应的数字签名、当前时间、至少一个其他候选节点的节点信息,生成第二验证通过信息并发送至通过验证的其他候选节点,以使其他候选节点根据接收到的至少一个第二验证通过信息,生成对应的第二确认信息并发送至本节点;获取其他候选节点发送的第二确认信息,判断第二确认信息中的至少一个其他候选节点的节点信息是否正确以及其他候选节点对应的数字签名是否正确;若节点信息正确且其他候选节点对应的数字签名正确,向其他候选节点发送第二状态更改确认信息,以使其他候选节点根据第二状态更改确认信息,确定其他候选节点为主节点。
本实施例中,成为候选节点的服务器102也可以为其他候选节点进行验证,从而完成主节点的选取。服务器102的候选节点可以在预设时间内获取至少一个其他候选节点发送的验证信息,其中其他候选节点的验证信息包括其他候选节点对应的数字签名、其他候选节点对应的哈希输出值、其他候选节点对应的证明值以及其他候选节点对应的健康数值。例如,当本候选节点接收到第一个其他候选节点发送的验证信息时,可以启动计时器Tp,在此时间段内,本候选节点可以持续接收其他候选节点发送的验证信息,在计时器停止时不再接收任何验证信息,并开始对接收到的其他候选节点的验证信息进行验证。
在验证阶段,服务器102可以根据预设可验证随机函数中的哈希验证函数以及证明验证函数,判断接收到的至少一个其他候选节点对应的哈希输出值以及证明值是否正确;具体地,哈希验证函数的函数形式可以如下所示:R=VRF_P2H(P);证明验证函数的函数形式可以如下所示:VRF_Verify(PK,M,P);其中,PK为被验证节点的公钥,P为被验证节点公布的证明值,R为被验证节点公布出的自己计算出的哈希输出;M为系统设定的固定数值。其中,可验证随机函数的随机性指的是,在不给定证明P的情况下,VRF_Hash的输出R与随机数两者之间是不可区分的,通过上述函数组,可保证安全不暴露私钥的前提下验证某一个随机输出确实是有特定节点生成的。并且,所示预设可验证随机函数具有以下特点:对于不同的输入,输出的值是随机的,并且均匀分布在值域范围内;对于相同的输入,它得到的输出一定是相同的。
服务器102对上述接收到的其他候选节点的验证信息进行判断后,若检测到该候选节点的验证信息中的数字签名不正确,服务器102可以直接将该验证信息删除;若服务器102检测到上述验证信息中的哈希输出值或证明值不正确,则服务器102可以直接将该验证信息删除。若服务器102检测到上述数字签名、哈希输出值以及证明值均正确,则服务器102可以获取接收到的各个其他候选节点对应的健康数值,并且可以将健康数值最高的其他候选节点作为验证通过的节点。例如,若服务器102接收到的其他候选节点的验证信息只有一个,则服务器102可以确定该节点为通过验证的节点;若服务器102接收到的其他候选节点的验证消息大于一个,则服务器102可以对比每个接收到的验证信息中的健康数值,将健康数值最大的验证信息对应的其他候选节点作为通过验证的节点。
服务器102在确定了通过验证的节点后,可以根据本节点对应的数字签名、当前时间、至少一个其他候选节点的节点信息,生成第二验证通过信息,并将第二验证通过信息发送至通过验证的其他候选节点,接收到第二验证通过信息后的其他候选节点可以基于至少一个第二验证通过信息,生成对应的第二确认信息发送至服务器102的节点。例如,假设在上述验证中,节点一共有C1-C7节点,服务器102的节点为C1,服务器102接收到了C2、C3的验证信息,并最终选择C3作为通过验证的节点,即服务器102选择C3作为主节点,则服务器102会返回第二验证通过信息至节点C3,第二验证通过信息的格式为:其中,T表示节点验证通过返回消息给被验证的其他候选节点i的时间戳,m表示服务器102的候选节点选择C3的证明消息摘要,Φ表示本候选节点收到的请求消息的集合,sigk表示本候选节点的数字签名,用以证明这个消息确实是由该节点发送的,且他人不能篡改。
服务器102还可以接收其他候选节点根据上述第二验证通过信息返回的第二确认信息,其中第二确认信息中可以包括该其他候选节点接收到的所有第二验证通过信息的集合以及该候选节点的数字签名,服务器102可以判断第二确认信息中的至少一个其他候选节点的节点信息是否正确,以及其他候选节点对应的数字签名是否正确,若节点信息均正确且数字签名正确,则服务器102可以向该其他候选节点发送第二状态更改确认信息,使得该其他候选节点在接收到该第二状态更改确认信息后,确定该其他候选节点在本区块链的本轮任务中为主节点。例如,当服务器102接收到其他候选节点发送的第二确认信息时,可以验证第二确认信息中,该其他节点接收到的所有第二验证通过信息形成的集合中所有第二验证通过信息的正确性,并验证该其他候选节点的数字签名是否正确,验证通过后,服务器102可以确定该其他候选节点获得了网络中大多数节点的共识,服务器102可以在本地日志中记录该主节点的状态更改,同时切换到当前主节点所在的视图号,发送一条确认消息,例如第二状态更改确认信息,返回给被验证的节点。
通过本实施例,服务器102可以通过多段验证确定区块链中的节点是否可以通过验证成为主节点,提高了节点的安全性。
在一个实施例中,若接收到来自其他候选节点中设定数量的候选节点返回的第二验证通过信息,确定本候选节点为本轮区块链任务的主节点,包括:接收其他候选节点返回的第二验证通过信息,获取第二验证通过信息的数量;若第二验证通过信息的数量与候选节点集中的节点数量的比值大于的第二预设比值,确定本节点为主节点。
本实施例中,作为候选节点的服务器102,可以向其他候选节点发送本候选节点的验证信息,其他候选节点可以在对本候选节点的验证信息进行验证,并在验证通过后,向本候选节点返回第二验证通过信息,由于其他候选节点可以有多个,因此本候选节点接收到的第二验证通过信息可以有多个,服务器102可以获取接收到的第二验证通过信息的数量,作为上述第二验证结果。服务器102还可以利用接收到的第二验证结果确定本候选节点是否为主节点。例如,第二验证结果中包括服务器102接收到的第二验证通过信息的数量,服务器102可以将接收到的第二验证通过信息的数量与本区块链中的由本轮任务的所有候选节点组成的候选节点集中的候选节点的节点数量比较,若第二验证通过信息的数量与候选节点集中的节点数量的比值大于第二预设比值,则服务器102可以确定本节点为主节点。例如,在这一步骤,所有通过计算出符合VRF输出条件并发送了验证信息的候选节点,将接收到来自其他候选节点的第二验证通过信息,例如服务器102接收会接收到其他候选节点发送的第二验证通过信息,服务器102可以将这些信息收集打包,当服务器102接收到相对于超过候选节点总数2/3的不同候选节点的第二验证通过信息时,则表示服务器102的候选节点得到大部分节点同意其作为主节点,服务器102可以将此状态记录在本地日志中,切换到自己当选主节点的视图,修改视图号。
在服务器102确定本节点为主节点后,可以向其他候选节点发送确认信息。例如,在一个实施例中,确定本节点为主节点之后,还包括:向其他候选节点发送根据第二验证通过信息以及本节点对应的数字签名生成的第二确认信息;获取其他候选节点基于第二确认信息返回的第二状态更改确认信息,确认本节点的状态更改为主节点。本实施例中,服务器102确定本候选节点为主节点后,可以根据接收到的所有第二验证通过信息,形成验证通过信息的集合,并根据该集合以及服务器102的候选节点的数字签名,形成第二确认信息,发送至其他候选节点。例如,作为主节点的服务器102可以返回一条确认消息,例如第二确认信息,给其它所有候选节点,该消息的格式为:其中,Ψ为主节点i接收到的来自其它个不同节点的验证通过消息的集合,sigP为该节点的数字签名。其他候选节点接收到第二确认信息后,可以检测上述集合中的所有第二验证通过信息的正确性,并验证发送该第二确认信息的主节点的数字签名是否正确,在验证通过后,其他候选节点可以向服务器102返回第二状态更改确认信息,服务器102可以获取至少一个其他候选节点基于第二确认信息返回的第二状态更改确认信息,确认本节点的状态更改为主节点,服务器102在收到来自其他候选节点的确认状态更改信息后,正式成为主节点,承担其在该系统中此阶段任务的角色,开始处理系统中到来的请求。
通过上述实施例,服务器102可以基于三阶段的验证协议确认本节点是否为主节点,从而提高了节点的安全性。
在一个实施例中,如图3所示,图3为另一个实施例中区块链共识节点选择方法的流程示意图。包括以下流程:区块链系统设置第一轮候选节点集选举的VRF(可验证随机函数)输出阈值,利用该阈值从区块链系统中抽取共识节点委员集,集上述的候选节点集,并从候选节点集中,通过节点的健康数值和VRF值的衡量,从候选节点中选取得到本轮任务的主节点。具体地,如图4所示,图4为一个实施例中候选节点选择步骤的流程示意图。系统中的所有节点利用自己的私钥和随机数种子计算本地VRF输出,即利用预设可验证随机函数进行计算,得到VRF哈希输出值和VRF证明值,若计算出的哈希输出值和证明值均在预设阈值范围内,则该节点将自己的哈希输出值和证明值广播至其他节点,等待全网中超过f+1(f为区块链系统中设定的容错数量)个节点的一致性确认共识后加入共识节点委员集,即上述候选节点集。候选节点的验证过程可以如图5所示,图5为一个实施例中候选节点选择步骤数据交互的流程示意图。包括请求阶段、验证阶段以及确认阶段。如图5,在请求阶段,候选节点Ci利用可验证随机函数中的VRF_hash(SK,α)函数计算出本节点的VRF哈希输出Ri,若Ri在系统设定的阈值范围内,则该节点通过证明函数VRF_proof(SK,M)得到自己证明值Pi,然后节点Ci将计算出的Ri和Pi值公布给全网中的其它节点,同时发送经过数字签名加密的请求验证消息给全网的节点。在验证阶段,包括验证和验证收集两个步骤。在验证步骤中,其它节点接受到来自节点Ci的请求验证消息后,需要:验证签名是否正确;验证Ri,Pi的值是否正确;检查该节点的健康分数是否达到阈值A;经过上述的验证通过后,验证节点将返回一个验证通过的消息给节点Ci。若验证不通过则不返回消息。在验证收集阶段,节点Ci接收到来自网络中其它节点的验证通过消息,并将这些消息收集打包,当节点Ci收到来自f+1个的不同候选节点的验证通过消息,则表示该节点得到了其它节点同意其选取为候选节点,并将此状态记录在自己的本地日志中,节点加入候选节点集并将返回一条确认消息给其它所有节点。
在确认阶段,分为确认和确认收集两个步骤。其中,确认步骤包括:网络中其它节点接收到来自被验证节点的确认消息后,需要验证Ψ消息集合中所有消息的正确性并验证节点i的签名是否正确,在验证通过后节点确认该被验证节点已获得网络中大多数节点的共识,在本地日志中记录该被验证节点的状态更改,更发送一条确认消息返回给被验证节点。确认收集步骤包括:被验证节点收到来自其它节点的确认状态更改消息后,正式成为候选节点,承担其在该系统中此阶段任务的角色。
候选节点集选取完成后,系统可以继续进行主节点的选取,如图6所示,图6为一个实施例中主节点选择步骤的流程示意图。主节点在候选节点集中产生,候选节点选取完成后,候选节点开始进行第二轮的VRF计算,若计算出的哈希输出符合成为主节点输出阈值的要求,则该节点广播自己的VRF输出和证明,向候选节点集中其它节点请求认证。主节点的验证过程可以如图7所示,图7为一个实施例中主节点选择步骤数据交互的流程示意图。包括请求阶段、验证阶段以及确认阶段。其中,在请求阶段,如图7,假设候选节点C1,C2都利用可验证随机函数中的VRF_Hash(SK,M)函数计算出的VRF哈希输出Rp都在系统设定的阈值范围内,则这两个节点通过证明函数VRF_Proof(SK,M)得到自己证明值Pi,然后C1,C2发送经过数字签名加密的请求验证消息给共识委员节点,即候选节点。
在验证阶段,包括验证和验证收集两个步骤。在验证步骤中,其它候选节点在接收到第一个验证请求消息时,启动计时器Tp,在计时器停止时不再接收任何请求验证消息,开始对接收到的请求验证消息进行验证,验证过程需要:检查所有被验证节点的签名是否正确,若不正确直接将此消息删除;检查被验证节点发送的Rp,Pp的值是否正确,若不正确直接将此消息删除;比较计时器时间段内所有收到的被验证节点的健康分数值,选择健康分数最高的节点为主节点。假设在上述验证中,C3-C7验证节点最后选择了C1作为主节点,则将返回一个验证通过的消息给节点C1。在验证收集步骤,所有通过计算出符合VRF输出条件并发送了请求验证消息的候选主节点将接收到来自其它候选节点的验证通过消息,并将这些消息收集打包,当节点收到来自超过2/3个不同候选节点的验证通过消息,则表示该节点得到了大部分节点同意其选取为主节点,并将此状态记录在自己的本地日志中,切换到自己当选主节点的视图,修改视图号。然后主节点该消息返回一条确认消息给其它所有候选节点。
在确认阶段,包括确认和确认收集两个步骤。在确认步骤中,其它候选节点接收到来自C1节点的确认消息后,需要验证Ψ消息集合中所有消息的正确性并验证主节点P的签名是否正确,在验证通过后节点确认该C1节点已获得网络中大多数节点的共识,在本地日志中记录该主节点的状态更改,同时切换到当前主节点所在的视图号,发送一条确认消息返回给被验证节点。确认收集步骤中,被验证节点收到来自其它节点的确认状态更改消息后,正式成为主节点,承担其在该系统中此阶段任务的角色,开始处理系统中到来的请求。
通过本实施例,区块链系统中的节点采用可验证随机函数在所有节点中进行随机选择,恶意节点不能根据特定规律提前预测下一个主节点的编号,相比现有技术中节点的选择方法,更具有随机性,从而提高了节点的安全性。
应该理解的是,虽然图2-图7的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-图7中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图8所示,提供了一种区块链共识节点选择装置,包括:第一广播模块500、第一确定模块502、第二广播模块504和第二确定模块506,其中:
第一广播模块500,用于响应于区块链任务启动信号,生成本节点对应的验证信息,并将验证信息广播至所述区块链网络中的其他节点;验证信息基于预设可验证随机函数以及本节点的节点信息得到。
第一确定模块502,用于若接收到来自其他节点中设定数量的节点返回的第一验证通过信息,确定本节点为候选节点;第一验证通过信息为其他节点在第一验证条件下对验证信息验证通过时返回的信息。
第二广播模块504,用于将所述验证信息广播至所述区块链网络中的其他候选节点。
第二确定模块506,用于若接收到来自其他候选节点中设定数量的候选节点返回的第二验证通过信息,确定本候选节点为本轮区块链任务的主节点;第二验证通过信息为其他候选节点在第二验证条件下对验证信息验证通过时返回的信息。
在一个实施例中,上述第一广播模块500,具体用于根据预设可验证随机函数,获取本节点对应的哈希输出值以及证明值;获取本节点对应的健康数值、本节点对应的公钥以及本节点对应的数字签名;健康数值基于本节点的节点信息以及本节点在每轮区块链任务中的参与度以及发送消息一致度得到;根据健康数值、当前时间、公钥、哈希输出值以及证明值,并通过数字签名进行加密,得到验证信息。
在一个实施例中,上述第一广播模块500,具体用于获取本节点对应的私钥;将私钥输入所述哈希生成函数,获取哈希生成函数的输出结果;若输出结果在预设阈值范围内,将输出结果作为哈希输出值,并将私钥输入所述证明生成函数,获取证明生成函数输出的证明值。
在一个实施例中,上述第一广播模块500,具体用于若本节点在上一轮区块链任务中为候选节点,且本节点在上一轮区块链任务中向其他节点发送了相同共识信息且共识信息与最终共识结果一致,根据第一候选节点健康数值函数以及本节点对应的上一轮健康数值,得到本轮区块链任务中本节点对应的健康数值;若本节点在上一轮区块链任务中为候选节点,且本节点在上一轮区块链任务中不向其他节点发送共识信息和/或本节点的共识信息与最终共识结果不一致和/或本节点向不同的其他节点发送不同的共识信息,根据第二候选节点健康数值函数以及本节点对应的上一轮健康数值,得到本轮区块链任务中所述本节点对应的健康数值;若本节点在上一轮区块链任务中为主节点,且本节点在上一轮区块链任务中产生新区块,根据第一主节点健康数值函数以及本节点对应的上一轮健康数值,得到本轮区块链任务中本节点对应的健康数值;若本节点在上一轮区块链任务中为主节点,且本节点在上一轮区块链任务中未产生新区块和/或向不同的其他节点发送不同的共识信息,根据第二主节点健康数值函数以及本节点对应的上一轮健康数值,得到本轮区块链任务中本节点对应的健康数值。
在一个实施例中,上述装置还包括:第一验证模块,用于获取其他节点发送的验证信息;验证信息包括其他节点对应的数字签名、哈希输出值、证明值以及健康数值;根据哈希验证函数以及证明验证函数,判断其他节点对应的哈希输出值以及证明值是否正确;若其他节点对应的数字签名正确、其他节点对应的哈希输出值和证明值正确、以及其他节点对应的健康数值大于或等于预设健康数值阈值,确定其他节点通过验证;根据本节点对应的数字签名以及当前时间,生成第一验证通过信息并返回至其他节点,以使其他节点根据接收到的至少一个第一验证通过信息以及其他节点对应的数字签名,生成对应的第一确认信息并发送至本节点;获取其他节点发送的第一确认信息,判断第一确认信息中的至少一个第一验证通过信息是否正确以及其他节点对应的数字签名是否正确;若至少一个第一验证通过信息正确且其他节点对应的数字签名正确,向其他节点发送第一状态更改确认信息,以使其他节点根据第一状态更改确认信息,确定其他节点为候选节点。
在一个实施例中,上述第一确定模块502,具体用于接收其他节点返回的第一验证通过信息,获取第一验证通过信息的数量;若第一验证通过信息的数量与区块链中的节点数量的比值大于第一预设比值,确定本节点为候选节点。
在一个实施例中,上述装置还包括:第一确认模块,用于向至少一个其他节点发送根据第一验证通过信息以及本节点对应的数字签名生成的第一确认信息;获取至少一个其他节点基于第一确认信息返回的第一状态更改确认信息,确认本节点的状态更改为候选节点。
在一个实施例中,上述装置还包括:第二验证模块,用于在预设时间内,获取至少一个其他候选节点发送的验证信息;验证信息包括其他候选节点对应的数字签名、哈希输出值、证明值以及健康数值;根据哈希验证函数以及证明验证函数,判断至少一个其他候选节点对应的哈希输出值以及证明值是否正确;若至少一个其他候选节点对应的数字签名正确、至少一个其他候选节点对应的哈希输出值和证明值正确,获取至少一个其他候选节点中每个其他候选节点对应的健康数值;将健康数值最高的其他候选节点作为验证通过的节点;根据本节点对应的数字签名、当前时间、至少一个其他候选节点的节点信息,生成第二验证通过信息并发送至通过验证的其他候选节点,以使其他候选节点根据接收到的至少一个第二验证通过信息,生成对应的第二确认信息并发送至本节点;获取其他候选节点发送的第二确认信息,判断第二确认信息中的至少一个其他候选节点的节点信息是否正确以及其他候选节点对应的数字签名是否正确;若节点信息正确且其他候选节点对应的数字签名正确,向其他候选节点发送第二状态更改确认信息,以使其他候选节点根据第二状态更改确认信息,确定其他候选节点为主节点。
在一个实施例中,上述第二确定模块506,具体用于接收其他候选节点返回的第二验证通过信息,获取第二验证通过信息的数量;若第二验证通过信息的数量与候选节点集中的节点数量的比值大于的第二预设比值,确定本节点为主节点。
在一个实施例中,上述装置还包括:第二确认模块,用于向其他候选节点发送根据第二验证通过信息以及本节点对应的数字签名生成的第二确认信息;获取其他候选节点基于第二确认信息返回的第二状态更改确认信息,确认本节点的状态更改为主节点。
关于区块链共识节点选择装置的具体限定可以参见上文中对于区块链共识节点选择方法的限定,在此不再赘述。上述区块链共识节点选择装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储节点数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种区块链共识节点选择方法。
本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述的区块链共识节点选择方法。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述的区块链共识节点选择方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (11)
1.一种区块链共识节点选择方法,其特征在于,应用于区块链网络中的节点,所述方法包括:
响应于区块链任务启动信号,生成本节点对应的验证信息,并将所述验证信息广播至所述区块链网络中的其他节点;所述验证信息基于预设可验证随机函数以及本节点的节点信息得到;
若接收到来自所述其他节点中设定数量的节点返回的第一验证通过信息,确定本节点为候选节点;所述第一验证通过信息为所述其他节点在第一验证条件下对所述验证信息验证通过时返回的信息;
将所述验证信息广播至所述区块链网络中的其他候选节点;
若接收到来自所述其他候选节点中设定数量的候选节点返回的第二验证通过信息,确定本候选节点为本轮区块链任务的主节点;所述第二验证通过信息为所述其他候选节点在第二验证条件下对所述验证信息验证通过时返回的信息。
2.根据权利要求1所述的方法,其特征在于,所述生成本节点对应的验证信息,包括:
根据预设可验证随机函数,获取本节点对应的哈希输出值以及证明值;
获取本节点对应的健康数值、本节点对应的公钥以及本节点对应的数字签名;所述健康数值基于本节点的节点信息以及本节点在每轮区块链任务中的参与度以及发送消息一致度得到;
根据所述健康数值、当前时间、所述公钥、所述哈希输出值以及所述证明值,并通过所述数字签名进行加密,得到所述验证信息。
3.根据权利要求2所述的方法,其特征在于,所述预设可验证随机函数包括哈希生成函数以及证明生成函数;
所述根据预设可验证随机函数,获取本节点对应的哈希输出值以及证明值,包括:
获取本节点对应的私钥;
将所述私钥输入所述哈希生成函数,获取所述哈希生成函数的输出结果;
若所述输出结果在预设阈值范围内,将所述输出结果作为所述哈希输出值,并将所述私钥输入所述证明生成函数,获取所述证明生成函数输出的证明值。
4.根据权利要求2所述的方法,其特征在于,所述获取本节点对应的健康数值,包括:
若所述本节点在上一轮区块链任务中为候选节点,且所述本节点在所述上一轮区块链任务中向其他节点发送了相同共识信息且所述共识信息与最终共识结果一致,根据第一候选节点健康数值函数以及所述本节点对应的上一轮健康数值,得到本轮区块链任务中所述本节点对应的健康数值;
若所述本节点在上一轮区块链任务中为候选节点,且所述本节点在所述上一轮区块链任务中不向所述其他节点发送所述共识信息和/或所述本节点的共识信息与所述最终共识结果不一致和/或所述本节点向不同的所述其他节点发送不同的所述共识信息,根据第二候选节点健康数值函数以及所述本节点对应的上一轮健康数值,得到本轮区块链任务中所述本节点对应的健康数值;
若所述本节点在上一轮区块链任务中为主节点,且所述本节点在所述上一轮区块链任务中产生新区块,根据第一主节点健康数值函数以及所述本节点对应的上一轮健康数值,得到本轮区块链任务中所述本节点对应的健康数值;
若所述本节点在上一轮区块链任务中为主节点,且所述本节点在所述上一轮区块链任务中未产生新区块和/或向不同的其他节点发送不同的共识信息,根据第二主节点健康数值函数以及所述本节点对应的上一轮健康数值,得到本轮区块链任务中所述本节点对应的健康数值。
5.根据权利要求2所述的方法,其特征在于,所述预设可验证随机函数包括哈希验证函数以及证明验证函数;
所述方法还包括:
获取所述其他节点发送的验证信息;所述验证信息包括所述其他节点对应的数字签名、哈希输出值、证明值以及健康数值;
根据所述哈希验证函数以及所述证明验证函数,判断所述其他节点对应的哈希输出值以及证明值是否正确;
若所述其他节点对应的所述数字签名正确、所述其他节点对应的哈希输出值和所述证明值正确、以及所述其他节点对应的健康数值大于或等于预设健康数值阈值,确定所述其他节点通过验证;
根据所述本节点对应的数字签名以及当前时间,生成第一验证通过信息并返回至所述其他节点,以使所述其他节点根据接收到的至少一个所述第一验证通过信息以及所述其他节点对应的数字签名,生成对应的第一确认信息并发送至本节点;
获取所述其他节点发送的第一确认信息,判断所述第一确认信息中的至少一个第一验证通过信息是否正确以及所述其他节点对应的数字签名是否正确;若所述至少一个第一验证通过信息正确且所述其他节点对应的数字签名正确,向所述其他节点发送第一状态更改确认信息,以使所述其他节点根据所述第一状态更改确认信息,确定所述其他节点为候选节点。
6.根据权利要求5所述的方法,其特征在于,所述若接收到来自所述其他节点中设定数量的节点返回的第一验证通过信息,确定本节点为候选节点,包括:
接收所述其他节点返回的第一验证通过信息,获取所述第一验证通过信息的数量;
若所述第一验证通过信息的数量与所述区块链中的节点数量的比值大于第一预设比值,确定本节点为候选节点;
所述确定本节点为候选节点之后,还包括:
向所述其他节点发送根据所述第一验证通过信息以及本节点对应的数字签名生成的第一确认信息;
获取所述其他节点基于所述第一确认信息返回的第一状态更改确认信息,确认本节点的状态更改为候选节点。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在预设时间内,获取至少一个其他候选节点发送的验证信息;所述验证信息包括所述其他候选节点对应的数字签名、哈希输出值、证明值以及健康数值;
根据所述哈希验证函数以及所述证明验证函数,判断所述至少一个其他候选节点对应的哈希输出值以及证明值是否正确;
若所述至少一个其他候选节点对应的数字签名正确、所述至少一个其他候选节点对应的哈希输出值和所述证明值正确,获取所述至少一个其他候选节点中每个其他候选节点对应的健康数值;
将健康数值最高的其他候选节点作为验证通过的节点;
根据所述本节点对应的数字签名、当前时间、所述至少一个其他候选节点的节点信息,生成第二验证通过信息并发送至通过验证的其他候选节点,以使所述其他候选节点根据接收到的至少一个所述第二验证通过信息,生成对应的第二确认信息并发送至本节点;
获取所述其他候选节点发送的第二确认信息,判断所述第二确认信息中的至少一个其他候选节点的节点信息是否正确以及所述其他候选节点对应的数字签名是否正确;若所述节点信息正确且所述其他候选节点对应的数字签名正确,向所述其他候选节点发送第二状态更改确认信息,以使所述其他候选节点根据所述第二状态更改确认信息,确定所述其他候选节点为主节点。
8.根据权利要求7所述的方法,其特征在于,所述若接收到来自所述其他候选节点中设定数量的候选节点返回的第二验证通过信息,确定本候选节点为本轮区块链任务的主节点,包括:
接收所述其他候选节点返回的第二验证通过信息,获取所述第二验证通过信息的数量;
若所述第二验证通过信息的数量与所述候选节点集中的节点数量的比值大于的第二预设比值,确定本节点为主节点;
所述确定本节点为主节点之后,还包括:
向所述其他候选节点发送根据所述第二验证通过信息以及本节点对应的数字签名生成的第二确认信息;
获取所述其他候选节点基于所述第二确认信息返回的第二状态更改确认信息,确认本节点的状态更改为主节点。
9.一种区块链共识节点选择装置,其特征在于,应用于区块链网络中的节点,所述装置包括:
第一广播模块,用于响应于区块链任务启动信号,生成本节点对应的验证信息,并将所述验证信息广播至所述区块链网络中的其他节点;所述验证信息基于预设可验证随机函数以及本节点的节点信息得到;
第一确定模块,用于若接收到来自所述其他节点中设定数量的节点返回的第一验证通过信息,确定本节点为候选节点;所述第一验证通过信息为所述其他节点在第一验证条件下对所述验证信息验证通过时返回的信息;
第二广播模块,用于将所述验证信息广播至所述区块链网络中的其他候选节点;
第二确定模块,用于若接收到来自所述其他候选节点中设定数量的候选节点返回的第二验证通过信息,确定本候选节点为本轮区块链任务的主节点;所述第二验证通过信息为所述其他候选节点在第二验证条件下对所述验证信息验证通过时返回的信息。
10.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述的方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110395307.6A CN113301114B (zh) | 2021-04-13 | 2021-04-13 | 区块链共识节点选择方法、装置、计算机设备和存储介质 |
PCT/CN2021/114421 WO2022217807A1 (zh) | 2021-04-13 | 2021-08-25 | 区块链共识节点选择方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110395307.6A CN113301114B (zh) | 2021-04-13 | 2021-04-13 | 区块链共识节点选择方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113301114A true CN113301114A (zh) | 2021-08-24 |
CN113301114B CN113301114B (zh) | 2022-03-04 |
Family
ID=77319828
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110395307.6A Active CN113301114B (zh) | 2021-04-13 | 2021-04-13 | 区块链共识节点选择方法、装置、计算机设备和存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113301114B (zh) |
WO (1) | WO2022217807A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113922953A (zh) * | 2021-09-30 | 2022-01-11 | 联想(北京)有限公司 | 一种数据处理方法及装置 |
CN114338107A (zh) * | 2021-12-17 | 2022-04-12 | 中寰卫星导航通信有限公司 | 一种安全控制方法及装置 |
CN114362930A (zh) * | 2021-12-09 | 2022-04-15 | 重庆海尔制冷电器有限公司 | 区块链共识方法及计算机可读存储介质 |
WO2022217807A1 (zh) * | 2021-04-13 | 2022-10-20 | 广东电网有限责任公司 | 区块链共识节点选择方法、装置、计算机设备和存储介质 |
CN115242497A (zh) * | 2022-07-21 | 2022-10-25 | 贵州风雷科技有限公司 | 一种基于区块链的数据防篡改方法及系统 |
CN117614611A (zh) * | 2024-01-24 | 2024-02-27 | 苏州元脑智能科技有限公司 | 一种区块链共识方法、系统和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190354693A1 (en) * | 2018-05-17 | 2019-11-21 | International Business Machines Corporation | Blockchain for managing access to medical data |
CN110599173A (zh) * | 2019-09-20 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 区块链的共识节点确定方法、装置、设备及存储介质 |
WO2020258831A1 (zh) * | 2019-06-28 | 2020-12-30 | 创新先进技术有限公司 | 用于区块链系统中的主节点切换处理的方法及装置 |
CN112491845A (zh) * | 2020-11-18 | 2021-03-12 | 北京数码视讯科技股份有限公司 | 节点准入方法、共识方法、装置、电子设备及存储介质 |
CN112564902A (zh) * | 2020-12-09 | 2021-03-26 | 苏州市星际云通区块链科技有限公司 | 一种区块链上可验证随机函数的共识方法及其系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11063746B2 (en) * | 2018-04-19 | 2021-07-13 | Electronics And Telecommunications Research Institute | Method for selecting consensus node using nonce and method and apparatus for generating blockchain using the same |
CN110784346B (zh) * | 2019-10-18 | 2022-07-29 | 深圳供电局有限公司 | 一种基于信誉值的pbft共识系统及方法 |
CN112102033B (zh) * | 2020-09-03 | 2023-08-18 | 西安电子科技大学 | 基于区块链的电力分布式交易嵌套共识方法、系统及应用 |
CN112257095B (zh) * | 2020-11-23 | 2022-03-22 | 中电万维信息技术有限责任公司 | 一种联盟链共识节点的选择方法 |
CN113301114B (zh) * | 2021-04-13 | 2022-03-04 | 广东电网有限责任公司 | 区块链共识节点选择方法、装置、计算机设备和存储介质 |
-
2021
- 2021-04-13 CN CN202110395307.6A patent/CN113301114B/zh active Active
- 2021-08-25 WO PCT/CN2021/114421 patent/WO2022217807A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190354693A1 (en) * | 2018-05-17 | 2019-11-21 | International Business Machines Corporation | Blockchain for managing access to medical data |
WO2020258831A1 (zh) * | 2019-06-28 | 2020-12-30 | 创新先进技术有限公司 | 用于区块链系统中的主节点切换处理的方法及装置 |
CN110599173A (zh) * | 2019-09-20 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 区块链的共识节点确定方法、装置、设备及存储介质 |
CN112491845A (zh) * | 2020-11-18 | 2021-03-12 | 北京数码视讯科技股份有限公司 | 节点准入方法、共识方法、装置、电子设备及存储介质 |
CN112564902A (zh) * | 2020-12-09 | 2021-03-26 | 苏州市星际云通区块链科技有限公司 | 一种区块链上可验证随机函数的共识方法及其系统 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022217807A1 (zh) * | 2021-04-13 | 2022-10-20 | 广东电网有限责任公司 | 区块链共识节点选择方法、装置、计算机设备和存储介质 |
CN113922953A (zh) * | 2021-09-30 | 2022-01-11 | 联想(北京)有限公司 | 一种数据处理方法及装置 |
CN114362930A (zh) * | 2021-12-09 | 2022-04-15 | 重庆海尔制冷电器有限公司 | 区块链共识方法及计算机可读存储介质 |
CN114338107A (zh) * | 2021-12-17 | 2022-04-12 | 中寰卫星导航通信有限公司 | 一种安全控制方法及装置 |
CN115242497A (zh) * | 2022-07-21 | 2022-10-25 | 贵州风雷科技有限公司 | 一种基于区块链的数据防篡改方法及系统 |
CN115242497B (zh) * | 2022-07-21 | 2023-06-09 | 深圳力维信息技术有限公司 | 一种基于区块链的数据防篡改方法及系统 |
CN117614611A (zh) * | 2024-01-24 | 2024-02-27 | 苏州元脑智能科技有限公司 | 一种区块链共识方法、系统和存储介质 |
CN117614611B (zh) * | 2024-01-24 | 2024-04-12 | 苏州元脑智能科技有限公司 | 一种区块链共识方法、系统和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113301114B (zh) | 2022-03-04 |
WO2022217807A1 (zh) | 2022-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113301114B (zh) | 区块链共识节点选择方法、装置、计算机设备和存储介质 | |
US11799637B2 (en) | Methods and systems for blockchain-implemented event-lock encryption | |
JP7289298B2 (ja) | 低エントロピーパスワードを用いてブロックチェーントランザクションを許可するためのコンピュータ実装されたシステム及び方法 | |
US11128522B2 (en) | Changing a master node in a blockchain system | |
CN111914027B (zh) | 一种区块链交易关键字可搜索加密方法及系统 | |
US6044463A (en) | Method and system for message delivery utilizing zero knowledge interactive proof protocol | |
CN111242617B (zh) | 用于执行交易正确性验证的方法及装置 | |
EP3861494A1 (en) | A consensus method and framework for a blockchain system | |
CN111541551B (zh) | 门限签名消息的处理方法、系统、存储介质及服务器 | |
CN111200641A (zh) | 数据跨链共享方法、系统,计算机设备和存储介质 | |
CN109379343B (zh) | 一种区块链的异构共识方法及终端 | |
CN112116349B (zh) | 面向高吞吐率的图式账本的随机化共识方法和装置 | |
Su et al. | Decentralized self-auditing scheme with errors localization for multi-cloud storage | |
CN113837758A (zh) | 一种区块链系统的共识方法及装置 | |
CN114139203A (zh) | 基于区块链的异构身份联盟风险评估系统、方法及终端 | |
CN110990790B (zh) | 一种数据处理方法及设备 | |
CN113379420A (zh) | 区块链的执行智能合约方法、计算机设备及区块链系统 | |
Zhang et al. | Efficient auditing scheme for secure data storage in fog-to-cloud computing | |
CN116389504A (zh) | 基于区块链的身份认证快速共识方法、系统、设备及介质 | |
CN113691376B (zh) | 一种密钥管理方法及装置 | |
GB2587541A (en) | A consensus method and framework for a blockchain system | |
Li et al. | A noninteractive multireplica provable data possession scheme based on smart contract | |
Alam | A novel authentication scheme for group based communication for IoT oriented infrastructure in smart cities | |
Chen et al. | Privacy-Preserving Anomaly Detection of Encrypted Smart Contract for Blockchain-Based Data Trading | |
CN113326527A (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 |