



















摘 要:針對許可區塊鏈場景下實用拜占庭容錯(Practical Byzantine Fault Tolerance,PBFT) 共識算法通信開銷大、主節點選取隨意以及吞吐量低等問題,通過引入并優化信譽評分模型(Reputation Scoring Model,RSM)。提出了一種基于信譽分類的拜占庭容錯(Byzantine Fault Tolerance Based on Reputation Classification,RCBFT) 共識算法。定義RSM,依據節點的歷史共識行為所獲得的信譽評分排序對參與節點進行動態分類以及分級管理,提出基于信譽分類的多層次節點架構;在可信節點層中隨機選取節點來擔任主節點,優化主節點選取機制;設計了緩沖節點層類型轉換策略(Type ConversionStrategy for Nodes,TCSN),兼顧了環境等非主觀因素導致低信譽評分的誠實節點不能參與共識的問題,使得誠實節點盡可能多地參與共識,而拜占庭節點快速下降到最差類型中限制共識權限;RCBFT 共識算法還對傳統三階段共識協議進行優化,減少通信開銷,在確保容錯性的同時能夠提高算法性能。實驗分析表明,相較于PBFT 共識算法,RCBFT 共識算法能夠提升交易吞吐量,降低通信開銷與共識時延。
關鍵詞:區塊鏈;共識算法;信譽分類;拜占庭節點;性能提升
中圖分類號:TP311 文獻標志碼:A 開放科學(資源服務)標識碼(OSID):
文章編號:1003-3106(2024)04-0804-13
0 引言
區塊鏈本質上是一種去中心化的分布式賬本技術,用于記錄由沒有中央權威機構的節點維護的交易[1]。去中心化是區塊鏈技術帶來的一個獨特理念。在過去,人們都生活在一個中心化的環境中,往往受到各方組織的監督和管理。而在區塊鏈實現的去中心化的網絡環境中,沒有各種各樣的中心化組織的監督,每個節點之間是公平公正的。因此,需要每個節點之間達成共識,實現交易的合法性和區塊鏈的去中心化。
隨著區塊鏈技術在各行各業的發展與廣泛應用,區塊鏈的類別也越來越細化,不同分類依據會有不同的區塊鏈分類方式,同時不同的區塊鏈適配的共識算法也有所不同。根據不同應用場景下信任的不同構建模式,可以將區塊鏈分為兩大類:許可區塊鏈與非許可區塊鏈[2]。依據去中心化的程度,區塊鏈可以分為公有鏈、聯盟鏈以及私有鏈。許可區塊鏈包含聯盟鏈以及私有鏈,是由一組已知的、已識別的節點組成,這些節點不能完全信任彼此,只有被授權節點才可以加入區塊鏈網絡,并且每個節點所具有的權限也各有不同。這種事前建立信任的模式使得許可區塊鏈相比于非許可區塊鏈效率更高。在許多應用場景中,非許可區塊鏈完全開放、完全去中心化以及節點完全的自由進出的特性并不是必需的,其極低的效率更不能滿足實際的應用需求,因此許可區塊鏈在許多實際應用場景中成為高適用性的區塊鏈選型。只有把好的共識算法應用到合適的場景中,才能使其效益最大化。
共識算法是影響系統整體復雜程度、容錯效果和吞吐量的重要因素,具有不同的安全性和擴展性需求的系統所需的共識協議也不盡相同。對于非許可區塊鏈和許可區塊鏈而言,二者的節點準入程度、容錯要求、吞吐量以及網絡規模存在差異,共識算法在二者之間也產生了較大的區別。具體而言,非許可區塊鏈網絡對所有節點是完全開放的,一般具有很高的網絡規模,多采用PoX 類協議并配合激勵機制實現共識一致性;許可區塊鏈對相關節點限制了訪問權限,可以在一定程度上減少拜占庭事件的發生,因此可采用拜占庭類協議來構造信任模型。
在當前的許可區塊鏈應用場景,如物流、金融和供應鏈等對區塊鏈系統性能要求高的行業,需要處理大量的業務數據,但存在交易處理速度慢、吞吐量低等問題。因此,對適配高性能許可區塊鏈場景的共識算法設計變得尤為重要。
2018 年,Lei 等[3] 針對實用拜占庭容錯(Practical Byzantine Fault Tolerance,PBFT)算法很難及時識別和刪除故障節點、主節點容易受到攻擊以及節點之間的平等關系不適用于某些現實場景等問題,通過對節點行為的信譽評估,提出了一種基于信譽的拜占庭容錯算法RBFT,實現對共識過程中惡意節點的容錯處理,避免拜占庭錯誤,確保系統的穩定運行。在投票過程中,如果檢測到節點有任何的惡意行為,都會降低節點的信譽,并且較高信譽的節點成為主節點的機會更大。實驗結果表明該算法獲得了較好的性能,保證了系統的安全性和可靠性。但該算法仍然維持PBFT 的三階段共識,具有較大的通信開銷,可擴展性較差,而且并未考慮環境等客觀因素造成節點信譽偏低的情況。
2019 年,Gao 等[4]在PBFT 算法的基礎上引入特征信任的概念以構建可信任共識組,提出了基于特征信任(Eigen Trust)模型的優化PBFT 共識算法———TPBFT,根據節點間的交易行為來評估節點的信任程度,并選出網絡中的高信任值的節點來構建共識組,該算法降低了通信復雜度,提高了共識效率。雖然該算法降低了視圖的切換頻率和通信的復雜度,但并未考慮到主節點是拜占庭節點的情況。甘俊等[5]針對PBFT 算法靜態的網絡結構、主節點選取隨意和通信開銷較大等問題,提出了EPBFT 共識算法。通過巧妙設置節點的生命周期,允許節點動態出入,并結合最長鏈原則優化選主方式,具有良好的實用性和有效性,但只能應用于節點較少的場景。
2020 年,宋哲[6]聚焦于共識算法的性能提升,也引入了信任機制的概念來改進PBFT,根據不同信譽值的節點被選為主節點的概率不同,測試結果表明其設計的CPBFT 算法有較好的時延和吞吐量,擁有較小的通信開銷,可以適應大部分高性能區塊鏈應用場景。雖然CPBFT 算法限制了一些惡意節點的共識參與,但是低信譽值的節點依然有可能成為主節點,而且信譽值較低的節點可以繳納一定的保證金來提升自己成為主節點的概率,因此當惡意節點認為所獲得的收益超過保證金時,惡意節點就會做出利己的惡意行為,而如果某個節點長期擁有大量的保證金,就會導致系統中心化,背離區塊鏈去中心化思想,該系統仍然存在共識延遲、共識效率等問題。
2021 年,周藝華等[7]針對哈希圖(Hashgraph)共識算法[8]穩定性差、共識過程復雜,以及易受節點性能、帶寬等影響的問題,在Hashgraph 共識算法中引入信譽度模型以評估節點的性能,與獎勵機制結合來監管并激勵節點參與共識,同時引入領導人縮減共識過程,降低算法復雜度,引入可驗證隨機函數(Verifiable Random Function,VRF)保障領導人選取的不可預測性。實驗結果表明,該算法縮短了交易時間,提高了系統穩定性。Hashgraph 是采用了有向無環圖(Directed Acyclic Graph,DAG)結構的經典共識應用之一,許多研究人員也試圖通過將DAG 結構引入區塊鏈中對交易進行并發處理以達到性能提升的目的,如Li 等[9-10]提出的Conflux 系統,指出該系統與GHOST[11]具有相同的安全性,但并未具體論述和證明。
2022 年,陳潤宇等[12]針對PBFT 主節點選取隨意、通信復雜度高且易集中化等問題,提出RNVPBFT 共識算法,通過引入監督節點實現信息的中轉,同時采用隨機參數以增強系統去中心化,并設計動態信譽模型以區分節點是否誠實,在一定程度上對一致性協議進行了簡化。實驗結果表明該算法能有效地降低通信的復雜度,同時也能較好地解決去中心化帶來的問題。但該算法將所有投票結果記錄在一個節點中,雖然避免了節點之間過多的通信,但敵手很可能會集中攻擊該節點造成系統宕機。而且該算法區分拜占庭節點和誠實節點以信譽值0. 5 的分界閾值為判斷依據,劃分過于簡單,同時也并未考慮到環境因素所造成的節點非主觀惡意行為的情況。黃子鑫等[13]提出針對傳統PBFT 算法在監理數據共享系統應用中存在的主節點選取隨意、共識效率隨節點規模增大而不斷降低等問題,根據節點信任度評價模型對PBFT 進行改進,縮小共識群組規模降低通信復雜度,在保證共識安全的前提下,有效地提升了共識效率。陳潤宇等[12]提出一種基于信譽值投票與隨機數選舉的RNVPBFT 共識算法。增設初始記賬節點,降低選舉過程的通信復雜度以及提升選舉公平性,但是在三階段通信廣播中,存在2 次全網廣播,嚴重占用系統帶寬。
因此,提出了一種基于信譽分類的拜占庭容錯(Byzantine Fault Tolerance Based on Reputation Classification,RCBFT)共識算法。該算法針對傳統的PBFT共識算法的不足之處進行改進,通過引入信譽分類協議并優化信譽評分模型(Reputation Scoring Model,RSM),依據節點的歷史共識行為所獲得的信譽評分來對參與節點進行動態分類以及分級管理,提高了視圖切換安全性,同時對PBFT 共識算法的三階段共識協議進行優化,減少通信開銷,在確保容錯性的同時能夠提高算法性能。主要工作如下:
① 提出了一種基于信譽分類的多層次節點架構對區塊鏈網絡中的節點進行分布式的信譽評分管理。
② 設計了信譽分類協議(Reputation ClassificationProtocol,RCP),闡述了RSM、節點分類設計(Node Classification Design,NCD)以及緩沖節點層類型轉換策略等,并給出改進后的RCBFT 共識算法具體流程。
③ 通過仿真實驗將RCBFT 共識算法與PBFT共識算法在通信次數、交易吞吐量以及共識時延等方面進行了對比。
1 相關背景
拜占庭容錯(BFT)算法由Lamport 等[14]于1982 年提出。Lamport 證明了當背叛者數量小于等于f 且將軍總數N 大于3f 時,忠誠的將軍可以對命令達成一致,即N≥3f+1,算法復雜度為O(nf+1 )。然而,由于BFT 算法具有較高的通信復雜度,還沒有應用到實際場景中。直到Castro 等[15]于1999 年提出了PBFT 算法才將BFT 算法引入到工程領域。
PBFT 算法是基于投票的共識算法,也是目前使用最廣泛的許可區塊鏈共識算法之一。BFT 類算法在拜占庭節點作惡時仍能保證分布式網絡中數據的正確一致性。因此,BFT 共識算法對于區塊鏈技術的發展,保證區塊鏈分布式網絡中各節點數據的正常一致性和交易的有序進行具有重要意義。共識算法的通信復雜性、可擴展性、容錯性和性能將直接影響區塊鏈系統的性能[16]。
由于PBFT 算法是弱同步算法,因此假設區塊鏈網絡是異步網絡,該網絡中的節點廣播消息時可能會延遲廣播,但并不會一直延遲下去。假設網絡中節點總數為N,則可能存在f 個拜占庭節點,其中,N≥3f+1,算法的時間復雜度為O(n2 ),算法流程如圖1 所示。
PBFT 算法主要由一致性協議、視圖切換協議以及檢查點協議三部分組成[17]。一致性協議主要用來保證全網節點數據的一致性,通過PBFT 共識算法的核心部分三階段共識來實現;在運行一致性協議時,若主節點發生故障,則會觸發視圖切換協議來更換視圖;定時觸發檢查點協議以清理共識過程中節點儲存的通信消息與同步狀態等。
① 一致性協議
圖1 顯示了PBFT 一致性協議即三階段共識協議流程,其中包括客戶端節點C 和4 個共識節點,節點0 是通過輪換和選舉機制選出的主節點,節點1、2、3 為從節點(也稱為副本節點)。
② 檢查點協議
PBFT 算法設計了一種從日志中丟棄已執行請求的三階段消息的機制。當執行每k 個請求時,節點記錄執行這些請求所產生的狀態,稱為檢查點。當節點生成檢查點時,它會向所有其他節點廣播一條檢查點消息,并在其日志中收集來自這些節點的檢查點消息。在從不同節點收集2f+1 個相同的檢查點后,它可以證明檢查點的正確性。具有正確性證明的檢查點稱為穩定檢查點,節點可以從日志中丟棄序列號小于或等于它的所有三階段消息。
③ 視圖切換協議
當主節點發生故障時,視圖切換協議(ViewChange Protocol,VCP)可以通過變更當前視圖到新視圖以此保證系統活性。當三階段共識協議超時或系統的節點收到空塊時,觸發VCP 處理流程,切換到更高的視圖,即視圖編號加1,主節點也會隨之切換到下一個節點成為主節點。視圖切換超時觸發,可防止從節點無限期等待請求執行。
圖2 顯示了VCP 的具體流程,最開始節點0 是主節點,節點1、2、3 為從節點,此時視圖view = 0,當主節點0 出現故障時會觸發viewchange,此時視圖編號加1,即當前的新視圖view = 1,而主節點也隨之切換,原從節點1 變為新視圖的主節點。
當網絡中存在f 個拜占庭節點時,PBFT 算法依然能夠根據其他節點使得網絡達成共識,具有較高的共識效率。雖然PBFT 已經成為許可區塊鏈的主流共識算法,但該算法依然存在通信開銷大、主節點選取隨意、機制僵化和吞吐量低等方面的問題。
2 RCBFT 共識算法
針對PBFT 算法的不足之處,在PBFT 算法的基礎上進行改進,引入并優化RSM,提出了一種許可區塊鏈場景下基于信譽分類的BFT 共識算法———RCBFT 共識算法。首先定義RSM,然后依據節點的歷史共識行為所獲得的信譽評分排序來對參與節點進行動態分類以及分級管理,提出基于信譽分類的多層次節點架構。在可信節點層中隨機選取節點來擔任共識節點,優化主節點選取機制。
同時,設計了緩沖節點層類型轉換策略(TypeConversion Strategy for Nodes,TCSN),兼顧了環境等非主觀因素導致的低信譽評分節點(實際為誠實節點)不能參與共識的問題,使得誠實節點盡可能多地參與共識,而拜占庭節點快速下降到最差類型中,限制共識權限并列入黑名單。對PBFT 算法傳統的三階段共識協議進行優化,減少通信開銷,在確保容錯性的同時能夠提高算法性能。RCBFT 算法整體框架如圖3 所示。
2. 1 基于信譽分類的多層次節點架構
本節設計了基于信譽分類的多層次節點架構,并對區塊鏈網絡中的節點進行分布式的信譽評分管理,如圖4 所示,設計了RCP。RCP 主要包括RSM、NCD 以及TCSN 等。
2. 1. 1 RSM 定義
節點的信譽評分是基于多方面因素對節點進行綜合評估,包括節點的自身性能、可信度和穩定性等方面的表現,通過追蹤節點的歷史共識行為,實現對節點信譽度的整體評估。提出的節點信譽評分是從節點的自身情況以及歷史共識行為等方面綜合考慮而得出的。
節點的歷史共識行為評價由主節點完成。主節點在共識過程中通過收集其他共識節點對本輪共識的執行情況與最終的共識結果作對比,以此來評估該節點的共識行為,從而更新各個共識節點的信譽評分,并廣播新的節點信譽評分信息,實現信譽評分的網絡同步。分析節點在共識過程中的歷史行為,能夠更好地確定節點的信譽正負評分調整級別。
節點RSM 定義如下:
式中:節點信譽評分RSisum 由三部分組成,RS0 表示節點Ni 的基礎(初始)信譽評分,是對節點自身性能的評價;RSi 表示反映節點Ni 歷史共識行為的動態信譽評分,是通過節點Ni 在區塊鏈網絡中的具體共識表現以及和其他節點動態交互得到的信譽評分,包括了節點信譽正評分和信譽負評分兩部分;a 表示節點Ni 的基礎信譽評分所對應的權重,β 表示節點Ni 的動態信譽評分所對應的權重,f(x)表示時間衰減函數。
(1)基礎信譽評分
在共識過程中,每個節點因其自身的性能表現不同,在進行廣播通信、消息驗證以及存儲信息時也會有不同的表現。性能低的節點在共識中可能會降低共識效率,增加消息時延。因此,通過評估節點內存、處理器以及磁盤等具體情況,量化后進行基礎信譽評分的計算,既提升性能高的節點被選中的概率,又不忽視性能較低節點多次正常共識的表現。同時,對節點的基礎信譽評分取值范圍做出限制,使得節點之間不會造成“性能霸權”,讓低性能但誠實的節點也有獲得高信譽評分的機會。
節點Ni 的基礎信譽評分定義為:
式中:MCi、PCi、DSi 分別表示節點Ni 的內存容量、處理器內核數量以及磁盤存儲容量量化后對應的信譽評分,γ1 、γ2 、γ3 分別表示節點Ni 三個指標的信譽評分所對應的權值,RSgood、RSnormal 分別表示節點Ni的基礎信譽評分取值上下界。
(2)動態信譽評分
① 信譽負評分
區塊鏈網絡中的節點在歷史共識行為中可能存在3 種不可接受的行為,用UB 表示,其定義如下:
UB = {b1 ,b2 ,b3 }, (3)
式中:b1 表示節點延遲廣播所收到的信息,即節點存在延時轉發行為;b2 表示節點從未傳播所收到的信息,即節點存在崩潰宕機行為;b3 表示節點修改信息并廣播修改后的信息,即節點存在惡意篡改行為。
每種行為bi 對應不同的懲罰級別pi,pi∈P:
P = {p1 ,p2 ,p3 }。(4)
不同的懲罰級別的嚴厲程度不同:
p3 > p2 > p1 。(5)
在每輪共識過程之后會進行新一輪的信譽評分調整過程。具體而言,區塊鏈系統中給定節點Ni 的行為信息是從其周圍節點收集的。在每輪共識結束時,參與共識過程的節點通過HTTP 協議請求向主節點提供信息反饋。基于周圍節點的意見,節點Ni的信譽評分調整如下:
RSi = RSi - pi。(6)
換句話說,通過對節點原有信譽評分中減去pi來懲罰節點Ni。假設某個節點Ni 的原有信譽評分RSi = 5,懲罰級別P = {p1 = 1,p2 = 3,p3 = 5}。如果判斷節點Ni 參與了b1 行為,則其信譽評分將減少1。因此,節點Ni 更新后的信譽評分將是RSi = 4。如果節點Ni 被判斷為表現出行為b3 ,則其信譽評分將變為0。
② 信譽正評分
參與共識過程的節點根據其活躍度獲得獎勵。具體來說,節點間的活躍度可以通過衡量節點Ni 的的共識時間Ti 和平均共識時間Tavg 來評估。Tavg 定義如下:
式中:Nsum 為所有參與共識的節點總數。
如果一個節點的共識時間Ti 小于所有節點的平均共識時間Tavg,則其信譽評分將適當增加。如果節點向系統報告其他節點的惡意篡改或者崩潰宕機等行為,該節點將獲得相應的信譽評分作為獎勵。這種機制可以鼓勵節點積極地參與到系統的安全維護中來。這也能提高整個系統的安全性和魯棒性。主節點可以通過鏈上運行日志手動和自動驗證反饋信息。信譽評分更新公式如下:
RSi = RSi + rwRSi = RSi + rw, (8)
式中:rw 為獎勵分值。
節點的反饋信息包括它的鄰居節點的行為信息和它傳播接收到的消息的證據。主節點根據節點所有鄰居的反饋信息確定該節點的行為類型。大多數鄰居節點報告的行為類型最終會被采納。例如,假設節點Ni 有4 個鄰居節點,如果其中3 個鄰居節點報告節點Ni 沒有傳播消息,則主節點將節點Ni 的行為類型設置為b2 。如果節點報告鄰居節點的惡意行為,則反饋信息必須附有相應的證據證明,如收到消息的時間戳。主節點將識別這些證據并確定鄰居節點的行為,通過分析節點的行為和活動來調整節點的信譽評分。
(3)時間衰減函數
為了提高節點參與共識的誠實性和積極性,提高節點在網絡中的活躍度,在RSM 中加入了時間衰減函數f(x),使得節點近期共識行為對動態信譽評分更重要。具體表示為:
式中:k 表示區塊鏈系統已完成的總共識輪次,x 表示節點Ni 最近參與完成的共識輪次,底數a 表示衰減因子。每輪共識過程中都會存在一個時間衰減函數。
當x = k 時,即節點Ni 最近一輪參與完成的共識輪次與系統總共識輪次相等,此時f(k)= 1,表明節點Ni 前一輪的共識行為表現不會對其動態信譽評分產生衰減;當x = k-1 時,即節點Ni 最近一輪參與完成的共識輪次為k-1,第k 輪時并未參與共識,此時f(k-1)= a,動態信譽評分會附加衰減因子a,使得信譽評分降低。甚至如果節點Ni 在總共識輪次k 中只在第一輪參與共識,其他輪次都未參與,此時f(1)= ak-1 ,衰減程度更大,節點近期衰減程度示意如圖5 所示。
通過附上時間衰減函數這種方式可以使得節點努力在近期的共識輪次中積極參與,只要節點每次都參與最近一輪的共識,那么時間衰減函數一直都為1,從而使得自身的動態信譽評分不會受影響,提高了節點的活躍度與積極性。
2. 1. 2 NCD
一般情況下,當節點的歷史信譽評分很高時,表明該節點對多輪共識整體做出的是積極貢獻;相反,若節點的歷史信譽評分很低時,表明該節點對多輪共識整體做出的是消極影響,阻礙了共識過程,考慮該節點有作惡情況。因此,基于節點的歷史信譽評分可以對共識節點群進行分類,并對分類后的節點群進行分類分權限管理,不僅可以提升節點的積極性,而且能夠有效防止惡意節點被選為主節點,從而減少惡意節點參與共識帶來的通信損失,提高區塊鏈系統效率。
定義RSisum 代表節點每輪共識最終獲得的信譽評分,Ncategory 代表節點所屬類別,根據節點在區塊鏈系統中的共識行為增加信譽評分或減少信譽評分。基于信譽分類的多層次節點架構根據上一小節的信譽評分機制將所有節點分為5 類:A、B、C、D、E。其中,A 類代表高信譽共識節點,B 類代表候選的共識主節點,C、D 類代表普通共識節點,E 類代表惡意節點。而A 類也稱為可信節點層,D 類也稱為緩沖節點層,分類后的節點架構示意如圖6 所示。
節點類別Ncategory 具體定義如下:
式中:RSgood、RSaverage、RSnormal、RSaccepted 分別表示5 類節點信譽評分的分界閾值,A ~ E 從高到低分別代表節點類別高低。依據RSM 將節點劃分為5 類,賦予每類節點不同的權限。
當RSisum ≥RSgood 時,節點Ni 為A 類節點,稱為可信節點層。A 類節點信譽評分級別最高,優先擔任主節點。
當RSaverage ≤RSisum <RSgood 時,節點Ni 為B 類節點。當A 類節點被選擇完畢或者不存在A 類節點時,可以從B 類節點中選擇主節點。當RSnormal≤RSisum <RSaverage 時,節點Ni 為C 類節點。C 類節點由于信譽評分偏低不適合擔任主節點,但仍然可以作為從節點參與區塊共識。B 類和C 類節點統稱為初始節點層,即節點剛加入網絡時,根據自身性能評估得到的基礎信譽值在初始節點層中。
當RSaccepted ≤RSisum <RSnormal 時,節點Ni 為D 類節點。D 類節點信譽評分太低,疑似環境等非主觀因素造成信譽評分偏低,可以根據TCSN 策略使得D 類中的節點能夠快速向C 類和E 類2 類節點靠近,使得因環境等非主觀因素造成低信譽評分的誠實節點能夠快速回到C 類正常參與共識,而主觀作惡的惡意節點快速降到E 類被隔離起來,從而在初始節點層和惡意節點之間形成緩沖節點層。
當RSisum <RSaccepted 時,節點Ni 為E 類節點。E 類節點信譽評分最差,歸為惡意節點被限制權限,不能參與共識和同步環節。
NCD 不僅能夠提高節點的積極性,而且每次共識節點優先從較高的信譽評分節點層中選擇,能夠有效預防惡意節點被選為主節點,減少惡意節點參與共識帶來的通信損失以及視圖切換頻次,提高系統共識效率。
2. 1. 3 TCSN
當節點的歷史信譽評分低于初始節點層即為D 類時,很難對節點的好壞進行判別。這主要是因為有外部環境等非惡意因素的存在影響正常節點歷史信譽評分的異常下降,使得正常節點“看起來”很像惡意節點(其實不是),那么當這些非惡意因素被消除后節點的行為會趨于正常。此時為了區分D 類中的誠實節點與拜占庭節點,設計了TCSN,當D 類節點連續作惡時TCSN 會給其更低的信譽評分使得快速下降到E 類,歸為拜占庭節點;而當D 類節點連續正常共識時TCSN 會給其更高的信譽評分使得快速上升到C 類,從而正常參與后續的共識過程。具體的TCSN 定義如下:
式中:x 為D 類節點動態信譽評分的增長幅度,δ、ε為策略參數,c 為常量。TCSN 為初始節點層中受環境等影響的誠實節點提供共識緩沖與快速回歸通道,也能讓緩沖節點層中的惡意節點快速下落到E類,從而讓落在D 類的節點向兩邊快速分開。
2. 2 RCBFT 共識算法具體設計
RCBFT 共識算法針對當前PBFT 共識算法中存在的問題,基于信譽分類的多層次節點架構設計了RCP,提出了RSM,對網絡中的節點進行分類分級管理,優化主節點的選取,并采用RCP 來優化傳統PBFT 共識算法的一致性協議,減少了節點間的通信時間,增強了網絡的安全性,同時也提高了算法的性能。具體設計如下:
2. 2. 1 主節點選取策略
傳統PBFT 共識算法的主節點選取策略為:
i = vmodN, (12)
式中:v 為當前的視圖編號,N 為節點總數。
這種方式類似于隨機選取主節點,惡意節點被選中的概率接近于三分之一。當惡意節點成為主節點時會導致視圖被頻繁切換,增加系統時延,降低共識性能。
在網絡中選取信譽評分最高的或者輪流選取主節點都不能防止敵手預測并集中攻擊。為了保證網絡的安全性并結合NCD,主節點選取采用在網絡中最高類別的誠實節點群集中進行隨機選擇的策略,可以有效防止信譽評分最高的節點一直被選為主節點,從而避免該主節點成為被集中攻擊的對象。
2. 2. 2 一致性協議CA 優化
PBFT 共識算法時間復雜度為O(n2 ),在三階段通信廣播中,存在2 次全網廣播,嚴重占用系統帶寬。尤其是在commit 確認階段,節點之間會互相廣播commit 信息,目的是對視圖編號和消息序號進行一致性校驗,以防節點處于不同的視圖中。為了解決這個問題,將NCD 中除選好的主節點之外的信譽評分高的前n 個節點作為備用節點,存在備用節點表SNList 中,其中第一個節點稱為記錄員節點(Recorder Node,RN)。RN 會記錄主節點廣播的消息和消息所對應的序號,系統發生視圖切換后,可以在RN 中找到保存的信息,重新廣播。如果網絡中有其他節點的信譽評分超過備用節點表中的節點,則將節點插入表中,并將信譽評分低的節點從表中移除。
采用的RCP 機制,使得加入共識的節點穩定性和可靠性比較高,惡意節點會被控制權限,新選取出來的主節點是惡意節點的概率很小,再加上RN 能保證切換后的節點擁有相同的視圖編號,因此RCBFT 共識算法以PBFT 共識算法的三階段共識協議為基礎,結合基于信譽分類的多層次節點架構,將PBFT 共識算法三階段共識優化為二階段共識,減小通信開銷,提高共識效率。RCBFT 共識算法一致性協議流程如圖7 所示。
RCBFT 一致性協議具體優化如下:
①pre-prepare:預準備階段。主節點收到來自授權客戶端c 有效請求m 后,主節點向其他從節點廣播已簽名的pre-prepare 消息<<pre-prepare,v,n,d,rs>,m>,其中v 表示當前的視圖編號,n 表示主節點分配的序列號,d 表示消息m 的摘要,rs 表示主節點信譽評分級別。從節點會驗證消息簽名、摘要、視圖編號、序列號以及信譽評分級別是否大于或等于當前節點等。注意,在存在拜占庭節點的情況下,為了提供有效性,所有節點發送的所有消息都會被簽名。
② prepare:準備階段。一旦從節點從主節點處接收到有效的preprepare 消息,它就向其他節點廣播prepare 消息<prepare,v,n,d,i,rs>,其中,i 表示節點序號,其余符號含義同上。其他節點會驗證消息簽名、視圖編號、序列號以及信譽評分級別是否大于或等于當前節點等。如果節點收到2f+1 條來自不同節點(包括其自身)的有效的prepare 消息與pre-prepare 消息匹配一致時,則將消息直接返回給客戶端c,否則進入視圖切換,新的主節點會查詢RN 中記錄的信息并重新廣播。
③ reply:響應階段。節點發送reply 消息<reply,v,t,c,i,rs,r>給客戶端c,r 表示客戶端c 請求執行最終結果,其余符號含義同上。c 收到來自不同節點的f+1 條有效響應匹配一致時,說明已達成共識。
2. 2. 3 算法整體流程
為保證整個算法的效率,將2 次共識的時間間隔上限設置為Δt。假設網絡中存在n 個節點,將單個區塊包含交易數量上限設置為p,每輪共識生成區塊數量下限設置為q。圖8 所示為RCBFT 共識算法的流程,在許可區塊鏈網絡中,節點收到網絡上的交易數據后,都要向全網廣播交易,共識節點負責將交易數據放入自己的交易池,并分別封裝自己的區塊。
共識算法具體步驟如下:
① 節點觸發RCP 進行網絡初始化,按照T =λCT的周期執行RCP,其中CT 為檢查點協議的周期,λ 為周期系數,可以根據網絡節點數量進行調整,網絡中各個節點信譽評分為RSisum ,i = 1,2,…,n,并依據RSisum 將節點劃分為不同類別,不同類別的節點具有不同的權限,當節點NCD 結果為Ncategory時,進入相應的節點類別集合Ncategory Set。
② 在A 類集合ASet 中選出主節點,獲得視圖編號v,若沒有ASet,則依次往后面的類別集合BSet、CSet 進行主節點選取,并更新SNList,每次執行一致性共識之前或者經過Δt 時間后都會進行主節點選取。
③客戶端c 發布交易Txc,用私鑰PrivateKeyc 對Txc 進行簽名后,將Txc 向許可區塊鏈網絡進行全網廣播,共識輪次為R。
④ 網絡中的節點收到發來的Txc 時都會進行消息轉發,當共識節點收到Txc 后會用公鑰PublicKeyc進行交易驗證,驗證通過的交易會放在自己的交易池TransPool 中,驗證不通過則丟棄該交易。
⑤ 當共識節點的TransPool 中至少有p 筆交易后,結合前一個區塊哈希信息PrevBlockHash 構造當前的區塊Blocki,其中i 為區塊編號,進入下一步驟。
⑥ 主節點對這p 筆交易按時間戳排序,驗證交易合理性和合法性,以每個區塊p 筆交易進行區塊打包,生成區塊哈希BlockHashi,并觸發RCBFT 優化后的CA,向其他共識節點廣播preprepare 消息。
⑦ 其他共識節點收到preprepare 消息,驗證通過后向其他共識節點發送prepare 消息,并等待來自其他共識節點的prepare 消息。若驗證失敗,則懷疑主節點為拜占庭節點,并且不會再給其他節點發送共識消息,若t>Δt 或沒有接收到足夠多的prepare消息時,執行VCP 并重新選擇主節點,新的主節點會查詢SNList 中RN 記錄的信息并重新廣播,返回執行上一步。
⑧ 如果節點收到2f+1 條來自不同節點(包括其自身)的消息匹配一致時,則將消息直接返回給客戶端c,客戶端c 收到來自不同節點的f+1 條有效響應匹配一致時,說明此時已達成共識。
⑨ 共識完成后,節點對新的區塊鏈進行同步,清空TransPool 中已上鏈的這p 筆交易,同時區塊編號增1,即i = i+1,并更新節點RSisum ,同時周期執行檢查點協議釋放日志消息。
⑩ 本輪共識完成,R = R + 1,準備進入新一輪共識。
3 算法分析
3. 1 安全性分析
假設網絡中存在拜占庭節點數量為f,節點總數n = 3f+1。
安全性1:RCBFT 算法大大減小了拜占庭節點參與共識的概率。
證明:一般而言,如果一個節點可以正常地進行共識,不存在延時轉發、崩潰宕機以及惡意篡改等行為,那么這個節點的信譽評分就會處于一個比較高的水平,能夠分到A 類可信節點層,即使節點自身性能較差,但由于RCP 的設計,初始類別也至少為C 類,隨著正常共識行為的積累,也能慢慢升級類別,而不同類別有著相應的共識權限。如果節點偶爾出現宕機等因環境因素導致的非主觀惡意行為,信譽評分會按照相應規則減少,但結合RCP 中TCSN 策略對誠實節點信譽評分的增加力度,只要在之后能夠正常地參與到共識當中,那么它的信譽評分就會快速增加以回到初始節點層。與此同時,若發現節點出現惡意行為,則根據TCSN 策略對拜占庭節點的處罰力度,會使得節點迅速降到E 類,并對E 類惡意節點進行權限控制,使得共識過程中暴露出來的拜占庭節點逐漸減少,高信譽評分節點會逐漸增多。因此,RCBFT 算法采用的RCP 能夠大大減小拜占庭節點參與共識的概率。
安全性2:RCBFT 算法提高了共識過程中視圖切換的安全性。
證明:假設PBFT 共識過程中觸發VCP 的概率為p:
p = 平均出發VCP 的次數/總共識輪次。(13)
由安全性1 可知,RCBFT 算法采用的RCP 能夠大大減小拜占庭節點參與共識的概率,即可以有效防止拜占庭節點被選為主節點,那么RCBFT 由于主節點故障而導致視圖切換的概率為p1 ,且p1 <p。因此,RCBFT 算法的RCP 機制降低了拜占庭節點的共識參與,提高了節點誠實作為的積極性,也提高了共識過程中視圖切換的安全性。
安全性3:系統共識進程不會因為拜占庭節點的惡意行為而中斷,即RCBFT 算法具有活性。
證明:已知網絡中存在f 個拜占庭節點,由安全性1、2 可知,網絡的拜占庭節點數量是在逐漸減少的,視圖切換的概率也在減小。與此同時,如果主節點作惡或者因網絡問題宕機使得共識停滯,系統會根據VCP,開始新的共識,選取新的較高信譽評分的主節點,新的主節點可以在RN 中找到保存的信息,重新廣播,防止出現無限期的共識等待,進而使系統共識進程不會因為拜占庭節點的作惡行為而中斷,保持了活性。
安全性4:RCBFT 算法的安全性不會因commit階段的刪除而下降。
證明:
首先定義一些符號和術語:f 是系統中最多可以容忍的惡意節點數量。VCP 是一種視圖切換協議,可以通過變更當前視圖到新視圖以此保證系統活性。RCP 是一種信譽分類協議,可以優化傳統PBFT 共識算法的一致性協議,減少節點間的通信時間,增強網絡的安全性,同時提高算法的性能。
① 共識安全性
在RCBFT 系統中,采用RCP 來評估節點的歷史表現并對其進行信譽分類。通過RCP,系統能夠懲罰不誠實或低效的節點,降低其后續參與共識的概率。這減少了拜占庭節點干擾共識過程的可能性,增強了系統的共識安全性。
此外,通過VCP,系統能夠及時檢測到拜占庭節點或歷史表現較差節點擔任領導節點的情況,并進行必要的視圖更改。通過降低拜占庭節點或歷史表現較差節點擔任領導節點的頻率,系統能夠減小共識過程中出現異常的可能性,從而增強了共識協議的安全性。因此,通過RCP 和VCP 的組合,RCBFT 系統能夠在半同步模型下提供確定性的共識安全性保證。
② 共識活性
在RCBFT 系統中,通過VCP 確保系統中的正常節點能夠形成一個活躍的虛擬子網絡,即使在某些情況下需要進行視圖切換。通過VCP,系統能夠及時檢測到節點的異常,并進行必要的視圖更改以維護系統的活躍性。因此,采用RCP 懲罰不誠實的節點或低效的節點能夠使得系統保證共識活性。
3. 2 性能分析
對比PBFT 共識算法和RCBFT 共識算法在共識過程中所耗費的通信開銷。在共識過程中,2 種共識算法的通信開銷主要集中在CA 和VCP 這2 個協議上,因此主要從通信次數來定量衡量這2 個協議共識過程的通信開銷。
假設網絡中節點數量為n,PBFT 共識過程中觸發VCP 的概率為p。RCBFT 觸發VCP 的概率為p1 ,且p1 <p,通信次數統計用CommNum 表示,則有CommNumPBFT ≈(p+2)n(n-1),CommNumRPBFT =(n-1)(n+p1 n+1)。PBFT 共識算法和RCBFT 共識算法通信次數的比值為:
R = CommNumPBFT/CommNumRCBFT= (p + 2)n/n + p1 n + 1。(14)
取n∈[0,200],p1 = 0. 2,p1 <p,繪制在節點數不同以及觸發VCP 概率不同時通信次數的比值,通信次數比較如圖9 所示。
4 仿真實驗
實驗操作系統為Windows 11,硬件環境為處理器11th Gen Intel(R)Core(TM)i511320H @ 3. 20 GHz,機帶RAM 為16 GB,編譯器使用版本為1. 76. 0(usersetup)的VSCode,在Node. js v16. 14. 2 環境中采用JavaScript 編寫,結合WebSocket 技術實現節點之間的通信。
本實驗對惡意節點的設定為在共識過程中會不發送消息或故意發送錯誤消息的節點。為了觀察節點作惡情況以及TCSN 策略對節點的影響,在模擬測試中分別對10 輪共識過程中2 個惡意節點連續作惡以及2 個誠實節點初始受環境影響延時轉發與崩潰宕機等情況進行模擬,具體如圖10 所示。
如圖10(a)所示惡意節點連續作惡情況,節點1與節點2 作為惡意節點,因初始性能較好從而獲得較高的初始信譽評分被分為B 類節點,參與共識過程。節點1 與節點2 連續在第2 輪共識過程中作惡時,由于動態信譽評分p3 的調整并結合時間衰減函數,使得節點信譽評分降到(20,40),即歸為C 類節點。隨著節點的連續惡意行為的存在,節點的信譽評分幾乎呈線性遞減。當節點信譽評分降到(0,20)時,此時歸為D 類節點并啟動TCSN 策略,使得節點快速向E 類節點收斂。從圖10(a)可知,在信譽評分為D 時,節點從第5 輪進入D 類到第7 輪連續2 次作惡就會下降到E 類,被分類為惡意節點,該節點將不能參與共識過程,被限制權限。
如圖10(b)所示誠實節點因環境問題導致的非主觀作惡情況,節點3 和節點4 因自身性能較差被分為C 類,在第1 ~ 2 輪中節點4 因延時轉發行為、節點4 因崩潰宕機行為被降為D 類從而觸發TCSN策略。由于節點3 和節點4 在第3 輪環境改善后,信譽評分會快速增加。在第5 輪開始信譽評分線性增加,共識過程正常進行。
同時,為了觀察采用RCP 后的RCBFT 與PBFT共識算法在共識過程中惡意節點數量的變化,實驗將共識節點數量設置為10,其中拜占庭節點設置為2 個,即為前述的節點1 和節點2,如圖11 所示,當共識輪次進行到第7 輪時,RCBFT 算法中惡意節點的信譽評分低于0 時,節點被控制權限,不再參與共識,此時共識節點中的惡意節點總數為0,而PBFT沒有相應的節點選取與控制機制,惡意節點一直在網絡中參與共識。因此,RCBFT 算法在節點激勵與惡意節點控制上優于PBFT 算法。
共識時延是衡量算法性能的重要指標之一,具體是指完成一輪共識所需要的時間,即從發起客戶端請求的時間到完成共識的時間。共識時延越小,交易確認時間越短,達成共識的速度也越快。具體計算如下:
Tdelay = Tfinish - Trequest, (15)
式中:Tdelay 為共識時延,Tfinish 為完成共識的時間點,Trequest 為發起客戶端請求的時間點。
為了觀察節點數量對共識時延的影響,在模擬實驗中測試RCBFT 和PBFT 共識算法每輪共識生成一個區塊并且共識節點數量取4、7、10、13 和16時,共識時延隨節點數量的變化情況,如圖12 所示。
從圖12 可知,2 種BFT 類共識算法共識時延都會隨著節點數量的增加而增加,但RCBFT 共識算法的共識時延明顯低于PBFT 共識算法,這是因為PBFT 三階段共識的通信復雜度很高,節點之間兩兩通信耗費了很多時間。在節點數量從4 增加到16 的過程中,曲線斜率增大,PBFT 共識算法的共識時延增加速率明顯快于RCBFT 共識算法的共識時延增加速率,這主要是由于RCBFT 共識算法采用了RCP 改進,并優化了共識過程,通過信譽評分將節點分類管理,參與共識的節點具有較高的可信度。這些節點具有更好的可靠性與穩定性,有利于降低共識中發生錯誤的概率,提高了共識算法效率。
為了觀察RCBFT 與PBFT 共識算法的交易吞吐量變化,通過在模擬實驗中修改不同的參數設置來對比算法的性能。算法預先設置一輪共識生成一個區塊,固定區塊包含的交易數量,同時用多進程模擬區塊鏈網絡中的共識節點并且節點之間采用WebSocket 通信,每輪共識時一個節點會向其他各個節點發送數據。圖13 顯示了共識節點數量取4、7、10、13 和16 時,RCBFT 與PBFT 共識算法的交易吞吐量隨節點數量的變化而變化。
由圖13 可以看出,隨著節點數量的增加,RCBFT 和PBFT 共識算法的交易吞吐量均呈下降趨勢。這是因為隨著節點數量的增加,共識所需的時間也會增加。但是當網絡中的節點數量保持一致時,RCBFT 共識算法的交易吞吐量要優于PBFT 算法。RCBFT 共識算法的特點在于采用了RCP 協議使得信譽評分較高的共識節點才能參與共識過程,同時只需要進行兩階段通信。這些改進優化了系統的吞吐量。
5 結束語
提出了一種基于信譽分類的拜占庭共識算法———RCBFT。該算法針對傳統的PBFT 共識算法的不足之處進行了改進,通過引入信譽分類協議并優化RSM,依據節點的歷史共識行為所獲得的信譽評分來對參與節點進行動態分類以及分級管理,提高了視圖切換安全性,同時對PBFT 共識算法的三階段共識協議進行優化,減少通信開銷,在確保容錯性的同時能夠提高算法性能。實驗結果表明,與PBFT 共識算法相比,RCBFT 共識算法有著更高的交易吞吐量與更低的共識時延。
參考文獻
[1] CACHIN C, VUKOLIC' M. Blockchain ConsensusProtocols in the Wild[EB / OL]. (2017-07-06)[2023-08-15]. https:∥arxiv. org / abs / 1707. 01873.
[2] 曾詩欽,霍如,黃韜,等. 區塊鏈技術研究綜述:原理,進展與應用[J]. 通信學報,2020,41(1):134-151.
[3] LEI K,ZHANG Q C,XU L M,et al. Reputationbased Byzantine FaultTolerance for Consortium Blockchain[C]∥2018 IEEE 24th International Conference on Parallel andDistributed Systems (ICPADS). Singapore:IEEE,2018:604-611.
[4] GAO S,YU T Y,ZHU J M,et al. TPBFT:An EigenTrustbased Practical Byzantine Fault Tolerance Consensus Algorithm [J ]. China Communications,2019,16 (12 ):111-123.
[5] 甘俊,李強,陳子豪,等. 區塊鏈實用拜占庭容錯共識算法的改進[J]. 計算機應用,2019,39(7):2148-2155.
[6] 宋哲. 改進實用拜占庭容錯算法的區塊鏈系統設計與實現[D]. 桂林:桂林電子科技大學,2020.
[7] 周藝華,賈立圓,賈玉欣,等. 基于信譽度的Hashgraph共識算法[J ]. 計算機應用研究,2021,38 (9 ):2590-2593.
[8] BAIRD L. The Swirlds Hashgraph Consensus Algorithm:Fair,Fast,Byzantine Fault Tolerance [R / OL]. (2016 -05- 31)[2023 - 08 - 18 ]. https:∥ www. swirlds. com /downloads / SWIRLDS-TR-2016-01. pdf
[9] LI C X,LI P L,ZHOU D,et al. Scaling Nakamoto Consensus to Thousands of Transactions Per Second [EB /OL]. (2018 - 05 - 10)[2023 - 08 - 19]. https:∥ arxiv.org / abs / 1805. 03870.
[10] LI C X,LI P L,ZHOU D,et al. A DecentralizedBlockchain with High Throughput and Fast Confirmation[C]∥2020 USENIX Annual Technical Conference. [S.l. ]:USENIX,2020:515-528.
[11] SOMPOLINSKY Y,ZOHAR A. Secure Highrate Transaction Processing in Bitcoin [C]∥ Financial Cryptographyand Data Security(FC 2015). San Juan:Springer,2015:507-527.
[12] 陳潤宇,王倫文,朱然剛. 基于信譽值投票與隨機數選舉的PBFT 共識算法[J]. 計算機工程,2022,48 (6):42-49.
[13] 黃子鑫,黨建武,王陽萍,等. 基于改進PBFT 的區塊鏈工程監理數據共享模型[J]. 無線電工程,2023,53(2):298-307.
[14] LAMPORT L,SHOSTAK R,PEASE M. The ByzantineGenerals Problem[J]. ACM Transactions on ProgrammingLanguages and Systems,1982,4(3):382-401.
[15] CASTRO M,LISKOV B. Practical Byzantine Fault Tolerance [C ] ∥ OSDI ’99:Proceedings of the ThirdSymposium on Operating Systems Design and Implementation. New Orleans:USENIX,1999:173-186.
[16] LI W Y,FENG C L,ZHANG L,et al. A Scalable MultiLayer PBFT Consensus for Blockchain[J]. IEEE Transactions on Parallel and Distributed Systems,2020,32(5):1146-1160.
[17] 方維維,王子岳,宋慧麗,等. 一種面向區塊鏈的優化PBFT 共識算法[J]. 北京交通大學學報,2019,43(5):58-64.
作者簡介
高建彬 男,(1976—),博士,副教授。主要研究方向:區塊鏈理論與應用、網絡數據安全。
劉洋洋 男,(1988—),博士研究生。主要研究方向:區塊鏈隱私與安全。
夏 虎 男,(1981—),博士,副研究員。主要研究方向:區塊鏈理論與應用、大數據安全。
程 捷 男,(2003—),碩士研究生。主要研究方向:區塊鏈組網理論。
(通信作者)夏 琦 女,(1979—),博士,教授,博士生導師。主要研究方向:區塊鏈理論與應用、網絡數據安全、大數據安全。
基金項目:國家自然科學基金(U22B2029);四川省科技計劃項目(2023JDRC0001);基礎加強計劃技術領域基金項目(2021JCJQJJ0463)