一种基于Raft算法的区块链共识方法和装置与流程

文档序号:22627430发布日期:2020-10-23 19:36阅读:178来源:国知局
一种基于Raft算法的区块链共识方法和装置与流程

本发明涉及区块链领域,尤其是涉及一种基于raft算法的区块链共识方法和装置。



背景技术:

目前,在区块链技术中最广泛使用的共识算法是pow算法、pbft算法和raft算法。

工作量证明算法pow用来确认某个节点做过一定的工作量,是在比特币系统中大获成功的共识算法,根据pow算法又衍生出了pos算法与dpos算法。

实用拜占庭容错算法pbft使得拜占庭容错算法在实际应用中取得了可被工程接受的效率,可容错节点为n/3-1。

raft算法是paxos算法的一种工程实现,降低了paxos算法的复杂度,raft算法主要对paxos算法做了两点优化,第一,raft算法的领导者节点发送的入链请求是连续的;第二,raft对领导者节点选举算法加以限制,只有拥有最新日志的节点才能成为领导者。raft可容错节点为n/2-1。

在联盟链与私有链的区块链应用中,pbft与raft是常用算法,raft算法比pbft算法对节点的安全性要求更高,raft算法要求节点错误不能是拜占庭错误,这在联盟链与私有链应用中并不是过高的要求,同时raft算法又相对pbft算法更为简单高效,因此,raft算法在联盟链与私有链应用中使用非常广泛。

但是,在很多联盟链与私有链应用场景中,raft算法所选举的领导者节点是负责日常持续记账的节点,并不是拥有最高管理权限的节点;拥有最高管理权限节点,一般不负责日常持续记账工作,但需要在必要时改变各节点的状态。所以,需要一种对raft算法进行修订的共识算法以满足上述区块链应用需求。

现有技术公开了一种应用于分布式新能源系统的基于raft算法的区块链共识方法,将共识节点按照可靠性分为候选组和跟随组;基于raft算法从候选组中通过初始选举流程选举领导者状态的共识节点。直接从共识节点中分类出候选组和跟随组,在此分类情况下使用raft算法选举领导者节点,不能保证管理节点在需要时就可以对区块链以及各节点进行管理。



技术实现要素:

本发明的目的就是为了克服上述现有技术存在的不能保证管理节点在需要时就可以对区块链以及各节点进行管理的缺陷而提供一种基于raft算法的区块链共识方法和装置。

本发明的目的可以通过以下技术方案来实现:

一种基于raft算法的区块链共识方法,具体包括以下步骤:

步骤s1:将区块链中的节点分为管理节点与成员节点,所述成员节点的状态包括跟随者、候选者或领导者,所述管理节点的状态包括跟随者、候选者、领导者或管理者;

步骤s2:所述管理节点初始的状态不为管理者,所有管理节点与成员节点基于常规raft算法进行领导者的选举,由选举出来的状态为领导者的节点负责记录交易事件并生成交易区块;

步骤s3:当所述管理节点的状态从不为管理者转换为管理者时,发送周期性心跳通知广播,收到所述周期性心跳通知广播的成员节点将状态转换为跟随者,状态为管理者的管理节点接管记录交易事件并生成交易区块,并通过周期性心跳广播更新区块链的状态信息;

步骤s4:当所述管理节点退出管理者的状态时,相应状态切换为跟随者,管理节点停止发送周期性心跳通知广播,不再收到周期性心跳通知广播的成员节点的状态从跟随者转换为候选者,转至步骤s2。

所述管理节点与成员节点的分类方法为根据节点类型、节点名称、ip地址和端口号进行标识,通过节点名称、ip地址和端口号分为管理节点与成员节点。

所述管理节点与成员节点的分类方法为根据节点类型、节点名称、ip地址、端口号和公钥密码进行标识,通过节点名称、ip地址、端口号、基于私钥的签名分为管理节点与成员节点。

所述管理节点的数量为1个或多个。

进一步地,所述同一时刻内最多只能有一个管理节点的状态转换为管理者。

进一步地,管理节点从其他状态转换为管理者,由应用层软件配置决定。

所述步骤s3中周期性心跳广播更新的区块链的状态信息包括管理节点的设置、成员节点的增加与删除、成员节点在raft常规算法中的状态、指定raft常规算法中的下一个领导者。

进一步地,所述步骤s3中周期性心跳广播更新的区块链的状态信息还包括区块链的更新和区块链的清零。

所述周期性心跳广播的发送频率由应用层软件配置决定。

所述成员节点内设有定时器,步骤s4中成员节点在每次收到周期性心跳通知广播时,清零定时器并开始计时,当定时器的记录时间大于广播间隔阈值时,成员节点的状态从跟随者转换为候选者。

一种使用基于raft算法的区块链共识方法的装置,包括存储器和处理器,所述以计算机程序的形式存储于所述存储器中,并由所述处理器执行,执行时实现以下步骤:

步骤s1:将区块链中的节点分为管理节点与成员节点,所述成员节点的状态包括跟随者、候选者或领导者,所述管理节点的状态包括跟随者、候选者、领导者或管理者;

步骤s2:所述管理节点初始的状态不为管理者,所有管理节点与成员节点基于常规raft算法进行领导者的选举,由选举出来的状态为领导者的节点负责记录交易事件并生成交易区块;

步骤s3:当所述管理节点的状态从不为管理者转换为管理者时,发送周期性心跳通知广播,收到所述周期性心跳通知广播的成员节点将状态转换为跟随者,状态为管理者的管理节点接管记录交易事件并生成交易区块,并通过周期性心跳广播更新区块链的状态信息;

步骤s4:当所述管理节点退出管理者的状态时,相应状态切换为跟随者,管理节点停止发送周期性心跳通知广播,不再收到周期性心跳通知广播的成员节点的状态从跟随者转换为候选者,转至步骤s2。

与现有技术相比,本发明通过提前将区块链中的节点分为管理节点和成员节点,对拥有管理权限的管理节点进行限定,当管理节点的状态转换为管理者后接管记录交易事件并生成交易区块,使具有最高管理权限的管理节点同时具有记录交易事件并生成交易区块的功能,在满足区块链基于常规raft算法的日常记账的同时,又满足对区块链以及各节点进行管理的需求,方便对节点进行统一管理。

附图说明

图1为本发明的流程示意图。

具体实施方式

下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。

实施例一

如图1所示,一种基于raft算法的区块链共识方法,在满足区块链基于常规raft算法的日常记账的同时,又满足对区块链以及各节点进行管理的需求,具体包括以下步骤:

步骤s1:将区块链中的节点分为管理节点与成员节点,成员节点的状态包括跟随者、候选者或领导者,管理者节点的状态包括跟随者、候选者、领导者或管理者;

步骤s2:管理节点初始的状态不为管理者,所有管理节点与成员节点基于常规raft算法进行领导者的选举,由选举出来的状态为领导者的节点负责记录交易事件并生成交易区块;

步骤s3:当管理节点的状态从不为管理者转换为管理者时,发送周期性心跳通知广播,收到周期性心跳通知广播的成员节点将状态转换为跟随者,状态为管理者的管理节点接管记录交易事件并生成交易区块,并通过周期性心跳广播更新区块链的状态信息;

步骤s4:当管理节点退出管理者的状态时,相应状态切换为跟随者,管理节点停止发送周期性心跳通知广播,不再收到周期性心跳通知广播的成员节点的状态从跟随者转换为候选者,转至步骤s2。

管理节点与成员节点的分类方法为根据节点类型、节点名称、ip地址和端口号进行标识,通过节点名称、ip地址和端口号分为管理节点与成员节点。

管理节点的数量为1个或多个,同一时刻内最多只能有一个管理节点的状态转换为管理者。

管理节点从其他状态转换为管理者,由应用层软件配置决定。

步骤s3中周期性心跳广播更新的区块链的状态信息包括管理节点的设置、成员节点的增加与删除、成员节点在raft常规算法中的状态、指定raft常规算法中的下一个领导者。

步骤s3中周期性心跳广播更新的区块链的状态信息还包括区块链的更新和区块链的清零。

周期性心跳广播的发送频率由应用层软件配置决定。

成员节点内设有定时器,步骤s4中成员节点在每次收到周期性心跳通知广播时,清零定时器并开始计时,当定时器的记录时间大于广播间隔阈值时,成员节点的状态从跟随者转换为候选者。

周期性心跳通知广播的内容包括管理节点标识与管理节点状态的信息,成员节点根据管理节点标识与管理节点状态的信息,知晓该广播为周期性心跳通知广播,并执行周期性心跳通知广播中所包含的更新区块链的状态信息的指令。

若常规raft算法的领导者状态节点由于故障,没有收到管理节点的周期性心跳通知广播,则系统将存在管理节点与原领导者状态节点,共两个记录交易事件并生成交易区块的节点,此冲突情况会上报至应用层软件,应用层软件将持续将管理节点的状态配置为管理者状态,通过周期性心跳广播更新区块链的各种状态,直至消除冲突情况,使得区块链系统达成新的共识状态。

一种使用基于raft算法的区块链共识方法的装置,包括存储器和处理器,以计算机程序的形式存储于存储器中,并由处理器执行,执行时实现以下步骤:

步骤s1:将区块链中的节点分为管理节点与成员节点,成员节点的状态包括跟随者、候选者或领导者,管理者节点的状态包括跟随者、候选者、领导者或管理者;

步骤s2:管理节点初始的状态不为管理者,所有管理节点与成员节点基于常规raft算法进行领导者的选举,由选举出来的状态为领导者的节点负责记录交易事件并生成交易区块;

步骤s3:当管理节点的状态从不为管理者转换为管理者时,发送周期性心跳通知广播,收到周期性心跳通知广播的成员节点将状态转换为跟随者,状态为管理者的管理节点接管记录交易事件并生成交易区块,并通过周期性心跳广播更新区块链的状态信息;

步骤s4:当管理节点退出管理者的状态时,相应状态切换为跟随者,管理节点停止发送周期性心跳通知广播,不再收到周期性心跳通知广播的成员节点的状态从跟随者转换为候选者,转至步骤s2。

实施例二

管理节点与成员节点的分类方法为根据节点类型、节点名称、ip地址、端口号和公钥密码进行标识,通过节点名称、ip地址、端口号、基于私钥的签名分为管理节点与成员节点。其余同实施例一。

此外,需要说明的是,本说明书中所描述的具体实施例,所取名称可以不同,本说明书中所描述的以上内容仅仅是对本发明结构所做的举例说明。凡依据本发明构思的构造、特征及原理所做的等效变化或者简单变化,均包括于本发明的保护范围内。本发明所属技术领域的技术人员可以对所描述的具体实例做各种各样的修改或补充或采用类似的方法,只要不偏离本发明的结构或者超越本权利要求书所定义的范围,均应属于本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1