一种拜占庭容错方法及其实现系统技术方案

技术编号:19186117 阅读:26 留言:0更新日期:2018-10-17 02:12
本发明专利技术公开了一种拜占庭容错方法,包括:节点选择步骤:从区块链网络中选择至少提案节点、背书节点、确认节点。提案步骤:提案节点构建新的备选区块。背书步骤:背书节点对收到的备选区块进行验证,然后将备选区块进行优先级排序,并对具有最高优先级的备选区块进行背书。确认步骤:如有备选区块在预定时间内得到预定数量的背书节点的背书,则由所述确认节点对其进行确认。区块保存步骤:如有备选区块在预定时间内的到预定数量的所述确认节点的确认,则所述备选区块完成共识;区块链网络中的所有节点保存所述完成共识的区块。本发明专利技术还公开了所述拜占庭容错方法的实现系统。本发明专利技术可确保在极端情况下持续运行,并有利于区块链网络扩大规模。

A Byzantine fault tolerance method and its implementation system

The invention discloses a Byzantine fault-tolerant method, which comprises a node selection step: selecting at least a proposal node, an endorsement node and a confirmation node from a block chain network. Proposal steps: the proposal node builds a new alternative block. Endorsement step: Endorsement node validates the received alternative blocks, then prioritizes the alternative blocks, and endorses the highest priority alternative blocks. Confirmation step: If an alternative block receives a predetermined number of endorsements within a predetermined time, it is confirmed by the confirmation node. Block preservation steps: If an alternative block is confirmed within a predetermined time to a predetermined number of acknowledged nodes, the alternative block completes the consensus; all nodes in the block chain network preserve the consensus-completed block. The invention also discloses an implementation system of the Byzantine fault-tolerant method. The invention can ensure continuous operation in extreme cases and is conducive to expanding the scale of the block chain network.

【技术实现步骤摘要】
一种拜占庭容错方法及其实现系统
本专利技术涉及一种区块链(Blockchain)网络的共识算法(consensusmechanism),尤其涉及一种拜占庭容错(ByzantineFaultTolerance,BFT)方法。
技术介绍
2016年10月18日工业和信息化部发布的《中国区块链技术和应用发展白皮书》中,将区块链定义为一种无须中介参与、亦能在互不信任或弱信任的参与者之间维系一套不可篡改的账本记录的技术。首先,区块链是一种以区块(block)为单位的链(chain)状数据结构,每一个区块都与前续区块通过密码学证明的方式链接在一起。其次,区块链是一种全网共享的分布式账本(distributedledger)。许多场景中,区块链与分布式账本这两个技术术语具有相同含义。典型地,区块链技术被P2P网络(peer-to-peernetwork)的全部或部分节点用来根据某种共识算法验证新的区块,通过验证的新区块被新增到区块链数据结构的末尾。采用区块链技术的P2P网络就被称为区块链网络。共识是指多方参与的节点在预设规则下,通过多个节点交互对某些数据、行为或流程达成一致的过程。共识机制是定义共识过程的算法、协议和规则。共识算法,作为分布式算法的一种,其复杂度主要通过消息复杂度(MessageComplexity)表示。所谓消息复杂度就是共识算法完成共识的过程中需要在区块链网络中传播的消息的数量。常见的共识算法包括实用拜占庭容错(PracticalByzantineFaultTolerance,PBFT)算法、授权拜占庭容错(DelegatedByzantineFaultTolerance)算法等。这些传统的拜占庭容错算法完成一轮共识的消息复杂度为N2,其中N为网络规模,即区块链网络中全部节点的数量。因此,传统的拜占庭容错算法在区块链网络中使用时,随着网络规模扩大所要传播的消息数量成平方级增长,这容易发生消息堵塞网络的情况。因此,有必要开发一种新型拜占庭容错方法以解决上述技术问题。
技术实现思路
本专利技术所要解决的技术问题是:提供一种拜占庭容错方法,用作区块链网络的共识算法时,随着网络规模扩大消息数量缓慢增长,因而不容易堵塞网络,有利于扩展网络规模。相应地,本专利技术还要提供一种拜占庭容错方法的实现系统。为解决上述技术问题,本专利技术提供了一种拜占庭容错方法,包括如下步骤。节点选择步骤:从区块链网络的全部节点中选择至少三种节点,分别作为提案节点、背书节点和确认节点。提案步骤:所述提案节点构建新的备选区块,签名后在所述区块链网络中广播;所述提案节点分为至少两个不同的优先级,优先级高的提案节点构建的备选区块具有较高的优先级。背书步骤:所述背书节点对收到的备选区块进行验证,然后将备选区块进行优先级排序,并对具有最高优先级的备选区块进行背书,签名后在区块链网络中广播。确认步骤:如有备选区块在预定时间内得到预定数量的背书节点的背书,则由所述确认节点对预定时间内得到预定数量的背书节点的背书的备选区块进行确认,签名后在区块链网络中广播。区块保存步骤:如有备选区块在预定时间内的到预定数量的所述确认节点的确认,则所述备选区块完成共识;所述区块链网络中的所有节点保存所述完成共识的区块。优选地,所述提案步骤、背书步骤、确认步骤中,提案节点、背书节点、确认节点的所述签名采用PKCS、DSA、x.509、PGP、Hash算法中的一种或多种。节点之间的通信例如采用非对称加密算法,各节点都有私钥和公钥。各节点发送的消息使用该节点的私钥签名并加密,各节点接收的消息使用该节点的私钥验证并解密。这里提供了可进行签名加密或是验证解密的一些算法,可用于具体实施。优选地,所述节点选择步骤中,所述提案节点具有至少两个,各个提案节点之间具有各不相同的优先级。这样不同提案节点所构建的新的备选区块也具有不同的优先级,便于对备选区块按照优先级排序。优选地,所述节点选择步骤中,所述背书节点具有至少两个,全部背书节点至少具有两个优先级。首先由最高优先级的一个或多个背书节点进行背书,如未成功再由所有背书节点对空区块进行背书。这样便实现了有层次的背书。优选地,所述节点选择步骤中,所述确认节点具有至少两个,全部确认节点至少具有两个优先级。首先由最高优先级的一个或多个确认节点进行确认,如未成功再由所有确认节点对空区块进行确认。遮阳便实现了有层次的确认。进一步地,所述节点选择步骤中包括如下步骤。步骤S11:对区块链网络中最新完成共识的区块计算随机值。步骤S12:基于所述随机值从区块链网络的节点中选定本轮共识的提案节点、背书节点、确认节点。这提供了一种节点选择方法,是根据上一轮完成共识的区块来选择本轮共识的提案节点、背书节点、确认节点的方法,可使提案节点、背书节点、确认节点在每一轮共识中都有重新选择机会。优选地,所述步骤S11中,采用可验证随机函数计算随机值。这给出了计算随机值的一种具体实现方式。优选地,所述步骤S12中,制定一个节点信息表格,所述提案节点、背书节点和确认节点是由所述随机值的不同比特位在所述节点信息表格中选定的。这给出了根据随机值选择节点的一种具体实现方式。进一步地,所述节点选择步骤中,采用随机算法在区块链网络的节点中选定提案节点、背书节点和确认节点。这提供了另一种节点选择方法。进一步地,所述提案步骤包括如下步骤。步骤S21:本轮共识的最高优先级的提案节点构建本轮共识的新的备选区块,签名后在区块链网络中广播。步骤S22:所有提案节点监听区块链网络中广播的本轮共识的新的备选区块,并对收到的备选区块进行缓存。步骤S23:如超过第一预定时间,本轮共识的最高优先级的提案节点没有构建备选区块、或构建的备选区块未通过检查,则由非最高优先级的提案节点构建新的备选区块,签名后向区块链网络中广播。步骤S24:所有提案节点监听区块链网络中广播的本轮共识的新的备选区块,并对收到的备选区块进行缓存。步骤S25:如超过第二预定时间,所有提案节点都没有构建备选区块、或构建的备选区块均未通过检查,则由任意提案节点随机提交空区块,签名后向区块链网络中广播。这提供了一种提案方法,分为三个层次,可以确保在任何情况下都能向后续的背书步骤提交新的备选区块、或是空区块。优选地,所述步骤S21、步骤S23中,提案节点构建新的备选区块后,先对自身构建的备选区块进行检查,检查通过后才将自身构建的备选区块签名,然后在所述区块链网络中广播。这可确保构建的新的备选区块是正确有效的。优选地,所述步骤S22、步骤S24中,提案节点还对收到的备选区块进行检查;如果检查为有效,则对通过检查的备选区块进行缓存;如果检查结果为无效,忽略该备选区块。这可确保构建的新的备选区块是正确有效的。优选地,所述步骤S21至步骤S24中,所述检查包括对构建备选区块的提案节点的签名的有效性检查、对构建的新的备选区块数据的有效性检查、对构建备选区块的提案节点的提案权限的有效性检查中的一种或多种。这里提供了对备选区块的检查内容的一种示例。进一步地,所述背书步骤包括如下步骤。步骤S31:本轮共识的所有背书节点对提案节点广播的备选区块进行验证,并对验证后的备选区块按照优先级排序。步骤S32:本轮共识的最高优先级的一个或多个背书节点对最高优先级的备选区块进行本文档来自技高网
...

【技术保护点】
1.一种拜占庭容错方法,其特征是,包括如下步骤:节点选择步骤:从区块链网络的全部节点中选择至少三种节点,分别作为提案节点、背书节点和确认节点;提案步骤:所述提案节点构建新的备选区块,签名后在所述区块链网络中广播;所述提案节点分为至少两个不同的优先级,优先级高的提案节点构建的备选区块具有较高的优先级;背书步骤:所述背书节点对收到的备选区块进行验证,然后将备选区块进行优先级排序,并对具有最高优先级的备选区块进行背书,签名后在区块链网络中广播;确认步骤:如有备选区块在预定时间内得到预定数量的背书节点的背书,则由所述确认节点对预定时间内得到预定数量的背书节点的背书的备选区块进行确认,签名后在区块链网络中广播;区块保存步骤:如有备选区块在预定时间内的到预定数量的所述确认节点的确认,则所述备选区块完成共识;所述区块链网络中的所有节点保存所述完成共识的区块。

【技术特征摘要】
1.一种拜占庭容错方法,其特征是,包括如下步骤:节点选择步骤:从区块链网络的全部节点中选择至少三种节点,分别作为提案节点、背书节点和确认节点;提案步骤:所述提案节点构建新的备选区块,签名后在所述区块链网络中广播;所述提案节点分为至少两个不同的优先级,优先级高的提案节点构建的备选区块具有较高的优先级;背书步骤:所述背书节点对收到的备选区块进行验证,然后将备选区块进行优先级排序,并对具有最高优先级的备选区块进行背书,签名后在区块链网络中广播;确认步骤:如有备选区块在预定时间内得到预定数量的背书节点的背书,则由所述确认节点对预定时间内得到预定数量的背书节点的背书的备选区块进行确认,签名后在区块链网络中广播;区块保存步骤:如有备选区块在预定时间内的到预定数量的所述确认节点的确认,则所述备选区块完成共识;所述区块链网络中的所有节点保存所述完成共识的区块。2.根据权利要求1所述的拜占庭容错方法,其特征是,所述提案步骤、背书步骤、确认步骤中,提案节点、背书节点、确认节点的所述签名采用PKCS、DSA、x.509、PGP、Hash算法中的一种或多种。3.根据权利要求1所述的拜占庭容错方法,其特征是,所述节点选择步骤中,所述提案节点具有至少两个,各个提案节点之间具有各不相同的优先级。4.根据权利要求1所述的拜占庭容错方法,其特征是,所述节点选择步骤中,所述背书节点具有至少两个,全部背书节点至少具有两个优先级。5.根据权利要求1所述的拜占庭容错方法,其特征是,所述节点选择步骤中,所述确认节点具有至少两个,全部确认节点至少具有两个优先级。6.根据权利要求1所述的拜占庭容错方法,其特征是,所述节点选择步骤中进一步包括如下步骤:步骤S11:对区块链网络中最新完成共识的区块计算随机值;步骤S12:基于所述随机值从区块链网络的节点中选定本轮共识的提案节点、背书节点、确认节点。7.根据权利要求6所述的拜占庭容错方法,其特征是,所述步骤S11中,采用可验证随机函数计算随机值。8.根据权利要求6所述的拜占庭容错方法,其特征是,所述步骤S12中,制定一个节点信息表格,所述提案节点、背书节点和确认节点是由所述随机值的不同比特位在所述节点信息表格中选定的。9.根据权利要求1所述的拜占庭容错方法,其特征是,所述节点选择步骤中,采用随机算法在区块链网络的节点中选定提案节点、背书节点和确认节点。10.根据权利要求1所述的拜占庭容错方法,其特征是,所述提案步骤进一步包括如下步骤:步骤S21:本轮共识的最高优先级的提案节点构建本轮共识的新的备选区块,签名后在区块链网络中广播;步骤S22:所有提案节点监听区块链网络中广播的本轮共识的新的备选区块,并对收到的备选区块进行缓存;步骤S23:如超过第一预定时间,本轮共识的最高优先级的提案节点没有构建备选区块、或构建的备选区块未通过检查,则由非最高优先级的提案节点构建新的备选区块,签名后向区块链网络中广播;步骤S24:所有提案节点监听区块链网络中广播的本轮共识的新的备选区块,并对收到的备选区块进行缓存;步骤S25:如超过第二预定时间,所有提案节点都没有构建备选区块、或构建的备选区块均未通过检查,则由任意提案节点随机提交空区块,签名后向区块链网络中广播。11.根据权利要求10所述的拜占庭容错方法,其特征是,所述步骤S21、步骤S23中,提案节点构建新的备选区块后,先对自身构建的备选区块进行检查,检查通过后才将自身构建的备选区块签名,然后在所述区块链网络中广播。12.根据权利要求10所述的拜占庭容错方法,其特征是,所述步骤S22、步骤S24中,提案节点还对收到的备选区块进行检查;如果检查为有效,则对通过检查的备选区块进行缓存;如果检查结果为无效,忽略该备选区块。13.根据权利要求11或12所述的拜占庭容错方法,其特征是,所述步骤S21至步骤S24中,所述检查包括对构建备选区块的提案节点的签名的有效性检查、对构建的新的备选区块数据的有效性检查、对构建备选区块的提案节点的提案权限的有效性检查中的一种或多种。14.根据权利要求1所述的拜占庭容错方法,其特征是,所述背书步骤进一步包括如下步骤:步骤S31:本轮共识的所有背书节点对提案节点广播的备选区块进行验证,并对验证后的备选区块按照优先级排序;步骤S32:本轮共识的最高优先级的一个或多个背书节点对最高优先级的备选区块进行背书,签名后在所述区块链网络中广播;步骤S33:本轮共识的所有背书节点监听区块链网络中的背书消息,在收到背书的备选区块后将其缓存;步骤S34:如有备选区块在第三预定时间内得到第一预定数量的背书节点的背书,则将该备选区块提交进入确认步骤;否则进入步骤S35;步骤S35:如全部备选区块在第三预定时间内均未得到第一预定数量的背书节点的背书,则由任意背书节点随机对空区块进行背书,附加自己的签名后向区块链网络中广播进入确认步骤。15.根据权利要求14所述的拜占庭容错方法,其特征是,所述步骤S31中,所述验证包括对构建备选区块的提案节点的签名的有效性验证、对构建的新的备选区块数据的有效性验证、对构建备选区块的提案节点的提案权限的有效性验证中的一种或多种。16.根据权利要求1所述的拜占庭容错方法,其特征是,所述...

【专利技术属性】
技术研发人员:丛宏雷胡凝
申请(专利权)人:上海分布信息科技有限公司
类型:发明
国别省市:上海,31

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

1