有效
区块链共识节点选择方法、装置、计算机设备和存储介质
刘晔、蔡捷飞、黄小强、彭泽武、钱正浩、谢瀚阳
广东电网有限责任公司
摘要
本申请涉及一种区块链共识节点选择方法、装置、计算机设备和存储介质。通过将本节点的验证信息广播至区块链中的其他节点,接收到设定数量的第一验证通过信息时,确定本节点为候选节点;当本节点为候选节点时,将本候选节点验证信息广播至候选节点集中的多个候选节点,接受到设定数量的第二验证通过信息时,则确定本候选节点为主节点。相较于传统的通过代理权益证明或实用拜占庭容错算法进行节点选取,本方案通过利用基于多种节点信息以及可验证随机函数形成的验证信息,进行多轮验证,提高了节点选择的随机性,阻止了通过预测节点进行的网络攻击,从而实现提高节点安全性的效果。
1.一种区块链共识节点选择方法,其特征在于,应用于区块链网络中的节点,所述方法包括:响应于区块链任务启动信号,生成本节点对应的验证信息,并将所述验证信息广播至所述区块链网络中的其他节点;所述验证信息基于预设可验证随机函数以及本节点的节点信息得到;若接收到来自所述其他节点中设定数量的节点返回的第一验证通过信息,确定本节点为候选节点;所述第一验证通过信息为所述其他节点在第一验证条件下对所述验证信息验证通过时返回的信息;将所述验证信息广播至所述区块链网络中的其他候选节点;若接收到来自所述其他候选节点中设定数量的候选节点返回的第二验证通过信息,确定本候选节点为本轮区块链任务的主节点;所述第二验证通过信息为所述其他候选节点在第二验证条件下对所述验证信息验证通过时返回的信息。
2.根据权利要求1所述的方法,其特征在于,所述生成本节点对应的验证信息,包括:根据预设可验证随机函数,获取本节点对应的哈希输出值以及证明值;获取本节点对应的健康数值、本节点对应的公钥以及本节点对应的数字签名;所述健康数值基于本节点的节点信息以及本节点在每轮区块链任务中的参与度以及发送消息一致度得到;根据所述健康数值、当前时间、所述公钥、所述哈希输出值以及所述证明值,并通过所述数字签名进行加密,得到所述验证信息。
3.根据权利要求2所述的方法,其特征在于,所述预设可验证随机函数包括哈希生成函数以及证明生成函数;所述根据预设可验证随机函数,获取本节点对应的哈希输出值以及证明值,包括:获取本节点对应的私钥;将所述私钥输入所述哈希生成函数,获取所述哈希生成函数的输出结果;若所述输出结果在预设阈值范围内,将所述输出结果作为所述哈希输出值,并将所述私钥输入所述证明生成函数,获取所述证明生成函数输出的证明值。
4.根据权利要求2所述的方法,其特征在于,所述获取本节点对应的健康数值,包括:若所述本节点在上一轮区块链任务中为候选节点,且所述本节点在所述上一轮区块链任务中向其他节点发送了相同共识信息且所述共识信息与最终共识结果一致,根据第一候选节点健康数值函数以及所述本节点对应的上一轮健康数值,得到本轮区块链任务中所述本节点对应的健康数值;若所述本节点在上一轮区块链任务中为候选节点,且所述本节点在所述上一轮区块链任务中不向所述其他节点发送所述共识信息和/或所述本节点的共识信息与所述最终共识结果不一致和/或所述本节点向不同的所述其他节点发送不同的所述共识信息,根据第二候选节点健康数值函数以及所述本节点对应的上一轮健康数值,得到本轮区块链任务中所述本节点对应的健康数值;若所述本节点在上一轮区块链任务中为主节点,且所述本节点在所述上一轮区块链任务中产生新区块,根据第一主节点健康数值函数以及所述本节点对应的上一轮健康数值,得到本轮区块链任务中所述本节点对应的健康数值;若所述本节点在上一轮区块链任务中为主节点,且所述本节点在所述上一轮区块链任务中未产生新区块和/或向不同的其他节点发送不同的共识信息,根据第二主节点健康数值函数以及所述本节点对应的上一轮健康数值,得到本轮区块链任务中所述本节点对应的健康数值。
5.根据权利要求2所述的方法,其特征在于,所述预设可验证随机函数包括哈希验证函数以及证明验证函数;所述方法还包括:获取所述其他节点发送的验证信息;所述验证信息包括所述其他节点对应的数字签名、哈希输出值、证明值以及健康数值;根据所述哈希验证函数以及所述证明验证函数,判断所述其他节点对应的哈希输出值以及证明值是否正确;若所述其他节点对应的所述数字签名正确、所述其他节点对应的哈希输出值和所述证明值正确、以及所述其他节点对应的健康数值大于或等于预设健康数值阈值,确定所述其他节点通过验证;根据所述本节点对应的数字签名以及当前时间,生成第一验证通过信息并返回至所述其他节点,以使所述其他节点根据接收到的至少一个所述第一验证通过信息以及所述其他节点对应的数字签名,生成对应的第一确认信息并发送至本节点;获取所述其他节点发送的第一确认信息,判断所述第一确认信息中的至少一个第一验证通过信息是否正确以及所述其他节点对应的数字签名是否正确;若所述至少一个第一验证通过信息正确且所述其他节点对应的数字签名正确,向所述其他节点发送第一状态更改确认信息,以使所述其他节点根据所述第一状态更改确认信息,确定所述其他节点为候选节点。
6.根据权利要求5所述的方法,其特征在于,所述若接收到来自所述其他节点中设定数量的节点返回的第一验证通过信息,确定本节点为候选节点,包括:接收所述其他节点返回的第一验证通过信息,获取所述第一验证通过信息的数量;若所述第一验证通过信息的数量与所述区块链中的节点数量的比值大于第一预设比值,确定本节点为候选节点;所述确定本节点为候选节点之后,还包括:向所述其他节点发送根据所述第一验证通过信息以及本节点对应的数字签名生成的第一确认信息;获取所述其他节点基于所述第一确认信息返回的第一状态更改确认信息,确认本节点的状态更改为候选节点。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:在预设时间内,获取至少一个其他候选节点发送的验证信息;所述验证信息包括所述其他候选节点对应的数字签名、哈希输出值、证明值以及健康数值;根据所述哈希验证函数以及所述证明验证函数,判断所述至少一个其他候选节点对应的哈希输出值以及证明值是否正确;若所述至少一个其他候选节点对应的数字签名正确、所述至少一个其他候选节点对应的哈希输出值和所述证明值正确,获取所述至少一个其他候选节点中每个其他候选节点对应的健康数值;将健康数值最高的其他候选节点作为验证通过的节点;根据所述本节点对应的数字签名、当前时间、所述至少一个其他候选节点的节点信息,生成第二验证通过信息并发送至通过验证的其他候选节点,以使所述其他候选节点根据接收到的至少一个所述第二验证通过信息,生成对应的第二确认信息并发送至本节点;获取所述其他候选节点发送的第二确认信息,判断所述第二确认信息中的至少一个其他候选节点的节点信息是否正确以及所述其他候选节点对应的数字签名是否正确;若所述节点信息正确且所述其他候选节点对应的数字签名正确,向所述其他候选节点发送第二状态更改确认信息,以使所述其他候选节点根据所述第二状态更改确认信息,确定所述其他候选节点为主节点。
8.根据权利要求7所述的方法,其特征在于,所述若接收到来自所述其他候选节点中设定数量的候选节点返回的第二验证通过信息,确定本候选节点为本轮区块链任务的主节点,包括:接收所述其他候选节点返回的第二验证通过信息,获取所述第二验证通过信息的数量;若所述第二验证通过信息的数量与所述候选节点集中的节点数量的比值大于的第二预设比值,确定本节点为主节点;所述确定本节点为主节点之后,还包括:向所述其他候选节点发送根据所述第二验证通过信息以及本节点对应的数字签名生成的第二确认信息;获取所述其他候选节点基于所述第二确认信息返回的第二状态更改确认信息,确认本节点的状态更改为主节点。
9.一种区块链共识节点选择装置,其特征在于,应用于区块链网络中的节点,所述装置包括:第一广播模块,用于响应于区块链任务启动信号,生成本节点对应的验证信息,并将所述验证信息广播至所述区块链网络中的其他节点;所述验证信息基于预设可验证随机函数以及本节点的节点信息得到;第一确定模块,用于若接收到来自所述其他节点中设定数量的节点返回的第一验证通过信息,确定本节点为候选节点;所述第一验证通过信息为所述其他节点在第一验证条件下对所述验证信息验证通过时返回的信息;第二广播模块,用于将所述验证信息广播至所述区块链网络中的其他候选节点;第二确定模块,用于若接收到来自所述其他候选节点中设定数量的候选节点返回的第二验证通过信息,确定本候选节点为本轮区块链任务的主节点;所述第二验证通过信息为所述其他候选节点在第二验证条件下对所述验证信息验证通过时返回的信息。
10.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述的方法的步骤。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至8中任一项所述的方法的步骤。
暂无引用专利



