陳蘇明 王冰 陳玉全 邢濤 馬宇輝 趙建立



摘 要:針對實用拜占庭容錯共識算法(practical Byzantine fault tolerance,PBFT)中存在通信開銷大、缺少獎懲機制、節點缺乏積極性的問題,提出了一種基于節點分組信譽模型的改進PBFT共識算法(grouping reputation practical Byzantine fault tolerance,GR-PBFT)。首先,引入信譽獎懲機制來確保系統的安全性,再根據節點信譽進行分組以選取共識節點,解決信譽機制類共識算法產生節點信譽累計問題,降低系統中心化程度,提升了節點成為共識節點的積極性;然后,改進主節點的選舉方式保證主節點的可靠性,并優化一致性協議執行流程,減少準備、確認與響應階段的通信復雜度,提高了共識效率。仿真實驗表明,GR-PBFT共識算法在共識時延、通信開銷、吞吐量、安全性等方面比PBFT共識算法具有更好的性能。
關鍵詞:區塊鏈; 共識算法; 節點分組; 信譽獎懲機制; 實用拜占庭容錯共識算法(PBFT)
中圖分類號:TP301.6 文獻標志碼:A 文章編號:1001-3695(2023)10-005-2916-06
doi:10.19734/j.issn.1001-3695.2023.03.0091
Improved PBFT consensus algorithm based on node grouping reputation model
Chen Suming1, Wang Bing1, Chen Yuquan1, Xing Tao1, Ma Yuhui1, Zhao Jianli2
(1.College of Energy & Electrical Engineering, Hohai University, Nanjing 211100, China; 2.State Grid Shanghai Municipal Electric Power Company, Shanghai 200030, China)
Abstract:Aiming at the problems in the practical Byzantine fault tolerance (PBFT) consensus algorithm, such as large communication overhead, lack of reward and punishment mechanism and lack of enthusiasm of nodes, this paper proposed an improved PBFT consensus algorithm based on the node grouping reputation model (GR-PBFT). Firstly, GR-PBFT algorithm introduced a reputation reward and punishment mechanism to ensure the security of the system, and then grouped by nodes reputation to select consensus nodes so that it could solve the reputation accumulation problem of nodes generated by consensus algorithms such as reputation mechanisms. Besides, it could also reduce the degree of system centralization and improve the enthusiasm of nodes to become consensus nodes. Then, this algorithm improved the election method of the master node to ensure the reliability of the master node. Meanwhile, it optimized the execution process of the consensus protocol and reduced the communication complexity in the preparation, confirmation and response stage to improve the consensus efficiency. Finally, the simulation experiments show that the GR-PBFT consensus algorithm has better performance than the PBFT consensus algorithm in terms of consensus delay, communication overhead, throughput and security and so on.
Key words:blockchain; consensus algorithm; node grouping; reputation reward and punishment mechanism; PBFT
0 引言
隨著比特幣[1]技術的成功,其底層的區塊鏈技術也得到了廣泛關注,在金融、醫療、司法、物流、公共管理等領域具有很好的應用潛力且逐漸成為研究熱點。區塊鏈技術[2,3]的本質是一種去中心化的分布式數據庫,它具有去中心化、可追溯、點對點通信等特點[4],區塊鏈中的數據根據時間戳進行更新,無須可信第三方參與,所有交易全網廣播并通過節點共識完成上鏈。共識算法[5]是區塊鏈的底層核心,是區塊鏈系統的法律與靈魂[6],也是系統性能的重要體現。截至目前,已經出現許多不同類型的區塊鏈共識算法,常用的共識算法為工作量證明(proof of work,PoW)、權益證明(proof of stake,PoS)、股份授權證明(delegated proof of stake,DPoS)、Raft(replication and fault tolerant)、實用拜占庭容錯(PBFT)[7~11]。PoW共識算法在公有鏈中應用廣泛,其依靠計算機自身的性能來爭取記賬權,雖然該共識算法極其消耗算力,違背了環保理念,但該算法使得系統是完全去中心化的。PoS共識算法在解出一系列難題的基礎上引進幣齡的概念,幣齡被掌控的時間越長,節點獲得記賬權的機會就越大,雖然該算法會導致較為嚴重的中心化問題,但相較于PoW共識算法,其在算力消耗上有所降低,挖礦速度有所提升。DPoS共識算法主要通過選取少部分節點作為記賬節點來代替自己行使記賬權,雖然該機制會產生節點不積極投票和賄賂節點的問題[12],但相較于PoS共識算法,其可以大幅度減少能耗,提升共識效率。Raft共識算法在私有鏈中應用廣泛,該算法的核心是日志復制和選舉領導兩個過程,其中更為重要的是日志復制過程,雖然Raft共識算法會產生偽造日志的問題,但其通信復雜度低。PBFT共識算法在聯盟鏈中應用廣泛,由一致性協議、視圖更換協議和檢查點協議三部分來完成共識,該算法對拜占庭節點數量設置了一個閾值,可有效解決拜占庭將軍問題。PBFT共識算法雖然在聯盟鏈中應用最為廣泛,但仍有許多值得改進的地方。首先在PBFT三階段通信協議中,準備與確認階段的通信復雜度各有O(N2),通信復雜度過高,其中N為網絡中的節點總數;其次PBFT共識算法選取主節點太過隨意,主節點按照順序選出,且所有節點均為共識節點,影響了主節點的可靠性和節點的積極性;最后PBFT共識算法對于共識節點沒有任何獎懲措施,即使出現拜占庭節點也沒有懲罰措施,影響了系統的安全性。
針對上述PBFT共識算法存在通信開銷大、缺少獎懲機制、節點缺乏積極性的問題,許多研究從不同角度提供了解決方法。文獻[13]提出將PBFT與DPoS算法相結合的方式,共識節點由DPoS算法中股份投票的方式選舉產生,降低通信過程的通信復雜度,從而優化PBFT的共識流程。文獻[14]提出了一種基于EigenTrust模型的PBFT共識算法,利用節點間的行為評估節點的信任可靠度,并選取系統中質量較高的節點搭建新的共識組,從而降低系統通信復雜度,優化拜占庭容錯率。文獻[15]提出了一種改進的實用拜占庭共識算法,利用節點分離技術降低服務器請求次數,采用最長鏈方法與心跳檢測原理來改進主節點選取方式,降低了系統能耗。文獻[16]提出了一種基于信用的聯盟鏈共識算法,采用信譽估量模型并根據信譽值高低選取挖礦節點以提升算法共識效率及公平性,此外也增加了系統的激勵方案。文獻[17]提出了一種節點可靠性評估的改進PBFT共識算法,該算法引入節點評分方案,根據節點不同的信譽定位不同的信任狀態,改進主節點選取方式,對惡意節點設置懲罰措施,從而降低算法的通信復雜度,提升系統效率和安全性。文獻[18]提出了一種基于網絡自聚類PBFT共識算法,引入種子節點的概念,以種子節點為質心進行自聚類,并從聚類組中選出各組中的代理者,由代理者執行共識過程,使系統具有不錯的拓展性,同時也提升了系統性能。
針對上述PBFT共識算法存在通信開銷大、缺少獎懲機制、節點缺乏積極性的問題,本文提出了一種基于節點分組信譽模型的改進PBFT共識算法(GR-PBFT)。首先對PBFT共識算法進行說明,接著給出GR-PBFT共識算法設計方案,該方案內容為設計節點信譽獎懲機制、改進共識節點與主節點的選舉方式和優化一致性協議執行流程,最后在進行理論與實驗分析的同時與其他學者改進的PBFT共識算法進行對比,證明了GR-PBFT共識算法具有良好的性能。本文主要貢獻可總結為:a)根據節點行為引入信譽獎懲機制,所有節點按照信譽值降序排列,并按照斐波那契函數對節點進行分組,分組后在組內選取共識節點,解決了信譽機制類共識算法產生節點信譽累計問題,降低了系統中心化程度,提升了節點成為共識節點的積極性;b)主節點從排名第一、第二的共識節點中挑選,并由其他共識節點投票選取出主節點,最大程度地保證了主節點的可靠性,降低了視圖切換頻率;c)優化PBFT共識算法一致性協議執行流程的準備、確認和響應階段,降低通信復雜度,提高共識效率。
1 實用拜占庭容錯共識算法
PBFT共識算法證明了假設拜占庭節點數為f,網絡中的節點總數N滿足N≥3f+1,即可確保回復消息的正確性,從而實現共識,其時間復雜度為O(N2)。PBFT共識算法分為主節點與副本節點,主節點需接收客戶端消息并排列客戶端請求消息,接著將消息廣播至副本節點,副本節點按照主節點排列好的信息順序進行驗證,最終所有節點將消息返還至客戶端。
為了確保分布式系統中節點達成一致共識,PBFT共識算法需要在三種協議下運行,即一致性協議、視圖更換協議和檢查點協議。一致性協議可以確保所有節點存儲數據的正確性和一致性,采用節點間互相通信的方法來完成消息的一致性;在一致性協議執行中,如果存在宕機或惡意行為的主節點,則觸發視圖更換協議來調整當前主節點;檢查點協議是定時觸發,主要用來清除一致性協議運行中各節點存儲的消息,并同步節點狀態。
一致性協議是PBFT共識算法的核心協議,執行過程如圖1所示,分為請求、預準備、準備、確認和響應五個階段。圖1中,節點0為主節點,節點1、2、3分別對應副本節點1、2、3,其中節點3為拜占庭節點。虛線為各階段邊界,箭頭表示消息從消息源節點發送到接收節點,帶虛線箭頭的消息表示真實的消息被竄改。整個協議基本執行過程如下:
a)請求階段。客戶端給主節點發送請求,請求消息為〈Request,m,ts,cid,csig〉,其中m是客戶端請求內容,ts是時間戳,cid是客戶端ID,csig是客戶端簽名。
b)預準備階段。主節點收到請求消息后,對請求進行排序,同時對請求賦值一個序列號sn并生成預準備消息〈〈Pre-prepare,vn,sn,D(m),psig〉,m〉給副本節點,其中vn表示視圖號,視圖號初始值為0,sn是序列號,D(m)是信息摘要,psig是主節點簽名。
c)準備階段。副本節點收到預準備消息并生成準備消息〈Prepare,vn,sn,D(m),bid,bsig〉,其中bid是副本節點ID,bsig是副本節點簽名。在此階段,每個節點都會將自己生成的準備消息與其他節點發送的準備消息進行比對,至少有2f+1個準備消息與自己生成的準備消息一致時,則進入確認階段。
d)確認階段。準備階段完成后,所有節點生成確認消息〈Commit,vn,sn,D(m),bid,bsig〉并廣播至其他節點,節點收到來自其他節點的確認消息并校驗,至少有2f+1個確認消息與自己生成的確認消息一致時,則進入響應階段。
e)響應階段。當各共識節點在確認階段收到至少來自2f+1個不同節點的一致性消息后,將回復消息返還給客戶端,回復消息是〈Reply,vn,ts,bsig,r〉,其中r表示客戶端請求的執行結果。若有f+1個節點響應相同,則表示客戶端請求成功。
2 GR-PBFT算法設計方案
2.1 節點信譽獎懲機制
由于在PBFT共識算法中缺少節點獎懲機制,在GR-PBFT共識算法中引入了信譽獎懲機制,節點信譽值被劃分為五個等級,此外處于不同信譽等級的節點獎懲機制不同,從而使得系統更加安全。本文基于文獻[19]中設計的動態信譽評價模型思想進行信譽獎懲機制設計,文獻[19]中的信譽評價模型根據共識節點在共識過程中的行為進行評分,并根據定義的節點信譽值閾值區間來評定節點處于何種狀態,節點狀態不同則相應的權限也有所不同,從而可以及時評價和反饋節點行為。下面是本文的節點信譽獎懲機制方案的具體內容。
設區塊鏈中每個節點初始信譽值為60,節點信譽值最高為100,信譽值達到100后不再增加;節點信譽值被劃分為Rgood、Rbetter、Rnormal、Rinit、Rmin五個等級,分別取值90、80、70、60、55。Rgood是高信譽值;Rbetter是較高信譽值;Rnormal是正常信譽值;Rinit是初始信譽值;Rmin是最低信譽值,低于該信譽值,節點將被直接剔出區塊鏈系統。區塊鏈中節點的權限與狀態都直接受信譽值影響。
根據各個共識節點在共識過程中處于不同信譽等級來分配共識節點的信譽獎勵與懲罰。
信譽獎勵公式:
其中:Rij表示當前時刻第i組中第j個共識節點的信譽值,Rpreviousij表示上一時刻第i組中第j個共識節點的信譽值,關于共識節點的選取方式,將在2.2.1節中詳細闡述。V1表示該節點是可信節點,獎勵該共識節點的固定值,V2、V3表示該節點是拜占庭節點,懲罰該共識節點的固定值,V1、V2、V3可以根據實際的應用場景進行改變,本文中V1=1、V2=15、V3=10。特別地,當主節點成為拜占庭節點后,當前信譽值直接扣除20,對于區塊鏈中節點信譽值在Rmin與Rinit之間,則采用限制其一段時間參選共識節點,如式(2)所示。其中t為天數,初始值為1,隨著天數的增加不斷自加;T是一個固定常數,表示限制交易的天數,即限制周期;C為增長速率,T、C均可根據不同的應用場景進行改變,本文中設置T=10、C=1。對于節點信譽值小于Rmin的節點,直接將該節點剔出區塊鏈系統。
2.2 節點選取機制
由于在PBFT共識算法中所有節點均為共識節點,導致節點缺乏積極性,主節點按照編號順序選取的方式影響了主節點的可靠性,所以在GR-PBFT共識算法中,所有節點按照信譽值降序排序,并按照斐波那契函數規則進行分組,分組后利用向上取整函數得出各個組中前一半的節點組成共識節點;從共識節點中選取信譽值排名第一、第二的節點作為候選主節點,接著共識節點進行投票,投票選取結束后取數值最大的候選主節點作為主節點,不參與共識的節點需要保存共識結果。共識節點的選取方式不易產生節點信譽累計問題,降低了系統中心化程度,提升了節點參選共識節點的積極性,同時主節點的選取方式也提升了主節點的可靠性。本文根據文獻[20]中選取節點的思想來選取共識節點和主節點,文獻[20]中將共識節點按照信譽值降序排序依次填滿每個群組,并從共識群組中隨機選取主節點,各個群組由主節點引導進行共識,從而提升了選取節點的公平性和系統運行效率。
2.2.1 共識節點選取
在GR-PBFT共識算法中,設節點總數為N(N≥5),信譽值大于等于Rinit的節點總數設為Nr(Nr≥5),groupi∈{group1,group2,…,groupk}表示區塊鏈中節點被分到第i組,groupk表示最后一組。該組別是由斐波那契函數特性分組形成,斐波那契函數滿足以下遞推性質(n≥3,n∈Euclid Math TwoNAp):
通過斐波那契函數將區塊鏈中所有信譽值大于等于Rinit的節點分為k組,groupk-1中擁有S(k-1)個節點,nodeij表示groupi中的第j個節點,其中1≤i≤k-1、1≤j≤S(i);當i=k時,groupk中的節點個數為Nr-∑k-1m=1S(m),nodeij表示groupk中的第j個節點,其中1≤j≤Nr-∑k-1m=1S(m)。節點層次結構如圖2所示。
從各組中選取共識節點,每一組中利用向上取整函數選取前一半的節點成為共識節點。定義向上取整函數為upper(x),x為實數。
2.2.2 主節點選取
排名第一、第二的共識節點作為候選主節點,其他共識節點對候選主節點進行投票以選取主節點;在共識節點投票過程中,各個共識節點可以支持、棄權、反對。投票結果為
其中:resultpq是指第p組中第q個候選主節點的投票分數,Rpq表示在第p組中第q個候選主節點的信譽值,1≤p≤2、q=1;votemn表示第m組中第n個共識節點投票結果,支持、棄權、反對相對應的值分別是1、0和-1,數值最大的候選主節點當選主節點。如果最終resultpq相等,則選取投票前排名第一的共識節點作為主節點。
2.3 優化一致性協議
由于在PBFT共識算法中準備階段已經達到完成共識的要求,確認階段主要是各節點了解其他節點的共識狀態,所以可以簡化確認階段的通信復雜度。PBFT共識算法的確認階段兩兩交互,時間復雜度為O(N2),其中N為網絡中的節點總數。GR-PBFT共識算法中的確認階段不再需要兩兩交互,由主節點進行結果消息比對,使得時間復雜度降為O(N);此外因為選取共識節點數量上的減少,同樣也簡化了準備和響應階段,從而降低了通信開銷,提升了共識效率。本文基于文獻[21]中優化一致性協議的思路進行一致性協議的改進,文獻[21]中將一致性協議執行流程分為預準備階段、交互階段和確認階段。預準備階段與PBFT共識算法的執行步驟一致;交互階段只有滿足相應積分的節點才可以共識,減少了節點間兩兩交互的次數;確認階段是所有節點向主節點發送確認消息,將PBFT共識算法的兩兩交互變成單向發送。因此文獻[21]經過對一致性協議執行流程的改進降低了通信復雜度。
一致性協議主要優化準備、確認和響應階段,執行過程如圖3所示。圖3中,節點0、1、2、3為GR-PBFT共識算法中的共識節點,節點0是主節點,節點1、2、3分別對應副本節點1、2、3,其中節點3為拜占庭節點,其余節點是指GR-PBFT共識算法中信譽值大于等于Rinit且未當選共識節點的節點。虛線為各階段邊界,箭頭表示消息從消息源節點發送到接收節點,帶虛線箭頭的消息表示真實的消息被竄改。f表示共識節點中拜占庭節點的數量。
優化一致性協議基本過程如下:
a)請求階段。客戶端給主節點發送請求,請求消息為〈Request,m,ts,cid,csig〉,其中m是客戶端請求內容,ts是時間戳,cid是客戶端ID,csig是客戶端簽名。
b)預準備階段。當主節點收到請求消息后,對請求進行排序,同時對請求賦值一個序列號sn并生成預準備消息〈〈Pre-prepare,vn,sn,D(m),psig〉,m〉給所有信譽值大于等于Rinit的節點,其中vn表示視圖號,視圖號初始值為0,sn是序列號,D(m)是信息摘要,psig是主節點簽名。副本節點對消息進行校驗,確認無誤可以進入準備階段,否則執行視圖變更,更換主節點,其余節點僅接收來自主節點的消息,不對消息進行傳遞。
c)準備階段。副本節點收到預準備消息并生成準備消息〈Prepare,vn,sn,D(m),bid,bsig〉,其中bid是副本節點ID,bsig是副本節點簽名。在此階段,每個共識節點均會將自己生成的準備消息與其他共識節點發送的準備消息進行比對,至少有2f+1個準備消息與自己生成的準備消息一致時才可以進入確認階段。如果不滿足要求,更換拜占庭節點,進行相應的信譽懲罰并重啟共識過程。
d)確認階段。準備階段完成后進入確認階段,在此過程中,共識節點生成確認消息〈Commit,vn,sn,D(m),bid,bsig)〉并發送給主節點,主節點對其他節點發來的確認消息進行校驗。至少有f+1個確認消息與主節點的確認消息一致時,則確認階段完成。
e)響應階段。所有共識節點將確認消息返還給客戶端,回復消息是〈Reply,vn,ts,bsig,r〉,其中r表示客戶端請求的執行結果。若有f+1個節點響應相同,則表示客戶端請求成功。
3 理論與仿真分析
3.1 理論分析
1)可靠性分析 PBFT共識算法中,主節點選取太過簡單,其通過取模運算來產生,即按照順序選出,導致主節點可靠性不足。GR-PBFT共識算法選取主節點是由各組中的共識節點對候選主節點投票產生,候選主節點中數值最大者當選主節點,從而大大提升了主節點的可靠性。
2)積極性分析 PBFT共識算法中,所有節點均為共識節點,無論是可信節點還是拜占庭節點都可以繼續參與共識,這就導致節點缺乏積極性。GR-PBFT共識算法中,所有節點按照信譽值降序排序且只有信譽值大于等于Rinit才具備參與共識的條件;再按照斐波那契函數規則分組,分組后利用向上取整函數得出各個組中前一半的節點組成共識節點。由于每一組中的節點信譽值相差不大,同時在信譽值低的組中與信譽值高的組中的節點入選為共識節點的概率一樣,從而解決了信譽機制類共識算法產生節點信譽累計問題,降低了系統中心化程度,提升了節點參選共識節點的積極性。
3.2 仿真分析
本實驗基于Java編程語言開發了一個多線程、多節點的小型區塊鏈系統,利用該系統對PBFT、基于網絡自聚類PBFT(network and clustering practical Byzantine fault tolerance,NAC-PBFT)[18]、基于信譽值投票與隨機數選舉PBFT(reputation and number voting practical Byzantine fault tolerance,RN-VPBFT)[22]、基于主節點隨機選取的改進PBFT(random practical Byzantine fault tolerance,RPBFT)[23]及本文的GR-PBFT共識算法進行對比分析,主要在共識時延、通信開銷、吞吐量和安全性四個方面進行對比分析,實驗配置信息如表1所示。
3.2.1 共識時延分析
在區塊鏈系統中,共識時延是指客戶端提交請求到完成確認的時間。實驗中設置節點數量由5個增加到40個,步長為5。為不失一般性,在不同節點數下重復進行20次交易,不同節點數下的共識時延最終值為20次交易的均值,PBFT、NAC-PBFT、RPBFT與GR-PBFT共識算法的共識時延對比結果如圖4所示。
由實驗結果可知,節點數量在不斷增加的同時,四種算法的共識時延也相應增加,但GR-PBFT共識算法的共識時延整體小于PBFT、NAC-PBFT與RPBFT共識算法,同時GR-PBFT共識算法在不同節點區間內的共識時延增長率低于PBFT共識算法。PBFT共識算法中所有節點均參與共識,NAC-PBFT共識算法主要通過選取代理人來減少參與共識的節點數量,RPBFT共識算法主要簡化一致性協議執行流程,GR-PBFT共識算法主要減少一半的節點參與共識,并優化了一致性協議執行流程。因此GR-PBFT共識算法比PBFT、NAC-PBFT與RPBFT共識算法在共識時延上有更好的優勢。
3.2.2 通信開銷分析
通信開銷是指節點在共識過程中產生的通信量,GR-PBFT共識算法通過減少共識節點的個數,同時優化PBFT共識算法中一致性協議,從而減少了通信開銷。由于PBFT與GR-PBFT共識算法中的請求階段都一樣,為了減少不必要的參數代入,不加入請求階段來進行通信開銷的對比。
假設兩個共識算法發生視圖變換的概率為P,節點總數為N。由于在GR-PBFT共識算法中信譽值大于等于Rinit的節點總數為Nr,Nr≤N,但每一組中利用向上取整函數選取前一半的節點成為共識節點的總數會大于Nr/2,所以GR-PBFT共識算法中的共識節點數近似取為N/2。
1)PBFT共識算法通信開銷 在預準備階段,通信次數為(N-1);在準備階段,通信次數為(N-1)2;在確認階段,通信次數為N(N-1);在響應階段,通信次數為N。因此,PBFT共識算法在正常共識中的通信次數為
當視圖切換發生時,副本節點間需互相發送視圖切換消息,其通信次數為(N-1)2;接著新主節點廣播新視圖消息給副本節點,其通信次數為(N-1)。由于產生視圖切換的概率為P,所以PBFT共識算法在視圖切換中的通信次數為
其中:P的取值為0~1,步長為0.05;N的取值為5~30,步長為1。將這些參數值代入公式可得如圖5所示的可視化圖形。由圖5可以得出,在給定范圍內,P與N無論如何變化,Q值始終小于1,即GR-PBFT共識算法的通信次數始終小于PBFT共識算法。此外由于GR-PBFT共識算法引入了信譽獎懲機制,同時主節點的選取更加安全、可靠,所以視圖切換的概率大幅度下降。因此在實際應用中,GR-PBFT共識算法的表現更佳。
3.2.3 吞吐量分析
吞吐量是指在單位時間內完成交易的數量,一般用TPS(transaction per second)表示,是共識算法性能對比中一個重要指標,TPS可由下式表示:
其中:Δt為出塊時間;transaction為出塊時間內處理的交易量。
實驗中設置節點數量由5個增加到40個,步長為5,為不失一般性,在不同節點數下重復進行20次測試,每次測試設置事件量為1 200,最終取20次重復測試的平均值作為每次不同節點數下吞吐量的值。PBFT、NAC-PBFT、RN-VPBFT、RPBFT與GR-PBFT共識算法的吞吐量對比結果如圖6所示。
由實驗結果可知,節點數量不斷增加的同時,五種算法的TPS都呈下降趨勢,但GR-PBFT共識算法的TPS整體大于PBFT、NAC-PBFT、RN-VPBFT和RPBFT共識算法。PBFT共識算法所有節點均參與共識,NAC-PBFT共識算法主要通過選取代理人來減少參與共識的節點數量,RN-VPBF和RPBFT共識算法主要簡化一致性協議執行流程,但GR-PBFT共識算法主要減少一半的節點參與共識,并優化了一致性協議執行流程。因此,GR-PBFT共識算法比PBFT、NAC-PBFT、RN-VPBFT和RPBFT共識算法有更好的吞吐性能。
3.2.4 安全性分析
PBFT共識算法對拜占庭節點沒有懲罰措施且拜占庭節點會始終存在于系統中,導致系統安全性降低;GR-PBFT共識算法在系統中設置了信譽獎懲機制,參與共識的節點一旦成為拜占庭節點,會直接被扣除信譽分。一旦Rmin≤Rij 由實驗結果可知,隨著共識次數的增加,PBFT共識算法中拜占庭節點個數不變,GR-PBFT共識算法中拜占庭節點個數呈現下降趨勢,直至拜占庭節點個數為0,因此GR-PBFT共識算法提升了系統的安全性。 4 結束語 本文針對PBFT共識算法中存在通信開銷大、缺少獎懲機制、節點缺乏積極性的問題,提出了GR-PBFT共識算法。GR-PBFT共識算法引入信譽獎懲機制、修改節點選取規則及優化一致性協議執行流程。首先引入信譽獎懲機制最大程度地保證系統的安全性;接著修改節點選取規則,解決信譽機制類共識算法產生節點信譽累計問題,降低系統中心化程度,提升了節點成為共識節點的積極性,也保證了主節點的可靠性,降低了視圖切換頻率;最后優化PBFT共識算法一致性協議的準備、確認和響應階段,降低了通信復雜度,提高了共識效率。實驗表明,相較于PBFT共識算法,GR-PBFT共識算法可以減少共識時延、降低通信開銷、增加系統吞吐量、提升系統安全性。但GR-PBFT共識算法仍有不足之處,后續工作將進一步降低共識過程的通信復雜度和拜占庭節點出現的頻率。 參考文獻: [1]Nakamoto S. Bitcoin:a peer-to-peer electronic cash system[EB/OL].(2018-04-10).https://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]Mechkaroska D, Popovska-Mitrovikj A, Mitrevska S, et al. Overview of blockchain and cloud computing services integration[C]//Proc of the 30th Telecommunications Forum.Piscataway,NJ:IEEE Press,2022:1-4. [4]Sunny F A, Hajek P, Munk M, et al. A systematic review of blockchain applications[J].IEEE Access,2022,10:59155-59177. [5]夏清,竇文生,郭凱文,等.區塊鏈共識協議綜述[J].軟件學報,2021,32(2):277-299.(Xia Qing, Dou Wensheng, Guo Kaiwen, et al. Survey on blockchain consensus protocol[J].Journal of Software,2021,32(2):277-299.) [6]何涇沙,張琨,薛瑞昕.基于貢獻值和難度值的高可靠性區塊鏈共識機制[J].計算機學報,2021,44(1):162-176.(He Jingsha, Zhang Kun, Xue Ruixin, et al. High reliability blockchain consensus mechanism based on contribution value and difficulty value[J].Chinese Journal of Computers,2021,44(1):162-176.) [7]Gervais A, Karame G O, Wyust K, et al. On the security and performance of proof of work blockchains[C]//Proc of ACM SIGSAC Conference on Computer and Communications Security.New York:ACM Press,2016:3-16. [8]Proof of stake[EB/OL].(2022-09-26).https://en.bitcoin.it/wiki/Proof_of_Stake. [9]Delegated proof of stake (DPOS)[EB/OL].(2019-11-10).https://how.bitshares.works/en/master/technology/dpos.html. [10]Ongaro D, Ousterhout J. In search of an understandable consensus algorithm[C]//Proc of USENIX Annual Technical Conference.Berkeley,CA:USENIX Association,2014:305-319. [11]Castro M, Liskov B. Practical Byzantine fault tolerance and proactive recovery[J].ACM Trans on Computer Systems,2002,20(4):398-461. [12]陳夢蓉,林英,蘭微,等.基于“獎勵制度”的DPoS共識機制改進[J].計算機科學,2020,47(2):269-275.(Chen Mengrong, Lin Ying, Lan Wei, et al. Improvement of DPoS consensus mechanism based on positive incentive[J].Computer Science,2020,47(2):269-275.) [13]Crain T, Gramoli V, Larrea M, et al. DBFT: efficient leaderless Byzantine consensus and its application to blockchains[C]//Proc of the 17th International Symposium on Network Computing and Applications.Piscataway,NJ:IEEE Press,2018:1-8. [14]Gao Sheng, Yu Tianyu, Zhu Jianming, et al. T-PBFT:an EigenTrust-based practical Byzantine fault tolerance consensus algorithm[J].China Communications,2019,16(12):111-123. [15]韓鎮陽,宮寧生,任珈民.一種區塊鏈實用拜占庭容錯算法的改進[J].計算機應用與軟件,2020,37(2):226-233,294.(Han Zhenyang, Gong Ningsheng, Ren Jiamin. An improved blockchain practical Byzantine fault tolerance algorithm[J].Computer Applications and Software,2020,37(2):226-233,294.) [16]李淑芝,黃磊,鄧小鴻,等.基于信用的聯盟鏈共識算法[J].計算機應用研究,2021,38(8):2284-2287.(Li Shuzhi, Huang Lei, Deng Xiaohong, et al. Consortium chain consensus algorithm based on credit[J].Application Research of Computers,2021,38(8):2284-2287.) [17]唐宏,劉雙,酒英豪,等.實用拜占庭容錯算法的改進研究[J].計算機工程與應用,2022,58(9):144-150.(Tang Hong, Liu Shuang, Jiu Yinghao, et al. Improved study of practical Byzantine fault-tolerant algorithm[J].Computer Engineering and Applications,2022,58(9):144-150.) [18]高娜,周創明,楊春曉,等.基于網絡自聚類的PBFT算法改進[J].計算機應用研究,2021,38(11):3236-3242.(Gao Na, Zhou Chuangming, Yang Chunxiao, et al. Improved PBFT algorithm based on network self clustering[J].Application Research of Compu-ters,2021,38(11):3236-3242.) [19]Zhao Liang, Li Bin, Zhou Qinglei, et al. Improvement and optimization of consensus algorithm based on PBFT[C]//Proc of the 4th International Conference on Communications, Information System and Computer Engineering.Piscataway,NJ:IEEE Press,2022:350-356. [20]楊昕宇,彭長根,楊輝,等.基于演化博弈的理性拜占庭容錯共識算法[J].計算機科學,2022,49(3):360-370.(Yang Xinyu, Peng Changgen, Yang Hui, et al. Rational PBFT consensus algorithm with evolutionary game[J].Computer Science,2022,49(3):360-370.) [21]方燚飚,周創明,李松,等.聯盟鏈中實用拜占庭容錯算法的改進[J].計算機工程與應用,2022,58(3):135-142.(Fang Yibiao, Zhou Chuangming, Li Song, et al. Improvement of practical Byzantine fault algorithm in alliance blockchain[J].Computer Enginee-ring and Applications,2022,58(3):135-142.) [22]陳潤宇,王倫文,朱然剛.基于信譽值投票與隨機數選舉的PBFT共識算法[J].計算機工程,2022,48(6):42-49,56.(Chen Runyu, Wang Lunwen, Zhu Rangang. PBFT consensus algorithm based on reputation value voting and random number election[J].Computer Engineering,2022,48(6):42-49,56.) [23]王森,李志淮,賈志鵬.主節點隨機選取的改進PBFT共識算法[J].計算機應用與軟件,2022,39(10):299-306.(Wang Sen, Li Zhihuai, Jia Zhipeng. Improved PBFT consensus algorithm with random selection of master nodes[J].Computer Applications and Software,2022,39(10):299-306.) 收稿日期:2023-03-14;修回日期:2023-05-10 基金項目:國家自然科學基金資助項目(51777058);國網上海市電力公司資助項目(52090D21N002) 作者簡介:陳蘇明(1999-),男,江蘇宿遷人,碩士研究生,主要研究方向為區塊鏈、密碼學;王冰(1975-),男(通信作者),江蘇揚州人,教授,博導,博士,主要研究方向為電力市場、區塊鏈及其應用、分布式控制(icekingking@hhu.edu.cn);陳玉全(1992-),男,安徽天長人,講師,碩導,博士,主要研究方向為分布式控制與優化算法、區塊鏈應用;邢濤(1998-),男,安徽馬鞍山人,碩士研究生,主要研究方向為區塊鏈及其應用;馬宇輝(1999-),男,江蘇揚州人,碩士研究生,主要研究方向為電力交易;趙建立(1983-),男,上海人,高級工程師,主要研究方向為區塊鏈與智能電網需求側管理.