唐 宏,劉 雙,酒英豪,賀雨萌,朱 珊
1.重慶郵電大學(xué) 通信與信息工程學(xué)院,重慶400065
2.重慶郵電大學(xué) 移動(dòng)通信技術(shù)重慶市重點(diǎn)實(shí)驗(yàn)室,重慶400065
3.重慶郵電大學(xué) 國際學(xué)院,重慶400065
隨著比特幣[1]等數(shù)字加密貨幣的不斷發(fā)展,保障其安全可靠的區(qū)塊鏈技術(shù)也隨之得到廣泛關(guān)注,在很多領(lǐng)域產(chǎn)生深刻影響。區(qū)塊鏈[2-3]的本質(zhì)是一種去中心化的分布式賬本數(shù)據(jù)庫,它集成了網(wǎng)絡(luò)通信、共識(shí)算法、密碼學(xué)原理、智能合約等技術(shù),具備去中心化、防篡改、透明可溯源的特性。共識(shí)算法[4]作為區(qū)塊鏈系統(tǒng)的底層核心技術(shù),起到確保系統(tǒng)中的各節(jié)點(diǎn)對(duì)特定時(shí)間內(nèi)打包的交易順序達(dá)成一致,即實(shí)現(xiàn)分布式系統(tǒng)各節(jié)點(diǎn)數(shù)據(jù)一致性的作用。
實(shí)用拜占庭容錯(cuò)算法(PBFT)算法[5-6]是聯(lián)盟鏈中應(yīng)用最廣泛的共識(shí)算法之一,解決了拜占庭容錯(cuò)算法效率低的問題。但PBFT仍存在下列不足之處,大大限制了其發(fā)展。首先,PBFT三階段通信協(xié)議中的后兩階段,節(jié)點(diǎn)均需要向系統(tǒng)中的其他所有節(jié)點(diǎn)發(fā)送消息,導(dǎo)致通信復(fù)雜度過高;其次PBFT按照編號(hào)順序選取主節(jié)點(diǎn)的方式也過于簡(jiǎn)單,導(dǎo)致無論是否為拜占庭節(jié)點(diǎn),均具備相等的當(dāng)選主節(jié)點(diǎn)的機(jī)會(huì),這極大威脅了系統(tǒng)的安全性與公平性;最后PBFT算法對(duì)拜占庭節(jié)點(diǎn)缺乏懲罰措施,當(dāng)主節(jié)點(diǎn)被發(fā)現(xiàn)為惡意節(jié)點(diǎn)時(shí),僅僅依賴視圖切換協(xié)議保障共識(shí)過程的進(jìn)行,惡意節(jié)點(diǎn)仍存在于系統(tǒng)中,同樣威脅了系統(tǒng)的安全性。
當(dāng)前已有諸多研究人員從多個(gè)方面對(duì)PBFT算法提出了改進(jìn)方案:文獻(xiàn)[7]引入中心化的可信節(jié)點(diǎn)驗(yàn)證新加入系統(tǒng)的節(jié)點(diǎn)身份信息,要求系統(tǒng)中的各節(jié)點(diǎn)維護(hù)一個(gè)包含節(jié)點(diǎn)信息的記錄表,并將各節(jié)點(diǎn)劃分為良性、缺席、惡意三種類型。根據(jù)在共識(shí)過程中的表現(xiàn)動(dòng)態(tài)更新節(jié)點(diǎn)信息表,同時(shí)針對(duì)節(jié)點(diǎn)加入、退出等操作創(chuàng)新性地設(shè)計(jì)了相關(guān)協(xié)議,用以解決PBFT算法的動(dòng)態(tài)性問題;文獻(xiàn)[8]為解決PBFT不適用于動(dòng)態(tài)網(wǎng)絡(luò)的問題,提出了利用可驗(yàn)證隨機(jī)函數(shù)(VRF)選取共識(shí)節(jié)點(diǎn)的方法,從而使算法滿足節(jié)點(diǎn)的動(dòng)態(tài)變化需求,使其適用于動(dòng)態(tài)網(wǎng)絡(luò);文獻(xiàn)[9]從安全性和計(jì)算能力兩方面對(duì)節(jié)點(diǎn)是否可靠這一屬性進(jìn)行量化處理,根據(jù)量化后的數(shù)值將節(jié)點(diǎn)角色分成四種類型,各類型節(jié)點(diǎn)中只有管理節(jié)點(diǎn)作為候補(bǔ)主節(jié)點(diǎn),能夠被納入到主節(jié)點(diǎn)的選取范圍內(nèi),同時(shí)為保障系統(tǒng)安全性只有獲得較多選票的候選節(jié)點(diǎn)才可以轉(zhuǎn)為管理節(jié)點(diǎn);文獻(xiàn)[10]針對(duì)PBFT 算法缺乏惡意節(jié)點(diǎn)懲罰措施的弊端,提出了基于信譽(yù)模型的改進(jìn)拜占庭容錯(cuò)算法,通過信譽(yù)模型評(píng)估節(jié)點(diǎn)在共識(shí)過程中的行為,并從信譽(yù)值高的節(jié)點(diǎn)中選取主節(jié)點(diǎn),以此提高系統(tǒng)安全性;文獻(xiàn)[11]設(shè)置投票機(jī)制選取共識(shí)節(jié)點(diǎn),并為促進(jìn)節(jié)點(diǎn)積極參與共識(shí)過程,設(shè)置激勵(lì)機(jī)制與懲罰機(jī)制,從而實(shí)現(xiàn)對(duì)系統(tǒng)中的節(jié)點(diǎn)的管控。以上方案均從不同的角度為改進(jìn)PBFT提出了創(chuàng)新性設(shè)想。文獻(xiàn)[12]通過增設(shè)候補(bǔ)集合的方式,解決PBFT算法動(dòng)態(tài)性問題,并改進(jìn)了視圖切換協(xié)議及主節(jié)點(diǎn)選舉機(jī)制,提高系統(tǒng)效率。
上述已有研究成果針對(duì)PBFT 算法存在的相關(guān)問題都給出了一些創(chuàng)新性的解決方案,然而考慮問題較為片面,沒有從整體角度出發(fā)制定一套完善的節(jié)點(diǎn)管控機(jī)制。本文對(duì)PBFT算法通信復(fù)雜度高、主節(jié)點(diǎn)選取方式簡(jiǎn)單、缺乏節(jié)點(diǎn)管控機(jī)制的問題進(jìn)行全面考慮,提出了一種基于節(jié)點(diǎn)可靠性評(píng)估的改進(jìn)拜占庭容錯(cuò)算法(RB-PBFT)。改進(jìn)算法從評(píng)估節(jié)點(diǎn)可靠性的維度出發(fā),制定管控機(jī)制,貫穿節(jié)點(diǎn)整個(gè)工作周期。為節(jié)點(diǎn)管控制定詳實(shí)全面的管理規(guī)則。
本文主要貢獻(xiàn)如下:
(1)從節(jié)點(diǎn)的基礎(chǔ)配置及共識(shí)表現(xiàn)兩個(gè)維度分析,計(jì)算得到節(jié)點(diǎn)的可靠性評(píng)分,用以評(píng)估各節(jié)點(diǎn)的可靠性。選取可靠性評(píng)分最高的節(jié)點(diǎn)作為主節(jié)點(diǎn),引領(lǐng)本輪共識(shí)過程,同時(shí)選取可靠性評(píng)分高的部分節(jié)點(diǎn)組建共識(shí)群組參與共識(shí)過程,解決PBFT選主不安全及通信復(fù)雜度過高的問題。
(2)根據(jù)各節(jié)點(diǎn)的可靠性評(píng)分,將其標(biāo)記為不同的信任狀態(tài),對(duì)不同信任狀態(tài)的節(jié)點(diǎn)進(jìn)行分類處理,解決PBFT缺乏節(jié)點(diǎn)管控機(jī)制的問題。
通過對(duì)RB-PBFT 算法進(jìn)行實(shí)驗(yàn),分析表明,RBPBFT 在系統(tǒng)的通信復(fù)雜度、安全性、公平性、容錯(cuò)性等方面均有一定提升。
PBFT 算法于1999 年由Miguel Castro 和Barbara Liskov提出,該算法主要用于解決拜占庭將軍問題,即如何在網(wǎng)絡(luò)中存在惡意節(jié)點(diǎn)的情況下,確保最終決策的一致性與正確性,PBFT將拜占庭容錯(cuò)算法的復(fù)雜度從指數(shù)級(jí)降到了多項(xiàng)式級(jí)別,是拜占庭容錯(cuò)算法的首次實(shí)現(xiàn)。該算法在保障系統(tǒng)安全可靠的前提下,能夠提供的容錯(cuò)性,即允許系統(tǒng)中存在不超過1/3的拜占庭節(jié)點(diǎn)。
PBFT中參與共識(shí)過程的節(jié)點(diǎn)被分成主節(jié)點(diǎn)(Primary)、備份節(jié)點(diǎn)(Backup)兩類,其中主節(jié)點(diǎn)負(fù)責(zé)從客戶端接收請(qǐng)求完成排序,并將相關(guān)消息廣播給所有的備份節(jié)點(diǎn),備份節(jié)點(diǎn)負(fù)責(zé)驗(yàn)證接收到的消息,執(zhí)行相關(guān)操作并將結(jié)果返回給客戶端。PBFT的三階段通信協(xié)議是算法的核心部分,保障了共識(shí)結(jié)果的正確性。該三階段協(xié)議又稱為一致性協(xié)議,是典型的基于投票的共識(shí)協(xié)議,具體包括預(yù)準(zhǔn)備(Pre-Prepare)、準(zhǔn)備(Prepare)、確認(rèn)(Commit)三階段,如圖1所示,圖中備份節(jié)點(diǎn)3為拜占庭節(jié)點(diǎn)。
圖1 PBFT一致性協(xié)議執(zhí)行流程Fig.1 Implementation process of PBFT algorithm conformance protocol
1.2.1 EigenTrust信譽(yù)模型
EigenTrust[13-14]是P2P網(wǎng)絡(luò)中廣泛使用的信任度評(píng)估模型,以節(jié)點(diǎn)i為例,模型中每個(gè)節(jié)點(diǎn)維護(hù)兩個(gè)值:(1)根據(jù)與其他節(jié)點(diǎn)交互歷史得到的局部信任值Cij;(2)整個(gè)系統(tǒng)賦予節(jié)點(diǎn)i的全局信任值ti。EigenTrust模型計(jì)算信任值的過程如下:
(1)計(jì)算局部信任值。以節(jié)點(diǎn)i為例,根據(jù)交互歷史,利用公式(1)對(duì)節(jié)點(diǎn)j進(jìn)行評(píng)價(jià),計(jì)算得到局部信任值Sij,其中Sat(i,j)代表歷史交互中滿意的次數(shù),Unsat(i,j)代表不滿意的次數(shù)。
(2)規(guī)范化局部信任值。得到Sij后,為防止惡意節(jié)點(diǎn)之間相互打高分,威脅系統(tǒng)安全,利用公式(2)對(duì)Sij進(jìn)行標(biāo)準(zhǔn)化處理,得到規(guī)范化的局部信任值Cij:
(3)整合局部信任值。采用傳遞信任及多次迭代的思想,使節(jié)點(diǎn)i獲得全局視野,利用公式(3)得到全局信任值。其中p是預(yù)先信任的節(jié)點(diǎn)集合,a是決定預(yù)先信任節(jié)點(diǎn)集合p中各節(jié)點(diǎn)權(quán)重的參數(shù)。
EigenTrust 信譽(yù)模型雖然具備使用簡(jiǎn)單、易擴(kuò)展的優(yōu)勢(shì),但其過度依賴預(yù)先信任節(jié)點(diǎn)集合。在EigenTrust信譽(yù)模型中,預(yù)先信任的節(jié)點(diǎn)有很高的地位,其他節(jié)點(diǎn)以這些節(jié)點(diǎn)為中心,信任這些節(jié)點(diǎn)所信任的節(jié)點(diǎn),即使預(yù)先信任的節(jié)點(diǎn)存在惡意行為,其他節(jié)點(diǎn)仍會(huì)持續(xù)信任該節(jié)點(diǎn)。導(dǎo)致即使系統(tǒng)中其他誠實(shí)節(jié)點(diǎn)從未作惡,但若不在預(yù)先信任集合中,也會(huì)得不到重視,從而被逐漸邊緣化。這極大威脅了系統(tǒng)的安全性。為解決上述問題,Kurdi 于2015 年提出了HonestPeer 信譽(yù)模型,實(shí)驗(yàn)證明HonestPeer信任模型相較于EigenTrust模型能夠?qū)崿F(xiàn)更高的成功率和更低的錯(cuò)誤文件下載率。
1.2.2 HonestPeer信譽(yù)模型
HonestPeer[15]信任模型旨在解決EigenTrust 模型過度依賴預(yù)先信任節(jié)點(diǎn),導(dǎo)致其他誠實(shí)節(jié)點(diǎn)被邊緣化的問題。在HonestPeer 模型中,誠實(shí)節(jié)點(diǎn)有最高的地位,如果誠實(shí)節(jié)點(diǎn)在預(yù)先信任的節(jié)點(diǎn)集合p中,那么p中各節(jié)點(diǎn)在決定其他節(jié)點(diǎn)的信任值時(shí)仍然有很大影響力;但若誠實(shí)節(jié)點(diǎn)不在集合p中,p中各節(jié)點(diǎn)的影響力就會(huì)被減弱,誠實(shí)節(jié)點(diǎn)會(huì)發(fā)揮較高的影響力,如公式(4)所示,其中h為誠實(shí)節(jié)點(diǎn)。
HonestPeer模型允許節(jié)點(diǎn)根據(jù)以往交易歷史,認(rèn)證識(shí)別誠實(shí)節(jié)點(diǎn),并通過判斷誠實(shí)節(jié)點(diǎn)是否在系統(tǒng)預(yù)先信任的節(jié)點(diǎn)組中,來降低對(duì)預(yù)先信任節(jié)點(diǎn)的依賴,提高了信任模型的安全性及成功率。
PBFT 算法要求系統(tǒng)中的所有節(jié)點(diǎn)均參與共識(shí),并按照三階段協(xié)議完成共識(shí)過程,其中完成一次共識(shí),系統(tǒng)中廣播的信息總量過多,導(dǎo)致系統(tǒng)通信復(fù)雜度過高效率較差。RB-PBFT 算法全面考慮節(jié)點(diǎn)的屬性,利用層次分析法對(duì)節(jié)點(diǎn)的基礎(chǔ)配置進(jìn)行處理,得到節(jié)點(diǎn)的靜態(tài)基礎(chǔ)評(píng)分Bj;引入HonestPeer信任模型,根據(jù)節(jié)點(diǎn)間的交互歷史,得到節(jié)點(diǎn)的動(dòng)態(tài)信譽(yù)評(píng)分Rj;對(duì)兩參數(shù)進(jìn)行賦權(quán)計(jì)算,得到節(jié)點(diǎn)的綜合可靠性評(píng)分Cj,以此來評(píng)估節(jié)點(diǎn)的可靠性。
由于PBFT 算法僅僅按照編號(hào)順序選取主節(jié)點(diǎn),選取主節(jié)點(diǎn)的方式過于簡(jiǎn)單。且一旦發(fā)現(xiàn)主節(jié)點(diǎn)為拜占庭節(jié)點(diǎn),也只是依賴視圖切換協(xié)議,更換主節(jié)點(diǎn)繼續(xù)完成本輪共識(shí)過程。作惡的主節(jié)點(diǎn)依然留在系統(tǒng)中,且未受到任何懲罰,仍擁有與其他誠實(shí)節(jié)點(diǎn)均等當(dāng)選主節(jié)點(diǎn)的機(jī)會(huì),這難以保障系統(tǒng)的安全性及公平性。RB-PBFT算法根據(jù)降序排列的節(jié)點(diǎn)Cj,選取主節(jié)點(diǎn)并組建共識(shí)群組。等待本輪共識(shí)結(jié)束后更新節(jié)點(diǎn)Rj標(biāo)記各節(jié)點(diǎn)的信任狀態(tài),根據(jù)節(jié)點(diǎn)不同的信任狀態(tài),設(shè)置節(jié)點(diǎn)管控機(jī)制。增加誠實(shí)節(jié)點(diǎn)入選共識(shí)群組的概率,減少惡意節(jié)點(diǎn)入選共識(shí)群組的概率。以此來解決系統(tǒng)安全性及公平性問題。
考慮到節(jié)點(diǎn)基礎(chǔ)配置越高,作惡成本也越高;同等條件下,高配置的節(jié)點(diǎn)較低配置的節(jié)點(diǎn),傳輸信息的速度更快,效率更高。因此應(yīng)將節(jié)點(diǎn)的基礎(chǔ)配置納入到評(píng)估節(jié)點(diǎn)可靠性的考慮范圍內(nèi)。在節(jié)點(diǎn)初入網(wǎng)絡(luò)時(shí),根據(jù)節(jié)點(diǎn)的基礎(chǔ)配置,從影響交易處理速度的CPU 內(nèi)核數(shù)量、計(jì)算機(jī)內(nèi)存容量及硬盤容量大小這三方面進(jìn)行評(píng)估。計(jì)算節(jié)點(diǎn)基礎(chǔ)配置評(píng)分的步驟如下:
(1)由于各參數(shù)的單位不同,為了方便統(tǒng)一計(jì)算,利用歸一化公式(5)對(duì)參數(shù)進(jìn)行標(biāo)準(zhǔn)化處理,得到標(biāo)準(zhǔn)化后的數(shù)值。其中Xp為實(shí)際值,Xb為標(biāo)準(zhǔn)化處理后的數(shù)值。
(2)利用層次分析法,根據(jù)三方面參數(shù)的重要性分級(jí)構(gòu)造判別矩陣,得到符合重要性排名的權(quán)重向量。
(3)根據(jù)權(quán)重向量及標(biāo)準(zhǔn)化處理后的數(shù)值,為各參數(shù)進(jìn)行權(quán)重賦值,得到節(jié)點(diǎn)的基礎(chǔ)評(píng)分Bj。
引入HonestPeer 信譽(yù)模型監(jiān)測(cè)節(jié)點(diǎn)行為。首先初始化各節(jié)點(diǎn)的全局信譽(yù)值;選取共識(shí)群組成員,等待本輪共識(shí)結(jié)束后,更新各節(jié)點(diǎn)的信譽(yù)值,同時(shí)根據(jù)更新后的信譽(yù)值將節(jié)點(diǎn)標(biāo)記成不同信任狀態(tài),以便后續(xù)制定節(jié)點(diǎn)管控機(jī)制。下面為具體介紹:
假設(shè)系統(tǒng)中的總節(jié)點(diǎn)數(shù)為N,將所有節(jié)點(diǎn)的本地初始信譽(yù)值設(shè)為0.5,根據(jù)公式(6)計(jì)算節(jié)點(diǎn)的初始化Cj。此處將初始信譽(yù)值設(shè)為0.5是根據(jù)后續(xù)計(jì)算各節(jié)點(diǎn)的可靠性評(píng)分Cj時(shí),為了使Cj一直滿足(0<Cj<1)條件,如果初始信譽(yù)值設(shè)置得過小,各節(jié)點(diǎn)Cj差距不大,不便于實(shí)驗(yàn)觀察;如果Cj設(shè)置得過大,又難以滿足(0<Cj<1)條件,同樣不利于實(shí)驗(yàn)分析。得到Cj后,對(duì)其進(jìn)行降序排列,選取Cj最高的節(jié)點(diǎn)作為主節(jié)點(diǎn),并按降序Cj選取不同比例a(0<a<1)的節(jié)點(diǎn)構(gòu)建共識(shí)群組,參與共識(shí)過程。選取的比例一定要保證共識(shí)組中成員數(shù)量始終大于2f+1(f為系統(tǒng)中拜占庭節(jié)點(diǎn)的數(shù)量)。
待本輪共識(shí)結(jié)束后允許共識(shí)群組中各節(jié)點(diǎn)之間根據(jù)交互歷史進(jìn)行互評(píng)。共識(shí)組中節(jié)點(diǎn)i對(duì)同處于共識(shí)群組中的節(jié)點(diǎn)j根據(jù)共識(shí)過程中節(jié)點(diǎn)j的具體表現(xiàn),標(biāo)記節(jié)點(diǎn)j的信任狀態(tài)。標(biāo)記節(jié)點(diǎn)信任狀態(tài)分類的條件如表1所示。當(dāng)節(jié)點(diǎn)j與i之間正常傳遞信息,且j向i發(fā)送的信息內(nèi)容,與i收到的來自其他大多數(shù)節(jié)點(diǎn)的發(fā)送的信息內(nèi)容一致時(shí),i即可判定j在本輪共識(shí)中的行為正常,將j標(biāo)注為誠實(shí)節(jié)點(diǎn);當(dāng)j未在規(guī)定時(shí)間內(nèi)向i發(fā)送信息,或i向j發(fā)送信息后,j聲稱未收到來自i的信息,則節(jié)點(diǎn)i判定j的行為異常,但此時(shí)不能確定j的信任狀態(tài),可能是惡意節(jié)點(diǎn)作惡也可能只是節(jié)點(diǎn)出現(xiàn)宕機(jī)故障。先將其標(biāo)注為故障節(jié)點(diǎn),一旦之后發(fā)現(xiàn)j出現(xiàn)惡意行為,將其信任標(biāo)注改為惡意;當(dāng)j向i發(fā)送信息,但i發(fā)現(xiàn)該信息內(nèi)容,與其收到的來自其他大多數(shù)節(jié)點(diǎn)發(fā)送的信息內(nèi)容不一致時(shí),i判定j的行為異常,將其標(biāo)注為惡意節(jié)點(diǎn)。節(jié)點(diǎn)i根據(jù)對(duì)節(jié)點(diǎn)j的信任標(biāo)注,更新本地信任矩陣,得到更新后的Rj,從而計(jì)算得到更新后的Cj,重新構(gòu)建共識(shí)群組中的成員。
表1 節(jié)點(diǎn)行為及信任狀態(tài)分類表Table 1 Node behavior and trust status classification
對(duì)于非共識(shí)群組成員(即未能參與共識(shí)過程的節(jié)點(diǎn))RB-PBFT 算法允許其根據(jù)以往交互歷史即以往印象對(duì)其他同處于非共識(shí)群組的成員進(jìn)行評(píng)分,評(píng)分與標(biāo)記規(guī)則與上述共識(shí)群體中各節(jié)點(diǎn)互評(píng)標(biāo)記的規(guī)則一致。
根據(jù)各節(jié)點(diǎn)的不同信任狀態(tài),制定管控機(jī)制,對(duì)節(jié)點(diǎn)進(jìn)行分類處理:當(dāng)節(jié)點(diǎn)j被標(biāo)注為誠實(shí)狀態(tài)時(shí),節(jié)點(diǎn)i對(duì)j打+1 分,根據(jù)公式(4),誠實(shí)節(jié)點(diǎn)j的信任值Rj將持續(xù)增加;當(dāng)節(jié)點(diǎn)j被標(biāo)注為故障狀態(tài),計(jì)算節(jié)點(diǎn)i對(duì)j的局部信任值時(shí),節(jié)點(diǎn)i對(duì)j打0分,使得故障節(jié)點(diǎn)的全局信任值維持不變,觀察后續(xù)行為,做出相應(yīng)處理;當(dāng)節(jié)點(diǎn)j被標(biāo)注為惡意狀態(tài),改進(jìn)HonestPeer 模型,計(jì)算節(jié)點(diǎn)i對(duì)j的局部信任值時(shí),允許i對(duì)j打-1分,節(jié)點(diǎn)j的全局信任值將持續(xù)減少。
根據(jù)靜態(tài)的基礎(chǔ)評(píng)分及動(dòng)態(tài)更新的信任值計(jì)算節(jié)點(diǎn)的可靠性評(píng)分,評(píng)估節(jié)點(diǎn)可靠性,要為兩個(gè)參數(shù)賦予不同的權(quán)重比例K1、K2。雖然節(jié)點(diǎn)的基礎(chǔ)配置會(huì)加快信息傳遞速度,提高系統(tǒng)性能,但為了抵御惡意節(jié)點(diǎn)成員聚集起來利用高配置設(shè)備進(jìn)行攻擊,節(jié)點(diǎn)的基礎(chǔ)配置評(píng)分占比不應(yīng)過高。因而相較于基礎(chǔ)配置,節(jié)點(diǎn)在共識(shí)過程中的動(dòng)態(tài)可信度在評(píng)估節(jié)點(diǎn)可靠性方面,應(yīng)占較高比重,即權(quán)重參數(shù)滿足(K1<K2)。根據(jù)公式(6)計(jì)算節(jié)點(diǎn)的可靠性評(píng)分。
計(jì)算得到節(jié)點(diǎn)更新后的Rj,利用公式(6)更新節(jié)點(diǎn)的Cj,當(dāng)惡意節(jié)點(diǎn)j的可靠性評(píng)分小于未參與共識(shí)過程的其他備份節(jié)點(diǎn)的可靠性評(píng)分時(shí),節(jié)點(diǎn)j將被踢出共識(shí)節(jié)點(diǎn)組,不能繼續(xù)參與共識(shí)過程。從未參與共識(shí)的其他備份節(jié)點(diǎn)中隨機(jī)選取可靠性評(píng)分高于節(jié)點(diǎn)j的某個(gè)節(jié)點(diǎn),取代j在共識(shí)組中的位置,參與共識(shí)過程。從而減少共識(shí)組中惡意節(jié)點(diǎn)的數(shù)目,提高共識(shí)過程及系統(tǒng)的安全性及公平性。
安全性即各誠實(shí)節(jié)點(diǎn)能否對(duì)廣播的事件結(jié)果達(dá)成一致性共識(shí),并將正確結(jié)果成功輸出。若成功輸出正確結(jié)果,則認(rèn)為系統(tǒng)安全性較高。在PBFT 算法中,主節(jié)點(diǎn)是依靠公式(7)進(jìn)行計(jì)算,式中P為選取的主節(jié)點(diǎn)編號(hào)、V為當(dāng)前視圖編號(hào)、R為系統(tǒng)中的節(jié)點(diǎn)數(shù)目。可以看出根據(jù)取模運(yùn)算,實(shí)際上就是按照順序編號(hào)選取主節(jié)點(diǎn),這使得拜占庭節(jié)點(diǎn)和誠實(shí)節(jié)點(diǎn)擁有相等的被選為主節(jié)點(diǎn)的機(jī)會(huì),這種選主方式極大地威脅了系統(tǒng)的安全性。
在RB-PBFT 算法中,引入了共識(shí)群組的概念。綜合評(píng)估節(jié)點(diǎn)的基礎(chǔ)配置及共識(shí)表現(xiàn),得出節(jié)點(diǎn)動(dòng)態(tài)的可靠性評(píng)分,根據(jù)降序排列的可靠性評(píng)分,選取評(píng)分高的成員進(jìn)入共識(shí)組。其中可靠性評(píng)分主要被節(jié)點(diǎn)信譽(yù)值影響,信譽(yù)值是節(jié)點(diǎn)間互評(píng)的結(jié)果,代表了節(jié)點(diǎn)之間的信任關(guān)系,節(jié)點(diǎn)作惡的概率與信譽(yù)值成反比關(guān)系。即高信譽(yù)值的節(jié)點(diǎn)作惡可能性低。由于共識(shí)組中的成員均是信譽(yù)值較高的節(jié)點(diǎn),因此系統(tǒng)的安全性會(huì)得到提高。同時(shí)RB-PBFT 設(shè)置了節(jié)點(diǎn)管控機(jī)制,一旦節(jié)點(diǎn)被發(fā)現(xiàn)存在惡意行為,其可靠性評(píng)分將會(huì)隨之降低,當(dāng)評(píng)分低于非共識(shí)群組中的某節(jié)點(diǎn)評(píng)分時(shí),該作惡節(jié)點(diǎn)將會(huì)被踢出共識(shí)組,系統(tǒng)安全性得到進(jìn)一步保障。
實(shí)驗(yàn)所需硬件配置如表2所示,利用實(shí)驗(yàn)室不同基礎(chǔ)配置的電腦搭建聯(lián)盟鏈環(huán)境,使用docker容器技術(shù)模擬多個(gè)實(shí)驗(yàn)所需的虛擬節(jié)點(diǎn)。
表2 實(shí)驗(yàn)配置信息Table 2 Experiment configuration information
假設(shè)當(dāng)前網(wǎng)絡(luò)中共有20 個(gè)節(jié)點(diǎn),即每臺(tái)電腦利用docker容器模擬4個(gè)節(jié)點(diǎn)。首先根據(jù)各節(jié)點(diǎn)的基礎(chǔ)配置計(jì)算基礎(chǔ)評(píng)分,設(shè)置每個(gè)節(jié)點(diǎn)的初始信任值為0.5,得到初始化的節(jié)點(diǎn)可靠性評(píng)分。選取可靠性評(píng)分排在前a%的節(jié)點(diǎn)入選共識(shí)群組,即參與共識(shí)的節(jié)點(diǎn)數(shù)目為aN,未參與公式過程的節(jié)點(diǎn)數(shù)目為(1-a)N。當(dāng)a=0.5 時(shí),根據(jù)PBFT算法容錯(cuò)性,設(shè)置共識(shí)組內(nèi)拜占庭節(jié)點(diǎn)數(shù)目為3,進(jìn)行20輪共識(shí)。為了防止惡意節(jié)點(diǎn)通過高配置硬件設(shè)備作惡,節(jié)點(diǎn)在共識(shí)組中的表現(xiàn)影響力應(yīng)超過基礎(chǔ)配置,因此取基礎(chǔ)配置賦權(quán)參數(shù)K1=0.3,信譽(yù)賦權(quán)參數(shù)K2=0.7。記錄共識(shí)組內(nèi)惡意節(jié)點(diǎn)可靠性評(píng)分如圖2所示,新加入共識(shí)組的誠實(shí)節(jié)點(diǎn)可靠性評(píng)分如圖3 所示,組內(nèi)惡意節(jié)點(diǎn)數(shù)如圖4所示。
圖2 惡意節(jié)點(diǎn)可靠性評(píng)分Fig.2 Malicious node reliability score
圖3 誠實(shí)節(jié)點(diǎn)可靠性評(píng)分Fig.3 Honest node reliability score
圖4 共識(shí)組中惡意節(jié)點(diǎn)數(shù)目Fig.4 Number of malicious nodes in consensus group
可見,隨著共識(shí)輪數(shù)的增加,共識(shí)組內(nèi)惡意節(jié)點(diǎn)的可靠性評(píng)分隨之下降,誠實(shí)節(jié)點(diǎn)的可靠性評(píng)分隨之增加。當(dāng)惡意節(jié)點(diǎn)的可靠性評(píng)分小于非共識(shí)組中某節(jié)點(diǎn)評(píng)分時(shí),該節(jié)點(diǎn)將被取代共識(shí)組成員位置;同時(shí)共識(shí)組內(nèi)惡意節(jié)點(diǎn)的數(shù)目隨著組內(nèi)成員動(dòng)態(tài)變化而減少,最終為0。圖中出現(xiàn)共識(shí)次數(shù)增加而惡意節(jié)點(diǎn)數(shù)維持不變的情況是當(dāng)惡意節(jié)點(diǎn)僅做出故障節(jié)點(diǎn)行為使得信任值保持不變或該節(jié)點(diǎn)的可靠性評(píng)分仍大于候補(bǔ)節(jié)點(diǎn)的情況,但惡意節(jié)點(diǎn)數(shù)總體仍保持減少的趨勢(shì)。
PBFT中,若發(fā)現(xiàn)主節(jié)點(diǎn)存在惡意行為,算法僅依靠視圖切換協(xié)議,切換當(dāng)前視圖更換本輪共識(shí)的主節(jié)點(diǎn),以保證共識(shí)過程。作惡的主節(jié)點(diǎn)仍然存在于系統(tǒng)中,且沒有受到任何懲罰,下次當(dāng)選主節(jié)點(diǎn)的概率依然與其他誠實(shí)節(jié)點(diǎn)相等,這對(duì)于誠實(shí)節(jié)點(diǎn)是不公平的,導(dǎo)致系統(tǒng)公平性較差。
RB-PBFT 算法則通過引入信譽(yù)模型的方法,允許共識(shí)群組中的各節(jié)點(diǎn)之間根據(jù)在共識(shí)過程中的表現(xiàn)進(jìn)行互評(píng);非共識(shí)組中各節(jié)點(diǎn)根據(jù)以往交互歷史進(jìn)行互評(píng)。標(biāo)記節(jié)點(diǎn)的信任狀態(tài),設(shè)置節(jié)點(diǎn)管控機(jī)制。一旦節(jié)點(diǎn)被標(biāo)記為惡意節(jié)點(diǎn),其信譽(yù)值將隨之降低,導(dǎo)致可靠性評(píng)分隨之減少,將可能被移除共識(shí)組無法參與共識(shí)過程;而非共識(shí)組中的誠實(shí)節(jié)點(diǎn),可靠性評(píng)分會(huì)隨其誠實(shí)行為而增加,將有機(jī)會(huì)進(jìn)入共識(shí)群組參與共識(shí)過程。簡(jiǎn)而言之,誠實(shí)節(jié)點(diǎn)會(huì)因其誠實(shí)行為而獲得獎(jiǎng)勵(lì);惡意節(jié)點(diǎn)會(huì)因其惡意行為受到懲罰。這種機(jī)制極大地提高了系統(tǒng)公平性。
通信復(fù)雜度即完成一次共識(shí),系統(tǒng)中廣播的信息總數(shù),過高的通信復(fù)雜度會(huì)影響系統(tǒng)的效率。PBFT算法、RB-PBFT算法及文獻(xiàn)[12]的IPBFT算法完成一輪共識(shí),系統(tǒng)所需廣播的消息數(shù)目對(duì)比如表3所示。
表3 不同算法通信量對(duì)比Table 3 Comparison of traffic volume of different algorithms
根據(jù)表3 列舉的各算法通信量,分別取a=0.5、a=0.25,繪制各算法廣播通信量對(duì)比圖5、圖6。由于IPBFT算法通信量表達(dá)式中P為視圖切換的概率,為方便觀察數(shù)據(jù),設(shè)置系統(tǒng)拜占庭節(jié)點(diǎn)數(shù)f=0,則P=0。
圖5 a=0.5 時(shí)各算法通信量對(duì)比Fig.5 Traffic volume comparison of each algorithm when a=0.5
從圖5 及圖6 可以看出在a=0.5 及a=0.25,設(shè)定系統(tǒng)中不存在惡意節(jié)點(diǎn)的情況下,PBFT 算法及IPBFT算法均高于RB-PBFT 算法,且在RB-PBFT 算法中,通信量與參數(shù)a的取值成正比關(guān)系,a的取值減小,系統(tǒng)中廣播的消息數(shù)量也隨之減少。因此本算法提出的選取可靠性評(píng)分較高的部分節(jié)點(diǎn)參與共識(shí)的方案能夠有效地減少系統(tǒng)中廣播的通信量,降低系統(tǒng)復(fù)雜度,提高效率。
圖6 a=0.25 時(shí)各算法通信量對(duì)比Fig.6 Traffic volume comparison of each algorithm when a=0.25
容錯(cuò)性指的是系統(tǒng)中最多能容納的惡意節(jié)點(diǎn)數(shù),PBFT中為保證順利完成共識(shí),系統(tǒng)僅支持容錯(cuò)性,而RB-PBFT系統(tǒng)中將節(jié)點(diǎn)劃分到不同的群組:共識(shí)群組及非共識(shí)群組,使得系統(tǒng)容錯(cuò)性達(dá)到+(1-a)N,只有當(dāng)a=1 時(shí),兩算法的容錯(cuò)性才相等,即全部節(jié)點(diǎn)均參與共識(shí);而參數(shù)比例參數(shù)a是滿足a≤1 的條件,即RB-PBFT算法最壞的情況的容錯(cuò)性與PBFT算法相同,因此本算法的容錯(cuò)性優(yōu)于PBFT算法,兩算法性能對(duì)比如表4所示。
表4 算法性能對(duì)比Table 4 Comparison of algorithm performance
本文針對(duì)原始PBFT 算法通信復(fù)雜度高、主節(jié)點(diǎn)選取簡(jiǎn)單、缺乏節(jié)點(diǎn)管控機(jī)制的弊端,提出了一種基于節(jié)點(diǎn)可靠性評(píng)估的改進(jìn)拜占庭容錯(cuò)算法(RB-PBFT)。RB-PBFT從節(jié)點(diǎn)的基礎(chǔ)配置及信任狀態(tài)兩方面評(píng)估節(jié)點(diǎn)可靠性,首先計(jì)算節(jié)點(diǎn)的基礎(chǔ)評(píng)分,接著引入Honest-Peer 信任模型,根據(jù)節(jié)點(diǎn)在共識(shí)過程中的行為,標(biāo)記節(jié)點(diǎn)的信任狀態(tài),允許共識(shí)組中各節(jié)點(diǎn)根據(jù)歷史交互信息進(jìn)行互評(píng),非共識(shí)組中的各節(jié)點(diǎn)根據(jù)以往交互印象進(jìn)行互評(píng),得到節(jié)點(diǎn)動(dòng)態(tài)變化的信任值,最后對(duì)這兩個(gè)參數(shù)進(jìn)行賦值權(quán)重,綜合計(jì)算節(jié)點(diǎn)的可靠性評(píng)分。標(biāo)記節(jié)點(diǎn)信任狀態(tài),設(shè)置節(jié)點(diǎn)管控機(jī)制。最終惡意節(jié)點(diǎn)的可靠性評(píng)分將隨著共識(shí)次數(shù)的增加而逐漸減少,誠實(shí)節(jié)點(diǎn)的可靠性評(píng)分將不斷增加。實(shí)驗(yàn)表明RB-PBFT算法能夠提高共識(shí)過程的安全性及公平性,減少系統(tǒng)通信復(fù)雜度,同時(shí)在系統(tǒng)容錯(cuò)性方面也有良好表現(xiàn)。
本算法引入了信用模型,增加了計(jì)算可靠性的步驟,相較于原始PBFT 算法,進(jìn)行共識(shí)時(shí),增大了計(jì)算量。因此在傳遞相同數(shù)目信息,進(jìn)行相同輪次共識(shí)時(shí),RB-PBFT 算法的運(yùn)行時(shí)間及傳輸時(shí)延略高于PBFT 算法。接下來將研究如何盡可能低的降低時(shí)間損耗,減小對(duì)算法運(yùn)行效率的影響。