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

基于信誉和节点压缩机制的区块链共识方法

文献发布时间:2023-06-19 18:27:32


基于信誉和节点压缩机制的区块链共识方法

技术领域

本发明属于区块链技术领域,涉及基于信誉和节点压缩机制的区块链共识方法。

背景技术

从本质上说,区块链技术是一种特殊的去中心化的分布式数据库,集成了智能合约、共识机制、密码学原理、网络通信以及分布式存储等特性,目前区块链技术已经成熟地运用于不同的领域。

共识机制是一种区块链核心技术,基于共识算法实现,保证在分布式系统中不同节点的状态一致性。随着区块链技术的发展,在不同领域衍生出了不同的共识算法,这些共识算法各有优势和不足。PBFT共识算法是目前联盟链中运用最广泛的共识算法之一。PBFT算法是基于状态机副本复制的算法,主要包含3个核心阶段,预准备阶段(PRE-PREPARE):PBFT算法从节点集里随机选取一个节点作为主节点,主节点收到客户端发来的请求消息后,进行校验,如果校验通过则在请求消息是加上自己的签名并通过对等网络广播发送至所有参与共识的节点;准备阶段(PREPARE):当所有共识节点收到主节点发来的预准备消息,首先对预准备消息进行校验,如果校验通过则向对等网络中的所有共识节点(包括主节点)发送一条准备消息;确认阶段(COMMIT):共识节点在收到其他节点发送的准备消息后,对收到的消息数量进行统计,若收到2f条(假设总节点数为3f+1,PBFT算法可以容忍三分之一的恶意节点)与自己所记录的消息一致的准备消息,就向所有共识节点广播一条确认消息。

基于BFT共识算法改进的PBFT算法解决了BFT算法效率低下的问题,将BFT算法的复杂度从指数级降到多项式级,同时具有高吞吐量、容错性良好、能耗小等优点。但在一些具体的应用场景下,PBFT算法仍然存在一些不足。首先是主节选举方式比较随意,在成功选取主节点以后缺乏主节点的动态替换机制,存在安全隐患。若主节点是作恶节点就会导致视图变更频繁,极大地增加大网络开销,造成网络资源浪费,从而影响共识效率;其次,传统的PBFT算法并未在写入区块数据大小的方面做出优化,随着区块的不断生成,区块链账本持续累加,势必会对设备存储容量带来挑战。随着存储容量不足,节点设备将难以保证区块链系统的正常运行。

发明内容

有鉴于此,本发明的目的在于提供一种基于信誉和节点压缩机制的区块链共识方法。

为达到上述目的,本发明提供如下技术方案:

基于信誉和节点压缩机制的区块链共识方法,该方法包括以下步骤:

S1:系统初始化,根据信誉值表对各节点进行分类划分同时在信任节点集中随机选取一个节点作为主节点;

S2:主节点对已有区块进行数据备份和验证,确保所有节点的一致性,同时各节点将自身存储容量C

S3:客户端向主节点发送请求消息;

S4:主节点校验客户端发来的请求消息并生成预准备消息发送给其他共识节点;

S5:共识节点校验预准备消息并生成准备消息广播给所有节点,若收到的一致消息的节点超过总节点数的三分之二,则进入确认阶段并修改本地信誉值表;

S6:各节点验证准备消息并生成确认消息,将确认消息广播给所有节点,然后验证收到的一致消息的节点是否超过总节点数的三分之二,若超过则修改本地信誉值表;

S7:各节点收到所述S6中的确认消息后生成回复消息,并将回复消息发送给客户端,若客户端收到的一致消息的节点超过总节点数的三分之二则表明达成共识结果;

S8:主节点通过收到各节点在所述S6中的确认消息,计算各节点综合信誉值表,向各节点广播综合信誉值表并通知它们更新各自的本地信誉值表;

S9:主节点验证是否有节点容量达到阈值,若达到阈值则对区块进行压缩以生成压缩块,然后通知节点容量达到阈值的节点更新区块;

S10:根据综合信誉值表对节点进行动态调整,若主节点信誉值不达标则重新选择信誉值最高的节点作为主节点;至此完成本轮共识。

可选的,所述S5中,通过节点的共识行为修改信誉值表,具体包括以下步骤:

S51:各节点都在本地维护着一张信誉值表,同时根据包括自身的各节点在共识过程中的行为修改其信誉值;

S52:若节点在本轮共识过程中产生与大多数节点一致的消息则信誉值加1,若节点在本轮共识中未产生消息则信誉值加0,若节点在本轮共识过程中发送了与大多数节点不一致的错误消息则信誉值减1。

可选的,所述S8中,信誉计算公式计算节点信誉值,具体包括以下步骤:

S81:主节点确认阶段收到的各节点的信誉值表,通过公式

可选的,所述S9中,主节点验证是否有节点容量达到阈值并进行压缩,具体包括以下步骤:

S91:主节点在完成一轮共识后根据公式

S92:若有节点的存储容量达到阈值,主节点首先通过Merkle树对压缩前的所有区块两两取哈希运算生成一个类似于Merkle树根的压缩块CBLOC、该压缩块CBLOC用于存储压缩前所有区块的哈希值,然后生成本轮应该生成的新区块NBLOC、该新区块用于存储压缩块的哈希值;

S93:主节点发送压缩块CBLOC至节点容量达到阈值的节点,通知它们以压缩块CBLOC替换之前的区块。

本发明的有益效果在于:

1)解决了传统PBFT算法中主节点选取方式随意、缺乏节点动态加入和退出的机制、当主节点作为恶意节点时缺乏处理机制造成较大的网络开销和资源浪费等问题。

2)加入压缩机制,当节点存储容量达到一定阈值时对区块进行压缩,降低节点存储压力。

本发明的其他优点、目标和特征在某种程度上将在随后的说明书中进行阐述,并且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可以从本发明的实践中得到教导。本发明的目标和其他优点可以通过下面的说明书来实现和获得。

附图说明

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作优选的详细描述,其中:

图1为本发明的流程图;

图2为本发明信誉值机制流程图;

图3为本发明压缩机制流程图。

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。

其中,附图仅用于示例性说明,表示的仅是示意图,而非实物图,不能理解为对本发明的限制;为了更好地说明本发明的实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;对本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。

本发明实施例的附图中相同或相似的标号对应相同或相似的部件;在本发明的描述中,需要理解的是,若有术语“上”、“下”、“左”、“右”、“前”、“后”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此附图中描述位置关系的用语仅用于示例性说明,不能理解为对本发明的限制,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语的具体含义。

本发明实例提供了一种基于信誉和节点压缩机制的区块链共识算法,主要利用信誉机制对节点在共识过程中的行为进行评分并划分级别,并结合信誉值改进主节点的选取方式,提高算法的安全性与活性;同时引入压缩机制,当区块链大小达到节点阈值时对节点进行压缩,减小节点存储压力,维护系统正常运行。

请参阅图1~图3,一种基于信誉和节点压缩机制的区块链共识方法,所属方法包括:

具体的假设有A、B、C、D共4个节并假设节点D为恶意节点,此时总节点数n=4、恶意节点数f=1。

所属共识算法生成区块的步骤如下:

步骤一:各节点初始化信誉值,假设节点D为恶意节点。

Reputation_a=1,Reputation_b=1,Reputation_c=1,Reputation_d=-1。

步骤二:选取主节点,从信任节点集(即节点A、B、C)中选取主节点。假设选取节点A为主节点。

步骤三:客户端请求发起共识,生成请求消息,其中t为时间戳,用以保证请求时效性,o为请求操作状态,c为客户端编号。

步骤四:主节点A收到客户端发送的请求消息后,对请求消息进行校验签名并生成预准备消息<,w>,其中v为视图编号,m为客户端发送的消息,h为消息m的哈希值,n为消息编号,w为各节点信誉值表。

步骤五:节点B、C、D收到来自主节的预准备消息后进行验证,若验证正确则生成准备消息<,w>,并将消息写入本地;同时广播给其他节点,其中i为各节点编号。在此阶段,各节点将收到来自其它节点的准备消息与自己相比较,若收到超过2f+1个与自身一致的消息则进入确认阶段;同时根据验证的正确性修改信誉值表。

步骤六:节点B、C、D分别收到所有共识节点集内的节点(包括自身)的准备消息。假设此阶段共识节点全都正常工作,所有节点生成确认消息<,w>,并广播给所有节点;同样验证是否收到收到超过2f+1个与自身一致的消息,若收到则再次修改信誉值表w。

步骤七:主节点A收到各节点的确认消息,通过公式

步骤八:主节点通过公式

步骤九:根据综合信誉值表对节点进行动态调整,若主节点A信誉值未达到

最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。

技术分类

06120115578790