利索能及
我要发布
收藏
专利号: 2022102542004
申请人: 南京信息工程大学
专利类型:发明专利
专利状态:已下证
更新日期:2026-10-21
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.联盟链中基于节点分组的Raft PBFT两阶段共识机制,其特征在于,包括以下步骤:

1)Raft节点分组、Leader节点生成,考虑到自动随机地为节点分组而无需人为干预,同时避免因节点分布不均导致部分分组通信压力大的问题,设计基于Hash环的分组机制;

2)PBFT节点生成,考虑到PBFT共识中,节点间采用多对多的通信模式,导致参与共识的节点数增多时,共识时延急剧上升,因此在节点的选择上做了相应的筛选,得到该阶段两类节点:分组代理节点和主记账节点;

3)首先,在分组交易聚集阶段,Raft层各个分组的节点负责收集来自客户端的交易,并将交易聚集至该节点所在组的分组代理节点;

4)随后,进入PBFT共识阶段,PBFT层汇总各个分组代理节点的交易,对交易进行快速验证并达成共识,并由分组代理节点分发至各个Raft分组;

5)最后,Raft分组验证分组代理节点转发的区块并开启分组共识阶段,并在分组共识结束后通知客户端交易已上链,至此,两阶段共识结束。

2.根据权利要求1所述的联盟链中基于节点分组的Raft PBFT两阶段共识机制,其特征在于,所述节点映射:实现将节点映射到Hash环上,其中节点编号通过式(1)获得,式(1):Hn=Hash(P+Tn+R)

式(1)中,Hn表示节点映射到Hash环上的Hash值,P表示区块链节点的IP地址,Tn表示当前时间戳,R表示随机数。

3.根据权利要求1所述的联盟链中基于节点分组的Raft PBFT两阶段共识机制,其特征在于,所述Leader节点生成:考虑到分组中节点的通信距离,优化Raft共识中Leader节点的选举方式,采用通信距离排行算法维护一组通信距离由大到小排序的Leader节点队列,组内通信距离低的节点将被优先作为Leader节点,以提高分组的吞吐量。

4.根据权利要求1所述的联盟链中基于节点分组的Raft PBFT两阶段共识机制,其特征在于,所述分组代理节点:通过比较Raft的节点分组中各节点间的通信距离,通过聚类从分组中选出节点分组间通信距离最短的节点作为分组代理节点,以优化PBFT共识阶段节点间的通信距离。

5.根据权利要求1所述的联盟链中基于节点分组的Raft PBFT两阶段共识机制,其特征在于,所述主记账节点:每轮PBFT共识过程中,有且仅有一个主记账节点,主记账节点通过式(2)获取节点号,其中Ip表示当前主记账节点的编号,V表示视图大小(用于记录PBFT中主记账节点的工作周期),Np表示PBFT共识阶段中的节点个数,式(2):Ip=(V+1)mod Np。

6.根据权利要求1所述的联盟链中基于节点分组的Raft PBFT两阶段共识机制,其特征在于,所述Raft共识阶段‑分组交易聚集阶段包括以下步骤:

1)Raft共识阶段中各个分组的节点(包括Leader节点和Normal节点)接收来自客户端的交易;

2)Normal节点根据自身与分组内的Leader节点和分组代理节点的映像间的通信距离,选择通信距离更短的传播路径;

3)如果d>l+r,Normal节点将选择传播路径1‑2,既Normal节点先转发交易至Leader节点,再由Leader节点转发交易至分组代理节点的映像;

4)如果d

7.根据权利要求1所述的联盟链中基于节点分组的Raft PBFT两阶段共识机制,其特征在于,所述PBFT共识阶段包括以下步骤:

1)各分组代理节点将交易转发至PBFT共识阶段的主记账节点;

2)主记账节点在出块间隔Δt后,将收集到的交易打包成区块,签名并广播至PBFT共识阶段的其他节点,随后,各节点将对区块和数字签名进行检查,以保证区块的真实性和有效性,若检查无误,将更新区块当前的共识阶段,随后对区块追加签名并继续广播区块至其他节点,区块的共识阶段共包含PrePrepare、Prepare和Commit三个阶段;

3)当区块的共识阶段处于Commit阶段并检查无误后,分组代理节点将转发数字签名集合和区块至Raft分组的Leader节点,随后进入分组共识阶段。

8.根据权利要求1所述的联盟链中基于节点分组的Raft PBFT两阶段共识机制,其特征在于,所述Raft共识阶段‑分组共识阶段包括以下步骤:

1)节点分组中的Leader节点在接收到分组代理节点的映像发送的区块后,将验证区块的签名内容是否正确;

2)如果缺少签名或签名错误,Leader节点将向MMS(Member Management Service)举报分组代理节点,其中,MMS成员管理服务为联盟链的一部分,负责证书的颁发和成员的管理;

3)如果验证签名通过,Leader节点将向所在分组的其它节点广播区块,随后,在接收到分组内一半及以上节点的确认消息后,确认区块上链并通知客户端。