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

文档序号:17586004发布日期:2019-05-03 21:19阅读:223来源:国知局
基于Raft算法的区块链共识方法及装置与流程
本发明涉及通信
技术领域
,尤其涉及一种基于raft算法的区块链共识方法及装置。
背景技术
:目前,区块链常用的共识机制包括pow机制、pos机制以及dpos机制。上述机制在资源消耗、安全性以及共识时间各存在弊端。例如,pow机制的资源消耗较大,每次达成共识需要全网共同参与运算,需要耗费一定的计算时间,性能效率较低;pos机制和dpos机制根据用户持有的系统代币或权重来决定产生区块的概率,但并未维护区块链系统本身的生态及安全。基于上述存在的问题,专利号为201710062689.4的专利提出一种基于raft算法的区块链共识机制,以解决现有的区块链共识机制在资源消耗、安全性以及共识时间等方面存在的弊端。然而,上述专利中,下一任期的候选者由上一次任期的领导者随机选择推荐,由于推荐的候选者的随机性较大,使得区块链中的异常节点易被选举为候选者,增加了异常节点被选举为领导者的概率,导致区块链系统安全性较低;同时,在不依赖代币的区块链系统中,区块链系统的节点活跃度普遍偏低,也会导致区块链系统安全性降低。技术实现要素:本发明公开一种基于raft算法的区块链共识方法及装置,用于解决现有技术中基于raft算法的区块链中异常节点易被选举为候选者且节点活跃度较低导致区块链系统安全性较低的技术问题。第一方面,提供一种基于raft算法的区块链共识方法,区块链中包含预先设置的共识节点,共识节点的状态包括:领导者、跟随者以及候选者,其特征在于,区块链中还设置用于获取共识节点的节点信息的监管者节点,方法包括:在确定共识节点由跟随者状态转换为候选者状态进入选举流程后,通过监管者节点获取选举流程中各共识节点的节点信息;节点信息包括:区块高度、在线时长以及平均投票次数;基于raft算法选举领导者状态的共识节点,领导者状态的共识节点用于记录交易事件并生成新区块;当确定领导者状态的共识节点任期结束时,通过监管者节点将各共识节点的节点信息发送给领导者状态的共识节点;通过领导者状态的共识节点根据各共识节点的区块高度、在线时长、以及平均投票次数确定至多一个推荐候选者共识节点;通过领导者状态的共识节点广播推荐候选者共识节点;当确定推荐候选者共识节点的状态转换为候选者状态时,进入下一任期选举流程。本发明在区块链系统中设置监管者节点,并通过监管者节点跟踪并更新各共识节点的区块高度、在线时长以及平均投票次数,当领导者状态的共识节点任期结束时,领导者状态的共识节点根据监管者节点发送的更新后的各共识节点的区块高度、在线时长以及平均投票次数确定至多一个推荐候选者共识节点并将其进行广播,推荐候选者共识节点的状态转换为候选者状态,进入下一任期选举流程。由此可见,本发明在推荐候选者时,不在采用随机选取候选者的方式推荐候选者,而是能够根据各共识节点的区块高度、在线时长、以及平均投票次数确定候选者,不仅能够提高共识效率,缩短确认时间,还能够鼓励共识节点参与系统,提升节点活跃度,进而提升区块链系统安全性。第二方面,提供一种基于raft算法的区块链共识装置,区块链中包含预先设置的共识节点,共识节点的状态包括:领导者、跟随者以及候选者,其特征在于,区块链中还设置用于获取共识节点的节点信息的监管者节点,装置包括:获取模块,用于在确定共识节点由跟随者状态转换为候选者状态进入选举流程后,通过监管者节点获取选举流程中各共识节点的节点信息;节点信息包括:区块高度、在线时长以及平均投票次数;选举模块,用于在上述选举流程中基于raft算法选举领导者状态的共识节点,领导者状态的共识节点用于记录交易事件并生成新区块;发送模块,用于当确定领导者状态的共识节点任期结束时,通过监管者节点将各共识节点的节点信息发送给领导者状态的共识节点;确定模块,用于通过领导者状态的共识节点根据各共识节点的区块高度、在线时长、以及平均投票次数确定至多一个推荐候选者共识节点;广播模块,用于通过领导者状态的共识节点广播推荐候选者共识节点;选举触发模块,用于当确定推荐候选者共识节点的状态转换为候选者状态时,进入下一任期选举流程。第三方面,提供一种基于raft算法的区块链共识装置,包括:一个或多个处理器;处理器用于执行存储器中的计算机程序代码,计算机程序代码包括指令、使得基于raft算法的区块链共识装置执行上述第一方面的基于raft算法的区块链共识方法。第四方面,提供一种存储介质,其特征在于,存储介质存储有指令代码,指令代码用于执行如上述第一方面的基于raft算法的区块链共识方法。第五方面,提供一种计算机程序产品,其特征在于,计算机程序产品包括指令代码,指令代码用于执行如上述第一方面的基于raft算法的区块链共识方法。可以理解地,上述提供的基于raft算法的区块链共识装置、存储介质以及计算机产品用于执行上文所提供的第一方面对应的方法,因此,其所能达到的有益效果可参考上文第一方面的方法以及下文具体实施方式中对应的方案的有益效果,此处不再赘述。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。图1为本发明提供的一种基于raft算法的区块链共识方法的方法流程图;图2为本发明提供的一种基于raft算法的区块链共识方法的共识节点状态变化示意图;图3为本发明提供的一种基于raft算法的区块链共识装置的功能结构框图;图4为本发明提供的一种基于raft算法的区块链共识装置的功能结构框图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。术语“第一”和“第二”等的使用不表示任何顺序,可将上述术语解释为所描述对象的名称。在本发明实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本发明实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。区块链是源于比特币的底层技术,是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造,实现去中心化的分布式账本。智能合约:是一种运行在区块链的一段代码。智能合约可以维持自己的状态,控制自己的资产和对接收到的外界信息或者资产进行回应。共识节点:共识节点是组成区块链的基本单元,通常一个节点对应一个终端设备,保存账本的副本,可以担任不同角色,如发出交易、验证交易、记账等等。目前,在基于raft算法的区块链共识机制中,下一任期的候选者由上一次任期的领导者随机选择推荐,由于推荐的候选者的随机性较大,使得区块链中的异常节点易被选举为候选者,增加了异常节点被选举为领导者的概率,导致区块链系统安全性较低;同时,在不依赖代币的区块链系统中,区块链系统的节点活跃度普遍偏低,也会导致区块链系统安全性降低。基于上述存在的问题,本发明提供一种基于raft算法的区块链共识方法,其中,区块链中包含预先设置的共识节点,上述共识节点的状态包括:领导者、跟随者以及候选者;区块链中还设置用于获取共识节点的节点信息的监管者节点。具体地,参见图1所示,该方法包括:步骤s110:在确定共识节点由跟随者状态转换为候选者状态进入选举流程后,通过监管者节点获取选举流程中各共识节点的节点信息;节点信息包括:区块高度、在线时长以及平均投票次数。其中,当共识节点的由跟随者状态转换为候选者状态时,确定进入选举流程,具体可以为:在选举初始领导者状态的共识节点时,参见图2所示,在选举流程中,将全部共识节点的初始状态设置为跟随者状态(对应图2中跟随者节点),当跟随者状态的共识节点的任期增加时,例如跟随者状态的共识节点的选举定时器被触发使得跟随者状态的任期加1,此时该跟随者状态共识节点由跟随者状态转换为候选者状态,确定进入选举流程;或者在重选初始领导者状态的共识节点时(对应图2中重选流程),当前任期的领导者状态的共识节点广播推荐候选者共识节点(参见步骤s140中的对应描述,对应图2中候选者节点),推荐候选者共识节点由跟随者状态转换为候选者状态,确定进入选举流程。进入选举流程后,候选者状态的共识节点广播投票请求信令,即向区块链中跟随者状态的共识节点发送投票请求信令,其中携带候选者状态的共识节点的节点名称、ip地址、端口号、区块高度以及在线时长等共识节点的节点信息;跟随者状态的共识节点接收到上述投票请求信令后,向候选者状态的共识节点反馈投票信反馈信令,其中携带随者状态的共识节点的节点名称、ip地址、端口号、区块高度以及在线时长等共识节点的节点信息。其中,ip地址为用于标识共识节点的共识节点标识、端口号为共识节点的通信地址,区块高度为共识节点所在区块在区块链中的位置编号;在线时长为共识节点在区块链中处于在线状态的累计时长。则在本步骤中,通过监管者节点监听信道,获取选举流程中候选者状态的共识节点向跟随者状态的共识节点发送投票请求信令中携带的候选者状态的共识节点标识(即:共识节点的ip地址)、区块高度以及在线时长,以及获取选举流程中跟随者状态的共识节点向候选者状态的共识节点发送的投票反馈信令中携带的跟随者状态的共识节点标识(即:共识节点的ip地址)、区块高度以及在线时长。当然,可以理解的是,具体实施中,监管者节点还可以通过监听信道获取共识节点的节点名称、端口号等其它与共识节点相关的信息。同时,在上述过程中,通过监管者节点记录选举流程中各共识节点的投票次数;并通过所述监管者节点根据在每个任期的选举流程中记录的各共识节点的投票次数计算平均投票次数。具体实施中,平均投票次数的计算方式可以有多种,其中,在一种优选方式中,可以根据如下公式计算平均投票次数:其中,为第t个任期的平均投票次数,为第t-1个任期的实际投票次数,v(t)为第t个任期的实际投票次数,tc为时间窗口长度。具体实施中,tc的大小可以由本领域技术人员根据实际情况进行设置,本发明对此不作限定。当然,可以理解的是,上述平均投票次数的计算方式仅为一种优选方式,具体实施中,平均投票次数计算方式包含但不限于所列举的计算方式,例如,可以获取共识节点全部任期的选举流程中记录的各共识节点的投票次数之和,将其与该共识节点全部任期数量求商来获取平均投票次数,等等。优选地,具体实施中,可以预先设置包含共识节点标识、区块高度、在线时长以及平均投票次数的共识节点信息表,然后根据监管者节点获取的共识节点标识、区块高度以及在线时长更新预设的共识节点信息表中的区块高度、在线时长以及平均投票次数。可以理解的是,除上述共识节点的节点信息之外,共识节点信息表中还可以进一步记录共识节点的节点名称、端口号等其它与共识节点相关的信息。例如,在一种可选方式中,共识节点信息表中记录的共识节点的节点信息可以参见表1所示。表1共识节点信息表共识节点名称ip地址端口号区块高度在线时长平均投票次数步骤s120:在选举流程中基于raft算法选举领导者状态的共识节点,领导者状态的共识节点用于记录交易事件并生成新区块。具体地,在步骤s110的选举流程中,候选者状态的共识节点广播投票请求信令,跟随者状态的共识节点接收到上述投票请求信令后,向候选者状态的共识节点反馈投票信反馈信令以向候选者状态的共识节点投票,候选者状态的共识节点判断其所得票数是否大于或等于n/2+1,若是,则候选者状态的共识节点由候选者状态转换为领导者状态,领导者状态的共识节点向所有跟随者状态的共识节点发送通知,以确立其领导者身份,此时选举成功,进入记账流程,具体可以参见图2所示,在图2所示的记账流程中,共识节点的状态包括领导者状态的共识节点(即:图2中的领导者节点),以及随者状态的共识节点(即:图2中的跟随者节点);若否,则重新执行步骤s110。其中,记账流程可以通过如下方式执行:步骤s1:领导者状态的共识节点记录交易事件并生成新区块;步骤s2:领导者状态的共识节点将上述新区块广播至各跟随者状态的共识节点,跟随者状态的共识节点将新区块的内容保存在各自账本上。步骤s3:跟随者状态的共识节点将交易写入账本,确认追加成功,发出确认成功的消息,当超过n/2+1节点发出确认成功的消息时,该新区块被有效的记录。步骤s130:当领导者状态的共识节点任期结束时,监管者节点将各共识节点的节点信息发送给领导者状态的共识节点。具体地,领导者状态的共识节点任期结束的触发条件包括:区块链中生成新区块。当然,可以理解的是,具体实施中,可以为各共识节点设置的选举定时器,则领导者状态的共识节点任期结束的触发条件还可以为共识节点的选举定时器被触发,其中各选举定时器的触发时间不尽相同。优选地,若预先设置包含共识节点标识、区块高度、在线时长以及平均投票次数的共识节点信息表,则在本步骤中,可以通过所述监管者节点将所述预设的共识节点信息表发送给所述领导者状态的共识节点,以供领导者状态的共识节点从上述共识节点信息表中获取各共识节点的节点信息。其中,本步骤对应图2中任期结束的阶段,当当领导者状态的共识节点任期结束时,进入重选流程(即步骤s140)。步骤s140:领导者状态的共识节点根据各共识节点的区块高度、在线时长、以及平均投票次数确定至多一个推荐候选者共识节点。具体地,领导者状态的共识节点可以首先根据节点信息中携带的区块高度确定最大区块高度共识节点集合,然后根据最大区块高度共识节点集合中各共识节点的在线时长、以及平均投票次数计算各共识节点的u值,将u值最大的共识节点作为推荐候选者共识节点。其中,在一种可选的方式中,u值可以根据如下公式计算:u=α*在线时长+β*平均投票次数;其中,α为在线时长的权重调节系数;β为平均投票次数的权重调节系数。α和β可以由本领域技术人员根据实际情况进行设置,本发明对此不作限定。步骤s150:领导者状态的共识节点广播推荐候选者共识节点。具体地,参见图2所示,领导者状态的共识节点由领导者状态转换为跟随者状态,并广播推荐候选者共识节点。步骤s160:当确定推荐候选者共识节点的状态转换为候选者状态时,进入下一任期选举流程。根据步骤s150中广播的推荐候选者共识节点,推荐候选者共识节点由跟随者状态转换为候选者状态,进入下一任期选举流程。由此可见,本发明在区块链系统中设置监管者节点,并通过监管者节点跟踪并更新各共识节点的区块高度、在线时长以及平均投票次数,当领导者状态的共识节点任期结束时,领导者状态的共识节点根据监管者节点发送的更新后的各共识节点的区块高度、在线时长以及平均投票次数确定至多一个推荐候选者共识节点并将其进行广播,推荐候选者共识节点的状态转换为候选者状态,进入下一任期选举流程。由此可见,本发明在推荐候选者时,不在采用随机选取候选者的方式推荐候选者,而是能够根据各共识节点的区块高度、在线时长、以及平均投票次数确定候选者,不仅能够提高共识效率,缩短确认时间,还能够鼓励共识节点参与系统,提升节点活跃度,进而提升区块链系统安全性。本发明还提供一种基于raft算法的区块链共识装置,其中,区块链中包含预先设置的共识节点,共识节点的状态包括:领导者、跟随者以及候选者,区块链中还设置用于获取共识节点的节点信息的监管者节点,参见图3所示,该装置包括:获取模块31,用于在确定共识节点由跟随者状态转换为候选者状态进入选举流程后,通过监管者节点获取选举流程中各共识节点的节点信息;节点信息包括:区块高度、在线时长以及平均投票次数。可选地,获取模块31具体可以用于:通过监管者节点监听信道,获取选举流程中候选者状态的共识节点向跟随者状态的共识节点发送投票请求信令中携带的候选者状态的共识节点的共识节点标识、区块高度以及在线时长,以及获取选举流程中跟随者状态的共识节点向候选者状态的共识节点发送的投票反馈信令中携带的跟随者状态的共识节点的共识节点信息、区块高度以及在线时长;通过监管者节点统计选举流程中各共识节点的投票次数,根据在每个任期的选举流程中记录的各共识节点的投票次数计算平均投票次数;根据监管者节点获取的共识节点标识、区块高度、在线时长以及平均投票次数更新预设的共识节点信息表中的区块高度、在线时长、以及平均投票次数。则发送模块33具体可以用于:通过监管者节点将预设的共识节点信息表发送给领导者状态的共识节点。可选地,获取模块具体可以用于:根据如下公式计算平均投票次数:其中,为第t个任期的平均投票次数,为第t-1个任期的实际投票次数,v(t)为第t个任期的实际投票次数,tc为时间窗口长度。选举模块32,用于基于raft算法选举领导者状态的共识节点,领导者状态的共识节点用于记录交易事件并生成新区块;发送模块33,用于当确定领导者状态的共识节点任期结束时,通过监管者节点将各共识节点的节点信息发送给领导者状态的共识节点。其中,领导者状态的共识节点任期结束的触发条件包括:共识节点的选举定时器被触发;或者,区块链中生成新区块。确定模块34,用于通过领导者状态的共识节点根据发送模块发送的各共识节点的区块高度、在线时长、以及平均投票次数确定至多一个推荐候选者共识节点。可选地,确定模块34具体可以用于:通过领导者状态的共识节点根据节点信息中携带的区块高度确定最大区块高度共识节点集合;通过领导者状态的共识节点根据最大区块高度共识节点集合中各共识节点的在线时长、以及平均投票次数计算各共识节点的u值,将u值最大的共识节点作为推荐候选者共识节点。可选地,确定模块34可以进一步用于:根据如下公式计算u值:u=α*在线时长+β*平均投票次数;其中,α为在线时长的权重调节系数;β为平均投票次数的权重调节系数。广播模块35,用于通过领导者状态的共识节点根据确定模块确定的推荐候选者共识节点广播推荐候选者共识节点。选举触发模块36,用于当确定推荐候选者共识节点的状态转换为候选者状态时,进入下一任期选举流程。上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,其作用在此不再赘述。在采用集成的模块的情况下,基于raft算法的区块链共识装置包括:存储单元、处理单元以及接口单元。处理单元用于对基于raft算法的区块链共识装置的动作进行控制管理,例如,处理单元用于基于raft算法的区块链共识装置执行图1中的各步骤。接口单元用于基于raft算法的区块链共识装置与其他装置的交互;存储单元,用于存储应用于第一基站或第一基站的芯片基于raft算法的区块链共识装置的代码和数据。其中,以处理单元为处理器,存储单元为存储器,接口单元为通信接口为例。其中,基于raft算法的区块链共识装置参照图4中所示,包括通信接口401、处理器402、存储器403和总线404,通信接口401、处理器402通过总线404与存储器403相连。处理器402可以是一个通用中央处理器(centralprocessingunit,cpu),微处理器,特定应用集成电路(application-specificintegratedcircuit,asic),或一个或多个用于控制本申请方案程序执行的集成电路。存储器403可以是只读存储器(read-onlymemory,rom)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(randomaccessmemory,ram)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、只读光盘(compactdiscread-onlymemory,cd-rom)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。其中,存储器403用于存储执行本申请方案的应用程序代码,并由处理器402来控制执行。通讯接口401用于支持应用于基于raft算法的区块链共识装置与其他装置的交互。处理器402用于执行存储器403中存储的应用程序代码,从而实现本发明实施例中的方法。结合本发明公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。本发明实施例还提供一种存储介质,该存储介质可以包括存储器,用于储存为基于raft算法的区块链共识装置,或者基于raft算法的区块链共识装置所用的计算机软件指令,其包含执行本发明实施例的基于raft算法的区块链共识方法所设计的程序代码。具体的,软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(randomaccessmemory,ram)、闪存、只读存储器(readonlymemory,rom)、可擦除可编程只读存储器(erasableprogrammablerom,eprom)、电可擦可编程只读存储器(electricallyeprom,eeprom)、寄存器、硬盘、移动硬盘、只读光盘(cd-rom)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。本发明实施例还提供一种计算机程序,该计算机程序可直接加载到存储器中,并含有软件代码,该计算机程序经由计算机载入并执行后能够实现上述的基于raft算法的区块链共识方法。本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1