顧 鑫,戴 歡,2+,唐 毅,2,孫 立,索梓翔
(1.蘇州科技大學(xué) 電子與信息工程學(xué)院,江蘇 蘇州 215009;2.蘇州和數(shù)區(qū)塊鏈應(yīng)用研究院有限公司,江蘇 蘇州 215000)
物聯(lián)網(wǎng)技術(shù)[1]仍有很多的問(wèn)題亟待解決。例如,物聯(lián)網(wǎng)設(shè)備的數(shù)據(jù)安全性等級(jí)較低,容易成為各種攻擊的對(duì)象[2]。目前,Sybil attack攻擊[3]是常見(jiàn)的物聯(lián)網(wǎng)設(shè)備攻擊。此外,傳統(tǒng)的物聯(lián)網(wǎng)系統(tǒng)通常采用中心服務(wù)器進(jìn)行數(shù)據(jù)處理,這使得系統(tǒng)內(nèi)物聯(lián)網(wǎng)設(shè)備的連通性較弱,設(shè)備間通信的安全性較低[4]。此外,數(shù)據(jù)隱私也是物聯(lián)網(wǎng)系統(tǒng)需要面對(duì)的一個(gè)難題[5]。
區(qū)塊鏈本質(zhì)上是一種分布式的數(shù)據(jù)庫(kù)技術(shù),利用密碼學(xué)、點(diǎn)對(duì)點(diǎn)通信、共識(shí)算法等多項(xiàng)技術(shù)來(lái)解決現(xiàn)有中心化機(jī)制存在的數(shù)據(jù)壟斷問(wèn)題和數(shù)據(jù)安全問(wèn)題,共同維護(hù)全網(wǎng)數(shù)據(jù)的有效性和安全性,已在車(chē)聯(lián)網(wǎng)[6]、智慧醫(yī)療[7]等領(lǐng)域展開(kāi)應(yīng)用,在未來(lái)物聯(lián)網(wǎng)系統(tǒng)的建設(shè)中具有更廣闊的應(yīng)用前景[8]。
針對(duì)基于區(qū)塊鏈的物聯(lián)網(wǎng)系統(tǒng)存在通信復(fù)雜度高、系統(tǒng)吞吐量低、物聯(lián)網(wǎng)設(shè)備易受攻擊等問(wèn)題,本文提出一種基于可信位置和時(shí)間的雙層拜占庭容錯(cuò)共識(shí)機(jī)制,即CBFT共識(shí)機(jī)制。通過(guò)將物聯(lián)網(wǎng)系統(tǒng)構(gòu)建在一個(gè)分布式、多層次的區(qū)塊鏈共識(shí)機(jī)制模型上,提高物聯(lián)網(wǎng)設(shè)備參與共識(shí)的效率,減少共識(shí)過(guò)程的通信次數(shù),增加系統(tǒng)整體的數(shù)據(jù)吞吐量。
對(duì)于分布式系統(tǒng)中的拜占庭將軍問(wèn)題[9],工作量證明算法(proof-of-work,PoW)[10]需要具有高強(qiáng)度計(jì)算能力的工作節(jié)點(diǎn),PBFT共識(shí)算法則相對(duì)簡(jiǎn)明有效,對(duì)節(jié)點(diǎn)的算力要求不高。PBFT共識(shí)過(guò)程如圖1所示[11],其中,Client是客戶(hù)端,Replica0是主節(jié)點(diǎn),Replica1和Replica2是從節(jié)點(diǎn),Replica3是無(wú)效節(jié)點(diǎn)。
圖1 PBFT共識(shí)過(guò)程
PBFT共識(shí)算法分為以下幾個(gè)部分:
(1)request階段:主節(jié)點(diǎn)Replica0接收客戶(hù)端Client發(fā)送的消息請(qǐng)求。
(2)pre-prepare階段:從節(jié)點(diǎn)Replica1和Replica2接收并確認(rèn)主節(jié)點(diǎn)Replica0發(fā)起對(duì)應(yīng)的預(yù)準(zhǔn)備消息,進(jìn)入prepare階段。
(3)prepare階段:從節(jié)點(diǎn)Replica1和Replica2向所有節(jié)點(diǎn)發(fā)送準(zhǔn)備消息,若節(jié)點(diǎn)Replica接收到并驗(yàn)證不同節(jié)點(diǎn)的預(yù)準(zhǔn)備和準(zhǔn)備消息數(shù)量超過(guò)2n+1個(gè),則進(jìn)入commit階段。
(4)commit階段:節(jié)點(diǎn)Replica向其它節(jié)點(diǎn)廣播確認(rèn)消息,其它節(jié)點(diǎn)接收并驗(yàn)證廣播消息,若節(jié)點(diǎn)Replica接收的確認(rèn)消息數(shù)量達(dá)到2n+1個(gè),則進(jìn)入reply階段。
(5)reply階段:共識(shí)集合中的節(jié)點(diǎn)Replica會(huì)將最終的反饋消息發(fā)送給客戶(hù)端,若客戶(hù)端接收到的n+1個(gè)相同的回復(fù)消息,則客戶(hù)端的請(qǐng)求已經(jīng)達(dá)成全網(wǎng)共識(shí)。
PBFT共識(shí)算法雖然相較于其它共識(shí)算法不需要消耗大量算力資源,且共識(shí)速度較快,但共識(shí)節(jié)點(diǎn)有限。當(dāng)大量節(jié)點(diǎn)加入?yún)^(qū)塊鏈系統(tǒng)時(shí),PBFT共識(shí)算法在準(zhǔn)備和確認(rèn)階段,需要所有節(jié)點(diǎn)全網(wǎng)廣播信息,導(dǎo)致單位時(shí)間的通信傳輸量和通信次數(shù)大大增加,系統(tǒng)的數(shù)據(jù)吞吐量卻反而降低。
目前,針對(duì)PBFT共識(shí)算法的改進(jìn)研究主要集中在提高參與共識(shí)的節(jié)點(diǎn)質(zhì)量和共識(shí)結(jié)構(gòu)的優(yōu)化兩個(gè)方面[12]。
提高共享節(jié)點(diǎn)質(zhì)量方面,文獻(xiàn)[13]提供了一種委托人信任模型(EigenTrust-Model),通過(guò)評(píng)價(jià)模型,減少惡意節(jié)點(diǎn)的共識(shí)參與度,從而提升共識(shí)的效率,增加系統(tǒng)整體的吞吐量。文獻(xiàn)[14,15]通過(guò)搭建角色模型的方式,投票評(píng)價(jià)節(jié)點(diǎn)的可信度,篩選出可信節(jié)點(diǎn)進(jìn)行共識(shí),減少共識(shí)算法的冗余。文獻(xiàn)[16]利用節(jié)點(diǎn)信任模型(PeerTrust-Model),提高參與共識(shí)的節(jié)點(diǎn)可信度,并搭建三鏈結(jié)構(gòu)提升區(qū)塊鏈的共識(shí)效率,減少PBFT的通信復(fù)雜度。文獻(xiàn)[17]面向物聯(lián)網(wǎng)場(chǎng)景,利用改進(jìn)后的CSMA/CA協(xié)議代替原有的TCP協(xié)議,提升設(shè)備通信速度,降低設(shè)備的共識(shí)響應(yīng)時(shí)間,從而保證共識(shí)的速度。文獻(xiàn)[18]通過(guò)增加屬性集的方式,利用評(píng)價(jià)機(jī)制動(dòng)態(tài)賦予或刪除節(jié)點(diǎn)屬性,對(duì)誠(chéng)實(shí)屬性的集群進(jìn)行共識(shí),以降低系統(tǒng)的通信復(fù)雜度。
共識(shí)結(jié)構(gòu)優(yōu)化方面,文獻(xiàn)[19]提出使用可拓展的雙層PBFT共識(shí)協(xié)議,降低單層PBFT的通信次數(shù)。文獻(xiàn)[20]提出使用多層PBFT共識(shí)機(jī)制降低單層與固定雙層共識(shí)中的通信量,并得出通信復(fù)雜度達(dá)到最低時(shí)的每一層的節(jié)點(diǎn)個(gè)數(shù)與通信次數(shù)。文獻(xiàn)[21]提出基于聚類(lèi)算法的改進(jìn)PBFT共識(shí)機(jī)制,利用聚類(lèi)算法根據(jù)節(jié)點(diǎn)的特征進(jìn)行聚類(lèi),并將改進(jìn)后的共識(shí)模型用于聚類(lèi)后的模型,以提高共識(shí)效率。文獻(xiàn)[22]提出使用環(huán)簽名技術(shù),簽名發(fā)起者自發(fā)組成環(huán),環(huán)內(nèi)用戶(hù)根據(jù)每次簽名的反饋消息情況進(jìn)行調(diào)整,再次組成環(huán),以減少視圖切換的頻率,降低共識(shí)耗時(shí)。
本文所提的基于CBFT的物聯(lián)網(wǎng)系統(tǒng)架構(gòu)如圖2所示,系統(tǒng)架構(gòu)主要分為3層:感知層、共識(shí)層和應(yīng)用層。每層的功能如下:
圖2 區(qū)塊鏈與物聯(lián)網(wǎng)設(shè)備的系統(tǒng)架構(gòu)
(1)感知層:該層由具有一定計(jì)算與存儲(chǔ)能力的低功耗底層物聯(lián)網(wǎng)設(shè)備組成,例如溫濕度傳感器、煙霧傳感器、紅外傳感器等。該層設(shè)備稱(chēng)為輕節(jié)點(diǎn)(Light Node),具有向全節(jié)點(diǎn)和強(qiáng)節(jié)點(diǎn)即邊緣服務(wù)器發(fā)送交易請(qǐng)求和交易信息,存儲(chǔ)部分自身設(shè)備信息的功能。由輕節(jié)點(diǎn)組成的集合稱(chēng)為從集合。輕節(jié)點(diǎn)具有提出普通交易的權(quán)限,普通交易主要用于根據(jù)不同的底層設(shè)備應(yīng)用要求,改變這條鏈上的總賬本狀態(tài)。比如,各種類(lèi)型傳感器等。
(2)共識(shí)層:該層由具有計(jì)算與存儲(chǔ)邊緣服務(wù)器組成。邊緣服務(wù)器在該層中根據(jù)信用評(píng)價(jià)的等級(jí)劃分為強(qiáng)節(jié)點(diǎn)(Junior Node)與全節(jié)點(diǎn)(Senior Node)。由強(qiáng)節(jié)點(diǎn)組成的集合稱(chēng)為子集合,由全節(jié)點(diǎn)組成的集合稱(chēng)為父集合。全節(jié)點(diǎn)是一定范圍內(nèi)性能最好的邊緣服務(wù)器,參與父集合和子集合兩個(gè)集合的共識(shí)過(guò)程。強(qiáng)節(jié)點(diǎn)是性能次于全節(jié)點(diǎn)的邊緣服務(wù)器,只參與子集合的共識(shí)過(guò)程。全節(jié)點(diǎn)與強(qiáng)節(jié)點(diǎn)具有提出配置交易的權(quán)限,配置交易用于改變區(qū)塊鏈的區(qū)塊配置。比如,更新全節(jié)點(diǎn)或強(qiáng)節(jié)點(diǎn)的信用值以改變當(dāng)前的集合結(jié)構(gòu)。
(3)應(yīng)用層:感知層與共識(shí)層都服務(wù)于一個(gè)物聯(lián)網(wǎng)系統(tǒng),該系統(tǒng)利用物聯(lián)網(wǎng)設(shè)備收集各類(lèi)感知數(shù)據(jù),確保管理者能夠及時(shí)監(jiān)控設(shè)備信息。系統(tǒng)中記錄了設(shè)備的數(shù)量、類(lèi)型和地理位置信息。此外,管理后臺(tái)的管理員賬號(hào)具有對(duì)設(shè)備和其它用戶(hù)的管理權(quán)限,能夠查看設(shè)備當(dāng)前的狀態(tài)等,并為其它用戶(hù)授予查詢(xún)?cè)撛O(shè)備信息的權(quán)限。系統(tǒng)中需要用到的符號(hào)及說(shuō)明見(jiàn)表1。
表1 相關(guān)符號(hào)說(shuō)明
針對(duì)上述基于區(qū)塊鏈的物聯(lián)網(wǎng)系統(tǒng)可能存在惡意偽裝設(shè)備攻擊和高共識(shí)響應(yīng)延遲,提出了一種基于位置和時(shí)間的可信雙層PBFT共識(shí)機(jī)制。該共識(shí)機(jī)制周期分為3個(gè)階段:初始階段、共識(shí)階段和激勵(lì)階段。
初始階段包括預(yù)分配和遴選兩個(gè)部分。
(1)預(yù)分配:為每個(gè)強(qiáng)節(jié)點(diǎn)分配密鑰,分配初始信用幣等。并根據(jù)GeoHash(geographical hash,GeoHash)協(xié)議將所有的強(qiáng)節(jié)點(diǎn)劃分成k個(gè)子集合。GeoHash編碼長(zhǎng)度越長(zhǎng)所表示的位置越精確,兩個(gè)編碼的相似度越高代表兩個(gè)位置離得越近。最后,各個(gè)子集合中Token最多的節(jié)點(diǎn)被選為子集合中的全節(jié)點(diǎn)。由此,邊緣計(jì)算層構(gòu)成一個(gè)雙層多中心化的網(wǎng)絡(luò)結(jié)構(gòu)。
(2)遴選:根據(jù)邊緣服務(wù)器的工作特性,輕節(jié)點(diǎn)在規(guī)定時(shí)間內(nèi)發(fā)送一定數(shù)量的位置信息和時(shí)間戳信息給距離近的強(qiáng)節(jié)點(diǎn),形成以強(qiáng)節(jié)點(diǎn)為中心、四周分布著輕節(jié)點(diǎn)的從集合。從集合中的強(qiáng)節(jié)點(diǎn)根據(jù)輕節(jié)點(diǎn)發(fā)送的GeoHash和時(shí)間戳,生成位置定時(shí)器(locational clock,LC),位置定時(shí)器見(jiàn)表2,通過(guò)位置定時(shí)器對(duì)從集合中的輕節(jié)點(diǎn)進(jìn)行遴選,挑選出誠(chéng)信節(jié)點(diǎn),參與共識(shí)過(guò)程。
表2 位置定時(shí)器
強(qiáng)節(jié)點(diǎn)遴選輕節(jié)點(diǎn)的過(guò)程如算法1所示,G(l,t1,t2,n) 是一個(gè)功能函數(shù),負(fù)責(zé)將位置信息、時(shí)間戳和信息數(shù)量封裝成幀。如果出現(xiàn)發(fā)送的信息數(shù)量少于信息閾值N,或者邏輯位置映射不同或者時(shí)間戳中出現(xiàn)相同的初始時(shí)間戳或者相同的當(dāng)前時(shí)間戳的情況,那么這個(gè)輕節(jié)點(diǎn)將會(huì)被認(rèn)定為不可信。
算法1:偽代碼的算法1名稱(chēng)
輸入:(L,G(l,t1,t2,n),N)
輸出:l[status]
(1)while IsJuniorNode() do
(2) for eachl∈Ldo
(3)g←G(l,t1,t2,n)
(4) while Len(l)≥Ndo
(5) for eachg1,g2∈gdo
(6) ifg1[loc]≠g2[loc]org1[t1]=g2[t1]org1[t2]=g2[t2]or Len(t2-t1)≤24 h
(7) then
(8)l[status]←false
(9) break
(10) end if
(11)l[status]←true
(12) end for
(13)end while
經(jīng)過(guò)初始階段,輕節(jié)點(diǎn)通過(guò)遴選被分為k個(gè)子集合,每個(gè)集合中都具有一個(gè)強(qiáng)節(jié)點(diǎn),強(qiáng)節(jié)點(diǎn)組成的每個(gè)子集合中都有一個(gè)信用值最高即Token最多的全節(jié)點(diǎn),為共識(shí)做好了準(zhǔn)備。
整個(gè)共識(shí)過(guò)程如圖3所示。
圖3 CBFT共識(shí)過(guò)程
S-prepare:子集合中的全節(jié)點(diǎn)在驗(yàn)證并接收子集合中數(shù)量超過(guò)2numi+1的準(zhǔn)備消息后,向父集合的其它全節(jié)點(diǎn)發(fā)送準(zhǔn)備消息,并接收其它全節(jié)點(diǎn)的準(zhǔn)備消息,消息格式為 <
S-commit:父集合的全節(jié)點(diǎn)向其它的全節(jié)點(diǎn)發(fā)送確認(rèn)消息,確認(rèn)消息格式為<
激勵(lì)階段分為T(mén)oken獎(jiǎng)勵(lì)與信用重置。僅適用于強(qiáng)節(jié)點(diǎn)與全節(jié)點(diǎn)。
(1)Token獎(jiǎng)勵(lì):Token值的大小代表了節(jié)點(diǎn)信用的高低,是表示節(jié)點(diǎn)可靠性的一種方式,這里使用R代表節(jié)點(diǎn)的Token值。在一輪共識(shí)完成后,系統(tǒng)根據(jù)激勵(lì)模型對(duì)節(jié)點(diǎn)的行為獎(jiǎng)勵(lì)一定數(shù)量的Token。子集合中每個(gè)強(qiáng)節(jié)點(diǎn)的R值具體計(jì)算如下
(1)
(2)
Δt為第i個(gè)子集合中第m個(gè)強(qiáng)節(jié)點(diǎn)的共識(shí)時(shí)間,ΔT為第i個(gè)子集合所有強(qiáng)節(jié)點(diǎn)的共識(shí)時(shí)間
(3)
k為子集合中強(qiáng)節(jié)點(diǎn)的數(shù)量
(4)
當(dāng)強(qiáng)節(jié)點(diǎn)在第二輪共識(shí),出現(xiàn)發(fā)送交易速度過(guò)慢或者離線的情況時(shí),R值會(huì)隨著共識(shí)時(shí)間的增加而減少。當(dāng)r1和r2不發(fā)生變化時(shí),當(dāng)前共識(shí)下R值越高,強(qiáng)節(jié)點(diǎn)所得到的Token獎(jiǎng)勵(lì)越多。
(2)信用重置:對(duì)R值過(guò)低或者過(guò)高的節(jié)點(diǎn)進(jìn)行信用恢復(fù)。
按照節(jié)點(diǎn)的R值賦予節(jié)點(diǎn)等級(jí),如表3,x,y,z為變更等級(jí)的閾值,具體取值根據(jù)系統(tǒng)對(duì)邊緣服務(wù)器效率的要求設(shè)置。
表3 節(jié)點(diǎn)信用級(jí)別
當(dāng)節(jié)點(diǎn)的R值低于x時(shí),節(jié)點(diǎn)仍可以繼續(xù)發(fā)送交易,但從下一周期開(kāi)始,該節(jié)點(diǎn)的R值將被重置為c。子集合內(nèi)連續(xù)兩次擔(dān)任全節(jié)點(diǎn)或者R值高于z的節(jié)點(diǎn),其R值被重置為x并標(biāo)識(shí)。標(biāo)識(shí)后的節(jié)點(diǎn)在下面兩個(gè)周期中不能參與父集合的共識(shí)過(guò)程。在兩個(gè)周期后,標(biāo)記節(jié)點(diǎn)的信用值重置為c,重新參與共識(shí)過(guò)程。重置信用能夠激勵(lì)信用低的節(jié)點(diǎn)規(guī)范共識(shí)行為以獲得更多的Token獎(jiǎng)勵(lì),并防止高信用節(jié)點(diǎn)出現(xiàn)中心化的問(wèn)題。
第一個(gè)周期結(jié)束時(shí),每個(gè)子集合中R值最高的強(qiáng)節(jié)點(diǎn)擔(dān)任全節(jié)點(diǎn)。從第二個(gè)周期開(kāi)始,由全節(jié)點(diǎn)負(fù)責(zé)代表子集合在父集合內(nèi)進(jìn)行共識(shí)。
本文以共識(shí)耗時(shí)和系統(tǒng)吞吐量作為指標(biāo),分析CBFT共識(shí)機(jī)制與傳統(tǒng)PBFT共識(shí)算法的性能。共識(shí)耗時(shí)是衡量改進(jìn)后的共識(shí)算法和區(qū)塊鏈性能的重要指標(biāo)。吞吐量是系統(tǒng)處理事務(wù)能力的重要指標(biāo)。
實(shí)驗(yàn)使用的Fabric版本為Fabric0.6,運(yùn)行環(huán)境為Intel i7-10875H CPU 2.30 GHz和16 GB內(nèi)存,操作系統(tǒng)為Ubantu server20.04,軟件版本為Docker version 20.10.6,build 370c289。
本文中計(jì)算共識(shí)耗時(shí)是輕節(jié)點(diǎn)從發(fā)送交易到交易被打包成區(qū)塊并上鏈發(fā)送到云服務(wù)器所消耗的時(shí)長(zhǎng)。
共識(shí)響應(yīng)時(shí)延是共識(shí)耗時(shí)的重要部分,從強(qiáng)節(jié)點(diǎn)發(fā)出共識(shí)請(qǐng)求到最后一個(gè)共識(shí)節(jié)點(diǎn)響應(yīng)請(qǐng)求為完整的共識(shí)響應(yīng)過(guò)程。共識(shí)響應(yīng)時(shí)延的最大和最小值分別表示共識(shí)節(jié)點(diǎn)中最快和最慢的共識(shí)響應(yīng)時(shí)間。如圖4所示,PBFT共識(shí)算法面對(duì)強(qiáng)節(jié)點(diǎn)數(shù)量少的共識(shí)網(wǎng)絡(luò)時(shí),共識(shí)響應(yīng)時(shí)間并不會(huì)發(fā)生明顯變化。但隨著強(qiáng)節(jié)點(diǎn)數(shù)量的不斷增加,共識(shí)響應(yīng)時(shí)間會(huì)產(chǎn)生明顯變化。當(dāng)強(qiáng)節(jié)點(diǎn)數(shù)量不斷增加時(shí),節(jié)點(diǎn)間的通信次數(shù)成倍增加,使得共識(shí)響應(yīng)時(shí)延顯著增加。而CBFT共識(shí)算法面對(duì)強(qiáng)節(jié)點(diǎn)數(shù)量少的共識(shí)網(wǎng)絡(luò)時(shí),平均共識(shí)響應(yīng)時(shí)間與PBFT相近。當(dāng)強(qiáng)節(jié)點(diǎn)數(shù)量的不斷增加時(shí),CBFT通過(guò)集合內(nèi)與集合間共識(shí)的方式,減少?gòu)?qiáng)節(jié)點(diǎn)間的通信次數(shù),使得共識(shí)響應(yīng)時(shí)延顯著降低。
圖4 PBFT共識(shí)響應(yīng)時(shí)延最大和最小值
如圖5所示,CBFT在面對(duì)數(shù)量較多的強(qiáng)節(jié)點(diǎn)時(shí),利用雙層共識(shí)的特點(diǎn),提升全節(jié)點(diǎn)的比例,提高全節(jié)點(diǎn)的共識(shí)參與度,增加子集合間的通信次數(shù),降低強(qiáng)節(jié)點(diǎn)的共識(shí)次數(shù),提升共識(shí)響應(yīng)速度。
圖5 CBFT共識(shí)響應(yīng)時(shí)延
如圖6所示,PBFT算法的共識(shí)耗時(shí)隨著輕節(jié)點(diǎn)數(shù)量的不斷增加而成倍增加。當(dāng)參與共識(shí)的輕節(jié)點(diǎn)數(shù)量控制在文獻(xiàn)[4,16]時(shí),PBFT共識(shí)算法能夠保證共識(shí)效率,一旦超過(guò)閾值,其共識(shí)效率將得不到基本保證。而CBFT算法的共識(shí)耗時(shí)隨著輕節(jié)點(diǎn)數(shù)量的增加卻保持相對(duì)穩(wěn)定。當(dāng)強(qiáng)節(jié)點(diǎn)數(shù)量不變時(shí),強(qiáng)節(jié)點(diǎn)依據(jù)位置定時(shí)器遴選出誠(chéng)實(shí)的輕節(jié)點(diǎn),共識(shí)過(guò)程只在交易所在的子集合和父集合進(jìn)行,系統(tǒng)的共識(shí)耗時(shí)不會(huì)受到輕節(jié)點(diǎn)數(shù)量的影響。
圖6 PBFT和CBFT共識(shí)耗時(shí)對(duì)比
實(shí)驗(yàn)選取100個(gè)輕節(jié)點(diǎn)和16個(gè)強(qiáng)節(jié)點(diǎn),其中輕節(jié)點(diǎn)分為20個(gè)惡意節(jié)點(diǎn)或故障節(jié)點(diǎn),80個(gè)正常節(jié)點(diǎn)。強(qiáng)節(jié)點(diǎn)均為誠(chéng)實(shí)節(jié)點(diǎn)。
如圖7所示,當(dāng)節(jié)點(diǎn)中出現(xiàn)故障節(jié)點(diǎn)和惡意節(jié)點(diǎn)時(shí),PBFT相較于CBFT算法不能有效識(shí)別故障節(jié)點(diǎn)和惡意節(jié)點(diǎn),無(wú)法保證輕節(jié)點(diǎn)發(fā)送的交易質(zhì)量,降低系統(tǒng)安全性的同時(shí),系統(tǒng)吞吐量下降。
如圖8所示,PBFT算法的吞吐量易受節(jié)點(diǎn)數(shù)量的影響。節(jié)點(diǎn)數(shù)量增加時(shí),節(jié)點(diǎn)交易質(zhì)量無(wú)法得到保證,系統(tǒng)產(chǎn)生算力冗余,吞吐量顯著下降。而當(dāng)強(qiáng)節(jié)點(diǎn)和全節(jié)點(diǎn)數(shù)量穩(wěn)定不變時(shí),CBFT算法的吞吐量在不受節(jié)點(diǎn)質(zhì)量影響的同時(shí),隨著輕節(jié)點(diǎn)數(shù)量的增加而保持相對(duì)穩(wěn)定。
圖8 PBFT和CBFT系統(tǒng)吞吐量對(duì)比
本文旨在針對(duì)基于傳統(tǒng)PBFT共識(shí)算法的物聯(lián)網(wǎng)系統(tǒng)存在共識(shí)耗時(shí)高、通信開(kāi)銷(xiāo)大的問(wèn)題,提出了CBFT共識(shí)機(jī)制。利用緣服務(wù)器的特性,將距離近的物聯(lián)網(wǎng)設(shè)備組成從集合,依據(jù)接收到的信息對(duì)從集合中的設(shè)備進(jìn)行遴選,降低故障節(jié)點(diǎn)或惡意節(jié)點(diǎn)加入共識(shí)的可能性,減少底層的通信次數(shù)與通信開(kāi)銷(xiāo),進(jìn)一步增加可信設(shè)備的共識(shí)參與度,提高參與共識(shí)的交易質(zhì)量。同時(shí),通過(guò)改進(jìn)的雙層共識(shí)結(jié)構(gòu),降低邊緣服務(wù)器之間的通信次數(shù),降低共識(shí)的耗時(shí)。最后,通過(guò)代幣獎(jiǎng)勵(lì)和信用重置的激勵(lì)機(jī)制,提高系統(tǒng)處理大批量數(shù)據(jù)的能力,提升系統(tǒng)的數(shù)據(jù)吞吐量。