陳友榮 章 陽(yáng) 陳 浩 韓 蒙 劉半藤 任條娟*
①(浙江樹(shù)人大學(xué)信息科技學(xué)院 杭州 310015)
②(常州大學(xué)計(jì)算機(jī)與人工智能學(xué)院 常州 213164)
③(浙江大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 杭州 310013)
④(浙江大學(xué)濱江研究院 杭州 310053)
隨著自動(dòng)駕駛產(chǎn)業(yè)和車(chē)聯(lián)網(wǎng)的發(fā)展,車(chē)聯(lián)網(wǎng)節(jié)點(diǎn)產(chǎn)生大量且類(lèi)型不同的數(shù)據(jù)。為了提高行車(chē)安全性和智能交通系統(tǒng)的服務(wù)質(zhì)量,車(chē)聯(lián)網(wǎng)節(jié)點(diǎn)需要進(jìn)行數(shù)據(jù)共享,但是在數(shù)據(jù)共享方面車(chē)聯(lián)網(wǎng)面臨巨大的安全挑戰(zhàn)。若車(chē)聯(lián)網(wǎng)采用集中式架構(gòu),則基站存在被惡意入侵的風(fēng)險(xiǎn),導(dǎo)致車(chē)聯(lián)網(wǎng)節(jié)點(diǎn)數(shù)據(jù)被竊取,因此部分車(chē)聯(lián)網(wǎng)節(jié)點(diǎn)選擇不進(jìn)行數(shù)據(jù)共享。車(chē)聯(lián)網(wǎng)也可選擇分散式架構(gòu)來(lái)降低基站被入侵所帶來(lái)的風(fēng)險(xiǎn),但是其節(jié)點(diǎn)仍存在安全威脅,無(wú)法從根本上解決數(shù)據(jù)被竊取等問(wèn)題??傊?,上述挑戰(zhàn)會(huì)對(duì)車(chē)聯(lián)網(wǎng)的數(shù)據(jù)共享產(chǎn)生不利影響,甚至形成數(shù)據(jù)“孤島”的困境,阻礙車(chē)聯(lián)網(wǎng)的發(fā)展[1,2]。由于區(qū)塊鏈技術(shù)中節(jié)點(diǎn)遵循同一記賬交易規(guī)則并在一致性共識(shí)算法下達(dá)成一致意見(jiàn),具有去中心化和匿名性等特點(diǎn),因此可將區(qū)塊鏈技術(shù)應(yīng)用到車(chē)聯(lián)網(wǎng)中,建立安全、可信賴(lài)和去中心化的智能交通生態(tài)系統(tǒng),以解決車(chē)輛數(shù)據(jù)共享問(wèn)題。區(qū)塊鏈的核心要素是一致性共識(shí)算法,可直接決定其在應(yīng)用領(lǐng)域上的交易吞吐量、交易時(shí)延等特性。目前主流一致性共識(shí)算法存在以下2個(gè)問(wèn)題,較難直接應(yīng)用到車(chē)聯(lián)網(wǎng)環(huán)境:(1)車(chē)聯(lián)網(wǎng)節(jié)點(diǎn)存在異構(gòu)性,即節(jié)點(diǎn)性能異構(gòu)和移動(dòng)異構(gòu)等,從而影響區(qū)塊共識(shí)的安全和效率。但是目前主流一致性共識(shí)算法主要針對(duì)靜態(tài)節(jié)點(diǎn)的區(qū)塊共識(shí),沒(méi)有考慮節(jié)點(diǎn)的異構(gòu)性。(2)由于車(chē)聯(lián)網(wǎng)具有時(shí)效性需求,因此應(yīng)在短時(shí)間完成區(qū)塊一致性共識(shí),要求具有較高的交易吞吐量和較低的交易時(shí)延。但目前主流一致性共識(shí)算法的效率較低,無(wú)法有效激發(fā)節(jié)點(diǎn)參與區(qū)塊共識(shí)的積極性。
因此針對(duì)上述問(wèn)題,本文提出面向車(chē)聯(lián)網(wǎng)異構(gòu)節(jié)點(diǎn)的區(qū)塊鏈高效一致性共識(shí)算法(Efficient Consistency Consensus Algorithm, ECCA)。本論文的具體貢獻(xiàn)如下:(1)ECCA算法結(jié)合節(jié)點(diǎn)的當(dāng)前累積信用值、離線次數(shù)、離線時(shí)間、加入可信任列表次數(shù)和提供無(wú)效區(qū)塊次數(shù)等信息,采用模糊C均值(Fuzzy C-Means, FCM)聚類(lèi)實(shí)現(xiàn)異構(gòu)節(jié)點(diǎn)的信用等級(jí)劃分,可初步劃分3類(lèi)異構(gòu)節(jié)點(diǎn),從而快速檢測(cè)惡意車(chē)聯(lián)網(wǎng)節(jié)點(diǎn);(2)針對(duì)由于車(chē)聯(lián)網(wǎng)節(jié)點(diǎn)移動(dòng)導(dǎo)致的當(dāng)前區(qū)域內(nèi)驗(yàn)證節(jié)點(diǎn)過(guò)少或過(guò)多問(wèn)題,提出一種跨區(qū)下的節(jié)點(diǎn)身份變更機(jī)制,及時(shí)調(diào)整當(dāng)前區(qū)域內(nèi)節(jié)點(diǎn)的身份,從而保證移動(dòng)環(huán)境下的區(qū)塊共識(shí);(3)提出改進(jìn)的一致性共識(shí)算法。本算法通過(guò)節(jié)點(diǎn)身份與可通信列表,確定可信任節(jié)點(diǎn)列表。同時(shí)在完成交易集共識(shí)時(shí),針對(duì)可信任列表里不同信用等級(jí)的節(jié)點(diǎn)賦予不同的投票權(quán)重,并選擇信用等級(jí)較高的節(jié)點(diǎn)來(lái)完成區(qū)塊的生成與驗(yàn)證,從而有效提高節(jié)點(diǎn)參與區(qū)塊共識(shí)的積極性,提高交易吞吐量,降低交易時(shí)延。
在區(qū)塊鏈技術(shù)中,共識(shí)算法是決定區(qū)塊鏈能否有效應(yīng)用的關(guān)鍵。部分學(xué)者為應(yīng)對(duì)垃圾郵件等問(wèn)題,研究工作量證明(Proof Of Work, POW)共識(shí)算法,如文獻(xiàn)[3]提出了基本POW算法。但POW算法的區(qū)塊生成速度過(guò)于緩慢,同時(shí)計(jì)算任務(wù)不僅需要節(jié)點(diǎn)耗費(fèi)大量的計(jì)算資源,而且除了預(yù)防入侵者外,沒(méi)有更多實(shí)際或科學(xué)價(jià)值。因此文獻(xiàn)[4]引入信用模型和反向傳播(Back Propagation, BP)神經(jīng)網(wǎng)絡(luò)計(jì)算信任度,根據(jù)節(jié)點(diǎn)的信任度劃分不同的搜索空間和產(chǎn)生區(qū)塊。文獻(xiàn)[5]設(shè)計(jì)代幣和合作費(fèi),鼓勵(lì)節(jié)點(diǎn)間相互合作,并且根據(jù)節(jié)點(diǎn)的協(xié)助程度給予一定的權(quán)利。但是文獻(xiàn)[4,5]的改進(jìn)范圍主要局限于在區(qū)塊生成時(shí)給予一定的權(quán)利來(lái)降低其解決計(jì)算問(wèn)題的難度,沒(méi)有考慮節(jié)點(diǎn)運(yùn)動(dòng)等異構(gòu)特性所帶來(lái)的通信時(shí)延等問(wèn)題。針對(duì)POW算法的不足,部分學(xué)者研究權(quán)益證明(Proof Of Stake, POS)共識(shí)算法[6]。雖然POS算法在一定程度上避免了計(jì)算資源浪費(fèi)問(wèn)題并提高共識(shí)效率,但存在首富節(jié)點(diǎn)權(quán)力較大,甚至可直接影響共識(shí)結(jié)果等問(wèn)題。同時(shí),文獻(xiàn)[7]提出了通過(guò)代表節(jié)點(diǎn)完成區(qū)塊共識(shí)的委托權(quán)益證明(Delegated Proof Of Stake, DPOS)共識(shí)算法。文獻(xiàn)[8]采用代幣獎(jiǎng)勵(lì)激勵(lì)節(jié)點(diǎn)參與投票,并加入包含節(jié)點(diǎn)行為狀態(tài)和懲罰機(jī)制的檢查點(diǎn)協(xié)議,實(shí)現(xiàn)惡意節(jié)點(diǎn)的排除。文獻(xiàn)[9]采用投出反對(duì)票加快排除惡意節(jié)點(diǎn),將節(jié)點(diǎn)信用分?jǐn)?shù)與等級(jí)作為選舉依據(jù)。但是文獻(xiàn)[7—9]仍存在“富者更富”等問(wèn)題,且存在無(wú)法調(diào)動(dòng)節(jié)點(diǎn)投票積極性和及時(shí)剔除惡意節(jié)點(diǎn)等問(wèn)題。針對(duì)“拜占庭將軍問(wèn)題”,部分學(xué)者研究實(shí)用拜占庭容錯(cuò)(Practical Byzantine Fault Tolerance,PBFT)共識(shí)算法,如文獻(xiàn)[10]提出通過(guò)節(jié)點(diǎn)的多階段廣播實(shí)現(xiàn)區(qū)塊共識(shí)的PBFT算法。文獻(xiàn)[11]采用分區(qū)策略劃分多個(gè)主體子區(qū)域,并設(shè)置代理節(jié)點(diǎn),提出局部與全局一致性驗(yàn)證算法。但是文獻(xiàn)[10,11]沒(méi)有考慮到網(wǎng)絡(luò)中大量移動(dòng)節(jié)點(diǎn)而導(dǎo)致代表節(jié)點(diǎn)設(shè)置不合理、身份存在被盜用等問(wèn)題。為解決異步網(wǎng)絡(luò)節(jié)點(diǎn)通訊時(shí)的高時(shí)延問(wèn)題,部分學(xué)者研究瑞波協(xié)議共識(shí)算法(Ripple Protocol Consensus Algorithm,RPCA),如文獻(xiàn)[12]簡(jiǎn)單分析了通過(guò)可信任節(jié)點(diǎn)列表達(dá)成區(qū)塊共識(shí)的RPCA算法。文獻(xiàn)[13]在建立可信任節(jié)點(diǎn)列表時(shí),提出節(jié)點(diǎn)間連接狀態(tài)的評(píng)價(jià)機(jī)制,從而應(yīng)對(duì)節(jié)點(diǎn)間通信質(zhì)量的變化對(duì)區(qū)塊共識(shí)效率的影響。由于RPCA算法通過(guò)可信任節(jié)點(diǎn)列表完成區(qū)塊共識(shí),因此其效率遠(yuǎn)遠(yuǎn)高于POW等算法,可滿(mǎn)足短時(shí)間內(nèi)的交易響應(yīng)需求,提高交易吞吐率,但是該算法主要針對(duì)靜態(tài)節(jié)點(diǎn)的一致性共識(shí),較少考慮到車(chē)聯(lián)網(wǎng)異構(gòu)節(jié)點(diǎn),仍不適用于車(chē)聯(lián)網(wǎng)環(huán)境。
如圖1所示,車(chē)聯(lián)網(wǎng)主要由車(chē)聯(lián)網(wǎng)節(jié)點(diǎn)(車(chē)載智能終端)、基站和云服務(wù)平臺(tái)組成。根據(jù)基站的蜂窩部署規(guī)則,將車(chē)聯(lián)網(wǎng)網(wǎng)絡(luò)劃分為若干個(gè)蜂窩區(qū)域,且每個(gè)蜂窩區(qū)域中含有固定數(shù)量的基站。其中,車(chē)聯(lián)網(wǎng)節(jié)點(diǎn)可在區(qū)域內(nèi)和區(qū)域間移動(dòng)。由于節(jié)點(diǎn)通信范圍存在一定限制,無(wú)法與其他所有車(chē)聯(lián)網(wǎng)節(jié)點(diǎn)進(jìn)行通信,因此通過(guò)基站☆進(jìn)行車(chē)聯(lián)網(wǎng)節(jié)點(diǎn)間的通信中繼。根據(jù)車(chē)聯(lián)網(wǎng)節(jié)點(diǎn)的區(qū)塊共識(shí)行為,將其劃分為以下3種類(lèi)型:(1)□為驗(yàn)證節(jié)點(diǎn),其表示信用等級(jí)為A和B的車(chē)聯(lián)網(wǎng)節(jié)點(diǎn);(2)×為一般節(jié)點(diǎn),其表示信用等級(jí)為C和新加入的車(chē)聯(lián)網(wǎng)節(jié)點(diǎn);(3)△為惡意節(jié)點(diǎn),其表示信用等級(jí)為D的車(chē)聯(lián)網(wǎng)節(jié)點(diǎn)。ECCA算法的原理如圖2所示。首先區(qū)域內(nèi)的節(jié)點(diǎn)結(jié)合獎(jiǎng)懲機(jī)制與信用值模型計(jì)算其累積信用值,并根據(jù)其具體行為,進(jìn)行信用等級(jí)劃分。其次,采用跨區(qū)下的節(jié)點(diǎn)身份變更機(jī)制,及時(shí)調(diào)整車(chē)聯(lián)網(wǎng)節(jié)點(diǎn)身份。最后,車(chē)聯(lián)網(wǎng)節(jié)點(diǎn)通過(guò)一致性共識(shí)算法確定信任列表,完成交易集共識(shí)和區(qū)塊驗(yàn)證共識(shí),從而達(dá)成區(qū)塊共識(shí)。但是ECCA算法仍需要解決以下3個(gè)問(wèn)題:一是如何結(jié)合節(jié)點(diǎn)的信用值和具體情況等信息,實(shí)現(xiàn)信用等級(jí)的劃分與共識(shí)權(quán)限給予;二是如何考慮跨區(qū)下的節(jié)點(diǎn)身份變更問(wèn)題,保證區(qū)塊共識(shí)效率;三是如何改進(jìn)RPCA算法的相關(guān)協(xié)議,提高共識(shí)效率。這3個(gè)問(wèn)題的具體解決如下。
圖1 網(wǎng)絡(luò)整體結(jié)構(gòu)示意圖
圖2 ECCA算法原理
3.1.1 獎(jiǎng)懲機(jī)制
3.1.2 信用值模型
在完成節(jié)點(diǎn)累積得分的統(tǒng)計(jì)后,需要一種信用值模型來(lái)調(diào)動(dòng)驗(yàn)證節(jié)點(diǎn)參與區(qū)塊共識(shí)的積極性和作為節(jié)點(diǎn)等級(jí)劃分與權(quán)限給予的依據(jù),即
3.1.3 信用等級(jí)劃分
考慮到需要結(jié)合節(jié)點(diǎn)的具體行為來(lái)實(shí)現(xiàn)節(jié)點(diǎn)信用等級(jí)劃分,因此由信用等級(jí)為A和B的車(chē)聯(lián)網(wǎng)節(jié)點(diǎn)所組成的驗(yàn)證節(jié)點(diǎn)在各自區(qū)域內(nèi)采集具體包括當(dāng)前累積信用值、離線次數(shù)、離線時(shí)間、加入可信任列表次數(shù)和提供無(wú)效區(qū)塊次數(shù)等評(píng)估要素[14—16],并及時(shí)廣播各自所采集的信息。如果區(qū)域內(nèi)的驗(yàn)證節(jié)點(diǎn)成功采集到當(dāng)前區(qū)域內(nèi)所有節(jié)點(diǎn)的評(píng)估要素,則通過(guò)基站將自身區(qū)域內(nèi)的評(píng)估要素廣播給自身區(qū)域內(nèi)的驗(yàn)證節(jié)點(diǎn)與周?chē)鷧^(qū)域的驗(yàn)證節(jié)點(diǎn)。若區(qū)域內(nèi)驗(yàn)證節(jié)點(diǎn)接收到周?chē)鷅個(gè)區(qū)域的評(píng)估要素信息與自身區(qū)域內(nèi)的評(píng)估要素,則該驗(yàn)證節(jié)點(diǎn)執(zhí)行節(jié)點(diǎn)信用等級(jí)劃分,并將自身區(qū)域內(nèi)的節(jié)點(diǎn)信用等級(jí)劃分結(jié)果通過(guò)基站廣播給區(qū)域內(nèi)的其他節(jié)點(diǎn)。定義節(jié)點(diǎn)的4個(gè)信用等級(jí),即
其中,CR 表示信用等級(jí)集合,且根據(jù)文獻(xiàn)[17,18]的取值規(guī)則,選擇各等級(jí)對(duì)應(yīng)的數(shù)值,即為A=80,B=70,C=60,D=50。相較于K-means聚類(lèi)算法[19]的硬性劃分,F(xiàn)CM聚類(lèi)算法[20]通過(guò)計(jì)算每個(gè)樣本點(diǎn)對(duì)所有簇中心的隸屬度,實(shí)現(xiàn)樣本點(diǎn)的柔性劃分,因此驗(yàn)證節(jié)點(diǎn)通過(guò)該方法進(jìn)行合理的信用等級(jí)劃分,其具體實(shí)現(xiàn)步驟如下:
步驟1 當(dāng)前迭代次數(shù)NI=0,驗(yàn)證節(jié)點(diǎn)隨機(jī)
在完成節(jié)點(diǎn)的等級(jí)劃分后,驗(yàn)證節(jié)點(diǎn)給予其相應(yīng)的權(quán)利。若節(jié)點(diǎn)的信用等級(jí)為A,則驗(yàn)證節(jié)點(diǎn)給予其投票權(quán),區(qū)塊生成權(quán)和區(qū)塊驗(yàn)證權(quán)。若節(jié)點(diǎn)的信用等級(jí)為B,則驗(yàn)證節(jié)點(diǎn)給予其投票權(quán)和區(qū)塊驗(yàn)證權(quán)。若節(jié)點(diǎn)信用等級(jí)為C,則驗(yàn)證節(jié)點(diǎn)給予其投票權(quán)。若節(jié)點(diǎn)信用等級(jí)為D,則驗(yàn)證節(jié)點(diǎn)不給予其任何權(quán)利。當(dāng)完成上述權(quán)利給予后,驗(yàn)證節(jié)點(diǎn)將清除節(jié)點(diǎn)累積得分與累積信用值,重新開(kāi)始累積得分的計(jì)算。
由于車(chē)聯(lián)網(wǎng)節(jié)點(diǎn)的移動(dòng)會(huì)導(dǎo)致部分驗(yàn)證節(jié)點(diǎn)從一個(gè)區(qū)域移動(dòng)到另一個(gè)區(qū)域,發(fā)生跨區(qū)現(xiàn)象,可能導(dǎo)致當(dāng)前時(shí)刻某些區(qū)域內(nèi)驗(yàn)證節(jié)點(diǎn)數(shù)量出現(xiàn)過(guò)少或過(guò)多,從而影響區(qū)塊共識(shí)效率。信用等級(jí)劃分需要經(jīng)過(guò)一定時(shí)間周期后,才能實(shí)現(xiàn)節(jié)點(diǎn)身份轉(zhuǎn)換,無(wú)法在短時(shí)間內(nèi)有效解決驗(yàn)證節(jié)點(diǎn)跨區(qū)所帶來(lái)的問(wèn)題,因此提出跨區(qū)下一般節(jié)點(diǎn)和驗(yàn)證節(jié)點(diǎn)之間的身份變更機(jī)制,根據(jù)節(jié)點(diǎn)在區(qū)塊共識(shí)過(guò)程中的具體行為,及時(shí)調(diào)整當(dāng)前區(qū)域內(nèi)的節(jié)點(diǎn)身份,從而保證車(chē)聯(lián)網(wǎng)環(huán)境下的區(qū)塊共識(shí)效率。具體變更機(jī)制如下:
(1) 如果當(dāng)前區(qū)域驗(yàn)證節(jié)點(diǎn)的數(shù)量過(guò)少,即滿(mǎn)足φ <?1時(shí),φ表示當(dāng)前區(qū)域的驗(yàn)證節(jié)點(diǎn)數(shù)量,?1表示當(dāng)前區(qū)域內(nèi)的驗(yàn)證節(jié)點(diǎn)數(shù)量下限閾值,則會(huì)導(dǎo)致共識(shí)流程無(wú)法順利完成,干擾區(qū)塊正常上鏈,因此需要將一般節(jié)點(diǎn)轉(zhuǎn)換為驗(yàn)證節(jié)點(diǎn)。即首先當(dāng)前區(qū)域內(nèi)每個(gè)節(jié)點(diǎn)嘗試與周?chē)?jié)點(diǎn)建立通信測(cè)試。若成功建立通信過(guò)程,則將成功通信的節(jié)點(diǎn)添加到可通信列表中,并可根據(jù)實(shí)時(shí)通信情況及時(shí)更新該列表。若一般節(jié)點(diǎn)位于該節(jié)點(diǎn)的可通信列表且兩者通信次數(shù)大于閾值ε,則一般節(jié)點(diǎn)成功獲得該節(jié)點(diǎn)的認(rèn)可。根據(jù)上述操作,區(qū)域內(nèi)隨機(jī)選擇的一個(gè)驗(yàn)證節(jié)點(diǎn)能夠獲知當(dāng)前區(qū)域內(nèi)所有節(jié)點(diǎn)認(rèn)可的一般節(jié)點(diǎn)信息,計(jì)算每個(gè)一般節(jié)點(diǎn)的被認(rèn)可數(shù)量。其次,該驗(yàn)證節(jié)點(diǎn)根據(jù)該區(qū)域內(nèi)一般節(jié)點(diǎn)的被認(rèn)可數(shù)量進(jìn)行降序排序,將前p個(gè)一般節(jié)點(diǎn)加入到預(yù)備驗(yàn)證節(jié)點(diǎn)集合。計(jì)算預(yù)備驗(yàn)證節(jié)點(diǎn)集合中的節(jié)點(diǎn)停留時(shí)間,即該區(qū)域內(nèi)成功上鏈的區(qū)塊數(shù)量與單個(gè)區(qū)塊成功上鏈時(shí)間的乘積,并進(jìn)行降序排序,將排序結(jié)果的前?1-φ個(gè)一般節(jié)點(diǎn)轉(zhuǎn)化為驗(yàn)證節(jié)點(diǎn)。最后,該驗(yàn)證節(jié)點(diǎn)將一般節(jié)點(diǎn)的身份變更結(jié)果及時(shí)廣播,從而增加區(qū)域內(nèi)驗(yàn)證節(jié)點(diǎn)的數(shù)量。
(2) 如果當(dāng)前區(qū)域驗(yàn)證節(jié)點(diǎn)的數(shù)量過(guò)多,即滿(mǎn)足φ >?2時(shí),?2表示當(dāng)前區(qū)域內(nèi)的驗(yàn)證節(jié)點(diǎn)數(shù)量上限閾值,則會(huì)導(dǎo)致共識(shí)流程復(fù)雜,直接影響區(qū)塊共識(shí)效率,因此需要將驗(yàn)證節(jié)點(diǎn)轉(zhuǎn)換為一般節(jié)點(diǎn)。當(dāng)驗(yàn)證節(jié)點(diǎn)在當(dāng)前區(qū)域內(nèi)的停留時(shí)間短時(shí),可體現(xiàn)其行為特點(diǎn)的評(píng)估要素?cái)?shù)據(jù)量較少,導(dǎo)致網(wǎng)絡(luò)無(wú)法有效區(qū)分其是否為冒充驗(yàn)證節(jié)點(diǎn)進(jìn)行攻擊的惡意節(jié)點(diǎn)。如果當(dāng)前區(qū)域驗(yàn)證節(jié)點(diǎn)的數(shù)量過(guò)多,可轉(zhuǎn)換一部分該類(lèi)驗(yàn)證節(jié)點(diǎn)為一般節(jié)點(diǎn),從而降低驗(yàn)證節(jié)點(diǎn)中存在惡意節(jié)點(diǎn)的風(fēng)險(xiǎn),因此選擇驗(yàn)證節(jié)點(diǎn)在區(qū)域內(nèi)的停留時(shí)間作為其轉(zhuǎn)換為一般節(jié)點(diǎn)的轉(zhuǎn)換條件。即首先區(qū)域內(nèi)隨機(jī)選擇一個(gè)驗(yàn)證節(jié)點(diǎn),計(jì)算該區(qū)域內(nèi)所有驗(yàn)證節(jié)點(diǎn)的停留時(shí)間(該區(qū)域內(nèi)成功上鏈的區(qū)塊數(shù)量與單個(gè)區(qū)塊成功上鏈時(shí)間的乘積)。然后,該驗(yàn)證節(jié)點(diǎn)根據(jù)區(qū)域內(nèi)驗(yàn)證節(jié)點(diǎn)的停留時(shí)間進(jìn)行降序排序,并將排序結(jié)果的第?2個(gè)驗(yàn)證節(jié)點(diǎn)之后的驗(yàn)證節(jié)點(diǎn)轉(zhuǎn)換為一般節(jié)點(diǎn)。最后,該驗(yàn)證節(jié)點(diǎn)將節(jié)點(diǎn)身份變更結(jié)果及時(shí)廣播,從而減少區(qū)域內(nèi)驗(yàn)證節(jié)點(diǎn)數(shù)量。
考慮到車(chē)聯(lián)網(wǎng)的時(shí)效性需求和節(jié)點(diǎn)異構(gòu),在RPCA算法的基礎(chǔ)上,改進(jìn)可信任節(jié)點(diǎn)列表、交易集共識(shí)和區(qū)塊驗(yàn)證共識(shí)等方法,從而提出一種改進(jìn)的一致性共識(shí)算法。該算法由區(qū)域自身共識(shí)算法與多區(qū)域共識(shí)算法兩部分組成。當(dāng)該區(qū)域內(nèi)車(chē)聯(lián)網(wǎng)節(jié)點(diǎn)發(fā)現(xiàn)交易信息只關(guān)系到單個(gè)區(qū)域內(nèi)部時(shí),則采用區(qū)域自身共識(shí)算法達(dá)成共識(shí),并及時(shí)將共識(shí)結(jié)果上傳至自身區(qū)域的從鏈,實(shí)現(xiàn)數(shù)據(jù)的快速共識(shí)。當(dāng)車(chē)聯(lián)網(wǎng)節(jié)點(diǎn)發(fā)現(xiàn)交通事故、擁堵?tīng)顟B(tài)等交易信息關(guān)系到多個(gè)區(qū)域時(shí),則采用多區(qū)域共識(shí)算法達(dá)成共識(shí),并上鏈至全局主鏈。同時(shí)主鏈與從鏈之間通過(guò)驗(yàn)證節(jié)點(diǎn)的多重簽名實(shí)現(xiàn)雙向錨定,保證區(qū)塊的不可篡改性。上述兩種共識(shí)算法的選擇條件由交易事務(wù)所涉及的范圍來(lái)決定,且僅是參與區(qū)塊共識(shí)的節(jié)點(diǎn)數(shù)量不同,可信任節(jié)點(diǎn)列表,交易集共識(shí)、區(qū)塊共識(shí)等方法均相同。
3.3.1 可信任節(jié)點(diǎn)列表改進(jìn)
在前面的節(jié)點(diǎn)信用等級(jí)機(jī)制和身份變更機(jī)制的基礎(chǔ)上,改進(jìn)RPCA算法中的可信任節(jié)點(diǎn)列表,即驗(yàn)證節(jié)點(diǎn)首先在其可通信列表中排除一般節(jié)點(diǎn)和惡意節(jié)點(diǎn),然后計(jì)算其可通信列表中剩余節(jié)點(diǎn)分?jǐn)?shù),最后根據(jù)分?jǐn)?shù)從高到低選取剩余節(jié)點(diǎn)加入可信任節(jié)點(diǎn)列表。具體公式為
其中,sci,j表示第i個(gè)驗(yàn)證節(jié)點(diǎn)的可通信列表中第j個(gè)節(jié)點(diǎn)的得分情況,CRi,j和Ti,j分別表示第i個(gè)驗(yàn)證節(jié)點(diǎn)的可通信列表中第j個(gè)節(jié)點(diǎn)的信用等級(jí)和節(jié)點(diǎn)剩余時(shí)間,且節(jié)點(diǎn)剩余時(shí)間采用倒計(jì)時(shí)制,ωi,j表示第i個(gè)驗(yàn)證節(jié)點(diǎn)的可通信列表完成第j個(gè)節(jié)點(diǎn)的添加時(shí)所經(jīng)歷過(guò)的中間傳遞損失因子。如果出現(xiàn)多個(gè)節(jié)點(diǎn)的得分情況相同,則在其中隨機(jī)選擇一個(gè)加入可信任列表。為了全面應(yīng)對(duì)節(jié)點(diǎn)異構(gòu)特性帶來(lái)的共識(shí)干擾問(wèn)題,將可通信列表中未能成功加入可信任列表的其他驗(yàn)證節(jié)點(diǎn),組成備用可信任節(jié)點(diǎn)群。當(dāng)可信任列表中的節(jié)點(diǎn)出現(xiàn)意外情況時(shí),從中隨機(jī)選擇節(jié)點(diǎn)來(lái)實(shí)現(xiàn)節(jié)點(diǎn)的切換。
3.3.2 交易集共識(shí)改進(jìn)
在RPCA算法的交易集共識(shí)不僅需要經(jīng)過(guò)驗(yàn)證節(jié)點(diǎn)的多輪投票,而且在最終達(dá)成共識(shí)的交易集中每筆交易都至少獲得β1比例的驗(yàn)證節(jié)點(diǎn)認(rèn)可。因此需要在保證共識(shí)安全性的前提下,改進(jìn)驗(yàn)證節(jié)點(diǎn)的投票權(quán),允許其在投出贊同票時(shí)同樣也可以投出反對(duì)票,從而提高共識(shí)效果。同時(shí)考慮不同信任等級(jí)節(jié)點(diǎn)所代表的重要性不同,通過(guò)式(10),采用不同的權(quán)重統(tǒng)計(jì)票數(shù),獲得投票結(jié)果。最后驗(yàn)證節(jié)點(diǎn)根據(jù)每筆交易按投票結(jié)果從高到低進(jìn)行排序,并選擇前?個(gè)交易作為交易集共識(shí)的最終結(jié)果
3.3.3 區(qū)塊驗(yàn)證共識(shí)改進(jìn)
ECCA算法改進(jìn)區(qū)塊驗(yàn)證共識(shí),即隨機(jī)選擇一個(gè)信用等級(jí)為A的驗(yàn)證節(jié)點(diǎn)負(fù)責(zé)區(qū)塊的生成。該方法不僅避免存在一般節(jié)點(diǎn)和惡意節(jié)點(diǎn)構(gòu)建區(qū)塊而導(dǎo)致高交易時(shí)延的風(fēng)險(xiǎn),而且在構(gòu)建區(qū)塊的效率上滿(mǎn)足車(chē)聯(lián)網(wǎng)需求。具體內(nèi)容為:
(1) 從滿(mǎn)足信任等級(jí)CR=A的驗(yàn)證節(jié)點(diǎn)中隨機(jī)選擇節(jié)點(diǎn)負(fù)責(zé)區(qū)塊的生成。
(2) 負(fù)責(zé)區(qū)塊生成的驗(yàn)證節(jié)點(diǎn)發(fā)送其計(jì)算所得的哈希值到其他的驗(yàn)證節(jié)點(diǎn),統(tǒng)一收集反饋信息。一旦反饋信息中認(rèn)可比例達(dá)到一定閾值β2,則表明該區(qū)塊驗(yàn)證共識(shí)達(dá)成,將區(qū)塊寫(xiě)入到鏈中。
ECCA算法將區(qū)塊鏈技術(shù)有效運(yùn)用在車(chē)聯(lián)網(wǎng)環(huán)境中,其具體實(shí)現(xiàn)流程如表1所示。
表1 面向車(chē)聯(lián)網(wǎng)異構(gòu)節(jié)點(diǎn)的區(qū)塊鏈高效一致性共識(shí)算法(ECCA)算法流程
為了綜合評(píng)價(jià)ECCA算法的性能,在intel i5-4210H CPU 2.90 GHz, 8 G內(nèi)存和GTX 960 M顯卡的試驗(yàn)環(huán)境上,使用Golang語(yǔ)言實(shí)現(xiàn)一個(gè)由車(chē)聯(lián)網(wǎng)節(jié)點(diǎn)和基站組成的車(chē)聯(lián)網(wǎng)數(shù)據(jù)共享原型系統(tǒng)。在該原型系統(tǒng)中,假設(shè)車(chē)聯(lián)網(wǎng)節(jié)點(diǎn)可通過(guò)基站中繼的方式與其他節(jié)點(diǎn)進(jìn)行數(shù)據(jù)交換,并令每個(gè)車(chē)聯(lián)網(wǎng)節(jié)點(diǎn)的運(yùn)動(dòng)速度為 sp,在固定時(shí)間間隔Vlas后,每個(gè)車(chē)聯(lián)網(wǎng)節(jié)點(diǎn)按式(11)更新當(dāng)前的位置
5.2.1 節(jié)點(diǎn)運(yùn)動(dòng)與信用值模型分析
考慮9×9 km的車(chē)聯(lián)網(wǎng)覆蓋區(qū)域,均勻劃分為9個(gè)區(qū)域大小均為3 km×3 km的網(wǎng)格,并以車(chē)聯(lián)網(wǎng)中惡意節(jié)點(diǎn)的比例為10%為例,說(shuō)明算法的有效性。其中,在每個(gè)區(qū)域內(nèi)隨機(jī)設(shè)置1個(gè)基站和多個(gè)信用等級(jí)為A或B的運(yùn)動(dòng)節(jié)點(diǎn)作為驗(yàn)證節(jié)點(diǎn),隨機(jī)設(shè)置信用等級(jí)為C的運(yùn)動(dòng)節(jié)點(diǎn)和新生的運(yùn)動(dòng)節(jié)點(diǎn)作為一般節(jié)點(diǎn),隨機(jī)設(shè)置信用等級(jí)為D的運(yùn)動(dòng)節(jié)點(diǎn)作為惡意節(jié)點(diǎn)。如圖3所示,由9個(gè)基站,135個(gè)驗(yàn)證節(jié)點(diǎn),38個(gè)一般節(jié)點(diǎn)和18個(gè)惡意節(jié)點(diǎn)組成的200個(gè)節(jié)點(diǎn)隨機(jī)分布在9個(gè)網(wǎng)格中。根據(jù)上述仿真場(chǎng)景,在仿真過(guò)程中,DPOS算法中的惡意節(jié)點(diǎn)通過(guò)離線方式累積幣齡,在后期重新上線對(duì)當(dāng)前區(qū)塊共識(shí)進(jìn)行攻擊。RPCA算法中的惡意節(jié)點(diǎn)通過(guò)加入驗(yàn)證節(jié)點(diǎn)的可信任列表的方式干擾交易集共識(shí),從而實(shí)現(xiàn)對(duì)區(qū)塊共識(shí)的攻擊。在CDBFT和ECCA算法中的惡意節(jié)點(diǎn)選擇在前期累積信用值,獲得更多的權(quán)利,并在后期對(duì)共識(shí)過(guò)程發(fā)動(dòng)攻擊。
圖3 200個(gè)節(jié)點(diǎn)的初始分布圖
在原型系統(tǒng)的基礎(chǔ)上,分析正常節(jié)點(diǎn)與惡意節(jié)點(diǎn)的信用值趨勢(shì)圖。如圖4所示,ECCA算法提出在共識(shí)成功情況下的獎(jiǎng)勵(lì)機(jī)制,隨著共識(shí)輪次的增加,正常節(jié)點(diǎn)的累積得分逐漸增加,最終導(dǎo)致累積信用值的上升。由于ECCA算法需要保證節(jié)點(diǎn)多次參與區(qū)塊共識(shí)的積極性和防止因信用值過(guò)大而導(dǎo)致節(jié)點(diǎn)權(quán)力過(guò)于中心化,因此在前期逐漸提高正常節(jié)點(diǎn)信用值的上升速度,且在后期逐漸放緩正常節(jié)點(diǎn)信用值的上升速度。同時(shí)ECCA算法結(jié)合惡意節(jié)點(diǎn)的行為,提出在共識(shí)失敗情況下的懲罰機(jī)制,惡意節(jié)點(diǎn)隨著共識(shí)輪次的增加,累積得分逐漸減少,最終導(dǎo)致累積信用值的下降。由于ECCA算法為了快速區(qū)分惡意節(jié)點(diǎn)與正常節(jié)點(diǎn)和考慮到正常節(jié)點(diǎn)隨機(jī)選擇等因素,因此在前期逐漸提高惡意節(jié)點(diǎn)信用值的下降速度,且在后期逐漸放緩惡意節(jié)點(diǎn)信用值的下降速度。
圖4 節(jié)點(diǎn)信用值趨勢(shì)圖
5.2.2 參數(shù)選擇分析
選擇信用值模型參數(shù)t1為200, 400, 600, 800,1000, 1200,參數(shù)t2為100, 200, 300, 400, 500,節(jié)點(diǎn)數(shù)量為250和其他參數(shù),分析信用值模型參數(shù)對(duì)交易吞吐量的影響。如圖5所示,模型參數(shù)t2影響信用值模型中數(shù)值的變化速率。當(dāng)模型參數(shù)t2在100~300范圍內(nèi)不斷增加時(shí),該模型在應(yīng)對(duì)惡意節(jié)點(diǎn)攻擊時(shí),能以合理的變化速率完成節(jié)點(diǎn)的累積信用值,因此交易吞吐量出現(xiàn)上升趨勢(shì)。而當(dāng)模型參數(shù)t2在300~500范圍內(nèi)不斷增加時(shí),累積信用值的變化速率下降,降低了正常節(jié)點(diǎn)參與多輪區(qū)塊的積極性,因此交易吞吐量出現(xiàn)下降趨勢(shì)。而模型參數(shù)t1影響信用值模型中數(shù)值的最大值與最小值。當(dāng)模型參數(shù)t1在200~600范圍內(nèi)不斷增加時(shí),信用值模型的最大值與最小值差距過(guò)小,正常節(jié)點(diǎn)與惡意節(jié)點(diǎn)的信用值區(qū)別程度不明顯,導(dǎo)致信任等級(jí)劃分時(shí)耗時(shí)偏高,因此交易吞吐量出現(xiàn)下降趨勢(shì)。而當(dāng)模型參數(shù)t1在600~1000范圍內(nèi)不斷增加時(shí),信用值模型的上下限逐漸擴(kuò)大,正常節(jié)點(diǎn)與惡意節(jié)點(diǎn)的信用值區(qū)別程度不斷變大,提高了信任等級(jí)劃分效率,因此交易吞吐量出現(xiàn)上升趨勢(shì)。但當(dāng)模型參數(shù)t1達(dá)到1200時(shí),信用值模型的區(qū)間過(guò)大,從而影響節(jié)點(diǎn)參與區(qū)塊共識(shí)的積極性,其交易吞吐量出現(xiàn)下降??傊?,通過(guò)參數(shù)分析,ECCA算法選擇t1為1000和t2為300,可較好的區(qū)分正常節(jié)點(diǎn)和惡意節(jié)點(diǎn)。
圖5 信用值模型參數(shù)對(duì)交易吞吐量的影響
考慮ζ1+ζ2+ζ3=1,選擇節(jié)點(diǎn)投票權(quán)重ζ1為0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8,節(jié)點(diǎn)投票權(quán)重ζ2為0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8,節(jié)點(diǎn)數(shù)量為250和其他參數(shù),分析節(jié)點(diǎn)投票權(quán)重對(duì)交易吞吐量的影響。如圖6所示,當(dāng)節(jié)點(diǎn)投票權(quán)重ζ1取較高值,其他兩個(gè)權(quán)重取較低值時(shí),交易吞吐量較大。這是因?yàn)椋汗?jié)點(diǎn)投票權(quán)重ζ1主要是影響信用等級(jí)為A的節(jié)點(diǎn)對(duì)交易集共識(shí)的投票結(jié)果。當(dāng)節(jié)點(diǎn)投票權(quán)重ζ1在0.1~0.7范圍內(nèi)不斷增加時(shí),信用等級(jí)為A的節(jié)點(diǎn)對(duì)當(dāng)前交易集共識(shí)投票擁有更高的權(quán)重,使得可靠性較高的節(jié)點(diǎn)能夠影響投票結(jié)果,保證交易集的共識(shí)效率,因此交易吞吐量出現(xiàn)上升趨勢(shì)。當(dāng)節(jié)點(diǎn)投票權(quán)重ζ1為0.8時(shí),交易集共識(shí)容易被信用等級(jí)為A的節(jié)點(diǎn)所控制,降低其他信用等級(jí)節(jié)點(diǎn)參與投票的積極性,因此交易吞吐量出現(xiàn)下降趨勢(shì)。當(dāng)節(jié)點(diǎn)投票參數(shù)ζ2在0.8~0.1范圍內(nèi)不斷下降時(shí),信用等級(jí)為B的節(jié)點(diǎn)投票權(quán)重逐漸下降,導(dǎo)致其他信用等級(jí)的節(jié)點(diǎn)投票權(quán)重上升,同時(shí)信用等級(jí)為C的節(jié)點(diǎn)中的惡意節(jié)點(diǎn)容易干擾交易集共識(shí)的順利執(zhí)行,其交易吞吐量出現(xiàn)下降趨勢(shì)。因此在后續(xù)實(shí)驗(yàn)中,選擇節(jié)點(diǎn)投票權(quán)重ζ1為0.7,ζ2為0.2和ζ3為0.1。
圖6 節(jié)點(diǎn)投票權(quán)重對(duì)交易吞吐量的影響
5.2.3 算法性能分析
選擇節(jié)點(diǎn)數(shù)量為200, 300, 400, 500, 600, 700,800和其他參數(shù),分析節(jié)點(diǎn)數(shù)量增加對(duì)交易吞吐量的影響。如圖7所示,隨著節(jié)點(diǎn)數(shù)量的上升,增加了部分區(qū)塊共識(shí)的時(shí)間,導(dǎo)致POS, DPOS, CDBFT和ECCA算法的交易吞吐量均呈下降趨勢(shì)。但ECCA算法的交易吞吐量明顯高于其他共識(shí)算法。這是因?yàn)椋篍CCA算法提出跨區(qū)下的節(jié)點(diǎn)身份變更機(jī)制與備用可信任節(jié)點(diǎn)群,及時(shí)調(diào)整節(jié)點(diǎn)的身份,避免因節(jié)點(diǎn)離線或跨區(qū)行為對(duì)區(qū)塊的共識(shí)效率產(chǎn)生影響。且在應(yīng)對(duì)惡意節(jié)點(diǎn)的攻擊方面,ECCA算法采用信用等級(jí)機(jī)制限制其共識(shí)權(quán)利,并隨機(jī)選擇高信用等級(jí)驗(yàn)證節(jié)點(diǎn)完成區(qū)塊驗(yàn)證共識(shí),進(jìn)一步降低惡意節(jié)點(diǎn)影響共識(shí)的可能性。DPOS和CDBFT算法雖然通過(guò)選擇代表節(jié)點(diǎn)的方式完成區(qū)塊共識(shí),但是沒(méi)有考慮到車(chē)聯(lián)網(wǎng)中節(jié)點(diǎn)離線問(wèn)題,一旦代表節(jié)點(diǎn)在網(wǎng)絡(luò)中離線,則需要重新發(fā)起投票。RPCA算法在共識(shí)過(guò)程中需要通過(guò)可信任列表來(lái)完成交易集共識(shí)與區(qū)塊驗(yàn)證共識(shí),且惡意節(jié)點(diǎn)的攻擊容易影響其共識(shí)。因此ECCA算法的交易吞吐量要始終優(yōu)于DPOS,CDBFT和RPCA算法的交易吞吐量。
圖7 節(jié)點(diǎn)數(shù)量對(duì)交易吞吐量的影響
選擇節(jié)點(diǎn)數(shù)量為200, 300, 400, 500, 600, 700,800和其他參數(shù),分析節(jié)點(diǎn)數(shù)量對(duì)平均交易時(shí)延的影響。如圖8所示,隨著節(jié)點(diǎn)數(shù)量的上升,共識(shí)算法被攻擊的次數(shù)增加,導(dǎo)致POS, DPOS, CDBFT和ECCA算法的平均交易時(shí)延均呈上升趨勢(shì)。這是因?yàn)椋篍CCA算法首先通過(guò)信用等級(jí)機(jī)制,綜合考慮節(jié)點(diǎn)的性能,實(shí)現(xiàn)權(quán)利的動(dòng)態(tài)分配,并在驗(yàn)證節(jié)點(diǎn)生成可信列表時(shí)考慮節(jié)點(diǎn)在通信過(guò)程中傳遞損失因子、信用等級(jí)等關(guān)鍵參數(shù),從而將性能良好且信用等級(jí)可靠的節(jié)點(diǎn)加入到可信任列表中,最終將平均交易時(shí)延維持在較低水平。CDBFT與DPOS算法僅僅通過(guò)幣齡或信譽(yù)值來(lái)選擇構(gòu)建區(qū)塊節(jié)點(diǎn),無(wú)法綜合評(píng)價(jià)節(jié)點(diǎn)的性能。而RPCA算法的驗(yàn)證節(jié)點(diǎn)選擇主要通過(guò)提前設(shè)置的方式,沒(méi)有考慮到外界環(huán)境問(wèn)題,一旦驗(yàn)證節(jié)點(diǎn)的性能受到影響,無(wú)法自動(dòng)進(jìn)行調(diào)整。因此ECCA算法的平均交易時(shí)延優(yōu)于DPOS, CDBFT和RPCA算法的平均交易時(shí)延。
圖8 節(jié)點(diǎn)數(shù)量對(duì)平均交易時(shí)延的影響
選擇節(jié)點(diǎn)數(shù)量為200, 300, 400, 500, 600, 700,800,和其他參數(shù),分析節(jié)點(diǎn)數(shù)量對(duì)平均節(jié)點(diǎn)通信開(kāi)銷(xiāo)的影響。如圖9所示,隨著節(jié)點(diǎn)數(shù)量的上升,在交易廣播和區(qū)塊驗(yàn)證等階段增加了節(jié)點(diǎn)間的通信數(shù)次,導(dǎo)致DPOS, CDBFT和ECCA算法的平均通信開(kāi)銷(xiāo)均呈上升趨勢(shì),但ECCA算法的平均節(jié)點(diǎn)通信開(kāi)銷(xiāo)低于其他共識(shí)算法。這是因?yàn)椋篍CCA算法不僅根據(jù)車(chē)聯(lián)網(wǎng)事務(wù)所涉及范圍選擇不同的區(qū)域共識(shí)機(jī)制,減少參與區(qū)塊共識(shí)的節(jié)點(diǎn)數(shù)量,從而保證區(qū)塊的共識(shí)效率,而且在交易集共識(shí)過(guò)程中設(shè)置反對(duì)票與投票系數(shù),避免惡意節(jié)點(diǎn)所提交的交易集干擾共識(shí),最終保證區(qū)塊共識(shí)效率。CDBFT與DPOS算法雖然通過(guò)代表節(jié)點(diǎn)來(lái)完成區(qū)塊共識(shí),在一定程度上保證區(qū)塊共識(shí)安全性,但在代表節(jié)點(diǎn)的共識(shí)上需要經(jīng)過(guò)多個(gè)階段。RPCA算法每個(gè)驗(yàn)證節(jié)點(diǎn)需要廣播自身交易集信息。因此ECCA算法的平均節(jié)點(diǎn)通信開(kāi)銷(xiāo)遠(yuǎn)優(yōu)于DPOS, CDBFT和RPCA算法的平均節(jié)點(diǎn)通信開(kāi)銷(xiāo)。
圖9 節(jié)點(diǎn)數(shù)量對(duì)平均節(jié)點(diǎn)通信開(kāi)銷(xiāo)的影響
選擇節(jié)點(diǎn)數(shù)量為200, 300, 400, 500, 600, 700,800,惡意節(jié)點(diǎn)比例為10%, 20%, 30%, 40%和其他參數(shù),分析惡意節(jié)點(diǎn)數(shù)量對(duì)ECCA算法查準(zhǔn)率的影響。如圖10所示,ECCA算法的查準(zhǔn)率均維持在一個(gè)較高值,且隨著節(jié)點(diǎn)數(shù)量與惡意節(jié)點(diǎn)比例的增加,ECCA算法的查準(zhǔn)率略微增加。這是因?yàn)椋篍CCA算法根據(jù)節(jié)點(diǎn)的共識(shí)行為信息,采用FCM聚類(lèi)算法進(jìn)行等級(jí)劃分,可有效檢測(cè)出惡意節(jié)點(diǎn)。隨著共識(shí)節(jié)點(diǎn)數(shù)量的增加,導(dǎo)致ECCA算法可獲得更多正常節(jié)點(diǎn)的加入可信任列表次數(shù)、活躍時(shí)間、離線次數(shù)、離線時(shí)間和延時(shí)時(shí)間等共識(shí)行為信息,正常節(jié)點(diǎn)和惡意節(jié)點(diǎn)的行為特征數(shù)據(jù)更明顯,因此其查準(zhǔn)率略微增加。同樣隨著惡意節(jié)點(diǎn)比例的增加,更多的惡意節(jié)點(diǎn)表現(xiàn)出共識(shí)攻擊行為特征,使得ECCA算法在進(jìn)行信用等級(jí)劃分能有效發(fā)現(xiàn)惡意節(jié)點(diǎn),使其查準(zhǔn)率略微增加。
圖10 惡意節(jié)點(diǎn)比例對(duì)查準(zhǔn)率的影響
選擇節(jié)點(diǎn)數(shù)量為200, 300, 400, 500, 600, 700,800,惡意節(jié)點(diǎn)比例為10%, 20%, 30%, 40%和其他參數(shù),分析惡意節(jié)點(diǎn)數(shù)量對(duì)ECCA算法查全率的影響。如圖11所示,隨著共識(shí)節(jié)點(diǎn)數(shù)量的增加,ECCA算法的查全率上升,隨著惡意節(jié)點(diǎn)比例的增加,ECCA算法的查全率略微下降,但是ECCA算法的查全率均維持在一個(gè)較高的值。這是因?yàn)椋弘S著共識(shí)節(jié)點(diǎn)數(shù)量的增加,ECCA算法的行為獎(jiǎng)懲機(jī)制與信用值模型能夠全面衡量節(jié)點(diǎn)的共識(shí)行為,突出網(wǎng)絡(luò)內(nèi)正常節(jié)點(diǎn)與惡意節(jié)點(diǎn)的差異性,使得驗(yàn)證節(jié)點(diǎn)在進(jìn)行節(jié)點(diǎn)的信用等級(jí)劃分時(shí)更容易區(qū)分出惡意節(jié)點(diǎn),導(dǎo)致查全率隨之上升。隨著惡意節(jié)點(diǎn)比例的逐漸增加,由于ECCA算法通過(guò)隨機(jī)選擇高信用等級(jí)的驗(yàn)證節(jié)點(diǎn)完成區(qū)塊驗(yàn)證共識(shí),導(dǎo)致部分惡意節(jié)點(diǎn)未獲得進(jìn)行攻擊的機(jī)會(huì),使得在共識(shí)過(guò)程中其表現(xiàn)與正常節(jié)點(diǎn)無(wú)明顯差異,且只能將其劃分為一般節(jié)點(diǎn),因此算法的查全率會(huì)略微下降。
本文提出一種面向車(chē)聯(lián)網(wǎng)異構(gòu)節(jié)點(diǎn)的區(qū)塊鏈高效一致性共識(shí)算法(ECCA)。首先,該算法將城市車(chē)聯(lián)網(wǎng)劃分為多個(gè)區(qū)域,并將車(chē)聯(lián)網(wǎng)節(jié)點(diǎn)分為驗(yàn)證節(jié)點(diǎn)、一般節(jié)點(diǎn)和惡意節(jié)點(diǎn)。根據(jù)節(jié)點(diǎn)的參與區(qū)塊共識(shí)情況與行為信息,提出信用等級(jí)機(jī)制,包括獎(jiǎng)懲機(jī)制與信用值模型和信用等級(jí)劃分的聚類(lèi)方法。其次,提出跨區(qū)下的節(jié)點(diǎn)身份變更機(jī)制,并提出一種改進(jìn)的一致性共識(shí)算法,包括可信任列表改進(jìn)、交易集共識(shí)改進(jìn)和區(qū)塊驗(yàn)證共識(shí)改進(jìn)。最后分析信用值模型,參數(shù)選擇,查全率和查準(zhǔn)率,比較DPOS, CDBFT, RPCA和ECCA算法的交易吞吐量、平均交易時(shí)延和平均節(jié)點(diǎn)通信開(kāi)銷(xiāo)。仿真結(jié)果表明:ECCA算法能提高車(chē)聯(lián)網(wǎng)節(jié)點(diǎn)參與區(qū)塊共識(shí)的積極性、降低一般節(jié)點(diǎn)和惡意節(jié)點(diǎn)對(duì)區(qū)塊共識(shí)的影響,從而提高交易吞吐量、平均交易時(shí)延和平均節(jié)點(diǎn)通信開(kāi)銷(xiāo),比DPOS, RPCA和CDBFT算法更優(yōu)。但是ECCA算法沒(méi)有考慮到車(chē)聯(lián)網(wǎng)節(jié)點(diǎn)間的區(qū)塊共識(shí)收益問(wèn)題,因此下一階段目標(biāo)研究適用于車(chē)聯(lián)網(wǎng)的區(qū)塊收益分配和積分兌換方案,進(jìn)一步提高節(jié)點(diǎn)參與區(qū)塊共識(shí)的積極性。