摘要:針對DPoS共識算法中節(jié)點投票積極性低和惡意節(jié)點作惡的問題,提出了一種基于節(jié)點貢獻值和信譽度的DPoS共識機制DPoS-NCVR,首先引入連接度概念,通過貢獻值模型將系統(tǒng)中節(jié)點的狀態(tài)和行為等因素進行量化計算得出貢獻值;其次,通過特定的貢獻值閾值將節(jié)點劃分為不同等級,以此來標識節(jié)點的身份,進而選出代理節(jié)點進行記賬;最后,引入信譽度模型,對節(jié)點行為進行獎懲,并且將屢次作惡的節(jié)點剔除系統(tǒng),從而提高節(jié)點參與投票的積極性。在仿真環(huán)境下,DPoS-NCVR再進行了多次共識,與DPoS相比節(jié)點的活躍度顯著提高、惡意節(jié)點占比明顯減少。實驗結果表明,DPoS-NCVR能有效地提高節(jié)點投票的積極性,降低節(jié)點作惡的可能性,減少惡意節(jié)點占比,增強了系統(tǒng)的安全性。
關鍵詞:連接度;共識機制;貢獻值;信譽度;惡意節(jié)點
中圖分類號:TP311.13
文獻標志碼:A
2008年,區(qū)塊鏈這種具有分布式特性的賬本首次被提出,文獻[1]詳細闡述了如何建立一套去中心化,無需基礎信任和無中心化機構背書的點對點的交易系統(tǒng),并且提出了一種數字加密貨幣——比特幣。隨著區(qū)塊鏈技術的不斷發(fā)展,區(qū)塊鏈已經應用于醫(yī)療[2]、金融[3]、物聯網[4]、數字資產等多個領域。其中共識機制是區(qū)塊鏈技術的重要組成部分之一,其維護區(qū)塊鏈系統(tǒng)正常運行,是一種使不受信任的參與者建立信任關系的有效機制。所以,如何在決策高度分散化的去中心化系統(tǒng),使得互不信任的節(jié)點有效的對區(qū)塊數據達成共識,是區(qū)塊鏈技術研究的重點問題。目前區(qū)塊鏈分三種類型:公有鏈、聯盟鏈和私有鏈。公有鏈的主流共識算法為工作量證明(Proof of Work,PoW)、權益證明(Proof of Stake,PoS)以及授權股權證明[5](Delegated Proof of Stake,DPoS)。
PoW共識機制的核心思想是區(qū)塊鏈網絡中的各個節(jié)點互相競爭算力,將系統(tǒng)給定的隨機值(nonce)通過計算來得出相匹配的哈希值的數學問題,從而保證區(qū)塊鏈網絡分布式記賬的統(tǒng)一問題和共識過程的安全性。由于高度依賴節(jié)點的算力,所以PoW共識機制保證了系統(tǒng)的安全運行和數據的不可篡改。但是,該共識機制容易受到天然的雙花攻擊影響[6],最重要的是PoW共識機制對每個參與挖礦節(jié)點的算力具有極高的要求,因此容易造成資源的浪費,能源效率低下。
為了解決使用PoW挖礦出現的大量資源消耗問題,KING等首次提出PoS共識機制,在點點幣(Peercoin)[7]中實現了PoS,PoS共識機制中引入了“幣齡”,作為權益的概念,把節(jié)點所持有的代幣數量和持有的天數作為競爭記賬權的依據,在創(chuàng)世區(qū)塊中寫明股權分配比例,之后通過交易的方式逐漸分配給各個節(jié)點,通過給節(jié)點發(fā)放利息的方式新增代幣。通過充分論證與實踐被認為具有可擴展性和可行性,對能耗問題起到了緩解的作用,但PoS共識機制也存在“Nothing of Stake”[8]的安全性問題。
DPoS作為PoS的改進方案,其記賬權由節(jié)點投票產生,普通節(jié)點不但可以投票給相對可信的代表作為區(qū)塊生產者,也可以選擇在下一輪投票環(huán)節(jié)中通過不投票而解雇區(qū)塊生產者[9]。在DPoS共識機制中,由于每個節(jié)點都能夠自主決定其信任的授權節(jié)點,且由這些授權節(jié)點輪流記賬生成新區(qū)塊,與PoS相比,減少了參與驗證和記賬的節(jié)點數量,實現了快速共識驗證[10]。但是,由于選舉代表需要消耗大量的時間和算力,普通節(jié)點獲得不了自身期望的利益,會出現不積極參與投票的現象。針對現有區(qū)塊鏈的 DPoS 機制中存在節(jié)點投票不積極和惡意節(jié)點作惡的問題,大都局限于針對一方面進行改進,本研究參考上述研究成果,運用更加優(yōu)化的激勵制度提高節(jié)點參與積極性和降低節(jié)點作惡概率,提出了基于節(jié)點貢獻值和信譽度的DPoS的共識算法DPoS-NCVR(Delegated Proof of Stake based on Node Contribution Value and Reputation)。經過實驗驗證該共識算法對系統(tǒng)運行的效率、節(jié)點參與度、對惡意節(jié)點的處理速度等方面都得到了提升,降低了系統(tǒng)的風險。
1 相關研究
近年來隨著對區(qū)塊鏈技術的深入研究,區(qū)塊鏈的共識機制研究是區(qū)塊鏈技術的熱點問題,共識機制實現了各節(jié)點間分布式賬本的統(tǒng)一,是區(qū)塊鏈系統(tǒng)穩(wěn)定運行的核心技術[11]。
袁勇等[12]闡明了目前對共識機制的研究大體分為三類:安全性的提高;激勵機制的優(yōu)化;新型區(qū)塊鏈共識機制的改進。
關于共識機制安全方面的研究,以DPoS為例, DPoS共識機制是把部分安全性做為代價來換取效率的提升,從而更好地適應實際交易。WANG等[13]提出了一種基于區(qū)塊鏈的多惡意節(jié)點雙花攻擊黑名單管理模型,降低了惡意節(jié)點攻擊成功的概率。文獻[14]在分析區(qū)塊鏈存在現有的安全問題時,明確指出攻擊者容易利用算力優(yōu)勢攻擊網絡,此外高能耗、電子垃圾和昂貴的交易費用也是PoW不能長期發(fā)展的原因。KANG 等[15]建立了基于區(qū)塊鏈的車聯網機制,該機制通過改進DPoS共識機制增設信譽值投票的方法來選舉區(qū)塊生產者,確保更可靠的節(jié)點來生產區(qū)塊,從而降低了惡意節(jié)點通過賄賂權重高的節(jié)點當選為區(qū)塊生產者的概率,增強了車聯網中數據共享的安全性和可追溯性。這種增設信譽值投票的方法確實一定程度上能選取可靠的節(jié)點,但仍避免不了惡意節(jié)點賄賂攻擊的問題。以上安全性方面的研究都是以犧牲安全性來換取效率,仍存在較大的安全隱患。文獻[16]提出一種綜合選舉算法CE-DPoS,這種改進靈活輕便,同時提高節(jié)點的活躍程度,但是節(jié)點可能遭受賄賂攻擊篡改設定好的網絡信息表,破壞系統(tǒng)的安全性。文獻[17]提出一種基于Kendall tau 距離的DPoS 記賬權分配方法,通過該方法選出的節(jié)點符合多數投票節(jié)點的意愿,提高了DPoS的公平性和安全性,但是仍存在節(jié)點投票積極性低的問題。
關于共識機制中激勵機制的研究,文獻[18]采用了零行列式策略來對礦工策略選擇進行優(yōu)化,最終達到了激勵礦工合作挖礦的目的。陳夢蓉等[19]提出了“舉報獎勵”這一激勵制度,并通過博弈分析確保了在選舉過程中大部分節(jié)點能夠抵御腐敗和賄賂的行為。但是采用獎勵的方式提高節(jié)點的參與度無法避免選民為了獲得獎勵持續(xù)作惡的問題,極大威脅了系統(tǒng)的安全性。文獻[20]提出一種基于配對制度的DPoS 共識機制。將節(jié)點分為獨立節(jié)點、主節(jié)點和配基節(jié)點,通過主節(jié)點和配基節(jié)點配對增加節(jié)點間相互作用力,提高各類節(jié)點參與共識的積極性,從而降低系統(tǒng)中心化程度。但是配基節(jié)點作為三種節(jié)點的紐帶,若配基節(jié)點無利可圖進行作惡,則會極大破壞系統(tǒng)的穩(wěn)定性。
關于新型區(qū)塊鏈共識機制的改進方面的研究,隨著人們對知識產權保護意識的普遍覺醒,區(qū)塊鏈技術去中心化、可追溯和不可篡改等特性可以與知識產權的登記、確權、交易等多個環(huán)節(jié)進行錨定。針對二者的特性,SONG等[21]提出了貢獻值證明機制 (Proof of Contribution,PoC),將區(qū)塊鏈技術應用于知識產權領域,該共識機制根據貢獻值算法將用戶的行為進行量化,貢獻值高的節(jié)點獲得記賬權,將數據信息永久保存在區(qū)塊鏈上。雖然保留了去中心化和抗硬分叉的特性,但是剔除了代幣獎勵違背了經濟學原理會使用戶喪失參與的積極性。
2 預備知識
2.1 賄賂攻擊
賄賂攻擊是一種在非協(xié)作選擇模型上的攻擊,攻擊者通過超額獎勵的方式誘惑礦工在包含攻擊者發(fā)起的鏈上進行挖礦,若賄賂攻擊的成本小于正常交易的費用,那么這次攻擊就是成功的。在DPoS機制中,每一個持幣節(jié)點可以參與到投票和競選代表兩個過程中,節(jié)點的幣齡越大,投票權重就越大,二者成正相關的趨勢,因此可能存在惡意節(jié)點賄賂權重較大的節(jié)點給自己投票的潛在風險,如果惡意節(jié)點在區(qū)塊鏈中只是為了獲得更多的利益而沒有能力去生產區(qū)塊,則將會導致整個區(qū)塊鏈的生產效率下降,所有節(jié)點的利益都將受到損害。
2.2 Spam攻擊
Spam攻擊最初是指利用非法的方式去提高自己搜索引擎上的排名[22]。在區(qū)塊鏈中,單一節(jié)點在威脅區(qū)塊鏈系統(tǒng)的安全能力有限,但攻擊者可以通過短期內進行產生大量的交易來使節(jié)點過度活躍來欺詐系統(tǒng),進而獲取記賬權謀取非法利益,這種攻擊方式就是Spam攻擊。
節(jié)點在正常參與共識時,不會主動成為惡意節(jié)點,若節(jié)點能獲得超額收益,那么節(jié)點將會為了謀取非法私利不惜成為惡意節(jié)點,從而嚴重威脅區(qū)塊鏈的安全性問題。
3 基于節(jié)點貢獻值和信譽度的DPoS
共識機制:DPoS-NCVR
DPoS共識機制通過全網節(jié)點投票選舉出部分代理節(jié)點,由代理節(jié)點輪流生產區(qū)塊來完成共識。但是投票需要耗費節(jié)點大量的精力而無任何回報,因此會造成普通節(jié)點的投票積極性低的問題,并且也存在一些惡意節(jié)點通過惡意行為來賄賂普通節(jié)點使自己獲得超額利益的問題。針對這一問題,本文提出了DPoS的改進思想。首先引入貢獻值的概念,將連接度、權重和節(jié)點綜合評估三個因素計算得出貢獻值,貢獻值最大的節(jié)點獲得新區(qū)塊的記賬權確保了貢獻值高的節(jié)點具有最高的記賬出塊概率;引入信譽度獎懲機制,對惡意節(jié)點的攻擊行為進行懲罰,對積極維護系統(tǒng)的節(jié)點給予獎勵,降低網絡中惡意節(jié)點進行惡意攻擊行為的機率,激發(fā)網絡中節(jié)點共同維護區(qū)塊鏈系統(tǒng)安全的積極性。
3.1 貢獻值
貢獻值是節(jié)點對區(qū)塊鏈系統(tǒng)做出貢獻的度量。在區(qū)塊鏈系統(tǒng)中,貢獻值越大表明節(jié)點越穩(wěn)定可靠,具有更大的概率獲得記賬權。在文中,節(jié)點的貢獻可以看作節(jié)點的連接度、權重和節(jié)點綜合評估等因素。這些因素量化的數值可以表明節(jié)點對系統(tǒng)貢獻的大小。
貢獻值的評價模型定義為
Ci=α·Li+β·Wi+γ·Ei," (1)
其中:Ci是當前節(jié)點i的貢獻值,取值范圍為0~1;Li是節(jié)點連接度;Wi是節(jié)點權重;Ei是節(jié)點綜合評估;α,β,γ為參數,且α+β+γ=1。
3.1.1 節(jié)點連接度 在區(qū)塊鏈網絡中,節(jié)點與節(jié)點之間存在關聯,區(qū)塊鏈網絡可抽象為無向圖。在網絡中,與節(jié)點直接相連的節(jié)點稱之為鄰居節(jié)點。如果節(jié)點擁有比較多的鄰居節(jié)點,則該節(jié)點在網絡中是活躍的,節(jié)點越活躍產生的交互信息越多,因此,可作為節(jié)點積極參與交易和對系統(tǒng)貢獻的依據。
節(jié)點連接度定義為
其中:li是節(jié)點i所擁有的鄰居節(jié)點的個數,li值越大節(jié)點i擁有的鄰居節(jié)點數越多,聯系越密切,在網絡中產生的交互信息越多;∑ni=1是系統(tǒng)中初始節(jié)點連接度累計求和,n為網絡中全部節(jié)點的個數;Li則表示節(jié)點i的鄰居節(jié)點占所有節(jié)點鄰居節(jié)點數的比重,比重越大該節(jié)點連接度Li值越高,該節(jié)點在網絡中交易活躍。
3.1.2 節(jié)點權重 PoS機制中,節(jié)點擁有的代幣數量越多,擁有代幣的時間越長,其獲得打包記賬權的概率越大。由于這種機制的特點,若惡意節(jié)點對主鏈發(fā)起惡意攻擊,只需持有大量代幣就能獲得記賬權進行惡意攻擊。因此在DPoS-NCVR機制中做了改進,節(jié)點的權重不再作為影響記賬權的決定性因素,只作為影響貢獻值的部分因素;這樣做既能用代幣來激勵節(jié)點參與共識,又能將節(jié)點自身利益與節(jié)點行為所捆綁。該設計理論上也增強了去中心化性,使得系統(tǒng)中權重較小但相對活躍的節(jié)點獲得記賬權的概率增加。
節(jié)點權重定義為
其中:wi表示節(jié)點i的權益,即節(jié)點i所擁有的代幣數;Wi是節(jié)點i的權重,其代表節(jié)點i所擁有的權益占網絡中所有節(jié)點權益的比值;n為網絡中節(jié)點的個數。由公式可知,節(jié)點擁有的權益越多,其權重值越大。
3.1.3 節(jié)點綜合評估 節(jié)點在網絡中的狀態(tài)和行為反應節(jié)點對網絡的影響,該部分設計通過對節(jié)點的性能和投票評價進行分析評估,以此來判斷節(jié)點在網絡中行為的可靠性。
節(jié)點性能計算公式為
其中:Pi表示節(jié)點i在網絡中的性能,通過離線時長來體現;qt代表節(jié)點本輪離線時長,節(jié)點離線時長越長,其節(jié)點性能Pi越低。
除惡意節(jié)點之外的節(jié)點在投票時有三種選擇,一種是投給貢獻值超出閾值的代理節(jié)點,第二種是投給除代理節(jié)點之外的節(jié)點,第三種是不投票。因為只有代理節(jié)點才能獲得記賬權,所以普通節(jié)點投向代理節(jié)點的票是有意義的投票,其他節(jié)點獲得投票并無意義。因此,規(guī)定投給代理節(jié)點的票為積極投票,不投票或者投給除代理節(jié)點之外的節(jié)點的票為消極投票。
節(jié)點投票評價計算公式為
其中:e(i)表示節(jié)點i積極投票的票數,∑nj=1e(i)表示節(jié)點i在前n次共識中節(jié)點i積極投票的票數的累加;a(i)表示節(jié)點i所持有的票數,∑nj=1a(i)表示節(jié)點i在前n次共識中持有的票數累加,規(guī)定節(jié)點可以給自己投票。
節(jié)點綜合評估公式定義為
Ei=Pi+Ti," (6)
其中:Ei是節(jié)點綜合評估值,該值體現節(jié)點在網絡中的綜合表現;Pi是節(jié)點性能;Ti是節(jié)點投票評價。
貢獻值計算公式整理為
當節(jié)點在網絡中越活躍連接度就越大,節(jié)點獲得的代幣獎勵越多其節(jié)點本身權重越大;節(jié)點受到其他節(jié)點的積極評價多時,Ti的值會增大,三個因素的量化數值增大貢獻值也會增大,節(jié)點被選取作為記賬節(jié)點的概率就會增大。因為貢獻值模型充分考慮到節(jié)點在網絡中的行為和對系統(tǒng)做出的積極行為獎勵惡意行為懲罰,因此,用這種評估模型來評估節(jié)點是可靠合理的。
3.2 信譽度
信譽度是節(jié)點在區(qū)塊鏈網絡中自身行為表現情況的數值反應,節(jié)點進行積極行為信譽度高,節(jié)點進行惡意行為則信譽度會減少,多次進行惡意行為將會被剔除系統(tǒng)。
信譽度獎勵計算公式為
信譽度設置為100分制,最高值為100,每個節(jié)點的初始信譽度為60,即R0=60,節(jié)點通過自身做出積極行為來獲得信譽度獎勵。這些積極行為包括積極投票,成功出塊等因素。當節(jié)點的作惡行為超過3次或者信譽度小于40,該節(jié)點則被剔除出系統(tǒng),不能再參與共識。
信譽度懲罰計算公式為
Ri=Ri-10," (9)
節(jié)點若進行惡意行為將被扣除信譽度分數,節(jié)點只有進行誠實行為才能在此獎懲規(guī)則中積累信譽度分數,從而有效約束節(jié)點的行為。
為了解決節(jié)點投票不積極問題和更好地約束節(jié)點行為,本文引入信譽度模型來規(guī)范節(jié)點的行為,根據節(jié)點的行為表現進行獎懲,提高節(jié)點的投票積極性及時剔除惡意節(jié)點,從而使系統(tǒng)高效運行。
3.3 代幣收益
節(jié)點的積極投票會獲得代幣獎勵。代理節(jié)點不但可以積極投票獲得獎勵,還可以通過打包區(qū)塊完成記賬獲得代幣獎勵。節(jié)點積極投票代幣獎勵公式為
Tokeni=Tokeni+1," (10)
Tokeni為節(jié)點i獲得的代幣獎勵。節(jié)點積極投票將會獲得一個單位的代幣獎勵。記賬節(jié)點成功完成出塊并將數據鏈接的區(qū)塊鏈上,若上鏈成功則會獲得記賬獎勵,記賬節(jié)點代幣獎勵公式為
Tokenj=m×Cj+k×Rj," (11)
Tokenj為記賬節(jié)點j獲得的代幣獎勵。m,k為比例系數,取值范圍為[0,1]。記賬節(jié)點的代幣獎勵與記賬節(jié)點的貢獻值信譽度有關聯,所以,節(jié)點通過不斷進行誠實行為進行貢獻值和信譽度的提升,從而獲得更多代幣獎勵。
3.4 DPoS-NCVR共識機制核心步驟
假設系統(tǒng)中有N個節(jié)點參與共識,共識周期為T。
步驟一:節(jié)點通過連接度、權重、節(jié)點綜合評估來計算初始的貢獻值。
步驟二:將超過特定閾值的節(jié)點選擇出來,由其他節(jié)點對超過閾值節(jié)點進行投票,按照獲得票數多少依次記賬,當最后一個節(jié)點完成記賬,第一輪的共識周期T結束。
步驟三:當所有記賬節(jié)點都完成記賬,系統(tǒng)將會通過分析節(jié)點的行為進行貢獻值的累計,之后節(jié)點參與下一輪的記賬競爭,即重復以上兩個步驟。
3.5 節(jié)點身份標識
區(qū)塊中包含很多交易信息,為了能夠安全共享數據信息,需要選擇出可靠的節(jié)點來生產區(qū)塊,并將正確的信息存儲在區(qū)塊鏈上。因此,為了保證鏈上信息的安全,參與的節(jié)點更傾向選擇可靠并值得信賴的節(jié)點產生區(qū)塊。節(jié)點的貢獻值取值范圍為[0,1],貢獻值超出閾值上界1時會被重置。節(jié)點種類分為四種,即普通節(jié)點、候選節(jié)點、代理節(jié)點、惡意節(jié)點。節(jié)點剛加入系統(tǒng)時,節(jié)點會通過貢獻值的計算公式(1)進行一個初始化操作,但是剛加入的節(jié)點其未參與過投票并且代幣權益數是恒定值。在節(jié)點初始化時,影響節(jié)點貢獻值計算的因素是連接度。因此,節(jié)點初始的貢獻值的多少取決于連接度的值。節(jié)點身份劃分區(qū)間如表1所示。
1)代理節(jié)點,貢獻值在[Nri,1]中為代理節(jié)點,其貢獻值大于等于閾值的節(jié)點將被選舉出來進入代理節(jié)點集合,節(jié)點在網絡中收集事務的信息并且打包成塊,然后用私鑰在這個塊上簽名。
2)候選節(jié)點,貢獻值在[Nwi,Nri)為候選節(jié)點,其貢獻值未達到的代理節(jié)點閾值且比普通節(jié)點閾值大的節(jié)點;候選節(jié)點具有與普通節(jié)點一樣的權力,可以對代理節(jié)點進行投票選出票數最大的節(jié)點生產區(qū)塊。
3)普通節(jié)點,貢獻值在[Nci,Nwi)為普通節(jié)點,普通節(jié)點可以隨意加入網絡,其行為是任意的,每個普通節(jié)點的權力是平等的,可以對代理節(jié)點進行投票選出記賬節(jié)點。
4)惡意節(jié)點,貢獻值在[0,Nci)為惡意節(jié)點。是節(jié)點多次作惡信譽度低于40的節(jié)點,貢獻值將會被置為零并且剔除系統(tǒng),節(jié)點經過懲罰后成為惡意節(jié)點就沒有權力參加共識過程。
節(jié)點的初始身份的標識取決于節(jié)點自身初始的狀態(tài)。節(jié)點積極參與投票、生產區(qū)塊、進行積極行為,節(jié)點的貢獻值會累計增加;但節(jié)點的貢獻值也不會是無節(jié)制的增加,節(jié)點的貢獻值的上界為1,超出貢獻值上界的節(jié)點其貢獻值會被重置。這樣做的原因是為了避免貢獻值最高的節(jié)點長期進行記賬,破壞系統(tǒng)的去中心化性和公平性;若節(jié)點有惡意投票、出塊失敗、離線時長過長等行為,則節(jié)點會受到扣除信譽度分數的懲罰。當節(jié)點連續(xù)3次作惡或者信譽度分數低于40將會被標記并且剔除。系統(tǒng)中節(jié)點的行為和狀態(tài)如圖1所示。
圖1中,節(jié)點加入網絡后,會自動執(zhí)行計算貢獻值的算法計算其本身的貢獻值,等待系統(tǒng)劃分節(jié)點類型,然后系統(tǒng)會根據全網中節(jié)點貢獻值來動態(tài)地調整代理節(jié)點閾值的大小,以保證相對數量的可靠節(jié)點參與區(qū)塊的生產;其他節(jié)點根據貢獻值劃分為候選節(jié)點、普通節(jié)點、惡意節(jié)點。然后,具有投票權的節(jié)點會給選出的代理節(jié)點進行投票,代理節(jié)點根據票數的降序排列依次記賬,來完成區(qū)塊的生產。最后,被選取出的代理節(jié)點打包區(qū)塊并在這個區(qū)塊上簽名,將其鏈接到區(qū)塊鏈網絡上完成第一次共識。當代理節(jié)點輪流記賬完畢后,稱為一個共識過程的周期T。當進行下一個周期T時,節(jié)點會重新通過貢獻值算法評估出更精確的貢獻值選出下一輪記賬的節(jié)點。隨著系統(tǒng)的正常運行,節(jié)點進行多次的共識,代理節(jié)點在進行多輪積極行為后其貢獻值會增加,當貢獻值超出貢獻值的閾值上界1時,代理節(jié)點的貢獻值重置為候選節(jié)點的閾值下界,即Nwi。節(jié)點貢獻值和信譽度計算方法如算法1所示:
算法1 節(jié)點貢獻值和信譽度計算算法。
input:初始節(jié)點貢獻值和信譽度
output:更新節(jié)點貢獻值和信譽度
begin
C=[]//節(jié)點貢獻值集合
R=[]//節(jié)點信譽值集合
token=[]//節(jié)點代幣數集合
計算節(jié)點n輪共識的貢獻值
for n
//如果不是惡意節(jié)點初始信譽度為60
if isNotEvil(C[i])//isEvil()函數判斷節(jié)點是否為惡意節(jié)點
R[i]=60//若不是惡意節(jié)點初始化為60
else
remove(C[i])//移除惡意節(jié)點
return R[i]
if C[i]>1//節(jié)點閾值大于1,閾值重置
Ci=Nri
return Ci
else if Ci<0//節(jié)點閾值為負,返回空值
return NULL
else//節(jié)點閾值在區(qū)間[0,1],
Ci=α·Li+β·Wi+γ·Ei
return C[i]
update
end
3.6 節(jié)點選舉
DPoS共識機制在選取區(qū)塊生產者階段,惡意節(jié)點可以進行賄賂攻擊來給自己增加選票,以抬高自己被選為記賬節(jié)點的概率,嚴重威脅了系統(tǒng)的安全性;而本文提出的DPoS-NCVR共識機制的最大的優(yōu)勢是,在選舉生產者階段,為了確保選出的節(jié)點能夠得到大多數節(jié)點的認可,選擇貢獻大的節(jié)點進行區(qū)塊的生產。節(jié)點進行誠實行為,節(jié)點自身的貢獻值會增加,但也不是無節(jié)制的增加。為了保證公平性,貢獻值超過上界閾值1后,節(jié)點會被重置為候選節(jié)點,其貢獻值會被重置為候選節(jié)點的下界閾;節(jié)點通過積極行為提高貢獻值和信譽度進而獲得更多收益,貢獻值模型確保了被選舉的節(jié)點安全可靠。
3.6.1 選舉生產者 首先,計算全網節(jié)點的貢獻值,并且初始化其信譽度分數,將參與節(jié)點的貢獻值進行降序排序;其次,完成排序后,把超過閾值的節(jié)點選出,加入代理節(jié)點集合;最后,其他節(jié)點對代理節(jié)點進行投票,選出得票數最高的節(jié)點為記賬節(jié)點,記賬節(jié)點來生產區(qū)塊。若記賬節(jié)點發(fā)生異常,如出塊錯誤、出塊時間過長、離線等問題,則由代理節(jié)點中獲得票數第二的節(jié)點代替記賬,避免了記賬節(jié)點出現錯誤后進行過度等待的問題。選舉生產者過程如算法2所示:
算法2 區(qū)塊生產者選舉算法。
input:節(jié)點個數
output:生成新區(qū)塊
//計算節(jié)點貢獻值
for i in range(n):
calculate (C[i])
//對節(jié)點貢獻值進行排序
for i in range(n):
sort(C[i])
//設置閾值
for i in range(n):
if C[i]gt;Nri
then//貢獻值超過Nri
的節(jié)點進入代理節(jié)點集合
count++//統(tǒng)計記賬節(jié)點的個數
break
//獲得票數最大的代理節(jié)點生產區(qū)塊
MAX=vote[Ni]//MAX為最大票數
for i in range(count):
if vote[Ni]gt;MAX:
MAX=vote[Ni]
temp1=i
if Ntemp.isActive()://判斷節(jié)點是否正常工作
count--//當值為零,本共識周期結束進行下一個共識周期
return Ntemp1.block//正常出塊
else
count--
return Ntemp2.block//代理節(jié)點中票數第二多的節(jié)點代替出塊
end
3.6.2 節(jié)點惡意行為懲罰 在原DPoS中節(jié)點作惡只進行了標記,并無對其做出處理,本文通過設置信譽度獎懲機制,及時分析節(jié)點行為并對節(jié)點的行為做出獎懲。
步驟1:選出票數最多的代理節(jié)點收集全網信息。若在此過程中發(fā)生錯誤,則導致無法正常出塊或者出塊時間超出特定的時間產出無效區(qū)塊,那么則判定為代理節(jié)點出現了惡意行為。
步驟2:出現惡意行為的代理節(jié)點停止打包區(qū)塊,由票數第二的代理節(jié)點補位頂替記賬節(jié)點繼續(xù)完成出塊過程。
步驟3:出現惡意行為的代理節(jié)點將被系統(tǒng)做出信譽度減少的懲罰,頂替的代理節(jié)點完成出塊后系統(tǒng)對其進行信譽度的獎勵,所有代理節(jié)點都完成一次出塊后,結束本輪共識。
步驟4:若節(jié)點多次進行惡意行為或者其信譽度低于40,則其貢獻值被重置為0并且剔除出系統(tǒng)。
算法3 節(jié)點惡意行為懲罰算法。
input:節(jié)點信譽度輸入
outout:節(jié)點信譽度更新
begin
//信譽度初始值為60
for i in range(n):
R=60
//信譽懲罰,節(jié)點作惡小于3次
iflt;3
Ri=Ri-10
return
//節(jié)點作惡大于3次
ifgt;=3
remove(i)
//節(jié)點信譽度低于40移除節(jié)點
then
if R lt;40 || flt;3
remove(Ni)
//節(jié)點信譽度大于100,重置信譽度
else
if Rgt;100
Ri=60
update
end
3.6.3 Spam攻擊防御機制 在 DPoS-NCVR共識機制中,成為記賬節(jié)點并成功完成記賬會獲得代幣獎勵,因此節(jié)點為了謀取不正當利益,短時間可以與其他節(jié)點進行大量的垃圾交易,來提高自身的節(jié)點連接度,進而提高貢獻值增大了下一輪成為代理節(jié)點的可能。因此,為了系統(tǒng)的安全性,DPoS-NCVR引入了防御機制。Q為節(jié)點單位時間內的最大合法交易量,單位時間內超出Q值為非法操作,q是單個節(jié)點交易量,惡意節(jié)點通過單位時間內發(fā)送大量交易惡意積累貢獻值,獲取非法收益。防御機制如算法4:
算法4 Spam攻擊防御機制算法。
input:Q,q
outout: C
begin
//判斷節(jié)點單位時間內是否進行作惡
If qgt; Q
sleep(1000);
else
update(C[i]);
end
4 實驗分析
為了驗證DPoS-NCVR算法的可操作性,本文實行了以下仿真實驗,實驗環(huán)境如下:型號i7-1165G7的CPU,六核,16GB內存,Windows10操作系統(tǒng),集成開發(fā)環(huán)境為PyCharm Professional Edition2020.2.3x64、GoLand2021.3,開發(fā)語言為Python、GoLang。用Python模擬了DPoS-NCVR共識算法的實現,用GoLang語言模擬DPoS原始算法的實現,將得到的實驗結果進行分析比較。
本文用了圖結構來模擬區(qū)塊鏈中節(jié)點的行為,選取200個節(jié)點來進行仿真實驗,圖的節(jié)點表示區(qū)塊鏈中的參與節(jié)點,圖的邊表示不同節(jié)點之間的交互關系,設定貢獻值最大閾值為1,最小為0,記賬節(jié)點貢獻值超過1,則該節(jié)點閾值重置為候選節(jié)點的閾值。每個節(jié)點初始信譽度為60,閾值為100,當節(jié)點進行積極行為的信譽度積累超過100則重置為60,按此進行多次實驗,觀察實驗結果。
4.1 節(jié)點活躍度對比實驗
節(jié)點活躍度指節(jié)點在系統(tǒng)中進行積極投票的程度,引入獎懲機制和收益獎勵主要是為了調動節(jié)點投票的積極性讓節(jié)點積極參與投票。本實驗設置了200個節(jié)點,每個節(jié)點設置一個活躍因子屬性,活躍因子是介于0到1之間的隨機數,當活躍因子大于0.5,證明該節(jié)點是活躍的,對于小于0.5閾值的節(jié)點,由于引入獎勵機制,能夠激勵節(jié)點活躍起來進而參與投票。對DPoS-NCVR與DPoS共識機制進行實驗比較,觀察數據節(jié)點活躍度占比實驗(圖2)。
由圖2可知,隨著共識次數的增加,節(jié)點不斷進行積極行為,DPoS活躍節(jié)點的占比大約在50%左右;DPoS-NCVR的活躍節(jié)點隨著共識次數的增加而逐漸增加,第十次共識活躍節(jié)點顯然占比80%以上,原因是引入收益機制后,節(jié)點進行積極投票有利可圖,代幣獎勵確實能夠調動一部分節(jié)點參與投票的積極性。系統(tǒng)通過捆綁參與節(jié)點的自身利益來調動其投票的積極性,節(jié)約了系統(tǒng)資源。由圖2可知,積極投票的節(jié)點占比越來越高,積極投票效率明顯提高,實驗數據表明該方案具有可行性。
4.2 節(jié)點投票收益比較實驗
為了改進DPoS中節(jié)點投票不積極問題,引入了激勵機制促使系統(tǒng)中節(jié)點積極投票。節(jié)點參與投票會將十個單位的代幣進行質押;每一次共識中,節(jié)點積極投票會獲得一個單位代幣獎勵,若節(jié)點在本輪次的投票環(huán)節(jié)中消極投票,將會被扣除一個單位的代幣,這樣節(jié)點積極投票會獲得收益,不積極投票就會受到懲罰。節(jié)點投票收益對比結果見圖3。
圖3中,第一次共識處的代幣數量表示節(jié)點初始代幣數量。由實驗可知,節(jié)點1,節(jié)點 6, 節(jié)點9初始時的代幣數量為10,節(jié)點1隨著共識輪次的增加積極進行投票,在該收益機制下獲得的代幣獎勵越來越多,到第10次共識結束,獲得的代幣獎勵累計為19;節(jié)點9的代幣數量是先減少后緩慢增加,原因是,節(jié)點9一開始投票不積極被扣除了代幣,由于自身利益被損害,節(jié)點在下一輪共識中將會努力積極投票避免自己的權益被損害,引入獎勵機制明顯調動了節(jié)點投票的積極性;節(jié)點6的代幣數量成遞減趨勢,原因是節(jié)點6節(jié)點是惡意節(jié)點,在每次共識中不積極參與投票,其會被沒收一個單位的代幣;因為惡意節(jié)點在系統(tǒng)中長期存在會降低系統(tǒng)的效率,所以當節(jié)點質押的代幣被罰光后會被剔除系統(tǒng)。
4.3 惡意節(jié)點占比實驗
在DPoS共識機制中,當惡意節(jié)點做惡時,算法并沒有采取任何應對措施,只是對惡意節(jié)點進行了簡單的標記, DPoS中算法最多允許1/3的節(jié)點是惡意或存在故障的節(jié)點;惡意節(jié)點的存在極大地破壞了系統(tǒng)的安全性,因此在DPoS-NCVR中引入了應對措施,將節(jié)點的信譽度分數作為準繩,規(guī)范節(jié)點行為,避免節(jié)點淪為惡意節(jié)點;當節(jié)點進行惡意行為時信譽度分數就會被扣除,當信譽分數被減到一定的分數后節(jié)點將會被系統(tǒng)剔除。惡意節(jié)點占比實驗如圖4所示。
在初始狀態(tài)時,惡意節(jié)點的比例在系統(tǒng)中占比為1/3左右;隨著共識輪次的增加,屢次作惡的節(jié)點會被系統(tǒng)檢測并標記,進行扣除信譽度和代幣的懲罰,在第七次共識中可以發(fā)現惡意節(jié)點所占比例幾乎為零,其原因為節(jié)點的信譽分數過低或質押的代幣被罰光,被系統(tǒng)剔除。實驗數據充分驗證了該機制的可行性。
4.4 貢獻值實驗
本文通過貢獻值模型來計算貢獻值,根據貢獻值模型選出對系統(tǒng)貢獻最高的可靠節(jié)點,作為記賬節(jié)點生產區(qū)塊。影響貢獻值的因素有連接度、權重、節(jié)點綜合評估等因素,由于這些貢獻值的影響因素是動態(tài)變化的,所以貢獻值是動態(tài)變化的;多次共識后節(jié)點進行積極行為貢獻值會增加。為了驗證節(jié)點在做誠實行為后貢獻值的變化情況,在200個節(jié)點中選取具有代表性的節(jié)點并記為節(jié)點1、節(jié)點4、節(jié)點8。初始狀態(tài),以節(jié)點的自身的連接度和權重值進行計算作為初始貢獻值;隨著共識輪次的增加,節(jié)點在線狀況好,進行積極投票積極行為。在進行多次共識后,貢獻值增加。貢獻值實驗如圖5所示。
選取節(jié)點標記為節(jié)點1、節(jié)點4、節(jié)點8的貢獻值變化情況。節(jié)點1、節(jié)點4、節(jié)點8在進行多輪共識后,節(jié)點的貢獻值逐漸遞增。由公式(2)可知,節(jié)點在網絡中越活躍其連接度li值越大,Li也越大;由公式(3)可知,節(jié)點進行積極投票或完成記賬會獲得代幣獎勵,其Wi值也會增大;由公式(6)可知,節(jié)點性能越高和節(jié)點投票評價的值越大,其Ei值會相應增大。綜上,在節(jié)點進行誠實行為時,其貢獻值Ci也呈遞增趨勢。該實驗充分驗證了經過貢獻值模型選出的節(jié)點是合理可靠的。
4.5 運算效率實驗
為了驗證改進后的DPoS-NCVR算法更具有安全性,本實驗模擬網絡中50個節(jié)點時,將DPoS原始算法與DPoS-NCVR共識機制運行的時間消耗進行實驗比較。運算效率實驗如圖6所示。
由圖6可知,DPoS-NCVR共識算法需要計算貢獻值和信譽度,所以消耗的時間比原始DPoS共識機制多。通過貢獻值選出的節(jié)點可信度高,可信度高的節(jié)點更容易獲得記賬權,進而保證選出的節(jié)點在進行工作時更加可靠安全。因此,DPoS-NCVR共識機制比DPoS共識機制安全性更高。
5 安全性分析
為了保證區(qū)塊鏈系統(tǒng)的安全性和可靠性,提升系統(tǒng)的效率,本文方案主要引入了貢獻值、信譽度。分析可知,在貢獻值模型中,貢獻值反應節(jié)點在網絡中的所做的貢獻的大小,信譽度反應節(jié)點自身所作誠實行為的情況;引入獎懲機制,規(guī)范了節(jié)點行為,降低了惡意節(jié)點作惡的概率,激勵節(jié)點共同維護區(qū)塊鏈系統(tǒng)。
由于影響貢獻值的因素很多,其中最嚴重的是節(jié)點做出大量虛假的交易行為來騙取貢獻值,如果節(jié)點不滿足現在所獲得收益愿意為了更大的利益鋌而走險,將會打亂系統(tǒng)的平衡,極大破壞系統(tǒng)穩(wěn)定性。引入Spam防御機制,限制了節(jié)點大量交易的行為,當節(jié)點單位時間內產生的交易q的量大于節(jié)點單位時間合法交易的最大量Q時,則證明節(jié)點正在進行非法積累連接度的行為,防御機制就會檢測到節(jié)點的惡意行為對其限制交易,并進行信譽度的懲罰,多次作惡節(jié)點就被剔除系統(tǒng)。
DPoS共識算法中,節(jié)點所持有票數跟自身的權益正相關,節(jié)點可以根據自身權益參與投票選取代理,選取票數最高的前21個節(jié)點輪流記賬,因此,可能存在惡意節(jié)點賄賂權益大的節(jié)點給自己投票發(fā)起賄賂攻擊;在DPoS-NCVR共識算法中,攻擊者很難發(fā)起賄賂攻擊,因為節(jié)點傾向于將票投給貢獻值大的節(jié)點,此投票行為是積極投票的概率大,節(jié)點為了獲得收益會選擇進行積極行為,避免了腐敗問題。
貢獻值是由多方面因素所決定的,因此不容易遭受惡意攻擊;引入信譽度獎懲機制,節(jié)點作惡會被懲罰,降低信譽度分數,影響其收益;本文提出的收益機制中,節(jié)點積極投票會獲得代幣獎勵,節(jié)點選擇誠實行為比接受賄賂所獲得的利益大,節(jié)點在規(guī)則中進行誠實行為貢獻值就會不斷累積,在下一輪進入代理節(jié)點集合的概率會增大; 因此,在DPoS-NCVR共識機制中,節(jié)點會選擇誠實行為累積自身貢獻值,達到自身合法利益的最大化從而降低了賄賂攻擊的概率。
通過“4.1”實驗得知,隨著共識次數增加,節(jié)點投票占比可達到80%左右。原因是每一輪共識中,節(jié)點進行積極投票會增加節(jié)點自身的信譽度分數,也會獲得代幣獎勵,因此,節(jié)點愿意為了收益去進行誠實行為,所以積極投票的節(jié)點占比越來越高。收益機制確實能夠調動一部分節(jié)點積極參與投票,提高節(jié)點的工作效率,節(jié)約了系統(tǒng)資源。
通過“4.2”實驗可知,節(jié)點1代幣數量遞增的原因是,節(jié)點進行積極投票獲得系統(tǒng)的代幣獎勵;節(jié)點6為惡意節(jié)點,節(jié)點作惡會被沒收代幣,減少信譽度,若惡意節(jié)點連續(xù)作惡直接被剔除系統(tǒng)。收益機制利用了經濟學原理,調動節(jié)點投票積極性,減少惡意節(jié)點作惡概率,激發(fā)了節(jié)點參與共識的積極性,提高系統(tǒng)的共識效率。
DPoS共識機制中心化問題嚴重,在DPoS-NVCR共識機制中,貢獻值模型中引入連接度、權重和節(jié)點綜合評估,其中連接度和節(jié)點綜合評估的引入,弱化了DPoS共識機制中權益與票數的關聯,引入獎懲機制,極大地調動了普通的積極節(jié)點參與共識的積極性;與原DPoS共識機制相比,DPoS-NVCR降低了權益大且未對系統(tǒng)做出相應貢獻的節(jié)點記賬概率,促進了網絡中節(jié)點的公平公正,增強了區(qū)塊鏈的去中心化性。
6 結 語
本文針對DPoS共識算法中存在的節(jié)點投票積極性低和惡意節(jié)點作惡問題,提出了一種基于節(jié)點貢獻值和信譽度的DPoS共識算法改進。首先提出了貢獻值模型,根據節(jié)點在系統(tǒng)中的表現選取記賬節(jié)點,增加去中心化程度,使系統(tǒng)變得公平公正。其次,設置了信譽度獎懲機制,積極行為會累積信譽度積分,惡意行為會被懲罰信譽度積分,該機制既提高了節(jié)點投票的積極性,又有效遏制了節(jié)點腐敗問題。設置收益機制,節(jié)點進行積極投票獲得相應的代幣獎勵,收益機制激勵節(jié)點成為活躍的狀態(tài)進而增加投票的可能性,使區(qū)塊鏈系統(tǒng)高效運行。
其中,提出的Spam防御機制算法防御機制較弱,未來工作將進一步加強算法的安全性,提高算法效率。Spam防御機制確保了DPoS-NCVR算法自身的安全性。通過實驗分析得出DPoS-NCVR共識算法比DPoS共識機制更具有更高的安全性和穩(wěn)定性,提高節(jié)點投票參與程度和遏制惡意節(jié)點作惡。
參考文獻:
[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ū)塊鏈的物聯網數據共享模型[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]. 計算機工程與應用, 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ū)塊鏈共識機制研究:典型方案對比[J].中興通訊技術,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ū)塊鏈技術發(fā)展現狀與展望[J]. 自動化學報, 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共識算法[J].計算機工程,2022,48(6):50-56.
[17] 王碩,付曉東,岳昆,等.節(jié)點偏好一致性最大化的DPoS記賬權分配[J].小型微型計算機系統(tǒng),2023,44(3):651-657.
[18] 唐長兵,楊珍,鄭忠龍,等.PoW共識算法中的博弈困境分析與優(yōu)化[J].自動化學報,2017,43(9):1520-1531.
[19] 陳夢蓉, 林英, 蘭微, 等. 基于“獎勵制度”的DPoS共識機制改進[J]. 計算機科學, 2020, 47(2): 269-275.
[20] 張雅萍,任秀麗.基于配對制度的DPoS共識機制[J].計算機應用研究,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
(責任編輯 李春梅)