摘 要:隨著區(qū)塊鏈的廣泛部署,無人協(xié)同等延遲敏感型的應(yīng)用對區(qū)塊鏈系統(tǒng)的低時延需求日益提高。在協(xié)同場景下,區(qū)塊鏈節(jié)點通??绲赜虿渴穑?jié)點異構(gòu)性較強。在基于領(lǐng)導(dǎo)節(jié)點的拜占庭容錯(Byzantine Foult Tolerant,BFT) 共識協(xié)議中,不穩(wěn)定的或能力較差的領(lǐng)導(dǎo)節(jié)點將導(dǎo)致不必要的高延遲,并降低區(qū)塊鏈的可用性,特別是在資源有限的移動或傳感器網(wǎng)絡(luò)下。針對上述問題,提出了ε-LE,一種帶有網(wǎng)絡(luò)感知的領(lǐng)導(dǎo)選舉方法,基于節(jié)點到領(lǐng)導(dǎo)節(jié)點的通信延遲測量結(jié)果,采用ε-greedy 策略對領(lǐng)導(dǎo)節(jié)點進行選擇,使得當前性能較優(yōu)或網(wǎng)絡(luò)中關(guān)鍵位置的節(jié)點具有更高概率成為領(lǐng)導(dǎo)節(jié)點,從而優(yōu)化共識延遲。相較于AWARE 等方法,ε-LE 實現(xiàn)O (N) 的通信復(fù)雜度,更加適用于具備線性通信復(fù)雜度的共識協(xié)議。實驗結(jié)果表明,ε-LE 能夠選擇可優(yōu)化集群共識延遲的節(jié)點作為領(lǐng)導(dǎo)節(jié)點,在線性拓撲網(wǎng)絡(luò)中實現(xiàn)了約21% 的吞吐量提升。
關(guān)鍵詞:領(lǐng)導(dǎo)選舉;共識;拜占庭容錯;延遲感知
中圖分類號:TP319 文獻標志碼:A 開放科學(資源服務(wù))標識碼(OSID):
文章編號:1003-3106(2024)04-0826-09
0 引言
拜占庭容錯(Byzantine Fault Tolerant,BFT)共識協(xié)議通?;跔顟B(tài)機復(fù)制(State Machine Replica-tion,SMR)范式用于構(gòu)建可靠分布式系統(tǒng)。近年來隨著區(qū)塊鏈等大規(guī)模分布式系統(tǒng)的部署,BFT SMR協(xié)議也重新得到了廣泛的研究。
在一個跨地域的分布式系統(tǒng)中,不同節(jié)點的狀態(tài)是非對稱的,即節(jié)點的計算能力、任務(wù)負載和節(jié)點間通信延遲存在顯著的差異。然而,傳統(tǒng)的BFTSMR 協(xié)議[1-2]通常是消息密集型的,并且由于認證集合交集性質(zhì)被用于保證安全性,涉及大量的密碼學計算,使得共識協(xié)議的執(zhí)行占據(jù)了分布式系統(tǒng)延遲中的關(guān)鍵部分。在一些由許多移動或傳感器節(jié)點組成的系統(tǒng)中,各節(jié)點的計算能力和帶寬容量有限,但這類系統(tǒng)通常用于支撐大規(guī)模延遲關(guān)鍵型應(yīng)用,即應(yīng)用對系統(tǒng)低延遲的需求較高,如無人協(xié)同[3]等。因此,這類系統(tǒng)的共識協(xié)議面臨著低延遲和可擴展性的挑戰(zhàn)。
在基于領(lǐng)導(dǎo)節(jié)點的共識協(xié)議中,如HotStuff[2],存在一個節(jié)點具備與其他節(jié)點不對稱的身份,稱為領(lǐng)導(dǎo)節(jié)點,該節(jié)點負責將外部客戶端的請求打包生成提案并廣播。當領(lǐng)導(dǎo)節(jié)點收集到一定數(shù)量對該提案的投票后,生成對該提案的投票認證集合(Quorum Certificate,QC),再次進行廣播并推進共識進入下一個階段。因此,基于領(lǐng)導(dǎo)節(jié)點的共識協(xié)議性能表現(xiàn)依賴于認證集合的構(gòu)建速度;一個脆弱的領(lǐng)導(dǎo)節(jié)點在資源受限的場景下會成為協(xié)議性能的瓶頸。
現(xiàn)有的領(lǐng)導(dǎo)選舉方式通常分為靜態(tài)或動態(tài)2 種。在工程實踐中得到廣泛應(yīng)用的是靜態(tài)輪詢的方法,這種方法保證了領(lǐng)導(dǎo)選舉結(jié)果的公平性,但無法自適應(yīng)動態(tài)的系統(tǒng)狀態(tài)。部分動態(tài)選舉方法[4-5]更加關(guān)注安全性。近期一些相關(guān)的研究成果如ARCHER[6]、AWARE[7]通過監(jiān)控系統(tǒng)中的網(wǎng)絡(luò)消息延遲選擇領(lǐng)導(dǎo)節(jié)點。其中,ARCHER 測量客戶端到系統(tǒng)節(jié)點的延遲,而AWARE 更關(guān)注系統(tǒng)節(jié)點到節(jié)點間的通信延遲。然而,AWARE 是基于PBFT 的兩階段共識范式構(gòu)建的,可擴展性較差。盡管Nischwitz 等[8]嘗試將AWARE 應(yīng)用于HotStuff,但實際并不適配HotStuff 的通信模式。
本文提出了一種基于ε-greedy 策略的領(lǐng)導(dǎo)選舉方法ε-LE。ε-LE 的框架包括2 個階段:監(jiān)控階段和選舉階段。監(jiān)控階段完成對集群節(jié)點的狀態(tài)監(jiān)測與評估,并借助共識協(xié)議本身的一致性性質(zhì)使得評估結(jié)果保持全局一致;選舉階段基于評估結(jié)果,基于ε-greedy 的思想[9]對領(lǐng)導(dǎo)節(jié)點進行選擇,即以較高的概率(1-ε)選擇監(jiān)控結(jié)果較好的節(jié)點,同時以ε的概率從監(jiān)控結(jié)果較差的節(jié)點中選擇領(lǐng)導(dǎo)節(jié)點,從而保持對相對較差節(jié)點的觀測。在具體運行的共識實例中,節(jié)點通過多輪消息傳遞達成一致;執(zhí)行ε-LE 協(xié)議完成對相應(yīng)領(lǐng)導(dǎo)節(jié)點的監(jiān)控,并更新統(tǒng)計信息狀態(tài)。在觸發(fā)領(lǐng)導(dǎo)節(jié)點更換時,εLE 允許節(jié)點僅通過本地計算即可一致地決定下一輪的領(lǐng)導(dǎo)節(jié)點。只要共識的活性不被破壞,通過重復(fù)上述階段,系統(tǒng)能夠在不引入額外通信輪次開銷的前提下,持續(xù)地對節(jié)點延遲狀態(tài)進行監(jiān)測與評估,從而實現(xiàn)帶有網(wǎng)絡(luò)感知能力的領(lǐng)導(dǎo)節(jié)點選舉方法。此外,ε-LE 還盡可能保證領(lǐng)導(dǎo)選舉結(jié)果的不易預(yù)測性,以進一步提高系統(tǒng)的魯棒性。綜上,本文的主要貢獻有:
① 提出了ε-LE,一種基于ε-greedy 策略的延遲感知領(lǐng)導(dǎo)選舉方法,在基于領(lǐng)導(dǎo)節(jié)點的共識協(xié)議中,通過對節(jié)點和系統(tǒng)網(wǎng)絡(luò)狀態(tài)的感知,選擇較優(yōu)節(jié)點成為領(lǐng)導(dǎo)節(jié)點,從而提高共識系統(tǒng)的性能表現(xiàn)。同時,通過對ε-LE 分析與改進,提高其不易預(yù)測性,進一步提高系統(tǒng)的魯棒性。
② 在HotStuff 協(xié)議上對ε-LE 進行了實現(xiàn),并在資源受限的環(huán)境和多跳網(wǎng)絡(luò)下對ε-LE 進行了實驗測試。與原始選舉方法進行比較,實驗結(jié)果證明了ε-LE 的有效性。
1 相關(guān)工作
作為分布式系統(tǒng)的核心,共識問題[10-12]有超過40 年的研究歷史,旨在保證分布節(jié)點之間的一致性。在基于狀態(tài)機的分布式系統(tǒng)中,通常借助SMR協(xié)議解決SMR 問題,即節(jié)點直接對執(zhí)行的命令序列(可能是無限長的)順序達成一致。在系統(tǒng)集群規(guī)模確定的情況下,BFT 共識協(xié)議通常分為兩階段[13]:第一個階段是廣播階段,一個或多個[1,14]節(jié)點廣播提案;第二個是確定階段,節(jié)點通過多輪投票對提案進行最終確認與提交。
隨著區(qū)塊鏈技術(shù)的發(fā)展,近年來涌現(xiàn)了許多針對BFT 共識協(xié)議的優(yōu)化成果?,F(xiàn)有的工作聚焦于減少確定階段所需的通信復(fù)雜度,比如HotStuff[2]實現(xiàn)了線性的通信復(fù)雜度。在如HotStuff 這種基于領(lǐng)導(dǎo)節(jié)點的協(xié)議中,通常會先選擇一個節(jié)點作為領(lǐng)導(dǎo)節(jié)點,并且僅在發(fā)生系統(tǒng)超時或拜占庭行為時才替換領(lǐng)導(dǎo)節(jié)點。由于領(lǐng)導(dǎo)節(jié)點負責提案的廣播,其帶寬開銷和計算資源負載將顯著高于其他節(jié)點,因此很容易成為共識吞吐量的瓶頸。而HotStuff 中這一問題尤為突出,因為HotStuff 中節(jié)點的通信模式呈現(xiàn)星型拓撲,由領(lǐng)導(dǎo)節(jié)點收集和轉(zhuǎn)發(fā)投票集合。因此,領(lǐng)導(dǎo)節(jié)點的選擇將顯著影響共識協(xié)議的性能;在節(jié)點資源受限的跨地理分布的系統(tǒng)中,上述問題更加顯著。
Byzcoin[15]和Kauri[16]等方法通過將集群通信拓撲改為樹狀拓撲來緩解領(lǐng)導(dǎo)節(jié)點的瓶頸。盡管Kauri 借助流水線優(yōu)化來減輕對吞吐量的負面影響,但這種方法將增加每個共識輪次的共識延遲,因為樹狀拓撲會產(chǎn)生額外的通信輪次,從而增加完成單個廣播的延遲。這種方法難以滿足延遲關(guān)鍵型應(yīng)用中低延遲和實時性的需求。
選擇更好的領(lǐng)導(dǎo)節(jié)點是另一種比較自然的想法。領(lǐng)導(dǎo)選舉是分布式計算領(lǐng)域的經(jīng)典問題之一[17],也有許多對共識過程中的領(lǐng)導(dǎo)選舉進行優(yōu)化的研究成果[6,18-23]。Dripple 和Droopy 通過協(xié)調(diào)狀態(tài)分區(qū)與動態(tài)配置領(lǐng)導(dǎo)節(jié)點可選集合[21]來有效地降低跨地域分布式系統(tǒng)的延遲。另一種方法ARCHER[6]使用客戶端測量的端到端響應(yīng)時間來選擇BFT 系統(tǒng)的領(lǐng)導(dǎo)節(jié)點,但是,為了防止錯誤節(jié)點拖延常規(guī)共識消息,對探測的請求及時處理,從而降低測量準確度,需要額外的輔助機制對測量過程進行監(jiān)控。AWARE[7]根據(jù)節(jié)點到節(jié)點的延遲選擇領(lǐng)導(dǎo)節(jié)點并使用預(yù)測模型以最大限度地減少系統(tǒng)的共識延遲。Nischwitz 等[8]將AWARE 應(yīng)用于HotStuff時提出了進一步的優(yōu)化,通過閾值機制,防止領(lǐng)導(dǎo)節(jié)點更換過于頻繁,引入學習因子對測量的節(jié)點到節(jié)點延遲進行加權(quán)累加,而不是簡單地覆蓋。
然而,這些方法并不適合某些特定配置。首先,基于WHEAT[24]的AWARE 適用于具有全廣播通信模式的共識協(xié)議,可以在共識消息交換過程中實現(xiàn)點對點延遲的單方面測量。雖然AWARE 設(shè)計了主動監(jiān)測的方法,但在帶寬、計算資源等資源有限的場景下,主動監(jiān)測消息的發(fā)送和接收會帶來額外開銷。其次,在選舉階段,AWARE 根據(jù)清洗后的延遲矩陣模擬每個節(jié)點作為領(lǐng)導(dǎo)節(jié)點的共識延遲,并定期檢查是否有更好的節(jié)點來替換現(xiàn)有領(lǐng)導(dǎo)節(jié)點;即使引入固定閾值,這種方法依然缺少靈活性;導(dǎo)致這一問題的原因是PBFT 和WHEAT 等協(xié)議包含復(fù)雜的視圖更改協(xié)議。當視圖改變發(fā)生時,系統(tǒng)執(zhí)行視圖改變協(xié)議,這將嚴重影響系統(tǒng)的性能。考慮到現(xiàn)有方法不匹配資源受限環(huán)境和延遲關(guān)鍵型應(yīng)用的需求,ε-LE 利用如HotStuff 這類具備線性視圖變化特點的共識協(xié)議,及時觸發(fā)視圖變更,實現(xiàn)了靈活、自適應(yīng)的選舉機制。
2 協(xié)議介紹
2. 1 系統(tǒng)模型
ε-LE 協(xié)議面向基于領(lǐng)導(dǎo)節(jié)點的BFT SMR 共識協(xié)議。盡管ε-LE 并不限定于某一具體的共識協(xié)議,為了簡化描述,后續(xù)描述將假設(shè)基于HotStuff 協(xié)議。
ε-LE 系統(tǒng)由n = 3f + 1 個節(jié)點組成,標記為{p1 ,p2 ,…,pn },其中f 為系統(tǒng)中允許出現(xiàn)錯誤節(jié)點的最大數(shù)量,即假設(shè)F 為錯誤節(jié)點的集合,f≥ F 。因此整個系統(tǒng)由至少n-f 個正確節(jié)點與至多f 個錯誤節(jié)點組成,其中錯誤節(jié)點的行為可能是任意的,但其計算能力是有限的,即不能打破密碼學假設(shè)。錯誤節(jié)點的攻擊行為包括發(fā)送錯誤的信息或者不發(fā)送消息、盡可能地通過消息誤導(dǎo)其他節(jié)點或延遲消息發(fā)送等,在最差情況下,所有的錯誤節(jié)點會被攻擊者組織協(xié)調(diào)以統(tǒng)一攻擊系統(tǒng)。
系統(tǒng)的網(wǎng)絡(luò)模型假設(shè)任意2 個節(jié)點間存在可靠的點對點網(wǎng)絡(luò)連接,即節(jié)點發(fā)出的消息最終能被指定接受方收到。網(wǎng)絡(luò)消息是可驗證的,當節(jié)點發(fā)送消息時會使用私鑰進行簽名。假設(shè)錯誤節(jié)點無法偽造正確節(jié)點的簽名,從而保證正確節(jié)點的消息無法被錯誤節(jié)點偽造。ε-LE 采用半同步網(wǎng)絡(luò)模型[2],即存在一個已知上界Δ 和一個未知的全局穩(wěn)定時間(Global Stabilization Time,GST),在GST 后,任意2 個節(jié)點之間的消息傳遞將在Δ 時間內(nèi)完成。
在對系統(tǒng)模型進行定義后,下一節(jié)將基于該模型對協(xié)議設(shè)計思路及性質(zhì)進行介紹。
2. 2 問題分析與概述
在基于領(lǐng)導(dǎo)節(jié)點的共識協(xié)議中,領(lǐng)導(dǎo)選舉的過程是在每個共識實例開始時執(zhí)行的。每個節(jié)點執(zhí)行選舉協(xié)議并決定一個特定的節(jié)點作為當前視圖的領(lǐng)導(dǎo)。
在介紹ε-LE 之前,本節(jié)首先就領(lǐng)導(dǎo)節(jié)點對共識進度的影響及其原因進行分析。以事件驅(qū)動型Hot-Stuff 為例,該協(xié)議QC 生成過程如圖1 所示,其系統(tǒng)由4 個節(jié)點組成,記為p1 、p2 、p3 、p4 ;其中p1 、p2 、p3之間的網(wǎng)絡(luò)延遲相等,并且顯著低于它們與p4 之間的延遲。第k - 1 ~ k + 2 輪的領(lǐng)導(dǎo)節(jié)點分別是p1 、p2 、p3 、p4 。
每個領(lǐng)導(dǎo)節(jié)點只要收集到足夠的選票(紅色箭頭)并形成上一輪的QC,就會廣播自己的提案。因此,這些協(xié)議的性能取決于QC 形成的速度。QC 的大小根據(jù)共識配置而變化。在本例中,3 個投票消息可以形成一個QC。由于節(jié)點之間的消息傳輸延遲不同,不同節(jié)點作為領(lǐng)導(dǎo)節(jié)點時生成QC 的延遲也不同。由于QC 的大小通常小于節(jié)點總數(shù),因此即使是由誠實節(jié)點發(fā)送的一些投票也可能會被忽略(虛線箭頭)。顯然,若選擇p4 作為領(lǐng)導(dǎo)節(jié)點,不僅會增加該輪QC 的生成時間,還會延遲下一輪的開始時間。
ε-LE 使用消息延遲作為評估副本的指標。延遲不僅直接反映了消息傳遞系統(tǒng)中不同副本之間的網(wǎng)絡(luò)狀態(tài),還是進程計算資源和工作負載的高級抽象。具有網(wǎng)絡(luò)感知能力的ε-LE 方法滿足以下性質(zhì)[6]:
① 一致性:任意正確節(jié)點將會在同一輪中輸出相同領(lǐng)導(dǎo)節(jié)點;
② 容錯性:有限的錯誤節(jié)點無法完全控制選舉過程;
③ 有效性:領(lǐng)導(dǎo)節(jié)點的選舉結(jié)果能夠有效優(yōu)化平均共識延遲;
④ 適應(yīng)性:選舉方法能夠適應(yīng)動態(tài)的網(wǎng)絡(luò)環(huán)境和工作負載,當節(jié)點狀態(tài)發(fā)生變化時,可以自適應(yīng)調(diào)整選舉結(jié)果。
首先給出領(lǐng)導(dǎo)選舉方法的整體流程,如算法1所示。
其中,第1 ~ 2 行是監(jiān)控階段,通過對共識消息的分析,更新節(jié)點狀態(tài)與權(quán)重;第3 ~ 10 行是采用εgreedy 策略,基于評估權(quán)重對指定輪次的領(lǐng)導(dǎo)節(jié)點進行選擇。本方法結(jié)合具有線性視圖更換的共識協(xié)議特性,將領(lǐng)導(dǎo)節(jié)點的性能與狀態(tài)抽象為QC 構(gòu)建延遲,表示由該節(jié)點為領(lǐng)導(dǎo)節(jié)點時,該輪共識所消耗的時間。
2. 3 監(jiān)控階段
在具有線性通信復(fù)雜度的共識協(xié)議中,普通節(jié)點在一般共識流程內(nèi)只會與領(lǐng)導(dǎo)節(jié)點發(fā)生消息交換。當共識消息交換發(fā)生時,節(jié)點將對領(lǐng)導(dǎo)節(jié)點的狀態(tài)進行監(jiān)控,即執(zhí)行監(jiān)控階段。為簡化描述,記第k 輪領(lǐng)導(dǎo)節(jié)點為leader(k)。在監(jiān)控階段,節(jié)點通過單向測量獲得自身與被測節(jié)點之間的通信延遲信息。接下來本文將對單向測量的過程進行介紹。節(jié)點pi 在向leader(k)發(fā)送投票的同時,記錄其時間戳T1 ,記首次收到領(lǐng)導(dǎo)節(jié)點的回復(fù)時刻為T2 ,可以使用T2 -T1 作為鏈路延遲。如果超時,延遲將被設(shè)置為超時參數(shù)MAXlatency 以表示超時。然后節(jié)點pi 提交相應(yīng)輪次對leader(k)的測量延遲latencypi,leader(k),k。
被測量的領(lǐng)導(dǎo)節(jié)點可能會表現(xiàn)拜占庭行為影響測量結(jié)果,比如提前回復(fù)測量請求使得自身測量延遲低于真實延遲,從而在選舉階段獲得優(yōu)勢。為了避免被測節(jié)點的惡意行為對監(jiān)控階段造成影響,ε-LE 引入挑戰(zhàn)機制,即測量節(jié)點pi 在發(fā)送投票時會附帶一個“挑戰(zhàn)”;被測節(jié)點leader(k)需要解決挑戰(zhàn)并將“答案”附帶在回復(fù)消息中。挑戰(zhàn)及答案的實現(xiàn)形式可以通過隨機數(shù)和簽名的方式實現(xiàn)。由于領(lǐng)導(dǎo)節(jié)點一旦收集到2f+1 個投票信息就會廣播回復(fù)消息,新的提案中可能會不包含對部分正確節(jié)點的回復(fù)。注意到領(lǐng)導(dǎo)節(jié)點可以確定哪些節(jié)點的挑戰(zhàn)沒有被回復(fù),因此它可以單獨將回復(fù)發(fā)送給對應(yīng)節(jié)點。在這種情況下,即使是拜占庭領(lǐng)導(dǎo)節(jié)點也無法占據(jù)更主導(dǎo)的地位,因為對它來說最有利的行為是解決挑戰(zhàn)并立即回復(fù),否則相應(yīng)測量節(jié)點測得的延遲將增加并影響其后續(xù)評估結(jié)果。AWARE 中主動監(jiān)測的方法在線性通信開銷的共識中,每輪引入額外的通信開銷復(fù)雜度為O(N2 );ε-LE 在單輪的共識中引入額外的通信開銷復(fù)雜度為O(N);通過共識消息的捎帶,實際上每輪只會增加由領(lǐng)導(dǎo)節(jié)點發(fā)送的至多f 條點對點回復(fù)消息。
在單向測量發(fā)生的過程中,假設(shè)發(fā)起測量的節(jié)點是正確節(jié)點,否則測量是沒有意義的;因為在εLE 中,單向測量的目的是使節(jié)點能夠獲得自身與領(lǐng)導(dǎo)節(jié)點的通信延遲,并通過共識與其他節(jié)點一致地共享;惡意節(jié)點可以簡單地省略該階段,并通過提交任意偽造的測量值來發(fā)起攻擊,而不需要在單向的測量階段進行攻擊。為緩解惡意節(jié)點提交偽造測量值對領(lǐng)導(dǎo)選舉過程的影響,ε-LE 將對各節(jié)點通過共識提交的測量結(jié)果進行進一步的處理。
每個節(jié)點均會在本地維護延遲測量矩陣MN×N ,延遲評估向量l 與平均延遲latencyavg。其中,M 用于記錄已提交的測量延遲并輔助計算得到l。Mi,j表示測量節(jié)點i 測得的與被測節(jié)點j 之間的通信延遲,被初始化為:
li 表示節(jié)點i 的延遲評估信息,latencyavg 表示歷史領(lǐng)導(dǎo)節(jié)點被測得的平均延遲,l 與latencyavg 均初始化為0。當f+1 個針對leader(k)在第k 輪的點對點延遲測量結(jié)果被提交時,假設(shè)集合P 為提交該f+1 個測量結(jié)果的測量節(jié)點構(gòu)成的集合, P = f+1,批量更新Mpi,leader(k)為latencypi,leader(k),k,其中pi∈P。
提交單向測量結(jié)果的節(jié)點可能會表現(xiàn)拜占庭行為,從而影響后續(xù)選舉結(jié)果,比如提交低延遲測量結(jié)果,使得某一錯誤節(jié)點的延遲評估結(jié)果過低。為了緩解測量節(jié)點的惡意行為對選舉階段造成的影響。ε-LE 會對M 進行對稱化清洗,并通過2f+1 分位采樣來評估每個節(jié)點,最終生成延遲評估結(jié)果向量l。具體過程為,當Mj,i 為+∞ 時,不對Mi,j 進行覆蓋,因為這表示節(jié)點j 尚未提交對節(jié)點i 的測量結(jié)果;此時若Mi,j 不為+∞ ,則更新Mj,i 為Mi,j。當Mj,i 與Mi,j 均不為+∞ 時,采用下述公式進行更新:
Mpi,pk = max(Mpi,leader(k),Mleader(k),pi)。(2)
隨后,ε-LE 對延遲評估向量l 進行更新。以更新第k 輪領(lǐng)導(dǎo)節(jié)點leader(k)的延遲評估信息為例,為進一步緩解拜占庭節(jié)點惡意匯報的影響,ε-LE 將M 中leader(k)對應(yīng)的列向量元素升序排列,選擇第2f+ 1 個元素,記作latencyleader(k),根據(jù)下述公式對leader(k)的延遲評估信息進行更新:
lleader(k) = α·lleader(k) + (1 - α)·latencyleader(k), (3)
式中:α∈(0,1)為一個系統(tǒng)參數(shù),用于對節(jié)點的歷史延遲評估信息進行加權(quán)。之所以選擇加權(quán)而不是平均延遲的原因是,希望在減小網(wǎng)絡(luò)波動帶來的誤差的同時,減弱相隔過遠的輪次延遲信息的影響,且能夠使網(wǎng)絡(luò)條件變好的穩(wěn)定節(jié)點,在更短的輪次內(nèi)消除歷史延遲的影響,從而被選為領(lǐng)導(dǎo)節(jié)點。
GetWeight 過程將延遲評估向量l 映射為各個節(jié)點的最終權(quán)重。節(jié)點的最終權(quán)重與其延遲評估結(jié)果負相關(guān),即延遲越小的節(jié)點,權(quán)重越高。GetWeight 權(quán)重獲取算法如算法2 所示。
算法2 是一種最樸素的權(quán)重計算方法,該方法返回元素為二元元組(nodeid,weightnodeid )的有序列表;其中,元組的第一項為節(jié)點標識,第二項為節(jié)點權(quán)重,且數(shù)組中的元素按照weightnodeid 降序排列。weightnodeid 與lnodeid 負相關(guān)。該方法將最大延遲信息與節(jié)點延遲表現(xiàn)之差作為權(quán)重。因為各個節(jié)點維護相同的l,若latencyavg = 0,則說明不存在一個已被提交的塊,或僅有創(chuàng)世區(qū)塊被提交;否則當一個非創(chuàng)世區(qū)塊的區(qū)塊被確認時,其延遲信息也會被確認,從而被節(jié)點讀取,修改latencyavg;此時weighti 均為1,所有節(jié)點的權(quán)重相同。
此外,li = 0 意味著該節(jié)點還沒有被選為領(lǐng)導(dǎo)節(jié)點,或該節(jié)點提出的提案區(qū)塊還沒有被確認提交,此時將其延遲設(shè)為平均延遲,即權(quán)重為(MAXlatency -latencyavg),這樣做的原因有2 個:一方面,若直接設(shè)該節(jié)點的延遲為0,則將導(dǎo)致系統(tǒng)在前n 輪的領(lǐng)導(dǎo)選舉會幾乎遍歷全部節(jié)點,因為未被遍歷到的節(jié)點,其權(quán)重是最大的,從而使得系統(tǒng)在運行初期的表現(xiàn)會極差,尤其是當n 較大,且系統(tǒng)中網(wǎng)絡(luò)較差節(jié)點的數(shù)量較多時;另一方面,若設(shè)該節(jié)點的延遲為最大,則訪問到潛在更優(yōu)節(jié)點的概率會過低,將使得系統(tǒng)收斂到較優(yōu)節(jié)點的耗時可能會極大地增加。因此設(shè)置初始延遲為中間值,兼顧了系統(tǒng)的運行效率與收斂到較優(yōu)節(jié)點的速度。
2. 4 選舉階段
在獲得了有序的節(jié)點權(quán)重數(shù)組weight 后,可以基于weight 進行領(lǐng)導(dǎo)選舉。本文的領(lǐng)導(dǎo)選舉方法基于ε-greedy 的思想。首先,各節(jié)點以輪次信息為隨機種子生成隨機數(shù),以ε 的概率返回1,否則返回0。
coin ← rand(round,ε)。(4)
以round 為隨機種子,使得各節(jié)點在同一輪次能獲得相同的硬幣結(jié)果,進而保證后續(xù)領(lǐng)導(dǎo)選舉的一致性。rand 隨機過程以ε 的概率返回1,否則返回0。根據(jù)硬幣結(jié)果,獲得候選人列表:
當硬幣結(jié)果為0 時,即1-ε 的概率,選擇前f+1 個節(jié)點作為候選節(jié)點,而非具有最優(yōu)表現(xiàn)的節(jié)點,原因是為了防止系統(tǒng)中心化,選舉結(jié)果收斂到唯一的節(jié)點。當硬幣結(jié)果為1 時,即ε 的概率,選擇后n-f-1 個節(jié)點作為候選人。前f+1 個節(jié)點稱為強節(jié)點,剩余的n-f-1 個節(jié)點稱為弱節(jié)點。
最后,ChooseLeader 是一個加權(quán)采樣過程,即是在候選節(jié)點列表candidates 中,根據(jù)輪次round 選擇一個節(jié)點作為領(lǐng)導(dǎo)節(jié)點。在經(jīng)過上一輪的篩選后,candidates 要么是優(yōu)勢節(jié)點的集合,要么是弱勢節(jié)點的集合??梢酝ㄟ^最近提交歷史與輪次信息來提高選舉結(jié)果的不易預(yù)測性,但由于選舉階段是不依賴額外網(wǎng)絡(luò)通信的,因此計算過程必須是確定性的,從而保證分布式計算選舉結(jié)果的一致性。
3 協(xié)議分析
3. 1 安全性與活性
ε-LE 的安全性和活性由共識協(xié)議所保證,只要底層共識協(xié)議的安全性與活性,則選舉的安全性和活性都不會受到影響。
在安全性方面,由于節(jié)點測量的延遲數(shù)據(jù)通過共識達成一致,使得在同一輪次下,各節(jié)點對當前集群其他節(jié)點延遲評估結(jié)果是一致的;評估階段采用對稱化清洗與2f+1 分位采樣使得拜占庭節(jié)點無法確定性地控制選舉結(jié)果,保證了ε-LE 的容錯性;而選舉階段是一個基于輪次的確定性過程,因此ε-LE選舉結(jié)果能夠保證一致性。
在活性方面,由于選舉階段不引入額外的消息交換,只要共識協(xié)議的活性不被破壞,每一輪領(lǐng)導(dǎo)選舉就可以根據(jù)輪次與維護的延遲信息向量選出唯一且一致的領(lǐng)導(dǎo)節(jié)點,因此系統(tǒng)活性同樣不會受到影響。
結(jié)合選舉方法,拜占庭節(jié)點可能選擇的攻擊方式是提前預(yù)測領(lǐng)導(dǎo)節(jié)點并發(fā)起攻擊。因為ε-LE 的選舉結(jié)果有1-ε 的概率為前f+1 個節(jié)點,因此攻擊者可能會對具有潛在更高權(quán)重的節(jié)點發(fā)起攻擊。然而,ε-LE 的選舉結(jié)果會依據(jù)最近提交的區(qū)塊,在上一個區(qū)塊被提交前無法確定性預(yù)測,因此攻擊者只有在2 個區(qū)塊生成的間隔進行確定性攻擊,這樣能夠恰好選擇到下一輪領(lǐng)導(dǎo)節(jié)點的概率將小于1-ε/f+1 ,且隨著系統(tǒng)規(guī)模的擴大,這個概率會逐漸變小。
3. 2 網(wǎng)絡(luò)感知與不易預(yù)測性
ε-LE 能夠?qū)ο到y(tǒng)的網(wǎng)絡(luò)狀態(tài)進行感知。網(wǎng)絡(luò)感知的具體含義是系統(tǒng)能夠識別網(wǎng)絡(luò)條件更優(yōu)的節(jié)點,并使其具有更高概率成為領(lǐng)導(dǎo)節(jié)點,從而提升共識效率;若節(jié)點網(wǎng)絡(luò)情況發(fā)生了變化,如網(wǎng)絡(luò)情況好的節(jié)點系統(tǒng)也能夠在有限的時間內(nèi)發(fā)現(xiàn)并做出相應(yīng)的改變。ε-LE 用生成QC 所需時間作為一個節(jié)點網(wǎng)絡(luò)情況的量化指標,原因在于QC 的生成代表一輪共識的結(jié)束與新一輪共識的開始,是影響共識效率的關(guān)鍵因素。生成QC 耗時更短的節(jié)點,意味著與該節(jié)點最近的n-f 個節(jié)點完成投票所需時間更短,即在共識層面上該節(jié)點在網(wǎng)絡(luò)中占據(jù)關(guān)鍵位置。
感知節(jié)點網(wǎng)絡(luò)變化的能力可以用系統(tǒng)中弱節(jié)點的被選中概率來衡量,原因在于對一個節(jié)點進行網(wǎng)絡(luò)感知,需要獲得其生成QC 的耗時,而節(jié)點只有被選為領(lǐng)導(dǎo)節(jié)點才有資格生成當輪的QC。不妨假設(shè)在一般情況下,各節(jié)點權(quán)重的相對大小不會發(fā)生改變。此時前f+1 個節(jié)點中,每個節(jié)點被選中的概率為1-ε/f+1 ,后n-f-1 個節(jié)點中,每個節(jié)點被選中的概率為ε/n-f-1 = ε2f。此時考慮單個較弱節(jié)點被選中的期望輪次E = 2f/ε ,其中ε∈(0,1),一般取0. 1 等較小的數(shù)值,代表系統(tǒng)以較低的概率探索(exploit)較弱節(jié)點。同時可以得到,第k 輪時該弱節(jié)點一直沒有被選為領(lǐng)導(dǎo)節(jié)點的概率為:
式中:Xi 為節(jié)點i 從未被選為領(lǐng)導(dǎo)節(jié)點的事件,k 為當前提交的輪次,f 為拜占庭節(jié)點數(shù)上限。根據(jù)ε與系統(tǒng)規(guī)模的不同,概率也會相應(yīng)地變化。
圖2 對比了不同系統(tǒng)規(guī)模下,隨著輪次增加,節(jié)點未被選為領(lǐng)導(dǎo)節(jié)點的概率趨勢。從圖中可以看到,隨著輪次的增加,節(jié)點未被選中的概率逐漸趨于0。當f =32 時,系統(tǒng)規(guī)模n 至少為97,在第3 000 輪時,某一弱節(jié)點仍未被選為領(lǐng)導(dǎo)節(jié)點的概率為P(Xi round = 3 000)= (1-(0. 1/ 64) ) 3 000 ≈0. 91% 。不同于PoW[25]等基于證明的共識方法,BFT 共識協(xié)議的執(zhí)行效率遠高于基于證明的共識方法,在實際應(yīng)用中的輪次增長將會更快。因此,在節(jié)點的網(wǎng)絡(luò)情況將在有限的時間內(nèi)被系統(tǒng)感知。
綜上,ε-LE 在不破壞底層共識協(xié)議安全性與活性的基礎(chǔ)上,通過網(wǎng)絡(luò)感知機制實現(xiàn)了共識領(lǐng)導(dǎo)節(jié)點選舉的一致性、有效性與適應(yīng)性,基于采樣機制與ε-greedy 策略使得有限的錯誤節(jié)點無法完全控制選舉過程,保證了容錯性。
4 實驗驗證
ε-LE 適用于基于領(lǐng)導(dǎo)節(jié)點的BFT SMR 協(xié)議,本文在HotStuff 協(xié)議的基礎(chǔ)上對ε-LE 進行了實現(xiàn)。本節(jié)首先展示當節(jié)點延遲發(fā)生變化時協(xié)議選舉結(jié)果的變化,來展示其對動態(tài)網(wǎng)絡(luò)的適應(yīng)性;然后,在資源受限的環(huán)境中部署共識系統(tǒng),將它們組織成線性拓撲,并比較3 種選舉方法對共識系統(tǒng)吞吐量的影響;最后,在LAN 環(huán)境下對系統(tǒng)進行性能測試,驗證ε-LE 協(xié)議在一般條件下對共識系統(tǒng)性能的影響。
在第一個實驗中,共識系統(tǒng)部署在由交換機連接的4 臺服務(wù)器上;服務(wù)器配置為16 GB 內(nèi)存和Ryzen3700X CPU;每臺服務(wù)器運行1 個共識節(jié)點,記作p1 、p2 、p3 、p4 。在初始配置中,節(jié)點之間的延遲幾乎相同(大約20 ms)。運行340 輪后,對p3 端口帶寬進行限制,這增加了p3 與其他節(jié)點之間的消息交換延遲(約80 ms)。每輪的領(lǐng)導(dǎo)節(jié)點選擇結(jié)果如圖3 所示。當節(jié)點啟動并初始化時,p4 略有延遲,由于3 個正常節(jié)點即可推進共識進程,因此在前50 輪中p4 沒有成為領(lǐng)導(dǎo)節(jié)點。當系統(tǒng)正常運行時,在340 輪之前,選舉結(jié)果是均勻分布的。經(jīng)過340 輪后,可以看出,當p3 的延遲增加時,p3 在前幾輪中仍然多次成為領(lǐng)導(dǎo)節(jié)點,因為εLE 需要等待系統(tǒng)提交關(guān)于先前選舉的監(jiān)控延遲,當延遲評估信息更新后,p3 被選為領(lǐng)導(dǎo)節(jié)點的概率下降??梢园l(fā)現(xiàn),p3 在延遲增加后的輪次中會偶爾成為領(lǐng)導(dǎo)節(jié)點,這是因為ε-LE 采用的ε-greedy 策略將嘗試對弱節(jié)點進行采樣,以便在網(wǎng)絡(luò)狀態(tài)改善時重新選舉。實驗統(tǒng)計了每個節(jié)點被選擇的次數(shù),結(jié)果如圖4 所示。
在第2 個實驗中,共識系統(tǒng)以線性拓撲部署在4 個具有2 GB 內(nèi)存和2 核Ryzen 3700X CPU 的服務(wù)器上,用于驗證ε-LE 在資源受限環(huán)境下的有效性。該實驗使用虛擬路由器來模擬真實環(huán)境中基于基站轉(zhuǎn)發(fā)的通信模式,并對不同工作負載下的3 種領(lǐng)導(dǎo)選舉方法進行了對比測試。
在線性拓撲中的節(jié)點從左到右依次標記為p1 、p2 、p3 、p4 。相鄰節(jié)點之間的延遲約為20 ms。由于消息轉(zhuǎn)發(fā),p1 和p3 之間的延遲增加到大約40 ~50 ms。一條消息從p1 傳遞到p4 大約需要80 ms。由于系統(tǒng)由4 個節(jié)點組成,領(lǐng)導(dǎo)節(jié)點需要收集至少3 個投票消息才能形成QC。如果p1 是領(lǐng)導(dǎo)節(jié)點,它生成的QC 通常會包括p2 、p3 和它自己發(fā)送的選票。因此,p1 的延遲預(yù)期為40 ms,即p1 和p3 之間的消息延遲。當p2 成為領(lǐng)導(dǎo)節(jié)點時,它只需要直接收集鄰居的選票即可。因此p2 的預(yù)期延遲為20 ms,明顯小于p1 。由于對稱性,p3 和p4 的延遲分別與p2和p1 相同。
通過上面的分析,可以發(fā)現(xiàn)p2 和p3 就是該系統(tǒng)中相對的強節(jié)點。選擇p1 或p4 作為領(lǐng)導(dǎo)節(jié)點是最糟糕的選擇。采用領(lǐng)導(dǎo)節(jié)點固定為p1 時的吞吐量作為基準,在輪詢方法中,系統(tǒng)將依次選擇4 個節(jié)點作為領(lǐng)導(dǎo)節(jié)點,結(jié)果如圖5 所示。與最壞情況相比,輪詢方法的吞吐量提高了21% 。ε-LE 相比于輪詢方法的吞吐量進一步提升了23. 4% 。
ε-LE 在LAN 環(huán)境下對共識系統(tǒng)性能的影響如圖6 所示。結(jié)果表明,在LAN 等良好通信環(huán)境的情況下,ε-LE 帶來的額外開銷對性能的影響幾乎可以忽略不計。
5 結(jié)束語
本文提出了一種基于ε-greedy 策略的延遲感知領(lǐng)導(dǎo)選舉機制,通過對集群網(wǎng)絡(luò)狀態(tài)進行感知,當網(wǎng)絡(luò)波動時,ε-LE 會基于歷史延遲因子α 和ε 的配置,動態(tài)改變受影響節(jié)點的權(quán)重,在保證選舉結(jié)果一致性的前提下,使得能夠最小化集群共識延遲的節(jié)點有更高的概率成為領(lǐng)導(dǎo)節(jié)點,從而優(yōu)化共識性能。
最后,本文在HotStuff 協(xié)議的基礎(chǔ)上對ε-LE 協(xié)議進行了實現(xiàn)與實驗,實驗結(jié)果表明ε-LE 有效地通過優(yōu)化領(lǐng)導(dǎo)節(jié)點選擇實現(xiàn)了對共識吞吐量的提高。為進一步提高協(xié)議在實際生產(chǎn)環(huán)境中的實用性,將對不同網(wǎng)絡(luò)狀態(tài)下α 和ε 等系統(tǒng)參數(shù)的自適應(yīng)調(diào)整開展持續(xù)研究。
參考文獻
[1] CASTRO M,LISKOV B. Practical Byzantine Fault Tolerance[C]∥ OSDI’99:Proceedings of the Third Symposium onOperating Systems Design and Implementation. New Orleans:USENIX Association,1999:173-186.
[2] YIN M F,MALKHI D,REITER M K,et al. HotStuff:BFTConsensus with Linearity and Responsiveness[C]∥ Proceedings of the 2019 ACM Symposium on Principles ofDistributed Computing. Toronto:ACM,2019:347-356.
[3] 翁越男,魏小平,劉洋,等. 一種基于區(qū)塊鏈的無人機集群協(xié)作監(jiān)測框架設(shè)計[J]. 無線電工程,2022,52(7):1250-1259.
[4] CACHIN C,KURSAWE K,SHOUP V. Random Oracles inConstantinople:Practical Asynchronous Byzantine Agreement Using Cryptography[C]∥ Proceedings of the 19thACM Symposium on Principles of Distributed Computing.Portland:ACM,2000:123-132.
[5] CHEN J,MICALI S. Algorand[EB / OL]. (2016-07-05)[2023-11-22]. https:∥arxiv. org / abs / 1607. 01341.
[6] EISCHER M,DISTLER T. Latencyaware Leader Selectionfor Georeplicated Byzantine Faulttolerant Systems[C]∥2018 48th Annual IEEE / IFIP International Conference onDependable Systems and Networks Workshops (DSNW).Luxembourg:IEEE,2018:140-145.
[7] BERGER C,REISER H P,SOUSA J,et al. AWARE:Adaptive Widearea Replication for Fast and Resilient Byzantine Consensus[J]. IEEE Transactions on Dependableand Secure Computing,2020,19(3):1605-1620.
[8] NISCHWITZ M,ESCHE M,TSCHORSCH F. Raising theAWAREness of BFT Protocols for Soaring Network Delays[C]∥ 2022 IEEE 47th Conference on Local ComputerNetworks (LCN). Edmonton:IEEE,2022:387-390.
[9] SUTTON R S,BARTO A G. Reinforcement Learning:AnIntroduction[M]. Cambridge:MIT Press,1998.
[10] LAMPORT L. Time,Clocks,and the Ordering of Events ina Distributed System [J]. Communications of the ACM,1978,21(7):558-565.。
[11] PEASE M,SHOSTAK R,LAMPORT L. Reaching Agreement in the Presence of Faults[J]. Journal of the ACM(JACM),1980,27(2):228-234.
[12] SCHNEIDER F B. Implementing Faulttolerant ServicesUsing the State Machine Approach:A Tutorial[J]. ACMComputing Surveys (CSUR),1990,22(4):299-319.
[13] YANG L,PARK S J,ALIZADEH M,et al. DispersedLedger:Highthroughput Byzantine Consensus on VariableBandwidth Networks[C]∥19th USENIX Symposium onNetworked Systems Design and Implementation (NSDI22). Renton:USENIX Association,2022:493-512.
[14] MILLER A,XIA Y,CROMAN K,et al. The Honey Badgerof BFT Protocols [C]∥ Proceedings of the 2016 ACMSIGSAC Conference on Computer and CommunicationsSecurity. Vienna:ACM,2016:31-42.
[15] KOGIAS E K,JOVANOVIC P,GAILLY N,et al.Enhancing Bitcoin Security and Performance with StrongConsistency via Collective Signing[C]∥ Proceedings ofthe 25th USENIX Security Symposium. Austin:USENIXAssociation,2016:279-296.
[16] NEIHEISER R,MATOS M,RODRIGUES L. Kauri:Scalable BFT Consensus with Pipelined Treebased Dissemination and Aggregation [C ]∥ Proceedings of theACM SIGOPS 28th Symposium on Operating SystemsPrinciples. [S. l. ]:ACM,2021:35-48.
[17] FAVIER A,GUITTONNEAU N,ARANTES L,et al. Topology Aware Leader Election Algorithm for Dynamic Networks[C]∥ 2020 IEEE 25th Pacific Rim InternationalSymposium on Dependable Computing (PRDC). Perth:IEEE,2020:1-10.
[18] BESSANI A,SOUSA J,ALCHIERI E E P. State MachineReplication for the Masses with BFTSMART[C]∥201444th Annual IEEE / IFIP International Conference on Dependable Systems and Networks. Atlanta:IEEE,2014:355-362.
[19] VERONESE G S,CORREIA M,BESSANI A N,et al.EBAWA:Efficient Byzantine Agreement for WideareaNetworks[C]∥2010 IEEE 12th International Symposiumon High Assurance Systems Engineering. San Jose:IEEE,2010:10-19.
[20] AMIR Y,DANILOV C,DOLEV D,et al. Steward:ScalingByzantine Faulttolerant Replication to Wide AreaNetworks [J ]. IEEE Transactions on Dependable andSecure Computing,2008,7(1):80-93.
[21] LIU S Y,VUKOLIC′ M. Leader Set Selection for Lowlatency Georeplicated State Machine[J]. IEEE Transactions on Parallel and Distributed Systems,2016,28(7):1933-1946.
[22] DU J Q,SCIASCIA D,ELNIKETY S,et al. ClockRSM:Lowlatency Interdatacenter State Machine ReplicationUsing Loosely Synchronized Physical Clocks[C]∥201444th Annual IEEE / IFIP International Conference on Dependable Systems and Networks. Atlanta:IEEE,2014:343-354.
[23] NAVAROJ G I,JULIE E G,ROBINSON Y H. AdaptivePractical Byzantine Fault Tolerance Consensus Algorithmin Permission Blockchain Network [J ]. InternationalJournal of Web and Grid Services,2022,18(1):62-82.
[24] SOUSA J,BESSANI A. Separating the WHEAT from theChaff:An Empirical Design for Georeplicated State Machines[C]∥ 2015 IEEE 34th Symposium on ReliableDistributed Systems (SRDS ). Montreal:IEEE,2015:146-155.
[25] NAKAMOTO S. Bitcoin:A PeertoPeer Electronic CashSystem[EB / OL]. [2023 -11 -22]. https:∥bitcoin. org /bitcoin. pdf.
作者簡介
許津銘 男,(1999—),博士研究生。主要研究方向:分布式系統(tǒng)、區(qū)塊鏈。
蔡 亮 男,(1976—),博士,研究員。主要研究方向:區(qū)塊鏈、數(shù)據(jù)要素關(guān)鍵技術(shù)、元宇宙和信息安全。
孫 路 女,(1987—),碩士,工程師。主要研究方向:數(shù)據(jù)要素、區(qū)塊鏈技術(shù)應(yīng)用。
尹可挺 男,(1982—),博士,副研究員。主要研究方向:區(qū)塊鏈、數(shù)據(jù)要素。