陳蘇明 王冰 陳玉全 邢濤 馬宇輝 趙建立
摘 要:針對實用拜占庭容錯共識算法(practical Byzantine fault tolerance,PBFT)中存在通信開銷大、缺少獎懲機制、節(jié)點缺乏積極性的問題,提出了一種基于節(jié)點分組信譽模型的改進PBFT共識算法(grouping reputation practical Byzantine fault tolerance,GR-PBFT)。首先,引入信譽獎懲機制來確保系統(tǒng)的安全性,再根據節(jié)點信譽進行分組以選取共識節(jié)點,解決信譽機制類共識算法產生節(jié)點信譽累計問題,降低系統(tǒng)中心化程度,提升了節(jié)點成為共識節(jié)點的積極性;然后,改進主節(jié)點的選舉方式保證主節(jié)點的可靠性,并優(yōu)化一致性協(xié)議執(zhí)行流程,減少準備、確認與響應階段的通信復雜度,提高了共識效率。仿真實驗表明,GR-PBFT共識算法在共識時延、通信開銷、吞吐量、安全性等方面比PBFT共識算法具有更好的性能。
關鍵詞:區(qū)塊鏈; 共識算法; 節(jié)點分組; 信譽獎懲機制; 實用拜占庭容錯共識算法(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]技術的成功,其底層的區(qū)塊鏈技術也得到了廣泛關注,在金融、醫(yī)療、司法、物流、公共管理等領域具有很好的應用潛力且逐漸成為研究熱點。區(qū)塊鏈技術[2,3]的本質是一種去中心化的分布式數據庫,它具有去中心化、可追溯、點對點通信等特點[4],區(qū)塊鏈中的數據根據時間戳進行更新,無須可信第三方參與,所有交易全網廣播并通過節(jié)點共識完成上鏈。共識算法[5]是區(qū)塊鏈的底層核心,是區(qū)塊鏈系統(tǒng)的法律與靈魂[6],也是系統(tǒng)性能的重要體現(xiàn)。截至目前,已經出現(xiàn)許多不同類型的區(qū)塊鏈共識算法,常用的共識算法為工作量證明(proof of work,PoW)、權益證明(proof of stake,PoS)、股份授權證明(delegated proof of stake,DPoS)、Raft(replication and fault tolerant)、實用拜占庭容錯(PBFT)[7~11]。PoW共識算法在公有鏈中應用廣泛,其依靠計算機自身的性能來爭取記賬權,雖然該共識算法極其消耗算力,違背了環(huán)保理念,但該算法使得系統(tǒng)是完全去中心化的。PoS共識算法在解出一系列難題的基礎上引進幣齡的概念,幣齡被掌控的時間越長,節(jié)點獲得記賬權的機會就越大,雖然該算法會導致較為嚴重的中心化問題,但相較于PoW共識算法,其在算力消耗上有所降低,挖礦速度有所提升。DPoS共識算法主要通過選取少部分節(jié)點作為記賬節(jié)點來代替自己行使記賬權,雖然該機制會產生節(jié)點不積極投票和賄賂節(jié)點的問題[12],但相較于PoS共識算法,其可以大幅度減少能耗,提升共識效率。Raft共識算法在私有鏈中應用廣泛,該算法的核心是日志復制和選舉領導兩個過程,其中更為重要的是日志復制過程,雖然Raft共識算法會產生偽造日志的問題,但其通信復雜度低。PBFT共識算法在聯(lián)盟鏈中應用廣泛,由一致性協(xié)議、視圖更換協(xié)議和檢查點協(xié)議三部分來完成共識,該算法對拜占庭節(jié)點數量設置了一個閾值,可有效解決拜占庭將軍問題。PBFT共識算法雖然在聯(lián)盟鏈中應用最為廣泛,但仍有許多值得改進的地方。首先在PBFT三階段通信協(xié)議中,準備與確認階段的通信復雜度各有O(N2),通信復雜度過高,其中N為網絡中的節(jié)點總數;其次PBFT共識算法選取主節(jié)點太過隨意,主節(jié)點按照順序選出,且所有節(jié)點均為共識節(jié)點,影響了主節(jié)點的可靠性和節(jié)點的積極性;最后PBFT共識算法對于共識節(jié)點沒有任何獎懲措施,即使出現(xiàn)拜占庭節(jié)點也沒有懲罰措施,影響了系統(tǒng)的安全性。
針對上述PBFT共識算法存在通信開銷大、缺少獎懲機制、節(jié)點缺乏積極性的問題,許多研究從不同角度提供了解決方法。文獻[13]提出將PBFT與DPoS算法相結合的方式,共識節(jié)點由DPoS算法中股份投票的方式選舉產生,降低通信過程的通信復雜度,從而優(yōu)化PBFT的共識流程。文獻[14]提出了一種基于EigenTrust模型的PBFT共識算法,利用節(jié)點間的行為評估節(jié)點的信任可靠度,并選取系統(tǒng)中質量較高的節(jié)點搭建新的共識組,從而降低系統(tǒng)通信復雜度,優(yōu)化拜占庭容錯率。文獻[15]提出了一種改進的實用拜占庭共識算法,利用節(jié)點分離技術降低服務器請求次數,采用最長鏈方法與心跳檢測原理來改進主節(jié)點選取方式,降低了系統(tǒng)能耗。文獻[16]提出了一種基于信用的聯(lián)盟鏈共識算法,采用信譽估量模型并根據信譽值高低選取挖礦節(jié)點以提升算法共識效率及公平性,此外也增加了系統(tǒng)的激勵方案。文獻[17]提出了一種節(jié)點可靠性評估的改進PBFT共識算法,該算法引入節(jié)點評分方案,根據節(jié)點不同的信譽定位不同的信任狀態(tài),改進主節(jié)點選取方式,對惡意節(jié)點設置懲罰措施,從而降低算法的通信復雜度,提升系統(tǒng)效率和安全性。文獻[18]提出了一種基于網絡自聚類PBFT共識算法,引入種子節(jié)點的概念,以種子節(jié)點為質心進行自聚類,并從聚類組中選出各組中的代理者,由代理者執(zhí)行共識過程,使系統(tǒng)具有不錯的拓展性,同時也提升了系統(tǒng)性能。
針對上述PBFT共識算法存在通信開銷大、缺少獎懲機制、節(jié)點缺乏積極性的問題,本文提出了一種基于節(jié)點分組信譽模型的改進PBFT共識算法(GR-PBFT)。首先對PBFT共識算法進行說明,接著給出GR-PBFT共識算法設計方案,該方案內容為設計節(jié)點信譽獎懲機制、改進共識節(jié)點與主節(jié)點的選舉方式和優(yōu)化一致性協(xié)議執(zhí)行流程,最后在進行理論與實驗分析的同時與其他學者改進的PBFT共識算法進行對比,證明了GR-PBFT共識算法具有良好的性能。本文主要貢獻可總結為:a)根據節(jié)點行為引入信譽獎懲機制,所有節(jié)點按照信譽值降序排列,并按照斐波那契函數對節(jié)點進行分組,分組后在組內選取共識節(jié)點,解決了信譽機制類共識算法產生節(jié)點信譽累計問題,降低了系統(tǒng)中心化程度,提升了節(jié)點成為共識節(jié)點的積極性;b)主節(jié)點從排名第一、第二的共識節(jié)點中挑選,并由其他共識節(jié)點投票選取出主節(jié)點,最大程度地保證了主節(jié)點的可靠性,降低了視圖切換頻率;c)優(yōu)化PBFT共識算法一致性協(xié)議執(zhí)行流程的準備、確認和響應階段,降低通信復雜度,提高共識效率。
1 實用拜占庭容錯共識算法
PBFT共識算法證明了假設拜占庭節(jié)點數為f,網絡中的節(jié)點總數N滿足N≥3f+1,即可確?;貜拖⒌恼_性,從而實現(xiàn)共識,其時間復雜度為O(N2)。PBFT共識算法分為主節(jié)點與副本節(jié)點,主節(jié)點需接收客戶端消息并排列客戶端請求消息,接著將消息廣播至副本節(jié)點,副本節(jié)點按照主節(jié)點排列好的信息順序進行驗證,最終所有節(jié)點將消息返還至客戶端。
為了確保分布式系統(tǒng)中節(jié)點達成一致共識,PBFT共識算法需要在三種協(xié)議下運行,即一致性協(xié)議、視圖更換協(xié)議和檢查點協(xié)議。一致性協(xié)議可以確保所有節(jié)點存儲數據的正確性和一致性,采用節(jié)點間互相通信的方法來完成消息的一致性;在一致性協(xié)議執(zhí)行中,如果存在宕機或惡意行為的主節(jié)點,則觸發(fā)視圖更換協(xié)議來調整當前主節(jié)點;檢查點協(xié)議是定時觸發(fā),主要用來清除一致性協(xié)議運行中各節(jié)點存儲的消息,并同步節(jié)點狀態(tài)。
一致性協(xié)議是PBFT共識算法的核心協(xié)議,執(zhí)行過程如圖1所示,分為請求、預準備、準備、確認和響應五個階段。圖1中,節(jié)點0為主節(jié)點,節(jié)點1、2、3分別對應副本節(jié)點1、2、3,其中節(jié)點3為拜占庭節(jié)點。虛線為各階段邊界,箭頭表示消息從消息源節(jié)點發(fā)送到接收節(jié)點,帶虛線箭頭的消息表示真實的消息被竄改。整個協(xié)議基本執(zhí)行過程如下:
a)請求階段??蛻舳私o主節(jié)點發(fā)送請求,請求消息為〈Request,m,ts,cid,csig〉,其中m是客戶端請求內容,ts是時間戳,cid是客戶端ID,csig是客戶端簽名。
b)預準備階段。主節(jié)點收到請求消息后,對請求進行排序,同時對請求賦值一個序列號sn并生成預準備消息〈〈Pre-prepare,vn,sn,D(m),psig〉,m〉給副本節(jié)點,其中vn表示視圖號,視圖號初始值為0,sn是序列號,D(m)是信息摘要,psig是主節(jié)點簽名。
c)準備階段。副本節(jié)點收到預準備消息并生成準備消息〈Prepare,vn,sn,D(m),bid,bsig〉,其中bid是副本節(jié)點ID,bsig是副本節(jié)點簽名。在此階段,每個節(jié)點都會將自己生成的準備消息與其他節(jié)點發(fā)送的準備消息進行比對,至少有2f+1個準備消息與自己生成的準備消息一致時,則進入確認階段。
d)確認階段。準備階段完成后,所有節(jié)點生成確認消息〈Commit,vn,sn,D(m),bid,bsig〉并廣播至其他節(jié)點,節(jié)點收到來自其他節(jié)點的確認消息并校驗,至少有2f+1個確認消息與自己生成的確認消息一致時,則進入響應階段。
e)響應階段。當各共識節(jié)點在確認階段收到至少來自2f+1個不同節(jié)點的一致性消息后,將回復消息返還給客戶端,回復消息是〈Reply,vn,ts,bsig,r〉,其中r表示客戶端請求的執(zhí)行結果。若有f+1個節(jié)點響應相同,則表示客戶端請求成功。
2 GR-PBFT算法設計方案
2.1 節(jié)點信譽獎懲機制
由于在PBFT共識算法中缺少節(jié)點獎懲機制,在GR-PBFT共識算法中引入了信譽獎懲機制,節(jié)點信譽值被劃分為五個等級,此外處于不同信譽等級的節(jié)點獎懲機制不同,從而使得系統(tǒng)更加安全。本文基于文獻[19]中設計的動態(tài)信譽評價模型思想進行信譽獎懲機制設計,文獻[19]中的信譽評價模型根據共識節(jié)點在共識過程中的行為進行評分,并根據定義的節(jié)點信譽值閾值區(qū)間來評定節(jié)點處于何種狀態(tài),節(jié)點狀態(tài)不同則相應的權限也有所不同,從而可以及時評價和反饋節(jié)點行為。下面是本文的節(jié)點信譽獎懲機制方案的具體內容。
設區(qū)塊鏈中每個節(jié)點初始信譽值為60,節(jié)點信譽值最高為100,信譽值達到100后不再增加;節(jié)點信譽值被劃分為Rgood、Rbetter、Rnormal、Rinit、Rmin五個等級,分別取值90、80、70、60、55。Rgood是高信譽值;Rbetter是較高信譽值;Rnormal是正常信譽值;Rinit是初始信譽值;Rmin是最低信譽值,低于該信譽值,節(jié)點將被直接剔出區(qū)塊鏈系統(tǒng)。區(qū)塊鏈中節(jié)點的權限與狀態(tài)都直接受信譽值影響。
根據各個共識節(jié)點在共識過程中處于不同信譽等級來分配共識節(jié)點的信譽獎勵與懲罰。
信譽獎勵公式:
其中:Rij表示當前時刻第i組中第j個共識節(jié)點的信譽值,Rpreviousij表示上一時刻第i組中第j個共識節(jié)點的信譽值,關于共識節(jié)點的選取方式,將在2.2.1節(jié)中詳細闡述。V1表示該節(jié)點是可信節(jié)點,獎勵該共識節(jié)點的固定值,V2、V3表示該節(jié)點是拜占庭節(jié)點,懲罰該共識節(jié)點的固定值,V1、V2、V3可以根據實際的應用場景進行改變,本文中V1=1、V2=15、V3=10。特別地,當主節(jié)點成為拜占庭節(jié)點后,當前信譽值直接扣除20,對于區(qū)塊鏈中節(jié)點信譽值在Rmin與Rinit之間,則采用限制其一段時間參選共識節(jié)點,如式(2)所示。其中t為天數,初始值為1,隨著天數的增加不斷自加;T是一個固定常數,表示限制交易的天數,即限制周期;C為增長速率,T、C均可根據不同的應用場景進行改變,本文中設置T=10、C=1。對于節(jié)點信譽值小于Rmin的節(jié)點,直接將該節(jié)點剔出區(qū)塊鏈系統(tǒng)。
2.2 節(jié)點選取機制
由于在PBFT共識算法中所有節(jié)點均為共識節(jié)點,導致節(jié)點缺乏積極性,主節(jié)點按照編號順序選取的方式影響了主節(jié)點的可靠性,所以在GR-PBFT共識算法中,所有節(jié)點按照信譽值降序排序,并按照斐波那契函數規(guī)則進行分組,分組后利用向上取整函數得出各個組中前一半的節(jié)點組成共識節(jié)點;從共識節(jié)點中選取信譽值排名第一、第二的節(jié)點作為候選主節(jié)點,接著共識節(jié)點進行投票,投票選取結束后取數值最大的候選主節(jié)點作為主節(jié)點,不參與共識的節(jié)點需要保存共識結果。共識節(jié)點的選取方式不易產生節(jié)點信譽累計問題,降低了系統(tǒng)中心化程度,提升了節(jié)點參選共識節(jié)點的積極性,同時主節(jié)點的選取方式也提升了主節(jié)點的可靠性。本文根據文獻[20]中選取節(jié)點的思想來選取共識節(jié)點和主節(jié)點,文獻[20]中將共識節(jié)點按照信譽值降序排序依次填滿每個群組,并從共識群組中隨機選取主節(jié)點,各個群組由主節(jié)點引導進行共識,從而提升了選取節(jié)點的公平性和系統(tǒng)運行效率。
2.2.1 共識節(jié)點選取
在GR-PBFT共識算法中,設節(jié)點總數為N(N≥5),信譽值大于等于Rinit的節(jié)點總數設為Nr(Nr≥5),groupi∈{group1,group2,…,groupk}表示區(qū)塊鏈中節(jié)點被分到第i組,groupk表示最后一組。該組別是由斐波那契函數特性分組形成,斐波那契函數滿足以下遞推性質(n≥3,n∈Euclid Math TwoNAp):
通過斐波那契函數將區(qū)塊鏈中所有信譽值大于等于Rinit的節(jié)點分為k組,groupk-1中擁有S(k-1)個節(jié)點,nodeij表示groupi中的第j個節(jié)點,其中1≤i≤k-1、1≤j≤S(i);當i=k時,groupk中的節(jié)點個數為Nr-∑k-1m=1S(m),nodeij表示groupk中的第j個節(jié)點,其中1≤j≤Nr-∑k-1m=1S(m)。節(jié)點層次結構如圖2所示。
從各組中選取共識節(jié)點,每一組中利用向上取整函數選取前一半的節(jié)點成為共識節(jié)點。定義向上取整函數為upper(x),x為實數。
2.2.2 主節(jié)點選取
排名第一、第二的共識節(jié)點作為候選主節(jié)點,其他共識節(jié)點對候選主節(jié)點進行投票以選取主節(jié)點;在共識節(jié)點投票過程中,各個共識節(jié)點可以支持、棄權、反對。投票結果為
其中:resultpq是指第p組中第q個候選主節(jié)點的投票分數,Rpq表示在第p組中第q個候選主節(jié)點的信譽值,1≤p≤2、q=1;votemn表示第m組中第n個共識節(jié)點投票結果,支持、棄權、反對相對應的值分別是1、0和-1,數值最大的候選主節(jié)點當選主節(jié)點。如果最終resultpq相等,則選取投票前排名第一的共識節(jié)點作為主節(jié)點。
2.3 優(yōu)化一致性協(xié)議
由于在PBFT共識算法中準備階段已經達到完成共識的要求,確認階段主要是各節(jié)點了解其他節(jié)點的共識狀態(tài),所以可以簡化確認階段的通信復雜度。PBFT共識算法的確認階段兩兩交互,時間復雜度為O(N2),其中N為網絡中的節(jié)點總數。GR-PBFT共識算法中的確認階段不再需要兩兩交互,由主節(jié)點進行結果消息比對,使得時間復雜度降為O(N);此外因為選取共識節(jié)點數量上的減少,同樣也簡化了準備和響應階段,從而降低了通信開銷,提升了共識效率。本文基于文獻[21]中優(yōu)化一致性協(xié)議的思路進行一致性協(xié)議的改進,文獻[21]中將一致性協(xié)議執(zhí)行流程分為預準備階段、交互階段和確認階段。預準備階段與PBFT共識算法的執(zhí)行步驟一致;交互階段只有滿足相應積分的節(jié)點才可以共識,減少了節(jié)點間兩兩交互的次數;確認階段是所有節(jié)點向主節(jié)點發(fā)送確認消息,將PBFT共識算法的兩兩交互變成單向發(fā)送。因此文獻[21]經過對一致性協(xié)議執(zhí)行流程的改進降低了通信復雜度。
一致性協(xié)議主要優(yōu)化準備、確認和響應階段,執(zhí)行過程如圖3所示。圖3中,節(jié)點0、1、2、3為GR-PBFT共識算法中的共識節(jié)點,節(jié)點0是主節(jié)點,節(jié)點1、2、3分別對應副本節(jié)點1、2、3,其中節(jié)點3為拜占庭節(jié)點,其余節(jié)點是指GR-PBFT共識算法中信譽值大于等于Rinit且未當選共識節(jié)點的節(jié)點。虛線為各階段邊界,箭頭表示消息從消息源節(jié)點發(fā)送到接收節(jié)點,帶虛線箭頭的消息表示真實的消息被竄改。f表示共識節(jié)點中拜占庭節(jié)點的數量。
優(yōu)化一致性協(xié)議基本過程如下:
a)請求階段??蛻舳私o主節(jié)點發(fā)送請求,請求消息為〈Request,m,ts,cid,csig〉,其中m是客戶端請求內容,ts是時間戳,cid是客戶端ID,csig是客戶端簽名。
b)預準備階段。當主節(jié)點收到請求消息后,對請求進行排序,同時對請求賦值一個序列號sn并生成預準備消息〈〈Pre-prepare,vn,sn,D(m),psig〉,m〉給所有信譽值大于等于Rinit的節(jié)點,其中vn表示視圖號,視圖號初始值為0,sn是序列號,D(m)是信息摘要,psig是主節(jié)點簽名。副本節(jié)點對消息進行校驗,確認無誤可以進入準備階段,否則執(zhí)行視圖變更,更換主節(jié)點,其余節(jié)點僅接收來自主節(jié)點的消息,不對消息進行傳遞。
c)準備階段。副本節(jié)點收到預準備消息并生成準備消息〈Prepare,vn,sn,D(m),bid,bsig〉,其中bid是副本節(jié)點ID,bsig是副本節(jié)點簽名。在此階段,每個共識節(jié)點均會將自己生成的準備消息與其他共識節(jié)點發(fā)送的準備消息進行比對,至少有2f+1個準備消息與自己生成的準備消息一致時才可以進入確認階段。如果不滿足要求,更換拜占庭節(jié)點,進行相應的信譽懲罰并重啟共識過程。
d)確認階段。準備階段完成后進入確認階段,在此過程中,共識節(jié)點生成確認消息〈Commit,vn,sn,D(m),bid,bsig)〉并發(fā)送給主節(jié)點,主節(jié)點對其他節(jié)點發(fā)來的確認消息進行校驗。至少有f+1個確認消息與主節(jié)點的確認消息一致時,則確認階段完成。
e)響應階段。所有共識節(jié)點將確認消息返還給客戶端,回復消息是〈Reply,vn,ts,bsig,r〉,其中r表示客戶端請求的執(zhí)行結果。若有f+1個節(jié)點響應相同,則表示客戶端請求成功。
3 理論與仿真分析
3.1 理論分析
1)可靠性分析 PBFT共識算法中,主節(jié)點選取太過簡單,其通過取模運算來產生,即按照順序選出,導致主節(jié)點可靠性不足。GR-PBFT共識算法選取主節(jié)點是由各組中的共識節(jié)點對候選主節(jié)點投票產生,候選主節(jié)點中數值最大者當選主節(jié)點,從而大大提升了主節(jié)點的可靠性。
2)積極性分析 PBFT共識算法中,所有節(jié)點均為共識節(jié)點,無論是可信節(jié)點還是拜占庭節(jié)點都可以繼續(xù)參與共識,這就導致節(jié)點缺乏積極性。GR-PBFT共識算法中,所有節(jié)點按照信譽值降序排序且只有信譽值大于等于Rinit才具備參與共識的條件;再按照斐波那契函數規(guī)則分組,分組后利用向上取整函數得出各個組中前一半的節(jié)點組成共識節(jié)點。由于每一組中的節(jié)點信譽值相差不大,同時在信譽值低的組中與信譽值高的組中的節(jié)點入選為共識節(jié)點的概率一樣,從而解決了信譽機制類共識算法產生節(jié)點信譽累計問題,降低了系統(tǒng)中心化程度,提升了節(jié)點參選共識節(jié)點的積極性。
3.2 仿真分析
本實驗基于Java編程語言開發(fā)了一個多線程、多節(jié)點的小型區(qū)塊鏈系統(tǒng),利用該系統(tǒng)對PBFT、基于網絡自聚類PBFT(network and clustering practical Byzantine fault tolerance,NAC-PBFT)[18]、基于信譽值投票與隨機數選舉PBFT(reputation and number voting practical Byzantine fault tolerance,RN-VPBFT)[22]、基于主節(jié)點隨機選取的改進PBFT(random practical Byzantine fault tolerance,RPBFT)[23]及本文的GR-PBFT共識算法進行對比分析,主要在共識時延、通信開銷、吞吐量和安全性四個方面進行對比分析,實驗配置信息如表1所示。
3.2.1 共識時延分析
在區(qū)塊鏈系統(tǒng)中,共識時延是指客戶端提交請求到完成確認的時間。實驗中設置節(jié)點數量由5個增加到40個,步長為5。為不失一般性,在不同節(jié)點數下重復進行20次交易,不同節(jié)點數下的共識時延最終值為20次交易的均值,PBFT、NAC-PBFT、RPBFT與GR-PBFT共識算法的共識時延對比結果如圖4所示。
由實驗結果可知,節(jié)點數量在不斷增加的同時,四種算法的共識時延也相應增加,但GR-PBFT共識算法的共識時延整體小于PBFT、NAC-PBFT與RPBFT共識算法,同時GR-PBFT共識算法在不同節(jié)點區(qū)間內的共識時延增長率低于PBFT共識算法。PBFT共識算法中所有節(jié)點均參與共識,NAC-PBFT共識算法主要通過選取代理人來減少參與共識的節(jié)點數量,RPBFT共識算法主要簡化一致性協(xié)議執(zhí)行流程,GR-PBFT共識算法主要減少一半的節(jié)點參與共識,并優(yōu)化了一致性協(xié)議執(zhí)行流程。因此GR-PBFT共識算法比PBFT、NAC-PBFT與RPBFT共識算法在共識時延上有更好的優(yōu)勢。
3.2.2 通信開銷分析
通信開銷是指節(jié)點在共識過程中產生的通信量,GR-PBFT共識算法通過減少共識節(jié)點的個數,同時優(yōu)化PBFT共識算法中一致性協(xié)議,從而減少了通信開銷。由于PBFT與GR-PBFT共識算法中的請求階段都一樣,為了減少不必要的參數代入,不加入請求階段來進行通信開銷的對比。
假設兩個共識算法發(fā)生視圖變換的概率為P,節(jié)點總數為N。由于在GR-PBFT共識算法中信譽值大于等于Rinit的節(jié)點總數為Nr,Nr≤N,但每一組中利用向上取整函數選取前一半的節(jié)點成為共識節(jié)點的總數會大于Nr/2,所以GR-PBFT共識算法中的共識節(jié)點數近似取為N/2。
1)PBFT共識算法通信開銷 在預準備階段,通信次數為(N-1);在準備階段,通信次數為(N-1)2;在確認階段,通信次數為N(N-1);在響應階段,通信次數為N。因此,PBFT共識算法在正常共識中的通信次數為
當視圖切換發(fā)生時,副本節(jié)點間需互相發(fā)送視圖切換消息,其通信次數為(N-1)2;接著新主節(jié)點廣播新視圖消息給副本節(jié)點,其通信次數為(N-1)。由于產生視圖切換的概率為P,所以PBFT共識算法在視圖切換中的通信次數為
其中:P的取值為0~1,步長為0.05;N的取值為5~30,步長為1。將這些參數值代入公式可得如圖5所示的可視化圖形。由圖5可以得出,在給定范圍內,P與N無論如何變化,Q值始終小于1,即GR-PBFT共識算法的通信次數始終小于PBFT共識算法。此外由于GR-PBFT共識算法引入了信譽獎懲機制,同時主節(jié)點的選取更加安全、可靠,所以視圖切換的概率大幅度下降。因此在實際應用中,GR-PBFT共識算法的表現(xiàn)更佳。
3.2.3 吞吐量分析
吞吐量是指在單位時間內完成交易的數量,一般用TPS(transaction per second)表示,是共識算法性能對比中一個重要指標,TPS可由下式表示:
其中:Δt為出塊時間;transaction為出塊時間內處理的交易量。
實驗中設置節(jié)點數量由5個增加到40個,步長為5,為不失一般性,在不同節(jié)點數下重復進行20次測試,每次測試設置事件量為1 200,最終取20次重復測試的平均值作為每次不同節(jié)點數下吞吐量的值。PBFT、NAC-PBFT、RN-VPBFT、RPBFT與GR-PBFT共識算法的吞吐量對比結果如圖6所示。
由實驗結果可知,節(jié)點數量不斷增加的同時,五種算法的TPS都呈下降趨勢,但GR-PBFT共識算法的TPS整體大于PBFT、NAC-PBFT、RN-VPBFT和RPBFT共識算法。PBFT共識算法所有節(jié)點均參與共識,NAC-PBFT共識算法主要通過選取代理人來減少參與共識的節(jié)點數量,RN-VPBF和RPBFT共識算法主要簡化一致性協(xié)議執(zhí)行流程,但GR-PBFT共識算法主要減少一半的節(jié)點參與共識,并優(yōu)化了一致性協(xié)議執(zhí)行流程。因此,GR-PBFT共識算法比PBFT、NAC-PBFT、RN-VPBFT和RPBFT共識算法有更好的吞吐性能。
3.2.4 安全性分析
PBFT共識算法對拜占庭節(jié)點沒有懲罰措施且拜占庭節(jié)點會始終存在于系統(tǒng)中,導致系統(tǒng)安全性降低;GR-PBFT共識算法在系統(tǒng)中設置了信譽獎懲機制,參與共識的節(jié)點一旦成為拜占庭節(jié)點,會直接被扣除信譽分。一旦Rmin≤Rij 由實驗結果可知,隨著共識次數的增加,PBFT共識算法中拜占庭節(jié)點個數不變,GR-PBFT共識算法中拜占庭節(jié)點個數呈現(xiàn)下降趨勢,直至拜占庭節(jié)點個數為0,因此GR-PBFT共識算法提升了系統(tǒng)的安全性。 4 結束語 本文針對PBFT共識算法中存在通信開銷大、缺少獎懲機制、節(jié)點缺乏積極性的問題,提出了GR-PBFT共識算法。GR-PBFT共識算法引入信譽獎懲機制、修改節(jié)點選取規(guī)則及優(yōu)化一致性協(xié)議執(zhí)行流程。首先引入信譽獎懲機制最大程度地保證系統(tǒng)的安全性;接著修改節(jié)點選取規(guī)則,解決信譽機制類共識算法產生節(jié)點信譽累計問題,降低系統(tǒng)中心化程度,提升了節(jié)點成為共識節(jié)點的積極性,也保證了主節(jié)點的可靠性,降低了視圖切換頻率;最后優(yōu)化PBFT共識算法一致性協(xié)議的準備、確認和響應階段,降低了通信復雜度,提高了共識效率。實驗表明,相較于PBFT共識算法,GR-PBFT共識算法可以減少共識時延、降低通信開銷、增加系統(tǒng)吞吐量、提升系統(tǒng)安全性。但GR-PBFT共識算法仍有不足之處,后續(xù)工作將進一步降低共識過程的通信復雜度和拜占庭節(jié)點出現(xiàn)的頻率。 參考文獻: [1]Nakamoto S. Bitcoin:a peer-to-peer electronic cash system[EB/OL].(2018-04-10).https://bitcoin.org/bitcoin.pdf. [2]袁勇,王飛躍.區(qū)塊鏈技術發(fā)展現(xiàn)狀與展望[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]夏清,竇文生,郭凱文,等.區(qū)塊鏈共識協(xié)議綜述[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]何涇沙,張琨,薛瑞昕.基于貢獻值和難度值的高可靠性區(qū)塊鏈共識機制[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]韓鎮(zhèn)陽,宮寧生,任珈民.一種區(qū)塊鏈實用拜占庭容錯算法的改進[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]李淑芝,黃磊,鄧小鴻,等.基于信用的聯(lián)盟鏈共識算法[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]高娜,周創(chuàng)明,楊春曉,等.基于網絡自聚類的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]方燚飚,周創(chuàng)明,李松,等.聯(lián)盟鏈中實用拜占庭容錯算法的改進[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]王森,李志淮,賈志鵬.主節(jié)點隨機選取的改進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-),男,江蘇宿遷人,碩士研究生,主要研究方向為區(qū)塊鏈、密碼學;王冰(1975-),男(通信作者),江蘇揚州人,教授,博導,博士,主要研究方向為電力市場、區(qū)塊鏈及其應用、分布式控制(icekingking@hhu.edu.cn);陳玉全(1992-),男,安徽天長人,講師,碩導,博士,主要研究方向為分布式控制與優(yōu)化算法、區(qū)塊鏈應用;邢濤(1998-),男,安徽馬鞍山人,碩士研究生,主要研究方向為區(qū)塊鏈及其應用;馬宇輝(1999-),男,江蘇揚州人,碩士研究生,主要研究方向為電力交易;趙建立(1983-),男,上海人,高級工程師,主要研究方向為區(qū)塊鏈與智能電網需求側管理.