logo好方法网

一种基于BFT共识的联盟链组网方法


技术摘要:
本发明公开了一种基于BFT共识的联盟链组网方法,联盟链节点在组网时,通过配置文件来配置连接节点,且满足:节点连接数大于等于2;连接的节点通过配置文件可以动态更新;新节点加入联盟链时,通过握手确认以及证书验证确保节点连接的安全性。节点收到消息时,首先与消  全部
背景技术:
在BFT共识算法中,要求各成员组织的网络要互通,即P2P网络如图1所示。但是在 实际应用过程中,这种组网方式十分复杂,网络访问关系为n*(n-1)/2,复杂度为O(n^2),n 为区块链节点数,当区块链网络节点增加时,区块链的效率下降十分显著,例如100个节点, 网络访问关系为4950,也就是说这种组网方式不适合大规模的应用场景;另外,这种组网方 式也使区块链网络的扩展性非常差。基于以上分析,对能够满足实际应用场景的组网方式 的需求是十分迫切的。
技术实现要素:
本发明的目的在于针对现有技术的不足,提供一种基于BFT共识的联盟链组网方 法。 为实现上述目的,本发明采用如下技术方案:一种基于BFT共识的联盟链组网方 法,该方法包括: 联盟链节点在组网时,通过配置文件来配置连接节点,且满足:节点连接数大于等 于2,即任意一个节点保证至少与其他两个节点相连;连接的节点通过配置文件能够动态更 新; 每个联盟链节点具有一个连接池和一个消息池; 新节点加入联盟链时,通过配置文件的目标节点列表获取到需要连接的目标节 点,然后发起连接操作,通过带证书签名的交互消息,互相验证对方的身份,以此实现联盟 链网络节点准入授权机制; 联盟链网络节点有变更时,更新节点的连接池及配置文件; 节点收到消息时,首先与其消息池里的消息进行比对,如果已经收到了该消息则 直接返回,如果是新消息则放入消息池待处理,并把新消息广播到与其相连的其它节点,以 此实现消息广播到全网节点。 进一步地,新节点可以是共识节点也可以是非共识节点,节点的角色通过配置指 定。 进一步地,新节点加入联盟链时,连接步骤如下: 新节点启动,根据配置文件,向目标节点发起link操作;开启定时器,用于触发多 次尝试连接;创建连接协程,用于处理与目标节点的连接交互;发起握手操作,申请连接资 源;生成带证书签名的握手消息IdentityMsg,并发送IdentityMsg,等待目标节点的返回消 息; 目标节点对收到的IdentityMsg进行签名验证,如果验证通过则发送带自己证书 签名的Rsp消息,否则发送拒绝连接的Rsp消息; 4 CN 111586102 A 说 明 书 2/5 页 新节点对收到的Rsp消息进解析,如果是拒绝连接消息则直接返回;如果是带签名 的Rsp消息,则进行签名验证,如果证书验证不通过,则向目标节点发送拒绝连接消息,如果 证书验证通过则发送验证通过消息; 目标节点对收到的消息进行解析,如果是拒绝连接消息,则直接返回;如果是验证 通过消息则发送完成连接消息,并更新自己的连接池; 新节点收到目标节点的完成连接消息后,更新自己的连接池,完成连接。 进一步地,在节点完成建立连接时,启动一个心跳探测协程,定时探测连接池的连 接情况; 如果连接正常则探测次数清零,并等待定时器触发下一次探测,如果探测失败则 探测次数加一,并等待定时器触发下一次探测; 如果达到探测的最大次数,则将该连接移除自己的连接池,并更新该节点的连接 配置文件。 进一步地,当节点的某一连接超时,发起重连操作,如果达到最大重连次数,则认 为该连接已经失效,则从节点的连接池中删除该连接。 进一步地,联盟链节点共识的主要流程包括以下步骤: (1)client发起交易到任意节点; (2)节点收到交易请求后,进行合法性验证,通过验证后生成preprepare并转发到 节点的连接池中与自己相连的其它节点;其它节点收到该preprepare消息后,与节点的消 息池进行比对,如果是第一次收到该消息则转发到节点的连接池中与自己相连的其它节 点,以此类推,实现全网广播; (3)节点收到preprepare后,进行合法性验证,通过验证后生成prepare并转发到 节点的连接池中与自己相连的其它节点;其它节点收到该prepare消息后,与节点的消息池 进行比对,如果是第一次收到该消息则转发到节点的连接池中与自己相连的其它节点,以 此类推,实现全网广播; (4)如果节点收到大于2f个prepare消息,f为容错节点数,则生成commit消息,并 转发到节点的连接池中与自己相连的其它节点,其它节点收到该commit消息后,与节点的 消息池进行比对,如果是第一次收到该消息则转发到节点的连接池中与自己相连的其它节 点,以此类推,实现全网广播; (5)如果节点收到大于2f个commit消息,则认为已经全网达成了共识,则执行交 易,生成区块,返回执行结果给client。 进一步地,当联盟链网络升级时,需要更新对应节点的网络配置,节点实时更新对 应的网络连接池,用于消息转发,并从连接的节点上拉取区块。 进一步地,节点消息池中的消息如果已经处理过且该消息已经生成区块,则认为 已经达到全网共识,将已经生成区块的消息从消息池中移除,以此保证消息池里的消息都 是新收到且未达成共识的待处理消息。 本发明的有益效果是:本发明提出的基于BFT共识算法的联盟链组网方法,将BFT 共识的全连接网络优化为混合式连接,将连接的O(N^2)的复杂度降到O(N),同时保证了消 息在全网的广播,并对传统的BFT共识流程进行相关改造,实现了在该组网模式下BFT共识 算法的正确性;在保证BFT共识算法效率的同时,让区块链能够应用于更大规模的场景。 5 CN 111586102 A 说 明 书 3/5 页 附图说明 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明 的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据 这些附图获得其他的附图。 图1为P2P网络组网示意图; 图2为本发明联盟链组网示意图; 图3为新节点加入联盟链的连接流程图; 图4为消息转发机制示意图; 图5为区块链节点共识流程图; 图6为区块链网络扩展示意图。
下载此资料需消耗2积分,
分享到:
收藏