一种基于PBFT的联盟链分片方法及相应的联盟链技术

技术编号:20657354 阅读:50 留言:0更新日期:2019-03-23 08:44
本发明专利技术提供一种基于PBFT的联盟链分片方法及相应的联盟链,所述方法包括:根据联盟链中节点总数以及预设的最小节点共识数量,计算联盟链被划分的片区数;根据片区数,将联盟链中的所有节点进行片区的划分;当节点接收到上链信息请求时,按照预设算法确定存储上链信息的片区;按照PBFT算法将上链信息存储到确定的片区的区块中,并将产生的新区块广播到所有节点中;对新区块进行哈希运算,将运算后的哈希值存储到联盟链的主链中。通过本发明专利技术,基于PBFT算法对联盟链进行分片,提高了联盟链系统的并发量。

A Partitioning Method of Alliance Chain Based on PBFT and Its Corresponding Alliance Chain

The invention provides a PBFT-based fragmentation method of alliance chain and corresponding alliance chain. The method includes: calculating the number of fragments in the alliance chain according to the total number of nodes in the alliance chain and the preset minimum number of consensus nodes; dividing all nodes in the alliance chain into fragments according to the number of fragments; determining according to the preset algorithm when the node receives the information request of the upper chain. The upper chain information is stored in a block according to the PBFT algorithm, and the generated new block is broadcast to all nodes. The new block is hashed and the hash value is stored in the main chain of the Federation chain. The invention divides the alliance chain based on PBFT algorithm, and improves the concurrency of the alliance chain system.

【技术实现步骤摘要】
一种基于PBFT的联盟链分片方法及相应的联盟链
本专利技术涉及区块链的分片技术,更具体地,涉及一种基于PBFT的联盟链分片方法及相应的联盟链。
技术介绍
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain)是比特币的一个重要概念,它本质上是一个去中介化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,区块链具有去中心化、安全性高等特点,因此,在很多应用场合都使用区块链。传统的区块链中只存在一条主链,当交易并发量较高时,传统的区块链会出现压力瓶颈,导致并发量低的问题。
技术实现思路
本专利技术提供一种克服上述问题或者至少部分地解决上述问题的基于PBFT的联盟链分片方法及相应的联盟链,解决了联盟链并发量低的问题。根据本专利技术的一个方面,提供了一种基于PBFT的联盟链分片方法,包括:S1,根据联盟链中节点总数以及预设的最小节点共识数量,计算联盟链中所有节点被划分的片区数;S2,根据所述片区数,按照预设规则将联盟链中的所有节点进行片区的划分;S3,当联盟链中的节点接收到上链信息请求时,按照预设算法确定存储上链信息的片区;S4,按照PBFT算法将所述上链信息存储到确定的片区的区块中,并将产生的新区块广播到联盟链的所有节点中;S5,对所述新区块进行哈希运算,将运算后的哈希值存储到联盟链的主链中。本专利技术的有益效果为:基于PBFT算法对联盟链进行分片,将联盟链划分为主链和多个片区链,当联盟链的交易量较高时,提高了联盟链系统的并发量。在上述技术方案的基础上,本专利技术还可以做如下改进。进一步的,所述步骤S1之前还包括:当有新节点申请接入联盟链时,联盟链管理节点对申请加入的该新节点进行审核,待审核通过后,对该新节点进行编号,并将联盟链中更新后的所有节点名单广播至联盟链的所有节点。进一步的,所述步骤S1具体包括:当联盟链中的节点接收到联盟链管理节点广播的所有节点名单后,根据所述所有节点名单中的节点总数m和预设的最小节点共识数量n,计算联盟链中所有节点被划分的片区数x=[m/n],其中,m,n均为正整数;相应的,所述步骤S2具体包括:根据计算的片区数,将联盟链中所有节点等分为x个片区,每一个片区包括n个节点。进一步的,所述根据计算的片区数,将联盟链中所有节点等分为x个片区具体包括:划分后的第一片区包括编号为1~n的节点,第二片区包括编号为(n+1)~2n的节点,依次类推,第x个片区包括编号为(x-1)n+1~m的节点。进一步的,所述步骤S3具体包括:当联盟链中的节点接收到上链信息请求时,该节点计算出H=(上链信息+当前时间戳的哈希值),并计算y=(H的二进制后12位)modx+1,得到小于等于x的片区序号y,其中,y为确定存储上链信息的片区。进一步的,所述步骤S4具体包括:S41,接收到上链信息请求的节点与第y片区中的所有节点组成第y共识小组,其中,所述接收到上链信息请求的节点为第y共识小组的主节点,第y片区中的所有节点为第y共识小组的从节点;S42,按照PBFT算法进行出块,并将产生的新区块在第y共识小组的所有节点中进行更新;S43,当第y共识小组的主节点接收到该共识小组中超过2/3个从节点的新区块更新成功的反馈时,该主节点将产生的新区块广播至联盟链的所有节点。进一步的,所述步骤S5具体包括:S51,当在第y共识小组中产生的新区块的数量为预设数量时,第y共识小组中的主节点对产生的预设数量的新区块进行哈希运算,得到对应的哈希值;S52,第y共识小组中的所述主节点将所述哈希值发送给第一片区的所有节点,并按照PBFT算法将所述哈希值存储到第一片区的主链上;S53,第一片区的主链将所述哈希值广播至每一个片区的主链上,以使所述哈希值存储到联盟链的每一个片区的主链上。进一步的,所述步骤S5之后还包括:S6,根据需要验证的指定片区的指定区块,对所述指定区块进行哈希运算,得到运算后的哈希值,将该哈希值与存储于主链中的所述指定片区的所述指定区块的哈希值进行对比,若对比结果为一致,则表明指定片区的指定区块为正确,若不一致,则指定片区的指定区块为错误。根据本专利技术的另一个方面,提供了一种基于PBFT分片的联盟链,所述联盟链包括多个节点;任一所述节点,用于根据联盟链中节点总数以及预设的最小节点共识数量,计算联盟链中所有节点被划分的片区数;还用于根据所述片区数,按照预设规则将联盟链中的所有节点进行片区的划分;接收到上链信息请求的节点,用于按照预设算法确定存储上链信息的片区;还用于按照PBFT算法将所述上链信息存储到确定的片区的区块中,并将产生的新区块广播到联盟链的所有节点中;以及还用于对所述新区块进行哈希运算,将运算后的哈希值存储到联盟链的主链中。进一步的,所述联盟链包括一个联盟链管理节点;所述联盟链管理节点,用于当有新节点申请接入联盟链时,对申请加入的该新节点进行审核;还用于待审核通过后,对该新节点进行编号,并将联盟链中更新后的所有节点名单广播至联盟链的所有节点。附图说明图1为本专利技术一个实施例的基于PBFT的联盟链分片方法流程图;图2为本专利技术一个实施例的联盟链片区划分流程图;图3为本专利技术一个实施例的将上链信息进行存储的流程图;图4为本专利技术一个实施例的将区块的哈希值存储于主链中的流程图。具体实施方式下面结合附图和实施例,对本专利技术的具体实施方式作进一步详细描述。以下实施例用于说明本专利技术,但不用来限制本专利技术的范围。参见图1,提供了本专利技术一个实施例的基于PBFT的联盟链分片方法,该方法对整个联盟链进行分片,能够提高整个联盟链的并发量。该分片方法包括:S1,根据联盟链中节点总数以及预设的最小节点共识数量,计算联盟链中所有节点被划分的片区数;S2,根据片区数,按照预设规则将联盟链中的所有节点进行片区的划分;S3,当联盟链中的节点接收到上链信息请求时,按照预设算法确定存储上链信息的片区;S4,按照PBFT算法将所述上链信息存储到确定的片区的区块中,并将产生的新区块广播到联盟链的所有节点中;S5,对新区块进行哈希运算,将运算后的哈希值存储到联盟链的主链中。在本实施例中,对整个联盟链的所有节点进行片区的划分,具体为联盟链中的节点根据加入联盟链的节点总数和预先配置的该联盟链的最小节点共识数量。其中,最小节点共识数量可以理解为划分后的每一个片区中包含的节点数量。节点根据联盟链中的节点总数和最小节点共识数量,计算将联盟链划分后的片区数,并根据片区数将联盟链中的所有节点进行片区的划分。对联盟链中的所有节点进行片区的划分后,当节点接收到上链信息请求后,接收到上链信息请求的节点通过一定的规则选择一个片区,并通过PBFT(PracticalByzantineFaultTolerance,实用拜占庭容错算法)将上链信息存储于选择的片区的区块中,并将产生的新区块在联盟链全网进行广播。最后,还将产生的新区块进行哈希运算,将运算后的哈希值更新存储到联盟链主链的区块中,至此,完成上链信息在联盟链中的存储。对联盟链中的节点进行片区的划分,能够提高整个联盟链系统的并发量。在本专利技术的一个实施例中,所述步骤S1之前还包括:当有新节点申请接入联盟链时,联盟链管理节点对申请加入的该新节点进行审核,待审核通过后,对该新节点本文档来自技高网...

【技术保护点】
1.一种基于PBFT的联盟链分片方法,其特征在于,包括:S1,根据联盟链中节点总数以及预设的最小节点共识数量,计算联盟链中所有节点被划分的片区数;S2,根据所述片区数,按照预设规则对联盟链中的所有节点进行片区的划分;S3,当联盟链中的节点接收到上链信息请求时,按照预设算法确定存储上链信息的片区;S4,按照PBFT算法将所述上链信息存储到确定的片区的区块中,并将产生的新区块广播到联盟链的所有节点中;S5,对所述新区块进行哈希运算,将运算后的哈希值存储到联盟链的主链中。

【技术特征摘要】
1.一种基于PBFT的联盟链分片方法,其特征在于,包括:S1,根据联盟链中节点总数以及预设的最小节点共识数量,计算联盟链中所有节点被划分的片区数;S2,根据所述片区数,按照预设规则对联盟链中的所有节点进行片区的划分;S3,当联盟链中的节点接收到上链信息请求时,按照预设算法确定存储上链信息的片区;S4,按照PBFT算法将所述上链信息存储到确定的片区的区块中,并将产生的新区块广播到联盟链的所有节点中;S5,对所述新区块进行哈希运算,将运算后的哈希值存储到联盟链的主链中。2.根据权利要求1所述的联盟链分片方法,其特征在于,所述步骤S1之前还包括:当有新节点申请接入联盟链时,联盟链管理节点对申请加入的该新节点进行审核,待审核通过后,对该新节点进行编号,并将联盟链中更新后的所有节点名单广播至联盟链的所有节点。3.根据权利要求2所述的联盟链分片方法,其特征在于,所述步骤S1具体包括:当联盟链中的节点接收到联盟链管理节点广播的所有节点名单后,根据所述所有节点名单中的节点总数m和预设的最小节点共识数量n,计算联盟链中所有节点被划分的片区数x=[m/n],其中,m,n均为正整数;相应的,所述步骤S2具体包括:根据计算的片区数,将联盟链中所有节点等分为x个片区,每一个片区包括n个节点。4.根据权利要求3所述的联盟链分片方法,其特征在于,所述根据计算的片区数,将联盟链中所有节点等分为x个片区具体包括:划分后的第一片区包括编号为1~n的节点,第二片区包括编号为(n+1)~2n的节点,依次类推,第x个片区包括编号为(x-1)n+1~m的节点。5.根据权利要求1所述的联盟链分片方法,其特征在于,所述步骤S3具体包括:当联盟链中的节点接收到上链信息请求时,该节点计算出H=(上链信息+当前时间戳的哈希值),并计算y=(H的二进制后12位)modx+1,得到小于等于x的片区序号y,其中,y为确定存储上链信息的片区。6.根据权利5所述的联盟链分片方法,其特征在于,所述步骤S4具体包括:S41,接收到上链信息请求的节点与第y片区中的所有节点组成第y共识小组,其中,所述接收到上链信息请求的节点为第y共...

【专利技术属性】
技术研发人员:尚书丞
申请(专利权)人:弗洛格武汉信息科技有限公司
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1