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