999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于節點可信度的改進PBFT 算法

2023-08-24 06:48:22翟健宏
智能計算機與應用 2023年7期
關鍵詞:信息

韓 璐, 翟健宏, 楊 茹

(哈爾濱工業大學網絡空間安全學院, 哈爾濱 150001)

0 引 言

共識機制[1]作為區塊鏈[2]的核心技術,能夠在缺乏中央控制的網絡中,通過自組織、大規模協作的方式實現賬本的分布式一致性,也是區塊鏈通過技術手段而非中心化機構構建去中心化“信任”網絡的關鍵算法。 良好的共識算法[3]有助于提高區塊鏈系統的性能效率,對維護系統的穩定運行和節點相互信任起著重要作用。 然而,現有的共識算法各有優劣,普遍存在擴展性差、交易確認時間長、應用場景受限等問題,成為制約區塊鏈項目落地的主要因素[4]。

實用拜占庭共識算法(Practical Byzantine Fault Tolerance,PBFT)[5]作為目前聯盟區塊鏈使用較多的共識算法,不僅實現了節點之間狀態的信任,而且很大程度上降低了系統因拜占庭錯誤產生的巨大開銷[6],但存在對帶寬要求較高,節點數量固定等缺陷。 本課題對PBFT 算法在fabric 聯盟鏈[7]中的實現進行研究,利用PBFT 算法的特點,保證了網絡中節點的一致性。 通過部署鏈碼在docker[8]環境中對算法的性能進行檢測,并根據檢測結果對PBFT 算法進行改進。

本文對區塊鏈防作弊技術進行研究,提出了一種基于節點可信度的NRPBFT(node-reliabilitybased PBFT consensus algorithm)共識算法,主要貢獻如下:

(1)提出了NRPBFT 算法,采用選舉集群的方式,將所有的節點分成普通節點和共識節點。

(2)利用PBFT 算法的特性實現了共識過程的防作弊,同時優化了算法的性能,提高了算法的效率。

(3)利用20 個端口模擬區塊鏈節點,利用tcp實現數據在端口之間的同步,通過實驗驗證改進后的共識算法的可行性。

本文的組織結構如下:第1 節介紹了NRPBFT算法方案;第2 節闡述了代碼優化的過程及結果;第3 節結合實驗說明了該方案的可行性與高效性;第4節總結了全文,并討論了后續的工作與改進之處。

1 NRPBFT 算法方案

1.1 改進方法介紹

針對PBFT 算法存在問題的分析,結合調研的結果和文獻資料匯總,本節提出了一種NRPBFT 算法方案。 這個方案主要是從縮小網絡的規模的角度出發,利用選舉集群的方式,將所有的節點分成普通節點和共識節點。 利用節點可信度評估公式對節點的可信度進行評估, 并對節點的可信度進行排序,選可信度最高的前p個節點作為共識集群(2f≤p <3f,f表示網絡中惡意節點的數量)。 同時,對主節點的選舉做了一些改動,選取可信度最高的節點作為主節點,大大降低了惡意節點成為主節點的概率。主要從以下2 點進行改進:

(1)根據可信度將網絡中的節點分成2 種角色。普通節點只負責完成交易,共識節點集群中可信度最高的節點會成為主節點。 主節點接收客戶端的消息,在有p個共識節點的共識集群中進行廣播,對消息進行簽名排序后,廣播給其他所有節點。 節點收到至少p/2 個相同的消息,認為這個信息正確,寫入內存,并將確認信息回復給主節點。

(2) 采用可信度評估的方式來選舉共識集群和主節點。 在每次共識結束后,都需要根據可信度評估算法重新計算每個節點的可信度,這樣就實現了節點動態加入或者退出共識集群。 對于共識集群中作惡的節點,研究在評估的時候采取相應的懲罰機制,加上懲罰系數,降低其可信度評估結果。 這種方式不僅能降低主節點隨意選取帶來的風險,也能保證系統的動態性。

網絡拓撲設計如圖1 所示。

圖1 改進后PBFT 算法拓撲圖Fig. 1 Topological diagram of the improved PBFT algorithm

1.2 NRPBFT 優化算法流程

(1)客戶端c將請求信息發送到主節點,主節點驗證,提取消息摘要并簽名后廣播給所有共識節點,廣播的格式為<<PREPARE,n,S,D >,data >,其中PREPARE是命令名稱,代表信息處于的階段是主節點在共識集群中廣播信息階段,n是主節點為信息分配的序列號,S是主節點的簽名,D是主節點提取的信息摘要,data是待共識信息。

(2) 認證共識階段。 共識集群中的所有節點收到請求后,首先驗證交易簽名和摘要信息,驗證成功后將交易數據存儲到內存中,對信息進行簽名后,將信息廣播給所有的節點, 廣播信息格式為<<AUTHENTICATION,credit_i,n,S,D >,data >, 其中AUTHENTICATION是這一階段的命令名稱,credit_i是節點的可信度的值。 信息廣播到所有節點后,進入提交階段。 如果交易信息驗證不成功,則認為主節點可能出了問題,重新對主節點進行選舉。

(3) 提交階段。 所有的節點都會收到多個由共識節點發來的信息,節點接收到信息后,對簽名和序列號進行驗證,有大于等于p/2 個信息驗證成功后,將信息存儲到內存中,并向主節點進行提交。 信息提交的格式為<SUBMIT,n,S,D,i >,其中i是節點的編號。 主節點在一定時間內接收到2f+1 個一致的信息,認為提交階段完成,主節點將達成共識的信息發送給客戶端,完成共識。

算法的流程如圖2 所示。 NRPBFT 算法步驟具體如下。

圖2 改進的PBFT 算法流程圖Fig. 2 Flow chart of improved PBFT algorithm

算法1 新PBFT 算法

輸入主節點編號N0,P個共識節點(N1-Np),n - p個普通節點(Np+1,Nn),節點可信度的值credit - i,客戶端發送的交易信息data

輸出:節點對客戶端的reply

1:for 主節點N0接收客戶端發送的交易信息data

2:N0提取消息摘要D,對D簽名得到S,將信息廣播給共識節點,廣播信息格式為<<PREPARE,n,S,D >,data >,其中n是消息序列號

3:共識節點Np驗證交易的簽名和摘要

4:if 簽名S和摘要D驗證成功then

5: 共識節點Np將交易信息儲存到內存中

6: 共識節點Np對交易信息進行簽名,廣播給所有節點, 廣播格式為<< AUTHENTICATION,credit_i,n,S,D >,data >

7:else then

8: 觸發主節點更換協議,按照可信度排序更換主節點,重復步驟1

9: 普通節點Nn接收到共識節點Np的廣播信息,驗證交易的簽名和摘要

10:if 節點有P/2 個簽名S和摘要D驗證成功then

11: 普通節點Nn將交易信息儲存到內存中

12: 向主節點N0發送確認信息,信息提交的格式為<SUBMIT,n,S,D,i >,其中i是節點的編號

13:else then

14: 重新評估節點的可信度,重新選舉共識節點集群

15:if 主節點N0接收到2f+1 個一致的信息then

16: 主節點N0將確認信息提交給客戶端

17: end

18: else then

19: 觸發主節點更換協議,按照可信度排序更換主節點,重復步驟1

還要一值的是,這里的節點1 和節點2 均屬于共識節點,節點3 屬于拜占庭節點。

1.3 節點可信度計算模塊

節點可信度計算模塊是以往的研究中和研發團隊一起提出的方法。 可信度是信任的量化表示,表示一個節點中數據可以被另一節點接受的信任程度。 可以通過節點自身的行為來判斷節點的可信度。

將生成一個區塊的時間定義為一個評審周期,其中評審內容包括6 項,節點每接收到一個區塊會動態更新該表格中的礦工節點、該表格中的礦工節點、節點參與驗證的區塊總數、節點正確驗證的區塊數、節點最新打包區塊字段,每個周期結束后更新信任度和新的起始區塊字段,各參數設置見表1。

表1 模型參數設置Tab. 1 Model parameters settings

將表1 中各字段值帶入式(1)中進行計算,檢驗計算結果是否達到可信度閾值:

其中,表示第i個節點在當前評審周期的可信度;τ表示在一個評審周期內產生的區塊數;ω表示第i個節點積極參與爭奪記賬權并投票的區塊數。 對于在該評審周期內產生的第x個區塊,當第i個節點正常參與投票時,將νx設置為1,μx設置為0,否則νx設置為0,μx設置為1,σ是惡意投票對于節點可信度影響所占的比重,該值越大,懲罰權重越大。 研究可知,式(1) 主要用來衡量節點在當前評審周期內的表現情況。

由于式(1)基于logistics 模型[9]提出,而該模型在對數增長期間函數值增長較快,導致對數增長期間節點信任度相較之前值偏高,因此使用式(2)進行修正:

其中,trust(i)cur表示當前周期的信任度,trust(i)pre表示上個周期的信任度。 通過λ來對當前周期信任度計算進行修正,添加節點信任歷史相關性,該參數可由用戶定義。 研究可知,修正方法主要是中和了該節點在上輪評審周期中的表現情況一旦某個節點出錯,則在下一輪對該節點可信度進行評審的時候,惡意的節點會被乘以一個特別小的系數來降低下一輪評審中此節點的可信度。

1.4 方案分析

本方案的核心特點在于實現了一個基于可信度的PBFT 算法優化方案、即NRPBFT,該方案具有以下優勢:

(1)高可靠性:選可信度最高的前p個節點作為共識集群,在一定程度上保證了系統的安全性和可靠性。 研究中也對主節點的選舉做了一些改動,選取可信度最高的節點作為主節點,大大降低了惡意節點成為主節點的概率。 從節點接收到主節點的廣播信息后,首先會對消息的簽名、消息的序號和消息的摘要進行驗證,3 個信息都驗證通過后才能接收這個需要共識的內容,這一過程也大大地保證了信息的可靠性和安全性。

(2)高可用性:原本的PBFT 算法在進行共識的過程中需要經過1 次單點全廣播和2 次全點全廣播,基于可信度的PBFT 優化算法只需要經過一次一對多的傳輸、一次多對一的傳輸及一次全點全廣播。 區塊鏈中節點與節點之間的傳輸過程消耗的資源非常多,優化后的方法減少了節點與節點之間信息傳輸的次數,因此可以降低達成共識的時間且提升系統的性能。

(3)兼容性:本方案是對區塊鏈的共識算法進行改進,共識算法是區塊鏈的核心技術之一,可以在以太坊中、聯盟鏈、或者其他區塊鏈平臺中直接進行應用。

本方案的缺點是由于主節點一方面要接收來自客戶端的信息,另一方面還要對節點共識的結果進行統計并回復給客戶端,一旦節點數量非常大,主節點容易過載。 除此以外,如果主節點是惡意節點,會對整個系統的共識結果造成重大的影響,但是由于主節點是整個網路中可信度最高的節點,因此主節點是惡意節點的可能性大大降低。

2 NRPBFT 算法整體流程

本節以上一節提出的NRPBFT 算法方案為基礎,描述了NRPBFT 算法的整體流程,給出了更詳細的設計方案,包括一些關鍵模塊的實現方法和代碼分析,同時介紹了Hyperledger Fabric 的搭建,以及編寫鏈碼驗證算法改進的結果。

2.1 NRPBFT 算法整體流程

NRPBFT 算法按照運行過程可以分成2 部分。一部分是共識過程,另一部分是視圖更換過程。 一旦共識過程出現問題會立即觸發視圖更換過程。 對此擬展開研究分述如下。

(1)共識過程

①準備階段。 這一步主要目的是讓客戶端知道哪個節點是主節點。 在交易請求階段,客戶端將交易發送給所有節點,節點接收到交易信息后,驗證簽名,驗證成功后判斷交易是否為query 類型的交易,如果是,則執行智能合約,查詢本地賬本的余額信息并返回結果,這個過程就結束了。 如果是deploy 或invoke 類型的請求交易,則需要利用共識機制來得到結果。 對于需要共識的交易,普通節點是無法處理的,只有主節點可以接收并進行回復,因此,在交易請求階段相當于客戶端把需要共識的交易信息發送給了所有節點,在驗證階段,只有主節點能接收,也就是選出了主節點。 主節點接收到交易信息后,對信息進行編號,提取摘要并簽名后發送給共識集群中的節點進行共識,進入認證共識階段。準備階段拓撲見圖3。

圖3 準備階段拓撲圖Fig. 3 Topology diagram of preparation phase

②認證共識階段。 在認證階段,共識集群中節點收到主節點發送的信息后,對信息的簽名、摘要、編號進行驗證,驗證通過后放入內存,對信息進行簽名并打包生成提交報文,在整個網絡的節點中進行廣播,進入提交認證階段。 在任何一個階段如果驗證失敗或者接收信息超時,則認為主節點可能是惡意節點,觸發視圖更換協議對主節點和共識集群中的節點進行更換并重啟共識過程。 認證共識階段拓撲見圖4。

圖4 認證共識階段拓撲圖Fig. 4 Topology diagram of authentication consensus phase

在提交認證階段,共識節點將信息在整個網絡中進行廣播,普通節點收到廣播信息后,對信息的簽名、摘要、視圖編號進行驗證,驗證通過后放入內存,一旦普通節點收到了p/2 個驗證通過的提交認證消息,生成提交報文,提交給主節點,進入確認提交階段。 在任何一個階段如果驗證失敗或者接收信息超時,則認為主節點可能是惡意節點,觸發視圖更換協議對主節點和共識集群中的節點進行更換并重啟共識過程。

③確認提交階段。 確認提交階段拓撲見圖5。

圖5 確認提交階段拓撲圖Fig. 5 Topology diagram of confirmation commit phase

(2)視圖更換過程。 觸發節點更換的條件主要有以下幾點:

①過了指定時間,普通節點或者共識集群的節點未收到主節點的共識請求。

②信息的格式不合法。

③沒有在規定時間內完成主節點更換。

④在共識過程中,多個節點的視圖編號是舊的編號或者簽名摘要驗證失敗。

在NRPBFT 算法中,由原PBFT 算法根據節點編號順序選舉主節點改變為利用節點的可信度來選擇主節點,這種做法避免了主節點隨意選舉帶來的風險,同時大大降低了主節點成為惡意節點的可能性。

在主節點更換階段,視圖編號自加1 作為新的視圖編號,所有節點封裝ViewChange 報文,報文中封裝了各個節點的可信度和簽名,在網絡中進行廣播,如圖6(a)所示。

圖6 視圖更換拓撲圖Fig. 6 View replacement topology

節點接收到其他節點的廣播信息后,選出可信度最高的節點作為主節點,如果2f+1 個節點選出的可信度最高的節點是同一個,則認為這個節點就是下一個主節點。 在這里,每個節點都會計算除了主節點外可信度最好的p個節點,組成該視圖下的共識集群。 在主節點確認階段,新的主節點封裝newView報文并簽名,在網絡中進行廣播。 如此,新的主節點就更換完成,如圖6(b)所示,N2節點是可信度最高的節點,就會被選舉為下一個主節點,接下來重新進行共識過程。

2.2 NRPBFT 算法結構及實現

整個NRPBFT 算法的代碼各部分功能見表2。

表2 NRPBFT 各模塊功能表Tab. 2 Function table of each module of NRPBFT

下面對NRPBFT 算法的具體實現進行描述,包括數據結構的類型定義和相關的實現,還有關鍵變量和關鍵函數的調用過程。

(1)數據結構定義。 節點的定義如圖7 所示。其中,nodeID用來存儲屬于節點的編號,addr用來存儲節點的 ip 地址+端口號,rsaPrivKey和rsaPubKey分別存儲節點的公私鑰,credit存儲節點的可信度的值。

圖7 節點定義圖Fig. 7 Node definition graph

RPBFT 信息結構的定義如圖8 所示。 其中,node存儲的是上述的節點的數據結構信息,sequenceID存儲的是交易的序號,會隨著交易數量的增加而自增。Lock定義了一個鎖,在多線程操作的過程中可以保證獲取數據的一致性和準確性。messagePool、prePareConfirmCount、commitConfirmCount分別存儲消息本身、準備階段的消息和確認消息。isCommitBordcast是用來判斷是否進行過廣播的標志位,isReply是用來判斷是否回復信息給主節點的標志位。

圖8 RPBFT 信息結構定義圖Fig. 8 RPBFT information structure definition diagram

(2)變量定義。 該部分介紹在代碼中定義的全局變量及其含義。 變量定義見表3。 由表3 可知,nodeCount定義了節點的數量,根據這個變量值,生成nodeCount個節點的公私鑰對。nodeCredit定義了共識集群節點的數量,在共識過程中也是根據這個值判斷是否收到了所有共識節點的消息。clientAddr定義了客戶端的監聽地址,nodeTable和credit_nodeTable都是map類型的數據,分別存儲節點和地址的鍵值對及共識集群中的節點和地址的鍵值對。primaryNode記錄主節點的id,記錄每一個視圖下主節點的id。localMessagePool是一個未定義的數組,用于存儲客戶端發送的消息。start和end分別記錄算法的開始時間和結束時間,二者作差便可以得到算法的運行時間,prefixCMDLength是命令名稱的長度,憑借這個值取得消息的前12 位,分析前12位的消息即可得出目前處于共識的哪個階段。

表3 合約變量定義表Tab. 3 Contract variable definition table

(3)功能方法。 關鍵方法定義及介紹見表4。

表4 關鍵方法定義表Tab. 4 Key method definition table

3 實驗結果

3.1 實驗環境

本文的Windows 實驗環境的參數見表5,基于此環境配置,利用端口號模擬節點,實現了NRPBFT算法的運行。

表5 設備參數表Tab. 5 Equipment parameters table

運行上一節描述的NRPBFT 算法和原PBFT 算法,這里以4 個網絡節點為例,分別運行優化前后的算法。 在PBFT 算法中,N0是主節點,N1、N2、N3是普通節點。 在NRPBFT 算法中,設置4 個節點情況下,只能存在一個惡意節點,根據p的范圍為2f≤p <3f,這里選擇節點N1和節點N2組成共識集群,主節點為節點N0,節點N3是普通節點。

PBFT 算法4 個節點時的執行時間見圖9。

圖9 PBFT 算法執行時間Fig. 9 Algorithm execution time of PBFT

NRPBFT 算法4 個節點時的執行時間見圖10。

圖10 NRPBFT 算法執行時間Fig. 10 Algorithm execution time of NRPBFT

從上面的對比結果可以看出,本項研究對PBFT算法的修改可以有效減少節點之間達成共識的時間,提高了共識效率。 但是節點數量只有4 個的情況太過簡單,尤其是在NRPBFT 算法中,普通節點只有N3, 并不能很好地體現算法優化的程度。PBFT 算法的特點是隨著網絡規模的增大,通信時延呈指數增長,因此可以增大網絡規模做后續進一步研究。

將節點的數量分別設置成4 個、6 個、8 個、10個、12 個、14 個、16 個、18 個、20 個,查看在不同節點數量下算法改進前后達成共識所需的時間。 節點數量和達成共識的時間見表6。

表6 改進前后算法執行時間表Tab. 6 Algorithm execution schedule before and after improvement

將改進前和改進后的算法運行時間繪制在一張圖上,可以更直觀地看出改進前后性能的優化,節點數量和達成共識的時間對比如圖11 所示。

圖11 改進前后PBFT 算法執行時間與網絡規模關系圖Fig. 11 The relationship between the execution time of the PBFT algorithm and the network size before and after the improvement

通過實驗結果可知,NRPBFT 算法相比PBFT算法的改進效果比較明顯。 從整體上分析,在相同節點數量和相同交易信息的條件下,NRPBFT 算法的時延總是低于PBFT 的時延。 從趨勢上看,隨著網絡中節點數量的增加,網絡中節點與節點之間的通信數量增加,NRPBFT 算法和PBFT 算法的時延都增大了。 這時候影響算法效率的是節點之間的通信開銷,并且NRPBFT 算法減少通信次數的優點也體現出來了。 從圖11 中可以明顯看出,隨著節點數量的增加,NRPBFT 算法時延增長速度比PBFT 的時延增長速度慢。 在4 個節點1 筆交易的條件下,NRPBFT 算法的時延為10.063 8 ms,PBFT 算法的時延為16.709 6 ms,NRPBFT 算法相對PBFT 算法時延降低了39.77%。

為了說明其防作弊的特點,這里還需要模擬惡意節點,在網絡中節點總數為4 的情況下進行模擬。具體來說,N0為主節點,N1和N2為正常節點,N3為惡意節點,模擬的時候故意不開啟N3,模擬節點宕機的情況。

在PBFT 中,當不開啟N3節點的時候,經測試,節點依然可以達成共識,達成共識的時間見圖12。

圖12 有惡意節點時PBFT 算法執行時間Fig. 12 PBFT algorithm execution time when there are malicious nodes

在NRPBFT 中,當不開啟N3節點的時候,經測試,節點依然可以達成共識,達成共識的時間見圖13。

圖13 有惡意節點時NRPBFT 算法執行時間Fig. 13 NRPBFT algorithm execution time when there are malicious nodes

從圖13 可以看出,在N3為惡意節點的情況下,2 個都能達成共識,并且由于在4 個節點的情況下,如果有一個惡意節點,則剩余的節點都是共識集群中的節點,和PBFT 算法沒有區別,因此達成共識的時間也非常接近。 實驗結果說明,當網絡中存在f(n >3f) 個節點時,2 種算法都可以防止節點作弊,在規定時間內達成共識。

3.2 通信次數分析

除了通信時間上有了直觀改善,在通信數量上也減少了很多。 這里定義網絡中節點總數為n, 定義NRPBFT 算法中共識集群中節點數量為p。

在PBFT 算法中,核心有3 個階段。 在預準備階段,主節點將待共識信息進行廣播,這一階段的通信次數為n -1 次;進入到準備階段,每個節點進行一次廣播,一共n個節點,因此這一階段的通信次數為n(n -1);進入提交階段,依然是每個節點進行廣播,通信次數為n(n -1)。 因此,PBFT 算法總的通信次數為2n2- n -1。

在NRPBFT 算法中,核心階段也是有3 個。 在認證階段,主節點向共識集群中的節點發送待共識信息,這一階段的通信次數為p次;進入到共識階段,每個共識節點進行一次廣播,一共p個共識節點,因此這一階段的通信次數為p(p -1);進入確認階段,這里是共識節點和主節點在整個網絡中進行廣播,通信次數為n(p+1)。 因此,NRPBFT 算法總的通信次數為p2+np+n,這里p取(2/3)n,遇到小數上取整,即總通信次數為:(10/9)n2+n。

將節點的數量分別設置成4 個、6 個、8 個、10個、12 個、14 個、16 個、18 個、20 個,查看在不同節點數量下的通信次數。 節點數量和通信次數的關系見表7。

表7 改進前后算法通信次數表Tab. 7 Algorithm communication times table before and after improvement

將改進前和改進后的算法通信次數繪制在一張圖上,可以更直觀地看出改進前后的優化,節點數量和通信次數的時間對比如圖14 所示。

圖14 改進前后PBFT 算法執行時間與通信次數關系圖Fig.14 The relationship between the execution time of the PBFT algorithm and the number of communications before and after the improvement

通過實驗結果可知,NRPBFT 算法相比PBFT算法的改進效果比較明顯。 從整體上分析,在相同節點數量和相同交易信息的條件下,NRPBFT 算法的通信次數總是比PBFT 的通信次數少。 從趨勢上看,隨著網絡中節點數量的增加,網絡中節點與節點之間的通信數量都在增加,但是NRPBFT 算法中通信次數增加得比較緩慢。

3.3 ubuntu 環境下性能測試

編寫鏈碼,進行交易的初始化和轉賬操作,部署鏈碼,進行測試。 PBFT 算法共識時間的運算見圖15。 由圖15 可知,在采用原PBFT 算法的時候,交易轉賬共識所需要的時間為0.029 s。

圖15 PBFT 算法共識時間Fig. 15 Consensus time of PBFT algorithm

NRPBFT 算法共識時間的運算見圖16。 由圖16 可知,采用優化后的NRPBFT 算法的時候,交易轉賬共識所需要的時間為0.005 s。

圖16 NRPBFT 算法共識時間Fig. 16 Consensus time of NRPBFT algorithm

在采用原PBFT 算法的時候,交易轉賬共識過程的性能指標見圖17。

圖17 PBFT 算法性能Fig. 17 Performance of PBFT algorithm

采用優化后的NRPBFT 算法的時候,交易轉賬共識過程的性能指標見圖18。

圖18 NRPBFT 算法性能Fig. 18 Performance of NRPBFT algorithm

從圖18 可以看出, NRPBFT 算法的吞吐量更大,性能也提升了。

4 本文研究結論

4.1 共識節點數量取值證明

在本項研究中,選舉了p個除了主節點外可信度最高的節點組成共識集群,p的取值范圍是2f≤p <3f。 接下來,對p的取值范圍進行證明,說明為什么在這個范圍內可以保證系統中的節點正常達成共識。

要想證明P在2f≤p <3f的情況下能保證網絡在有f個惡意節點的情況下達成共識,首先要證明PBFT 滿足的如下條件:

證明假設節點總數為N,f為拜占庭錯誤節點,N滿足:N≥3f+1。

如果網絡中一共有N個節點,其中拜占庭節點的數量為f,那么非拜占庭節點的數量就是N - f。在共識的時候,如果一個普通節點收到N - f個信息,節點無法判斷這N - f個信息來自拜占庭節點、還是非拜占庭節點。 考慮最壞的情況,這N -f個信息中有f個信息來自拜占庭節點,在這種情況下,只有N -2f個信息來自非拜占庭節點。 對于這個普通節點,在收到2 種不同的信息,節點會按照少數服從多數的原則,選擇信息數量多的信息作為待共識信息。 因此,要想保證待共識信息是非拜占庭節點發送的信息,就需要保證N -2f >f,即N >3f,也就是N≥3f+1。

在NRPBFT 算法中,p的范圍是2f≤p <3f,在認證共識階段,主節點只會將待共識信息發送給p個共識集群中的節點進行共識。 由于這p個節點是網絡中除了主節點外可信度最高的p個節點,所以在一定程度上可以保證p個節點中拜占庭節點的數量比較少,也就是可以保證p - f >f,即p >2f。 在提交階段,p個節點會分別向N個節點發送信息,也就是進行p次單點全廣播的過程,當一個節點收到至少p/2 個相同的信息時,也就是至少f個相同的消息,顯然這些消息不可能全是惡意節點發出的,只能是非拜占庭節點發出的消息。 在確認階段的證明和PBFT 算法一致,這里不再重復。

由上述論證可以說明,在公式集群p的節點數量滿足2f≤p <3f時,NRPBFT 算法可以保證能在有f個惡意節點的情況下,網絡中的非拜占庭節點達成共識。

4.2 算法防作弊特性說明

接下來對算法的防作弊特點進行說明。 由于本項研究中默認惡意節點數量f和網絡中節點總數n之間滿足n >3f的關系,且默認誠實節點一定能正常進行共識,不會出現信息丟失和宕機等情況,因此,本算法一定可以抵御51%攻擊。

在區塊鏈中,DDoS 攻擊的主要目的是大量占用網絡中的節點資源,使得這些節點無法提供正常的服務,如果受害的節點過多,很可能會影響整個區塊鏈網絡的運行。 DDoS 攻擊是通過攻擊手段占用了受害者的大量資源,使得受害者不能提供正常服務。

在區塊鏈中,DDOS 攻擊主要是計算集群對網絡中的節點進行攻擊,占用節點資源,使得節點宕機,無法進行共識。 本課題中,最多只有f個節點可以遭受DDOS 攻擊,而剩余的n - f個誠實節點依然可以正常達成共識,不會對最后的結果造成影響。因此,本算法可以抵擋DDOS 攻擊。

拜占庭將軍問題所描述的正是共謀攻擊的情境,惡意節點聯合起來修改信息或者丟失信息,以此影響網絡中的節點達成共識。 在上述證明中,已經說明為什么PBFT 算法和NRPBFT 算法能夠在共謀攻擊的情況下達成共識,但是前提必須是n >3f,惡意節點的數量再多,就無法抵御共謀攻擊了。

女巫攻擊是一種專門針對聯盟鏈的攻擊,惡意節點可以偽裝自己的身份來進行攻擊。 由于PBFT機制的延展性不高,一般只能用在網絡規模小的網絡中,所以更易受到女巫攻擊。 在NRPBFT 算法中,對節點的可信度進行評估,選取可信度最高的節點作為主節點,除主節點外可信度最高的p個節點作為共識集群,核心的階段都在共識集群中進行,最后只需要將共識集群共識完成的信息發送給普通節點,避免了惡意節點過多參與共識過程,減少了惡意節點作惡的機會。

從以上分析可以看出,改進后的算法繼承了PBFT 算法的優點,且相對PBFT 算法更能抵抗女巫攻擊造成的影響,進一步防止了節點作弊。

5 結束語

在聯盟鏈中難以避免會有惡意節點的存在,在節點達成共識的過程中,惡意節點可以會散布不實信息,影響數據的一致性,尤其是在金融或者一些特殊應用領域,分布式系統需要確保一致性和正確性。使用PBFT 共識算法可以有效解決惡意節點的問題,但是PBFT 算法本身還存在性能和開銷上的問題。 本課題針對聯盟鏈中應用的PBFT 共識算法在部署鏈碼進行交易的過程中存在的問題展開了分析,通過部署鏈碼的方式實現交易,并根據交易過程中的性能和開銷對PBFT 算法進行改進。 提出了NRPBFT 算法,采用選舉集群的方式,將所有的節點分成普通節點和共識節點。 利用節點可信度評估公式對所有節點的可信度進行評估,并對節點的可信度進行排序,選可信度最高的前p個節點作為共識集群,選取可信度最高的節點作為主節點,大大降低了惡意節點成為主節點的概率。

未來的研究方向是將NRPBFT 算法進行進一步優化,進一步降低系統的消耗,提升系統的性能,或者考慮一些其他方法,來降低主節點的中心化風險。 除此以外,類似于RSA 這樣的簽名算法,簽名速度比較慢,可以考慮換成其他簽名算法來運行簽名過程和驗證過程。 還可以考慮其他的方式,使得在惡意節點數量更多的情況下,也能保證網絡中誠實節點達成共識。 以上所討論的問題,還有待后續進一步的研究。

猜你喜歡
信息
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
信息超市
大眾創業(2009年10期)2009-10-08 04:52:00
展會信息
展會信息
展會信息
展會信息
展會信息
信息
建筑創作(2001年3期)2001-08-22 18:48:14
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 77777亚洲午夜久久多人| 人人看人人鲁狠狠高清| 国产精品短篇二区| 欧美日韩亚洲综合在线观看 | 中文无码影院| 国产精品久久久久久久久kt| 国产精品99久久久久久董美香| 欧美黄网在线| 国产成人在线无码免费视频| 狠狠色狠狠综合久久| 无码精品一区二区久久久| 国产一级小视频| 国产日韩欧美一区二区三区在线| 国产福利影院在线观看| 五月婷婷伊人网| 亚洲一区二区黄色| 一本无码在线观看| 国产99在线| 亚洲区一区| 老色鬼欧美精品| 激情网址在线观看| 天堂va亚洲va欧美va国产 | 激情综合网址| 国产乱人乱偷精品视频a人人澡| 亚洲日韩精品无码专区97| 一边摸一边做爽的视频17国产| 亚洲嫩模喷白浆| 永久免费av网站可以直接看的| 四虎影视国产精品| 亚洲高清日韩heyzo| 九九九精品成人免费视频7| 色网站在线视频| 亚洲网综合| 色丁丁毛片在线观看| 伊人久久福利中文字幕| 亚洲色图欧美激情| 日本久久网站| 无码视频国产精品一区二区 | 91视频首页| 国产精品亚洲一区二区在线观看| 国产麻豆va精品视频| 亚洲国产成人精品一二区| 国产精品亚洲一区二区三区在线观看| 亚洲欧美自拍一区| 日韩精品无码一级毛片免费| 精品成人一区二区三区电影| 婷婷色狠狠干| 高清免费毛片| 亚洲AⅤ无码日韩AV无码网站| 欧美精品影院| 在线欧美一区| 五月激情综合网| 天堂在线www网亚洲| 不卡的在线视频免费观看| 9久久伊人精品综合| 国产成人亚洲精品蜜芽影院| 国产凹凸一区在线观看视频| 99久久精品国产麻豆婷婷| 操国产美女| 亚洲VA中文字幕| 国产爽妇精品| 国产区在线观看视频| 99久久精品免费看国产免费软件| 色综合久久88色综合天天提莫| 人人91人人澡人人妻人人爽| 就去色综合| 久久一本精品久久久ー99| 欧美影院久久| 美女扒开下面流白浆在线试听| 手机在线免费毛片| 亚洲人妖在线| 理论片一区| 99精品免费在线| 亚洲欧美日韩天堂| 好吊妞欧美视频免费| 香蕉久久国产精品免| 亚洲国模精品一区| 天天综合网站| 日本一区二区三区精品国产| 亚洲中文制服丝袜欧美精品| 高清免费毛片| 国产浮力第一页永久地址|