摘 要:針對現(xiàn)有基于分組策略的拜占庭容錯共識算法中存在的主節(jié)點不穩(wěn)定、延遲高等問題,提出一種基于通信延遲聚類和節(jié)點信譽的PBFT共識算法(CD-PBFT)。首先,設計了新的基于通信延遲的聚類算法對網(wǎng)絡中節(jié)點進行分組,將通信延遲融合進歐氏距離公式,讓系統(tǒng)中的節(jié)點根據(jù)混合距離進行聚類,最終使各個集群中延遲之和達到最低,減少通信開銷,提升共識效率;其次,提出了基于綜合評價的信譽模型,綜合考慮節(jié)點延遲指數(shù)、共識行為和歷史信譽,對節(jié)點進行信譽評估,依據(jù)節(jié)點行為和延遲差異進行信譽獎懲;最后,優(yōu)化主節(jié)點選取方式,建立了一種基于節(jié)點穩(wěn)定性和信譽模型的主節(jié)點選擇機制,通過信譽模型獲得節(jié)點的信譽值后,引入方差來衡量節(jié)點的信譽波動,選擇信譽高且方差小的節(jié)點擔任主節(jié)點,提高主節(jié)點的安全性。實驗結(jié)果表明,相較于PBFT,該算法平均吞吐量提高了126.8%,平均時延降低了68.3%。同時,與現(xiàn)有基于聚類的PBFT算法相比,CD-PBFT具有較為明顯的性能優(yōu)勢,能夠更靈活地應用在大規(guī)模節(jié)點的聯(lián)盟鏈場景中。
關鍵詞: 區(qū)塊鏈; 通信延遲聚類; 共識算法; 信譽模型; PBFT
中圖分類號: TP301 文獻標志碼: A 文章編號: 1001-3695(2025)02-003-0344-08
doi: 10.19734/j.issn.1001-3695.2024.07.0219
PBFT consensus algorithm based on communication
delay clustering and node’s reputation
Shi Yiran1, Deng Xiaohong2,3’, Zhang Li1, Liu Lihui1, Liu Yong1
(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 at the problems of unstable primary nodes and high latency in the existing Byzantine fault-tolerant consensus algorithms based on grouping strategies, this paper proposed a PBFT consensus algorithm based on communication delay clustering and node reputation (CD-PBFT). Firstly, the algorithm designed a new clustering algorithm based on communication delay to group the nodes in the network, fused the communication delay into the Euclidean distance formula, and allowed the nodes in the system to be clustered based on the mixture of distances, which ultimately minimized the sum of the delays in each cluster, reduced the communication overhead, and improved the consensus efficiency. Secondly, the algorithm proposed a reputation model based on comprehensive evaluation, which took into account the node delay index, consensus behavior and historical reputation for evaluate the reputation of nodes, and rewarded and punished nodes based on their behavior and delay differences. Finally, it optimized the primary node selection method and established a primary node selection mechanism based on node stability and reputation model. After obtaining the reputation value of the node through the reputation model, it introduced the variance to measure the fluctuation of the node’s reputation, and selected the node with high reputation and small variance to be the primary node, which improved the security of the primary node. Experimental results show that compared with PBFT, the algorithm improves the average throughput by 126.8% and reduces the average delay by 68.3%. Meanwhile, compared with the existing clustering-based PBFT algorithm, CD-PBFT has more obvious performance advantages and can be more flexibly applied in large-scale node federation chain scenarios.
Key words:blockchain; communication delay clustering; consensus algorithm; reputation model; PBFT
0 引言
區(qū)塊鏈[1]從本質(zhì)上來看是一種去中心化的數(shù)據(jù)庫,融合了P2P網(wǎng)絡、共識算法、非對稱加密等多種技術(shù),是互聯(lián)網(wǎng)技術(shù)高度融合的產(chǎn)物。區(qū)塊鏈技術(shù)作為一種新興技術(shù),在過去幾年中已經(jīng)得到了廣泛發(fā)展。到目前為止,區(qū)塊鏈技術(shù)已經(jīng)在教育[2]、醫(yī)療[3]、金融、物聯(lián)網(wǎng)[4]、能源[5]等諸多領域得到了落地應用,這種融合將共同推動下一代價值互聯(lián)網(wǎng)的進步,為各行各業(yè)帶來前所未有的便利。共識算法作為區(qū)塊鏈的核心技術(shù),維持著分布式系統(tǒng)的穩(wěn)定和安全,根據(jù)不同的應用場景,選擇的區(qū)塊鏈框架不一樣,適用的共識機制也不同。在公有鏈中,以DPoS(delegated proof of stake)[6]為例,它雖然解決了PoW存在的能源浪費和效率低的問題,但是DPoS通過選舉部分節(jié)點作為代表節(jié)點會具有中心化風險。在聯(lián)盟鏈中,以實用拜占庭容錯(practical Byzantine fault tolerance)[7]為例,它雖然解決了原始拜占庭容錯算法的效率問題,將算法復雜度由指數(shù)級降低到多項式級,提升了拜占庭容錯算法在實際應用中的可行性,但是也存在諸多不足之處,主要有以下兩個方面:a)PBFT算法運行涉及多個階段且要求節(jié)點間進行同步通信,這種通信過程或模式會讓它在實際應用中面臨高延遲的問題;b)主節(jié)點選取隨意,主節(jié)點的角色由各節(jié)點輪流擔任,會導致惡意節(jié)點和不穩(wěn)定節(jié)點擔任主節(jié)點,雖然可以通過視圖更換的方式更換主節(jié)點,但是頻繁的視圖更換會增大系統(tǒng)通信開銷,降低共識效率。
針對PBFT存在的問題,研究者們主要通過下述兩種方法來進行改進:
a)分組共識。例如Yang等人[8]提出了一種基于PBFT的改進算法,通過采用一致性哈希算法對共識節(jié)點進行分組來避免節(jié)點間的大量通信,提高網(wǎng)絡的可擴展性。Liu等人[9]引入了優(yōu)化的三路快速排序算法將節(jié)點劃分為具有不同權(quán)限的主節(jié)點組、共識節(jié)點組和觀察節(jié)點組。通過限制觀測節(jié)點組中的節(jié)點參與共識來減少通信開銷。Zheng等人[10]提出一種PBFT優(yōu)化算法,使用改進的C4.5算法對節(jié)點進行分類,選擇信用值高的節(jié)點組成主共識組,其他節(jié)點被劃分為子共識組,在主組和子組內(nèi)使用PBFT共識算法進行共識。Sun等人[11]提出一種基于K-means聚類的分組共識算法,采用K-means聚類算法對節(jié)點分組,對共識任務進行分解,從鏈并行參與共識,主鏈完成全局共識,主從鏈使用PBFT算法達成共識。李俊吉等人[12]根據(jù)信譽將節(jié)點分為收集器節(jié)點和普通共識節(jié)點,并使收集器節(jié)點收集普通共識節(jié)點的投票消息,減少節(jié)點間通信,降低通信開銷。
b)信譽模型。例如李淑芝等人[13]提出一種基于完美二叉樹通信拓撲的拜占庭容錯共識算法,將信譽模型與可驗證隨機函數(shù)(verifiable random function, VRF)[14]結(jié)合,設計了R-VRF來抽取主節(jié)點。Liu等人[15]提出了一種基于分組和信用的改進PBFT共識算法,通過信譽值將系統(tǒng)中節(jié)點分為管理節(jié)點、候選節(jié)點和普通節(jié)點,并從候選節(jié)點中選擇信譽高的節(jié)點作為管理節(jié)點,以優(yōu)化主節(jié)點的選擇。Wu等人[16]提出了一種基于聚類的分片共識算法,該算法引入節(jié)點信譽機制對節(jié)點的行為進行監(jiān)督和評分,選擇信譽高的節(jié)點擔任代理節(jié)點,提高主節(jié)點安全性。陳蘇明等人[17]根據(jù)節(jié)點信譽進行分組以選取共識節(jié)點,從共識節(jié)點中選取信譽高節(jié)點成為主節(jié)點,提升主節(jié)點的可靠性。上述研究從不同的角度對PBFT算法進行了優(yōu)化,第一種是通過分組共識的方式減少PBFT算法參與共識的節(jié)點數(shù),降低通信開銷。但是這種基于分組共識的PBFT改進算法仍未考慮到節(jié)點間的延遲問題,且多數(shù)分組算法在分組后組內(nèi)外依舊采用PBFT機制達成共識,這種方式在節(jié)點數(shù)過多時會造成通信復雜度急劇增加,從而影響系統(tǒng)性能。例如K-means聚類算法雖然作為分組共識的常用方法來提高共識效率,但是這種方式主要基于節(jié)點的靜態(tài)特征進行聚類,忽略了節(jié)點間的實際通信延遲,導致分組后的共識效率并未得到顯著提升。第二種是通過引入信譽評估模型的方式選擇信譽高的節(jié)點當選主節(jié)點,進而降低主節(jié)點是惡意節(jié)點的概率。但是這種信譽評估方式并未考慮延遲指數(shù)對節(jié)點信譽的影響,具有一定的片面性。除此之外,根據(jù)信譽高低選取的主節(jié)點容易遭受頻繁的可預測攻擊,從而致使系統(tǒng)進行多次視圖切換導致共識波動較大。
針對上述問題,本文提出基于通信延遲聚類和節(jié)點信譽的PBFT共識算法(communication delay clustering and node’s reputation based PBFT, CD-PBFT),本文主要工作如下:
a)提出新的基于通信延遲聚類分組策略(CD_K-means),對原始K-means算法進行改進,不再只考慮單一的空間距離作為聚類特征,而是將通信延遲作為一個參數(shù)融入歐氏距離公式,讓系統(tǒng)中的節(jié)點根據(jù)混合距離進行聚類分組,分組后節(jié)點分為主節(jié)點、共識節(jié)點及監(jiān)督節(jié)點三種類型。這種方式確保了集群內(nèi)部節(jié)點之間的延遲達到最小化,降低了節(jié)點間通信開銷。
b)設計了基于綜合評價的信譽模型,將延遲指數(shù)作為評估維度之一,提出新的信譽模型,選擇更穩(wěn)定的節(jié)點參與共識。通過綜合考慮節(jié)點延遲指數(shù)、共識行為和歷史信譽,對節(jié)點進行信譽評估,依據(jù)節(jié)點行為和延遲差異進行信譽獎懲,提高了節(jié)點參與共識的積極性和共識效率。
c)優(yōu)化主節(jié)點選取方式,設計了一種基于節(jié)點穩(wěn)定性和信譽模型的主節(jié)點選擇機制。將節(jié)點穩(wěn)定性與信譽評估模型結(jié)合,在信譽的基礎上加入方差的概念,用方差衡量節(jié)點信譽波動。選擇信譽高且方差小的節(jié)點作為主節(jié)點,確保主節(jié)點選取的可靠性。
1 問題提出
1.1 PBFT算法及存在的問題
PBFT算法包含了請求、預準備、準備、提交和回復五個階段,共識流程如圖1所示。從圖中可以看出,BFT共識流程存在通信開銷大的問題,在prepare和commit階段,各節(jié)點間相互通信和驗證,隨著網(wǎng)絡規(guī)模擴大,通信開銷會急劇上升。
PBFT主節(jié)點選擇方式主要分為通過視圖更換機制選取和根據(jù)節(jié)點信譽高低選取主節(jié)點兩種,兩種選擇方式對比如圖2所示。假設節(jié)點總數(shù)為N,當前視圖編號為v,則主節(jié)點編號為p=v mod N,其中節(jié)點1、2、3為正常節(jié)點,節(jié)點4為惡意節(jié)點。
視圖更換機制選擇主節(jié)點如圖2(a)所示。從圖中可以看出,主節(jié)點依次由節(jié)點1、2、3、4擔任,例如節(jié)點總數(shù)N=4,當v=1時,根據(jù)p=v mod N,節(jié)點1成為主節(jié)點。依此類推,隨著視圖編號的變化,所有節(jié)點輪流擔任主節(jié)點。由于沒有條件限制,惡意節(jié)點4也能夠擔任主節(jié)點,將會引起多次視圖更換,影響系統(tǒng)安全性和穩(wěn)定性。
針對該情況,目前比較常見的方式是引入信譽模型,根據(jù)信譽高低選擇主節(jié)點,如圖2(b)所示,每個節(jié)點賦予不同信譽值(Ⅰlt;Ⅱlt;Ⅲlt;Ⅳ)。從圖中可以看出,當v=1時,節(jié)點1的信譽是最高的,節(jié)點1連續(xù)擔任主節(jié)點。因為節(jié)點1在共識中出現(xiàn)的惡意行為,節(jié)點1的信譽出現(xiàn)了變化,當v=2時,發(fā)生了視圖變換,節(jié)點2成為當前節(jié)點中信譽最高節(jié)點,此時的主節(jié)點由節(jié)點2擔任。根據(jù)信譽選取主節(jié)點雖然解決了PBFT算法在主節(jié)點選擇上缺乏門檻限制的問題,但是這種方式選出的主節(jié)點通常是最高信譽節(jié)點,存在可預測問題,容易遭受惡意攻擊從而引起頻繁視圖更換,造成共識不穩(wěn)定的情況。
1.2 K-means聚類算法及其存在的問題
K-means聚類算法[18]作為無監(jiān)督聚類算法的代表,旨在將節(jié)點分為K個簇,使得每個節(jié)點與其所屬簇中心之間的距離之和最小。具體流程如下:
a)初始化。隨機選取K個節(jié)點作為初始簇中心。
b)分配節(jié)點。對于每一個節(jié)點,根據(jù)其與各簇中心的距離,將其分配給距離最近的簇中心所對應的簇。
c)更新簇中心。所有節(jié)點分配完畢之后,根據(jù)一個集群內(nèi)的所有節(jié)點重新計算該集群的中心節(jié)點,作為新的簇中心。
d)迭代。重復步驟b)c),直到滿足某個停止條件,例如簇中心的變化非常小,或者達到了預設的迭代次數(shù)。
e)輸出。最終得到K個簇及其對應的簇中心,每個節(jié)點都被分配到了最近的簇中。
圖3是K-means聚類的結(jié)果。從圖中可以看出,節(jié)點依據(jù)與簇中心的距離進行分配,最終形成了3個集群,同集群中節(jié)點到簇中心的距離都是最近的。由此可知,K-means聚類算法只考慮到了距離因素對節(jié)點進行分組,然而從圖1 的PBFT共識流程中可以看出,各節(jié)點間需要進行多次通信,算法性能很大程度上與節(jié)點間延遲相關。因此,在PBFT算法中利用K-means聚類算法進行聚類分組并不能有效解決高延遲的問題,需要對K-means聚類算法進行優(yōu)化。
2 CD-PBFT算法
2.1 算法模型
本文提出的CD-PBFT算法分為3個步驟,總體算法模型如圖4所示,以12個節(jié)點為例進行說明:
a)使用CD_K-means聚類算法分組。通過改進的K-means算法對系統(tǒng)中的12個節(jié)點進行分組,把通信延遲作為聚類特征,將與簇中心通信延遲低的節(jié)點劃分至當前簇中,如圖12個節(jié)點被分為3個組,節(jié)點0、1、2為各組的主節(jié)點(初始簇中心節(jié)點即為主節(jié)點),節(jié)點5、8、11為監(jiān)督節(jié)點,其余為共識節(jié)點(節(jié)點類型劃分在2.3節(jié)中介紹)。
b)進入混合共識流程。完成分組后,在節(jié)點0、1、2內(nèi)部采取PBFT共識,而各組內(nèi)通過具有拜占庭容錯能力的Raft算法達成共識(將在2.4節(jié)中介紹)。
c)信譽模型計算信譽值。當完成一輪共識后,根據(jù)信譽評估模型對節(jié)點在共識過程中的行為進行信譽值的計算,在下一輪共識開始前,會依據(jù)信譽值的高低排序選出前20%節(jié)點進行信譽方差計算,選擇信譽高且方差小的節(jié)點作為主節(jié)點,并對所有節(jié)點進行信譽值的更新。
2.2 CD_K-means聚類分組策略
為了優(yōu)化1.2節(jié)中K-means聚類算法存在的問題,使其分組結(jié)果中各個集群內(nèi)的延遲達到最優(yōu),本文提出一種新的基于通信延遲的聚類分組策略(communication delay based K-means, CD_K-means)。在CD_K-means聚類算法中,保留了距離特征,在得到不同節(jié)點的通信延遲后,最終通過兩者結(jié)合的混合距離進行聚類得到最終分組結(jié)果。CD_K-means算法的主要內(nèi)容如下:
a)通信延遲。通常是指兩個節(jié)點間數(shù)據(jù)傳輸所需的總時間,主要包括傳輸時延、傳播時延、處理時延及排隊時延四個部分。總延遲計算公式為
D_com=D_tra+D_pro+D_dis+D_que(1)
其中:傳輸時延D_tra是節(jié)點發(fā)送數(shù)據(jù)幀所需的時間;D_pro是指傳播時延,也就是數(shù)據(jù)從當前節(jié)點傳輸?shù)搅硪还?jié)點所需要花費的時間;D_dis和D_que分別是指處理時延及排隊時延。處理時延就是節(jié)點在收到分組后進行處理所花費的時間,排隊時延則是分組在輸入隊列中排隊等待處理所消耗的時間。
b)歐氏距離。通常指在多維空間中兩個點之間的真實距離,或者向量的自然長度(即該點到原點的距離)。歐氏距離計算公式為
d(x,Ki)=∑mj=1(xj-Kij)2(2)
其中:x為節(jié)點;Ki為第i個簇中心節(jié)點;m是節(jié)點的特征維度;Kij為節(jié)點與簇中心節(jié)點的第j個屬性值。節(jié)點通過式(2)得到與簇中心之間的距離。
c)混合距離。將通信延遲與歐氏距離進行結(jié)合?;旌暇嚯x計算公式為
d_mix(x,Ki)==ω1×d(x,Ki)+ω2×D_com(x,Ki)(3)
其中:d_mix表示節(jié)點間的混合距離;通過控制ω1、ω2來調(diào)整兩者不同的重要程度,權(quán)重之間滿足ω1+ω2=1。
上述得出節(jié)點與簇中心節(jié)點的混合距離后,會進行第一次聚類,將節(jié)點分配到合適的集群中,再遍歷所有節(jié)點,計算節(jié)點間的混合距離之和,不斷迭代更新直至集群內(nèi)混合距離之和達到最小。混合距離之和計算公式為
sumi=∑hy=0 ∑hz=0(ω1×∑mj=1(xyij-xzij)2+ω2×D_com(xyij,xzij)(4)
其中:sumi表示第i個簇中心所在集群中各節(jié)點的成對距離之和;h表示為每個簇中心集群最終需要達到的節(jié)點數(shù),h=n/k。當y=0或者z=0,x0i表示簇中心,通過變動y、z的值計算集群中不同節(jié)點間的混合距離。每個集群中的節(jié)點數(shù)量會滿足h=n/k,只有如此,才可以在一定程度上避免通信復雜度的增長引起的整體不平衡,從而使效率達到最優(yōu)。
算法1 CD_K-means聚類算法
輸入:簇中心數(shù)K;節(jié)點數(shù)x。
輸出:GroupResult(分組結(jié)果)。
K←Random.choice(k) //隨機選取k個簇中心節(jié)點
d_mix(x,Ki)←ω1×d(x,Ki)+ω2×D_com(x,Ki) /*計算節(jié)點與簇中心之間的混合距離*/
while Tlt;x/K 判斷集群內(nèi)節(jié)點數(shù)T是否滿足該數(shù)值
if d_mix(x,Ki)!=0 //得出混合距離最小的節(jié)點
min[K1,K2,…]←d_mix(x,Ki) /*將節(jié)點分配到離簇中心最近的集群中*/
for s_node[x]gt;0 //遍歷剩余節(jié)點
sumi←formula (4) //計算節(jié)點間的混合距離之和
if sumi!=0 //得出使sumi最小的節(jié)點
min[K1,K2,…]←sumi //把該節(jié)點分配到集群中
return GroupResult //得到分組結(jié)果
end if
end for
else
return 0
end if
end while
CD_K-means聚類算法分組過程如圖5所示,主要分為以下四個步驟:
a)在系統(tǒng)中隨機選取多個節(jié)點作為簇中心節(jié)點。以圖5為例,系統(tǒng)中節(jié)點總數(shù)為12,其中有3個節(jié)點擔任簇中心節(jié)點角色。
b)對其余節(jié)點(不包含簇中心節(jié)點)執(zhí)行與簇中心節(jié)點間的通信延遲檢測,通過式(1)得到每個節(jié)點的延遲數(shù)據(jù)。其次,根據(jù)式(3)計算各節(jié)點與簇中心節(jié)點間的混合距離,把各節(jié)點分配到距離簇中心最近的集群中。圖中節(jié)點0、1、2為簇中心節(jié)點,其余為共識節(jié)點,此時完成了初始聚類。節(jié)點分為3個集群,集群0包含節(jié)點0、3、4、5、6;集群1包含節(jié)點1、10、11;集群2包含節(jié)點2、7、8、9。
c)從步驟b)的最后聚類結(jié)果可以看出,存在分組不均或集群內(nèi)的延遲還未達到最優(yōu)的情況,因此會再次調(diào)整分配。遍歷所有節(jié)點,通過式(4)對各節(jié)點進行sum值計算,并把使集群sum值最小的節(jié)點分配到該集群。以集群0中的節(jié)點3為例,原集群0中的節(jié)點3在進行sum值計算后,發(fā)現(xiàn)與所有集群相比,它最終會使簇中心1的sum值最小,節(jié)點3被分配到集群1中,節(jié)點3就是變換節(jié)點。同理,節(jié)點4、7、8、11也是變換節(jié)點。此時集群0中包含節(jié)點0、7、5、6;集群1中包含節(jié)點1、3、8、10;集群2中包含節(jié)點2、4、11、9。
d)分組完成,得到最終分組結(jié)果。節(jié)點5、6、7被分配到簇中心0所在集群,節(jié)點3、8、10被分配到簇中心1所在集群,節(jié)點4、9、11被分配到簇中心2所在集群。
2.3 基于節(jié)點穩(wěn)定性和信譽模型的主節(jié)點選擇機制
為了提升主節(jié)點的穩(wěn)定性,降低惡意節(jié)點參與共識的概率,設計了基于節(jié)點穩(wěn)定性和信譽模型的主節(jié)點選擇機制。首先明確節(jié)點類型,不同節(jié)點承擔不同責任;其次通過信譽模型對節(jié)點在共識中的不同行為給予信譽獎懲;最后提出了新的主節(jié)點選擇機制。本節(jié)將從節(jié)點類型、信譽模型和主節(jié)點選擇三個方面進行介紹。
a)節(jié)點類型。在CD-PBFT算法中,根據(jù)節(jié)點在共識過程中所具有的不同責任分為主節(jié)點、共識節(jié)點和監(jiān)督節(jié)點三類。首先,系統(tǒng)中節(jié)點通過CD_K-means聚類算法進行分組,分組后各集群內(nèi)節(jié)點即為共識節(jié)點,共識節(jié)點的數(shù)量取決于系統(tǒng)中節(jié)點總數(shù);其次,主節(jié)點從共識節(jié)點中產(chǎn)生,各集群內(nèi)通過信譽排序和方差計算選取主節(jié)點;最后,監(jiān)督節(jié)點由各組信譽最高節(jié)點擔任,監(jiān)督節(jié)點的數(shù)量取決于集群的數(shù)量。不同類型節(jié)點所具有的權(quán)限如表1所示。
不同類型的節(jié)點會承擔不同的任務。其中,主節(jié)點具有協(xié)調(diào)管理整個系統(tǒng)的能力,共識節(jié)點參與共識,監(jiān)督節(jié)點將監(jiān)督組內(nèi)節(jié)點行為,并且該節(jié)點作為跟隨者參與組內(nèi)共識。
b)信譽模型。本文設置Cmax為每個節(jié)點所能達到的最高信譽值,Cinit為節(jié)點加入系統(tǒng)的初始信譽值。其中,Cmax的值為100,Cinit的值為40。為了防止節(jié)點在信譽值達到Cmax以后,節(jié)點消極共識,設計一種信譽等級制度。在節(jié)點信譽值達到最高值后,節(jié)點等級會加1,等級高的節(jié)點會獲得更高的系統(tǒng)利益分配,保持節(jié)點參與共識的積極性。
在共識過程中,節(jié)點之間會進行通信,一個節(jié)點通信的及時性和穩(wěn)定性極大影響著共識效率的高低,本文中節(jié)點信譽將從延遲指數(shù)、節(jié)點共識行為及節(jié)點歷史信譽三個方面進行評估。
(a)延遲指數(shù)。其為衡量節(jié)點在系統(tǒng)中通信延遲的相對大小,公式為
D_indexi=d_optdi×K(5)
其中:D_indexi表示節(jié)點i的延遲指數(shù),是一個相對指標,可以根據(jù)節(jié)點的延遲指數(shù)優(yōu)化節(jié)點布局,以減少整體的通信延遲,延遲指數(shù)越小意味著該節(jié)點的通信性能相對較好,反之通信效率較差;d_opt為集群中節(jié)點與簇中心之間的最優(yōu)延遲;di為節(jié)點i與簇中心之間的通信延遲值;K取值100。
(b)節(jié)點共識行為。為了降低惡意節(jié)點對共識過程的影響,根據(jù)節(jié)點的共識行為進行不同程度的信譽獎懲。如果節(jié)點積極參與共識,并生成有效區(qū)塊,則節(jié)點被認為是誠實節(jié)點,進行信譽獎勵。如果節(jié)點出現(xiàn)宕機行為或作惡行為時,該節(jié)點被認為是惡意節(jié)點,并進行信譽懲罰。信譽獎勵公式為
R_rewji=Rpreviousji+K1×V(6)
其中:R_rewji表示第j組中第i個共識節(jié)點誠實行為后的信譽值;Rpreviousji表示在上一輪共識中第j組中第i個共識節(jié)點的信譽值;K1取值0.1;V表示根據(jù)該節(jié)點在共識過程中的誠實行為所獎勵的固定信譽值。信譽懲罰公式為
R_punji=Rpreviousji-K2×V1
if i有宕機行為
Rpreviousji-K3×V2if i有作惡行為(7)
其中:R_punji表示第j組中第i個共識節(jié)點惡意行為后的信譽值;K2=0.2,K3=0.3;V1、V2分別表示節(jié)點在共識過程中出現(xiàn)宕機行為或作惡行為時所扣除的固定信譽值。
(c)綜合信譽值。它是延遲指數(shù)、節(jié)點共識行為和節(jié)點歷史信譽值三部分的總和。計算公式如下:
C(i)=α×D_indexi+β×Rji+λ×Rpreviousji(8)
其中:Rji表示節(jié)點根據(jù)共識行為信譽得到獎勵或懲罰后的最終信譽值;α、β、λ分別為三者的權(quán)重且權(quán)重之間滿足α+β+λ=1,α、β、λ的取值為[0.1,0.8],可以通過動態(tài)調(diào)整權(quán)重值來變換三個部分在信譽評估模型中所占比重。
c)主節(jié)點選擇。針對1.1節(jié)中的主節(jié)點選擇問題,本文設置了一種將信譽與方差結(jié)合的主節(jié)點選擇機制。主節(jié)點選擇機制具體如圖6所示,分為以下三個步驟:
(a)信譽排序。節(jié)點在每輪共識完成后都會通過信譽模型進行信譽更新,在第N輪共識開始前會對節(jié)點進行信譽值排序。圖中節(jié)點2為N-1輪共識后信譽最高節(jié)點,節(jié)點m為信譽最低節(jié)點,在進行排序后,按信譽高低依次為節(jié)點2、3、4等,最末為節(jié)點m。
(b)計算信譽方差。首先根據(jù)步驟(a)的信譽排序選出前20%節(jié)點。由于參與信譽方差計算的節(jié)點比例越大,低信譽節(jié)點參與共識的可能性就越大,為保持主節(jié)點擁有高信譽條件,設置閾值為20%。其次對閾值內(nèi)節(jié)點進行信譽方差計算。圖中根據(jù)信譽高低從節(jié)點2到n為信譽前20%的節(jié)點,收集該范圍內(nèi)節(jié)點前N-1輪共識的信譽數(shù)據(jù)并進行方差計算。
對于每個節(jié)點i(i屬于高信譽范圍節(jié)點),計算其在前N-1輪中的平均信譽:
R_avei=1N-1∑N-1j=1Rij(9)
其中:Rij表示節(jié)點i在第j輪共識中的信譽得分。對于節(jié)點i再次計算其在前N-1輪中的信譽方差,計算公式為
R_vari=1N-1∑N-1j=1(Rij-R_avei)2(10)
(c)選取主節(jié)點。在步驟(b)的基礎上,由于篩選出了高信譽節(jié)點,只需要比較閾值內(nèi)節(jié)點的信譽方差,選擇方差最小的節(jié)點作為第N輪共識的主節(jié)點。
主節(jié)點選擇機制如算法2所示。
算法2 主節(jié)點選擇算法
輸入:節(jié)點信譽數(shù)組CreditArray;分組結(jié)果GroupResult。
輸出:i(主節(jié)點編號)。
Sum_r=[] //定義候選節(jié)點數(shù)組
Variance_r=[] //定義方差數(shù)組
for each node in GroupResult //遍歷參與共識的所有節(jié)點
GroupResult[i]←CreditArray[i] //得出節(jié)點信譽值
end for
Sum_r[node]←Sort.GroupResult[Twenty_per.node] /*對節(jié)點排序,將信譽前20%節(jié)點存儲在Sum_r中*/
for Sum_r[node] //遍歷前20%節(jié)點
Variance_r[i]←1N-1∑N-1j=1(Rij-R_avei)2 //計算節(jié)點信譽方差
end for
i←Min.Variance_r[i] //選擇信譽高且方差小的節(jié)點作為主節(jié)點
return i //返回主節(jié)點
2.4 混合共識
2.4.1 抗拜占庭的Raft共識
Raft屬于強領導者型共識算法,在任意給定時刻,組中只有一個領導者負責處理所有的請求和決策,這種方式簡化了系統(tǒng)復雜性。PBFT算法的通信復雜度為O(n2),Raft算法憑借其強領導性,它的通信復雜度為O(n),相較于PBFT算法,具有更高的效率達成共識,但是不具備拜占庭容錯能力。當系統(tǒng)中存在惡意節(jié)點時具有嚴重的安全隱患,故而在本文中引入監(jiān)督節(jié)點對Raft安全性進行改進,監(jiān)督節(jié)點會監(jiān)督組內(nèi)的領導者,并且它只作為跟隨者參與組內(nèi)共識。監(jiān)督節(jié)點通過對收到的不同領導者的消息進行比對驗證來判斷領導者是否是惡意節(jié)點,若無惡意節(jié)點就會將日志消息廣播給各個組內(nèi)節(jié)點,監(jiān)督節(jié)點的監(jiān)督行為主要分為比對、驗證和選舉三個階段。
a)比對。在組內(nèi)共識階段里,監(jiān)督節(jié)點會收集領導者下發(fā)組內(nèi)其他節(jié)點的消息,然后進行比對確認,如果發(fā)現(xiàn)領導者下發(fā)的消息存在不一致的情況,則說明領導者有欺詐行為,否則進行第二階段。
b)驗證。監(jiān)督節(jié)點會向其他監(jiān)督節(jié)點請求驗證,其他組內(nèi)監(jiān)督節(jié)點會將其監(jiān)督域內(nèi)領導者下發(fā)的消息發(fā)送給該監(jiān)督節(jié)點,通過驗證后,若確認其他領導者下發(fā)的消息與該疑似惡意節(jié)點的領導者不一致,即可判定該領導者為惡意節(jié)點。
c)選舉。在識別領導者為惡意節(jié)點之后,將發(fā)送〈Info,Ni,t,term〉給全體成員,罷免領導者身份重新選舉。其中,Info為信息標識,Ni為監(jiān)督節(jié)點編號,term為任期。
2.4.2 共識流程
在對所有節(jié)點進行CD_K-means聚類算法分組后,形成兩級共識機制,由各組內(nèi)領導者組成的委員會內(nèi)部使用PBFT機制進行共識,而各組內(nèi)采用改進的Raft算法進行共識,具體流程如圖7所示。節(jié)點0~3構(gòu)成的委員會內(nèi)部使用PBFT達成共識,其中節(jié)點0為PBFT階段主節(jié)點,其余為共識節(jié)點。在各組內(nèi),節(jié)點0~3為組內(nèi)領導者,節(jié)點30、31、32、33分別為組1~4的監(jiān)督節(jié)點,其余節(jié)點為跟隨者。
a)客戶端請求階段??蛻舳税l(fā)送數(shù)據(jù)請求消息res給節(jié)點0,開始委員會內(nèi)部PBFT共識。
b)PBFT預準備階段。主節(jié)點0分別向節(jié)點1、2、3廣播預準備消息〈〈pre-parepre,VN,reqID,res〉σp,dig(res)〉。其中,VN表示視圖編號,reqID為客戶端發(fā)起請求編號,主節(jié)點0對res進行自身數(shù)字簽名得到〈res〉σp,dig(res)用來存儲res的摘要信息。
c)準備階段。節(jié)點1、2、3接收預準備消息并進行檢查,若通過,共識節(jié)點1、2、3會相互廣播準備消息,該準備消息由各節(jié)點進行數(shù)字簽名得到。當各節(jié)點收到不低于2f個消息,則表示準備階段完成。
d)確認階段。節(jié)點0~3相互廣播確認消息〈commit,VN,reqID,dig(res),i〉σi,各節(jié)點收到不低于2f+1個確認消息,則該階段完成,進入組內(nèi)共識。
e)組內(nèi)Raft共識。PBFT中節(jié)點0~3即為Raft各組內(nèi)領導者,各組內(nèi)都存在一個監(jiān)督節(jié)點,其他節(jié)點為跟隨者。領導者0~3廣播消息。消息中包括區(qū)塊B、領導者編號Ni、消息簽名δi。
(a)監(jiān)督節(jié)點對比消息。以組0為例,監(jiān)督節(jié)點30對領導者0下發(fā)的消息進行收集并進行對比驗證,若在規(guī)定時間內(nèi)收到3n/4個相同交易集數(shù)據(jù)則進行下一階段。
(b)監(jiān)督階段驗證。監(jiān)督節(jié)點30會向其他監(jiān)督節(jié)點31、32、33廣播〈verify,Ci,dig,timestampR,term〉,其中verify代表驗證消息,Ci是當前組內(nèi)監(jiān)督節(jié)點編號,當前區(qū)塊的交易集信息存儲在dig中,timestampR為時間戳,當前組內(nèi)領導者0任期為term。驗證本組領導者0下發(fā)信息與其他組領導者1、2、3是否一致,若一致,則驗證成功。Ci在規(guī)定時間內(nèi)收到監(jiān)督節(jié)點31、32、33驗證消息超過M/2,即向本組節(jié)點10、20、30發(fā)送確認消息,否則,發(fā)送領導者重選信息。
(c)跟隨者回復階段。通過監(jiān)督驗證后,各跟隨者響應領導者0~3的消息,同步完成后,向領導者0~3發(fā)送回復消息。
f)PBFT提交階段。各領導者收到超過組內(nèi)一半數(shù)量的回復消息后認為組內(nèi)達成共識,進入提交階段,節(jié)點0~3向客戶端回復消息〈reply,VN,timestamp,C,i,req〉σi,其中req為本次請求最終執(zhí)行結(jié)果,C為客戶端編號??蛻舳耸盏街辽賔+1個一致的回復消息后,本輪共識完成。
3 算法分析
3.1 安全性分析
本文CD-PBFT算法是PBFT算法的改進版本,在由簇中心節(jié)點組成的委員會內(nèi)部共識中,其安全性由PBFT的共識特性保證。其中,預準備、準備和提交這三階段過程保證了拜占庭惡意節(jié)點不超過1/3時的系統(tǒng)安全性。在組內(nèi)共識中,設計了監(jiān)督節(jié)點來保證了系統(tǒng)中在含有拜占庭惡意節(jié)點時的安全性。監(jiān)督節(jié)點通過比對、驗證、選舉三個步驟提高了Raft算法的抗拜占庭能力并對下述情況進行了安全性保證:a)領導者下發(fā)消息不一致。對于這種問題,監(jiān)督節(jié)點會在收集信息后進行對比驗證,若出現(xiàn)驗證失敗的情況,監(jiān)督節(jié)點向管理中心申請對該領導者的罷免,并觸發(fā)領導者重選舉機制。b)領導者發(fā)起虛假請求。領導者偽造請求下發(fā)到組內(nèi),監(jiān)督節(jié)點會通過向其他監(jiān)督節(jié)點發(fā)送請求驗證消息進行確認,若收到一定數(shù)量的成功消息則判定該領導者作惡,觸發(fā)領導者重選舉機制。c)領導者的惡意攔截。當領導者對區(qū)塊請求進行攔截時,監(jiān)督節(jié)點依舊能通過監(jiān)督策略中的驗證步驟覺察領導者的惡意行為并更換該惡意領導者。通過上述分析方法,可以得出結(jié)論,CD-PBFT算法能夠在保證系統(tǒng)安全性的前提下進行共識。
3.2 適用場景分析
自動駕駛車隊是車聯(lián)網(wǎng)技術(shù)的一個典型應用,由多輛具備自動駕駛能力的車輛組成,這些車隊中的車輛需要實時共享路況信息、行駛計劃、緊急制動信號等關鍵數(shù)據(jù),以確保車隊的安全及高效運行,對實時性和數(shù)據(jù)一致性的要求極高。區(qū)塊鏈提供了一個分布式的數(shù)據(jù)存儲和共享平臺,使得多個自動駕駛車輛之間能夠?qū)崟r地共享數(shù)據(jù),另外區(qū)塊鏈技術(shù)中的共識機制可以用于自動駕駛車隊中的決策協(xié)商過程。每輛車可以作為區(qū)塊鏈網(wǎng)絡中的節(jié)點,通過共識算法達成一致的決策。設想在基于區(qū)塊鏈的自動駕駛車隊實時調(diào)度與協(xié)同駕駛系統(tǒng)中,參與方包括自動駕駛汽車、云端服務平臺和監(jiān)管機構(gòu)。若在該系統(tǒng)中使用傳統(tǒng)PBFT共識算法會存在以下問題:a)缺少對實際應用中延遲動態(tài)變化的考慮,會導致車輛不能及時獲得一致的信息并作出響應;b)缺少信譽機制,低信譽車輛會影響車隊的運行及安全;c)缺少主節(jié)點選取門檻限制,出現(xiàn)提交錯誤數(shù)據(jù)或延遲大等問題的車輛擔任主節(jié)點會影響共識完成效率。
CD-PBFT算法通過通信延遲聚類分組和優(yōu)化的主節(jié)點選取機制,使自動駕駛車隊中的車輛能夠更快地交換數(shù)據(jù)并達成共識,提高了車隊的實時響應能力,同時選取穩(wěn)定的車輛為主節(jié)點能避免因節(jié)點故障或性能問題導致的共識延遲和錯誤。提出的基于綜合評價的信譽模型激勵了車輛積極參與共識,同時識別和隔離低信譽節(jié)點,確保了整體可靠性和安全性。綜上所述,CD-PBFT算法能較好地適用于實時性高的應用場景。CD-PBFT在自動駕駛車隊中的部署可分為以下四個步驟。
a)節(jié)點初始化。將每輛自動駕駛汽車作為一個節(jié)點,參與共識和數(shù)據(jù)交換,通過CD_K-means算法進行聚類,使每個車隊中車輛間延遲最低。
b)數(shù)據(jù)收集。每輛自動駕駛汽車通過其內(nèi)置的傳感器實時收集路況信息、車輛狀態(tài)等數(shù)據(jù)。
c)實施CD-PBFT算法共識。將CD-PBFT算法作為共識機制,用于確保車輛間達成一致的決策和數(shù)據(jù)狀態(tài)。通過基于綜合評價的信譽模型對車輛進行信譽評估,根據(jù)其行為進行獎懲。使用本文提出的主節(jié)點選擇機制選擇車隊中信譽高且信譽穩(wěn)定的車輛作為主節(jié)點,使用區(qū)塊鏈技術(shù)作為數(shù)據(jù)存儲和傳輸?shù)姆植际狡脚_,確保車輛能夠?qū)崟r共享路況、行駛計劃、緊急制動信號等關鍵數(shù)據(jù),每輛車產(chǎn)生的數(shù)據(jù)可以被記錄在區(qū)塊鏈上,形成不可竄改的數(shù)據(jù)歷史記錄。
d)實時監(jiān)控和反饋。通過監(jiān)管機構(gòu)檢測車輛狀態(tài)、共識過程的進展和數(shù)據(jù)交換情況,及時發(fā)現(xiàn)并處理異常情況。使用云端服務平臺分析車隊數(shù)據(jù)和區(qū)塊鏈交易數(shù)據(jù),提供決策支持和優(yōu)化建議,定期向車隊成員反饋其表現(xiàn)評估結(jié)果。
3.3 通信開銷分析
本節(jié)對CD-PBFT共識算法單次共識所需的通信開銷與傳統(tǒng)PBFT及文獻[11]進行對比分析。文獻[11]通過K-means對節(jié)點進行聚類分組,同時優(yōu)化共識流程來達到降低整體通信開銷的目的,而CD-PBFT算法對K-means算法進行了改進,因此相較于其他優(yōu)化算法,文獻[11]更具對比價值。在這里假設分組數(shù)為M,組內(nèi)節(jié)點數(shù)為n,因而總節(jié)點數(shù)為N=M×n。
a)PBFT算法的單次共識通信次數(shù)。正如前面所述,PBFT所有節(jié)點會進行相互通信,在客戶端向主節(jié)點發(fā)送請求消息后,主節(jié)點將向N-1個從節(jié)點發(fā)送預準備消息;在準備階段,N-1個從節(jié)點會將準備消息發(fā)送給除去自身外其他N-1個節(jié)點,在這個過程中會產(chǎn)生(N-1)2次通信;在確認階段,N個節(jié)點會向N-1個節(jié)點發(fā)送確認消息,該階段產(chǎn)生N×(N-1)次通信。在完成回復階段后,系統(tǒng)內(nèi)節(jié)點完成整個共識階段的通信次數(shù)為
T1=1+(N-1)+(N-1)(N-1)+N(N-1)+N=2N2-N+1(11)
b)CD-PBFT算法的單次共識通信次數(shù)。該算法在由簇中心節(jié)點組成的委員會內(nèi)部共識階段和組內(nèi)Raft共識階段中均會產(chǎn)生節(jié)點通信。在前者共識中,會產(chǎn)生(M-1)2+M2次節(jié)點通信。而在Raft共識階段,會產(chǎn)生3Mn-2M次通信。因此,節(jié)點完成一次CD-PBFT共識所需的通信次數(shù)為
T2=(M-1)2+M2+3M(n-1)+M=2M2-4M+3Mn+1(12)
c)文獻[11]的單次共識通信次數(shù)。該算法對節(jié)點進行分組后,組內(nèi)組外使用PBFT機制達成共識,整個共識階段的通信次數(shù)為
T3=(2n2-n-1)M+2M2-M=2M2+(2n2-n-2)M(13)
在假設分組數(shù)M=8的情況下,N=M×n,組內(nèi)節(jié)點數(shù)n≥4??芍猅1=128n2-8n+1,T2=24n+96,T3=16n2-8n+112。比較T1、T2、T3大小如式(14)(15)所示。
T1-T3=112n2-111(14)
T3-T2=16(n-1)2(15)
當n≥4時,T1-T3gt;0,T3-T2gt;0,從而可知T1gt;T3gt;T2。PBFT的通信開銷是最大的,文獻[11]次之,CD-PBFT的通信開銷最小。圖8為當分組數(shù)為8,節(jié)點總數(shù)逐漸增加時,三種算法的通信開銷對比情況。可以看出,三種算法隨著節(jié)點總數(shù)增加,整體都呈現(xiàn)不同程度的上升趨勢。在節(jié)點總數(shù)比較少時,三種算法的通信開銷相對比較接近;當節(jié)點總數(shù)增加以后,傳統(tǒng)PBFT的通信開銷呈現(xiàn)急速上升的趨勢;在節(jié)點總數(shù)相同時,CD-PBFT的通信開銷遠低于PBFT與文獻[11]。這種現(xiàn)象的本質(zhì)原因是本文算法采用了分組和混合共識(PBFT+Raft)機制,而文獻[11]雖然使用了分組策略,但是組內(nèi)組外仍舊使用PBFT,因此本文算法具有更大優(yōu)勢。與PBFT和文獻[11]相比,CD-PBFT通信開銷分別平均降低了90.2%與58.1%,就總體而言,CD-PBFT通信開銷更低。
4 仿真實驗
為了驗證CD-PBFT的有效性,本實驗在采用Intel CoreTM i7-13700H 2.40 GHz處理器、16 GB內(nèi)存的Windows 11系統(tǒng)環(huán)境下進行,軟件環(huán)境為Go 1.14,通過配置多臺虛擬機加端口映射的方式模擬多節(jié)點環(huán)境,映射方式如表2所示。本章從主節(jié)點選擇效果、共識時延及吞吐量這三個方面對CD-PBFT與其他算法進行對比實驗分析。
信譽評估是一個動態(tài)過程,為了適應節(jié)點變化,對信譽模型中的延遲指數(shù)、節(jié)點共識行為及歷史信譽設定了權(quán)重值。為了選出最適合的權(quán)重比值,考慮到延遲指數(shù)對分組結(jié)果和信譽模型的影響,實驗中設置了三組延遲指數(shù)權(quán)重占比逐漸增長的方案,分別為(0.1,0.4,0.5)、(0.3,0.4,0.3)、(0.4,0.3,0.3),觀察延遲指數(shù)權(quán)重占比的逐漸增長對節(jié)點信譽的影響,實驗結(jié)果如圖9所示。從圖9可以看出,隨著共識輪次的增加,節(jié)點信譽值在不同參數(shù)下呈上升趨勢,與其他參數(shù)曲線相比,當權(quán)重設置為(0.1,0.4,0.5),節(jié)點信譽變化最平穩(wěn),且隨著延遲指數(shù)權(quán)重的逐漸增大,節(jié)點信譽變化越不穩(wěn)定。因此本文的權(quán)重參數(shù)最終設定為(0.1,0.4,0.5)。
4.1 主節(jié)點選擇效果
為了驗證本文提出的主節(jié)點選擇機制是否比根據(jù)信譽高低選主機制具有更好的穩(wěn)定性,將CD-PBFT與KBFT[16]進行比較,KBFT具有改進類算法中比較典型的選主方式,通過選擇信譽高的節(jié)點作為主節(jié)點來提高主節(jié)點安全性,以KBFT作為比較對象,更能突出CD-PBFT的選主效果。首先,測試了本文的主節(jié)點選擇機制,模擬了16個節(jié)點進行10次共識,分析了節(jié)點在共識過程中存在不同行為時,節(jié)點信譽方差的變化情況。其次,對比了CD-PBFT和KBFT在不同共識輪次時,視圖更換次數(shù)的變化情況。CD-PBFT節(jié)點信譽變化如圖10所示,兩個算法的視圖更換次數(shù)對比如圖11所示。在圖10中,由于第1輪共識中主節(jié)點為初始簇中心節(jié)點,且主節(jié)點選擇機制是對當前共識的前N-1輪共識信譽進行計算,所以為使得數(shù)據(jù)有效從第3輪開始。1號節(jié)點為中途作惡節(jié)點,2、3為誠實節(jié)點,4號節(jié)點為后進入前20%信譽范圍的節(jié)點,對于持續(xù)作惡節(jié)點,會在信譽篩選中被排除在高信譽范圍外。從圖中可以看出,由于1號節(jié)點為中途作惡節(jié)點,它在第3輪共識開始進行持續(xù)作惡,在第6輪共識結(jié)束后也就是第7輪共識開始前進行信譽篩選,被排除在高信譽范圍外。此時4號節(jié)點正好因為其良好共識行為信譽累加到一定程度加入進來,而2號與3號節(jié)點持續(xù)誠實行為,且2號節(jié)點的信譽方差在進行實驗的多次共識輪次中保持最低,在大部分共識中持續(xù)擔當主節(jié)點。
從圖11可以看出,隨著共識輪次的增加,CD-PBFT和KBFT的視圖更換次數(shù)都呈現(xiàn)增長的趨勢。與KBFT相比,CD-PBFT的增長趨勢會更加緩慢,在相同共識輪次的情況下,CD-PBFT的視圖更換次數(shù)低于KBFT。這是因為本文算法提出了一種新的主節(jié)點選擇機制,從圖中可以看出,與常見的根據(jù)信譽高低選主方式相比,本文的選主方式使主節(jié)點具有更高的穩(wěn)定性。
4.2 共識時延
共識時延是客戶端發(fā)起請求到被確認上鏈所需的總時間。假設節(jié)點在完成一次共識中,在Treq時刻客戶端發(fā)起請求,Treply為收到回復消息的時間。共識時延的計算公式為
DelayTime=Treply-Treq(16)
為了控制實驗誤差,取多次共識時延測試結(jié)果的平均值為最終結(jié)果。在相同條件下,將本文算法與PBFT、Raft和文獻[11]這三種共識算法進行時延對比分析,實驗結(jié)果如圖12所示。
從圖12可以看出,四種算法在節(jié)點數(shù)量較少時的時延差別不大,都隨著共識節(jié)點數(shù)量的增加而逐步上升,傳統(tǒng)PBFT的共識時延隨著系統(tǒng)中節(jié)點數(shù)量的增加呈指數(shù)級增長,而Raft的時延是四種算法里增長最緩慢平穩(wěn)的。相比PBFT,CD-PBFT平均時延降低了68.3%。PBFT復雜的通信過程和惡意節(jié)點導致的頻繁視圖更換使得節(jié)點數(shù)增加時時延快速增大。由于文獻[11]與CD-PBFT都采用了分組策略優(yōu)化節(jié)點間的通信量,系統(tǒng)的時延都上升緩慢,相較于文獻[11],CD-PBFT呈現(xiàn)出上升的趨勢,但由于共識流程是混合共識,隨著節(jié)點數(shù)的增加,CD-PBFT的時延明顯低于文獻[11]。
另外,為了分析出CD-PBFT在不同場景下共識時延的變化情況,本實驗通過控制分組數(shù)與組內(nèi)節(jié)點數(shù)進行了測試,結(jié)果如圖13所示。
從圖13可以看出,對于CD-PBFT控制分組數(shù)增加組內(nèi)節(jié)點數(shù)和控制組內(nèi)節(jié)點數(shù)增加分組數(shù)這兩種情況,共識時延都呈現(xiàn)逐漸上升的趨勢,且隨著節(jié)點總數(shù)增加,控制組內(nèi)節(jié)點數(shù)(組內(nèi)節(jié)點數(shù)為4)比控制分組數(shù)的共識時延會更高。這是因為隨著節(jié)點總數(shù)增加,保持組內(nèi)節(jié)點數(shù)不變(組內(nèi)節(jié)點數(shù)為4),增加分組數(shù),會造成PBFT共識的節(jié)點增多,進而增加了共識時延。而保持分組數(shù)不變(分組數(shù)為8),只增加組內(nèi)節(jié)點數(shù),也會造成共識時延的增加,同樣是增加總節(jié)點數(shù),由于增加分組數(shù)實際上是擴大了PBFT共識節(jié)點數(shù),增加了PBFT階段共識耗時,所以保持組內(nèi)節(jié)點數(shù)不變比保持分組數(shù)不變會引起更高時延。實驗結(jié)果表明,CD-PBFT可以在節(jié)點規(guī)模擴大時仍然具有較高的共識效率。
4.3 吞吐量
吞吐量是指系統(tǒng)在單位時間內(nèi)處理的事務數(shù)量。為了驗證CD-PBFT的效率,與傳統(tǒng)PBFT和文獻[11]進行了比較,實驗測試了12、14、16、18、20、22和24個節(jié)點的三種算法的吞吐量,同樣,取多次測試結(jié)果的平均值為最終結(jié)果。吞吐量計算公式如下:
TPS=TransactionΔtΔt(17)
式(17)假設在Δt的出塊時間內(nèi)區(qū)塊能夠處理TransactionΔt條交易,系統(tǒng)中節(jié)點數(shù)量會對吞吐量有著很大影響。本實驗測試了不同節(jié)點數(shù)量情況下三種算法的吞吐量,實驗結(jié)果如圖14所示。從圖14可以看出,三種算法的吞吐量整體趨勢隨著節(jié)點數(shù)的增大而減小。CD-PBFT的吞吐量整體是最高的,PBFT的吞吐量是處于比較低的位置,相較于PBFT,CD-PBFT的平均吞吐量提高了126.8%。PBFT因為有較高的通信復雜度,并且需要全部節(jié)點參與共識導致吞吐量較低。且由于CD-PBFT引入的主節(jié)點選擇機制減少了視圖更換的次數(shù),在共識流程方面采用混合共識策略有效降低了通信開銷,所以CD-PBFT的吞吐量明顯高于文獻[11]及PBFT。不僅如此,與共識時延的測試相同,CD-PBFT同樣也進行了不同條件下的吞吐量變化實驗,結(jié)果如圖15所示。
從圖15可以看出,隨著節(jié)點數(shù)量變化吞吐量呈現(xiàn)的趨勢是不一樣的。第一種情況(控制分組數(shù),增加組內(nèi)節(jié)點數(shù))的吞吐量逐漸上升,第二種情況(控制組內(nèi)節(jié)點數(shù),增加分組數(shù))的吞吐量緩慢下降,且在節(jié)點數(shù)為32時,兩者吞吐量相同。這是因為對于CD-PBFT,控制分組數(shù)(分組數(shù)為8),適當增加組內(nèi)節(jié)點數(shù),節(jié)點并發(fā)度是影響的主要原因,算法的共識效率影響較小,TPS逐漸增大。當組內(nèi)節(jié)點數(shù)被控制在4,增加分組數(shù)時,共識效率是影響TPS的主要因素,因此分組數(shù)增加后,TPS逐漸下降。而當節(jié)點數(shù)為32時,兩種情況的分組數(shù)和組內(nèi)節(jié)點數(shù)分別相等。實驗表明,CD-PBFT確實具有比較好的性能,能更好地適用于對TPS有要求的聯(lián)盟鏈應用場景。
5 結(jié)束語
本文提出了一種基于通信延遲聚類和節(jié)點信譽的共識算法CD-PBFT,能夠在保障系統(tǒng)安全性的條件下,降低系統(tǒng)通信開銷并提升系統(tǒng)運行效率。本文采用CD-K-means聚類算法對節(jié)點進行分組,通過將通信延遲與歐氏距離相結(jié)合的方式,使各集群內(nèi)延遲達到最優(yōu),提高共識效率。同時,提出基于綜合評價的信譽模型,依據(jù)節(jié)點行為和延遲差異進行不同的信譽獎懲。最后,設計了新的主節(jié)點選擇機制,使主節(jié)點具有更高的安全性。實驗結(jié)果表明,該算法具有低時延高吞吐量的高效優(yōu)勢。在主節(jié)點選擇方面,與選擇信譽高節(jié)點為主節(jié)點的方式相比,其具有更好的穩(wěn)定性。但是本文算法在節(jié)點動態(tài)加入退出方面還有待進一步研究。未來將對算法繼續(xù)優(yōu)化,并在具體的應用領域中進行推廣應用。
參考文獻:
[1]Nakamoto S. Bitcoin: a peer-to-peer electronic cash system[EB/OL]. (2008) [2024-04-26]. http://bitcoin. org/bitcoin. pdf.
[2]Alsobhi H A, Alakhtar R A, Ubaid A, et al. Blockchain-based micro-credentialing system in higher education institutions: systematic literature review [J]. Knowledge-Based Systems, 2023, 265(1): 110238.
[3]Qu Zhiguo, Zhang Zhexi, Zheng Min, et al. A quantum blockchain-enabled framework for secure private electronic medical records in Internet of Medical Things [J]. Information Sciences, 2022, 612(1): 942-958.
[4]Tanwar S, Ribadiya D, Bhattacharya P, et al. Fusion of blockchain and IoT in scientific publishing: taxonomy, tools, and future directions [J]. Future Generation Computer Systems, 2023, 142(1): 248-275.
[5]Wu Ying, Wu Yanpeng, Guerrero J M, et al. Decentralized transactive energy community in edge grid with positive buildings and interactive electric vehicles [J]. International Journal of Electrical Power and Energy Systems, 2022, 135(1): 107510.
[6]Li Wangchun, Deng Xiaohong, Liu Juan, et al. Delegated proof of stake consensus mechanism based on community discovery and credit incentive [J]. Entropy, 2023, 25: 1320.
[7]Castro M, Liskov B. Practical Byzantine fault tolerance [C]// Proc of the 3rd Symposium on Operating Systems Design and Implementation. New Orleans: USENIX Association, 1999: 173-186.
[8]Yang Jian, Jia Zhenhong, Su Ruiguo, et al. Improved fault-tolerant consensus based on the PBFT algorithm [J]. IEEE Access, 2022, 10(1): 30274-30283.
[9]Liu Juan, Deng Xiaohong, Li Wangchun, et al. CG-PBFT: an efficient PBFT algorithm based on credit grouping [J]. Journal of Cloud Computing-Advances Systems and Applications, 2024, 13: 74.
[10]Zheng Xiandong, Feng Wenlong, Huang Mengxing, et al. Optimization of PBFT algorithm based on improved C4. 5 [J]. Mathematical Problems in Engineering, 2021, 4(1): 1-7.
[11]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.
[12]李俊吉, 張佳琦. 基于信譽機制的改進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.)
[13]李淑芝, 熊偉志, 鄧小鴻, 等. 基于完美二叉樹通信拓撲的拜占庭容錯共識算法 [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.)
[14]Micali S, Rabin M, Vadhan S, et al. Verifiable random functions [C]// Proc of the 40th Annual Symposium on Foundations of Computer Science. Piscataway, NJ: IEEE Press, 1999: 120-130.
[15]Liu Shannan, Zhang Ronghua, Liu Changzheng, et al. An improved PBFT consensus algorithm based on grouping and credit grading [J]. Scientific Reports, 2023, 13(1): 13030.
[16]Wu Xiaoxiong, Jiang Wangxi, Song Mingyang, et al. An efficient sharding consensus algorithm for consortium chains [J]. Scientific Reports, 2023, 13(1): 1-14.
[17]陳蘇明, 王冰, 陳玉全, 等. 基于節(jié)點分組信譽模型的改進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]. Application Research of Computers, 2023, 40(10): 2916-2921.)
[18]Yu Dengxiu, Xu Hao, Chen C L, et al. Dynamic coverage control based on K-means [J]. IEEE Trans on Industrial Electronics, 2022, 69(5): 5333-5341.