











摘 要:針對實用拜占庭容錯共識算法中存在缺少對惡意節點的懲罰機制、通信開銷大、主節點選取安全性不足等問題,提出了一種基于信譽和標準差聚類的PBFT共識優化算法TSD-PBFT,旨在提高共識效率和安全性。首先,建立節點動態和靜態結合的信譽評估模型,通過實時監測節點投票數和參與度來動態評估節點行為,并剔除惡意節點來提高整體共識效率和可靠性,同時通過周期性地重置高信譽值節點的評分,防止單一節點或小團體長期主導共識過程;其次,提出基于信譽和標準差的聚類算法,引入標準差逐步選取密度高且信譽良好的節點作為聚類中心,避免局部最優解;同時采用改進的K-medoids聚類算法將節點分組并形成兩層,實現分層共識來降低共識過程的通信開銷;最后,優化主節點選取方式,由聚類中心節點投票產生主節點,通過賦予信譽高且標準差低的節點更高的投票權重來降低惡意節點擔任主節點的概率,提高主節點選取的安全性和公正性。實驗仿真結果表明,在相同的網絡設置和節點數量條件下,與PBFT相比,TSD-PBFT算法平均吞吐量提高了72.1%,平均時延降低了50.2%。與現在類似PBFT改進算法相比,TSD-PBFT也具有明顯的性能優勢,能更好的適用于大規模聯盟鏈場景。
關鍵詞:區塊鏈; 共識機制; 實用拜占庭容錯; 信譽機制; 標準差聚類
中圖分類號:TP301"" 文獻標志碼:A
文章編號:1001-3695(2025)03-004-0677-10
doi:10.19734/j.issn.1001-3695.2024.09.0312
Tsd-PBFT: PBFT consensus optimization algorithm based ontrust and standard deviation clustering
Zhang Li 1, Deng Xiaohong2,3, Shi Yiran1, Liu Yong 1, Liu Lihui1
(1.School of Information Engineering, Jiangxi University of Science amp; Technology, Ganzhou Jiangxi 341000, China; 2.School of Information Engineering, Gannan University of Science amp; Technology, Ganzhou Jiangxi 341000, China; 3.Key Laboratory of Cloud Computing amp; Big Data, Ganzhou Jiangxi 341000, China)
Abstract:Aiming to address the lack of punishment mechanisms for malicious nodes, high communication overhead, and insufficient security in master node selection within practical Byzantine fault-tolerant consensus algorithms, this paper proposed a PBFT consensus optimization algorithm based on trust and standard deviation clustering,called TSD-PBFT, which aimed to improve the consensus efficiency and security. Firstly, the algorithm established a dynamic and static trust assessment model to evaluate node behavior in real-time by monitoring node votes and participation. This process eliminated malicious nodes to enhance overall consensus efficiency and reliability. Additionally, the scores of nodes with high trust values were periodically reset to prevent individual nodes or small groups from dominating the consensus process for extended periods. Secondly, the algorithm introduced a clustering approach based on trust and standard deviation. It selected nodes with high density and strong trust as clustering centers by incorporating standard deviation, which avoided local optimal solutions. The improved K-medoids clustering algorithm grouped the nodes into two layers, facilitating layered consensus and reducing communication overhead during the consensus process. Finally, the algorithm optimized the master node selection method. Nodes at the clustering centers voted to choose the master node, giving higher voting weights to those with high trust and low standard deviation. This approach reduced the likelihood of malicious nodes becoming the master node and enhanced the security and fairness of the selection process. Experimental simulation results demonstrate that, under the same network settings and number of nodes, TSD-PBFT algorithm improves average throughput by 72.1% and reduces average delay by 50.2% compared to PBFT. TSD-PBFT also shows significant performance advantages over similar PBFT improvements, making it more suitable for large-scale consortium blockchain scenarios.
Key words:blockchain; consensus mechanism; practical Byzantine fault tolerance; trust mechanism; standard deviation clustering
0 引言
自比特幣[1]問世以來,其底層核心技術——區塊鏈,引起了研究者們的廣泛關注。區塊鏈作為一種去中心化的分布式賬本技術,融合p2p網絡、密碼學原理、共識算法以及智能合約技術[2],構建了一個安全、透明且難以篡改的數據存儲系統。隨著以太坊和智能合約的問世,區塊鏈技術開始在能源[3]、醫療[4]、物聯網[5]等領域廣泛應用。根據區塊鏈中節點規模和覆蓋范圍的不同,區塊鏈可分為公有鏈、私有鏈和聯盟鏈三種類型[6]。公有鏈允許非授權節點自由加入或退出區塊鏈系統,并驗證交易;私有鏈專為企業內部使用,不對外開放;而聯盟鏈將公有鏈和私有鏈的特點結合,只有經過授權的合作機構內部人員才能加入,這種機制在保持一定開放性和可控性之間達到平衡,成為市場上應用最廣泛的區塊鏈類型。
共識算法是區塊鏈的核心技術,它確保系統的可靠性和穩定性,直接影響整個區塊鏈系統的性能和可應用場景。目前常見的共識算法有工作量證明(proof of work,PoW)[7]、權益證明(proof of stake,PoS)[8]、Raft(replication and fault tolerant)[9]、實用拜占庭容錯(practical byzantine fault tolerance,PBFT)[10]等。PoW共識算法廣泛應用于公有鏈,但其效率低下且消耗大量算力資源。為解決PoW的缺陷,PoS共識算法引入幣齡概念,但其去中心化程度較低,導致記賬權集中在少數擁有大量幣齡的節點手中。Raft共識算法以其通信復雜度低而在私有鏈中被廣泛應用,然而它不具備拜占庭容錯的能力。相比之下,PBFT共識算法不依賴代幣,共識過程無資源浪費和分叉問題,且能容忍拜占庭節點,因此在聯盟鏈中被廣泛采用。盡管如此,PBFT算法仍然有以下三個方面的不足:a)主節點按編號輪流擔任,易受p2p網絡中的DDoS(distributed denial of service)攻擊和女巫攻擊[11],存在潛在安全風險;b)缺少懲罰機制,當主節點作惡時,僅通過視圖切換保障共識過程的繼續,惡意節點仍然存在于系統中,留下安全隱患;c)三階段廣播過程中要求所有節點進行大量消息交互和確認,導致通信開銷巨大,嚴重影響算法性能。
鑒于這些局限性,研究者們致力于改進和優化PBFT,以提高其適用性、靈活性和效率。例如,文獻[12]將信譽評估機制和可驗證的隨機函數結合,用于主節點的選取,不僅考慮節點的信譽度,還通過隨機函數的驗證確保選取過程的隨機性和公正性,有效提升系統的安全性。Wang等人[13]引入一種特征信譽模型對主節點選擇進行優化,通過考慮節點的特征屬性,對節點的信譽值進行更精準的評估,從而增加信譽值高的節點成為主節點的概率。李俊吉等人[14]提出通過信譽評分劃分節點角色,減少節點間通信并優化投票流程,從而實現高效、安全的快速共識。陳蘇明等人[15]則通過引入信譽獎懲機制進一步提升安全性,采用分組機制降低系統的中心化風險,并優化主節點選舉和共識流程,從而提高共識效率。Sun等人[16]根據實時地理位置將每個節點聚類到多個從屬鏈中,將系統共識任務分解為局部共識組,有效降低整體通信開銷和共識時延。Gan等人[17]利用貪婪聚類算法對網絡中的物聯網節點進行分組,根據節點之間的相似性和連接關系將節點進行有效地聚合,減少通信開銷和共識時延。陳子豪等人[18]利用聚類算法對參與區塊鏈共識的大規模網絡節點根據特征進行聚類與層次劃分,從而提高區塊鏈平臺處理請求的效率。Tong等人[19]設計節點信用評分的投票機制,通過節點之間的投票機制來確定主節點的選取,增加信用評分較高的節點成為主節點的概率。上述研究者提出的PBFT優化方案提升了系統安全性,并在一定程度上減少了共識通信開銷,提高了系統的運行效率。
本文對其進行對比總結,結果如表1所示,現有優化方法在同時解決如下三個方面的問題時仍面臨挑戰。a)信譽評價指標方面未考慮信用評估模型的動態性,可能導致高信用值節點成為主導節點,從而使低信用值節點喪失共識積極性,影響系統的公平性和去中心化程度;b)聚類分組算法容易受到異常節點的影響,如果存在惡意節點或者異常行為的節點,可能導致聚類中心點選取出現偏差,進而影響整個共識過程的準確性和可靠性;c)信用投票機制雖提高了高信用評分節點成為主節點的概率,但可能加劇中心化。此外,如果主節點在作惡后其信譽值依然在正常閾值內,惡意節點仍可繼續參與共識,帶來安全隱患。
針對上述不足,本文提出一種基于信譽和標準差聚類的PBFT共識優化算法(trust and standard deviation clustering PBFT,TSD-PBFT),主要的創新工作如下:
a)建立動態與靜態結合的信譽評估模型。在共識過程中,動態評價節點收到的投票數和參與度,用于實時檢測和清除惡意節點,提升共識效率和可靠性。靜態評價則考慮節點的投入成本和歷史行為,確保共識機制的公平性和穩定性。同時通過周期性地重置高信譽值節點的評分,防止單一節點或小團體長期主導共識過程,從而維護系統的去中心化特性。
b)提出基于信譽和標準差的聚類算法。選取標準差小于總體標準差的節點作為初始中心點候選集,以優化計算開銷并聚焦在具有較為穩定數據分布的節點上。在候選集中逐步選擇密度高且信譽好的節點作為最終的聚類中心點,并確保最終聚類中心均勻分布在不同聚類簇中,以避免局部最優解。同時,采用改進的K-medoids聚類算法將剩余節點分配到最近的聚類中心點,來減少共識過程中的通信開銷,提高聚類的精確性和處理效率。
c)設計基于投票機制的主節點選取算法。由聚類中心節點投票產生主節點,選取依據是被投票節點的信譽值和標準差,而非僅由信譽值最高的節點擔任。高信譽值和低標準差的節點在投票中權重更大,確??尚刨嚨墓濣c在主節點選舉中具有更大的影響力。
1 問題提出
1.1 主節點選取問題
主節點在PBFT共識系統中充當客戶端與從節點之間的橋梁,負責轉發所有客戶端請求,主節點的安全性關乎到整個共識系統能否正常運行。
在PBFT中,主節點的選取根據預設規則進行。假設節點總數為N,當前視圖編號為V,則主節點編號為p=V mod N。PBFT主節點選取如圖1所示,其中灰色節點為當前視圖的主節點,白色節點為從節點,黑色節點為惡意節點(參見電子版)。在初始視圖V=0時,主節點編號為p=0 mod 4=0,節點0成為主節點,當視圖編號變化為V=1時,主節點編號為p=1 mod 4=1,節點1成為主節點,依此類推,隨著視圖編號V的增加,各節點將輪流擔任主節點。然而,這種主節點選取機制中存在兩個關鍵問題:
a)缺少門檻條件的節點輪換機制。每個節點輪流擔任主節點,而沒有設置門檻限制。例如圖1中,當視圖從view=0變化為view=1時,新的主節點編號由當前失效主節點編號N0變為N1。
b)缺乏對惡意節點的有效處理機制。圖1中在view=3時惡意節點N3也能夠成為主節點,并且將持續存在系統中,惡意節點可以利用系統的設計漏洞不斷地參與視圖轉換,并有機會再次成為主節點,形成惡性循環。特別是當惡意節點的數量超出算法容忍范圍時,系統將無法有效保證其安全性和正確性。
1.2 通信復雜度問題
PBFT的通信復雜度主要體現在如下兩個方面:
a)由于PBFT未能對惡意節點進行處理,一旦惡意節點成為主節點,系統將需要進行視圖轉換。然而,即便進行視圖轉換,惡意節點仍有可能再次成為主節點,導致系統需要不斷地進行視圖轉換,這進一步增加系統的通信開銷,對系統性能造成了巨大影響。
b)PBFT在執行共識過程中經歷預準備、準備和提交三個階段。其中,預準備階段和提交階段都需要所有節點向其他節點發送請求消息,以確定進入下一階段所需的最小數量的準備消息,這個過程需要所有節點之間進行通信,并且必須等待所有節點都完成后才能進入下一階段,這使得通信復雜度達到了O(n2)級別。
1.3 K-medoids聚類算法及其存在的問題
1.3.1 K-medoids聚類算法介紹
聚類算法[20]是一種無監督學習的數據分析方法,用于揭示數據內在結構和模式,無需預定義類別標簽。K-medoids算法是聚類分析領域中的一種重要方法,旨在將數據樣本劃分成具有相似特征的簇。假設節點樣本{x1,x2,…,xn},使用K-medoids算法進行聚類,xi屬于聚類簇Cj={C1,C2,…,Ck}的簇內節點,Oi={O1,O2,…,Ok}是聚類簇中心的節點集,且klt;n。整個聚類過程只需兩個計算公式就能完成,式(1)是兩個節點的歐氏距離,式(2)是節點的總體誤差平方。計算公式如下:
d(i,j)=(xi-xj)2
(1)
E=∑ki=1∑xi∈cjd(Oi,xi)2
(2)
其中:xi和xj分別表示節點i和j的坐標;Oi是簇Cj的中心點;d(Oi,x)是節點x到簇中心點Oi的距離。
K-medoids聚類算法步驟如下:a)隨機選擇k個樣本作為初始聚類中心;b)將剩余的樣本分配給與其距離最近的聚類中心;c)計算每個聚類中所有樣本到其他樣本的距離和;d)選擇每個聚類中的一個代表樣本作為新的聚類中心,使其到簇內其他點的總距離最小;e)重復步驟b)~d),直到聚類中心穩定或達到最大迭代次數。
1.3.2 K-medoids聚類算法存在的問題
共識算法通常使用聚類算法將節點分組,以便更高效地在分布式系統中實現一致性。在PBFT中引入聚類算法對節點進行分組以優化執行效率,例如將地理位置相近或網絡延遲較低的節點聚在一起,可以減少通信延遲,提高共識過程的效率。而在聚類算法中初始中心點的選擇是提高聚類效果和效率的關鍵因素,如果初始中心點選擇偏離最終聚類中心區域的樣本或孤立點,聚類過程容易陷入局部極值,導致聚類結果準確性較低且需要更多次迭代來更新中心點。與K-means等其他算法相比,K-medoids聚類算法更為魯棒,尤其在處理系統中的離群點時表現更出色。然而,K-medoids在選擇初始中心點時容易受到異常點的影響,可能導致局部最優解,聚類算法對比如表2所示。
為改進原K-medoids聚類算法,本文利用標準差定義初始中心點候選集,有效避免選擇密度較低或孤立點的樣本,從而提高對異常值的穩健性。同時,采用逐步增加中心點的策略,確保聚類中心點分布在不同聚類簇中,減少局部最優解的影響。改進的K-medoids聚類算法將在2.3節中詳細介紹。本文通過仿真對比了改進前后聚類算法的效果,如圖2所示。
傳統K-medoids算法選擇了紅色節點1、2、3和4作為聚類中心,這些中心點較為分散,尤其是節點3和4位于低密度區域,且與其他數據點距離較遠,當中心點落在數據分布的邊緣或離群點時,會降低算法的穩定性和準確性。相比之下,改進的基于信譽值和標準差的聚類算法選擇了紫色節點1、2、3和4作為聚類中心,這些節點集中于數據的高密度區域,更準確地反映數據的實際分布,避免將孤立點或邊緣點作為中心,提高了聚類的精度和效果(參見電子版)。
2 TSD-PBFT算法
2.1 算法模型
TSD-PBFT將系統中的節點分為兩層。第一層共識組由聚類中心節點組成,這些節點是根據信譽評估、節點密集程度等標準選出的代表性節點。在第一層共識組中,聚類中心節點中通過投票機制選出主節點,以降低主節點作惡的風險。剩余節點則采用聚類分組策略,形成第二層共識組,并通過各自的聚類中心節點參與共識。以系統中20個節點為例,設定分組數K=4,算法的整體模型如圖3所示。
主要分為以下四個步驟:
a)計算節點信譽值和標準差。在每輪共識開始之前,根據系統設計的信譽評估和標準差評估方法,對20個節點進行評估,選擇信譽值高且密集程度高的節點作為聚類中心節點。通過計算,確定節點1~4擔任聚類中心節點及第二層領導者。
b)投票選取主節點。在聚類中心節點投票選取主節點的過程中,將節點信譽值和標準差的比值作為投票權重。高信譽值和低標準差的節點被賦予更大的權重,以確保它們在主節點選舉中發揮更重要的作用和影響力。節點根據其權重進行投票,例如,圖3中節點1憑借其高信譽值和低標準差獲得了三票支持,而節點2和4則各獲得了兩票,節點3僅獲得一票。根據票數統計規則,節點1因累積到最高權重值當選為主節點。這種方式確保了主節點選取的公平性和安全性。
c)聚類分組。按照節點之間的距離對節點進行分組并形成四個聚類簇。圖3中聚類簇1包含節點1、5、10、14、19,聚類簇2包含節點2、6、7、11、15,聚類簇3包含節點3、9、13、17、18,聚類簇4包含節點4、8、12、16、20。
d)分層共識。在第一層共識中,由節點1領導運行簡化的PBFT共識算法,將原PBFT的三階段共識簡化為預準備和準備階段兩階段共識
。在第二層共識中,由節點1~4共同領導運行HotStuff共識算法。
2.2 信譽評估模型
現有的PBFT改進算法在處理惡意節點、網絡攻擊和節點參與度不平衡時仍有不足,例如惡意節點可能潛伏以尋找攻擊機會,威脅網絡安全;長期不參與共識的節點可能被誤選為主節點;現有信譽評估模型缺乏動態響應能力,不能及時反映節點行為變化。
為改進以上不足,本文提出了一種由靜態評價和動態評價組成的節點信譽模型,其中定義1、4、5借鑒文獻[21]。靜態評價包括節點歷史共識行為和節點的投入成本,動態評價包括節點的參與程度以及節點投票數。結合靜態評價和動態評價可以使信譽評估更加及時和靈活,適應不同時期節點的實際情況。例如,節點i在過去的共識過程中表現良好,但近期連續發送錯誤消息,表現出惡意行為。在靜態評價中,節點i的歷史行為將影響其歷史共識行為Bi的值,若該值低于設定的閾值,節點即被判定為惡意并剔除。同時,動態評價通過實時監控節點的參與程度和投票情況,及時發現異常并調整信譽值,從而增強系統對惡意節點的響應能力。
定義1 投入成本。投入成本用于反映節點加入系統的誠意,即節點加入區塊鏈網絡需支付的押金。節點i的投入成本Ci為
Ci=MiMn
(3)
其中:Mi表示節點i加入區塊鏈網絡所支付的押金;Mn代表所有節點的總押金,反映整個網絡的穩定性和資金儲備。
定義2 歷史共識行為。歷史共識行為代表節點在共識過程中的誠信度。具有良好歷史共識行為的節點通常被認為是可信賴的,因為它們在過去的共識活動中表現出積極參與共識的態度。節點i的歷史共識行為為
Bi=φ×Ris-ω×RifRi
(4)
其中:Ris為節點i在共識過程中的良好行為次數,而不良行為次數則表示為Rif,總行為次數為Ri=Ris+Rif;φ和ω分別代表良好行為和不良行為的權重(φ=0.05,ω=0.6。實驗參數在5.1節有詳細介紹)。假設節點i在一個共識周期內有14次良好行為(5次按時參與共識、4次成功驗證其他節點的消息、5次遵循規則參與投票)和4次不良行為(1次未按時響應請求、2次參與度低于平均水平、1次發送錯誤消息),則Ri=Ris+Rif=14+4=18,根據式(4)計算得Bi=(0.05×14-0.1×4)/18=0.0167。當Bilt;0時,該節點將被視為惡意節點并被系統剔除。
定義3 節點參與程度。節點參與程度通過實時監測和評估節點行為,及時發現活躍度高、積極參與共識的節點。節點i的參與程度為
Pi=RiR
(5)
其中:R代表所有節點的總參與次數。若某節點在一個共識周期內連續兩次參與程度低于平均水平,全網節點將進行投票表決是否剔除該節點,超過2/3的節點同意則執行剔除操作。通過保留參與度和活躍度更高的節點,可以提高整體共識的效率和可靠性。
定義4 節點收到的投票數。節點收到的投票數越多,該節點越可信。節點i收到的投票數總和為
Votei=∑Nj=0Xj
(6)
其中:Xj表示節點j對i的投票行為,對于支持票數低于全網平均水平的節點,將其識別為不可信節點并從系統中剔除。
定義5 節點投票行為。如果節點j支持i參與共識,那么i的票數會增加1;若節點j選擇不投票,則表明持中立態度。節點j的投票行為公式為
Xj=1 節點j向i投票0 節點j不向i投票
(7)
定義6 靜態評價。靜態評價包括投入成本和歷史共識行為。節點i的靜態評價為
TSi=Ci+Bi
(8)
定義7 動態評價。節點參與程度和節點收到的投票數鼓勵節點持續積極參與共識過程,通過動態調整信譽值,激勵良好行為并懲罰惡意行為。節點i的動態評價為
TDti=Pi+Votei
(9)
定義8 綜合信譽值。綜合信譽值是節點i的綜合表現。計算公式為
Trusti=a×TSi+β×TDti
(10)
其中:α是靜態評價權重;β是動態評價權重。這些定義共同構成了一個綜合的信譽評估體系,以確保節點以可靠、安全的方式參與共識,并在系統性能和效率之間取得平衡。
定義9 信譽值更新。為避免高信譽值節點長期主導共識,本文設定以y次共識為周期進行信譽值更新,在執行信譽值更新時,系統將檢查并清零所有信譽值達到Trustmax=5的節點,并根據新的綜合信譽值公式重新計算這些節點的信譽值。新的計算公式為
Trustnewi=(a×TSi+β×TDti)1.5×Sumterm
(11)
其中:Sumterm表示節點信譽值被清零的次數。被清零的節點重新參與共識時,其信譽值乘以1.5,以激勵它們通過積極的行為重新建立信譽,并在共識過程中獲得更高的信譽獎勵。這一更新機制旨在防止高信譽值節點長期主導共識,避免主導現象,并促進低信譽值節點通過積極行為重新建立信譽,提升共識過程的公正性和可靠性。信譽評估主要算法描述如下:
算法1 信譽評估算法
輸入:Mi、Mn、Ri、Ris、Rif、R。
輸出:Trusti。
for round in range(5)://每五輪共識為一個周期
Sumterm=0//初始化Sumterm
Trust_count=0//初始化Trusti超過Trustmax的次數計數
Ci←Mi/Mn//計算投入成本
Bi=(φ×Ris-ω×Rif)/Ri//計算歷史共識行為
if Bi≤0:
remove node//剔除惡意節點
end if
Pi←Ri/R//計算參與程度
if low participation countgt;=2://若兩次參與度低于平均水平
remove node
end if
Votei←node.votes_received+=1//投票數
if Voteilt;average votes:
remove node
end if
Trusti=a×(Bi+Ci)+β×(Pi+Votei)//綜合信譽值
if Trustigt;=Trustmax:
Trust_count+=1//更新超限次數
Trusti=0//重置Trusti為0
Sumterm=Trust_count
Trustnewi=1.5×Trusti×Sumterm
end if
end for
return Trusti
2.3 基于信譽和標準差的聚類算法
2.3.1 聚類中心節點選取
依據信譽評估模型對節點信譽值進行評估后,再引入標準差來衡量節點的離散程度,以確保選取出的聚類中心節點具有較高的信譽值和較小的標準差。選取聚類中心節點主要分為兩個部分:
1)確定初始中心候選節點集Sm
通過計算節點總體的標準差v以及每個節點的個體標準差vi的大小,確定初始中心候選節點集Sm,將個體標準差vi小于總體標準差v的節點確定為初始中心候選節點集,即Sm={i|vilt;v}。v和vi計算公式為
v=1n-1∑ni=1d(xi.x)2
(12)
vi=1n-1∑nj=1d(xi,xj)2
(13)
2)從Sm中逐步選取K個聚類中心節點Oj
a)在Sm中選擇兩個起始中心點O1、O2。第一個初始確定中心O1是Sm中距離所有節點總距離最小的點,第二個初始確定中心O2則是Sm中距離O1最遠的點。第一個初始中心點O1和第二個初始中心點O2的公式為
O1=argmino∈Sm∑ni=1d(O,xi)
(14)
O2=argmaxo∈Sm\{O1}d(O,O1)
(15)
其中:Sm表示初始中心點集合;Sm\{O1}表示從Sm中排除O1后的集合;d(O,O1)表示中心點O到O1的距離。
b)分配剩余節點到聚類簇Cj。剩余節點將根據就近原則分配給最近的初始確定中心形成聚類簇Cj。聚類簇Cj的公式為
Cj={xi|d(xi,Oj)=mink∈(1,2,…,k)d(xi,Ok)}
(16)
其中:Cj表示聚類簇;d(xi,Oj)表示節點xi與中心點Oj之間的距離。
c)更新聚類中心Oj。計算每個節點到其所屬初始確定簇中心的距離,若初始確定中心不是距離簇內節點總距離最小的點,則繼續尋找新的中心點Oj,確保新中心點Oj到簇內所有節點的距離和最小。若新選定的中心點與上次相同,則停止更新。更新聚類中心Oj的公式為
Oj=arg minx∈Cj∑xi∈Cjd(xi,x)
(17)
其中:Oj表示更新后的簇Cj的中心點。
d)選取剩余聚類中心Og+1。當已經存在g個中心點(2≤glt;k)時,選擇第Og+1個初始中心點的原則是選擇距離每個聚類簇中心點最遠的一個點。剩余聚類中心Og+1的公式為
Og+1=arg maxxi∈Sm,Oj∈{O1,O2,…,Og}d(xi,Oj)
(18)
其中:Oj表示更新后的簇Cj的中心點;Og+1表示第g+1個初始中心點。
以系統中20個節點為例,設定分組數K=4,聚類中心節點選取如圖4所示。
節點O1在20個節點中與其他節點的總距離最小,節點O8則距離O1最遠。根據就近原則,將其余節點分配給最近的中心點,形成兩個聚類簇。例如,聚類簇1由O1擔任初始中心節點,簇內節點包括(3、4、5、6、10、11、14、18、19),聚類簇8由O8擔任第二個初始中心節點,簇內節點包括(2、7、9、12、13、15、16、17、20)。并驗證初始中心點是否為最終中心點。如果初始中心點不是距離簇內所有節點總距離最小的點,則重新選擇,直到找到總距離最小的中心點。例如,節點O8不是聚類簇8中到所有簇內節點總距離最小的點,則繼續尋找,直到確定最終中心點。一旦確定節點O1和O2為最終中心點,接著選取第三個初始中心節點O3,即距離O1和O2最遠的節點,并形成三個聚類簇。依次類推,選出O4,計算每個節點到其簇中心的距離,確保新中心點到簇內所有節點的總距離最小。如果新中心點與上次相同,則停止更新;否則,繼續迭代。聚類中心節點選取算法描述如下:
算法2 聚類中心節點選取算法
輸入:Nnodes、k。
輸出:Oj、Cj。
for each node in Nnodes:
node position←(xi,yj) //獲取節點的位置坐標
v←式(11) //計算總體標準差
vi←式(12) //計算節點標準差
if vilt;v:
Sm←(vilt;v)//初始中心點
end if
O1←Mindij[nodes]//選擇第一個中心點
O2←Maxdij(node,O1)//選擇距離O1最大的節點最為O2
Cj←[Mindij(node,center)]//分配節點到最近中心點所在的簇
Oj←Mindij(Cnodei,Cnode)//表示更新后的簇Euclid Math OneCAp的中心點
while Ojlt;k://在中心點數量小于k時
Og+1←Maxdij(node,center)//第g+1個中心點
if Og+1==Oj: //如果新的中心點與舊的一致,則停止迭代
end if
end while
end for
return [Oj,Cj]
2.3.2 聚類分組
根據前文介紹,通過信譽值和標準差計算公式,選出信譽度較高且標準差小的節點作為聚類中心節點。這些聚類中心節點投票選舉出主節點,確保選出的主節點在信譽和性能方面具有優越性(將在2.4節中詳細介紹)。確定聚類中心節點后,剩余節點根據與各中心節點的距離進行分配,形成K個簇。每個簇的節點數量嚴格控制在N/K以內,以確保負載均衡。這種分組方式不僅減少了通信延遲,還避免單個簇內節點過多導致的瓶頸問題,提高系統的整體效率和穩定性。
節點聚類分組如圖5所示,在第一層,節點1~4作為聚類中心節點,由節點1擔任主節點并運行簡化的PBFT共識算法,將原來的三階段共識簡化為僅包含預準備和準備兩個階段。由于第一層的聚類中心節點都是高信譽值且密集程度高,所以共識過程更加可靠和安全。在第二層,節點1領導的聚類簇1(包括節點5、10、18、19)進一步執行HotStuff共識算法,大幅減少系統通信開銷,從而提高整體效率和性能。
2.4 基于投票機制的主節點選取算法
為確保主節點選取的公正與隨機性,引入投票機制,此機制由第一層聚類中心節點通過投票產生主節點,投票流程如圖6所示。
投票流程具體步驟如下:
a)初始準備。每個第一層聚類中心節點廣播其信譽值Trusti和標準差Vi。
b)投票過程。每個節點可以根據其他節點的信譽值和標準差進行最多K/2次投票。節點將自己的投票信息格式化為〈vote,i,j,g〉,其中i表示被投票節點編號,j表示投票節點編號,g表示投票行為(0或1)。例如圖6中,節點1向節點2投票的信息可以表示為〈vote,2,1,1〉。投票行為g的確定取決于被投票節點的信譽值和標準差。如果被投票節點的信譽值較高且標準差較低,投票節點可能會選擇g=1;反之,則為g=0。
c)票數統計。每個節點收到其他節點的投票信息后進行匯總,根據式(19)計算自己的最終票數。
Li=∑Ki=0(TrustiVi)votei
(19)
其中:Li表示主節點收到的最終投票數統計;Trusti/Vi的比值越大,意味著節點在主節點選舉中的影響力越大;votei表示節點收到的投票數。例如在圖6中,節點1收到3票,節點2和4各收到2票,節點3收到1票。假設節點1的信譽值為2.4,標準差為0.1,對應的投票權重為24;節點2的信譽值為2.3,標準差為0.1,權重為23;節點3的信譽值為2.1,標準差為0.3,權重為7;節點4的信譽值為2.4,標準差為0.2,權重為12。節點1的最終票數Li計算如下:L1=23×1+7×1+12×1=42、L2=36、L3=24、L4=30。最終票數最高的節點1被廣播為主節點。若票數相同,則選擇編號較小的節點進行廣播。
d)確認投票結果。一旦主節點確定,從節點將向主節點發送確認信息以確認其身份。例如,若節點1被選為主節點,則其他節點會向節點1發送類型為〈1,confirmation〉的信息。
此機制保證主節點由信譽值較高且標準差小的節點擔任,這種方法不僅避免了主導節點的產生,還確保了選取過程的公正性。主節點選取的主要算法描述如下。
算法3 主節點選取算法
輸入:C1nodes。
輸出:主節點編號i。
for each node in C1nodes: //遍歷第一層聚類中心節點
voting process(C1nodes) //執行投票過程
vote=(g, node.id, other node.id) //存儲投票信息〈g,j,i〉
g=node vote for(other node) //投票行為0或1
total votes=∑Ki=0(trusti/Vi)votei //計算票數
if vote countgt;max votes:
max votes=vote count
i=find node by id(node id) //找到得票最多的節點
broadcast i //廣播主節點
end if
return i
end for
2.5 TSD-PBFT共識流程
TSD-PBFT對系統節點進行聚類分組后,實現兩層共識,第一層采用簡化的PBFT算法,第二層則采用HotStuff算法。具體共識流程如圖7所示,節點1~4是第一層聚類中心節點,其中節點1為主節點,節點5、10、18、19為聚類簇1內的點。
a)請求階段??蛻舳讼蛑鞴濣c發送請求,請求消息格式為〈request,C,M〉,其中C表示客戶端標識,M表示請求消息內容。
b)預準備階段。主節點1廣播消息到備份節點(節點2~4)。消息格式為〈pre-prepare,V,N,D(M),i,QC〉,其中:V表示當前視圖編號;N表示當前請求編號;D(M)表示消息摘要;i表示主節點編號;QC(quorum certificate)表示共識證書。第一層聚類中心節點對消息進行校驗,確認無誤后,備份節點進入準備階段。若存在異常情況,執行視圖變更,更換主節點。
c)PBFT準備階段。備份節點確認消息合法性,并廣播消息〈prepare-PBFT,V,N,D(M),i,QC-PBFT〉。當備份節點收到超過2f個準備消息時,生成QC并廣播〈QC-PBFT,V,N,D(M),i〉,其中QC為第一層精簡PBFT產生的消息證據。
d)Hotstuff準備階段。第二層領導者節點(節點1)廣播消息〈prepareQC,V,N,D(M),QC-HotStuff〉到簇內其他節點(節點5、10、18、19)。確保在第二層的共識過程中,節點具有足夠的共識證據來進行后續的提交階段。
e)預提交階段。簇內節點收到prepareQC-HotStuff消息后,確認消息合法性,并廣播消息給其他節點。消息格式為
〈pre-commit,V,N,D(M),i,QC-HotStuff〉。
f)提交階段。當領導者節點(節點1)收到超過2f+1個預提交消息后,生成新的QC并廣播消息〈commit,V,N,D(M),i,QC-HotStuff〉給其他節點,確保共識過程已經達成一致,并可以進行最終的決定階段。
g)決定階段。簇內節點收到提交消息后,確認消息合法性,向客戶端發送最終的決定消息〈decision,V,N,D(M),i,QC-HotStuff〉。當客戶端收到2f+1個一致的決定消息后,認為請求已經得到執行,本輪共識完成。
3 算法分析
3.1 安全性分析
3.1.1 主節點選取的安全性
在PBFT算法中,主節點是按輪流方式選取的,且算法在主節點的選取過程中不具備過濾惡意節點的能力,PBFT算法的過濾效率PP-f=0。而在TSD-PBFT中,主節點通過信譽機制和投票機制選取,具備更高的惡意節點過濾效率。當節點的歷史共識行為評分低于閾值,或參與程度連續兩次低于平均水平時,該節點將被視為惡意節點并予以剔除。因此,信譽機制的過濾效率Ptgt;0。投票機制通過節點間的投票進一步排除潛在的惡意節點。由于惡意節點的行為往往與大多數誠實節點不一致,投票機制能夠進一步提升過濾效率,即Pvgt;0,由于Ptgt;0和Pvgt;0,必然有聯合過濾效率PTSD-f=1-(1-Pt)×(1-Pv)gt;0。因此,TSD-PBFT的惡意節點過濾效率PTSD-f始終大于PBFT的惡意節點過濾效率PP-f。
3.1.2 共識過程的安全性
原PBFT算法能容忍的最大惡意節點數量為f≤(N-1)/3,其中N為總節點數,f為惡意節點數。當惡意節點數量超過這個上限時,PBFT將無法達成共識。在TSD-PBFT中,通過引入信譽機制和投票機制來動態過濾惡意節點,顯著提高了系統的容忍度,實際參與共識過程的惡意節點數量減少為Nf=f×(1-PTSD-f),為確保共識安全性,需要滿足條件Nf≤(N-1)/3,代入ff的表達式,得f≤(N-1)/3(1-PTSD-f)。由于PTSD-fgt;0,所以1/(1-PTSD-f)gt;1,意味著TSD-PBFT能夠容忍的惡意節點數量f大于PBFT的上限(N-1)/3,這一改進增強了系統的安全性。
3.1.3 系統整體共識成功概率
PBFT的整體共識成功概率計算為PP-S=1-PP-F,其中PP-F是惡意節點導致共識失敗的概率。在最壞情況下,如果惡意節點的數量fgt;(N-1)/3,則PP-F=1,即PP-S=0。在惡意節點數量f≤(N-1)/3的情況下,PP-F取決于惡意節點對消息傳遞和驗證過程的干擾程度,由于PBFT沒有過濾惡意節點的機制,惡意節點可以通過阻止或偽造信息來影響共識,所以PBFT的共識成功概率顯著低于具備惡意節點過濾機制的算法。本文TSD-PBFT的共識成功概率PTSD-S與其過濾惡意節點的效率PTSD-f相關,可以表示為PTSD-S=1-PTSD-F,其中PTSD-F表示在TSD-PBFT中惡意節點導致共識失敗的概率。由于TSD-PBFT能夠過濾一部分惡意節點,進一步細化PTSD-F=PP-F(1-PTSD-f)。因此,TSD-PBFT的共識成功概率PTSD-S=1-PP-F(1-PTSD-f)。由于PTSD-fgt;0,有0lt;(1-PTSD-f)lt;1,所以PP-F(1-PTSD-f)lt;PP-F,這意味著PTSD-Sgt;PP-S,由此可見TSD-PBFT的整體共識成功概率始終高于PBFT的共識成功概率。
3.2 通信開銷分析
本節對PBFT共識算法、文獻[16]、TSD-PBFT算法在完成單次共識所需的通信次數進行分析。首先假設文獻[16]和本文算法區塊鏈系統被分成了K組,每組包含N/K個節點。因此,整個區塊鏈系統的總節點數可以表示為N=K×n(k≥4,n>3)。
1)PBFT算法共識通信次數
PBFT共識算法通信開銷在預準備階段通信次數為(N-1);在準備階段通信次數為(N-1)2;在確認階段通信次數為N(N-1);因此PBFT共識算法在正常共識中的通信次數為T1=(N-1)+(N-1)2+N(N-1)=2N(N-1)。
2)TSD-PBFT算法共識通信次數
由圖7可知,第一層使用簡化PBFT算法,第二層采用HotStuff共識。在第一層PBFT中,節點之間的通信次數為1+(K-1)+(K-1)2。在第二層共識中,共有(N/K-1)8次節點通信。因此,完成一次TSD-PBFT共識所需的節點通信次數為T2=1+(K-1)+(K-1)2+[(N/K-1)8]K=8N+K2-9K+1。
3)文獻[16]共識通信次數
關于文獻[16]共識算法的通信次數的計算有以下假設:假設聚類后的從鏈數量為K,從鏈節點數量為N/K,主鏈中對應的主節點數量也是K。從鏈的共識通信次數計算如下:[(N/K-1)+(N/K-1)2+N/K(N/K-1)]K=2N2/K-2N。主鏈的共識通信次數計算如下:(K-1)+(K-1)2+K(K-1)=2K2-2K。因此,總體的共識通信次數T3=2N2/K-2N+2K2-2K。
通過比較T1、T2和T3的通信次數,可以確定TSD-PBFT與PBFT算法之間的通信開銷比T12,以及文獻[16]與TSD-PBFT算法的通信開銷比T23。
T1=(N-1)+(N-1)2+N×(N-1)=2N×(N-1)
T2=(K-1)+(K-1)2+[(N/K-1)×8]K=8N+K2-9K
T3=2N2/K-2N+2K2-2K
T12=T2T1=8N+K2-9K+12N×(N-1)
T23=T2T3=8N+K2-9K+12N2/K-2N+2K2-2K
(20)
文中設定K值為[3,10],并將節點數量N的范圍設置為[6,100]。分析幾種算法的通信開銷比,不同節點數量和K值下的通信開銷比情況如圖8所示。圖中x軸代表節點數量N,y軸代表K值,z軸代表通信開銷比。
從圖8可以看出,在給定的范圍內,無論K和N如何變化,T12、T23的值始終保持在小于1的水平,表明TSD-PBFT算法的通信開銷一直低于PBFT共識算法和文獻[16]。隨著節點數量的增加,通信開銷率也會隨之下降,TSD-PBFT通過引入信譽機制和投票機制,使主節點的選擇變得更為安全可靠,顯著降低了視圖更換的風險。綜上所述,TSD-PBFT在實際應用中展現出更高的效率和穩定性。
3.3 應用場景分析
金融交易系統是現代金融科技的核心,要求高頻交易中的實時性、安全性和透明度。系統各方需共享交易狀態、風險評估及市場數據,以便迅速決策。區塊鏈通過去中心化提升交易透明度與安全性,用戶作為節點提交交易并參與驗證,交易平臺作為主節點協調交易和反饋。然而,傳統PBFT共識算法在金融交易系統中的主要缺陷包括:a)處理交易延遲能力不足,難以快速響應市場波動,可能導致用戶錯失關鍵機會并產生經濟損失;b)缺乏有效的信譽評估機制,低信譽節點可能降低系統性能,影響交易穩定性;c)主節點選取機制不完善,主節點性能不佳時會削弱共識效率與系統安全性,增加交易的不確定性。
本文TSD-PBFT顯著提升了金融交易系統的效率與安全性。該算法引入動態信譽評估模型,實時監控參與者行為,及時識別并剔除惡意節點,確保系統完整性和數據真實性。同時,TSD-PBFT優化了主節點選取機制,增強交易高峰期的響應能力,選擇信譽高、性能穩定的節點,有效減少共識延遲,確保交易快速完成并高效運作。此外,聚類算法降低了通信開銷,提升高頻交易中的數據交換效率,通過分散負載保證系統穩定運行,避免傳統算法的瓶頸問題。動態信譽機制還增強了用戶信任,提升市場活躍度與穩定性。
4 仿真分析
為了驗證TSD-PBFT共識算法的有效性,本實驗在采用Intel CoreTM i5-8265U CPU 1.80 GHz處理器、8 GB內存的Windows 11系統下進行。實驗通過配置多臺虛擬機加端口映射的方式模擬多節點環境,開啟多個端口模擬節點的并發活動,通過日志記錄收集共識過程中產生的數據,并利用Origin軟件進行可視化,以便直觀展示實驗結果并進行深入分析。實驗涵蓋了多個方面的性能分析與對比,包括算法的實驗參數、共識周期、信用評估模型、惡意節點剔除、系統穩健性、時延和吞吐量。
4.1 實驗參數分析算法模型
根據信用評價模型的要求,在本文的信譽評估模型中,動態評價是節點的主要評價指標,反映節點在實時共識中的行為表現和互動方式。為準確評估節點的信譽度,動態評價的權重系數β應大于靜態評價的權重系數α,以更精準地衡量節點的行為特征和對共識系統的貢獻。此外,靜態評價中的歷史行為,尤其是不良行為,會對系統的穩定性和可信度產生負面影響,因此應嚴格限制。為突顯對不良行為的嚴厲制裁,不良行為的權重系數ω應遠大于良好行為的權重系數φ。通過動態調整φ、ω、α和β的值來調整綜合信用值中靜態信譽值、動態信譽值和歷史行為值的比重。權重之間滿足φ+ω+α+β=1,且α+βgt;φ+ω?;诖?,本文按照動態評價權重系數β逐漸增大選取三組權重值組合:(0.35、0.4、0.25)、(0.3、0.5、0.2)、(0.25、0.6、0.15)。當這些權重值變化時,節點在5輪測試中的信譽值變化如圖9所示。
通過對實驗數據的分析,權重組合(0.25、0.6、0.15)在5輪共識中表現最佳,信譽值提升幅度最大,說明這種組合在強調動態評價的情況下能夠更好地激勵節點積極參與共識過程,從而提高系統的整體信譽度。相比之下,第二組權重系數(0.3,0.5,0.2)中動態評價仍然較高,但其相對均衡的靜態評價和歷史行為可能導致對節點長期歷史行為的過度關注,而第三組權重系數(0.35,0.4,0.25)中歷史行為的較高權重可能會過度強調節點過去的表現,而不足以及時應對節點當前的實時行為變化,影響系統對實時性和靈活性的要求。因此,本文設定實驗參數:靜態評價權重為0.25,動態評價權重為0.6,歷史共識行為權重為0.15。詳細參數如表3所示。
4.2 共識周期分析
在區塊鏈系統中,共識周期的設計對系統性能和穩定性至關重要。周期過短會導致節點無法及時參與,影響共識效率和吞吐量;周期過長則會增加系統延遲,延長交易確認時間。因此,選擇適當的共識周期對于平衡節點參與度和系統穩定性以及確保系統高效運轉至關重要。共識周期對比如圖10所示,在節點總數為60的系統中,對3~7次共識周期的平均延遲進行了對比分析。
從圖10可以看出,隨著共識周期的增加,系統的平均延遲先逐步降低,但在達到最優點后又開始上升。在所測試的五種共識周期中,5次共識周期的平均延遲最低,為1.2 s,顯著優于3次周期的1.52 s、4次周期的1.42 s、6次周期的1.32 s和7次周期的1.42 s。5次共識周期在確保高效共識的同時,有效降低了系統響應時間,適合快速交易確認的應用場景。這一周期為節點提供了足夠的時間參與共識,避免過長等待,并能及時發現和糾正異常行為,保障系統穩定性。
4.3 節點信用值變化
為清晰驗證信譽評估模型的有效性,本文設定四種不同類型的節點,分別為優秀共識節點1、誠實共識節點2、不良行為共識節點3和惡意共識節點4。進行一個周期共識過程的測試,共識中節點信譽值實驗如圖11所示。
從圖11可以看出,節點1~4在不同的共識輪次中表現出不同的信譽增長趨勢。初始時假設4個節點信用值均為0.1,節點1作為優秀節點,在每一輪共識中都積極參與,并獲得其他節點的高度認可,信譽值穩步且顯著增長。節點2在第二輪中僅獲得少數投票,導致信譽值有所下降,但在其他輪次中表現出誠實參與,信譽值逐步恢復。節點3在第三輪共識中表現欠佳,信譽值顯著下降,但在隨后的輪次中逐漸調整表現,信譽值得以回升。節點4則自第一輪起就表現出惡意行為,信譽值持續下降,反映出其在系統中的不良表現,最終被系統有效識別和剔除。
圖11中四種不同屬性節點信用值變化驗證信譽評估模型在應對不同節點行為時的有效性。通過動態評估不僅可以及時識別和處理惡意節點,還能避免對故障節點懲罰過度問題,給予節點自我修復的可能性。該算法確保共識過程的可靠性和安全性。
4.4 惡意節點剔除對比
PBFT共識算法由于缺乏對惡意節點的有效處理,在存在較多惡意節點的網絡環境下,這些惡意節點可能頻繁被選擇成為領導者或參與關鍵共識決策,導致系統面臨安全性風險并難以正常運轉;TSD-PBFT通過信譽模型識別并剔除系統中存在的惡意節點,從而極大程度上提高了網絡節點的質量。實驗中設置了6個拜占庭節點將隨機干擾共識,觀察在10輪共識中PBFT、文獻[16]、K-PBFT[18]和TSD-PBFT共識算法拜占庭節點數量隨共識輪次增加的變化情況,實驗結果如圖12所示。
從圖12可以看出,PBFT因缺乏獎懲機制而導致惡意節點一直存在,嚴重威脅系統的安全性。相比之下,文獻[16]、K-PBFT和TSD-PBFT中的惡意節點數量呈下降趨勢,成功減少惡意節點的數量。在文獻[16]中,如果節點在共識過程中進行惡意行為,如數據篡改,其信譽評分將被設定為0,被視為拜占庭節點并被系統要求退出,接受審查,若后續節點表現良好并修復了信譽,它們將有機會重新加入系統參與共識。K-PBFT因引入惰性系數P減少了頻繁的節點調整,但也導致節點剔除速度趨于保守,限制了惡意節點的快速剔除。而TSD-PBFT引入信譽評估模型,并定期更新信譽值,從而更及時地發現并清除惡意節點。這種靈活性使系統能夠在一定程度上對惡意節點進行控制和管理,但仍可能出現惡意節點重新加入后繼續干擾共識的情況,而TSD-PBFT引入信譽評估模型,并定期更新信譽值,從而更及時地發現并清除惡意節點。與文獻[16]和K-PBFT相比,TSD-PBFT不僅能夠快速識別當前的惡意節點,還通過持續監控和更新信譽值,降低惡意節點在后續共識中的存在概率。實驗結果顯示,TSD-PBFT在10輪共識中迅速減少了拜占庭節點的數量,到第6輪時系統中已無惡意節點存在。因此,TSD-PBFT共識算法能夠有效識別和迅速剔除惡意節點,提高系統的安全性。
4.5 系統穩健性
穩健性是評估區塊鏈系統中共識算法性能的重要指標之一。在存在拜占庭節點的系統中,系統的穩定程度可通過視圖轉換的次數來衡量。引起視圖轉換的原因通常包括網絡問題、主節點的惡意行為或受到惡意節點的攻擊等。如果系統的視圖轉換頻率較高,則表明系統的穩健性較差。在節點總數為60的系統中,本文分別設置不同數量的拜占庭節點,圖13展示在不同數量拜占庭節點情況下四種算法的視圖轉換情況。
從圖13可以看出,隨著拜占庭節點數量的增加,PBFT的視圖轉換次數迅速增長。文獻[16]在主節點表現出惡意行為時會對其進行信譽懲罰,但如果惡意主節點的信譽值仍在主節點選取的信譽級別范圍內,該節點可能再次被選為主節點,難以徹底消除惡意節點的負面影響,進而導致共識失敗。K-PBFT引入惰性系數P降低了節點頻繁遷移的概率,增強了簇的穩定性,減少了不必要的視圖轉換。然而,隨著拜占庭節點數量的增加,惡意節點影響的累積導致視圖轉換次數上升。相比之下,TSD-PBFT算法在不同數量的拜占庭節點下,視圖轉換次數始終保在最低水平,即使在拜占庭節點較多的情況下也能維持極低的視圖轉換次數。這是因為TSD-PBFT算法采用周期更新的動態信譽機制和投票機制來選取主節點,對于表現出惡意行為的節點,其信譽值會立即受到影響,確保這些節點在下一輪主節點選取時被排除在外,有效防止少數惡意節點的反復干擾,大大降低了拜占庭節點被選為主節點的可能性,從而減少視圖轉換問題,顯著增強系統的穩定性。
4.6 共識過程耗時分析
共識時延是指從客戶端發起交易請求到區塊上鏈所需的時間。實驗結果如圖14所示,比較了PBFT、文獻[16]、EIoT-PBFT[17]和本文TSD-PBFT在分組數K為4、6、9下的平均延遲,取30次測試均值。
從圖14可見,節點數量較少時,四種算法的時延增長率相差不大,隨著節點數量增加,增長率差異逐漸顯現。當節點數量增至70個時,通信量增加導致四種算法的共識時延上升,其中PBFT的共識時延最高,因為PBFT算法復雜的共識過程和惡意節點持續存在導致頻繁的視圖更換。相比之下,文獻[16]低于PBFT的原因在于選取的主節點信譽較高,減少惡意攻擊和視圖轉換。EIoT-PBFT優于文獻[16],因其篩選信譽高且地理位置合理的節點,剔除潛在惡意或低效節點,避免了共識過程中的通信延遲。然而,其時延仍低于TSD-PBFT,因新加入節點缺乏歷史信譽數據,導致其無法迅速參與共識,進而影響整體響應時間。TSD-PBFT的共識時延明顯低于PBFT、文獻[16]和EIoT-PBFT,主要是因為TSD-PBFT提高了分組效率并采用混合共識機制,從而有效降低大規模節點網絡中的共識時延。隨著分組數的增加,共識時延進一步降低,當分組數K=4時,分組減少了節點間通信,但每組節點較多,組內通信開銷依然較大,時延改善有限;當分組數K=6時,分組增加,組內節點減少,通信復雜度和延遲顯著降低,時延增長更為平緩;在分組數K=9時,共識時延降至最低,因為更多的分組使每個組的節點數量最少,組間并行處理效率最大化,從而減少了共識時間。相較PBFT,TSD-PBFT在分組數為K=9時,平均時延降低了50.2%。實驗結果表明,TSD-PBFT顯著提升系統的運行效率,加速交易確認,系統更加高效實用。
4.7 吞吐量分析
系統在單位時間內可以處理的事務任務數量稱為吞吐量。吞吐量越高,系統的事務處理效率越高。在相同的實驗條件下,本文對四種算法的時延進行了測試,并進行了對比分析。通過進行30次測試并取平均值的方式獲得了結果,具體數據如圖15所示。
從圖15可以看出,隨著節點數量的增加,節點間需要交換請求、確認、簽名等消息的通信量也隨之增多,節點計算負擔加重,從而導致系統單位時間內的交易處理量下降,降低整體吞吐量。
其中PBFT共識算法的吞吐量最低,而文獻[16]和EIoT-PBFT的吞吐量雖較PBFT有所改善,但在大規模節點網絡中仍面臨一定的限制。文獻[16]在主節點的選取過程中,雖然信譽機制能夠過濾掉部分惡意節點,但在信譽分數接近邊界的情況下,仍存在較高的風險,導致潛在的系統性能波動。EIoT-PBFT通過分組減少每組內的節點數量,顯著降低通信量,從而提升系統吞吐量。然而,當組內節點過多,可能導致共識過程變慢,成為系統吞吐量的瓶頸,進而拖累整體性能。相比之下,TSD-PBFT表現更佳,采用節點聚類分組、主節點投票選取機制和混合共識機制,有效降低共識時延和通信開銷。在分組數為K=9時,TSD-PBFT的吞吐量較PBFT提高了72.1%。隨著分組數增加,系統吞吐量進一步提高,因為采用標準差聚類分組方法選擇密集度高且信譽好的節點作為聚類中心節點,確保每個小組內的節點密度相對較高,減少消息傳輸路徑長度和通信開銷,進而提高了吞吐量。然而,盡管調整分組數K可以優化吞吐量表現,隨著節點數量的增加,特別是超過70個節點時,TSD-PBFT的吞吐量仍然會下降。其原因在于,無論分組數如何設置,由于HotStuff采用星型通信結構,導致第二層的領導者節點需要一對多的通信,增加通信負擔,限制TSD-PBFT在大規模節點情況下的吞吐量表現。因此,綜合各方面因素考慮,TSD-PBFT整體上優于PBFT、文獻[16]和EIoT-PBFT,具有更好的吞吐性能,能夠提升系統的共識效率。
5 結束語
本文針對PBFT共識算法存在的缺少獎懲機制、通信開銷大和主節點選取不安全等問題,提出了TSD-PBFT共識算法。建立了動態與靜態結合的信譽評估模型,實時檢測和清除惡意節點,并通過周期性地重置高信譽值節點的評分,避免主導節點產生。同時,提出基于信譽和標準差的聚類算法,逐步選擇密度高且信譽好的節點作為最終聚類中心點,并利用K-medoids算法將剩余節點分配到最近的聚類中心點,從而降低通信開銷。最后在主節點選取過程中引入投票機制,確保主節點選取的安全可靠。實驗結果顯示,這種方法具有更高的安全性、更高的吞吐量以及更低的時延,有助于提高系統的運行效率。然而,TSD-PBFT在吞吐量和時延方面仍有改進空間,需要進一步優化。在未來的研究中,將繼續優化信用評估指標和通信拓撲結構,以提高算法在大規模節點網絡環境中的性能表現,進一步完善TSD-PBFT,使其更加穩健高效。
參考文獻:
[1]Nakamoto S. Bitcoin: a peer-to-peer electronic cash system[EB/OL]. (2008)[2024-3-20]. http://bitcoin.org/bitcoin.pdf.
[2]袁勇, 王飛躍. 區塊鏈技術發展現狀與展望[J]. 自動化學報, 2016, 42(4): 481-494. (Yuan Yong, Wang Feiyue. Blockchain: the state of the art and future trends[J]. Acta Automatica Sinica, 2016, 42(4): 481-494.)
[3]Woo J, Fatima R, Kibert C J, et al. Applying blockchain technology for building energy performance measurement, reporting, and verification(MRV) and the carbon credit market: a review of the literature[J]. Building and Environment, 2021, 205: 108199.
[4]Rehman M, Javed I T, Qureshi K N, et al. A cyber secure medical management system by using blockchain[J]. IEEE Trans on Computational Social Systems, 2023,10(4): 2123-2136.
[5]Yang Li, Zou Yifei, Xu Minghui, et al. Distributed consensus for blockchains in Internet-of-Things networks[J]. Tsinghua Science and Technology, 2022, 27(5): 817-831.
[6]Gavezotti P, Picozzi R, Vezzulli GG, et al. Research on privacy data security sharing scheme based on blockchain and function encryption[J]. Big Data Research, 2022, 8(5): 33-44.
[7]Fu Xiang, Wang Huaimin, Shi Peichang, et al. Teegraph: a blockchain consensus algorithm based on TEE and DAG for data sharing in IoT[J]. Journal of Systems Architecture, 2022, 122: 102344.
[8]King S, Nadal S. PPCoin: peer-to-peer crypto-currency with proof-of-stake[EB/OL]. (2012)[2024-3-20]. https://decred.org/research/king2012.pdf.
[9]Xu Jinjie, Wang Wei, Zeng Yu, et al. Raft-PLUS: improving raft by multi-policy based leader election with unprejudiced sorting[J]. Symmetry, 2022, 14(6): 1122.
[10]Castro M, Liskov B. Practical Byzantine fault tolerance and proactive recovery[J]. ACM Trans on Computer Systems, 2002, 20(4): 398-461.
[11]Cheng Jieren, Yao Xinzhi, Li Hui, et al. Cooperative detection method for DDoS attacks based on blockchain[J]. Computer Systems Science and Engineering, 2022, 43(1): 103-117.
[12]李淑芝, 熊偉志, 鄧小鴻, 等. 基于完美二叉樹通信拓撲的拜占庭容錯共識算法[J]. 電子與信息學報, 2023,45(7): 2484-2493. (Li Shuzhi, Xiong Weizhi, Deng Xiaohong, et al. Byzantine fault-tolerance consensus algorithm based on perfect binary tree communication[J]. Journal of Electronics amp; Information Technology, 2023, 45(7): 2484-2493.)
[13]Wang Yong, Zhong Meiling, Cheng Tong. Research on PBFT consensus algorithm for grouping based on feature trust[J]. Scientific Reports, 2022,12(1): 12515.
[14]李俊吉, 張佳琦. 基于信譽機制的改進PBFT共識算法[J]. 計算機應用研究, 2024,41(6): 1628-1634. (Li Junji, Zhang Jiaqi. Improved PBFT consensus algorithm based on reputation mechanism[J]. Application Research of Computers, 2024, 41(6): 1628-1634.)
[15]陳蘇明, 王冰, 陳玉全, 等. 基于節點分組信譽模型的改進PBFT共識算法[J]. 計算機應用研究, 2023, 40(10): 2916-2921. (Chen Suming, Wang Bing, Chen Yuquan, et al. Improved PBFT consensus algorithm based on node grouping reputation model[J]. App-lication Research of Computers, 2023, 40(10): 2916-2921.)
[16]Sun Yi, Fan Ying. Improved PBFT algorithm based on K-means clustering for emergency scenario swarm robotic systems[J]. IEEE Access, 2023, 11: 121753-121765.
[17]Gan Bo, Wang Yaojie, Wu Qiwu, et al. EIoT-PBFT: a multi-stage consensus algorithm for IoT edge computing based on PBFT[J]. Microprocessors and Microsystems, 2022, 95: 104713.
[18]陳子豪, 李強. 基于K-medoids的改進PBFT共識機制[J]. 計算機科學, 2019, 46(12): 101-107. (Chen Zihao, Li Qiang. Improved PBFT consensus mechanism based on K-medoids[J]. Computer Science, 2019, 46(12): 101-107.)
[19]Tong Shihua, Li Jibing, Fu Wei. An efficient and scalable Byzantine fault-tolerant consensus mechanism based on credit scoring and aggregated signatures[J]. IEEE Access, 2024, 12: 10393-10410.
[20]Vaghela R D, Iyer S S. A comparative analysis of clustering algorithm[J]. ECS Transactions, 2022, 107(1): 2435-2443.
[21]胡繼圓, 于瓅. 基于信譽機制分組的改進PBFT算法[J]. 湖北民族大學學報(自然科學版), 2023, 41(1): 85-89,95. (Hu Jiyuan, Yu Li. Improved PBFT algorithm based on reputation mechanism grouping[J]. Journal of Hubei Minzu University(Natural Science Edition), 2023, 41(1): 85-89,95.)