本發(fā)明涉及工業(yè)網(wǎng)絡,尤其涉及一種替補節(jié)點拜占庭容錯方法。
背景技術(shù):
1、隨著分布式工業(yè)網(wǎng)絡系統(tǒng)和區(qū)塊鏈技術(shù)的廣泛應用,如何確保系統(tǒng)在存在拜占庭節(jié)點的情況下依然能夠正常運行,成為了一個重要的研究課題?,F(xiàn)有采用拜占庭容錯算法,通過多次信息交換和驗證確保在大多數(shù)節(jié)點正常的情況下,系統(tǒng)能夠達成一致性決策。
2、然而,傳統(tǒng)拜占庭容錯方法在面對連續(xù)節(jié)點故障或惡意節(jié)點攻擊時,可能出現(xiàn)性能下降和節(jié)點狀態(tài)不一致的情況。因此,提出一種提高性能及保持節(jié)點狀態(tài)一致性的替補節(jié)點拜占庭容錯方法是十分有必要的。
技術(shù)實現(xiàn)思路
1、本發(fā)明的目的在于提供一種替補節(jié)點拜占庭容錯方法,旨在解決現(xiàn)有技術(shù)中的拜占庭容錯方法在面對連續(xù)節(jié)點故障或惡意節(jié)點攻擊時,可能出現(xiàn)性能下降和節(jié)點狀態(tài)不一致的情況的技術(shù)問題。
2、為實現(xiàn)上述目的,本發(fā)明采用的一種替補節(jié)點拜占庭容錯方法,包括如下步驟:
3、準備階段:獲取系統(tǒng)中的所有的節(jié)點,所有的節(jié)點包括主節(jié)點和替補節(jié)點,并劃分當前計算狀態(tài)節(jié)點集合和候補節(jié)點集合;
4、執(zhí)行命令:獲取客戶端收到的消息集合,根據(jù)所述消息集合確定所述主節(jié)點的節(jié)點情況;其中節(jié)點情況包括均為好節(jié)點和存在壞節(jié)點;
5、狀態(tài)改變:采用所述替補節(jié)點替換所述主節(jié)點中的壞節(jié)點,直至所述主節(jié)點中的節(jié)點情況為均為好節(jié)點。
6、其中,在準備階段:獲取系統(tǒng)中的所有的節(jié)點,所有的節(jié)點包括主節(jié)點和替補節(jié)點,并劃分當前計算狀態(tài)節(jié)點集合和候補節(jié)點集合的步驟中:
7、所述當前計算狀態(tài)節(jié)點集合中的節(jié)點為接收客戶端命令的所述主節(jié)點,所述候補節(jié)點集合中的節(jié)點為未參與計算的所述替補節(jié)點。
8、其中,在執(zhí)行命令:獲取客戶端收到的消息集合,根據(jù)所述消息集合確定所述主節(jié)點的節(jié)點情況;其中節(jié)點情況包括均為好節(jié)點和存在壞節(jié)點的步驟中:
9、設當前計算狀態(tài)節(jié)點集合為集合a,集合a中有3f+1個節(jié)點,其中一個節(jié)點為主節(jié)點p;候補節(jié)點集合為集合b,集合b中最多有f個節(jié)點;消息集合為集合e;
10、判斷節(jié)點情況,當存在壞節(jié)點時,觸發(fā)狀態(tài)改變。
11、其中,在判斷節(jié)點情況,當存在壞節(jié)點時,觸發(fā)狀態(tài)改變的步驟中:
12、當|e|=3f+1時,則判斷集合a中沒有錯誤節(jié)點;
13、當|e|=2f+1時,則判斷集合e中存在f個錯誤節(jié)點,且沒有錯誤節(jié)點是主節(jié)點;
14、當2f+1<|e|<3f+1時,則判斷集合e中存在(0,f)個錯誤節(jié)點,且沒有錯誤節(jié)點是主節(jié)點。
15、其中,在判斷節(jié)點情況,當存在壞節(jié)點時,觸發(fā)狀態(tài)改變的步驟中:
16、當|e|<2f+1時,則判斷主節(jié)點p為壞節(jié)點,觸發(fā)狀態(tài)改變。
17、本發(fā)明的一種替補節(jié)點拜占庭容錯方法,通過準備階段:獲取系統(tǒng)中的所有的節(jié)點,所有的節(jié)點包括主節(jié)點和替補節(jié)點,并劃分當前計算狀態(tài)節(jié)點集合和候補節(jié)點集合;執(zhí)行命令:獲取客戶端收到的消息集合,根據(jù)所述消息集合確定所述主節(jié)點的節(jié)點情況;其中節(jié)點情況包括均為好節(jié)點和存在壞節(jié)點;狀態(tài)改變:采用所述替補節(jié)點替換所述主節(jié)點中的壞節(jié)點,直至所述主節(jié)點中的節(jié)點情況為均為好節(jié)點;使工業(yè)網(wǎng)絡系統(tǒng)中大部分節(jié)點參與計算,另一小部分節(jié)點作為候補;將接收客戶端命令的節(jié)點稱為主節(jié)點,當主節(jié)點出現(xiàn)拜占庭錯誤時,考慮使用未參與計算的替補節(jié)點來替換主節(jié)點,并將出現(xiàn)了拜占庭行為的主節(jié)點排除出工業(yè)網(wǎng)絡系統(tǒng),讓該主節(jié)點不會參與之后的計算。本方法通過預先使一部分節(jié)點當作替補,使工業(yè)網(wǎng)絡系統(tǒng)能夠在出現(xiàn)錯誤后,快速地恢復,且能滿足在出現(xiàn)一定次數(shù)的主節(jié)點拜占庭錯誤后,不再出現(xiàn)類似錯誤,獲得提高性能及保持節(jié)點狀態(tài)一致性的效果。
1.一種替補節(jié)點拜占庭容錯方法,其特征在于,包括如下步驟:
2.如權(quán)利要求1所述的替補節(jié)點拜占庭容錯方法,其特征在于,在準備階段:獲取系統(tǒng)中的所有的節(jié)點,所有的節(jié)點包括主節(jié)點和替補節(jié)點,并劃分當前計算狀態(tài)節(jié)點集合和候補節(jié)點集合的步驟中:
3.如權(quán)利要求1所述的替補節(jié)點拜占庭容錯方法,其特征在于,在執(zhí)行命令:獲取客戶端收到的消息集合,根據(jù)所述消息集合確定所述主節(jié)點的節(jié)點情況;其中節(jié)點情況包括均為好節(jié)點和存在壞節(jié)點的步驟中:
4.如權(quán)利要求3所述的替補節(jié)點拜占庭容錯方法,其特征在于,在判斷節(jié)點情況,當存在壞節(jié)點時,觸發(fā)狀態(tài)改變的步驟中:
5.如權(quán)利要求4所述的替補節(jié)點拜占庭容錯方法,其特征在于,在判斷節(jié)點情況,當存在壞節(jié)點時,觸發(fā)狀態(tài)改變的步驟中: