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)算法、授权拜占庭容错(DelegatedByzantineFau ...
【技术保护点】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。