摘要:針對(duì)DPoS共識(shí)算法中節(jié)點(diǎn)投票積極性低和惡意節(jié)點(diǎn)作惡的問題,提出了一種基于節(jié)點(diǎn)貢獻(xiàn)值和信譽(yù)度的DPoS共識(shí)機(jī)制DPoS-NCVR,首先引入連接度概念,通過貢獻(xiàn)值模型將系統(tǒng)中節(jié)點(diǎn)的狀態(tài)和行為等因素進(jìn)行量化計(jì)算得出貢獻(xiàn)值;其次,通過特定的貢獻(xiàn)值閾值將節(jié)點(diǎn)劃分為不同等級(jí),以此來標(biāo)識(shí)節(jié)點(diǎn)的身份,進(jìn)而選出代理節(jié)點(diǎn)進(jìn)行記賬;最后,引入信譽(yù)度模型,對(duì)節(jié)點(diǎn)行為進(jìn)行獎(jiǎng)懲,并且將屢次作惡的節(jié)點(diǎn)剔除系統(tǒng),從而提高節(jié)點(diǎn)參與投票的積極性。在仿真環(huán)境下,DPoS-NCVR再進(jìn)行了多次共識(shí),與DPoS相比節(jié)點(diǎn)的活躍度顯著提高、惡意節(jié)點(diǎn)占比明顯減少。實(shí)驗(yàn)結(jié)果表明,DPoS-NCVR能有效地提高節(jié)點(diǎn)投票的積極性,降低節(jié)點(diǎn)作惡的可能性,減少惡意節(jié)點(diǎn)占比,增強(qiáng)了系統(tǒng)的安全性。
關(guān)鍵詞:連接度;共識(shí)機(jī)制;貢獻(xiàn)值;信譽(yù)度;惡意節(jié)點(diǎn)
中圖分類號(hào):TP311.13
文獻(xiàn)標(biāo)志碼:A
2008年,區(qū)塊鏈這種具有分布式特性的賬本首次被提出,文獻(xiàn)[1]詳細(xì)闡述了如何建立一套去中心化,無需基礎(chǔ)信任和無中心化機(jī)構(gòu)背書的點(diǎn)對(duì)點(diǎn)的交易系統(tǒng),并且提出了一種數(shù)字加密貨幣——比特幣。隨著區(qū)塊鏈技術(shù)的不斷發(fā)展,區(qū)塊鏈已經(jīng)應(yīng)用于醫(yī)療[2]、金融[3]、物聯(lián)網(wǎng)[4]、數(shù)字資產(chǎn)等多個(gè)領(lǐng)域。其中共識(shí)機(jī)制是區(qū)塊鏈技術(shù)的重要組成部分之一,其維護(hù)區(qū)塊鏈系統(tǒng)正常運(yùn)行,是一種使不受信任的參與者建立信任關(guān)系的有效機(jī)制。所以,如何在決策高度分散化的去中心化系統(tǒng),使得互不信任的節(jié)點(diǎn)有效的對(duì)區(qū)塊數(shù)據(jù)達(dá)成共識(shí),是區(qū)塊鏈技術(shù)研究的重點(diǎn)問題。目前區(qū)塊鏈分三種類型:公有鏈、聯(lián)盟鏈和私有鏈。公有鏈的主流共識(shí)算法為工作量證明(Proof of Work,PoW)、權(quán)益證明(Proof of Stake,PoS)以及授權(quán)股權(quán)證明[5](Delegated Proof of Stake,DPoS)。
PoW共識(shí)機(jī)制的核心思想是區(qū)塊鏈網(wǎng)絡(luò)中的各個(gè)節(jié)點(diǎn)互相競(jìng)爭(zhēng)算力,將系統(tǒng)給定的隨機(jī)值(nonce)通過計(jì)算來得出相匹配的哈希值的數(shù)學(xué)問題,從而保證區(qū)塊鏈網(wǎng)絡(luò)分布式記賬的統(tǒng)一問題和共識(shí)過程的安全性。由于高度依賴節(jié)點(diǎn)的算力,所以PoW共識(shí)機(jī)制保證了系統(tǒng)的安全運(yùn)行和數(shù)據(jù)的不可篡改。但是,該共識(shí)機(jī)制容易受到天然的雙花攻擊影響[6],最重要的是PoW共識(shí)機(jī)制對(duì)每個(gè)參與挖礦節(jié)點(diǎn)的算力具有極高的要求,因此容易造成資源的浪費(fèi),能源效率低下。
為了解決使用PoW挖礦出現(xiàn)的大量資源消耗問題,KING等首次提出PoS共識(shí)機(jī)制,在點(diǎn)點(diǎn)幣(Peercoin)[7]中實(shí)現(xiàn)了PoS,PoS共識(shí)機(jī)制中引入了“幣齡”,作為權(quán)益的概念,把節(jié)點(diǎn)所持有的代幣數(shù)量和持有的天數(shù)作為競(jìng)爭(zhēng)記賬權(quán)的依據(jù),在創(chuàng)世區(qū)塊中寫明股權(quán)分配比例,之后通過交易的方式逐漸分配給各個(gè)節(jié)點(diǎn),通過給節(jié)點(diǎn)發(fā)放利息的方式新增代幣。通過充分論證與實(shí)踐被認(rèn)為具有可擴(kuò)展性和可行性,對(duì)能耗問題起到了緩解的作用,但PoS共識(shí)機(jī)制也存在“Nothing of Stake”[8]的安全性問題。
DPoS作為PoS的改進(jìn)方案,其記賬權(quán)由節(jié)點(diǎn)投票產(chǎn)生,普通節(jié)點(diǎn)不但可以投票給相對(duì)可信的代表作為區(qū)塊生產(chǎn)者,也可以選擇在下一輪投票環(huán)節(jié)中通過不投票而解雇區(qū)塊生產(chǎn)者[9]。在DPoS共識(shí)機(jī)制中,由于每個(gè)節(jié)點(diǎn)都能夠自主決定其信任的授權(quán)節(jié)點(diǎn),且由這些授權(quán)節(jié)點(diǎn)輪流記賬生成新區(qū)塊,與PoS相比,減少了參與驗(yàn)證和記賬的節(jié)點(diǎn)數(shù)量,實(shí)現(xiàn)了快速共識(shí)驗(yàn)證[10]。但是,由于選舉代表需要消耗大量的時(shí)間和算力,普通節(jié)點(diǎn)獲得不了自身期望的利益,會(huì)出現(xiàn)不積極參與投票的現(xiàn)象。針對(duì)現(xiàn)有區(qū)塊鏈的 DPoS 機(jī)制中存在節(jié)點(diǎn)投票不積極和惡意節(jié)點(diǎn)作惡的問題,大都局限于針對(duì)一方面進(jìn)行改進(jìn),本研究參考上述研究成果,運(yùn)用更加優(yōu)化的激勵(lì)制度提高節(jié)點(diǎn)參與積極性和降低節(jié)點(diǎn)作惡概率,提出了基于節(jié)點(diǎn)貢獻(xiàn)值和信譽(yù)度的DPoS的共識(shí)算法DPoS-NCVR(Delegated Proof of Stake based on Node Contribution Value and Reputation)。經(jīng)過實(shí)驗(yàn)驗(yàn)證該共識(shí)算法對(duì)系統(tǒng)運(yùn)行的效率、節(jié)點(diǎn)參與度、對(duì)惡意節(jié)點(diǎn)的處理速度等方面都得到了提升,降低了系統(tǒng)的風(fēng)險(xiǎn)。
1 相關(guān)研究
近年來隨著對(duì)區(qū)塊鏈技術(shù)的深入研究,區(qū)塊鏈的共識(shí)機(jī)制研究是區(qū)塊鏈技術(shù)的熱點(diǎn)問題,共識(shí)機(jī)制實(shí)現(xiàn)了各節(jié)點(diǎn)間分布式賬本的統(tǒng)一,是區(qū)塊鏈系統(tǒng)穩(wěn)定運(yùn)行的核心技術(shù)[11]。
袁勇等[12]闡明了目前對(duì)共識(shí)機(jī)制的研究大體分為三類:安全性的提高;激勵(lì)機(jī)制的優(yōu)化;新型區(qū)塊鏈共識(shí)機(jī)制的改進(jìn)。
關(guān)于共識(shí)機(jī)制安全方面的研究,以DPoS為例, DPoS共識(shí)機(jī)制是把部分安全性做為代價(jià)來換取效率的提升,從而更好地適應(yīng)實(shí)際交易。WANG等[13]提出了一種基于區(qū)塊鏈的多惡意節(jié)點(diǎn)雙花攻擊黑名單管理模型,降低了惡意節(jié)點(diǎn)攻擊成功的概率。文獻(xiàn)[14]在分析區(qū)塊鏈存在現(xiàn)有的安全問題時(shí),明確指出攻擊者容易利用算力優(yōu)勢(shì)攻擊網(wǎng)絡(luò),此外高能耗、電子垃圾和昂貴的交易費(fèi)用也是PoW不能長(zhǎng)期發(fā)展的原因。KANG 等[15]建立了基于區(qū)塊鏈的車聯(lián)網(wǎng)機(jī)制,該機(jī)制通過改進(jìn)DPoS共識(shí)機(jī)制增設(shè)信譽(yù)值投票的方法來選舉區(qū)塊生產(chǎn)者,確保更可靠的節(jié)點(diǎn)來生產(chǎn)區(qū)塊,從而降低了惡意節(jié)點(diǎn)通過賄賂權(quán)重高的節(jié)點(diǎn)當(dāng)選為區(qū)塊生產(chǎn)者的概率,增強(qiáng)了車聯(lián)網(wǎng)中數(shù)據(jù)共享的安全性和可追溯性。這種增設(shè)信譽(yù)值投票的方法確實(shí)一定程度上能選取可靠的節(jié)點(diǎn),但仍避免不了惡意節(jié)點(diǎn)賄賂攻擊的問題。以上安全性方面的研究都是以犧牲安全性來換取效率,仍存在較大的安全隱患。文獻(xiàn)[16]提出一種綜合選舉算法CE-DPoS,這種改進(jìn)靈活輕便,同時(shí)提高節(jié)點(diǎn)的活躍程度,但是節(jié)點(diǎn)可能遭受賄賂攻擊篡改設(shè)定好的網(wǎng)絡(luò)信息表,破壞系統(tǒng)的安全性。文獻(xiàn)[17]提出一種基于Kendall tau 距離的DPoS 記賬權(quán)分配方法,通過該方法選出的節(jié)點(diǎn)符合多數(shù)投票節(jié)點(diǎn)的意愿,提高了DPoS的公平性和安全性,但是仍存在節(jié)點(diǎn)投票積極性低的問題。
關(guān)于共識(shí)機(jī)制中激勵(lì)機(jī)制的研究,文獻(xiàn)[18]采用了零行列式策略來對(duì)礦工策略選擇進(jìn)行優(yōu)化,最終達(dá)到了激勵(lì)礦工合作挖礦的目的。陳夢(mèng)蓉等[19]提出了“舉報(bào)獎(jiǎng)勵(lì)”這一激勵(lì)制度,并通過博弈分析確保了在選舉過程中大部分節(jié)點(diǎn)能夠抵御腐敗和賄賂的行為。但是采用獎(jiǎng)勵(lì)的方式提高節(jié)點(diǎn)的參與度無法避免選民為了獲得獎(jiǎng)勵(lì)持續(xù)作惡的問題,極大威脅了系統(tǒng)的安全性。文獻(xiàn)[20]提出一種基于配對(duì)制度的DPoS 共識(shí)機(jī)制。將節(jié)點(diǎn)分為獨(dú)立節(jié)點(diǎn)、主節(jié)點(diǎn)和配基節(jié)點(diǎn),通過主節(jié)點(diǎn)和配基節(jié)點(diǎn)配對(duì)增加節(jié)點(diǎn)間相互作用力,提高各類節(jié)點(diǎn)參與共識(shí)的積極性,從而降低系統(tǒng)中心化程度。但是配基節(jié)點(diǎn)作為三種節(jié)點(diǎn)的紐帶,若配基節(jié)點(diǎn)無利可圖進(jìn)行作惡,則會(huì)極大破壞系統(tǒng)的穩(wěn)定性。
關(guān)于新型區(qū)塊鏈共識(shí)機(jī)制的改進(jìn)方面的研究,隨著人們對(duì)知識(shí)產(chǎn)權(quán)保護(hù)意識(shí)的普遍覺醒,區(qū)塊鏈技術(shù)去中心化、可追溯和不可篡改等特性可以與知識(shí)產(chǎn)權(quán)的登記、確權(quán)、交易等多個(gè)環(huán)節(jié)進(jìn)行錨定。針對(duì)二者的特性,SONG等[21]提出了貢獻(xiàn)值證明機(jī)制 (Proof of Contribution,PoC),將區(qū)塊鏈技術(shù)應(yīng)用于知識(shí)產(chǎn)權(quán)領(lǐng)域,該共識(shí)機(jī)制根據(jù)貢獻(xiàn)值算法將用戶的行為進(jìn)行量化,貢獻(xiàn)值高的節(jié)點(diǎn)獲得記賬權(quán),將數(shù)據(jù)信息永久保存在區(qū)塊鏈上。雖然保留了去中心化和抗硬分叉的特性,但是剔除了代幣獎(jiǎng)勵(lì)違背了經(jīng)濟(jì)學(xué)原理會(huì)使用戶喪失參與的積極性。
2 預(yù)備知識(shí)
2.1 賄賂攻擊
賄賂攻擊是一種在非協(xié)作選擇模型上的攻擊,攻擊者通過超額獎(jiǎng)勵(lì)的方式誘惑礦工在包含攻擊者發(fā)起的鏈上進(jìn)行挖礦,若賄賂攻擊的成本小于正常交易的費(fèi)用,那么這次攻擊就是成功的。在DPoS機(jī)制中,每一個(gè)持幣節(jié)點(diǎn)可以參與到投票和競(jìng)選代表兩個(gè)過程中,節(jié)點(diǎn)的幣齡越大,投票權(quán)重就越大,二者成正相關(guān)的趨勢(shì),因此可能存在惡意節(jié)點(diǎn)賄賂權(quán)重較大的節(jié)點(diǎn)給自己投票的潛在風(fēng)險(xiǎn),如果惡意節(jié)點(diǎn)在區(qū)塊鏈中只是為了獲得更多的利益而沒有能力去生產(chǎn)區(qū)塊,則將會(huì)導(dǎo)致整個(gè)區(qū)塊鏈的生產(chǎn)效率下降,所有節(jié)點(diǎn)的利益都將受到損害。
2.2 Spam攻擊
Spam攻擊最初是指利用非法的方式去提高自己搜索引擎上的排名[22]。在區(qū)塊鏈中,單一節(jié)點(diǎn)在威脅區(qū)塊鏈系統(tǒng)的安全能力有限,但攻擊者可以通過短期內(nèi)進(jìn)行產(chǎn)生大量的交易來使節(jié)點(diǎn)過度活躍來欺詐系統(tǒng),進(jìn)而獲取記賬權(quán)謀取非法利益,這種攻擊方式就是Spam攻擊。
節(jié)點(diǎn)在正常參與共識(shí)時(shí),不會(huì)主動(dòng)成為惡意節(jié)點(diǎn),若節(jié)點(diǎn)能獲得超額收益,那么節(jié)點(diǎn)將會(huì)為了謀取非法私利不惜成為惡意節(jié)點(diǎn),從而嚴(yán)重威脅區(qū)塊鏈的安全性問題。
3 基于節(jié)點(diǎn)貢獻(xiàn)值和信譽(yù)度的DPoS
共識(shí)機(jī)制:DPoS-NCVR
DPoS共識(shí)機(jī)制通過全網(wǎng)節(jié)點(diǎn)投票選舉出部分代理節(jié)點(diǎn),由代理節(jié)點(diǎn)輪流生產(chǎn)區(qū)塊來完成共識(shí)。但是投票需要耗費(fèi)節(jié)點(diǎn)大量的精力而無任何回報(bào),因此會(huì)造成普通節(jié)點(diǎn)的投票積極性低的問題,并且也存在一些惡意節(jié)點(diǎn)通過惡意行為來賄賂普通節(jié)點(diǎn)使自己獲得超額利益的問題。針對(duì)這一問題,本文提出了DPoS的改進(jìn)思想。首先引入貢獻(xiàn)值的概念,將連接度、權(quán)重和節(jié)點(diǎn)綜合評(píng)估三個(gè)因素計(jì)算得出貢獻(xiàn)值,貢獻(xiàn)值最大的節(jié)點(diǎn)獲得新區(qū)塊的記賬權(quán)確保了貢獻(xiàn)值高的節(jié)點(diǎn)具有最高的記賬出塊概率;引入信譽(yù)度獎(jiǎng)懲機(jī)制,對(duì)惡意節(jié)點(diǎn)的攻擊行為進(jìn)行懲罰,對(duì)積極維護(hù)系統(tǒng)的節(jié)點(diǎn)給予獎(jiǎng)勵(lì),降低網(wǎng)絡(luò)中惡意節(jié)點(diǎn)進(jìn)行惡意攻擊行為的機(jī)率,激發(fā)網(wǎng)絡(luò)中節(jié)點(diǎn)共同維護(hù)區(qū)塊鏈系統(tǒng)安全的積極性。
3.1 貢獻(xiàn)值
貢獻(xiàn)值是節(jié)點(diǎn)對(duì)區(qū)塊鏈系統(tǒng)做出貢獻(xiàn)的度量。在區(qū)塊鏈系統(tǒng)中,貢獻(xiàn)值越大表明節(jié)點(diǎn)越穩(wěn)定可靠,具有更大的概率獲得記賬權(quán)。在文中,節(jié)點(diǎn)的貢獻(xiàn)可以看作節(jié)點(diǎn)的連接度、權(quán)重和節(jié)點(diǎn)綜合評(píng)估等因素。這些因素量化的數(shù)值可以表明節(jié)點(diǎn)對(duì)系統(tǒng)貢獻(xiàn)的大小。
貢獻(xiàn)值的評(píng)價(jià)模型定義為
Ci=α·Li+β·Wi+γ·Ei," (1)
其中:Ci是當(dāng)前節(jié)點(diǎn)i的貢獻(xiàn)值,取值范圍為0~1;Li是節(jié)點(diǎn)連接度;Wi是節(jié)點(diǎn)權(quán)重;Ei是節(jié)點(diǎn)綜合評(píng)估;α,β,γ為參數(shù),且α+β+γ=1。
3.1.1 節(jié)點(diǎn)連接度 在區(qū)塊鏈網(wǎng)絡(luò)中,節(jié)點(diǎn)與節(jié)點(diǎn)之間存在關(guān)聯(lián),區(qū)塊鏈網(wǎng)絡(luò)可抽象為無向圖。在網(wǎng)絡(luò)中,與節(jié)點(diǎn)直接相連的節(jié)點(diǎn)稱之為鄰居節(jié)點(diǎn)。如果節(jié)點(diǎn)擁有比較多的鄰居節(jié)點(diǎn),則該節(jié)點(diǎn)在網(wǎng)絡(luò)中是活躍的,節(jié)點(diǎn)越活躍產(chǎn)生的交互信息越多,因此,可作為節(jié)點(diǎn)積極參與交易和對(duì)系統(tǒng)貢獻(xiàn)的依據(jù)。
節(jié)點(diǎn)連接度定義為
其中:li是節(jié)點(diǎn)i所擁有的鄰居節(jié)點(diǎn)的個(gè)數(shù),li值越大節(jié)點(diǎn)i擁有的鄰居節(jié)點(diǎn)數(shù)越多,聯(lián)系越密切,在網(wǎng)絡(luò)中產(chǎn)生的交互信息越多;∑ni=1是系統(tǒng)中初始節(jié)點(diǎn)連接度累計(jì)求和,n為網(wǎng)絡(luò)中全部節(jié)點(diǎn)的個(gè)數(shù);Li則表示節(jié)點(diǎn)i的鄰居節(jié)點(diǎn)占所有節(jié)點(diǎn)鄰居節(jié)點(diǎn)數(shù)的比重,比重越大該節(jié)點(diǎn)連接度Li值越高,該節(jié)點(diǎn)在網(wǎng)絡(luò)中交易活躍。
3.1.2 節(jié)點(diǎn)權(quán)重 PoS機(jī)制中,節(jié)點(diǎn)擁有的代幣數(shù)量越多,擁有代幣的時(shí)間越長(zhǎng),其獲得打包記賬權(quán)的概率越大。由于這種機(jī)制的特點(diǎn),若惡意節(jié)點(diǎn)對(duì)主鏈發(fā)起惡意攻擊,只需持有大量代幣就能獲得記賬權(quán)進(jìn)行惡意攻擊。因此在DPoS-NCVR機(jī)制中做了改進(jìn),節(jié)點(diǎn)的權(quán)重不再作為影響記賬權(quán)的決定性因素,只作為影響貢獻(xiàn)值的部分因素;這樣做既能用代幣來激勵(lì)節(jié)點(diǎn)參與共識(shí),又能將節(jié)點(diǎn)自身利益與節(jié)點(diǎn)行為所捆綁。該設(shè)計(jì)理論上也增強(qiáng)了去中心化性,使得系統(tǒng)中權(quán)重較小但相對(duì)活躍的節(jié)點(diǎn)獲得記賬權(quán)的概率增加。
節(jié)點(diǎn)權(quán)重定義為
其中:wi表示節(jié)點(diǎn)i的權(quán)益,即節(jié)點(diǎn)i所擁有的代幣數(shù);Wi是節(jié)點(diǎn)i的權(quán)重,其代表節(jié)點(diǎn)i所擁有的權(quán)益占網(wǎng)絡(luò)中所有節(jié)點(diǎn)權(quán)益的比值;n為網(wǎng)絡(luò)中節(jié)點(diǎn)的個(gè)數(shù)。由公式可知,節(jié)點(diǎn)擁有的權(quán)益越多,其權(quán)重值越大。
3.1.3 節(jié)點(diǎn)綜合評(píng)估 節(jié)點(diǎn)在網(wǎng)絡(luò)中的狀態(tài)和行為反應(yīng)節(jié)點(diǎn)對(duì)網(wǎng)絡(luò)的影響,該部分設(shè)計(jì)通過對(duì)節(jié)點(diǎn)的性能和投票評(píng)價(jià)進(jìn)行分析評(píng)估,以此來判斷節(jié)點(diǎn)在網(wǎng)絡(luò)中行為的可靠性。
節(jié)點(diǎn)性能計(jì)算公式為
其中:Pi表示節(jié)點(diǎn)i在網(wǎng)絡(luò)中的性能,通過離線時(shí)長(zhǎng)來體現(xiàn);qt代表節(jié)點(diǎn)本輪離線時(shí)長(zhǎng),節(jié)點(diǎn)離線時(shí)長(zhǎng)越長(zhǎng),其節(jié)點(diǎn)性能Pi越低。
除惡意節(jié)點(diǎn)之外的節(jié)點(diǎn)在投票時(shí)有三種選擇,一種是投給貢獻(xiàn)值超出閾值的代理節(jié)點(diǎn),第二種是投給除代理節(jié)點(diǎn)之外的節(jié)點(diǎn),第三種是不投票。因?yàn)橹挥写砉?jié)點(diǎn)才能獲得記賬權(quán),所以普通節(jié)點(diǎn)投向代理節(jié)點(diǎn)的票是有意義的投票,其他節(jié)點(diǎn)獲得投票并無意義。因此,規(guī)定投給代理節(jié)點(diǎn)的票為積極投票,不投票或者投給除代理節(jié)點(diǎn)之外的節(jié)點(diǎn)的票為消極投票。
節(jié)點(diǎn)投票評(píng)價(jià)計(jì)算公式為
其中:e(i)表示節(jié)點(diǎn)i積極投票的票數(shù),∑nj=1e(i)表示節(jié)點(diǎn)i在前n次共識(shí)中節(jié)點(diǎn)i積極投票的票數(shù)的累加;a(i)表示節(jié)點(diǎn)i所持有的票數(shù),∑nj=1a(i)表示節(jié)點(diǎn)i在前n次共識(shí)中持有的票數(shù)累加,規(guī)定節(jié)點(diǎn)可以給自己投票。
節(jié)點(diǎn)綜合評(píng)估公式定義為
Ei=Pi+Ti," (6)
其中:Ei是節(jié)點(diǎn)綜合評(píng)估值,該值體現(xiàn)節(jié)點(diǎn)在網(wǎng)絡(luò)中的綜合表現(xiàn);Pi是節(jié)點(diǎn)性能;Ti是節(jié)點(diǎn)投票評(píng)價(jià)。
貢獻(xiàn)值計(jì)算公式整理為
當(dāng)節(jié)點(diǎn)在網(wǎng)絡(luò)中越活躍連接度就越大,節(jié)點(diǎn)獲得的代幣獎(jiǎng)勵(lì)越多其節(jié)點(diǎn)本身權(quán)重越大;節(jié)點(diǎn)受到其他節(jié)點(diǎn)的積極評(píng)價(jià)多時(shí),Ti的值會(huì)增大,三個(gè)因素的量化數(shù)值增大貢獻(xiàn)值也會(huì)增大,節(jié)點(diǎn)被選取作為記賬節(jié)點(diǎn)的概率就會(huì)增大。因?yàn)樨暙I(xiàn)值模型充分考慮到節(jié)點(diǎn)在網(wǎng)絡(luò)中的行為和對(duì)系統(tǒng)做出的積極行為獎(jiǎng)勵(lì)惡意行為懲罰,因此,用這種評(píng)估模型來評(píng)估節(jié)點(diǎn)是可靠合理的。
3.2 信譽(yù)度
信譽(yù)度是節(jié)點(diǎn)在區(qū)塊鏈網(wǎng)絡(luò)中自身行為表現(xiàn)情況的數(shù)值反應(yīng),節(jié)點(diǎn)進(jìn)行積極行為信譽(yù)度高,節(jié)點(diǎn)進(jìn)行惡意行為則信譽(yù)度會(huì)減少,多次進(jìn)行惡意行為將會(huì)被剔除系統(tǒng)。
信譽(yù)度獎(jiǎng)勵(lì)計(jì)算公式為
信譽(yù)度設(shè)置為100分制,最高值為100,每個(gè)節(jié)點(diǎn)的初始信譽(yù)度為60,即R0=60,節(jié)點(diǎn)通過自身做出積極行為來獲得信譽(yù)度獎(jiǎng)勵(lì)。這些積極行為包括積極投票,成功出塊等因素。當(dāng)節(jié)點(diǎn)的作惡行為超過3次或者信譽(yù)度小于40,該節(jié)點(diǎn)則被剔除出系統(tǒng),不能再參與共識(shí)。
信譽(yù)度懲罰計(jì)算公式為
Ri=Ri-10," (9)
節(jié)點(diǎn)若進(jìn)行惡意行為將被扣除信譽(yù)度分?jǐn)?shù),節(jié)點(diǎn)只有進(jìn)行誠(chéng)實(shí)行為才能在此獎(jiǎng)懲規(guī)則中積累信譽(yù)度分?jǐn)?shù),從而有效約束節(jié)點(diǎn)的行為。
為了解決節(jié)點(diǎn)投票不積極問題和更好地約束節(jié)點(diǎn)行為,本文引入信譽(yù)度模型來規(guī)范節(jié)點(diǎn)的行為,根據(jù)節(jié)點(diǎn)的行為表現(xiàn)進(jìn)行獎(jiǎng)懲,提高節(jié)點(diǎn)的投票積極性及時(shí)剔除惡意節(jié)點(diǎn),從而使系統(tǒng)高效運(yùn)行。
3.3 代幣收益
節(jié)點(diǎn)的積極投票會(huì)獲得代幣獎(jiǎng)勵(lì)。代理節(jié)點(diǎn)不但可以積極投票獲得獎(jiǎng)勵(lì),還可以通過打包區(qū)塊完成記賬獲得代幣獎(jiǎng)勵(lì)。節(jié)點(diǎn)積極投票代幣獎(jiǎng)勵(lì)公式為
Tokeni=Tokeni+1," (10)
Tokeni為節(jié)點(diǎn)i獲得的代幣獎(jiǎng)勵(lì)。節(jié)點(diǎn)積極投票將會(huì)獲得一個(gè)單位的代幣獎(jiǎng)勵(lì)。記賬節(jié)點(diǎn)成功完成出塊并將數(shù)據(jù)鏈接的區(qū)塊鏈上,若上鏈成功則會(huì)獲得記賬獎(jiǎng)勵(lì),記賬節(jié)點(diǎn)代幣獎(jiǎng)勵(lì)公式為
Tokenj=m×Cj+k×Rj," (11)
Tokenj為記賬節(jié)點(diǎn)j獲得的代幣獎(jiǎng)勵(lì)。m,k為比例系數(shù),取值范圍為[0,1]。記賬節(jié)點(diǎn)的代幣獎(jiǎng)勵(lì)與記賬節(jié)點(diǎn)的貢獻(xiàn)值信譽(yù)度有關(guān)聯(lián),所以,節(jié)點(diǎn)通過不斷進(jìn)行誠(chéng)實(shí)行為進(jìn)行貢獻(xiàn)值和信譽(yù)度的提升,從而獲得更多代幣獎(jiǎng)勵(lì)。
3.4 DPoS-NCVR共識(shí)機(jī)制核心步驟
假設(shè)系統(tǒng)中有N個(gè)節(jié)點(diǎn)參與共識(shí),共識(shí)周期為T。
步驟一:節(jié)點(diǎn)通過連接度、權(quán)重、節(jié)點(diǎn)綜合評(píng)估來計(jì)算初始的貢獻(xiàn)值。
步驟二:將超過特定閾值的節(jié)點(diǎn)選擇出來,由其他節(jié)點(diǎn)對(duì)超過閾值節(jié)點(diǎn)進(jìn)行投票,按照獲得票數(shù)多少依次記賬,當(dāng)最后一個(gè)節(jié)點(diǎn)完成記賬,第一輪的共識(shí)周期T結(jié)束。
步驟三:當(dāng)所有記賬節(jié)點(diǎn)都完成記賬,系統(tǒng)將會(huì)通過分析節(jié)點(diǎn)的行為進(jìn)行貢獻(xiàn)值的累計(jì),之后節(jié)點(diǎn)參與下一輪的記賬競(jìng)爭(zhēng),即重復(fù)以上兩個(gè)步驟。
3.5 節(jié)點(diǎn)身份標(biāo)識(shí)
區(qū)塊中包含很多交易信息,為了能夠安全共享數(shù)據(jù)信息,需要選擇出可靠的節(jié)點(diǎn)來生產(chǎn)區(qū)塊,并將正確的信息存儲(chǔ)在區(qū)塊鏈上。因此,為了保證鏈上信息的安全,參與的節(jié)點(diǎn)更傾向選擇可靠并值得信賴的節(jié)點(diǎn)產(chǎn)生區(qū)塊。節(jié)點(diǎn)的貢獻(xiàn)值取值范圍為[0,1],貢獻(xiàn)值超出閾值上界1時(shí)會(huì)被重置。節(jié)點(diǎn)種類分為四種,即普通節(jié)點(diǎn)、候選節(jié)點(diǎn)、代理節(jié)點(diǎn)、惡意節(jié)點(diǎn)。節(jié)點(diǎn)剛加入系統(tǒng)時(shí),節(jié)點(diǎn)會(huì)通過貢獻(xiàn)值的計(jì)算公式(1)進(jìn)行一個(gè)初始化操作,但是剛加入的節(jié)點(diǎn)其未參與過投票并且代幣權(quán)益數(shù)是恒定值。在節(jié)點(diǎn)初始化時(shí),影響節(jié)點(diǎn)貢獻(xiàn)值計(jì)算的因素是連接度。因此,節(jié)點(diǎn)初始的貢獻(xiàn)值的多少取決于連接度的值。節(jié)點(diǎn)身份劃分區(qū)間如表1所示。
1)代理節(jié)點(diǎn),貢獻(xiàn)值在[Nri,1]中為代理節(jié)點(diǎn),其貢獻(xiàn)值大于等于閾值的節(jié)點(diǎn)將被選舉出來進(jìn)入代理節(jié)點(diǎn)集合,節(jié)點(diǎn)在網(wǎng)絡(luò)中收集事務(wù)的信息并且打包成塊,然后用私鑰在這個(gè)塊上簽名。
2)候選節(jié)點(diǎn),貢獻(xiàn)值在[Nwi,Nri)為候選節(jié)點(diǎn),其貢獻(xiàn)值未達(dá)到的代理節(jié)點(diǎn)閾值且比普通節(jié)點(diǎn)閾值大的節(jié)點(diǎn);候選節(jié)點(diǎn)具有與普通節(jié)點(diǎn)一樣的權(quán)力,可以對(duì)代理節(jié)點(diǎn)進(jìn)行投票選出票數(shù)最大的節(jié)點(diǎn)生產(chǎn)區(qū)塊。
3)普通節(jié)點(diǎn),貢獻(xiàn)值在[Nci,Nwi)為普通節(jié)點(diǎn),普通節(jié)點(diǎn)可以隨意加入網(wǎng)絡(luò),其行為是任意的,每個(gè)普通節(jié)點(diǎn)的權(quán)力是平等的,可以對(duì)代理節(jié)點(diǎn)進(jìn)行投票選出記賬節(jié)點(diǎn)。
4)惡意節(jié)點(diǎn),貢獻(xiàn)值在[0,Nci)為惡意節(jié)點(diǎn)。是節(jié)點(diǎn)多次作惡信譽(yù)度低于40的節(jié)點(diǎn),貢獻(xiàn)值將會(huì)被置為零并且剔除系統(tǒng),節(jié)點(diǎn)經(jīng)過懲罰后成為惡意節(jié)點(diǎn)就沒有權(quán)力參加共識(shí)過程。
節(jié)點(diǎn)的初始身份的標(biāo)識(shí)取決于節(jié)點(diǎn)自身初始的狀態(tài)。節(jié)點(diǎn)積極參與投票、生產(chǎn)區(qū)塊、進(jìn)行積極行為,節(jié)點(diǎn)的貢獻(xiàn)值會(huì)累計(jì)增加;但節(jié)點(diǎn)的貢獻(xiàn)值也不會(huì)是無節(jié)制的增加,節(jié)點(diǎn)的貢獻(xiàn)值的上界為1,超出貢獻(xiàn)值上界的節(jié)點(diǎn)其貢獻(xiàn)值會(huì)被重置。這樣做的原因是為了避免貢獻(xiàn)值最高的節(jié)點(diǎn)長(zhǎng)期進(jìn)行記賬,破壞系統(tǒng)的去中心化性和公平性;若節(jié)點(diǎn)有惡意投票、出塊失敗、離線時(shí)長(zhǎng)過長(zhǎng)等行為,則節(jié)點(diǎn)會(huì)受到扣除信譽(yù)度分?jǐn)?shù)的懲罰。當(dāng)節(jié)點(diǎn)連續(xù)3次作惡或者信譽(yù)度分?jǐn)?shù)低于40將會(huì)被標(biāo)記并且剔除。系統(tǒng)中節(jié)點(diǎn)的行為和狀態(tài)如圖1所示。
圖1中,節(jié)點(diǎn)加入網(wǎng)絡(luò)后,會(huì)自動(dòng)執(zhí)行計(jì)算貢獻(xiàn)值的算法計(jì)算其本身的貢獻(xiàn)值,等待系統(tǒng)劃分節(jié)點(diǎn)類型,然后系統(tǒng)會(huì)根據(jù)全網(wǎng)中節(jié)點(diǎn)貢獻(xiàn)值來動(dòng)態(tài)地調(diào)整代理節(jié)點(diǎn)閾值的大小,以保證相對(duì)數(shù)量的可靠節(jié)點(diǎn)參與區(qū)塊的生產(chǎn);其他節(jié)點(diǎn)根據(jù)貢獻(xiàn)值劃分為候選節(jié)點(diǎn)、普通節(jié)點(diǎn)、惡意節(jié)點(diǎn)。然后,具有投票權(quán)的節(jié)點(diǎn)會(huì)給選出的代理節(jié)點(diǎn)進(jìn)行投票,代理節(jié)點(diǎn)根據(jù)票數(shù)的降序排列依次記賬,來完成區(qū)塊的生產(chǎn)。最后,被選取出的代理節(jié)點(diǎn)打包區(qū)塊并在這個(gè)區(qū)塊上簽名,將其鏈接到區(qū)塊鏈網(wǎng)絡(luò)上完成第一次共識(shí)。當(dāng)代理節(jié)點(diǎn)輪流記賬完畢后,稱為一個(gè)共識(shí)過程的周期T。當(dāng)進(jìn)行下一個(gè)周期T時(shí),節(jié)點(diǎn)會(huì)重新通過貢獻(xiàn)值算法評(píng)估出更精確的貢獻(xiàn)值選出下一輪記賬的節(jié)點(diǎn)。隨著系統(tǒng)的正常運(yùn)行,節(jié)點(diǎn)進(jìn)行多次的共識(shí),代理節(jié)點(diǎn)在進(jìn)行多輪積極行為后其貢獻(xiàn)值會(huì)增加,當(dāng)貢獻(xiàn)值超出貢獻(xiàn)值的閾值上界1時(shí),代理節(jié)點(diǎn)的貢獻(xiàn)值重置為候選節(jié)點(diǎn)的閾值下界,即Nwi。節(jié)點(diǎn)貢獻(xiàn)值和信譽(yù)度計(jì)算方法如算法1所示:
算法1 節(jié)點(diǎn)貢獻(xiàn)值和信譽(yù)度計(jì)算算法。
input:初始節(jié)點(diǎn)貢獻(xiàn)值和信譽(yù)度
output:更新節(jié)點(diǎn)貢獻(xiàn)值和信譽(yù)度
begin
C=[]//節(jié)點(diǎn)貢獻(xiàn)值集合
R=[]//節(jié)點(diǎn)信譽(yù)值集合
token=[]//節(jié)點(diǎn)代幣數(shù)集合
計(jì)算節(jié)點(diǎn)n輪共識(shí)的貢獻(xiàn)值
for n
//如果不是惡意節(jié)點(diǎn)初始信譽(yù)度為60
if isNotEvil(C[i])//isEvil()函數(shù)判斷節(jié)點(diǎn)是否為惡意節(jié)點(diǎn)
R[i]=60//若不是惡意節(jié)點(diǎn)初始化為60
else
remove(C[i])//移除惡意節(jié)點(diǎn)
return R[i]
if C[i]>1//節(jié)點(diǎn)閾值大于1,閾值重置
Ci=Nri
return Ci
else if Ci<0//節(jié)點(diǎn)閾值為負(fù),返回空值
return NULL
else//節(jié)點(diǎn)閾值在區(qū)間[0,1],
Ci=α·Li+β·Wi+γ·Ei
return C[i]
update
end
3.6 節(jié)點(diǎn)選舉
DPoS共識(shí)機(jī)制在選取區(qū)塊生產(chǎn)者階段,惡意節(jié)點(diǎn)可以進(jìn)行賄賂攻擊來給自己增加選票,以抬高自己被選為記賬節(jié)點(diǎn)的概率,嚴(yán)重威脅了系統(tǒng)的安全性;而本文提出的DPoS-NCVR共識(shí)機(jī)制的最大的優(yōu)勢(shì)是,在選舉生產(chǎn)者階段,為了確保選出的節(jié)點(diǎn)能夠得到大多數(shù)節(jié)點(diǎn)的認(rèn)可,選擇貢獻(xiàn)大的節(jié)點(diǎn)進(jìn)行區(qū)塊的生產(chǎn)。節(jié)點(diǎn)進(jìn)行誠(chéng)實(shí)行為,節(jié)點(diǎn)自身的貢獻(xiàn)值會(huì)增加,但也不是無節(jié)制的增加。為了保證公平性,貢獻(xiàn)值超過上界閾值1后,節(jié)點(diǎn)會(huì)被重置為候選節(jié)點(diǎn),其貢獻(xiàn)值會(huì)被重置為候選節(jié)點(diǎn)的下界閾;節(jié)點(diǎn)通過積極行為提高貢獻(xiàn)值和信譽(yù)度進(jìn)而獲得更多收益,貢獻(xiàn)值模型確保了被選舉的節(jié)點(diǎn)安全可靠。
3.6.1 選舉生產(chǎn)者 首先,計(jì)算全網(wǎng)節(jié)點(diǎn)的貢獻(xiàn)值,并且初始化其信譽(yù)度分?jǐn)?shù),將參與節(jié)點(diǎn)的貢獻(xiàn)值進(jìn)行降序排序;其次,完成排序后,把超過閾值的節(jié)點(diǎn)選出,加入代理節(jié)點(diǎn)集合;最后,其他節(jié)點(diǎn)對(duì)代理節(jié)點(diǎn)進(jìn)行投票,選出得票數(shù)最高的節(jié)點(diǎn)為記賬節(jié)點(diǎn),記賬節(jié)點(diǎn)來生產(chǎn)區(qū)塊。若記賬節(jié)點(diǎn)發(fā)生異常,如出塊錯(cuò)誤、出塊時(shí)間過長(zhǎng)、離線等問題,則由代理節(jié)點(diǎn)中獲得票數(shù)第二的節(jié)點(diǎn)代替記賬,避免了記賬節(jié)點(diǎn)出現(xiàn)錯(cuò)誤后進(jìn)行過度等待的問題。選舉生產(chǎn)者過程如算法2所示:
算法2 區(qū)塊生產(chǎn)者選舉算法。
input:節(jié)點(diǎn)個(gè)數(shù)
output:生成新區(qū)塊
//計(jì)算節(jié)點(diǎn)貢獻(xiàn)值
for i in range(n):
calculate (C[i])
//對(duì)節(jié)點(diǎn)貢獻(xiàn)值進(jìn)行排序
for i in range(n):
sort(C[i])
//設(shè)置閾值
for i in range(n):
if C[i]gt;Nri
then//貢獻(xiàn)值超過Nri
的節(jié)點(diǎn)進(jìn)入代理節(jié)點(diǎn)集合
count++//統(tǒng)計(jì)記賬節(jié)點(diǎn)的個(gè)數(shù)
break
//獲得票數(shù)最大的代理節(jié)點(diǎn)生產(chǎn)區(qū)塊
MAX=vote[Ni]//MAX為最大票數(shù)
for i in range(count):
if vote[Ni]gt;MAX:
MAX=vote[Ni]
temp1=i
if Ntemp.isActive()://判斷節(jié)點(diǎn)是否正常工作
count--//當(dāng)值為零,本共識(shí)周期結(jié)束進(jìn)行下一個(gè)共識(shí)周期
return Ntemp1.block//正常出塊
else
count--
return Ntemp2.block//代理節(jié)點(diǎn)中票數(shù)第二多的節(jié)點(diǎn)代替出塊
end
3.6.2 節(jié)點(diǎn)惡意行為懲罰 在原DPoS中節(jié)點(diǎn)作惡只進(jìn)行了標(biāo)記,并無對(duì)其做出處理,本文通過設(shè)置信譽(yù)度獎(jiǎng)懲機(jī)制,及時(shí)分析節(jié)點(diǎn)行為并對(duì)節(jié)點(diǎn)的行為做出獎(jiǎng)懲。
步驟1:選出票數(shù)最多的代理節(jié)點(diǎn)收集全網(wǎng)信息。若在此過程中發(fā)生錯(cuò)誤,則導(dǎo)致無法正常出塊或者出塊時(shí)間超出特定的時(shí)間產(chǎn)出無效區(qū)塊,那么則判定為代理節(jié)點(diǎn)出現(xiàn)了惡意行為。
步驟2:出現(xiàn)惡意行為的代理節(jié)點(diǎn)停止打包區(qū)塊,由票數(shù)第二的代理節(jié)點(diǎn)補(bǔ)位頂替記賬節(jié)點(diǎn)繼續(xù)完成出塊過程。
步驟3:出現(xiàn)惡意行為的代理節(jié)點(diǎn)將被系統(tǒng)做出信譽(yù)度減少的懲罰,頂替的代理節(jié)點(diǎn)完成出塊后系統(tǒng)對(duì)其進(jìn)行信譽(yù)度的獎(jiǎng)勵(lì),所有代理節(jié)點(diǎn)都完成一次出塊后,結(jié)束本輪共識(shí)。
步驟4:若節(jié)點(diǎn)多次進(jìn)行惡意行為或者其信譽(yù)度低于40,則其貢獻(xiàn)值被重置為0并且剔除出系統(tǒng)。
算法3 節(jié)點(diǎn)惡意行為懲罰算法。
input:節(jié)點(diǎn)信譽(yù)度輸入
outout:節(jié)點(diǎn)信譽(yù)度更新
begin
//信譽(yù)度初始值為60
for i in range(n):
R=60
//信譽(yù)懲罰,節(jié)點(diǎn)作惡小于3次
iflt;3
Ri=Ri-10
return
//節(jié)點(diǎn)作惡大于3次
ifgt;=3
remove(i)
//節(jié)點(diǎn)信譽(yù)度低于40移除節(jié)點(diǎn)
then
if R lt;40 || flt;3
remove(Ni)
//節(jié)點(diǎn)信譽(yù)度大于100,重置信譽(yù)度
else
if Rgt;100
Ri=60
update
end
3.6.3 Spam攻擊防御機(jī)制 在 DPoS-NCVR共識(shí)機(jī)制中,成為記賬節(jié)點(diǎn)并成功完成記賬會(huì)獲得代幣獎(jiǎng)勵(lì),因此節(jié)點(diǎn)為了謀取不正當(dāng)利益,短時(shí)間可以與其他節(jié)點(diǎn)進(jìn)行大量的垃圾交易,來提高自身的節(jié)點(diǎn)連接度,進(jìn)而提高貢獻(xiàn)值增大了下一輪成為代理節(jié)點(diǎn)的可能。因此,為了系統(tǒng)的安全性,DPoS-NCVR引入了防御機(jī)制。Q為節(jié)點(diǎn)單位時(shí)間內(nèi)的最大合法交易量,單位時(shí)間內(nèi)超出Q值為非法操作,q是單個(gè)節(jié)點(diǎn)交易量,惡意節(jié)點(diǎn)通過單位時(shí)間內(nèi)發(fā)送大量交易惡意積累貢獻(xiàn)值,獲取非法收益。防御機(jī)制如算法4:
算法4 Spam攻擊防御機(jī)制算法。
input:Q,q
outout: C
begin
//判斷節(jié)點(diǎn)單位時(shí)間內(nèi)是否進(jìn)行作惡
If qgt; Q
sleep(1000);
else
update(C[i]);
end
4 實(shí)驗(yàn)分析
為了驗(yàn)證DPoS-NCVR算法的可操作性,本文實(shí)行了以下仿真實(shí)驗(yàn),實(shí)驗(yàn)環(huán)境如下:型號(hào)i7-1165G7的CPU,六核,16GB內(nèi)存,Windows10操作系統(tǒng),集成開發(fā)環(huán)境為PyCharm Professional Edition2020.2.3x64、GoLand2021.3,開發(fā)語言為Python、GoLang。用Python模擬了DPoS-NCVR共識(shí)算法的實(shí)現(xiàn),用GoLang語言模擬DPoS原始算法的實(shí)現(xiàn),將得到的實(shí)驗(yàn)結(jié)果進(jìn)行分析比較。
本文用了圖結(jié)構(gòu)來模擬區(qū)塊鏈中節(jié)點(diǎn)的行為,選取200個(gè)節(jié)點(diǎn)來進(jìn)行仿真實(shí)驗(yàn),圖的節(jié)點(diǎn)表示區(qū)塊鏈中的參與節(jié)點(diǎn),圖的邊表示不同節(jié)點(diǎn)之間的交互關(guān)系,設(shè)定貢獻(xiàn)值最大閾值為1,最小為0,記賬節(jié)點(diǎn)貢獻(xiàn)值超過1,則該節(jié)點(diǎn)閾值重置為候選節(jié)點(diǎn)的閾值。每個(gè)節(jié)點(diǎn)初始信譽(yù)度為60,閾值為100,當(dāng)節(jié)點(diǎn)進(jìn)行積極行為的信譽(yù)度積累超過100則重置為60,按此進(jìn)行多次實(shí)驗(yàn),觀察實(shí)驗(yàn)結(jié)果。
4.1 節(jié)點(diǎn)活躍度對(duì)比實(shí)驗(yàn)
節(jié)點(diǎn)活躍度指節(jié)點(diǎn)在系統(tǒng)中進(jìn)行積極投票的程度,引入獎(jiǎng)懲機(jī)制和收益獎(jiǎng)勵(lì)主要是為了調(diào)動(dòng)節(jié)點(diǎn)投票的積極性讓節(jié)點(diǎn)積極參與投票。本實(shí)驗(yàn)設(shè)置了200個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)設(shè)置一個(gè)活躍因子屬性,活躍因子是介于0到1之間的隨機(jī)數(shù),當(dāng)活躍因子大于0.5,證明該節(jié)點(diǎn)是活躍的,對(duì)于小于0.5閾值的節(jié)點(diǎn),由于引入獎(jiǎng)勵(lì)機(jī)制,能夠激勵(lì)節(jié)點(diǎn)活躍起來進(jìn)而參與投票。對(duì)DPoS-NCVR與DPoS共識(shí)機(jī)制進(jìn)行實(shí)驗(yàn)比較,觀察數(shù)據(jù)節(jié)點(diǎn)活躍度占比實(shí)驗(yàn)(圖2)。
由圖2可知,隨著共識(shí)次數(shù)的增加,節(jié)點(diǎn)不斷進(jìn)行積極行為,DPoS活躍節(jié)點(diǎn)的占比大約在50%左右;DPoS-NCVR的活躍節(jié)點(diǎn)隨著共識(shí)次數(shù)的增加而逐漸增加,第十次共識(shí)活躍節(jié)點(diǎn)顯然占比80%以上,原因是引入收益機(jī)制后,節(jié)點(diǎn)進(jìn)行積極投票有利可圖,代幣獎(jiǎng)勵(lì)確實(shí)能夠調(diào)動(dòng)一部分節(jié)點(diǎn)參與投票的積極性。系統(tǒng)通過捆綁參與節(jié)點(diǎn)的自身利益來調(diào)動(dòng)其投票的積極性,節(jié)約了系統(tǒng)資源。由圖2可知,積極投票的節(jié)點(diǎn)占比越來越高,積極投票效率明顯提高,實(shí)驗(yàn)數(shù)據(jù)表明該方案具有可行性。
4.2 節(jié)點(diǎn)投票收益比較實(shí)驗(yàn)
為了改進(jìn)DPoS中節(jié)點(diǎn)投票不積極問題,引入了激勵(lì)機(jī)制促使系統(tǒng)中節(jié)點(diǎn)積極投票。節(jié)點(diǎn)參與投票會(huì)將十個(gè)單位的代幣進(jìn)行質(zhì)押;每一次共識(shí)中,節(jié)點(diǎn)積極投票會(huì)獲得一個(gè)單位代幣獎(jiǎng)勵(lì),若節(jié)點(diǎn)在本輪次的投票環(huán)節(jié)中消極投票,將會(huì)被扣除一個(gè)單位的代幣,這樣節(jié)點(diǎn)積極投票會(huì)獲得收益,不積極投票就會(huì)受到懲罰。節(jié)點(diǎn)投票收益對(duì)比結(jié)果見圖3。
圖3中,第一次共識(shí)處的代幣數(shù)量表示節(jié)點(diǎn)初始代幣數(shù)量。由實(shí)驗(yàn)可知,節(jié)點(diǎn)1,節(jié)點(diǎn) 6, 節(jié)點(diǎn)9初始時(shí)的代幣數(shù)量為10,節(jié)點(diǎn)1隨著共識(shí)輪次的增加積極進(jìn)行投票,在該收益機(jī)制下獲得的代幣獎(jiǎng)勵(lì)越來越多,到第10次共識(shí)結(jié)束,獲得的代幣獎(jiǎng)勵(lì)累計(jì)為19;節(jié)點(diǎn)9的代幣數(shù)量是先減少后緩慢增加,原因是,節(jié)點(diǎn)9一開始投票不積極被扣除了代幣,由于自身利益被損害,節(jié)點(diǎn)在下一輪共識(shí)中將會(huì)努力積極投票避免自己的權(quán)益被損害,引入獎(jiǎng)勵(lì)機(jī)制明顯調(diào)動(dòng)了節(jié)點(diǎn)投票的積極性;節(jié)點(diǎn)6的代幣數(shù)量成遞減趨勢(shì),原因是節(jié)點(diǎn)6節(jié)點(diǎn)是惡意節(jié)點(diǎn),在每次共識(shí)中不積極參與投票,其會(huì)被沒收一個(gè)單位的代幣;因?yàn)閻阂夤?jié)點(diǎn)在系統(tǒng)中長(zhǎng)期存在會(huì)降低系統(tǒng)的效率,所以當(dāng)節(jié)點(diǎn)質(zhì)押的代幣被罰光后會(huì)被剔除系統(tǒng)。
4.3 惡意節(jié)點(diǎn)占比實(shí)驗(yàn)
在DPoS共識(shí)機(jī)制中,當(dāng)惡意節(jié)點(diǎn)做惡時(shí),算法并沒有采取任何應(yīng)對(duì)措施,只是對(duì)惡意節(jié)點(diǎn)進(jìn)行了簡(jiǎn)單的標(biāo)記, DPoS中算法最多允許1/3的節(jié)點(diǎn)是惡意或存在故障的節(jié)點(diǎn);惡意節(jié)點(diǎn)的存在極大地破壞了系統(tǒng)的安全性,因此在DPoS-NCVR中引入了應(yīng)對(duì)措施,將節(jié)點(diǎn)的信譽(yù)度分?jǐn)?shù)作為準(zhǔn)繩,規(guī)范節(jié)點(diǎn)行為,避免節(jié)點(diǎn)淪為惡意節(jié)點(diǎn);當(dāng)節(jié)點(diǎn)進(jìn)行惡意行為時(shí)信譽(yù)度分?jǐn)?shù)就會(huì)被扣除,當(dāng)信譽(yù)分?jǐn)?shù)被減到一定的分?jǐn)?shù)后節(jié)點(diǎn)將會(huì)被系統(tǒng)剔除。惡意節(jié)點(diǎn)占比實(shí)驗(yàn)如圖4所示。
在初始狀態(tài)時(shí),惡意節(jié)點(diǎn)的比例在系統(tǒng)中占比為1/3左右;隨著共識(shí)輪次的增加,屢次作惡的節(jié)點(diǎn)會(huì)被系統(tǒng)檢測(cè)并標(biāo)記,進(jìn)行扣除信譽(yù)度和代幣的懲罰,在第七次共識(shí)中可以發(fā)現(xiàn)惡意節(jié)點(diǎn)所占比例幾乎為零,其原因?yàn)楣?jié)點(diǎn)的信譽(yù)分?jǐn)?shù)過低或質(zhì)押的代幣被罰光,被系統(tǒng)剔除。實(shí)驗(yàn)數(shù)據(jù)充分驗(yàn)證了該機(jī)制的可行性。
4.4 貢獻(xiàn)值實(shí)驗(yàn)
本文通過貢獻(xiàn)值模型來計(jì)算貢獻(xiàn)值,根據(jù)貢獻(xiàn)值模型選出對(duì)系統(tǒng)貢獻(xiàn)最高的可靠節(jié)點(diǎn),作為記賬節(jié)點(diǎn)生產(chǎn)區(qū)塊。影響貢獻(xiàn)值的因素有連接度、權(quán)重、節(jié)點(diǎn)綜合評(píng)估等因素,由于這些貢獻(xiàn)值的影響因素是動(dòng)態(tài)變化的,所以貢獻(xiàn)值是動(dòng)態(tài)變化的;多次共識(shí)后節(jié)點(diǎn)進(jìn)行積極行為貢獻(xiàn)值會(huì)增加。為了驗(yàn)證節(jié)點(diǎn)在做誠(chéng)實(shí)行為后貢獻(xiàn)值的變化情況,在200個(gè)節(jié)點(diǎn)中選取具有代表性的節(jié)點(diǎn)并記為節(jié)點(diǎn)1、節(jié)點(diǎn)4、節(jié)點(diǎn)8。初始狀態(tài),以節(jié)點(diǎn)的自身的連接度和權(quán)重值進(jìn)行計(jì)算作為初始貢獻(xiàn)值;隨著共識(shí)輪次的增加,節(jié)點(diǎn)在線狀況好,進(jìn)行積極投票積極行為。在進(jìn)行多次共識(shí)后,貢獻(xiàn)值增加。貢獻(xiàn)值實(shí)驗(yàn)如圖5所示。
選取節(jié)點(diǎn)標(biāo)記為節(jié)點(diǎn)1、節(jié)點(diǎn)4、節(jié)點(diǎn)8的貢獻(xiàn)值變化情況。節(jié)點(diǎn)1、節(jié)點(diǎn)4、節(jié)點(diǎn)8在進(jìn)行多輪共識(shí)后,節(jié)點(diǎn)的貢獻(xiàn)值逐漸遞增。由公式(2)可知,節(jié)點(diǎn)在網(wǎng)絡(luò)中越活躍其連接度li值越大,Li也越大;由公式(3)可知,節(jié)點(diǎn)進(jìn)行積極投票或完成記賬會(huì)獲得代幣獎(jiǎng)勵(lì),其Wi值也會(huì)增大;由公式(6)可知,節(jié)點(diǎn)性能越高和節(jié)點(diǎn)投票評(píng)價(jià)的值越大,其Ei值會(huì)相應(yīng)增大。綜上,在節(jié)點(diǎn)進(jìn)行誠(chéng)實(shí)行為時(shí),其貢獻(xiàn)值Ci也呈遞增趨勢(shì)。該實(shí)驗(yàn)充分驗(yàn)證了經(jīng)過貢獻(xiàn)值模型選出的節(jié)點(diǎn)是合理可靠的。
4.5 運(yùn)算效率實(shí)驗(yàn)
為了驗(yàn)證改進(jìn)后的DPoS-NCVR算法更具有安全性,本實(shí)驗(yàn)?zāi)M網(wǎng)絡(luò)中50個(gè)節(jié)點(diǎn)時(shí),將DPoS原始算法與DPoS-NCVR共識(shí)機(jī)制運(yùn)行的時(shí)間消耗進(jìn)行實(shí)驗(yàn)比較。運(yùn)算效率實(shí)驗(yàn)如圖6所示。
由圖6可知,DPoS-NCVR共識(shí)算法需要計(jì)算貢獻(xiàn)值和信譽(yù)度,所以消耗的時(shí)間比原始DPoS共識(shí)機(jī)制多。通過貢獻(xiàn)值選出的節(jié)點(diǎn)可信度高,可信度高的節(jié)點(diǎn)更容易獲得記賬權(quán),進(jìn)而保證選出的節(jié)點(diǎn)在進(jìn)行工作時(shí)更加可靠安全。因此,DPoS-NCVR共識(shí)機(jī)制比DPoS共識(shí)機(jī)制安全性更高。
5 安全性分析
為了保證區(qū)塊鏈系統(tǒng)的安全性和可靠性,提升系統(tǒng)的效率,本文方案主要引入了貢獻(xiàn)值、信譽(yù)度。分析可知,在貢獻(xiàn)值模型中,貢獻(xiàn)值反應(yīng)節(jié)點(diǎn)在網(wǎng)絡(luò)中的所做的貢獻(xiàn)的大小,信譽(yù)度反應(yīng)節(jié)點(diǎn)自身所作誠(chéng)實(shí)行為的情況;引入獎(jiǎng)懲機(jī)制,規(guī)范了節(jié)點(diǎn)行為,降低了惡意節(jié)點(diǎn)作惡的概率,激勵(lì)節(jié)點(diǎn)共同維護(hù)區(qū)塊鏈系統(tǒng)。
由于影響貢獻(xiàn)值的因素很多,其中最嚴(yán)重的是節(jié)點(diǎn)做出大量虛假的交易行為來騙取貢獻(xiàn)值,如果節(jié)點(diǎn)不滿足現(xiàn)在所獲得收益愿意為了更大的利益鋌而走險(xiǎn),將會(huì)打亂系統(tǒng)的平衡,極大破壞系統(tǒng)穩(wěn)定性。引入Spam防御機(jī)制,限制了節(jié)點(diǎn)大量交易的行為,當(dāng)節(jié)點(diǎn)單位時(shí)間內(nèi)產(chǎn)生的交易q的量大于節(jié)點(diǎn)單位時(shí)間合法交易的最大量Q時(shí),則證明節(jié)點(diǎn)正在進(jìn)行非法積累連接度的行為,防御機(jī)制就會(huì)檢測(cè)到節(jié)點(diǎn)的惡意行為對(duì)其限制交易,并進(jìn)行信譽(yù)度的懲罰,多次作惡節(jié)點(diǎn)就被剔除系統(tǒng)。
DPoS共識(shí)算法中,節(jié)點(diǎn)所持有票數(shù)跟自身的權(quán)益正相關(guān),節(jié)點(diǎn)可以根據(jù)自身權(quán)益參與投票選取代理,選取票數(shù)最高的前21個(gè)節(jié)點(diǎn)輪流記賬,因此,可能存在惡意節(jié)點(diǎn)賄賂權(quán)益大的節(jié)點(diǎn)給自己投票發(fā)起賄賂攻擊;在DPoS-NCVR共識(shí)算法中,攻擊者很難發(fā)起賄賂攻擊,因?yàn)楣?jié)點(diǎn)傾向于將票投給貢獻(xiàn)值大的節(jié)點(diǎn),此投票行為是積極投票的概率大,節(jié)點(diǎn)為了獲得收益會(huì)選擇進(jìn)行積極行為,避免了腐敗問題。
貢獻(xiàn)值是由多方面因素所決定的,因此不容易遭受惡意攻擊;引入信譽(yù)度獎(jiǎng)懲機(jī)制,節(jié)點(diǎn)作惡會(huì)被懲罰,降低信譽(yù)度分?jǐn)?shù),影響其收益;本文提出的收益機(jī)制中,節(jié)點(diǎn)積極投票會(huì)獲得代幣獎(jiǎng)勵(lì),節(jié)點(diǎn)選擇誠(chéng)實(shí)行為比接受賄賂所獲得的利益大,節(jié)點(diǎn)在規(guī)則中進(jìn)行誠(chéng)實(shí)行為貢獻(xiàn)值就會(huì)不斷累積,在下一輪進(jìn)入代理節(jié)點(diǎn)集合的概率會(huì)增大; 因此,在DPoS-NCVR共識(shí)機(jī)制中,節(jié)點(diǎn)會(huì)選擇誠(chéng)實(shí)行為累積自身貢獻(xiàn)值,達(dá)到自身合法利益的最大化從而降低了賄賂攻擊的概率。
通過“4.1”實(shí)驗(yàn)得知,隨著共識(shí)次數(shù)增加,節(jié)點(diǎn)投票占比可達(dá)到80%左右。原因是每一輪共識(shí)中,節(jié)點(diǎn)進(jìn)行積極投票會(huì)增加節(jié)點(diǎn)自身的信譽(yù)度分?jǐn)?shù),也會(huì)獲得代幣獎(jiǎng)勵(lì),因此,節(jié)點(diǎn)愿意為了收益去進(jìn)行誠(chéng)實(shí)行為,所以積極投票的節(jié)點(diǎn)占比越來越高。收益機(jī)制確實(shí)能夠調(diào)動(dòng)一部分節(jié)點(diǎn)積極參與投票,提高節(jié)點(diǎn)的工作效率,節(jié)約了系統(tǒng)資源。
通過“4.2”實(shí)驗(yàn)可知,節(jié)點(diǎn)1代幣數(shù)量遞增的原因是,節(jié)點(diǎn)進(jìn)行積極投票獲得系統(tǒng)的代幣獎(jiǎng)勵(lì);節(jié)點(diǎn)6為惡意節(jié)點(diǎn),節(jié)點(diǎn)作惡會(huì)被沒收代幣,減少信譽(yù)度,若惡意節(jié)點(diǎn)連續(xù)作惡直接被剔除系統(tǒng)。收益機(jī)制利用了經(jīng)濟(jì)學(xué)原理,調(diào)動(dòng)節(jié)點(diǎn)投票積極性,減少惡意節(jié)點(diǎn)作惡概率,激發(fā)了節(jié)點(diǎn)參與共識(shí)的積極性,提高系統(tǒng)的共識(shí)效率。
DPoS共識(shí)機(jī)制中心化問題嚴(yán)重,在DPoS-NVCR共識(shí)機(jī)制中,貢獻(xiàn)值模型中引入連接度、權(quán)重和節(jié)點(diǎn)綜合評(píng)估,其中連接度和節(jié)點(diǎn)綜合評(píng)估的引入,弱化了DPoS共識(shí)機(jī)制中權(quán)益與票數(shù)的關(guān)聯(lián),引入獎(jiǎng)懲機(jī)制,極大地調(diào)動(dòng)了普通的積極節(jié)點(diǎn)參與共識(shí)的積極性;與原DPoS共識(shí)機(jī)制相比,DPoS-NVCR降低了權(quán)益大且未對(duì)系統(tǒng)做出相應(yīng)貢獻(xiàn)的節(jié)點(diǎn)記賬概率,促進(jìn)了網(wǎng)絡(luò)中節(jié)點(diǎn)的公平公正,增強(qiáng)了區(qū)塊鏈的去中心化性。
6 結(jié) 語
本文針對(duì)DPoS共識(shí)算法中存在的節(jié)點(diǎn)投票積極性低和惡意節(jié)點(diǎn)作惡?jiǎn)栴},提出了一種基于節(jié)點(diǎn)貢獻(xiàn)值和信譽(yù)度的DPoS共識(shí)算法改進(jìn)。首先提出了貢獻(xiàn)值模型,根據(jù)節(jié)點(diǎn)在系統(tǒng)中的表現(xiàn)選取記賬節(jié)點(diǎn),增加去中心化程度,使系統(tǒng)變得公平公正。其次,設(shè)置了信譽(yù)度獎(jiǎng)懲機(jī)制,積極行為會(huì)累積信譽(yù)度積分,惡意行為會(huì)被懲罰信譽(yù)度積分,該機(jī)制既提高了節(jié)點(diǎn)投票的積極性,又有效遏制了節(jié)點(diǎn)腐敗問題。設(shè)置收益機(jī)制,節(jié)點(diǎn)進(jìn)行積極投票獲得相應(yīng)的代幣獎(jiǎng)勵(lì),收益機(jī)制激勵(lì)節(jié)點(diǎn)成為活躍的狀態(tài)進(jìn)而增加投票的可能性,使區(qū)塊鏈系統(tǒng)高效運(yùn)行。
其中,提出的Spam防御機(jī)制算法防御機(jī)制較弱,未來工作將進(jìn)一步加強(qiáng)算法的安全性,提高算法效率。Spam防御機(jī)制確保了DPoS-NCVR算法自身的安全性。通過實(shí)驗(yàn)分析得出DPoS-NCVR共識(shí)算法比DPoS共識(shí)機(jī)制更具有更高的安全性和穩(wěn)定性,提高節(jié)點(diǎn)投票參與程度和遏制惡意節(jié)點(diǎn)作惡。
參考文獻(xiàn):
[1] NAKAMOTO S. Bitcoin: a peer-to-peer electronic cash system[EB/OL](2008-10-31) [2022-02-22]. https://bitcoin. org/bitcoin. pdf.
[2] MCGHIN T, CHOO K K R, LIU C Z, et al. Blockchain in healthcare applications: research challenges and opportunities[J]. Journal of Network and Computer Applications, 2019, 135: 62-75.
[3] MENDLING J, WEBER I, VAN DER AALST W, et al. Blockchains for business process management-challenges and opportunities[J]. ACM Transactions on Management Information Systems, 2018, 9(1): 1-16.
[4] 于金剛, 張弘, 李姝, 等. 基于區(qū)塊鏈的物聯(lián)網(wǎng)數(shù)據(jù)共享模型[J]. 小型微型計(jì)算機(jī)系統(tǒng), 2019, 40(11): 2324-2329.
[5] LI C, PALANISAMY B. Comparison of decentralization in DPoS and PoW blockchains[C]//CHEN Z, CUI L, PALANISAMY B, et al. International Conference on Blockchain. Cham: Springer, 2020: 18-32.
[6] 王雷,任南,李保珍.區(qū)塊鏈 51% 雙花攻擊的進(jìn)化博弈及防控策略研究[J]. 計(jì)算機(jī)工程與應(yīng)用, 2020, 56(3): 28-34.
[7] KING S, NADAL S. Ppcoin: peer-to-peer crypto-currency with proof-of-stake[EB/OL].[2022-03-19].https://www.researchgate.net/publication/265116876/.
[8] LI W T, ANDREINA S, BOHLI J M, et al. Securing proof-of-stake blockchain protocols[C]//JOAQUIN G A, GUILLERMO N A,HANNES H,et al,
Data Privacy Management,Cryptocurrencies and Blockchain Technology.Oslo:Springer,
2017: 297-315.
[9] 劉懿中,劉建偉,喻輝.區(qū)塊鏈共識(shí)機(jī)制研究:典型方案對(duì)比[J].中興通訊技術(shù),2018,24(06):2-7.
[10] NGUYEN C T, HOANG D T, NGUYEN D N, et al. Proof-of-stake consensus mechanisms for future blockchain networks: fundamentals, applications and opportunities[J]. IEEE Access, 2019, 7: 85727-85745.
[11] ZHANG C Q, WU C S, WANG X Y. Overview of Blockchain consensus mechanism[C]. New York: Association for Computing Machinery, 2020.
[12] 袁勇, 王飛躍. 區(qū)塊鏈技術(shù)發(fā)展現(xiàn)狀與展望[J]. 自動(dòng)化學(xué)報(bào), 2016, 42(4): 481-494.
[13] WANG J L, LIU Q, SONG B Y. Blockchain-based multi-malicious double-spending attack blacklist management model[J]. The Journal of Supercomputing, 2022, 78(12): 14726-14755.
[14] KAUR M, KHAN M Z, GUPTA S, et al. MBCP: Performance analysis of large scale mainstream blockchain consensus protocols[J]. IEEE Access, 2021, 9: 80931-80944.
[15] KANG J W, XIONG Z H, NIYATO D, et al. Toward secure blockchain-enabled internet of vehicles: optimizing consensus management using reputation and contract theory[J]. IEEE Transactions on Vehicular Technology, 2019, 68(3): 2906-2920.
[16] 王兵,李輝靈,牛新征.基于綜合選舉的DPoS共識(shí)算法[J].計(jì)算機(jī)工程,2022,48(6):50-56.
[17] 王碩,付曉東,岳昆,等.節(jié)點(diǎn)偏好一致性最大化的DPoS記賬權(quán)分配[J].小型微型計(jì)算機(jī)系統(tǒng),2023,44(3):651-657.
[18] 唐長(zhǎng)兵,楊珍,鄭忠龍,等.PoW共識(shí)算法中的博弈困境分析與優(yōu)化[J].自動(dòng)化學(xué)報(bào),2017,43(9):1520-1531.
[19] 陳夢(mèng)蓉, 林英, 蘭微, 等. 基于“獎(jiǎng)勵(lì)制度”的DPoS共識(shí)機(jī)制改進(jìn)[J]. 計(jì)算機(jī)科學(xué), 2020, 47(2): 269-275.
[20] 張雅萍,任秀麗.基于配對(duì)制度的DPoS共識(shí)機(jī)制[J].計(jì)算機(jī)應(yīng)用研究,2021,38(10):2909-2914.
[21] SONG H Y, ZHU N F, XUE R X, et al. Proof-of-contribution consensus mechanism for blockchain and its application in intellectual property protection[J]. Information Processing & Management, 2021, 58(3): 102507.
[22] RAO S, VERMA A K, BHATIA T. A review on social Spam detection: challenges, open issues, and future directions[J]. Expert Systems with Applications, 2021, 186: 115742.
Improvement of DPoS Consensus Algorithm Based on Node Contribution Value and Reputation
ZHOU Zhen, ZHAO Jindong
(School of Computer and Control Engineering, Yantai University, Yantai 264005, China)
Abstract:Aiming at the problems of low enthusiasm of nodes in DPoS consensus algorithm and malicious nodes doing evil, this paper suggests a Delegated Proof-of-Stake based on Node Contribution Value and Reputation (DPoS-NCVR). Firstly, the concept of connectivity is introduced and the contribution value is calculated by quantifying the state and behavior of nodes in the system through the contribution value model. Then the nodes are divided into different levels by a specific contribution threshold to identify the identity of the nodes, and then the agent nodes are selected for accounting. Finally, the reputation model is introduced to reward and punish the behavior of nodes, and the repeated evil nodes are removed from the system, so as to improve the enthusiasm of nodes to participate in voting. In the simulation environment, the consensus of DPOS-NCVR has been carried out for many times. Compared with DPoS, the active degree of nodes is significantly improved and the proportion of malicious nodes is significantly reduced. Experimental results show that DPoS-NCVR can effectively improve the enthusiasm of nodes to vote, reduce the possibility of nodes doing evil, reduce the proportion of malicious nodes, and enhance the security of the system.
Keywords:connectivity; consensus mechanism; contribution value; credibility; malicious node
(責(zé)任編輯 李春梅)