1.一种基于混合拜占庭容错的联盟区块链网络共识方法,其特征在于,该方法包括以下步骤:S1:利用分片机制,将区块链网络节点分类为四种节点类型,包含普通节点、验证节点、排序节点和出块节点,其中出块为全节点;
S2:将共识机制分为两个阶段,包括预处理阶段算法和执行阶段算法,执行预处理算法;
S3:利用主节点视图切换算法来保证主节点在共识机制中正常运行;
S4:出块节点执行并行拜占庭容错算法来达成出块节点共识,并由本轮共识中的主节点完成出块。
2.根据权利要求1所述的一种基于混合拜占庭容错的联盟区块链网络共识方法,其特征在于,所述步骤S1中,定义分片机制为:假设有n个相同计算能力的无身份处理器,其中f个处理器由拜占庭对手控制;网络接受每个块的事务,块j中的事务i用整数 表示;
所有处理器都能访问外部指定的约束函数 定义处理器之间运行的协议W,该协议输出一个集合X,包含k个单独的分片 1≤j≤|Xi|,满足以下条件:(1)对于给定的安全性参数λ,诚实的处理器以至少1-2-λ的概率在X上达成一致;
(2)给定的分片X满足指定的约束函数C,即
(3)k的值随节点n的大小线性增长,且每个处理器使用的计算和带宽保持恒定,与n和k无关;
(4)分片以轮数进行,每一轮决定一组值 其中2s为子集Xi的数量;
进行分片时,每个处理器在本地选择其身份识别码(IP,PK),它们分别是公用密钥和IP地址;每个处理器在本地搜索满足以下约束的有效随机数:O=H(Randomness|IP||PK|nonce)≤2γ-D
其中,γ表示随机输出位数,D表示网络预定义参数;通过上述步骤,将区块链网络节点分片。
3.根据权利要求1所述的一种基于混合拜占庭容错的联盟区块链网络共识方法,其特征在于,所述步骤S2具体包括:预处理阶段算法和执行阶段算法:将多个状态对象分组为状态部件,并将每个部件分配给一组f+1个机器;使用两种不同类型的并行来处理传入的请求:首先,每个副本只执行访问在其分配的状态部分中分组的对象的请求;其次,每个副本并行处理独立请求;总数为n的副本被随机分成p个组,每个组至少包含f+1个机器,p表示状态部件的数量;对于i组中的所有机器都负责执行对位于状态部件内部Si的对象的请求;在每个组包含f+1个副本的前提下,n表示为n=p×(f+1);请求r访问的对象集表示为O(r),P(r)是一组被访问的部分,有:设主节点可以向属于同一部分的任何非空对象集发出请求;当主节点发出请求时,系统根据被访问的状态对象的位置为每个请求分配一个角色,共有三种主要的角色类型:执行者、验证者和观察者;每当节点请求访问分配给第i部分的对象o时,来自组号i的副本将充当执行程序,来自下一组的副本将扮演验证者的角色,其余的机器组将充当观察者;验证者角色只分配给一个状态段访问;
执行预处理算法:对于给定的副本,当它从至少不同的f+1个执行器获得相同的请求结果r时,定义语句e-complete(r)为真,否则为假;当请求结果相同时,保证请求结果r为真;
此外,定义一个语句complete(r),如果一个副本的e-complete(r)语句结果为真,或者它已经执行了请求r,那么语句complete(r)对于这个副本是正确的;对于任意请求r,如果至少有一个节点崩溃或产生不同的结果,对于f+1个副本的处理结果,语句e-complete(r)结果永远为假;在验证者收到每个请求的第一个响应后设置一个计时器;如果验证者在超时之前没有收到足够的响应,语句e-complete(r)将设置为真,且会暂时接管执行请求的角色。
4.根据权利要求1所述的一种基于混合拜占庭容错的联盟区块链网络共识方法,其特征在于,所述步骤S3具体包括:当主节点变成拜占庭节点时,在共识机制中,正确的节点以一致的方式观察组内节点的变化,一致的组称为视图,并给视图编号并将它们记录为v;假设一个视图总共有N个节点,每个节点都有编号{0,1,2,...,N-1};主节点数量记为p,其余节点称为备份节点,满足公式:p=vmodN
当组中的主节点失败时,下一个编号的节点成为主节点,视图也切换,视图数量增加1。
5.根据权利要求1所述的一种基于混合拜占庭容错的联盟区块链网络共识方法,其特征在于,所述步骤S4具体包括:在接收到新的请求r之后,一旦满足以下条件,执行程序将处理请求:处理r之后,执行程序对请求r进行数字签名,并将其发送给所有其他副本和客户机;验证器不执行获取的任务,而是等待执行器的响应;每个客户机查询至少有一条这样的消息;
验证者将获得的消息转发给其他副本,但是对于每个请求,每个执行器的结果只转发一次。