掌桥专利:专业的专利平台
掌桥专利
首页

领导节点选举方法、装置、设备和存储介质

文献发布时间:2023-06-19 13:27:45


领导节点选举方法、装置、设备和存储介质

技术领域

本申请涉及区块链技术领域,特别涉及一种领导节点选举方法、装置、设备和存储介质。

背景技术

区块链系统包括多个节点,每个节点产生的交易需要在得到区块链系统中的所有节点的共识之后才能处理,处理后会将该交易存储至区块链。

一般地,为使各节点的交易可以快速有效地处理,会从多个节点中选择一个节点作为领导节点,由领导节点将交易发送给区块链系统中的其它节点,使其它节点对该交易进行验证,以此实现对该交易的共识。

相关技术中,给多个节点中的每个节点进行编号,按照多个节点的编号顺序,依次由各个节点轮流当选领导节点。然而,这种方式无法适应多跳网络及不断变化的网络状态,如此会降低区块链系统的共识效率。

发明内容

本申请提供了一种领导节点选举方法、装置、设备和存储介质,可以适应多跳网络及不断变化的网络状态,从而可以提高区块链系统的共识效率,提高系统吞吐量,降低延迟,并且倾向于在延迟时间较短的节点中选举领导节点,但是也会有较小的概率将延迟时间较高的节点作为领导节点,不会出现某个节点一直被选举为领导节点的情况。所述技术方案如下:

第一方面,提供了一种领导节点选举方法,应用于区块链系统,所述区块链系统包括多个节点,所述方法包括:

所述多个节点中的每个节点均执行如下操作:

获取所述多个节点中每个节点的延迟时间,所述每个节点的延迟时间是指在当选领导节点时从开始收集上一轮交易投票结果至生成存储有本轮所处理的交易的区块时所经过的时间;

根据所述多个节点中每个节点的延迟时间,将所述多个节点划分到第一列表和第二列表,所述第一列表中的节点的延迟时间大于所述第二列表中的节点的延迟时间;

根据目标概率,从所述第一列表和所述第二列表中随机选择一个列表作为候选列表,所述目标概率是所述第一列表被随机选择到的概率,所述目标概率大于0且小于50%;

从所述候选列表中选择一个节点作为第一领导节点,所述第一领导节点为下一轮主导交易处理的领导节点。

在本申请中,区块链系统中的多个节点中的每个节点在获取该多个节点中每个节点的延迟时间之后,根据该多个节点中每个节点的延迟时间,将该多个节点划分到第一列表和第二列表,且第一列表中的节点的延迟时间大于第二列表中的节点的延迟时间,接着根据目标概率从第一列表和第二列表中随机选择一个列表作为候选列表,然后从候选列表中选择一个节点作为第一领导节点。由于一个节点的延迟时间可以体现这个节点的网络状态、计算性能以及这个节点与其他节点在网络拓扑中的相对位置,因此,这种通过节点的延迟时间选举领导节点的方式可以适应多跳网络及不断变化的网络状态,从而可以提高区块链系统的共识效率,提高系统吞吐量,降低延迟。并且,由于是根据目标概率从第一列表和第二列表中随机选择一个列表作为候选列表的,且目标概率是第一列表被随机选择到的概率,且目标概率大于0且小于50%,因此,是倾向于在第二列表中选举领导节点,也即,倾向于在延迟时间较短的节点中选举领导节点,但是也会有较小的概率将延迟时间较高的第一列表中的节点作为领导节点,因而不会出现某个节点一直被选举为领导节点的情况。

可选地,第二领导节点生成目标区块后,获取本轮从开始收集上一轮交易投票结果至生成所述目标区块时所经过的时间作为所述第二领导节点的延迟时间,所述第二领导节点为本轮主导交易处理的领导节点,所述目标区块为存储有所述第二领导节点本轮所处理的交易的区块;

所述第二领导节点将所述第二领导节点的延迟时间存储至所述目标区块;

所述获取所述多个节点中每个节点的延迟时间,包括:

将所述目标区块存储至自身配置的区块链;

根据所述目标区块中存储的所述第二领导节点的延迟时间更新延迟列表,所述延迟列表中包括所述多个节点中每个节点的延迟时间。

可选地,若所述延迟列表中不包括所述第二领导节点的延迟时间,则将所述目标区块中存储的所述第二领导节点的延迟时间添加到所述延迟列表;

若所述延迟列表中包括所述第二领导节点的延迟时间,则将所述延迟列表中包括的所述第二领导节点的延迟时间更新为所述目标区块中存储的所述第二领导节点的延迟时间;或者,若所述延迟列表中包括所述第二领导节点的延迟时间,则对所述延迟列表中包括的所述第二领导节点的延迟时间与所述目标区块中存储的所述第二领导节点的延迟时间进行加权平均,得到目标延迟时间,将所述延迟列表中包括的所述第二领导节点的延迟时间更新为所述目标延迟时间。

可选地,对于所述多个节点中的任意一个节点,将所述多个节点的延迟时间中的最大延迟时间减去所述一个节点的延迟时间,得到所述一个节点的权重;

根据所述多个节点中每个节点的权重,将所述多个节点划分到所述第一列表和所述第二列表,所述第一列表中的节点的权重小于所述第二列表中的节点的权重。

可选地,按照所述多个节点的权重由大到小的顺序,对所述多个节点进行排序;

将所述多个节点中排序在前的f个节点划分到所述第二列表,将所述多个节点中除所述f个节点之外的其他节点划分到所述第一列表,所述f为正整数,所述f小于所述多个节点的个数。

可选地,以所述目标概率产生一个随机数,所述随机数为0或1,所述目标概率为产生为0的随机数的概率;

若所述随机数为0,则选择所述第一列表作为所述候选列表;

若所述随机数为1,则选择所述第二列表作为所述候选列表。

可选地,所述候选列表包括m个节点,所述m为正整数,所述从所述候选列表中选择一个节点作为第一领导节点,包括:

确定目标区间,所述目标区间包括m个区间段,所述m个区间段与所述候选列表中的m个节点一一对应;

在所述目标区间内随机抽取一个数值;

将抽取到的数值所在的区间段对应的一个节点作为所述第一领导节点。

第二方面,提供了一种领导节点选举装置,应用于区块链系统包括的多个节点中的每个节点,所述装置包括:

第一获取模块,用于获取所述多个节点中每个节点的延迟时间,所述每个节点的延迟时间是指在当选领导节点时从开始收集上一轮交易投票结果至生成存储有本轮所处理的交易的区块时所经过的时间;

划分模块,用于根据所述多个节点中每个节点的延迟时间,将所述多个节点划分到第一列表和第二列表,所述第一列表中的节点的延迟时间大于所述第二列表中的节点的延迟时间;

第一选择模块,用于根据目标概率,从所述第一列表和所述第二列表中随机选择一个列表作为候选列表,所述目标概率是所述第一列表被随机选择到的概率,所述目标概率大于0且小于50%;

第二选择模块,用于从所述候选列表中选择一个节点作为第一领导节点,所述第一领导节点为下一轮主导交易处理的领导节点。

可选地,所述装置应用于第二领导节点时,还包括:

第二获取模块,用于在生成目标区块后,获取本轮从开始收集上一轮交易投票结果至生成所述目标区块时所经过的时间作为所述第二领导节点的延迟时间,所述第二领导节点为本轮主导交易处理的领导节点,所述目标区块为存储有所述第二领导节点本轮所处理的交易的区块;

存储模块,用于将所述第二领导节点的延迟时间存储至所述目标区块;

所述第一获取模块包括:

存储单元,用于将所述目标区块存储至自身配置的区块链;

更新单元,用于根据所述目标区块中存储的所述第二领导节点的延迟时间更新延迟列表,所述延迟列表中包括所述多个节点中每个节点的延迟时间。

可选地,所述更新单元用于:

若所述延迟列表中不包括所述第二领导节点的延迟时间,则将所述目标区块中存储的所述第二领导节点的延迟时间添加到所述延迟列表;

若所述延迟列表中包括所述第二领导节点的延迟时间,则将所述延迟列表中包括的所述第二领导节点的延迟时间更新为所述目标区块中存储的所述第二领导节点的延迟时间;或者,若所述延迟列表中包括所述第二领导节点的延迟时间,则对所述延迟列表中包括的所述第二领导节点的延迟时间与所述目标区块中存储的所述第二领导节点的延迟时间进行加权平均,得到目标延迟时间,将所述延迟列表中包括的所述第二领导节点的延迟时间更新为所述目标延迟时间。

可选地,所述划分模块包括:

获取单元,用于对于所述多个节点中的任意一个节点,将所述多个节点的延迟时间中的最大延迟时间减去所述一个节点的延迟时间,得到所述一个节点的权重;

划分单元,用于根据所述多个节点中每个节点的权重,将所述多个节点划分到所述第一列表和所述第二列表,所述第一列表中的节点的权重小于所述第二列表中的节点的权重。

可选地,所述划分单元用于:

按照所述多个节点的权重由大到小的顺序,对所述多个节点进行排序;

将所述多个节点中排序在前的f个节点划分到所述第二列表,将所述多个节点中除所述f个节点之外的其他节点划分到所述第一列表,所述f为正整数,所述f小于所述多个节点的个数。

可选地,所述第一选择模块用于:

以所述目标概率产生一个随机数,所述随机数为0或1,所述目标概率为产生为0的随机数的概率;

若所述随机数为0,则选择所述第一列表作为所述候选列表;

若所述随机数为1,则选择所述第二列表作为所述候选列表。

可选地,所述候选列表包括m个节点,所述m为正整数,所述第二选择模块用于:

确定目标区间,所述目标区间包括m个区间段,所述m个区间段与所述候选列表中的m个节点一一对应;

在所述目标区间内随机抽取一个数值;

将抽取到的数值所在的区间段对应的一个节点作为所述第一领导节点。

第三方面,提供了一种计算机设备,所述计算机设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述的领导节点选举方法。

第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述的领导节点选举方法。

第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述的领导节点选举方法的步骤。

可以理解的是,上述第二方面、第三方面、第四方面、第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的一种区块链系统的结构示意图;

图2是本申请实施例提供的一种区块链的示意图;

图3是本申请实施例提供的一种领导节点选举方法的流程图;

图4是本申请实施例提供的一种领导节点选举装置的结构示意图;

图5是本申请实施例提供的一种计算机设备的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

应当理解的是,本申请提及的“多个”是指两个或两个以上。在本申请的描述中,除非另有说明,“/”表示或的意思,比如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,比如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,为了便于清楚描述本申请的技术方案,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。

在对本申请实施例进行解释说明之前,先对区块链的相关内容予以说明。

图1是本申请实施例提供的一种区块链系统的结构示意图。

参见图1,区块链系统100是指用于进行节点与节点之间数据共享的系统,区块链系统100中可以包括多个节点101,多个节点101可以是指区块链系统100中各个客户端。每个节点101在进行正常工作可以接收到输入信息,并基于接收到的输入信息维护区块链系统100内的共享数据。为了保证区块链系统100内的信息互通,区块链系统100中的每个节点101之间可以存在信息连接,节点101之间可以通过该信息连接进行信息传输。比如,当区块链系统100中的任意节点101接收到输入信息时,区块链系统100中的其他节点101便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得区块链系统100中全部节点101上存储的数据一致。

区块链系统100中的每个节点101均存储一条相同的区块链。下面以图2为例来对区块链的一种可能的结构进行说明,当然,实际应用中,根据不同的场景,区块链的结构也可以有所不同,本申请实施例对此不作限定。

参见图2,区块链由多个区块组成,创始块中包括区块头和区块主体。作为一种示例,区块头中存储有输入信息特征值、版本号、时间戳和难度值,区块主体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块主体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。

区块链系统100具有分布式数据存储、点对点传输、共识机制、加密算法等计算机技术。区块链系统100是一个分布式的共享账本和数据库,具有去中心化、不可篡改、全程留痕、可以追溯、集体维护、公开透明等特点。这些特点保证了区块链的共享开放、真实完整和安全可靠。

下面对本申请实施例的应用场景予以说明。

本申请实施例提供了一种领导节点选举方法,可以应用于基于领导节点的共识算法中,例如,可以应用于Hotstuff共识算法,也可以应用于PBFT(Practical ByzantineFault Tolerance,实用拜占庭容错)共识算法等,本申请实施例对此不作限定。本申请实施例提供的领导节点选举方法可以适应多跳网络及不断变化的网络状态,从而可以提高区块链系统的共识效率,提高系统吞吐量,降低延迟。并且,本申请实施例提供的领导节点选举方法可以倾向于在延迟时间较短的节点中选举领导节点,但是也会有较小的概率将延迟时间较高的节点作为领导节点,因而不会出现某个节点一直被选举为领导节点的情况。

下面对本申请实施例提供的领导节点选举方法进行详细地解释说明。

图3是本申请实施例提供的一种领导节点选举方法的流程图。参见图3,该方法包括以下步骤。

步骤301:第二领导节点在生成目标区块后,获取本轮从开始收集上一轮交易投票结果至生成目标区块时所经过的时间作为第二领导节点的延迟时间。

目标区块为存储有第二领导节点本轮所处理的交易的区块。可选地,目标区块还可以存储有上一轮交易共识过程中的投票信息,上一轮交易共识过程中的投票信息包括区块链系统中多个节点对上一轮交易的投票结果。

第二领导节点为本轮主导交易处理的领导节点。第二领导节点的延迟时间为第二领导节点从开始收集上一轮交易投票结果至生成目标区块时所经过的时间。一个节点的延迟时间可以体现一个节点的网络状态和计算性能,且一个节点的延迟时间还可以体现这个节点与其他节点在网络拓扑中的相对位置。

示例地,第二领导节点在本轮主导交易处理的过程中,在开始收集上一轮交易投票结果时,记录开始收集上一轮交易投票结果的时刻,在生成目标区块时,记录生成目标区块的时刻,然后将开始收集上一轮交易投票结果的时刻与生成目标区块的时刻之间相距的时间作为第二领导节点的延迟时间。

需要注意的是,第二领导节点在当选领导节点后,就需要主导本轮交易处理。这种情况下,第二领导节点需要先收集区块链系统中多个节点中每个节点对上一轮交易的投票结果,在收集完成上一轮交易投票结果后,再从交易池中获取本轮需要处理的交易来进行后续处理。

第二领导节点收集齐上一轮交易投票结果所用的时间可以抽象地体现第二领导节点与其他节点在网络拓扑中的相对位置。第二领导节点收集齐上一轮交易投票结果所需的时间越长,说明,第二领导节点与其他节点在传递消息时的网络跳数越多,也即说明,第二领导节点与其他节点在网路拓扑中的相对位置越远,也即,第二领导节点极有可能是边缘节点,此时第二领导节点从开始收集上一轮交易投票结果至生成目标区块时所经过的时间也会越长,也即,第二领导节点的延迟时间越大,因此,第二节点的延迟时间还可以体现第二节点与其他节点在网络拓扑中的相对位置。

需要说明的是,每轮的领导节点都会获取自身当选领导节点时从开始收集上一轮交易投票结果至生成存储有本轮所处理的交易的区块时所经过的时间作为自身的延迟时间。如此,有助于后续根据各个节点的延迟时间选举领导节点。

步骤302:第二领导节点将自身的延迟时间存储至目标区块。

第二领导节点在获取自身的延迟时间之后,将自身的延迟时间存储至目标区块,以在不引入额外通信开销的情况下,将自身的延迟时间发送给区块链系统中的多个节点中除自身之外的其他节点。

进一步地,第二领导节点将自身的延迟时间存储至目标区块之后,将目标区块发送给区块链系统中的多个节点中除自身之外的其他节点,以使区块链系统的所有节点可以对目标区块进行共识,在共识之后,将目标区块添加到区块链。

在基于领导节点的共识算法中,每一轮的领导节点负责本轮的提案的生成,并需要收集来自其他节点的投票信息。在这一过程中,领导节点与其他节点进行信息交换,因此领导节点可以将本轮自身的延迟时间写入本轮的区块中,从而与其他节点共享自身的延迟时间,如此,不会引入额外通信开销,通信复杂度低。

区块链系统包括多个节点,该多个节点中的每个节点均执行下述步骤303-步骤306。

步骤303:对于该多个节点中的任意一个节点,这个节点获取该多个节点中每个节点的延迟时间。

一个节点的延迟时间是指在这个节点当选领导节点时从开始收集上一轮交易投票结果至生成存储有本轮所处理的交易的区块时所经过的时间。

选择在节点当选领导节点时从开始收集上一轮交易投票结果至生成存储有本轮所处理的交易的区块时所经过的时间作为节点的延迟时间,从更高层次抽象了节点的网络状态、计算性能以及节点在网络拓扑中的相对位置,即本申请实施例不局限于某个单一指标(如节点带宽),从而能够有效地推广到更多基于领导节点的共识算法中。

具体地,步骤303的操作可以为:这个节点将目标区块存储至自身配置的区块链;根据目标区块中存储的第二领导节点的延迟时间更新延迟列表。

若这个节点本身就是第二领导节点,则第二领导节点生成目标区块后,在目标区块得到共识以后,可以将目标区块存储至自身配置的区块链,然后根据目标区块中存储的第二领导节点的延迟时间更新自身的延迟列表。若这个节点不是第二领导节点,则这个节点在接收到第二领导节点发送的目标区块后,在目标区块得到共识以后,将目标区块存储至自身配置的区块链,然后根据目标区块中存储的第二领导节点的延迟时间更新自身的延迟列表。

该延迟列表中包括该多个节点中每个节点的延迟时间。

这个节点将目标区块存储至自身配置的区块链,保证目标区块中的信息的可靠性和不可篡改性。然后,这个节点根据目标区块中存储的第二领导节点的延迟时间更新延迟列表,以根据最新获取的第二领导节点的延迟时间更新该延迟列表中包括的第二领导节点的延迟时间,使该延迟列表中包括的第二领导节点的延迟时间是最新的。

每轮交易处理时都会选举领导节点,每轮主导交易处理的领导节点有所不同。由于该多个节点中每个节点的网络状态和计算性能是不断变化的,且不同节点与其他节点之间在网络拓扑中的相对位置也不同,因此,每轮交易处理时都会根据本轮领导节点的延迟时间更新该延迟列表,据此使该延迟列表中的每个节点的延迟时间都是最新的,以根据更新后的该延迟列表选举领导节点,也即根据不断变化的网络状态和节点在网络拓扑中的相对位置选举领导节点。

其中,这个节点根据目标区块中存储的第二领导节点的延迟时间更新延迟列表的操作可以为:若该延迟列表中不包括第二领导节点的延迟时间,则将目标区块中存储的第二领导节点的延迟时间添加到该延迟列表。若该延迟列表中包括第二领导节点的延迟时间,则将该延迟列表中包括的第二领导节点的延迟时间更新为目标区块中存储的第二领导节点的延迟时间;或者,若该延迟列表中包括第二领导节点的延迟时间,则对该延迟列表中包括的第二领导节点的延迟时间与目标区块中存储的第二领导节点的延迟时间进行加权平均,得到目标延迟时间,将该延迟列表中包括的第二领导节点的延迟时间更新为目标延迟时间。

若该延迟列表中不包括第二领导节点的延迟时间,说明第二领导节点是第一次当选领导节点,这种情况下,直接将目标区块中存储的第二领导节点的延迟时间添加到该延迟列表。

若该延迟列表中包括第二领导节点的延迟时间,说明第二领导节点之前曾经当选过领导节点,这种情况下,可以有如下两种可能的方式更新该延迟列表:

第一种可能的方式中,直接将该延迟列表中包括的第二领导节点的延迟时间更新为目标区块中存储的第二领导节点的延迟时间,也即,直接将该延迟列表中包括的第二领导节点的延迟时间更新为最新获取的第二领导节点的延迟时间。

第二种可能的方式中,对该延迟列表中包括的第二领导节点的延迟时间与目标区块中存储的第二领导节点的延迟时间进行加权平均,得到目标延迟时间,将该延迟列表中包括的第二领导节点的延迟时间更新为目标延迟时间。

该延迟列表中包括的第二领导节点的延迟时间的权重可以预先进行设置,目标区块中存储的第二领导节点的延迟时间的权重也可以预先进行设置。由于该延迟列表中包括的第二领导节点的延迟时间不是最新的,而目标区块中存储的第二领导节点的延迟时间是最新的,所以可以设置的目标区块中存储的第二领导节点的延迟时间的权重大于该延迟列表中包括的第二领导节点的延迟时间的权重。

示例地,该延迟列表中包括的第二领导节点的延迟时间的权重为30%,目标区块中存储的第二领导节点的延迟时间的权重为70%,如此,目标延迟时间为30%的该延迟列表中包括的第二领导节点的延迟时间与70%的目标区块中存储的第二领导节点的延迟时间之和。

需要说明的是,通过对该延迟列表中包括的第二领导节点的延迟时间与目标区块中存储的第二领导节点的延迟时间进行加权平均得到目标延迟时间,可以避免某个节点因单次表现差而直接被否定的情况,以维持区块链系统的稳定性,并提高区块链系统抵抗网络波动的能力。

步骤304:这个节点根据该多个节点中每个节点的延迟时间,将该多个节点划分到第一列表和第二列表。

第一列表中的节点的延迟时间大于第二列表中的节点的延迟时间,也即,第二列表中节点的网络状态、计算性能以及节点在网络拓扑中的相对位置,优于第一列表中节点的网络状态、计算性能以及节点在网络拓扑中的相对位置,说明第二列表中的节点均是计算性能较高、网络状态较优的优势节点,或是网络拓扑中的中心节点,第一列表中的节点均是计算性能及网络状态相对较差的劣势节点,或是网络拓扑中的边缘节点。

具体地,步骤304的操作可以为:这个节点获取该多个节点的延迟时间中的最大延迟时间;将该最大延迟时间分别减去各个节点的延迟时间,得到各个节点的权重;根据该多个节点中每个节点的权重,将该多个节点划分到第一列表和第二列表。

一个节点的权重为该多个节点的延迟时间中的最大延迟时间减去这个节点的延迟时间得到的值。也即,一个节点的延迟时间越大,这个节点的权重越小;一个节点的延迟时间越小,这个节点的权重越大。

第一列表中的节点的权重小于第二列表中的节点的权重,也即,网络状态和计算性能均良好、且收集齐上一轮交易投票结果所用的时间越短的节点的权重大于网络状态和计算性能较差、且收集齐上一轮交易投票结果所用的时间越长的节点的权重,也即说明,优势节点的权重大于劣势节点的权重。

其中,这个节点根据该多个节点中每个节点的权重,将该多个节点划分到第一列表和第二列表的操作可以为:按照该多个节点的权重由大到小的顺序,对该多个节点进行排序;将该多个节点中排序在前的f个节点划分到第二列表,将该多个节点中除该f个节点之外的其他节点划分到第一列表。

f为正整数,f小于该多个节点的个数,可选地,f小于二分之一的该多个节点的个数,此时优势节点的个数小于劣势节点的个数,也即,第二列表中的节点的个数小于第一列表中的节点的个数。作为一种示例,f可以为该多个节点中最大的容错节点的数量,例如,f可以是三分之一的该多个节点的个数。

按照该多个节点的权重由大到小的顺序,对该多个节点进行排序。将该多个节点中排序在前的f个节点划分到第二列表,也即是将该多个节点中权重较大的节点作为优势节点划分到第二列表。将该多个节点中除该f个节点之外的其他节点划分到第一列表,也即是将该多个节点中权重较小的节点作为劣势节点划分到第一列表。如此,使第一列表中的节点的权重小于第二列表中的节点的权重,也即,使第一列表中的节点的延迟时间大于第二列表中的节点的延迟时间。

步骤305:这个节点根据目标概率,从第一列表和第二列表中随机选择一个列表作为候选列表。

目标概率是第一列表被随机选择到的概率,目标概率大于0且小于50%。如此,使第一列表被随机选择到的概率小于第二列表被随机选择到的概率,也即,权重大的节点被随机选择到的概率大于权重小的节点被随机选择到的概率,换句话说,优势节点被随机选择到的概率大于劣势节点被随机选择到的概率。

具体地,步骤305的操作可以为:这个节点以目标概率产生一个随机数,该随机数为0或1,目标概率为产生为0的随机数的概率;若该随机数为0,则选择第一列表作为候选列表;若该随机数为1,则选择第二列表作为候选列表。当然,也可以根据目标概率,采用其他方式从第一列表和第二列表中随机选择一个列表作为候选列表,本申请实施例对此不作限定。

候选列表是用于确定领导节点的列表。

目标概率要大于0且小于0.5,例如,目标概率可以为0.1,此时,产生为0的随机数的概率为0.1,产生为1的随机数的概率为0.9。如此,倾向于选择第二列表作为候选列表,以倾向于从权重大的节点中选择领导节点,也即,倾向于从延迟时间较短的节点中选择领导节点。

可选地,步骤305的操作可以使用epsilon-greedy算法来实现。epsilon-greedy算法是一种贪婪算法,用于从两个列表中随机选择一个列表作为候选列表。在本申请实施例中,将目标概率、第一列表和第二列表输入至epsilon-greedy算法,接着以轮次或上一次存储至区块链中的区块的哈希值等参数为随机种子,使用epsilon-greedy算法产生为0或为1的随机数,若产生的随机数为0,则epsilon-greedy算法会输出第一列表作为候选列表,若产生的随机数为1,则epsilon-greedy算法会输出第二列表作为候选列表。

在本申请实施例中,使用epsilon-greedy算法可以控制产生为0的随机数的概率为目标概率,还可以以轮次或上一次存储至区块链中的区块的哈希值等参数为随机种子,来产生随机数,以保证各节点的随机结果一致。

步骤306:这个节点从该候选列表中选择一个节点作为第一领导节点。

候选列表包括m个节点,m为正整数。从候选列表中的m个节点中可以选择一个节点作为第一领导节点,第一领导节点为下一轮主导交易处理的领导节点。

具体地,步骤306的操作可以为:这个节点确定目标区间;在目标区间内随机抽取一个数值;将抽取到的数值所在的区间段对应的一个节点作为第一领导节点。

目标区间包括m个区间段,该m个区间段与候选列表中的m个节点一一对应。可选地,m个区间段的长度相同,或者,m个区间段中每个区间段的长度占目标区间的长度的比例与所对应的一个节点的权重占m个节点的总权重的比例相同。

若m个区间段的长度相同,则这个节点确定目标区间的操作可以为:将长度为m的一个区间确定为目标区间,目标区间包括长度均为1的m个区间段,该m个区间段与该m个节点一一对应。

若m个区间段中每个区间段的长度占目标区间的长度的比例与所对应的一个节点的权重占m个节点的总权重的比例相同,则这个节点确定目标区间的操作可以为:将长度与该m个节点的总权重相同的一个区间确定为目标区间,目标区间包括m个区间段,该m个区间段与该m个节点一一对应,且该m个区间段中每个区间段的长度与所对应的一个节点的权重相同。

在目标区间内随机抽取一个数值时,可以以轮次或上一次存储至区块链中的区块的哈希值等参数为随机种子,来在目标区间内进行随机采样,以获得这个数值,以保证各节点的随机结果一致。

若目标区间中的m个区间段的长度相同,则在目标区间内随机抽取一个数值,将抽取到的数值所在的区间段对应的一个节点作为第一领导节点。此时目标区间中的m个区间段被抽取的概率相同,也即,该候选列表中的m个节点中的每个节点被选举为第一领导节点的概率相同。

若目标区间中的m个区间段中每个区间段的长度占目标区间的长度的比例与所对应的一个节点的权重占m个节点的总权重的比例相同,则在目标区间内随机抽取一个数值,将抽取到的数值所在的区间段对应的一个节点作为第一领导节点。此时是根据一个节点的权重来确定这个节点对应的区间段的长度。一个节点的权重越大,则这个节点对应的区间段的长度越大,随机抽取的一个数值落在这个节点对应的区间段的概率越大,那么这个节点被选举为第一领导节点的概率越大。

需要说明的是,该多个节点中的每个节点都执行步骤303-步骤306,如此该多个节点中的每个节点都可获知下一轮主导交易处理的领导节点(即,第一领导节点),从而基于第一领导节点进行后续交易处理。

在本申请实施例中,区块链系统中的多个节点中的每个节点在获取该多个节点中每个节点的延迟时间之后,根据该多个节点中每个节点的延迟时间,将该多个节点划分到第一列表和第二列表,且第一列表中的节点的延迟时间大于第二列表中的节点的延迟时间,接着根据目标概率从第一列表和第二列表中随机选择一个列表作为候选列表,然后从候选列表中选择一个节点作为第一领导节点。由于一个节点的延迟时间可以体现这个节点的网络状态、计算性能以及这个节点与其他节点在网络拓扑中的相对位置,因此,这种通过节点的延迟时间选举领导节点的方式可以适应多跳网络及不断变化的网络状态,从而可以提高区块链系统的共识效率,提高系统吞吐量,降低延迟。并且,由于是根据目标概率从第一列表和第二列表中随机选择一个列表作为候选列表的,且目标概率是第一列表被随机选择到的概率,且目标概率大于0且小于50%,因此,是倾向于在第二列表中选举领导节点,也即,倾向于在延迟时间较短的节点中选举领导节点,但是也会有较小的概率将延迟时间较高的第一列表中的节点作为领导节点,因而不会出现某个节点一直被选举为领导节点的情况。

图4是本申请实施例提供的一种领导节点选举装置的结构示意图。该领导节点选举装置应用于区块链系统中的多个节点中的每个节点,该装置可以由软件、硬件或者两者的结合实现成为计算机设备的部分或者全部,该计算机设备可以为下文图5所示的计算机设备。参见图4,该装置包括:第一获取模块401、划分模块402、第一选择模块403、第二选择模块404。

第一获取模块401,用于获取该多个节点中每个节点的延迟时间,每个节点的延迟时间是指在当选领导节点时从开始收集上一轮交易投票结果至生成存储有本轮所处理的交易的区块时所经过的时间;

划分模块402,用于根据该多个节点中每个节点的延迟时间,将该多个节点划分到第一列表和第二列表,第一列表中的节点的延迟时间大于第二列表中的节点的延迟时间;

第一选择模块403,用于根据目标概率,从第一列表和第二列表中随机选择一个列表作为候选列表,目标概率是第一列表被随机选择到的概率,目标概率大于0且小于50%;

第二选择模块404,用于从该候选列表中选择一个节点作为第一领导节点,第一领导节点为下一轮主导交易处理的领导节点。

可选地,该装置应用于第二领导节点时,还包括:

第二获取模块,用于在生成目标区块后,获取本轮从开始收集上一轮交易投票结果至生成目标区块时所经过的时间作为第二领导节点的延迟时间,第二领导节点为本轮主导交易处理的领导节点,目标区块为存储有第二领导节点本轮所处理的交易的区块;

存储模块,用于将第二领导节点的延迟时间存储至目标区块;

第一获取模块401包括:

存储单元,用于将目标区块存储至自身配置的区块链;

更新单元,用于根据目标区块中存储的第二领导节点的延迟时间更新延迟列表,该延迟列表中包括该多个节点中每个节点的延迟时间。

可选地,更新单元用于:

若该延迟列表中不包括第二领导节点的延迟时间,则将目标区块中存储的第二领导节点的延迟时间添加到该延迟列表;

若该延迟列表中包括第二领导节点的延迟时间,则将该延迟列表中包括的第二领导节点的延迟时间更新为目标区块中存储的第二领导节点的延迟时间;或者,若该延迟列表中包括第二领导节点的延迟时间,则对该延迟列表中包括的第二领导节点的延迟时间与目标区块中存储的第二领导节点的延迟时间进行加权平均,得到目标延迟时间,将该延迟列表中包括的第二领导节点的延迟时间更新为目标延迟时间。

可选地,划分模块402包括:

获取单元,用于对于该多个节点中的任意一个节点,将该多个节点的延迟时间中的最大延迟时间减去这个节点的延迟时间,得到这个节点的权重;

划分单元,用于根据该多个节点中每个节点的权重,将该多个节点划分到第一列表和第二列表,第一列表中的节点的权重小于第二列表中的节点的权重。

可选地,划分单元用于:

按照该多个节点的权重由大到小的顺序,对该多个节点进行排序;

将该多个节点中排序在前的f个节点划分到第二列表,将该多个节点中除f个节点之外的其他节点划分到第一列表,f为正整数,f小于所述多个节点的个数。

可选地,第一选择模块403用于:

以目标概率产生一个随机数,随机数为0或1,目标概率为产生为0的随机数的概率;

若该随机数为0,则选择第一列表作为候选列表;

若该随机数为1,则选择第二列表作为候选列表。

可选地,该候选列表包括m个节点,m为正整数,第二选择模块404用于:

确定目标区间,目标区间包括m个区间段,m个区间段与该候选列表中的m个节点一一对应;

在目标区间内随机抽取一个数值;

将抽取到的数值所在的区间段对应的一个节点作为第一领导节点。

在本申请实施例中,区块链系统中的多个节点中的每个节点在获取该多个节点中每个节点的延迟时间之后,根据该多个节点中每个节点的延迟时间,将该多个节点划分到第一列表和第二列表,且第一列表中的节点的延迟时间大于第二列表中的节点的延迟时间,接着根据目标概率从第一列表和第二列表中随机选择一个列表作为候选列表,然后从候选列表中选择一个节点作为第一领导节点。由于一个节点的延迟时间可以体现这个节点的网络状态、计算性能以及这个节点与其他节点在网络拓扑中的相对位置,因此,这种通过节点的延迟时间选举领导节点的方式可以适应多跳网络及不断变化的网络状态,从而可以提高区块链系统的共识效率,提高系统吞吐量,降低延迟。并且,由于是根据目标概率从第一列表和第二列表中随机选择一个列表作为候选列表的,且目标概率是第一列表被随机选择到的概率,且目标概率大于0且小于50%,因此,是倾向于在第二列表中选举领导节点,也即,倾向于在延迟时间较短的节点中选举领导节点,但是也会有较小的概率将延迟时间较高的第一列表中的节点作为领导节点,因而不会出现某个节点一直被选举为领导节点的情况。

需要说明的是:上述实施例提供的领导节点选举装置在选举领导节点时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。

上述实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请实施例的保护范围。

上述实施例提供的领导节点选举装置与领导节点选举方法实施例属于同一构思,上述实施例中单元、模块的具体工作过程及带来的技术效果,可参见方法实施例部分,此处不再赘述。

图5为本申请实施例提供的一种计算机设备的结构示意图。如图5所示,计算机设备5包括:处理器50、存储器51以及存储在存储器51中并可在处理器50上运行的计算机程序52,处理器50执行计算机程序52时实现上述实施例中的领导节点选举方法中的步骤。

计算机设备5可以是由多台服务器组成的服务器集群。本领域技术人员可以理解,图5仅仅是计算机设备5的举例,并不构成对计算机设备5的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,比如还可以包括输入输出设备、网络接入设备等。

处理器50可以是中央处理单元(Central Processing Unit,CPU),处理器50还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者也可以是任何常规的处理器。

存储器51在一些实施例中可以是计算机设备5的内部存储单元,比如计算机设备5的硬盘或内存。存储器51在另一些实施例中也可以是计算机设备5的外部存储设备,比如计算机设备5上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器51还可以既包括计算机设备5的内部存储单元也包括外部存储设备。存储器51用于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,比如计算机程序的程序代码等。存储器51还可以用于暂时地存储已经输出或者将要输出的数据。

本申请实施例还提供了一种计算机设备,该计算机设备包括:至少一个处理器、存储器以及存储在该存储器中并可在该至少一个处理器上运行的计算机程序,该处理器执行该计算机程序时实现上述任意各个方法实施例中的步骤。

本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时可实现上述各个方法实施例中的步骤。

本申请实施例提供了一种计算机程序产品,当其在计算机上运行时,使得计算机执行上述各个方法实施例中的步骤。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述方法实施例中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,该计算机程序包括计算机程序代码,该计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。该计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随机存取存储器)、CD-ROM(Compact Disc Read-Only Memory,只读光盘)、磁带、软盘和光数据存储设备等。本申请提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。

应当理解的是,实现上述实施例的全部或部分步骤可以通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。该计算机指令可以存储在上述计算机可读存储介质中。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

在本申请所提供的实施例中,应该理解到,所揭露的装置/计算机设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/计算机设备实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

相关技术
  • 领导节点选举方法、装置、设备和存储介质
  • 一种选举领导者Leader的方法、装置及设备
技术分类

06120113688809