本发明涉及区块链,特别是涉及一种基于拜占庭容错的共识方法。
背景技术:
1、在当今数字化时代,区块链技术以其分布式、去中心化的特点,成为了许多行业和领域的关注焦点。而区块链的核心之一便是其共识机制,它是确保网络中所有节点对数据的一致性达成共识的关键机制之一。工作量证明(proof of work,pow)算法作为比特币的核心共识机制,开创了一种去中心化的数字货币体系,推动了区块链技术的发展。随着分布式系统规模的扩大和网络环境的复杂化,节点故障和恶意行为的存在对共识算法的可靠性提出了更高的要求。
2、为了解决这些挑战,拜占庭容错算法的研究受到广泛关注。实用拜占庭容错算法(practical byzantine fault tolerance,pbft)作为拜占庭容错算法的经典代表,它通过节点间的多轮协议达成共识,保证了较高效率和安全性。尽管pbft算法已经在多个分布式系统中得到应用,但随着共识网络规模的不断扩大,也面临着主节点选取方式随意、通信开销大、可扩展性差和节点作恶成本低等问题。因此,需要设计更加安全高效的拜占庭容错共识算法。
技术实现思路
1、本发明的目的是提供一种基于聚合签名的分组拜占庭容错共识方法,该方法适用于大规模网络环境,可以有效降低通信开销、提高共识的效率和安全性,具有良好的可扩展性。
2、本发明的目的是通过以下技术方案实现的:
3、一种基于聚合签名的分组拜占庭容错共识方法,所述方法包括:
4、步骤1、根据节点之间对历史交易的评价来对节点的信誉值进行评估,并对发生故障或者有恶意行为的节点进行扣除相应信誉值的惩罚;
5、步骤2、将共识节点划分为多个小组,然后各小组根据组内节点信誉值的大小进行代理节点的选举,代理节点选出后,所有代理节点之间投票选出其中拥有最高信誉值的代理节点作为主节点;
6、步骤3、设置代理节点作为消息交互的中转站,主节点先将包含客户端请求的消息发送至所有代理节点,由代理节点向组内副本节点广播需要共识的消息,各小组中的副本节点向代理节点发送投票消息,然后由代理节点将来自多个节点的签名聚合成单一签名,并返回聚合签名供副本节点验证,投票和签名验证通过后,副本节点在本地执行请求并返回消息给代理节点,完成局部共识,最后由各代理节点返回执行结果给客户端,完成全局共识。
7、本方案的有益效果是:有效降低了通信开销,实现了线性的通信复杂度,提升了系统的共识效率,具有良好的安全性和可扩展性,能够用于节点较多的大规模网络中。
8、进一步的,在步骤1中,所述节点信誉值的评估包含四个部分,直接信誉值、间接信誉值、全局信誉值以及惩罚机制。
9、进一步的,所述直接信誉值是两个进行过交互的节点之间,根据历史交易的评价所计算出的一个节点对另一个节点的信任程度;节点对交易的评价分为信任和不信任两种,sat(i,j)表示节点i对节点j的信任的交易数量,unsat(i,j)为不信任的交易数量;通过计算信任数量和不信任数量的差值得到节点i对节点j的直接信誉值sij,基于历史交易得到的sij越大,表示节点i对j的信任度越高,计算公式如下:
10、sij=(1-β)·sat(i,j)-β·unsat(i,j),0<β<1;
11、其中,β是不信任交易在计算信誉值时所占的权重,较高的β值会放大不信任交易对直接声誉值的影响,从而降低节点的可信度;
12、为防止恶意节点间互相串通给彼此打高分来提高信誉值,并给诚实节点打低分,从而破坏系统公平性,因此需要对直接信誉值进行标准化,具体方法如下:
13、
14、其中,在系统早期,会认为一些节点是可靠的,称为预信任节点,这些节点组成集合p,而|p|为预信任节点的数量。
15、进一步的,所述间接信誉值的作用是通过信任的传递机制,使得节点在没有直接交互的情况下,仍然能够建立对其他节点的信任度,这种信任传递机制通过迭代计算,节点可以获取其他节点间接的信任信息,形成全局一致的信任网络,间接信誉值的计算公式如下:
16、
17、其中,节点i与节点k之间没有进行过直接交互,通过中间节点j提供的参考信息来进行计算得到间接信誉值。
18、进一步的,所述全局信誉值是通过综合直接信誉值和间接信誉值得到的,是评价节点是否可信的主要依据,全局信誉值越高的节点,其可信度越高;各节点根据上一轮的交易找到具有最高信誉值th的诚实节点h:
19、
20、诚实节点h在计算传播参数a的值时发挥关键作用,其信誉值动态地影响a的权重,进而影响全局信誉值,全局信誉值计算公式如下:
21、
22、其中,
23、在主节点以及代理节点选举阶段,将根据各节点的全局信誉值大小来进行选举,全局信誉值越高的节点,可信度越高。
24、进一步的,所述惩罚机制是当某节点被检测到发生故障或恶意行为时,会对其进行不同程度的惩罚,当节点长时间未应答触发超时机制时,表明该节点发生故障,系统会对故障节点进行扣除信誉值x的惩罚;而当节点签名验证不通过时,表明节点发生了恶意行为,会对该恶意节点进行扣除信誉值y的惩罚;通常情况下y被设置为大于x,以加强对恶意节点的惩罚力度,特别地,当某节点的信誉值被降至低于初始信誉值0.3时,系统会将该节点信誉值设为0,表示该节点被系统删除,信誉惩罚的公式如下:
25、
26、其中是原始信誉值,ti'表示降低后的信誉值,x和y表示范围在0到1之间的惩罚值,根据应用场景需要进行设置。
27、上述进一步方案的有益效果:信誉评估可以帮助识别和排除恶意节点,从而提高区块链网络的安全性;通过综合考虑节点的历史交易行为,可以减少共识过程中的操纵风险,帮助建立节点之间的信任关系,增强参与者对网络的信任感,进而促进合作和协作,提升区块链网络的稳定性和可信度。
28、而惩罚机制的存在,增加了节点作恶的成本,进一步约束了节点的异常行为,
29、进一步的,所述步骤2中,将共识节点划分为多个小组后,首先由各小组内的节点投票选出组内信誉值最高的节点作为本组代理节点,然后所有代理节点之间投票选出其中信誉值最高的代理节点作为主节点,具体为:
30、首先,当某个副本节点检测到本组的代理节点作恶或故障时,将通过在组内广播投票消息<vote-change,v,k,i,p>的方式通知本小组内的节点进行投票选举,v表示当前视图编号,k表示组号,i为节点编号,p为该组内信誉值最高的节点;组内其他节点收到消息之后,验证消息的合法性,若同意投票请求,则将确认投票消息广播给组内其他节点;
31、然后,组内其他节点收到消息之后,验证消息的合法性,若同意投票请求,则将确认投票消息<vote-confirm,vnew,k,i,p>广播给组内其他节点,其中vnew表示新的视图编号;
32、最后,当组内节点收到超过三分之二组节点对于节点p的投票确认消息后,则节点p当选为该组新的代理节点,代理节点选举结束,视图发生更新,然后各代理节点之间再次进行投票,其中信誉值最高的节点当选为新一轮的主节点。
33、上述进一步方案的有益效果:通过对节点进行分组,缩小了节点共识的范围,避免了全网节点之间的通信,从而减少节点之间的直接通信和信息交换,大幅降低了通信开销;将节点的信誉值作为选举依据,可以选举出具有高可信度的节点来引领共识,提升节点的可靠性,降低恶意节点成为代理节点的概率,从而避免频繁的视图更换,促进区块链网络的稳定和可信度。
34、进一步的,在步骤3和步骤4中,所述流程包括:
35、request阶段:客户端向主节点发送<request,o,t,c>sc消息,其中o表示请求的具体操作,时间戳t,c是客户端标识,以及客户端对消息的签名sc;
36、propose阶段:主节点对request消息进行验证,如果校验通过,主节点为该请求分配一个序列号n,并构造<<propose,v,n,d>sp,m>消息广播给代理节点,其中v是视图编号,d为客户端发送的请求消息m的摘要,sp表示主节点p对消息的签名,这个阶段结束后,主节点转为执行代理节点的作用;
37、prepare阶段:代理节点对propose消息的签名和内容进行验证,若正确则向组内副本节点广播<<prepare,v,n,d,k,i>si,m>消息,其中i表示节点的编号,k表示当前分组的编号,si表示节点i对pprepare消息的签名;
38、confirm阶段:副本节点验证prepare消息的有效性,若检验通过,则进入confirm阶段,组内副本节点向代理节点返回<comfirm,v,n,si(d),k,i>消息,其中si(d)表示副本节点i对摘要d的签名;
39、commit阶段:代理节点持续接受来自组内副本节点的confirm消息并验证签名,只有当验签正确时,表明投票内容并未被代理节点篡改,签名si(d)才会允许被加入聚合,当验证通过的消息数超过组内三分之二节点时,将这些si(d)通过bls签名算法聚合为一个签名sk,以减少签名数量,然后广播<commit,v,n,sk,k,i,l>消息给组内副本节点进行验证,其中l表示si(d)对应的节点i的集合,以便后续验证者使用相应的公钥对聚合签名进行验证;
40、accept阶段:副本节点验证commit消息中聚合后的签名sk,验证通过后,代表组内大部分节点已确认请求消息,此时在本地执行请求操作,并向代理节点发送<accept,v,n,d,k,i>si消息;
41、reply阶段:若代理节点收到并验证超过三分之二组节点的accept消息,表明组内已完成共识;代理节点向客户端回复<reply,v,t,c,i,r>消息,当客户端收到超过半数以上具有相同时间戳t和执行结果r的reply后,则认为请求响应成功,更新所有节点的得分,完成全局共识。
42、上述进一步方案的有益效果:通过one-to-all的通信方式来优化通信结构,并采用代理节点中转消息可以减少网络拥塞和延迟,降低网络通信开销,实现了线性的通信复杂度,提高了可扩展性,此外,使用聚合签名可以防止代理节点作恶,在降低消息传输量的同时也提高了安全性。
1.一种基于聚合签名的分组拜占庭容错共识方法,其特征在于,所述方法包括:
2.根据权利要求1所述基于聚合签名的分组拜占庭容错共识方法,其特征在于,在步骤1中,所述节点信誉值的评估包含四个部分,直接信誉值、间接信誉值、全局信誉值以及惩罚机制。
3.根据权利要求2所述基于聚合签名的分组拜占庭容错共识方法,其特征在于,所述直接信誉值是两个进行过交互的节点之间,根据历史交易的评价所计算出的一个节点对另一个节点的信任程度;节点对交易的评价分为信任和不信任两种,sat(i,j)表示节点i对节点j的信任的交易数量,unsat(i,j)为不信任的交易数量;通过计算信任数量和不信任数量的差值得到节点i对节点j的直接信誉值sij,基于历史交易得到的sij越大,表示节点i对j的信任度越高,计算公式如下:
4.根据权利要求2所述基于聚合签名的分组拜占庭容错共识方法,其特征在于,所述间接信誉是在节点没有直接交互的情况下,通过信任传播机制建立节点之间的信任,这种通过迭代计算实现的信任传播机制允许节点收集关于其他节点的间接信任信息,从而形成一个全局一致的信任网络,间接信誉值的计算公式如下:
5.根据权利要求2所述基于聚合签名的分组拜占庭容错共识方法,其特征在于,所述全局信誉值是通过综合直接信誉值和间接信誉值得到的,是评价节点是否可信的主要依据,全局信誉值越高的节点,其可信度越高;各节点根据上一轮的交易找到具有最高信誉值th的诚实节点h:
6.根据权利要求2所述基于聚合签名的分组拜占庭容错共识方法,其特征在于,所述惩罚机制是当某节点被检测到发生故障或恶意行为时,会对其进行不同程度的惩罚,当节点长时间未应答触发超时机制时,表明该节点发生故障,系统会对故障节点进行扣除信誉值x的惩罚;而当节点签名验证不通过时,表明节点发生了恶意行为,会对该恶意节点进行扣除信誉值y的惩罚;通常情况下y被设置为大于x,以加强对恶意节点的惩罚力度,特别地,当某节点的信誉值被降至低于初始信誉值0.3时,系统会将该节点信誉值设为0,表示该节点被系统删除,信誉惩罚的公式如下:
7.根据权利要求1所述基于聚合签名的分组拜占庭容错共识方法,其特征在于,所述步骤2中,将共识节点划分为多个小组后,首先由各小组内的节点投票选出组内信誉值最高的节点作为本组代理节点,然后所有代理节点之间投票选出其中信誉值最高的代理节点作为主节点,具体为:
8.根据权利要求1所述基于聚合签名的分组拜占庭容错共识方法,其特征在于,在步骤3中,所述共识流程具体为: