何 帥,黃襄念
(西華大學計算機與軟件工程學院,成都 610039)
區塊鏈技術是伴隨著比特幣的誕生而抽象出來的一種全新的分布式底層基礎架構與計算范式,能夠在缺乏第三方信任的機制下實現多方共識,不僅為數據隱私保護和安全傳輸提供了全新的技術支持,還提高了價值交互的效率[1]。區塊鏈的本質是一種分布式共享數據庫,是將數據按照時間順序用類似鏈表的方式組成的數據結構[2],具有去中心化、數據防篡改、可追溯、不可偽造、多方共識的特性,已經在金融、航運物流、司法存證等領域得到了成功運用[3]。
目前,區塊鏈已經形成了6層基礎架構模型,由下往上分別為數據層、網絡層、共識層、激勵層、合約層以及應用層[4]。其中,共識層作為整個區塊鏈架構的核心層,其共識算法保障了區塊鏈網絡數據的可驗性和可信性,具有維護區塊鏈系統穩定運行和節點相互信任的重要作用,是決定區塊鏈系統中節點對賬本數據的有效性和一致性達成共識的關鍵技術,其性能的優劣將直接影響整個區塊鏈系統的去中心化程度、交易處理能力、安全性和可擴展性[5]。
當前區塊鏈技術正面臨著安全性、效率和去中心化的“不可能三角”問題,如何平衡三者之間的關系使得區塊鏈更加安全高效成為了亟待突破的技術瓶頸[6]。針對現有區塊鏈共識機制存在的不足之處,當前正圍繞著共識節點的選舉制度、惡意節點處理以及節點權益劃分等[7]問題進行創新研究,力爭研發出適用于更多區塊鏈場景的高效共識算法。
目前,在區塊鏈公鏈系統中主流的共識機制有工作量證明(PoW)、權益證明(PoS)以及委托權益證明(DPoS)[8]。PoW 是基于自身算力競爭來求解一個難以計算但容易驗證的Hash數學難題,使得率先解決Hash 難題并得到其他節點有效驗證后的節點擁有記賬權并獲得獎勵[9]。但PoW 在達成共識過程中會消耗大量的算力造成資源浪費,并且打包交易數據產生新區塊的時間通常在10 min 以上,這顯然無法滿足復雜的業務需求。為了解決PoW 共識算法中存在的資源浪費以及“挖礦”不公平等問題,有學者提出了PoS 共識機制,通過利用PoS 取代基于算力的工作量證明來決定節點獲得記賬的權力,但當財富積累到一定的程度時,容易出現集權現象,導致幣齡大的節點始終掌握著記賬的權利,從而出現“財閥統治”的局面,不僅增加了中心化的風險,還降低了虛擬貨幣的流通性[10-11]。為了進一步滿足廣泛的區塊鏈業務需求,Larimer 在PoS 的基礎上通過優化選擇記賬節點的過程,提出了DPoS 共識機制[12],實現了快速共識驗證,提高了區塊鏈系統達成共識的效率,進一步減少了資源的浪費并弱化了通過礦池算力疊加造成的中心化風險,增強了區塊鏈系統的安全性。但DPoS 在實際的應用過程中還存在節點投票不積極、惡意節點賄賂投票節點導致“腐敗攻擊”以及權益分配不合理等相關問題,這正是當前亟待突破的關鍵方向。
為了提高區塊鏈的安全性和共識效率,針對上述委托權益證明共識機制存在的不足之處,相關研究學者對其展開了新一輪的探索與創新。付瑤瑤等[13]針對DPoS 共識機制中節點投票不積極以及惡意節點作惡問題,提出了一種基于獎勵機制和信用機制改進的方案,利用一種改進的收益分配算法合理分配各節點所得的權益,并通過優化投票結果的計算方式加大惡意節點成為代理節點的難度,在一定程度上降低了惡意節點成為共識節點的概率,提高了系統的安全性。楊坤橋等[14]對DPoS 共識機制的計票機制和激勵機制進行了改進,使得改進的計票機制能夠更加全面的反映節點的信用情況,并根據節點選票權重快速剔除惡意節點,同時改進的激勵機制能夠對節點收益進行二次分配,提高了系統“去中心化”程度。在上述相關研究成果的基礎之上,本文利用基于算力競爭的PoW“挖礦”思想,結合可隨機驗證函數,引入博弈論中沙普利值的計算方式對DPoS共識算法的投票選舉、見證人出塊順序以及節點的權益分配進行了改進和優化,最后通過仿真實驗得出結論。
委托權益證明(DPoS)共識算法主要包含兩個步驟,即共識節點的選舉過程以及節點間達成共識的過程[15]。針對DPoS 共識算法中存在的不足之處,對共識節點選舉、共識節點的出塊順序、獎勵的分配以及節點出塊行為監測進行改進和優化,整體改進流程如圖1所示。

圖1 委托權益證明共識機制的改進流程
區塊鏈節點首先通過PoW“挖礦”機制篩選出部分節點組成代理節點集合,同時為代理節點集合中的節點設置權益上限,并通過投票機制選出共識節點集合。在共識節點集合中,獲得投票權益更高的節點組成見證人節點集合參與區塊的打包和驗證;剩余的節點成為候選節點集合,用于及時替換見證人節點集合中出現異常行為的節點。在出塊過程中,通過可驗證隨機函數(VRF)隨機選擇見證人節點集合中的節點參與區塊打包,并通過信譽積分對節點行為進行評斷,同時利用沙普利值的計算方式對成功出塊的節點所獲得的系統獎勵進行合理分配。最后,將出塊節點當前的信用積分、所獲得的投票權益以及系統獎勵作為指標計算其綜合信譽值(PCredit),并利用PCredit 值動態調整見證人集合和候選節點集合中的節點,盡最大可能保證每一輪共識過程中所有見證人節點都能正常打包區塊,提高系統的穩定性和安全性。
針對DPoS 共識機制中共識節點選舉公平性問題,對其做出如下優化:
(1)利用PoW 機制完全去中心化的特性對DPoS共識機制的節點選舉過程進行改進。首先,設置節點挖礦的時間來動態調整PoW機制中哈希計算的難度值,使得區塊鏈系統中大多數節點都能公平地參與記賬權的競爭,并規定在設置的時間內能夠找到隨機數nonce的節點將成為代理節點,為共識節點的進一步選舉做了初步篩選[16]。通過降低并動態調整哈希計算的難度值,能夠讓更多的算力較小的節點也能有機會成為共識節點,體現出選舉的公平性。
在PoW 共識機制中,當難度值為n時,節點基于自身算力通過蠻力法不斷地進行哈希碰撞以求解滿足要求的隨機數nonce,使得求解出的nonce 值拼接前一區塊的哈希值(PreHash)再次進行哈希計算得出的哈希值(CurHash)滿足前n位為0,即挖礦成功[17]。當前,PoW 始終保持每10 min 左右打包一個區塊,其難度值的計算公式如式(1)所示:

在上式基礎上對PoW的難度值的計算方式進行調整,設置允許節點參與挖礦的時間為60 s。為了滿足更多節點基于算力挖礦的條件,將挖難度值設置為5,此時大部分節點能夠在幾十秒內挖礦成功,找到滿足要求的隨機數nonce。同時,為了提高選舉效率,當成功創建360個區塊時進行一次難度調整,由于挖礦時間設置為60 s,因此相當于每6 h調整一次難度值,改進后的難度值計算公式如式(2)所示:

式(1)~(2)中:curD表示當前區塊的難度值,preD表示前一區塊的難度值,allTime表示創建2016個區塊所花的總時間,其值接近于20160,單位為min;totalTime表示創建360 個區塊所花的總時間,其值接近于21600,單位為s。
通過對PoW 挖礦時間的限制和難度值的調整,使得能夠在60 s 內挖礦成功的節點進入代理節點集合,為共識節點的選取做了初步篩選[18]。在節點計算哈希難題時,如果當前節點的算力較大時,其挖礦時間可能少于60 s,則21600totalTime將大于1,此時curD將大于preD;如果當前節點的算力較小時,其挖礦時間可能大于60 s,則21600totalTime將小于1,此時curD將小于preD。故通過對挖礦難度的動態調整能夠讓更多算力不同的節點公平地競爭出塊權。
(2)為了防止持幣量大的節點惡意攻擊,對利用PoW 篩選出來的節點和投票節點設置權益上限。由于DPoS 是在PoS 機制上演進而來的具有更高效率的共識機制,因此在投票過程中繼承了PoS 中幣齡的概念,通過權益投票選擇共識節點[19]。在DPoS中節點的權益用幣齡表示,即幣齡等于所持代幣數與持幣時間的乘積[21],如式(3)所示:

其中:coinAge表示節點的幣齡,coinCount代表節點所擁有的代幣數,coinTime表示持幣時間。
在式(3)的基礎上,對節點的幣齡設置上限,規定幣齡最大值(mCoinAge)為2000,同時規定所有節點持幣時間的最大值(mCoinTime)為30 d,則幣齡計算如式(4)所示:

從上式可以看出,當節點持幣時間達到最大值或者幣齡本身達到自身設置的最大值時,節點的幣齡均不會再增長,不僅能夠限制見證人節點可接受的最大投票總量,避免“財閥統治”[20]局面的出現,還能促使持有大量token 的節點將權益投給多個見證人節點以獲得更多的投票回報獎勵,從而平衡節點的出塊概率,降低“賄賂攻擊”[21]的幾率。
(3)權益持有者通過投票機制將自身持有的token委托給代理節點集合中的節點,并在節點最大權益限制的情況下根據代理節點中節點獲得的權益投票比例進行排序,選出排名前30的節點組成共識節點集合,其中排名前21的節點組成見證人節點集合,剩余節點組成候選節點集合。假設代理節點集合中節點i有n個權益投票人,則其最終獲得的投票權益計算如式(5)所示:

其中:Vtotali表示代理節點集合中第i個節點最終獲得的投票權益,mCoinAge表示節點權益上限,NodecoinAgej表示第j個投票節點擁有的權益值,V coinAge i表示代理節點集合中第i個節點當前權益值。
在區塊鏈系統中,DPoS共識算法所維護的見證人節點集合中所有節點均獲得記賬權后稱為完成一輪共識,當某一個見證人節點獲得記賬權并完成區塊的打包后稱為完成一次共識過程。在傳統的DPoS共識協議中,每一輪共識過程都是按照既定的見證人節點順序參與區塊的打包,惡意節點能夠通過已知的出塊順序發起合謀攻擊[21]。為了減少被攻擊的概率,對見證人節點的出塊順序進行改進,利用可驗證隨機函數(VRF)[22]改變每輪參與共識的節點順序,增加惡意節點攻擊的成本,防止合謀攻擊。
利用VRF 生成隨機數來確定見證人節點的出塊順序,其隨機數的生成及驗證過程如下:
(1)生成一對公私鑰,分別為pubKey和priKey。
(2)生成隨機數:
RanNum=VRF_HASH(priKey,hashValue)。
(3)生成驗證數:
VerNum=VRF_PROOF(priKey,hashValue)。
(4)將RanNum和VerNum廣播給驗證者進行如下計算:
RanNum=VRF_P2H(VerNum)。
(5)當第4步驗證通過,則對當前區塊哈希值進行驗證:
VRF_VERIFY(pubKey,hashValue,verNum)。
(6)如果第5 步中函數的返回值是TRUE,則驗證通過;若函數返回值為FALSE,則表明產生的隨機數被篡改。
利用VRF 生成的隨機數在見證人節點集合中選取出塊節點,計算如式(6)所示:

其中:RanNode表示本次獲得出塊權力的見證人節點編號,RanNum表示利用可驗證隨機函數生成的隨機數,NodeNum表示見證人節點集合中節點數量。
在出塊節點選取過程中,將當前負責出塊的見證人節點的私鑰設置成priKey,并通過當前區塊的哈希值hashValue生成RanNum和VerNum。當利用VRF 生成隨機數選取下一個出塊節點時,前一個出塊節點會將計算出的RanNum和VerNum廣播給其他見證人節點,此時其它的見證人節點可以對隨機數和下一個出塊節點進行驗證,如果超過2/3 的節點通過驗證,則說明隨機數未被篡改,下一個出塊節點將被確定。算法1概括了優化后的見證人節點出塊機制。
算法1:witnessNodeBlockProcess()

針對DPoS 算法中權益分配不均以及節點投票不積極問題,利用博弈論中沙普利值的計算方式對見證人節點的區塊獎勵進行合理分配。
在博弈論中,根據局中人之間是否存在約束力將博弈分為合作博弈與非合作博弈[23]。在DPoS 共識機制中,當不同的權益持有者給同一個目標節點投票時,此目標節點與投票的節點將形成了一個“利益共同體”,只有當目標節點成為見證人節點后,投票節點才能獲得最大收益。因此,給同一見證人節點投票的節點之間形成了合作博弈的關系[24]。在合作博弈中,主要討論的對象是聯盟以及如何解決聯盟中每個局中人的收益分配問題。
本文將DPoS 共識機制中給同一個目標節點投票的所有節點形成的“利益共同體”[25]集群稱為一個聯盟N,聯盟中的節點稱為局中人,為每一個聯盟定義一個價值函數V,并規定V( )?= 0,則聯盟博弈可以表示為(N,V)。在DPoS 的投票博弈中,每個局中人在聯盟中的邊際貢獻稱為沙普利值,若某個聯盟獲得總投票權益的一半,則該聯盟獲勝,目標節點將成為見證人節點;同時,為了限制節點投票的時間,防止節點無限期拖延投票,將時間作為節點沙普利值計算的一個因素。若用W表示獲勝的聯盟,則對于任意的子聯盟S其價值函數定義如式(7)[24]所示:

則此時聯盟S中節點i的沙普利值如式(8)[25]所示:

其中:Ti表示節點i投票結束的時間,Tvote表示發起投票的時間。當Ti-Tvote越小則說明節點投票花費的時間越少,此時分母越小節點的沙普利值越大,從而能夠促進更多的節點在規定時間范圍內參與投票。
假設見證人節點i有n個投票節點,當成功出塊后獲得的出塊獎勵為RBi,則每個投票節點的獎勵如式(10)所示。通過沙普利值為該見證人節點投票的節點分配獎勵后,該見證人節點最終獲得的區塊獎勵為Ri,如式(11)所示。

區塊鏈系統的激勵機制是保證系統按照既定的規則穩定運行的關鍵[26]。因此,更加合理的節點獎勵分配制度能夠避免節點通過作惡的方式獲取更多的收益,提高節點參與共識以及投票的積極性。通過引入了博弈論中沙普利值的計算方式對見證人節點打包區塊所獲得的系統獎勵進行合理分配,以獎勵回報的方式鼓勵更多的節點保持在線并積極參與投票,使得更多的小節點通過投票獲得一定的收益,提高其成為共識節點的機會,從而增強去中心化程度,不僅能夠解決區塊鏈系統中節點的“社會分層”現象[27],還能夠使得見證人節點和投票節點之間形成利益共同體,共同維護系統的安全和穩定。算法2概括了改進后的節點獎勵分配機制。
算法2:blockRewardDistribution()

DPoS 共識機制中對異常節點并沒有及時的處理方式,而是在下一輪投票中將惡意節點通過投票的方式投票出局[28]。但為了保證算法的高效性,DPoS 共識機制的見證人集合會維持一定的時間段后再進行下一輪投票,通常都是利用鎖定機制進行投票,例如在企業運營系統(EOS)項目中,見證人節點集合鎖定每24 h 進行一次投票更新,從而防止因為頻繁投票而降低系統的性能[29]。因此,在下一輪投票開始之前,該異常節點還有機會參與出塊。如果該節點是因為節點宕機、斷電、網絡延遲等不可避免的因素出現異常行為,則在后面可能恢復正常。但如果該節點本身就是惡意節點,那么在下一輪共識過程中該節點可能持續作惡,導致出塊延遲、交易堵塞等問題。因此,本文在將通過投票系統選出的共識節點集合分為了見證人節點集合和候選節點集合,當見證人集合中某個節點出現異常行為時,將通過動態轉換機制將異常節點和候選節點集合中的節點及時進行替換,以保證在下一輪共識中所有節點均能正常打包區塊。
在見證人節點動態轉換機制中,每一輪投票結束后給共識節點集合中的所有節點初始化一個信譽值(Credit),通過信譽積分對見證人節點的行為進行評斷,且初始賦值為100。當每次見證人節點出現異常行為時扣除10,每次正常出塊后信譽值增加1,通過節點信譽值丟失容易而難以積累的機制來限制節點作惡的行為;同時結合該節點所獲得的投票權益以及當前所獲得的系統獎勵計算節點的綜合信譽值(PCredit),并通過PCredit對節點進行動態轉換。其中第i個見證人節點的PCredit如式(12)所示:

其中:α+β+γ= 1,并設定權益的權重為α= 0.2,區塊獎勵的權重為β= 0.3,信譽積分的權重為γ =0.5。由于每一輪投票后,共識節點集合中的節點會進行一次更新,而投票權益也會隨之更新,重新選出投票權益較大的節點構成共識節點集合,因此權益的權重系數最小;而信譽值只是給每一輪投票后產生的節點進行初始化賦值,其他普通投票節點并沒有信譽值,因此為了體現公平性,每次投票前均需要將上一輪投票選出的共識節點中所有節點的信譽值歸零處理,在下一輪投票選出共識節點集合后重新進行信譽值初始化,使得信譽值只對當前這一組共識節點進行行為評斷,并通過信譽獎懲及時處理惡意節點,因此信譽權重最大;同時,節點通過沙普利值分配得到的獎勵是節點通過長期積極投票或者有效出塊所積累的,因此在計算PCredit中系統獎勵所占權重比權益所占權重大,使得即使是算力大的節點也不能僅僅通過當前的算力優勢獲得記賬權。
在進行第一輪共識時,共識節點集合中所有節點的信譽值均相等,而見證人集合中的節點的投票權益比候選節點集合中節點的投票權益多,初始的系統獎勵均為0。當見證人節點集合中的節點完成一輪共識后,系統將計算見證人節點集合中所有節點的PCredit,當節點的PCredit低于系統設定的閾值時將自動退出見證人節點集合,此時候選節點集合中PCredit最大的節點將自動依次進入見證人節點集合去填補見證人節點集合中退出的節點;當完成一輪共識后,見證人節點集合中節點的PCredit均大于系統設定的閾值時,此時見證人集合中的節點將依次與候選節點集合中的節點的PCredit進行比較,用候選節點集合中PCredit更大的節點去替換見證人節點集合中PCredit相對較小的節點。通過PCredit值對見證人節點進行動態轉換能夠及時對異常節點進行處理,提高系統運行的穩定和安全性,見證人節點動態轉換機制如圖2所示。

圖2 見證人節點動態轉換流程
為驗證改進后的DPoS算法的有效性,在相同的模擬環境下從多個維度對DPoS 算法改進前后進行驗證分析。實驗在處理器Intel? CoreTM i7-7700 CPU@ 3.6 GHz 的64 位Windows 10 企業版平臺上,在go1.16windows-amd64 環境下利用Go 語言模擬了DPoS 算法,采用Geth 搭建101 個以太坊節點集群。最后,通過MATLAB R2016b 對最終的實驗數據進行可視化對比評價。
2.2.1 節點安全性驗證
在DPoS共識機制中,共識節點選取過程的公平性和安全性將直接影響整個區塊鏈系統的性能。為了驗證改進后的DPoS 共識算法在節點選取階段是否能提高共識節點的可信度,在惡意節點占比30%的情況下通過多輪投票并統計對比了每輪選出的共識節點集合中誠實節點所占的比例,實驗結果如圖3 所示。從圖3 中可以看出,改進后的DPoS 共識算法通過投票機制選出的共識節點集合中誠實節點所占比例更高;且隨著投票輪次的增加,共識節點集合中誠實節點的占比逐漸增加并保持在92%左右,而傳統的DPoS共識算法選出的共識節點集合中誠實節點所占比例最終保持在83%左右。實驗結果表明,利用PoW挖礦機制對節點進行初步篩選,能夠讓更多節點基于算力通過更加公平的競爭成為共識節點;同時,在此基礎上通過對節點權益設置上限有效地避免了權益大的節點之間的“賄賂攻擊”,從而降低了惡意節點成為共識節點的幾率。

圖3 共識節點集合中誠實節點比例
此外,為了驗證改進后的DPoS共識機制的容錯性,在共識過程中通過斷網的方式模擬見證人節點遭受攻擊成為惡意節點的情況。當存在3個惡意節點時,統計了在50輪共識過程中共識節點產生有效區塊的個數,其結果如圖4 所示。從圖4 中可以看出,在相同的模擬環境下,改進后的DPoS 共識機制能夠產生更多的有效區塊,這是因為改進后的DPoS共識機制中能夠通過見證人節點動態轉換機制及時處理惡意節點,當節點出現惡意行為時,系統能夠利用信用懲罰的方式通過備用節點集合對惡意節點進行及時替換,不需要通過下一輪投票剔除惡意節點,使得即使存在惡意節點的情況下也能保證在下一輪共識過程中盡最大可能產生有效區塊,提高了系統的容錯性,在一定程度上提高了系統的吞吐率和安全性。

圖4 共識機制容錯率對比
2.2.2 節點獎勵分配與投票積極性驗證
在DPoS共識機制中,由于只有部分代表節點參與區塊的打包和驗證,使得區塊鏈系統中大部分節點長期處于不在線的狀態。本文為了驗證博弈論中沙普利值的計算方式對區塊獎勵均衡劃分以及對促進節點積極投票的有效性,在相同的環境下對改進前后的DPoS 共識機制進行了20 輪共識過程,對兩種算法中投票節點獲得的區塊獎勵以及參與投票的節點數量進行了統計和對比,其結果如圖5所示。
在共識節點的選舉過程中,參與投票的節點大多數都是小節點。在本文的改進過程中,由于對節點的權益設置了上限,使得擁有較大權益的節點也不能將自身持有的權益投給一個節點,而是將自身權益分投給多個節點。因此,小節點的獎勵分配將直接影響其投票的積極性。從圖5(a)中可以得出,改進后的DPoS共識機制中,隨著投票節點中小節點個數的增加,小節點總體獲得的獎勵比重持續增加,而傳統DPoS 共識機制中,小節點獲得的獎勵并沒有明顯提高。這是因為在傳統的DPoS 共識機制中,投票節點最終獲得的獎勵是根據自身投票權益所占的比重進行分紅,使得那些大節點始終占據主導地位,從而加劇節點之間的“貧富差距”;而利用沙普利值通過每個投票節點的邊際貢獻對區塊獎勵進行分配,有利于使小節點獲得的收益更加合理。同時,在擁有101 個區塊鏈節點的集群中進行20 輪的共識投票,對積極參與投票的節點進行統計分析,其結果如圖5(b)所示,改進后的DPoS 共識機制能促進更多的節點參與共識投票,表明利用沙普利值對區塊獎勵進行分配不僅能夠避免大節點的“財閥統治”,還能促進更多的節點保持在線,共同維護系統安全。

圖5 節點獎勵分配與投票積極性
2.2.3 時間效率對比分析
對比分析了20 輪共識過程中DPoS 共識機制改進前后的時間消耗,結果如圖6所示。

圖6 時間效率對比
從圖6 中可以看出,改進后的DPoS 共識算法略大于傳統的DPoS 共識算法的時間消耗。因為在DPoS共識機制的整體改進過程中,為了讓大部分節點擁有更公平的機會參與到記賬權競爭中,在共識節點選舉的前期階段利用了工作量證明中的挖礦機制對節點進行了初步篩選,但挖礦機制是基于數學難題的哈希計算,相對于傳統DPoS中的直接委托投票選舉而言,其時間消耗必然增加。因此為了平衡節點共識的公平性和整體時間開銷,限制了挖礦的難度并鎖定了節點挖礦時間為60 s 左右。在共識階段,傳統DPoS共識機制是按照既定的順序依次打包區塊;為了防止惡意節點的有效攻擊,本文利用可驗證隨機函數(VRF)增強了打包區塊的共識節點的隨機性,強化了共識過程的安全性,但VRF 的引入在一定程度上也增加了系統的開銷。在權益分配階段,傳統DPoS共識機制中各節點的最終權益是根據委托比重進行分紅;為了讓更多小節點獲得更多的權益,本文基于節點對共識過程中的貢獻利用沙普利值對權益進行了合理劃分,促進了更多節點積極參與到共識過程中來共同維護系統的穩定,但同時也增加了整體算法的復雜度,因此改進后的DPoS算法需要花費更多的時間。
綜上分析,雖然改進前后兩種機制的時間消耗有所不同,但并沒拉開太大的差距,總體上提高了系統的安全性,且DPoS 共識機制目前主要運行在EOS系統中,能夠容忍秒級單位范圍內的時間消耗。因此,綜合考慮區塊鏈系統的穩定性和效率,改進后的DPoS 算法能夠在相對高效的時間效率下更好地保證出塊的安全。
為了兼顧區塊鏈公鏈系統效率與其安全性,本文從共識節點的選舉、見證人節點出塊順序以及權益分配方面進行了改進和優化。通過PoW 算法的“挖礦”機制增強了共識節點選舉的公平性,提高了小節點成為共識節點的幾率;同時,利用可驗證隨機函數優化了見證人節點打包區塊的順序,增加了節點作惡的成本,在一定程度上防止了“合謀攻擊”的現象;最后,利用沙普利值的計算方式實現了對節點獎勵分配的均衡化,有效地避免了區塊鏈系統中“財閥統治”的局面,促進了節點投票積極性。實驗結果表明,本文的改進方法對DPoS共識協議的安全性有所鞏固,在保證算法高效出塊的情況下平衡了記賬權的競爭。但仍存在一些不足之處,在增強共識節點選舉公平性的同時,如何進一步減少時間開銷以及如何使得節點的權益分配達到納什均衡將是接下來的重要研究工作。