一种基于区块链的节点信誉共识方法转让专利

申请号 : CN202010854966.7

文献号 : CN112039964B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 原旭罗方于硕陈志奎孙野陈怡

申请人 : 大连理工大学

摘要 :

本发明涉及共识算法技术领域,提供一种基于区块链的节点信誉共识方法,包括:步骤100,获取行为记录表;步骤200,对行为记录表中节点进行信誉值评估;步骤300,根据节点的信誉值变化计算节点的信誉增长率;步骤400,根据节点的信誉值和信誉增长率进行权限管理,具有选举权限的节点可参与共识节点集的随机动态选举,并根据主节点选举算法选举出共识主节点;步骤500,共识主节点接收客户端发送的请求,之后将请求和签名一起广播给共识节点,开始共识过程;步骤600,要退出的节点需向共识主节点发送退出请求;或者,待加入的节点也需向所有共识节点以及主节点都发送加入请求消息。本发明能够对全网节点的可信性进行检测和评估。

权利要求 :

1.一种基于区块链的节点信誉共识方法,其特征在于,包括以下过程:步骤100,获取行为记录表,其中,所述行为记录表记录全网节点共同维护的节点信誉、信誉增长率及信誉参考因素;

步骤200,对行为记录表中节点进行信誉值评估,得到每个节点的信誉值,包括步骤201至步骤203:

步骤201,由系统初创节点进行共识,之后共识主节点发起信誉值更新请求,共识节点收到请求后,计算全网节点新的信誉值;

步骤202,共识节点对信誉值进行共识;

步骤203,主节点将本轮信誉值发生变化的节点信誉写入行为记录表中并在全网广播;

步骤300,根据节点的信誉值变化计算节点的信誉增长率,包括步骤301至步骤303:步骤301,由系统初创节点进行共识,之后共识主节点发起信誉增长率更新请求,共识节点收到请求后,计算全网节点新的信誉增长率;

步骤302,对信誉增长率进行REPBFT共识;

步骤303,主节点将本轮信誉增长率发生变化的节点信誉增长率写入行为记录表中并广播到网络;

步骤400,根据节点的信誉值和信誉增长率进行权限管理,具有选举权限的节点可参与共识节点集的随机动态选举,并根据主节点选举算法选举出共识主节点;

步骤500,共识主节点接收客户端发送的请求,之后将请求和签名一起广播给共识节点,开始共识过程,包括步骤501至步骤505:步骤501,当系统中交易的发起者发起交易时,用私钥签署交易,然后广播到整个网络;

步骤502,在节点收到交易后,如果它不是共识节点,则可以将其转发;如果是共识节点,则需要验证交易的合法性;如果合法,开始准备构建当前区块b;如果不合法,则直接丢弃且当主节点发送该交易消息时,可快速发起视图更换协议,而无需检查消息内容;

步骤503,在Δt时间后,主节点向其他共识节点广播共识准备消息;

步骤504,共识节点接收到主节点发送的准备消息后,对消息进行检验以判断主节点是否作恶或发生故障,若是,则发起视图转换请求并且将该节点标识记录到节点行为表中;否则,共识节点广播确认消息给主节点;

步骤505,当全部共识节点收到2f+1个相同的确认消息时,就达成共识,并且将执行客户端发送的请求并回复客户端且发布区块,视图编号v+1;否则执行视图切换过程并且将该节点标识记录到节点行为表中;其中,f为系统允许的最大失效节点数量;

步骤600,要退出的节点需向共识主节点发送退出请求,进行节点动态退出;或者,待加入的节点也需向所有共识节点以及主节点都发送加入请求消息,进行节点动态加入。

2.根据权利要求1所述的基于区块链的节点信誉共识方法,其特征在于,在步骤201中,通过以下公式计算节点i的信誉值:其中,Ri表示节点i的信誉值,δi表示保证金比率,τi表示未完成率,ψi表示作恶率, 表示活动率,ρi表示事务量级因子;各因素所占权重为:

3.根据权利要求1所述的基于区块链的节点信誉共识方法,其特征在于,在步骤301中,通过以下公式计算全网节点新的信誉增长率:其中,Y(t)表示信誉增长率,Ri,n表示当前轮次节点i的信誉值,Ri,t表示前t轮节点i的信誉值。

4.根据权利要求1所述的基于区块链的节点信誉共识方法,其特征在于,所述步骤400包括步骤401至步骤403:

步骤401,根据节点的信誉值和信誉增长率对节点的权限进行分配,确定参与共识节点集选举的权限;

步骤402,使用可验证随机函数VRF在有参与共识节点集选举权限的节点中进行随机抽样,选取出共识节点集,其中,共识节点集中按信誉值排名分为共识节点和候选共识节点;

步骤403,选取出共识节点集后,初始化当前视图,并选举出当前视图的共识主节点。

5.根据权利要求1所述的基于区块链的节点信誉共识方法,其特征在于,所述步骤600中节点动态退出,包括以下过程:

(1)要退出的节点需向共识主节点发送退出请求;

(2)如果当该节点退出后,共识节点集的数量少于3f+1,则进入节点动态加入阶段;否则,主节点和要退出的节点都向其他共识节点发送带有双方签名的退出确认消息。

6.根据权利要求1或5所述的基于区块链的节点信誉共识方法,其特征在于,所述步骤

600中节点动态加入,包括以下过程:(1)主节点向候选共识节点发送共识节点更换消息;候选共识节点根据信誉值排名,排名最高的为新的共识节点;

(2)新的共识节点向主节点和共识节点发送加入请求消息;

(3)主节点和共识节点对此消息进行验证、确认后,发送确认节点加入消息给共识节点和新的共识节点。

说明书 :

一种基于区块链的节点信誉共识方法

技术领域

[0001] 本发明涉及共识算法技术领域,尤其涉及一种基于区块链的节点信誉共识方法。

背景技术

[0002] 区块链是一个去中心化的分布式账本技术。共识算法是区块链非常重要的一部分,也是其去中心化和信任机制建立的基础。典型的共识算法可划分为:基于证明的共识和
基于投票的共识。基于证明的共识算法有PoW(Proof of Work,工作量证明)、PoS(Proofof 
Stake,股权证明)、DPoS(Delegated Proof of Stake,授权股权证明)等。这类算法要求加
入网络的节点能证明自己比其他节点更有资格添加一个区块到链上。基于投票的共识算法
有PBFT(Practical Byzantine Fault Tolerance,实用拜占庭算法)、DBFT(delegated 
Byzantine fault tolerance,授权拜占庭容错算法)以及Tendermint等。这类算法要求网
络中的节点交换对当前新区块或者交易的验证结果,然后作出最终的决定。
[0003] 一般来说,联盟区块链系统节点间以PBFT算法作为共识算法,能很好地避免PoW等基于证明的共识算法存在的能源浪费问题,且能允许系统在少于 个节点因断电或者被
攻击而无法良好工作等情况下继续良好运行,具有很好的工业应用性。然而,PBFT共识机制
存在的问题有:1)节点可靠性:如何对全网节点的可靠性进行检测和评估,确保选出可信的
共识节点,以保障共识网络拓扑的稳定。2)安全性:如果共识节点的行为异常,共识协议能
否采取相应的惩罚机制,以减轻恶意节点带来的后续影响。3)动态性:PBFT通常是在联盟链
系统中运行的算法,并未考虑实际系统中可能出现的节点数量变化的情况,因此不能实现
节点的动态加入和退出;4)可扩展性:PBFT共识过程中存在节点通信复杂度高的问题,当参
与共识的节点增多时,共识交互消息会成几何倍数增长,从而影响系统性能。

发明内容

[0004] 本发明主要解决现有技术的实用拜占庭算法共识机制的上述技术问题,提出一种基于区块链的节点信誉共识方法,以对全网节点的可信性进行检测和评估,确保选出可信
的共识节点,保障共识网络拓扑的稳定。
[0005] 本发明提供了一种基于区块链的节点信誉共识方法,包括以下过程:
[0006] 步骤100,获取行为记录表,其中,所述行为记录表记录全网节点共同维护的节点信誉、信誉增长率及信誉参考因素;
[0007] 步骤200,对行为记录表中节点进行信誉值评估,得到每个节点的信誉值;
[0008] 步骤300,根据节点的信誉值变化计算节点的信誉增长率;
[0009] 步骤400,根据节点的信誉值和信誉增长率进行权限管理,具有选举权限的节点可参与共识节点集的随机动态选举,并根据主节点选举算法选举出共识主节点;
[0010] 步骤500,共识主节点接收客户端发送的请求,之后将请求和签名一起广播给共识节点,开始共识过程;
[0011] 步骤600,要退出的节点需向共识主节点发送退出请求,进行节点动态退出;或者,待加入的节点也需向所有共识节点以及主节点都发送加入请求消息,进行节点动态加入。
[0012] 进一步的,步骤200,包括步骤201至步骤203:
[0013] 步骤201,由系统初创节点进行共识,之后共识主节点发起信誉值更新请求,共识节点收到请求后,计算全网节点新的信誉值;
[0014] 步骤202,共识节点对信誉值进行共识;
[0015] 步骤203,主节点将将本轮信誉值发生变化的节点信誉写入行为记录表中并在全网广播。
[0016] 进一步的,在步骤201中,通过以下公式计算节点i的信誉值:
[0017]
[0018] 其中,Ri表示节点i的信誉值,δi表示保证金比率,τi表示未完成率,ψi表示作恶率,表示活动率,ρi表示事务量级因子;各因素所占权重为:
[0019] 进一步的,步骤300,包括步骤301至步骤303:
[0020] 步骤301,由系统初创节点进行共识,之后共识主节点发起信誉增长率更新请求,共识节点收到请求后,计算全网节点新的信誉增长率;
[0021] 步骤302,对信誉增长率进行REPBFT共识;
[0022] 步骤303,主节点将本轮信誉增长率发生变化的节点信誉增长率写入行为记录表中并广播到网络。
[0023] 进一步的,在步骤301中,通过以下公式计算全网节点新的信誉增长率:
[0024]
[0025] 其中,Y(t)表示信誉增长率,Ri,n表示当前轮次节点i的信誉值,Ri,t表示前t轮节点i的信誉值。
[0026] 进一步的,所述步骤400包括步骤401至步骤403:
[0027] 步骤401,根据节点的信誉值和信誉增长率对节点的权限进行分配,确定参与共识节点集选举的权限;
[0028] 步骤402,使用可验证随机函数VRF在有参与共识节点集选举权限的节点中进行随机抽样,选取出共识节点集,其中,共识节点集中按信誉值排名分为共识节点和候选共识节
点;
[0029] 步骤403,选取出共识节点集后,初始化当前视图,并选举出当前视图的共识主节点。
[0030] 进一步的,所述步骤500包括步骤501至步骤505:
[0031] 步骤501,当系统中交易的发起者发起交易时,用私钥签署交易,然后广播到整个网络;
[0032] 步骤502,在节点收到交易后,如果它不是共识节点,则可以将其转发;如果是共识节点,则需要验证交易的合法性;如果合法,开始准备构建当前区块b;如果不合法,则直接
丢弃且当主节点发送该交易信息时,可快速发起视图更换协议,而无需检查消息内容;
[0033] 步骤503,在Δt时间后,主节点向其他共识节点广播共识准备消息;
[0034] 步骤504,共识节点接收到主节点发送的准备消息后,对消息进行检验以判断主节点是否作恶或发生故障,若是,则发起视图转换请求并且将该节点标识记录到节点行为表
中;否则,共识节点广播确认消息给主节点;
[0035] 步骤505,当全部共识节点收到2f+1个(f为系统允许的最大失效节点数量)相同的确认消息时,就达成共识,并且将执行客户端发送的请求并回复客户端且发布区块,视图编
号v+1;否则执行视图切换过程并且将该节点标识记录到节点行为表中。
[0036] 进一步的,所述步骤600中节点动态退出,包括以下过程:
[0037] (1)要退出的节点需向共识主节点发送退出请求;
[0038] (2)如果当该节点退出后,共识节点集的数量少于3f+1,则进入节点动态加入阶段;否则,主节点和要退出的节点都向其他共识节点发送带有双方签名的退出确认消息。
[0039] 进一步的,所述步骤600中节点动态加入,包括以下过程:
[0040] (1)主节点向候选共识节点发送共识节点更换消息;候选共识节点根据信誉值排名,排名最高的为新的共识节点;
[0041] (2)新的共识节点向主节点和共识节点发送加入请求消息;
[0042] (3)主节点和共识节点对此消息进行验证、确认后,发送确认节点加入消息给共识节点和新的共识节点。
[0043] 本发明提供的一种基于区块链的节点信誉共识方法,与现有技术相比具有以下优点:
[0044] 1、本发明对全网节点的可信性进行检测和评估,确保选出可信的共识节点,以保障共识网络拓扑的稳定;
[0045] 2、对行为异常的共识节点采取相应的信誉值降低和保证金惩罚机制,确保了节点因惩罚代价而不会作恶;
[0046] 3、实现了节点的动态加入和退出,提高了系统的可扩展性;
[0047] 4、本发明优化了PBFT的共识过程,节省了节点共识过程中产生的通信开销。

附图说明

[0048] 图1是本发明提供的基于区块链的节点信誉共识方法的实现流程图;
[0049] 图2是本发明中步骤400的实现流程图;
[0050] 图3是本发明中REPBFT共识过程的示意图;
[0051] 图4是本发明中节点动态退出过程的示意图;
[0052] 图5是本发明中节点动态加入过程的示意图。

具体实施方式

[0053] 为使本发明解决的技术问题、采用的技术方案和达到的技术效果更加清楚,下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施
例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图
中仅示出了与本发明相关的部分而非全部内容。
[0054] 图1为本发明实施例提供的基于区块链的节点信誉共识方法的实现流程图。如图1所示,本发明实施例提供的基于区块链的节点信誉共识方法,包括:
[0055] 步骤100,获取行为记录表。
[0056] 本实施例以纪元(epoch)作为大周期运行,每隔一个epoch则开始新一轮的共识节点选举。行为记录表是全网节点共同维护的节点信誉、信誉增长率及信誉参考因素的表,每
个节点会创建一个本地元数据池,以缓存包括自身在内的所有节点的行为记录表。在每一
epoch结束后更新。
[0057] 步骤200,对行为记录表中节点进行信誉值评估,得到每个节点的信誉值。
[0058] 本步骤对节点的可信性进行评估得到每个节点的信誉值,并根据节点在共识过程的行为对节点的信誉进行动态更新,并对上一轮中作恶节点进行保证金惩罚。其中,对行为
记录表中节点进行信誉值评估具体包括如下步骤:
[0059] 步骤201,初始时,由系统初创节点进行共识,之后共识主节点发起信誉值更新请求,共识节点收到请求后,计算全网节点新的信誉值。
[0060] 本实施例以纪元(epoch)作为大周期运行,每个纪元再划分多个轮次(round),在每一个轮次时间内,都会产生一个区块,并且将该轮节点的行为记录到行为缓存中。在一个
纪元结束前,共识主节点发起信誉更新请求,共识节点收到请求后,使用本地行为缓存计算
全网节点新的信誉值。
[0061] 信誉值R是介于0到1之间的实数,系统初始运行时节点的初始信誉值均为M1。在本实施例中,M1为0.5。计算全网节点新的信誉值的方法包括:
[0062] (1)通过以下公式计算节点i的信誉值:
[0063]
[0064] 其中,δi表示保证金比率,τi表示未完成率,ψi表示作恶率, 表示活动率,ρi表示事务量级因子。上述信誉值参考因素中,各因素所占权重为: 在
本实施例中 权重的设置使得对一个节点的考量更侧重于节点
自身的行为表现度,而不是其保证金比率和处理能力。
[0065] 保证金比率:节点i的保证金表示为di,定义D=∑di是区块链网络中的保证金总和,则保证金比率为: 保证金的设置使得节点在做出恶意行为时面临保
证金被罚没的风险。此外,设置了最大保证金额度,以避免某些节点通过赚取巨额资金来主
导节点提名。
[0066] 未完成率:节点i没有成功完成共识的次数mi与该节点参与共识的总次数M的比值,即 未完成率主要衡量节点的共识完成度,这里主要是考虑了节点出
现故障的情况。
[0067] 作恶率:节点i发送错误消息并被成功举报的次数ei与该节点参与共识的总次数M的比值,即 作恶率主要衡量节点是否诚实发送消息,主要要是考虑了节
点出现发送恶意消息的情况。
[0068] 活动率:节点i离线的时间段等级记为ti,节点i网络延时的时间段等级记为li,节点i加入网络的时间段等级记为Ti,则节点活动率为: 活动率主要是衡
量节点的性能。
[0069] 事务量级因子:设节点i处理过的事务大小列表记为Zi,其内的元素从高到低排序为c1,c2,…,cj,则事务量级因子ρi可表示为: 事务量级因子用于标识
节点i对于当前事务的处理能力。
[0070] 得到节点i的信誉值后,可以对节点的信誉值进行层次划分:
[0071] 信誉值排名为全网节点信誉值的前A%(例如为前25%),为优秀级别;
[0072] 信誉值排名为全网节点信誉值的前B%(例如为前50%),为良好级别;
[0073] 信誉值排名为全网节点信誉值的前C%(例如为前75%),为中等级别;
[0074] 信誉值排名为全网节点信誉值的后D%(例如为后15%),为不合格级别。
[0075] 参数A、B、C、D是节点等级的阙值,具体的取值与区块链系统对安全性的要求程度有关。
[0076] 步骤202,共识节点对信誉值进行共识。
[0077] 本步骤使用REPBFT进行共识。
[0078] 步骤203,主节点将将本轮信誉值发生变化的节点信誉写入行为记录表中并在全网广播。
[0079] 步骤300,根据节点的信誉值变化计算节点的信誉增长率。步骤300包括以下步骤:
[0080] 步骤301,由系统初创节点进行共识,之后共识主节点发起信誉增长率更新请求,共识节点收到请求后,计算全网节点新的信誉增长率。
[0081] 信誉增长率Y(t)为[0,100%],系统初始运行时节点的初始信誉增长率为50%,此后,在节点信誉值的动态变化的基础上,其信誉增长率也出现相应的变化。具体的,本步骤
在一个epoch结束前,共识主节点发起信誉增长率更新请求,共识节点收到请求后,使用之
前计算出的信誉值更新全网节点新的信誉增长率。
[0082] 具体的,通过以下公式计算全网节点新的信誉增长率:
[0083]
[0084] 其中,Y(t)表示信誉增长率,Ri,n表示当前轮次节点i的信誉值,Ri,t表示前t轮节点i的信誉值。
[0085] 节点的信誉增长率的等级阙值随全网节点的信誉增长率变化而动态变化。根据得到的新的信誉增长率,进行信誉增长率的层次划分:
[0086] 信誉增长率为全网节点信誉增长率排名的前H%(例如为前25%),为一等级别;
[0087] 信誉增长率为全网节点信誉增长率排名的前I%(例如为前50%),为二级别;
[0088] 信誉增长率为全网节点信誉增长率排名的前J%(例如为前75%),为三等级别;
[0089] 信誉增长率为全网节点信誉增长率排名的前K%(例如为前90%);为四等级别;
[0090] 参数是节点等级的阙值,具体的取值与区块链系统对安全性的要求程度有关。
[0091] 步骤302,对信誉增长率进行REPBFT共识;
[0092] 步骤303,主节点将本轮信誉增长率发生变化的节点信誉增长率写入行为记录表中并广播到网络。
[0093] 步骤400,根据节点的信誉值和信誉增长率进行权限管理,具有选举权限的节点可参与共识节点集的随机动态选举,并根据主节点选举算法选举出共识主节点。参照图2,步
骤400包括步骤401至步骤403:
[0094] 步骤401,根据节点的信誉值和信誉增长率对节点的权限进行分配,确定参与共识节点集选举的权限;其中,当节点信誉值为全网节点信誉值排名的前A%、前B%或前C%且
信誉增长率为全网节点信誉增长率排名的前H%、前I%或前J%,则具有参与共识节点集选
举的权限。
[0095] 在本实施例中,每一epoch结束前,当前共识主节点基于先前生成的区块hash值使用PRNG(pseudorandom number generator)伪随机数生成器生成随机数s,阙值ω=0.6。全
网节点共同维护的行为记录表。前所述,节点的信誉值划分为不同的层次,这里判断节点信
誉值是否为全网节点信誉值排名的前25%、前50%或前75%。如前所述,节点的信誉增长率
划分为不同的层次,这里判断节点的信誉增长率是否为全网节点信誉增长率排名的前
25%、前50%或前75%。节点信誉值和信誉增长率所对应的权限如表1所示:
[0096]
[0097] 步骤402,使用可验证随机函数VRF在有参与共识节点集选举权限的节点中进行随机抽样,选取出共识节点集,其中,共识节点集中按信誉值排名分为共识节点和候选共识节
点。
[0098] 本步骤中,有选举权限的各节点使用可验证随机函数VRF参与共识节点集的随机抽样,其中,共识节点集中按信誉值排名分为该epoch的共识节点和候选共识节点。具体的,
对于一个特定的随机数输入s以及输入者的私钥SK,VRF函数会输出一个随机数 和一个证
明proof,验证者可以通过输出的随机数、证明和输入这三部分验证出随机数是否是由该输
入产生。
[0099] 各节点根据s计算出的随机数是否小于阙值λ确定自己是否是共识节点,如果是,则广播一条连接请求,在 时间内等待其余共识节点发起连接请求,各节点均可使用VRF
验证函数基于该节点的公钥PK、随机数种子s、生成的随机数 进行验证。各共识节点连接完
成后,基于节点标识进行信誉值排名。在排名前85%的节点为共识节点,排名后15%的节点
为候选共识节点,候选共识节点将在共识节点发生故障或节点退出时进行快速替换。
[0100] 步骤403,选取出共识节点集后,初始化当前视图v,并选举出当前视图的共识主节点p。
[0101] 在本步骤中,初始化视图v=0,根据以下公式选举出当前视图的共识主节点p:
[0102]
[0103] 其中,h表示当前区块高度,f表示系统允许的最大失效节点数量。
[0104] 步骤500,共识主节点接收客户端发送的请求,之后将请求和签名一起广播给共识节点,开始共识过程。步骤500包括步骤501至步骤505:
[0105] 步骤501,当系统中交易的发起者发起交易时,用私钥签署交易,然后广播到整个网络。
[0106] 具体的,参照图3,在本实施例中,以纪元(epoch)作为大周期运行,每个epoch再划分多个轮次(round),在每一个round时间内,都会产生一个区块,并且视图编号v+1,主节点
也随之更换。
[0107] 当系统中交易的发起者发起交易时,用私钥签署交易,然后广播到整个网络,消息格式为:
[0108] <,Sigc>
[0109] 其中,t为时间戳,d为交易数据,m(d)为交易数据的摘要,c为客户端标识,Sigc为客户端的签名。
[0110] 步骤502,在节点收到交易后,如果它不是共识节点,则可以将其转发;如果是共识节点,则需要验证交易的合法性;如果合法,开始准备构建当前区块b;如果不合法,则直接
丢弃且当主节点发送该交易信息时,可快速发起视图更换协议,而无需检查消息内容。
[0111] 步骤503,在Δt时间后,主节点p向其他共识节点广播共识准备消息。
[0112] 具体的,本步骤中,在Δt时间后(Δt是系统内设的等待回复时间),主节点处理Request消息,确定正在处理的消息是否合法,如果合法,主节点p向其他共识节点广播共识
准备消息,消息格式为:
[0113] <,Sigp>
[0114] 其中,t为时间戳,h是当前区块高度+1,v为视图编号,sn为区块序列号,Sigp为主节点p的签名;
[0115] 步骤504,共识节点接收到主节点发送的准备消息后,对消息进行检验以判断主节点是否作恶或发生故障,若是,则发起视图转换请求并且将该节点标识记录到节点行为表
中;否则,共识节点广播确认消息给主节点。
[0116] 具体的,消息格式为:
[0117] <,Sigi>
[0118] 其中,valid/invalid表示了节点i对此消息是否有效的标识,Sigi为主节点p的签名;
[0119] 节点收到准备消息后将从以下就几个方面进行检验:
[0120] (1)附带的签名正确性;
[0121] (2)消息摘要的正确性;
[0122] (3)视图v的正确性;
[0123] (4)区块高度确实是本地数据库中最新区块高度+1;
[0124] (5)节点未收到具有相同的交易数据d和时间戳t,但序号不同的交易。
[0125] 步骤505,当全部共识节点收到2f+1个(f为系统允许的最大失效节点数量)相同的确认消息时,就达成共识,并且将执行客户端发送的请求并回复客户端且发布区块,视图编
号v+1;否则执行视图切换过程并且将该节点标识记录到节点行为表中。
[0126] 具体的,回复消息格式为:
[0127] <,Sigi>
[0128] 其中,n为共识节点数量,其余符号意义如前所述。
[0129] 步骤600,要退出的节点需向共识主节点发送退出请求,进行节点动态退出;或者,待加入的节点也需向所有共识节点以及主节点都发送加入请求消息,进行节点动态加入。
[0130] 参照图4,节点动态退出,包括以下过程:
[0131] (1)要退出的节点需向共识主节点发送退出请求;
[0132] 具体的,要退出的节点需向共识主节点发送退出请求,请求格式为:
[0133] <,Sigi>
[0134] 其中,h为区块高度+1,主要是声明节点退出的时间(即在区块高度为h+1时退出)。
[0135] (2)如果当该节点退出后,共识节点集的数量少于3f+1,则进入节点动态加入阶段;否则,主节点和要退出的节点都向其他共识节点发送带有双方签名的退出确认消息。
[0136] 具体的,如果当该节点退出后,共识节点集的数量少于3f+1,则进入节点动态加入阶段。否则,主节点和要退出的节点都向其他共识节点发送带有双方签名的退出确认消息。
确认消息格式如下:
[0137] <,Sigi/Sigp>
[0138] 其中,i为要退出的节点i的编号,此编号唯一。
[0139] 参照图5,节点动态加入,包括以下过程:
[0140] (1)主节点向候选共识节点发送共识节点更换消息;候选共识节点根据信誉值排名,排名最高的为新的共识节点.
[0141] 具体的,主节点向候选共识节点发送共识节点更换消息;候选共识节点根据信誉值排名,排名最高的为新的共识节点,更换消息格式如下:
[0142] <,Sigp>
[0143] 如前所述,i为要退出的节点i的编号,Sigp为主节点的签名。
[0144] (2)新的共识节点向主节点和共识节点发送加入请求消息。
[0145] 具体的,新的共识节点向主节点和共识节点发送加入请求消息,请求消息格式为;
[0146] <,Sigi>
[0147] 其中,R为要加入节点i的信誉值,共识节点可查看候选共识节点信誉并验证此请求。
[0148] (3)主节点和共识节点对此消息进行验证、确认后,发送确认节点加入消息给共识节点和新的共识节点。
[0149] 具体的,主节点和共识节点对此消息进行验证、确认后,发送确认节点加入消息给共识节点和新的共识节点。确认消息格式为:
[0150] <,Sigi>
[0151] 消息中的符号意义如前所述。
[0152] 最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其对
前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替
换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。