1.一种基于拜占庭容错的抗自适应攻击联盟链共识方法,包括以下步骤:
匿名选主步骤:从联盟链网络中所有共识节点中选择一名潜在提案者PP;所述潜在提案者PP在提案之前身份隐藏;
提案步骤:所述潜在提案者PP构建提案区块,签名后向联盟链网络进行广播;所述潜在提案者PP在提案之后身份暴露,退变为普通共识节点;
投票步骤:共识节点对收到的提案区块进行验证,包括潜在提案者PP的签名验证、提案区块内的交易内容验证以及潜在提案者PP的身份验证;然后对提案区块进行基于门限签名的投票,投票结果在联盟链网络中广播;
确认步骤:如有共识节点在预定时间内收到一条对提案区块的合法门限签名,则所述提案区块完成共识;所述联盟链网络中的所有节点保存所述完成共识的提案区块;
所述匿名选主步骤中,潜在提案者PP的具体选择方法是:联盟链网络中的所有共识节点首先计算承诺凭证CP,承诺凭证CP是对最近达成共识的特殊区块哈希值的签名;然后对承诺凭证CP进行哈希运算,将哈希运算得到的承诺Com再进行环签名运算,得到匿名承诺ACom;再将匿名承诺ACom和承诺Com向联盟链网络进行广播,形成全局一致的有序承诺序列Ordercom;所述有序承诺序列Ordercom指定了一组身份隐藏的潜在提案者PP;
所述匿名选主步骤中,有序承诺序列Ordercom={Com1,Com2,…,Comm},其中Com1>Com2>,…,>Comm,m是联盟链网络中承诺Com的总数量,每一个承诺Com背后对应一位潜在提案者PP;每个共识节点根据有序承诺序列Ordercom指定的排序位置被依次选为潜在提案者PP进行提案;
所述提案步骤中,如果潜在提案者PP是有序承诺序列Ordercom中的最后一位潜在提案者,则收集联盟链网络中的匿名承诺ACom和承诺Com,并和承诺凭证CP一起打包进特殊区块,进行提案;否则潜在提案者PP收集联盟链网络中的交易,并和承诺凭证CP一起打包进一般区块,进行提案;
所述投票步骤中,验证潜在提案者PP身份的具体方法是:对提案区块中的承诺凭证CP进行一次哈希运算,并与有序承诺序列Ordercom中对应的承诺Com进行对比,即可证明潜在提案者PP身份的合法性;
所述投票步骤中,对提案区块进行基于门限签名的投票的具体方法是:共识节点对验证通过的提案区块进行部分签名,并向其他共识节点发送基于部分签名的投票消息,如果共识节点收到2f+1个基于部分签名的投票消息,f为拜占庭节点数量,则将这2f+1个基于部分签名的投票消息合成一条门限签名,并向其他共识节点发送基于门限签名的投票消息。