戚文杰 史培中 古春生 景征駿
摘 要:物聯(lián)網(wǎng)與區(qū)塊鏈融合過(guò)程中,實(shí)用拜占庭容錯(cuò)(PBFT)算法存在通信開(kāi)銷大、時(shí)延高且無(wú)法根據(jù)場(chǎng)景與設(shè)備差異進(jìn)行合理劃分的不足。為滿足物聯(lián)網(wǎng)多場(chǎng)景應(yīng)用的問(wèn)題,提出了一種基于綜合評(píng)價(jià)的改進(jìn)實(shí)用拜占庭容錯(cuò)算法。首先,對(duì)節(jié)點(diǎn)進(jìn)行基于性能與信譽(yù)值加權(quán)的綜合評(píng)價(jià)篩選出符合特定場(chǎng)景需求的節(jié)點(diǎn);然后,進(jìn)行基于節(jié)點(diǎn)綜合評(píng)價(jià)的聚類,形成雙層網(wǎng)絡(luò)架構(gòu);最后,將共識(shí)過(guò)程分為子集群共識(shí)和主集群共識(shí)。實(shí)驗(yàn)結(jié)果表明,CE-PBFT擁有較高的容錯(cuò)性和場(chǎng)景適應(yīng)性,且當(dāng)場(chǎng)景節(jié)點(diǎn)數(shù)達(dá)到100時(shí),在通信開(kāi)銷和共識(shí)時(shí)延方面較PBFT分別有著93.9%和87.8%的性能優(yōu)化。
關(guān)鍵詞:物聯(lián)網(wǎng);區(qū)塊鏈;實(shí)用拜占庭容錯(cuò);多場(chǎng)景;綜合評(píng)價(jià)
中圖分類號(hào):TP393?? 文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1001-3695(2024)03-005-0676-07
doi:10.19734/j.issn.1001-3695.2023.06.0288
Improved PBFT consensus algorithm for multi-scenario Internet of Things
Qi Wenjie,Shi Peizhong,Gu Chunsheng,Jing Zhengjun
(School of Computer Engineering,Jiangsu University of Technology,Changzhou Jiangsu 213001,China)
Abstract:Aiming at the problems in the practical Byzantine fault tolerance(PBFT) algorithm,such as large communication overhead,high delay and inability to reasonably divide according to the differences of scenarios and devices,cannot meet the multi-scenario application of Internet of Things(IoT) in the integration of IoT and blockchain,this paper proposed an improved PBFT consensus algorithm based on comprehensive evaluation(CE-PBFT).Firstly,it conducted comprehensive evaluation of nodes based on the weighted performance and reputation value to screen out nodes that met the needs of specific scenarios.After that,it conducted clustering based on the comprehensive evaluation of nodes to form a two-layer network architecture.Finally,it divided the consensus process into sub-cluster consensus and main cluster consensus.The experimental results show that CE-PBFT has high fault tolerance and scenario adaptability,and when the number of scenario nodes reach 100,it respectively has 93.9% and 87.8% performance optimisation over PBFT in terms of communication overhead and consensus delay.
Key words:Internet of Things;blockchain;PBFT;multi-scenario;comprehensive evaluation
0 引言
近年來(lái),隨著5G等基礎(chǔ)設(shè)施部署和應(yīng)用的加速推進(jìn),互聯(lián)智能設(shè)備數(shù)量呈現(xiàn)爆炸式增長(zhǎng),物聯(lián)網(wǎng)的發(fā)展環(huán)境不斷優(yōu)化,這主要得益于物聯(lián)網(wǎng)技術(shù)的廣泛應(yīng)用,為物理世界更直接地整合到計(jì)算機(jī)網(wǎng)絡(luò)世界創(chuàng)造了機(jī)會(huì)[1]。如今,物聯(lián)網(wǎng)在智慧城市[2]、交通、能源、金融、家居、醫(yī)療等多個(gè)方面都有應(yīng)用,但是物聯(lián)網(wǎng)的不同應(yīng)用領(lǐng)域?qū)υ搱?chǎng)景下的設(shè)備條件也存在著需求差異,同時(shí)還存在能效低以及安全性差等問(wèn)題。而區(qū)塊鏈技術(shù)具有的去信任化、自動(dòng)化、匿名化、不可竄改等特點(diǎn)[3]以及基于加密算法的信息交換為解決
物聯(lián)網(wǎng)的安全問(wèn)題帶來(lái)了希望[4]。但是,將目前已有的區(qū)塊鏈技術(shù)直接應(yīng)用于大規(guī)模物聯(lián)網(wǎng)系統(tǒng)并不可行,其無(wú)法保證物聯(lián)網(wǎng)發(fā)展的三要素,即安全性、拓展性、高能效之間的平衡。這是由于傳統(tǒng)的區(qū)塊鏈共識(shí)機(jī)制普遍存在高能耗與高時(shí)延的問(wèn)題,對(duì)于物聯(lián)網(wǎng)場(chǎng)景下的一般節(jié)點(diǎn)是無(wú)法承受的,同時(shí)現(xiàn)有共識(shí)機(jī)制無(wú)法做到根據(jù)物聯(lián)網(wǎng)的不同應(yīng)用場(chǎng)景篩選出合適的節(jié)點(diǎn),例如智慧存儲(chǔ)需要高存儲(chǔ)節(jié)點(diǎn),而車聯(lián)網(wǎng)則對(duì)網(wǎng)絡(luò)通信有著更大的需求。由于共識(shí)機(jī)制是區(qū)塊鏈的核心技術(shù),與區(qū)塊鏈的資源消耗、安全性、可擴(kuò)展性、性能效率密切相關(guān),設(shè)計(jì)出適合物聯(lián)網(wǎng)多場(chǎng)景需求、低開(kāi)銷、高效率要求的共識(shí)算法是實(shí)現(xiàn)區(qū)塊鏈與物聯(lián)網(wǎng)有機(jī)融合的關(guān)鍵。
目前,從去中心化角度可將區(qū)塊鏈分為公有鏈、聯(lián)盟鏈以及私有鏈。公有鏈主要是以工作量證明(power of work,PoW)[5]、權(quán)益證明(proof of stake,PoS)[6]、委托權(quán)益證明(de-legated proof of stake,DPoS)[7]作為概率一致性共識(shí)機(jī)制的代表。公有鏈共識(shí)機(jī)制雖然賦予不同節(jié)點(diǎn)同等權(quán)限,但是犧牲了效率,同時(shí)還存在隱私保護(hù)問(wèn)題,因此公有鏈共識(shí)機(jī)制并不適用于對(duì)效率與安全有著高要求的物聯(lián)網(wǎng)場(chǎng)景。私有鏈中節(jié)點(diǎn)的寫(xiě)入權(quán)限由內(nèi)部控制,私有程度過(guò)高的同時(shí)卻只能容納少量節(jié)點(diǎn),因此私有鏈共識(shí)機(jī)制并不適用于大規(guī)模物聯(lián)網(wǎng)場(chǎng)景。聯(lián)盟鏈主要以實(shí)用拜占庭容錯(cuò)(PBFT)機(jī)制[8]的絕對(duì)一致性共識(shí)機(jī)制為代表。聯(lián)盟鏈共識(shí)機(jī)制既能帶給大家需要的信息,又能保證自己的隱私不會(huì)被泄露,同時(shí)相較于公有鏈效率也有很大提升,滿足了物聯(lián)網(wǎng)高效率的要求,因此聯(lián)盟鏈共識(shí)機(jī)制更加適用于物聯(lián)網(wǎng)場(chǎng)景。表1列出了PoW、PoS、DPoS、PBFT四種算法的通信開(kāi)銷、吞吐量、響應(yīng)時(shí)間、容錯(cuò)性、可擴(kuò)展性和主要資源占用[9,10]。PBFT憑借1/3的拜占庭容錯(cuò)、秒級(jí)的響應(yīng)時(shí)間以及可達(dá)數(shù)千的吞吐量[10],被認(rèn)為是最適合物聯(lián)網(wǎng)系統(tǒng)的共識(shí)算法[11]。
PBFT 共識(shí)算法由Castro等人[8]提出,該算法實(shí)現(xiàn)了在異步環(huán)境下復(fù)制狀態(tài)機(jī),使其能夠在現(xiàn)實(shí)場(chǎng)景得到應(yīng)用。傳統(tǒng)PBFT共識(shí)流程如圖1所示,共識(shí)流程的核心為pre-prepare、prepare、commit三個(gè)階段,其中最為重要的commit階段既保證了最終不會(huì)提交和已經(jīng)提交的消息沖突的消息,同時(shí)在惡意主節(jié)點(diǎn)存在的情況下還能保證算法的安全性??墒荘BFT算法本身隨機(jī)選取主節(jié)點(diǎn)的方式并未將節(jié)點(diǎn)自身?xiàng)l件是否滿足當(dāng)前場(chǎng)景需要考慮進(jìn)去,這會(huì)導(dǎo)致主節(jié)點(diǎn)沒(méi)有能力進(jìn)行共識(shí)的情況發(fā)生。另外,其通信復(fù)雜度O(N2)為平方級(jí),平方級(jí)的通信復(fù)雜度將導(dǎo)致其會(huì)因?yàn)楣?jié)點(diǎn)個(gè)數(shù)的增加而顯著影響性能,一般地,當(dāng)節(jié)點(diǎn)個(gè)數(shù)達(dá)到100左右時(shí)性能下降極快。同時(shí)其主要占用的資源為通信資源,這就導(dǎo)致了以移動(dòng)通信技術(shù)為核心的物聯(lián)網(wǎng)為了完成共識(shí)不得不付出大量的通信代價(jià),這樣做無(wú)疑是增加了整個(gè)物聯(lián)網(wǎng)的通信壓力。若當(dāng)前場(chǎng)景下網(wǎng)絡(luò)不穩(wěn)定,則通信時(shí)延會(huì)顯著增大。
目前已經(jīng)有對(duì)PBFT共識(shí)算法的相關(guān)研究。為了防止惡意節(jié)點(diǎn)的攻擊,文獻(xiàn)[12,13]提出信用等級(jí)劃分的信用機(jī)制,選取高信用節(jié)點(diǎn)成為主節(jié)點(diǎn),對(duì)低信用節(jié)點(diǎn)進(jìn)行篩除,避免因惡意節(jié)點(diǎn)成為主節(jié)點(diǎn)導(dǎo)致算法的活性與安全性下降。為減少共識(shí)通信開(kāi)銷,Li等人[14]提出一種多層的PBFT共識(shí)機(jī)制,將單層多節(jié)點(diǎn)的通信劃分為多層,以減少每層的通信開(kāi)銷。為了避免大量通信并提高網(wǎng)絡(luò)擴(kuò)展性,文獻(xiàn)[15,16]使用散列算法對(duì)一致性節(jié)點(diǎn)進(jìn)行分組,降低了網(wǎng)絡(luò)的通信復(fù)雜度。為了簡(jiǎn)化流程、減少開(kāi)銷,劉肖飛[17]將PBFT的三階段共識(shí)簡(jiǎn)化為兩階段共識(shí),從而減少了通信開(kāi)銷。面對(duì)多節(jié)點(diǎn)安全與效率的問(wèn)題,涂園超等人[18]提出一種基于信譽(yù)投票的PBFT改進(jìn)方案(G-PBFT),在進(jìn)行動(dòng)態(tài)信譽(yù)篩選的同時(shí)將總通信次數(shù)減少到m2+2m-1,做到了安全與效率之間的平衡。為了將區(qū)塊鏈應(yīng)用于物聯(lián)網(wǎng)環(huán)境下,劉煒等人[19]提出一種基于聚類的實(shí)用拜占庭容錯(cuò)算法(C-PBFT),根據(jù)物聯(lián)網(wǎng)各節(jié)點(diǎn)的位置特征進(jìn)行聚類分層,分為底層和上層網(wǎng)絡(luò)分別執(zhí)行共識(shí),減少了通信所需的通信次數(shù),提高了共識(shí)效率。
但是在區(qū)塊鏈與物聯(lián)網(wǎng)融合的場(chǎng)景下,僅減少通信次數(shù)、提高共識(shí)效率并不能完全解決實(shí)際應(yīng)用問(wèn)題。不同物聯(lián)網(wǎng)場(chǎng)景對(duì)于設(shè)備的需求并不相同,多設(shè)備之間也存在性能差異。某些設(shè)備性能可能無(wú)法滿足特定場(chǎng)景的共識(shí)需要,卻仍要承受大量的網(wǎng)絡(luò)與物理資源帶來(lái)的壓力,從而影響設(shè)備本身,導(dǎo)致其無(wú)法按時(shí)完成共識(shí)甚至影響整個(gè)物聯(lián)網(wǎng)場(chǎng)景的共識(shí)。在傳統(tǒng)物聯(lián)網(wǎng)架構(gòu)中,中心網(wǎng)絡(luò)的節(jié)點(diǎn)設(shè)備相較于底層設(shè)備必然會(huì)消耗更多的資源,單單依靠信譽(yù)機(jī)制只能夠減少主節(jié)點(diǎn)在中心網(wǎng)絡(luò)中作惡的可能性,并不能保證中心節(jié)點(diǎn)擁有足夠的存儲(chǔ)或通信資源。在實(shí)際應(yīng)用場(chǎng)景需要考慮底層網(wǎng)絡(luò)中的眾多設(shè)備給中心設(shè)備所帶來(lái)的壓力,同時(shí)節(jié)點(diǎn)之間的距離對(duì)節(jié)點(diǎn)之間的相互通信造成影響。為了把握節(jié)點(diǎn)資源與距離之間的平衡,同時(shí)解決PBFT算法本身通信開(kāi)銷大和共識(shí)時(shí)延較長(zhǎng),可能對(duì)應(yīng)用于物聯(lián)網(wǎng)場(chǎng)景的共識(shí)造成影響,本文提出一種基于綜合評(píng)價(jià)的改進(jìn)實(shí)用拜占庭容錯(cuò)算法(improved practical Byzantine fault to-lerance based on comprehensive evaluation,CE-PBFT)。該算法在共識(shí)前對(duì)節(jié)點(diǎn)的性能與信譽(yù)值進(jìn)行加權(quán)計(jì)算得出綜合評(píng)價(jià)并篩選出合適的節(jié)點(diǎn),保證了節(jié)點(diǎn)的可靠;同時(shí)在面對(duì)不同物聯(lián)網(wǎng)場(chǎng)景的不同需求時(shí)可通過(guò)調(diào)節(jié)權(quán)重以適應(yīng)場(chǎng)景變化,提高了場(chǎng)景適應(yīng)性;之后對(duì)節(jié)點(diǎn)進(jìn)行基于綜合評(píng)價(jià)的K-means聚類處理,使相關(guān)資源更優(yōu)的節(jié)點(diǎn)成為中心節(jié)點(diǎn),提高了網(wǎng)絡(luò)的可靠性;再對(duì)共識(shí)過(guò)程進(jìn)行分層簡(jiǎn)化,將共識(shí)過(guò)程分為子集群共識(shí)與主集群共識(shí),提高容錯(cuò)性的同時(shí)減少了通信開(kāi)銷與共識(shí)時(shí)延;最后通過(guò)評(píng)價(jià)節(jié)點(diǎn)的實(shí)時(shí)性能與共識(shí)行為,完成綜合評(píng)價(jià)的更新。
1 CE-PBFT算法
1.1 物聯(lián)網(wǎng)多場(chǎng)景描述
物聯(lián)網(wǎng)多場(chǎng)景是指物聯(lián)網(wǎng)在現(xiàn)實(shí)生活中有著不同領(lǐng)域的應(yīng)用,如智慧城市領(lǐng)域、工業(yè)領(lǐng)域等。不同的領(lǐng)域中有著不同的應(yīng)用場(chǎng)景,如智慧城市的智能家居及車聯(lián)網(wǎng)、工業(yè)領(lǐng)域的農(nóng)產(chǎn)品運(yùn)輸?shù)?。在智慧城市以及工業(yè)領(lǐng)域向數(shù)字化轉(zhuǎn)型升級(jí)的過(guò)程中,需要針對(duì)不同的應(yīng)用場(chǎng)景進(jìn)行分析,例如智能家居需要設(shè)備有著較高的安全性來(lái)保護(hù)用戶隱私;車聯(lián)網(wǎng)需要設(shè)備能提供實(shí)時(shí)的通信以收集并共享數(shù)據(jù)以保證駕駛的安全;農(nóng)產(chǎn)品運(yùn)輸需要設(shè)備有著較高的存儲(chǔ)性能,以保證產(chǎn)品存證和溯源的完整。在多種應(yīng)用場(chǎng)景下,應(yīng)用同樣特性的設(shè)備是不合理的,需要根據(jù)場(chǎng)景需求來(lái)篩選合適的設(shè)備且能夠?qū)崟r(shí)地隨著場(chǎng)景需求進(jìn)行變更,例如在城市交通的早晚高峰,需要保證設(shè)備的穩(wěn)定與高效;而在低峰期,則可以讓設(shè)備進(jìn)行額外的存儲(chǔ)與備份。綜上所述,要實(shí)現(xiàn)區(qū)塊鏈的物聯(lián)網(wǎng)多場(chǎng)景的應(yīng)用需求,需要能夠根據(jù)多種物聯(lián)網(wǎng)應(yīng)用場(chǎng)景得出多種設(shè)備搭配應(yīng)用方案以達(dá)到區(qū)塊鏈與物聯(lián)網(wǎng)更好融合。
本文針對(duì)一個(gè)經(jīng)典物聯(lián)網(wǎng)場(chǎng)景進(jìn)行分析研究,如圖2所示。大部分物聯(lián)網(wǎng)應(yīng)用場(chǎng)景基于該場(chǎng)景進(jìn)行拓展,根據(jù)各節(jié)點(diǎn)其相關(guān)資源利用率與安全性進(jìn)行等級(jí)劃分,劃分為全節(jié)點(diǎn)、從節(jié)點(diǎn)和邊緣節(jié)點(diǎn),以體現(xiàn)節(jié)點(diǎn)在當(dāng)前物聯(lián)網(wǎng)場(chǎng)景中的適用程度。
a)全節(jié)點(diǎn)。在當(dāng)前物聯(lián)網(wǎng)場(chǎng)景下性能與安全性均較為良好的節(jié)點(diǎn),能夠承載更多的區(qū)塊信息且網(wǎng)絡(luò)較為穩(wěn)定、通信效率較高,能夠參與共識(shí)。
b)從節(jié)點(diǎn)。在當(dāng)前物聯(lián)網(wǎng)場(chǎng)景下性能與安全性較為一般的節(jié)點(diǎn),能夠滿足基本的共識(shí)需求,能夠參與共識(shí)。
c)邊緣節(jié)點(diǎn)。在當(dāng)前物聯(lián)網(wǎng)場(chǎng)景下性能或安全性較低的節(jié)點(diǎn),無(wú)法滿足最低的共識(shí)需求,不參與共識(shí)。
1.2 算法概述
針對(duì)PBFT算法無(wú)法根據(jù)應(yīng)用場(chǎng)景變化適應(yīng)調(diào)節(jié)、通信開(kāi)銷大,共識(shí)時(shí)延長(zhǎng)等問(wèn)題,本文提出一種基于綜合評(píng)價(jià)的改進(jìn)實(shí)用拜占庭容錯(cuò)共識(shí)算法。CE-PBFT算法具體流程如圖3所示。
a)物聯(lián)網(wǎng)節(jié)點(diǎn)初始化。完成節(jié)點(diǎn)設(shè)置初始信譽(yù)值δ、綜合評(píng)價(jià)ε、分配密鑰等初始化工作,同時(shí)獲取節(jié)點(diǎn)的無(wú)線網(wǎng)絡(luò)坐標(biāo)。
b)加入綜合評(píng)價(jià)模型。該模型主要由性能評(píng)價(jià)與信譽(yù)機(jī)制兩部分組成。性能評(píng)價(jià)評(píng)估節(jié)點(diǎn)在當(dāng)前物聯(lián)網(wǎng)場(chǎng)景的存儲(chǔ)及網(wǎng)絡(luò)資源利用率;信譽(yù)機(jī)制評(píng)估節(jié)點(diǎn)歷史共識(shí)行為得出信譽(yù)值。結(jié)合各性能評(píng)價(jià)指標(biāo)與信譽(yù)值在當(dāng)前物聯(lián)網(wǎng)場(chǎng)景下的權(quán)重占比進(jìn)行加權(quán)計(jì)算得出各節(jié)點(diǎn)的綜合評(píng)價(jià);再根據(jù)綜合評(píng)價(jià)對(duì)節(jié)點(diǎn)等級(jí)劃分選出全節(jié)點(diǎn)和從節(jié)點(diǎn),淘汰邊緣節(jié)點(diǎn)。
c)基于綜合評(píng)價(jià)的聚類階段。對(duì)物聯(lián)網(wǎng)場(chǎng)景的全節(jié)點(diǎn)和從節(jié)點(diǎn)進(jìn)行基于綜合評(píng)價(jià)的K-means聚類,只有全節(jié)點(diǎn)才有資格通過(guò)聚類成為中心節(jié)點(diǎn),根據(jù)節(jié)點(diǎn)綜合評(píng)價(jià)與具體位置特征劃分為k個(gè)子集群和1個(gè)主集群。
d)共識(shí)階段。共識(shí)階段主要分為主集群共識(shí)和子集群共識(shí)。主集群進(jìn)行主集群預(yù)準(zhǔn)備與主集群確認(rèn)共識(shí),子集群進(jìn)行三階段的PBFT共識(shí)流程。
e)綜合評(píng)價(jià)更新階段。通過(guò)性能評(píng)價(jià)對(duì)節(jié)點(diǎn)參與共識(shí)的實(shí)時(shí)性能進(jìn)行評(píng)價(jià);通過(guò)信譽(yù)機(jī)制,根據(jù)節(jié)點(diǎn)在此次共識(shí)過(guò)程中的共識(shí)行為對(duì)節(jié)點(diǎn)信譽(yù)值進(jìn)行獎(jiǎng)懲;將節(jié)點(diǎn)性能評(píng)價(jià)與信譽(yù)值進(jìn)行加權(quán)計(jì)算得出綜合評(píng)價(jià),完成綜合評(píng)價(jià)的更新。
1.3 綜合評(píng)價(jià)模型
不同的物聯(lián)網(wǎng)場(chǎng)景有著不同的應(yīng)用需求,不同的節(jié)點(diǎn)設(shè)備在不同的應(yīng)用場(chǎng)景下也可能無(wú)法發(fā)揮其全部性能,甚至可能存在惡意節(jié)點(diǎn)進(jìn)行攻擊而影響整個(gè)共識(shí)的流程。若不考慮節(jié)點(diǎn)自身性能,例如存儲(chǔ)和網(wǎng)絡(luò)性能,低存儲(chǔ)會(huì)影響節(jié)點(diǎn)在共識(shí)過(guò)程乃至共識(shí)完成后對(duì)于區(qū)塊數(shù)據(jù)的記錄與備份,造成數(shù)據(jù)的存儲(chǔ)不完全或失??;而高網(wǎng)絡(luò)延遲則會(huì)直接造成通信的延遲,無(wú)法在規(guī)定時(shí)間內(nèi)完成該階段的共識(shí)通信。若只片面地考慮主觀惡意攻擊而忽視了節(jié)點(diǎn)的客觀因素,依然可能會(huì)造成整個(gè)共識(shí)的失敗,導(dǎo)致無(wú)法同步區(qū)塊信息。因此,評(píng)價(jià)物聯(lián)網(wǎng)設(shè)備的性能與安全性是否適用于物聯(lián)網(wǎng)場(chǎng)景是實(shí)現(xiàn)共識(shí)算法物聯(lián)網(wǎng)多場(chǎng)景應(yīng)用的關(guān)鍵。本文提出綜合評(píng)價(jià)模型對(duì)節(jié)點(diǎn)性能與安全性進(jìn)行綜合考量,以評(píng)價(jià)節(jié)點(diǎn)在物聯(lián)網(wǎng)場(chǎng)景下的適用程度,保證共識(shí)的完成綜合評(píng)價(jià)模型主要由性能評(píng)價(jià)與信譽(yù)機(jī)制兩部分組成。
1.3.1 性能評(píng)價(jià)
性能評(píng)價(jià)(performance evaluation,PE)是評(píng)價(jià)節(jié)點(diǎn)所擁有的性能資源的一種方式。物聯(lián)網(wǎng)設(shè)備性能在一定程度上影響著物聯(lián)網(wǎng)與區(qū)塊鏈融合的發(fā)展和應(yīng)用,大多數(shù)的物聯(lián)網(wǎng)設(shè)備都是資源受限的,例如手表和紅外傳感器等是電池供電的無(wú)線設(shè)備,其存儲(chǔ)資源非常有限,無(wú)法滿足區(qū)塊鏈存儲(chǔ)需求。部分物聯(lián)網(wǎng)設(shè)備雖然存儲(chǔ)資源較為充足,但可能由于網(wǎng)絡(luò)的不穩(wěn)定或通信質(zhì)量差,導(dǎo)致在物聯(lián)網(wǎng)場(chǎng)景下頻繁宕機(jī)或通信超時(shí),影響整個(gè)場(chǎng)景的共識(shí)效率。因此,設(shè)定合理的性能評(píng)價(jià)指標(biāo)是有效衡量物聯(lián)網(wǎng)設(shè)備能否成功完成共識(shí)的關(guān)鍵,性能評(píng)價(jià)指標(biāo)的選擇由實(shí)際情況分析確定,不同指標(biāo)可從不同角度對(duì)一個(gè)節(jié)點(diǎn)設(shè)備進(jìn)行評(píng)價(jià)。
針對(duì)物聯(lián)網(wǎng)與區(qū)塊鏈融合場(chǎng)景下節(jié)點(diǎn)由于資源受限可能對(duì)共識(shí)造成影響的實(shí)際問(wèn)題,本文采用以下兩個(gè)性能評(píng)價(jià)指標(biāo)評(píng)價(jià)物聯(lián)網(wǎng)節(jié)點(diǎn)的性能,提高可靠性。
a)存儲(chǔ)利用率(storage utilization,SU)[21]。區(qū)塊鏈完成共識(shí)后需要在本地產(chǎn)生區(qū)塊用于存儲(chǔ)區(qū)塊數(shù)據(jù),這將導(dǎo)致該節(jié)點(diǎn)在下一個(gè)共識(shí)周期開(kāi)始之前,歷史數(shù)據(jù)一直占用著大量的本地存儲(chǔ)空間。設(shè)備自身存儲(chǔ)效率較低,在前一輪的區(qū)塊數(shù)據(jù)沒(méi)有存儲(chǔ)完成時(shí)就開(kāi)始進(jìn)行下一輪的存儲(chǔ),這會(huì)導(dǎo)致設(shè)備的高負(fù)載,可能會(huì)對(duì)該設(shè)備的共識(shí)進(jìn)度造成影響。另外,在維護(hù)區(qū)塊鏈的時(shí)候進(jìn)行區(qū)塊提交等操作會(huì)消耗I/O資源,這些操作都需要該節(jié)點(diǎn)有著較高的存儲(chǔ)空間和存儲(chǔ)效率才能保證在規(guī)定時(shí)間內(nèi)反饋消息并成功生成區(qū)塊。因此,提出一個(gè)節(jié)點(diǎn)性能評(píng)價(jià)指標(biāo)來(lái)衡量物聯(lián)網(wǎng)節(jié)點(diǎn)在共識(shí)過(guò)程中記錄區(qū)塊等行為對(duì)存儲(chǔ)資源的使用情況,稱為存儲(chǔ)利用率,取值為[0,1]。在ti到tj的這段時(shí)間內(nèi),該節(jié)點(diǎn)的存儲(chǔ)利用率SU可由如下公式定義:
SU=size(B,Δt)+size(Ops,Δt)∫tjti(size(t)read+size(t)write)dt(1)
其中:size(B,Δt)表示該節(jié)點(diǎn)在Δt時(shí)間內(nèi)處理的區(qū)塊數(shù)據(jù)大??;size(Ops,Δt)表示節(jié)點(diǎn)在Δt時(shí)間內(nèi)進(jìn)行其他共識(shí)操作的數(shù)據(jù)大??;size(t)read表示節(jié)點(diǎn)在t時(shí)刻讀取的數(shù)據(jù)大??;size(t)write表示節(jié)點(diǎn)在t時(shí)刻寫(xiě)入的數(shù)據(jù)大小。
b)網(wǎng)絡(luò)利用率(network utilization,NU)[21]。由于PBFT共識(shí)算法是以數(shù)據(jù)通信的方式將區(qū)塊等相關(guān)信息傳輸?shù)骄W(wǎng)絡(luò)中,需要用到通信資源。此外,為了實(shí)現(xiàn)去中心化,區(qū)塊鏈采用的是P2P的通信方式,物聯(lián)網(wǎng)大多數(shù)節(jié)點(diǎn)都是無(wú)線IoT設(shè)備,節(jié)點(diǎn)之間的信息交換與數(shù)據(jù)同步會(huì)消耗大量的網(wǎng)絡(luò)流量。若某個(gè)節(jié)點(diǎn)由于通信質(zhì)量較差導(dǎo)致消息發(fā)送超時(shí),其消息會(huì)失去時(shí)效性,從而導(dǎo)致共識(shí)失敗。因此,本節(jié)提出一個(gè)節(jié)點(diǎn)性能評(píng)價(jià)指標(biāo)來(lái)衡量物聯(lián)網(wǎng)節(jié)點(diǎn)在共識(shí)過(guò)程中共識(shí)通信等行為所消耗的網(wǎng)絡(luò)流量占比,稱為網(wǎng)絡(luò)利用率,取值為[0,1]。在ti到tj的這段時(shí)間內(nèi),該節(jié)點(diǎn)的網(wǎng)絡(luò)利用率NU可由如下公式定義:
NU=size(B,Δt)+size(Ops,Δt)∫tjti(net(t)upload+net(t)download)dt(2)
其中:net(t)upload表示節(jié)點(diǎn)在t時(shí)刻設(shè)備網(wǎng)絡(luò)上傳速率;net(t)download表示節(jié)點(diǎn)在t時(shí)刻設(shè)備網(wǎng)絡(luò)下載速率。
對(duì)于初始共識(shí)節(jié)點(diǎn),在完成一輪共識(shí)后,根據(jù)性能評(píng)價(jià)指標(biāo)及各指標(biāo)在當(dāng)前場(chǎng)景所占權(quán)重進(jìn)行實(shí)時(shí)的節(jié)點(diǎn)性能評(píng)價(jià),性能評(píng)價(jià)PE的取值為[0,1],具體公式如下:
PE=ω1SU+ω2NU(3)
其中:ω1,ω2∈[0,1]且0≤ω1+ω2≤1,ω1、ω2分別代表存儲(chǔ)利用率SU與網(wǎng)絡(luò)利用率NU在當(dāng)前場(chǎng)景下的權(quán)重占比。性能評(píng)價(jià)PE越高,說(shuō)明節(jié)點(diǎn)擁有的相關(guān)資源越多,性能越好。
1.3.2 信譽(yù)機(jī)制
由于PBFT采用隨機(jī)選取主節(jié)點(diǎn)的方式,這將會(huì)導(dǎo)致共識(shí)過(guò)程中拜占庭節(jié)點(diǎn)與普通節(jié)點(diǎn)有著相同的概率成為主節(jié)點(diǎn)而無(wú)須付出任何代價(jià),顯然這會(huì)導(dǎo)致安全問(wèn)題。因此,根據(jù)節(jié)點(diǎn)歷史共識(shí)行為對(duì)其進(jìn)行必要的獎(jiǎng)懲,是提升節(jié)點(diǎn)共識(shí)積極性與維護(hù)共識(shí)安全的必要手段。
在CE-PBFT中,信譽(yù)機(jī)制主要分為信譽(yù)獎(jiǎng)懲與信譽(yù)恢復(fù)兩部分。對(duì)于初始未參與共識(shí)的節(jié)點(diǎn),信譽(yù)值統(tǒng)一默認(rèn)為δ,信譽(yù)值及其相關(guān)計(jì)算參數(shù)在開(kāi)始共識(shí)之前由客戶端進(jìn)行初始化并存儲(chǔ)在本地。為了便于之后各節(jié)點(diǎn)能夠通過(guò)信譽(yù)值及其權(quán)重占比參與綜合評(píng)價(jià),信譽(yù)值R的取值為[0,1]。
信譽(yù)獎(jiǎng)懲是指當(dāng)節(jié)點(diǎn)參與共識(shí)時(shí),根據(jù)其在共識(shí)過(guò)程中的行為作出信譽(yù)評(píng)估。設(shè)節(jié)點(diǎn)i在第t輪共識(shí)的信譽(yù)值為Rti,則節(jié)點(diǎn)在t+1輪共識(shí)的信譽(yù)值Rt+1i的計(jì)算公式如下:
Rt+1i=Rti+α(1-Rti)節(jié)點(diǎn)行為正常
βs+1Rti節(jié)點(diǎn)行為異常(4)
若節(jié)點(diǎn)參與并完成了第t輪共識(shí)且反饋了正確的信息,則該節(jié)點(diǎn)下一輪的信譽(yù)值更新為Rt+1i=Rti+α(1-Rti)。α∈(0,1)為獎(jiǎng)勵(lì)系數(shù),用于控制信譽(yù)值的增長(zhǎng)速度。當(dāng)α固定不變時(shí),Rti越大,Rt+1i的增長(zhǎng)速度越慢,無(wú)限趨近于1,如此能夠提高各個(gè)節(jié)點(diǎn)出塊的積極性的同時(shí),還能夠防止某一節(jié)點(diǎn)由于信譽(yù)值過(guò)高而造成對(duì)新加入節(jié)點(diǎn)的不公平。若節(jié)點(diǎn)在第t輪共識(shí)存在未響應(yīng)或返回錯(cuò)誤消息等異常行為,則該節(jié)點(diǎn)下一輪的信譽(yù)值更新為Rt+1i=βs+1Rti。β∈(0,1)為懲罰系數(shù),s為該節(jié)點(diǎn)歷史異常行為次數(shù),兩者均用于控制信譽(yù)值下降的速度。當(dāng)β固定不變時(shí),s越大,Rt+1i的下降速度越快,無(wú)限趨近于0,如此能夠加重對(duì)頻繁影響共識(shí)節(jié)點(diǎn)的信譽(yù)值懲罰,提高作惡代價(jià)。
信譽(yù)恢復(fù)是指當(dāng)節(jié)點(diǎn)被劃分為邊緣節(jié)點(diǎn)時(shí),經(jīng)過(guò)n輪無(wú)法參與共識(shí)之后恢復(fù)其部分信譽(yù)值p,使其有機(jī)會(huì)重新參與共識(shí)。邊緣節(jié)點(diǎn)在n輪不參與共識(shí)后,進(jìn)行信譽(yù)恢復(fù)的計(jì)算公式如下:
Rt+ni=Rti+p(5)
若一個(gè)節(jié)點(diǎn)信譽(yù)值過(guò)低,則有可能會(huì)導(dǎo)致其綜合評(píng)價(jià)無(wú)法滿足共識(shí)要求而被多次劃分為邊緣節(jié)點(diǎn),使其連續(xù)多個(gè)n輪無(wú)法參與共識(shí),這能有效預(yù)防惡意節(jié)點(diǎn)頻繁影響共識(shí)流程,同時(shí)也能使得邊緣節(jié)點(diǎn)有機(jī)會(huì)成為從節(jié)點(diǎn)或全節(jié)點(diǎn)。加入信譽(yù)機(jī)制,可以實(shí)現(xiàn)對(duì)于全網(wǎng)共識(shí)的安全保障。N個(gè)節(jié)點(diǎn)在完成第t輪共識(shí)后的信譽(yù)值更新算法如算法1所示。
算法1 信譽(yù)值更新算法
輸入:Rti,Nti,α,β。
輸出:Rt+1i。
for t,i∈N
if complete consensus && feedback correct information
Rt+1i←Rti+α(1-Rti);
else if Nti.status←fringe node
Rt+ni←Rti+p;
else Rt+1i←βs+1Rti;
return Rt+1i;
end for
1.3.3 綜合評(píng)價(jià)
利用性能評(píng)價(jià)PE中的性能評(píng)價(jià)指標(biāo)SU、NU以及信譽(yù)機(jī)制中的信譽(yù)值R與當(dāng)前場(chǎng)景下的各自權(quán)重占比進(jìn)行加權(quán)計(jì)算,得出該節(jié)點(diǎn)的綜合評(píng)價(jià)(comprehensive evaluation,CE)。綜合評(píng)價(jià)CE的取值為[0,1],具體定義如下:
CE=ω1SU+ω2NU+ω3R(6)
其中:ω1,ω2,ω3∈[0,1]且ω1+ω2+ω3=1,ω1、ω2、ω3分別代表存儲(chǔ)利用率SU、網(wǎng)絡(luò)利用率NU和信譽(yù)值R在當(dāng)前物聯(lián)網(wǎng)場(chǎng)景下的權(quán)重占比。
面對(duì)物聯(lián)網(wǎng)多場(chǎng)景時(shí),可通過(guò)調(diào)節(jié)權(quán)重以適應(yīng)不同應(yīng)用場(chǎng)景的需求。對(duì)存儲(chǔ)空間需求較大的物聯(lián)網(wǎng)場(chǎng)景,如智慧存儲(chǔ)等,需要占用大量的存儲(chǔ)空間來(lái)存儲(chǔ)交易或賬本數(shù)據(jù),則通過(guò)提升ω1來(lái)提高場(chǎng)景對(duì)節(jié)點(diǎn)存儲(chǔ)利用率的要求;對(duì)網(wǎng)絡(luò)通信要求較為嚴(yán)格的物聯(lián)網(wǎng)場(chǎng)景,如車聯(lián)網(wǎng)、智慧醫(yī)療等,需要較好的網(wǎng)絡(luò)質(zhì)量與及時(shí)的通信來(lái)保證共識(shí)穩(wěn)定運(yùn)行,則通過(guò)提升ω2來(lái)提高場(chǎng)景對(duì)節(jié)點(diǎn)網(wǎng)絡(luò)利用率的要求;對(duì)設(shè)備安全性有著高要求的物聯(lián)網(wǎng)場(chǎng)景,如智能安防等,需要保證終端節(jié)點(diǎn)的安全,則通過(guò)提升ω3來(lái)提高場(chǎng)景節(jié)點(diǎn)對(duì)信譽(yù)值的要求。
通過(guò)調(diào)節(jié)各評(píng)價(jià)指標(biāo)的權(quán)重以適應(yīng)多場(chǎng)景應(yīng)用的需求,再根據(jù)綜合評(píng)價(jià)對(duì)節(jié)點(diǎn)進(jìn)行等級(jí)劃分以篩選出適合當(dāng)前場(chǎng)景的節(jié)點(diǎn)。對(duì)于初始未參與共識(shí)的節(jié)點(diǎn),綜合評(píng)價(jià)統(tǒng)一默認(rèn)為ε。全網(wǎng)節(jié)點(diǎn)綜合評(píng)價(jià)主要分為三類,如表2所示。全網(wǎng)節(jié)點(diǎn)綜合評(píng)價(jià)準(zhǔn)則基于節(jié)點(diǎn)在性能評(píng)價(jià)與信譽(yù)機(jī)制中的表現(xiàn),只有當(dāng)節(jié)點(diǎn)綜合評(píng)價(jià)達(dá)到ε時(shí)節(jié)點(diǎn)才有資格參與本輪共識(shí),當(dāng)節(jié)點(diǎn)綜合評(píng)價(jià)低于ε時(shí),將由于綜合評(píng)價(jià)不達(dá)標(biāo),無(wú)法滿足最低的共識(shí)資源要求,成為邊緣節(jié)點(diǎn)而禁止參與本輪共識(shí)。若節(jié)點(diǎn)綜合評(píng)價(jià)滿足ε且不大于ζ,則成為從節(jié)點(diǎn);若節(jié)點(diǎn)綜合評(píng)價(jià)大于ζ,則說(shuō)明節(jié)點(diǎn)綜合評(píng)價(jià)較高,其性能與安全性在全網(wǎng)節(jié)點(diǎn)中較為優(yōu)秀,成為全節(jié)點(diǎn)。
假設(shè)某個(gè)物聯(lián)網(wǎng)場(chǎng)景中共有N個(gè)節(jié)點(diǎn),各節(jié)點(diǎn)的綜合評(píng)價(jià)為CEi,其中i=1,2,…,N,該場(chǎng)景需求M個(gè)合適的節(jié)點(diǎn)參與共識(shí)。先對(duì)各節(jié)點(diǎn)的綜合評(píng)價(jià)CEi進(jìn)行降序排列,之后根據(jù)當(dāng)前場(chǎng)景的共識(shí)需求將排名第M的節(jié)點(diǎn)的綜合評(píng)價(jià)CEM設(shè)定為從節(jié)點(diǎn)閾值ε。
由于傳統(tǒng)PBFT共識(shí)算法需要保證至少有4個(gè)節(jié)點(diǎn)才能進(jìn)行共識(shí),其中1個(gè)主節(jié)點(diǎn)和3個(gè)從節(jié)點(diǎn),即在分簇的PBFT共識(shí)過(guò)程中,只要保證當(dāng)前場(chǎng)景中參與共識(shí)的主從節(jié)點(diǎn)個(gè)數(shù)比為1:3就能保證每個(gè)簇內(nèi)均可開(kāi)始共識(shí),不會(huì)發(fā)生某個(gè)簇內(nèi)無(wú)法共識(shí)的情況。綜上,假設(shè)滿足從節(jié)點(diǎn)閾值ε的節(jié)點(diǎn)個(gè)數(shù)為M,各節(jié)點(diǎn)的綜合評(píng)價(jià)為CEh,其中h=1,2,…,M。先對(duì)各節(jié)點(diǎn)的綜合評(píng)價(jià)CEh進(jìn)行降序排列,選取排名第「M/4個(gè)節(jié)點(diǎn)的綜合評(píng)價(jià)CE「M/4設(shè)定為全節(jié)點(diǎn)閾值ζ,這樣既可以保證在分簇過(guò)多的情況下每個(gè)簇內(nèi)均可滿足開(kāi)始共識(shí)的基本條件,同時(shí)當(dāng)分簇?cái)?shù)小于「M/4時(shí)剩余的全節(jié)點(diǎn)可作為替補(bǔ)節(jié)點(diǎn),提高可靠性。
圖4是在不同節(jié)點(diǎn)個(gè)數(shù)的情況下,隨機(jī)存儲(chǔ)利用率SU、網(wǎng)絡(luò)利用率NU和信譽(yù)值R的物聯(lián)網(wǎng)節(jié)點(diǎn)分別進(jìn)行權(quán)重占比(ω1,ω2,ω3)=(0.8,0.1,0.1)所代表的高存儲(chǔ)利用率要求的物聯(lián)網(wǎng)場(chǎng)景,(ω1,ω2,ω3)=(0.1,0.8,0.1)所代表的高網(wǎng)絡(luò)利用率要求的物聯(lián)網(wǎng)場(chǎng)景以及(ω1,ω2,ω3)=(0.1,0.1,0.8)所代表的高信譽(yù)值要求的物聯(lián)網(wǎng)場(chǎng)景,在以上3種不同應(yīng)用場(chǎng)景下生成對(duì)應(yīng)的綜合評(píng)價(jià),固定篩選出25個(gè)適合當(dāng)前物聯(lián)網(wǎng)場(chǎng)景的節(jié)點(diǎn)(全節(jié)點(diǎn)+從節(jié)點(diǎn))時(shí),從節(jié)點(diǎn)閾值ε和全節(jié)點(diǎn)閾值ζ的變化情況。
從圖4可知,隨著物聯(lián)網(wǎng)節(jié)點(diǎn)數(shù)量的增加,從節(jié)點(diǎn)閾值ε和全節(jié)點(diǎn)閾值ζ也在逐漸上升,上升速度逐漸減緩最后趨于平穩(wěn)。這是由于在節(jié)點(diǎn)數(shù)量越多的場(chǎng)景中篩選出固定數(shù)量的全節(jié)點(diǎn),篩選條件會(huì)逐漸苛刻,而全節(jié)點(diǎn)的數(shù)量并不一定會(huì)隨著物聯(lián)網(wǎng)節(jié)點(diǎn)數(shù)量的增加而增加,所以上升幅度會(huì)逐漸放緩而趨于平穩(wěn)。
綜合評(píng)價(jià)模型綜合考量了每個(gè)節(jié)點(diǎn)在物聯(lián)網(wǎng)場(chǎng)景中可能影響共識(shí)的客觀和人為因素,較單一的信譽(yù)值等級(jí)劃分顯得更加全面,同時(shí)還能夠通過(guò)調(diào)節(jié)各評(píng)價(jià)指標(biāo)的權(quán)重以適應(yīng)應(yīng)用場(chǎng)景的變化,實(shí)現(xiàn)不同物聯(lián)網(wǎng)場(chǎng)景下對(duì)節(jié)點(diǎn)的不同要求,提高了場(chǎng)景適應(yīng)性。N個(gè)節(jié)點(diǎn)在進(jìn)行第t+1輪共識(shí)時(shí)的綜合評(píng)價(jià)模型算法如算法2所示。
算法2 綜合評(píng)價(jià)模型
輸入:SUti,NUti,Rti,ω1,ω2,ω3。
輸出:CEt+1i,Nt+1i。
for t,i∈N
CEt+1i=ω1SUti+ω2NUti+ω3Rti;
if CEt+1i≥ε
if CEt+1i>ζ
Nt+1i.status←full node;
else Nt+1i.status←follower;
else Nt+1i.status←fringe node;
return CEt+1i,Nt+1i;
end for
1.4 基于綜合評(píng)價(jià)的聚類階段
在物聯(lián)網(wǎng)中,可利用無(wú)線網(wǎng)絡(luò)定位技術(shù)來(lái)實(shí)現(xiàn)將各節(jié)點(diǎn)以橫縱坐標(biāo)的形式展現(xiàn)在二維空間,從而獲取節(jié)點(diǎn)的無(wú)線網(wǎng)絡(luò)坐標(biāo)。在眾多聚類算法中,K-means聚類算法憑借其距離最優(yōu)原則選擇中心節(jié)點(diǎn)的機(jī)制而適用于實(shí)際物聯(lián)網(wǎng)場(chǎng)景??紤]到實(shí)際在進(jìn)行分簇共識(shí)時(shí),各簇內(nèi)的中心節(jié)點(diǎn)由于需要額外參與簇間的共識(shí)導(dǎo)致通信次數(shù)較其他節(jié)點(diǎn)有著明顯增多,同時(shí)承載的區(qū)塊信息也會(huì)更大,需要用到更多的資源,所以本文將物聯(lián)網(wǎng)節(jié)點(diǎn)綜合評(píng)價(jià)與K-means根據(jù)距離分簇的思想相結(jié)合,提出基于綜合評(píng)價(jià)的K-means聚類算法。將節(jié)點(diǎn)是否為全節(jié)點(diǎn)作為選拔中心節(jié)點(diǎn)的條件,同時(shí)該節(jié)點(diǎn)必須較簇內(nèi)其他全節(jié)點(diǎn)到其他節(jié)點(diǎn)距離之和最小,從而選出兼具性能與安全性且簇內(nèi)距離最優(yōu)的中心節(jié)點(diǎn)。由于PBFT算法的通信復(fù)雜度為O(N2),為防止部分節(jié)點(diǎn)簇內(nèi)因節(jié)點(diǎn)數(shù)顯著多于其他簇而增大了整個(gè)場(chǎng)景的通信開(kāi)銷,要將每個(gè)簇內(nèi)節(jié)點(diǎn)數(shù)平均化,最多為「N/k個(gè),且要滿足N/k≥4防止部分節(jié)點(diǎn)簇內(nèi)由于節(jié)點(diǎn)個(gè)數(shù)不足無(wú)法滿足共識(shí)條件。但原K-means聚類算法并不能對(duì)中心節(jié)點(diǎn)選取條件和簇內(nèi)節(jié)點(diǎn)數(shù)量進(jìn)行控制,因此本節(jié)對(duì)聚類流程進(jìn)行了改進(jìn)以適用于實(shí)際物聯(lián)網(wǎng)場(chǎng)景?;诰C合評(píng)價(jià)的K-means聚類流程如下:
a)根據(jù)節(jié)點(diǎn)的綜合評(píng)價(jià)篩選出全節(jié)點(diǎn)和從節(jié)點(diǎn)。只有全節(jié)點(diǎn)才有成為中心節(jié)點(diǎn)的資格,從節(jié)點(diǎn)可以通過(guò)聚類加入簇內(nèi)。
b)若將N個(gè)節(jié)點(diǎn)劃分為k個(gè)簇,則從全節(jié)點(diǎn)中隨機(jī)選擇k個(gè)節(jié)點(diǎn)作為初始中心節(jié)點(diǎn)。
c)利用二維歐氏距離計(jì)算公式分別得出節(jié)點(diǎn)Ni到k個(gè)初始中心節(jié)點(diǎn)的距離大小。
d)節(jié)點(diǎn)Ni加入距其最近的中心節(jié)點(diǎn)所在簇,在加入之前需判斷該簇內(nèi)節(jié)點(diǎn)數(shù)量是否超過(guò)閾值「N/k,若是則加入距離次之的簇,重復(fù)這一操作,直到加入某一簇內(nèi)。
e)重新計(jì)算每個(gè)簇的中心點(diǎn),將本簇內(nèi)到其他節(jié)點(diǎn)距離之和最小的全節(jié)點(diǎn)作為新的中心節(jié)點(diǎn),該節(jié)點(diǎn)稱為該簇的中心全節(jié)點(diǎn)。重復(fù)執(zhí)行步驟d)e),直到中心全節(jié)點(diǎn)不再變化,基于綜合評(píng)價(jià)的K-means聚類完成。
對(duì)節(jié)點(diǎn)進(jìn)行聚類后形成的k個(gè)節(jié)點(diǎn)簇稱為子集群。各節(jié)點(diǎn)簇的中心節(jié)點(diǎn)由于其綜合評(píng)價(jià)優(yōu)秀且其在簇內(nèi)距離最優(yōu),稱為中心全節(jié)點(diǎn),由各中心全節(jié)點(diǎn)組成的節(jié)點(diǎn)簇稱為主集群。由主集群構(gòu)成中心網(wǎng)絡(luò),子集群則構(gòu)成底層網(wǎng)絡(luò),由此構(gòu)成了一個(gè)雙層網(wǎng)絡(luò)架構(gòu)。
圖5是生成40個(gè)隨機(jī)存儲(chǔ)利用率SU、網(wǎng)絡(luò)利用率NU和信譽(yù)值R的物聯(lián)網(wǎng)節(jié)點(diǎn)分別在權(quán)重占比為(ω1,ω2,ω3)=(0.8,0.1,0.1)的高存儲(chǔ)利用率要求的物聯(lián)網(wǎng)場(chǎng)景,(ω1,ω2,ω3)=(0.1,0.8,0.1)的高網(wǎng)絡(luò)利用率要求的物聯(lián)網(wǎng)場(chǎng)景以及(ω1,ω2,ω3)=(0.1,0.1,0.8)的高信譽(yù)要求的物聯(lián)網(wǎng)場(chǎng)景下,固定篩選出25個(gè)適合當(dāng)前物聯(lián)網(wǎng)場(chǎng)景的節(jié)點(diǎn)(全節(jié)點(diǎn)+從節(jié)點(diǎn)),并執(zhí)行基于綜合評(píng)價(jià)的K-means聚類算法求得5個(gè)中心全節(jié)點(diǎn)的網(wǎng)絡(luò)節(jié)點(diǎn)坐標(biāo)圖。
從圖5可知,隨著場(chǎng)景需求的變化,即權(quán)重ω1、ω2、ω3的改變,節(jié)點(diǎn)角色的劃分并不統(tǒng)一,說(shuō)明基于綜合評(píng)價(jià)的聚類起到了根據(jù)場(chǎng)景需求劃分節(jié)點(diǎn)的作用,具有場(chǎng)景適應(yīng)性。此外,通過(guò)改進(jìn)后的聚類算法將節(jié)點(diǎn)等分到各子集群中,解決了由于各集群內(nèi)部節(jié)點(diǎn)數(shù)量不均,導(dǎo)致通信開(kāi)銷過(guò)大的問(wèn)題。網(wǎng)絡(luò)拓?fù)淙鐖D6所示。
1.5 共識(shí)階段
基于綜合評(píng)價(jià)的K-means聚類算法將適合當(dāng)前物聯(lián)網(wǎng)場(chǎng)景的節(jié)點(diǎn)分為了k個(gè)子集群,之后通過(guò)將傳統(tǒng)PBFT算法共識(shí)劃分為子集群共識(shí)和主集群共識(shí)兩個(gè)階段以降低原來(lái)平方級(jí)的通信復(fù)雜度,減少通信次數(shù),緩解通信壓力。圖7展示了整個(gè)CE-PBFT的通信過(guò)程。
a)主集群預(yù)準(zhǔn)備??蛻舳送ㄟ^(guò)基于綜合評(píng)價(jià)的聚類完成了共識(shí)階段的分簇,將分簇結(jié)果作為集群信息G,封裝到消息格式為[M-PRE-PREPARE,b,v,t,c,G]的主集群預(yù)準(zhǔn)備消息中,并將消息發(fā)送至主集群的中心全節(jié)點(diǎn),其中b為區(qū)塊,v為視圖編號(hào),t為時(shí)間戳,c為客戶端標(biāo)志。
b)子集群共識(shí)。中心全節(jié)點(diǎn)接收到請(qǐng)求預(yù)準(zhǔn)備消息后,根據(jù)集群信息G得知自身所在子集群,然后發(fā)起子集群共識(shí),共識(shí)過(guò)程分為pre-prepare、prepare、commit三步。
(a)本地子集群中的中心全節(jié)點(diǎn)向子集群中的其他節(jié)點(diǎn)廣播消息格式為〈〈PRE-PREPARE,v,n,G,D(b)〉σi,b〉的子集群預(yù)準(zhǔn)備消息,進(jìn)入pre-prepare階段,其中n為給區(qū)塊b分配的序號(hào)隨機(jī)數(shù),D(b)為區(qū)塊b的摘要,σi為節(jié)點(diǎn)的簽名。(b)當(dāng)節(jié)點(diǎn)接收到子集群預(yù)準(zhǔn)備消息后,需要對(duì)該消息內(nèi)容進(jìn)行驗(yàn)證,除傳統(tǒng)PBFT的驗(yàn)證內(nèi)容外,節(jié)點(diǎn)還需根據(jù)集群信息G驗(yàn)證其是否為自身所在子集群中心全節(jié)點(diǎn)發(fā)來(lái)的消息。若驗(yàn)證通過(guò),則根據(jù)集群信息G向自身所在子集群的其他節(jié)點(diǎn)廣播消息格式為〈PREPARE,v,n,D(b),i〉的準(zhǔn)備消息,進(jìn)入prepare階段,若接收并驗(yàn)證通過(guò)2fs個(gè)本地子集群節(jié)點(diǎn)發(fā)送的準(zhǔn)備消息,則進(jìn)入子集群commit階段,其中i為此節(jié)點(diǎn)的簽名,fs為本地子集群的拜占庭節(jié)點(diǎn)個(gè)數(shù)。(c)節(jié)點(diǎn)向其他節(jié)點(diǎn)廣播發(fā)送消息格式為〈COMMIT,v,n,D(b),i〉的確認(rèn)消息,若接受并驗(yàn)證通過(guò)2fs+1個(gè)本地子集群節(jié)點(diǎn)發(fā)送的確認(rèn)消息,則子集群共識(shí)完成。
c)主集群確認(rèn)。各中心全節(jié)點(diǎn)完成子集群共識(shí)后,代表本地子集群進(jìn)行主集群共識(shí),各中心全節(jié)點(diǎn)向其他中心全節(jié)點(diǎn)廣播消息格式為[M-COMMIT,v,n,D(b),i]的主集群確認(rèn)消息,進(jìn)入主集群確認(rèn)階段。若中心全節(jié)點(diǎn)接收并驗(yàn)證通過(guò)2fm+1個(gè)主集群確認(rèn)信息,則主集群共識(shí)完成,將區(qū)塊寫(xiě)入本地,全局共識(shí)完成,其中fm為主集群的拜占庭節(jié)點(diǎn)個(gè)數(shù)。
全局共識(shí)完成后,客戶端根據(jù)該輪共識(shí)節(jié)點(diǎn)的實(shí)時(shí)性能和共識(shí)行為進(jìn)行綜合評(píng)價(jià)的更新。
2 實(shí)驗(yàn)結(jié)果及分析
本文研究了共識(shí)算法應(yīng)用于實(shí)際物聯(lián)網(wǎng)場(chǎng)景時(shí)存在的多場(chǎng)景應(yīng)用問(wèn)題,考慮了節(jié)點(diǎn)客觀性能的局限,對(duì)共識(shí)造成影響的可能性,提高了共識(shí)效率。本文基于Go語(yǔ)言對(duì)PBFT[8]、G-PBFT[18]、C-PBFT[19]、SBFT[20]與CE-PBFT進(jìn)行了仿真對(duì)比實(shí)驗(yàn),通過(guò)容錯(cuò)性、共識(shí)成功率、通信開(kāi)銷和共識(shí)時(shí)延四個(gè)方面來(lái)驗(yàn)證其性能,假設(shè)網(wǎng)絡(luò)中所有節(jié)點(diǎn)均具有連通性且都滿足共識(shí)條件。具體實(shí)驗(yàn)環(huán)境為Intel CoreTM i9-12900H 2.50 GHz CPU,內(nèi)存8.0 GB,操作系統(tǒng)Linux Ubuntu 20.04,Go語(yǔ)言版本1.17.6。
2.1 容錯(cuò)性分析
容錯(cuò)性是指在共識(shí)過(guò)程中,共識(shí)所能夠承受的最大拜占庭節(jié)點(diǎn)數(shù)量占總共識(shí)節(jié)點(diǎn)數(shù)的比重。傳統(tǒng)PBFT共識(shí)算法最高支持1/3的容錯(cuò),但CE-PBFT共識(shí)算法采用的是基于綜合評(píng)價(jià)模型與聚類分簇,以中心全節(jié)點(diǎn)代表本地子集群進(jìn)行的全局共識(shí)。假設(shè)在某個(gè)子集群內(nèi)節(jié)點(diǎn)均為拜占庭節(jié)點(diǎn)的極端情況下,在主集群共識(shí)時(shí)只會(huì)記為1個(gè)拜占庭中心全節(jié)點(diǎn),將會(huì)造成本地子集群共識(shí)的失敗,但并不會(huì)直接導(dǎo)致全局共識(shí)的失敗,這使得該算法可以容忍更多的拜占庭節(jié)點(diǎn)。
圖8是PBFT與CE-PBFT在不同節(jié)點(diǎn)數(shù)量下最大可容忍拜占庭節(jié)點(diǎn)數(shù)目的變化情況。從圖中可以看出,隨著節(jié)點(diǎn)數(shù)量的增加,CE-PBFT較PBFT算法可以容忍更多的拜占庭節(jié)點(diǎn),且隨著子集群個(gè)數(shù)k的增加,可容忍的拜占庭節(jié)點(diǎn)個(gè)數(shù)有所增加。綜上,CE-PBFT共識(shí)算法有較高的容錯(cuò)性。
2.2 共識(shí)成功率分析
由于設(shè)備性能的缺陷等原因?qū)е伦陨頍o(wú)法按照要求進(jìn)行共識(shí),導(dǎo)致共識(shí)失敗,則共識(shí)成功率是指共識(shí)成功次數(shù)占共識(shí)總次數(shù)的比值。
圖9是當(dāng)節(jié)點(diǎn)數(shù)量分別為40、50、60、70、80、90、100時(shí),在ω1=1的高存儲(chǔ)利用率場(chǎng)景和ω2=1的高網(wǎng)絡(luò)利用率場(chǎng)景下,進(jìn)行100次CE-PBFT(k=10)、PBFT共識(shí)且每次共識(shí)結(jié)束隨機(jī)刷新存儲(chǔ)利用率SU與網(wǎng)絡(luò)利用率NU所得出的共識(shí)成功率。假設(shè)當(dāng)某節(jié)點(diǎn)的存儲(chǔ)利用率或網(wǎng)絡(luò)利用率小于0.3時(shí),該節(jié)點(diǎn)此次共識(shí)將無(wú)法正常進(jìn)行。為了減小誤差,每個(gè)實(shí)驗(yàn)重復(fù)10次,取平均值作為最終結(jié)果。
從圖9可以看出,在不同場(chǎng)景下,CE-PBFT共識(shí)算法的共識(shí)成功率均大于PBFT共識(shí)算法的共識(shí)成功率。這主要是由于CE-PBFT算法根據(jù)權(quán)重與性能指標(biāo)對(duì)節(jié)點(diǎn)篩選,有效地避免了原PBFT算法由于隨機(jī)選取主節(jié)點(diǎn)導(dǎo)致無(wú)法正常進(jìn)行共識(shí)的節(jié)點(diǎn)被選舉成為主節(jié)點(diǎn)的情況發(fā)生。
2.3 通信開(kāi)銷分析
通信開(kāi)銷是指共識(shí)節(jié)點(diǎn)在共識(shí)過(guò)程中相互通信所產(chǎn)生的信息量。假設(shè)參與共識(shí)的節(jié)點(diǎn)數(shù)目為N,N個(gè)節(jié)點(diǎn)被分為k個(gè)子集群。在CE-PBFT中,首先客戶端將主集群預(yù)準(zhǔn)備消息發(fā)送給主集群的中心全節(jié)點(diǎn),通信次數(shù)為k;各中心全節(jié)點(diǎn)接收到消息后驗(yàn)證并發(fā)起子集群共識(shí),子集群預(yù)準(zhǔn)備階段的通信次數(shù)為N-k,準(zhǔn)備階段的通信次數(shù)為k(N/k-1)2,確認(rèn)階段的通信次數(shù)為N(N/k-1)。子集群共識(shí)的總通信次數(shù)T1為
T1=N-k+k(Nk-1)2+N(Nk-1)=2N2k-2N(7)
子集群共識(shí)完成后,主集群確認(rèn)階段的通信次數(shù)T2為
T2=k(k-1)(8)
綜上,CE-PBFT的總通信次數(shù)T3為
T3=k+T1+T2=2N(Nk-1)+k2(9)
為驗(yàn)證本算法在共識(shí)開(kāi)銷方面的優(yōu)越性,表3對(duì)比了PBFT[8]、G-PBFT[18]、C-PBFT[19]、SBFT[20]、CE-PBFT五種算法完成一次共識(shí)所消耗的總通信次數(shù)。
令PBFT與CE-PBFT的通信次數(shù)比為Z,則有
Z=2N(N-1)2N(N/k-1)+k2(10)
由圖10可知,隨著k值的增加,即子集群數(shù)量的增加,比值逐漸增大,這是由于節(jié)點(diǎn)被平均分成k個(gè)子集群,使得CE-PBFT在子集群共識(shí)階段進(jìn)行的是k次少量節(jié)點(diǎn)的平方級(jí)共識(shí)通信,有效地減少了共識(shí)通信次數(shù)。但并不能一味地增加k值,當(dāng)k增大至某一值時(shí),Z達(dá)到最大值隨后下降。這是由于k值并不只代表子集群的數(shù)量,它還決定了主集群中心全節(jié)點(diǎn)的個(gè)數(shù),主集群的中心全節(jié)點(diǎn)個(gè)數(shù)過(guò)多,在主集群共識(shí)階段所需的通信次數(shù)為k(k-1),通信復(fù)雜度O(k2)為平方級(jí),導(dǎo)致通信次數(shù)再次增多。當(dāng)節(jié)點(diǎn)個(gè)數(shù)N為100,子集群個(gè)數(shù)k為20時(shí),PBFT的總通信次數(shù)為19 800,CE-PBFT的總通信次數(shù)為1 200,可得CE-PBFT較PBFT在通信開(kāi)銷方面優(yōu)化了93.9%。
2.4 時(shí)延分析
共識(shí)時(shí)延是指從發(fā)起區(qū)塊共識(shí)到完成所消耗的時(shí)間,是衡量共識(shí)效率的重要指標(biāo)。本文將PBFT的共識(shí)時(shí)延與不同子集群個(gè)數(shù)k的CE-PBFT的共識(shí)時(shí)延進(jìn)行對(duì)比。為減小誤差,每個(gè)實(shí)驗(yàn)重復(fù)10次,取平均值作為最終結(jié)果。如圖11所示,當(dāng)節(jié)點(diǎn)個(gè)數(shù)固定時(shí),在一定閾值內(nèi)增加子集群數(shù)k能有效地降低共識(shí)時(shí)延,提升共識(shí)效率,且隨著節(jié)點(diǎn)數(shù)的增加,在一定閾值內(nèi)子集群數(shù)越多,時(shí)延差距越大,提升的效果越明顯。
此外,圖12還對(duì)比了不同算法完成一次共識(shí)所需的時(shí)長(zhǎng),其中固定N/k=5,即每個(gè)子集群內(nèi)固定有5個(gè)節(jié)點(diǎn)。從圖中可以看出,隨著共識(shí)節(jié)點(diǎn)數(shù)的增加,本文提出的 CE-PBFT算法完成共識(shí)的時(shí)延最短,且隨著節(jié)點(diǎn)數(shù)目的增加與PBFT、G-PBFT、C-PBFT、SBFT算法之間的差距逐漸增大。當(dāng)節(jié)點(diǎn)個(gè)數(shù)N為100,子集群個(gè)數(shù)k=20時(shí),PBFT共識(shí)時(shí)延為1 035 ms,CE-PBFT的共識(shí)時(shí)延為126 ms,可知CE-PBFT較PBFT在共識(shí)時(shí)延方面優(yōu)化了87.8%。
3 結(jié)束語(yǔ)
本文提出一種基于綜合評(píng)價(jià)的改進(jìn)實(shí)用拜占庭容錯(cuò)算法CE-PBFT,解決了物聯(lián)網(wǎng)多場(chǎng)景中應(yīng)用PBFT算法時(shí)無(wú)法隨著應(yīng)用場(chǎng)景變化進(jìn)行節(jié)點(diǎn)篩選條件的動(dòng)態(tài)調(diào)節(jié)選出適合當(dāng)前場(chǎng)景節(jié)點(diǎn),同時(shí)算法本身通信開(kāi)銷較高,共識(shí)時(shí)延較長(zhǎng)等問(wèn)題。實(shí)驗(yàn)結(jié)果表明,CE-PBFT具有較高容錯(cuò)性的同時(shí),在通信開(kāi)銷和共識(shí)時(shí)延方面較PBFT、G-PBFT、C-PBFT、SBFT這四種BFT類共識(shí)算法更加優(yōu)越。
然而,CE-PBFT算法在共識(shí)階段需要客戶端將集群信息發(fā)送給中心全節(jié)點(diǎn),而物聯(lián)網(wǎng)中的節(jié)點(diǎn)數(shù)目是眾多的,這可能導(dǎo)致在發(fā)布出塊請(qǐng)求時(shí)集群消息條目過(guò)大,增加了網(wǎng)絡(luò)負(fù)載。下一步將對(duì)降低拜占庭節(jié)點(diǎn)的出現(xiàn)在共識(shí)的概率、提高共識(shí)的安全性方面繼續(xù)研究。
參考文獻(xiàn):
[1]Nordrum A.The Internet of fewer Things[News][J].IEEE Spectrum,2016,53(10):12-13.
[2]Ogawa K,Kanai K,Nakamura K,et al.IoT device virtualization for efficient resource utilization in smart city IoT platform[C]//Proc of IEEE International Conference on Pervasive Computing and Communications.Piscataway,NJ:IEEE Press,2019:419-422.
[3]Xie Junfeng,Tang Helen,Huang Tao,et al.A survey of blockchain technology applied to smart cities:research issues and challenges[J].IEEE Communications Surveys & Tutorials,2019,21(3):2794-2830.
[4]Ammi M,Alarabi S,Benkhelifa E.Customized blockchain-based architecture for secure smart home for lightweight IoT[J].Information Processing & Management,2021,58(3):102482.
[5]Nakamoto S.Bitcoin:a peer-to-peer electronic cash system[EB/OL].[2023-08-10].https://bitcoin.org/bitcoin.pdf.
[6]Saleh F.Blockchain without waste:proof-of-stake[J].The Review of Financial Studies,2021,34(3):1156-1190.
[7]Larimer D.DPOS consensus algorithm:the missing white paper[EB/OL].(2017-05-28).https://moreequalanimals.com/posts/dpos-consensus-algorithm-whitepaper.
[8]Castro M,Liskov B.Practical Byzantine fault tolerance[C]//Proc of the 3rd Symposium on Operating Systems Design and Implementation.Berkeley,CA:USENIX Association,1999:173-186.
[9]蔡曉晴,鄧堯,張亮,等.區(qū)塊鏈原理及其核心技術(shù)[J].計(jì)算機(jī)學(xué)報(bào),2021,44(1):84-131.(Cai Xiaoqing,Deng Yao,Zhang Liang,et al.The principle and core technology of blockchain[J].Chinese Journal of Computers,2021,44(1):84-131.)
[10]田志宏,趙金東.面向物聯(lián)網(wǎng)的區(qū)塊鏈共識(shí)機(jī)制綜述[J].計(jì)算機(jī)應(yīng)用,2021,41(4):917-929.(Tian Zhihong,Zhao Jindong.Overview of blockchain consensus mechanism for Internet of Things[J].Journal of Computer Applications,2021,41(4):917-929.)
[11]Salimitari M,Chatterjee M,F(xiàn)allah Y.A survey on consensus methods in blockchain for resource-constrained IoT networks[J].Internet of Things,2020,11(5):100212.
[12]丁庭琛,陳世平.基于信用分級(jí)的PBFT共識(shí)算法改進(jìn)方案[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2020,29(9):255-259.(Ding Tingchen,Chen Shiping.Improved PBFT consensus mechanism based on credit-layered mechanism[J].Computer Systems & Applications,2020,29(9):255-259.)
[13]周健,張杰,閆石,等.基于動(dòng)態(tài)信任的區(qū)塊鏈激勵(lì)共識(shí)機(jī)制研究[J].計(jì)算機(jī)應(yīng)用研究,2021,38(11):3231-3235,3248.(Zhou Jian,Zhang Jie,Yan Shi,et al.Study on consensus mechanism of blockchain motivation based on dynamic trust[J].Application Research of Computers,2021,38(11):3231-3235,3248.)
[14]Li Wenyu,F(xiàn)eng Chenglin,Zhang Lei,et al.A scalable multi-layer PBFT consensus for blockchain[J].IEEE Trans on Parallel and Distributed Systems,2020,32(5):1146-1160.
[15]Yang Jian,Jia Zhenhong,Su Ruiguo,et al.Improved fault-tolerant consensus based on the PBFT algorithm[J].IEEE Access,2022,10:30274-30283.
[16]Chen Runyu,Wang Lunwen,Zhu Rangang,et al.An improved practical Byzantine fault tolerance algorithm based on vague sets and random numbers[C]//Proc of the 7th International Conference on Intelligent Computing and Signal Processing.Piscataway,NJ:IEEE Press,2022:151-155.
[17]劉肖飛.基于動(dòng)態(tài)授權(quán)的拜占庭容錯(cuò)共識(shí)算法的區(qū)塊鏈性能改進(jìn)研究[D].杭州:浙江大學(xué),2017.(Liu Xiaofei.Research on performance improvement of blockchain based on dynamic authorization of Byzantine fault tolerance consensus algorithm[D].Hangzhou:Zhejiang University,2017.)
[18]涂園超,陳玉玲,李濤,等.基于信譽(yù)投票的PBFT改進(jìn)方案[J].應(yīng)用科學(xué)學(xué)報(bào),2021,39(1):79-89.(Tu Yuanchao,Chen Yuling,Li Tao,et al.Improved PBFT scheme based on reputation voting[J].Journal of Applied Sciences,2021,39(1):79-89.)
[19]劉煒,阮敏捷,佘維,等.面向物聯(lián)網(wǎng)的PBFT優(yōu)化共識(shí)算法[J].計(jì)算機(jī)科學(xué),2021,48(11):151-158.(Liu Wei,Wan Minjie,She Wei,et al.PBFT optimized consensus algorithm for Internet of Things[J].Computer Science,2021,48(11):151-158.)
[20]黃保華,彭麗,趙偉宏,等.基于可驗(yàn)證隨機(jī)函數(shù)的實(shí)用拜占庭共識(shí)算法[J].計(jì)算機(jī)科學(xué),2023,50(S1):737-742.(Huang Baohua,Peng Li,Zhao Weihong,et al.Practical Byzantine consensus algorithm based on verifiable random functions[J].Computer Science,2023,50(S1):737-742.)
[21]韓亞敏.面向物聯(lián)網(wǎng)的區(qū)塊鏈系統(tǒng)性能分析與優(yōu)化[D].南京:南京郵電大學(xué),2022.(Han Yamin.Performance analysis and optimization of blockchain system for the Internet of Things[D].Nanjing:Nanjing University of Posts & Telecommunications,2022.)