亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于一致性哈希環(huán)多主節(jié)點的改進實用拜占庭容錯算法

        2023-02-14 12:15:16孫林夫鄒益勝
        計算機集成制造系統(tǒng) 2023年1期
        關鍵詞:一致性

        盧 麗,孫林夫+,鄒益勝

        (1.西南交通大學 計算機與人工智能學院,四川 成都 610031;2.西南交通大學 制造業(yè)產業(yè)鏈協(xié)同與信息化支撐技術四川省重點實驗室,四川 成都 610031)

        0 引言

        云制造是一種以服務為導向的網(wǎng)絡化制造新模式,結合了現(xiàn)有的云計算、物聯(lián)網(wǎng)、網(wǎng)絡安全和高性能計算等前沿技術,通過制造資源(數(shù)據(jù)、云服務器、軟件等)和制造能力來構建分布式資源池,然后封裝成服務的形式發(fā)布到云制造平臺上,從而使這些資源可以高度共享和整合,進而減少資源的浪費[1]。云制造平臺還可以利用分布式資源池來動態(tài)響應用戶的需求,給用戶提供所需的可靠服務[2]。

        云制造平臺具有信息發(fā)布、服務資源匹配和系統(tǒng)管理等功能,在服務鏈、配件鏈、營銷鏈和供應鏈上不僅為聯(lián)盟企業(yè)提供業(yè)務和專業(yè)數(shù)據(jù)資源,還可以為企業(yè)提供可靠的服務[3-4]。但是云制造平臺在資源整合、協(xié)同和共享過程中帶來了新的安全性問題。由于聯(lián)盟企業(yè)廣泛分布在不同的地域,企業(yè)之間的技術水平、資金能力、企業(yè)規(guī)模等不一致,云制造平臺上服務質量參差不齊,使交易信息的真實性、可信性和完整性得不到保障,容易造成平臺上服務提供商和消費者雙方交易信息的不確定性,這嚴重制約了云制造平臺的發(fā)展[5]。因此,云制造平臺需要一個健全的可信機制來吸引企業(yè)和消費者的參與,從而促進云制造平臺的進一步發(fā)展。

        為了解決這些問題,許多研究者將區(qū)塊鏈[6]技術引入云制造平臺,區(qū)塊鏈是最前沿的技術之一,它整合了網(wǎng)絡傳輸、分布式計算、密碼學等技術,在分布式網(wǎng)絡中通過共識算法來確保數(shù)據(jù)的一致性,采用密碼學保證數(shù)據(jù)傳輸和訪問的安全,并利用區(qū)塊鏈的去中心化、防篡改、可追溯性等特點來解決分布式系統(tǒng)中交易雙方的信任危機[7],從而進行可靠交易。區(qū)塊鏈的節(jié)點對服務提供商的身份和資源進行有效性驗證,從而提高了交易的可信度[8]。聯(lián)盟鏈是針對有權限的企業(yè)才能訪問資源,有效地消除了女巫(sybil)攻擊,因此聯(lián)盟鏈廣泛應用于政府和企業(yè)中[9]。

        共識算法是聯(lián)盟鏈交易的核心,在分布式網(wǎng)絡中確保數(shù)據(jù)在傳遞和處理過程中的正確性和一致性[10],在所有的節(jié)點上保存相同的賬本信息來避免數(shù)據(jù)篡改,并在一致性協(xié)議過程中快速檢測數(shù)據(jù)的更改,避免了交易過程中篡改信息,從而有效地保證了數(shù)據(jù)的安全性問題。主流的共識算法有工作量證明(Proof of Work, PoW)、權益證明(Proof of Stake, PoS)[11]、委托權益證明(Delegated Proof of Stake, DPoS)[12]、Paxos[13]、Raft[14]和實用拜占庭容錯(Practical Byzantine Fault Tolerance, PBFT)[15]等共識算法。Paxos和Raft無法適應于有拜占庭節(jié)點的環(huán)境,一旦系統(tǒng)中有拜占庭節(jié)點發(fā)送錯誤消息,會導致整個系統(tǒng)崩潰無法正常工作。PoW主要通過計算機算力來解決SHA-256數(shù)學難題,并通過競爭搶奪記賬權來生成區(qū)塊鏈,該算法不但計算量大,而且共識效率較低,產生一個區(qū)塊需要10分鐘左右。為了減少資源消耗,QUANTUM等[11]提出PoS算法并通過股權來代替算力,在一定程度上克服了大量算力的缺點,但是資源分布不均勻可能無法使新加入的節(jié)點達成有效的共識。為了減少PoS算法的計算量,DPoS通過持幣者投票選舉出的節(jié)點來代替挖礦,提高了區(qū)塊生成的效率,但在一定程度上偏離了去中心化的軌道,制約了交易的安全性[16]。這些算法在一定程度上可以保證區(qū)塊鏈的可靠性,但不能同時解決時延、吞吐量和區(qū)塊生成等問題,因此聯(lián)盟鏈很難得到廣泛的應用[17]。PBFT算法不但減小了算力資源消耗,還提高了算法的出塊速度。PBFT最早由MIGUEL等[15]在1999年提出,以解決拜占庭容錯(Byzantine Fault Tolerance, BFT)算法計算量大的問題,將算法復雜度從指數(shù)級降到了多項式級,并且在一定數(shù)量的拜占庭節(jié)點情況下仍能使分布式節(jié)點達成共識,是公認解決拜占庭將軍問題最優(yōu)的算法。因此廣泛應用于云制造平臺的聯(lián)盟鏈場景中。

        然而,PBFT通過靜態(tài)網(wǎng)絡來執(zhí)行一致性協(xié)議以達成共識,無法激發(fā)節(jié)點的有效性,消耗了大量的網(wǎng)絡開銷(吞吐量和時延),降低了PBFT算法的性能。為了解決該問題,方維維等[18]引入積分機制來更新共識節(jié)點和候選節(jié)點,挑選積分高的節(jié)點來降低網(wǎng)絡開銷,但該算法的拜占庭節(jié)點仍留在系統(tǒng)中消耗內存資源。為了進一步移除拜占庭節(jié)點,陳婷靈[19]通過信譽授權證明DPoS將節(jié)點劃分為共識節(jié)點和普通節(jié)點,然后將PBFT算法的三階段協(xié)議改成二階段協(xié)議來減少共識過程的時間和吞吐量,然后DPoS和PBFT融合為DPBFT(dynamic PBFT)算法來優(yōu)化主節(jié)點的調度算法,并通過節(jié)點狀態(tài)來刪除信譽值低的節(jié)點,從而快速移除系統(tǒng)中的拜占庭節(jié)點以減少網(wǎng)絡資源的消耗,但該算法沒有考慮到超時影響系統(tǒng)的效率。因此,王強等[20]在預準備階段通過定時檢查節(jié)點的有效性來改進BPFT共識算法,以解決預準備階段網(wǎng)絡超時導致節(jié)點不一致的問題,但是該算法無法隨著節(jié)點數(shù)的增加表現(xiàn)出良好的性能。因此,朱海等[21]在2022年通過分組算法將距離較近的節(jié)點劃分了一組來減少共識節(jié)點的規(guī)模,通過縮短節(jié)點之間通信的距離來減少算法的時延,同時使用投機技術減少節(jié)點間通信的時間復雜度。但是在開放環(huán)境下,云制造平臺無法根據(jù)距離劃分小組。目前,這些共識算法沒有較好地解決節(jié)點的可擴展問題。另外,目前的共識算法只是簡單地添加重復請求,沒有解決重播攻擊[22]。

        綜上所述,本文提出一種改進的實用拜占庭容錯(Improved PBFT, IPBFT)算法來提高共識算法的性能。IPBFT算法由擴展性算法和重播攻擊和節(jié)點移除機制3部分組成。在擴展性算法中,將PBFT的單個主節(jié)點擴展為多個主節(jié)點來分擔請求隊列的數(shù)據(jù),同時降低了預準備階段的網(wǎng)絡瓶頸,然后引入一致性哈希環(huán)來管理動態(tài)的網(wǎng)絡節(jié)點,接著在一致性哈希環(huán)空間上載入桶來實現(xiàn)數(shù)據(jù)均勻分布和任務均勻調度,使節(jié)點負載均衡并減少節(jié)點的壓力,然后多個主節(jié)點通過多線程并行執(zhí)行共識算法,不僅減少了算法的時延,還提高了吞吐量,從而提高了共識算法的可擴展性。在重播攻擊算法中,在相同視圖上通過定期旋轉桶來分配正確的副本節(jié)點,從桶里分配的副本節(jié)點來接收客戶端的請求,另外每個桶使用鎖同步機制來防止重播攻擊。在節(jié)點移除機制中,通過加入可靠的節(jié)點或者移除拜占庭節(jié)點來減少惡意節(jié)點的參與,將PBFT靜態(tài)網(wǎng)絡更改為動態(tài)網(wǎng)絡結構,減少視圖切換操作,確保了系統(tǒng)維持較高的運行狀態(tài)。IPBFT能夠有效地應用于云制造交易的環(huán)境,本文也通過實驗表明IPBFT具有較好的擴展性,不僅能有效地防止重播攻擊,還能維持較高的運行狀態(tài)。

        1 PBFT算法

        在云制造平臺中,企業(yè)通過授權機制加入聯(lián)盟鏈來組成利益相關的聯(lián)盟,聯(lián)盟成員以節(jié)點的形式接入到區(qū)塊鏈中,這些節(jié)點通過PBFT算法共同維護全網(wǎng)一致的分布式賬本,以為消費者提供可信的服務,從而在云制造平臺上進行可靠的交易。PBFT算法主要由一致性協(xié)議、視圖切換協(xié)議和檢查點協(xié)議組成。

        1.1 一致性協(xié)議

        一致性協(xié)議是PBFT的核心,在聯(lián)盟鏈中交易定期打包生成區(qū)塊,整個網(wǎng)絡通過一致性協(xié)議來保證區(qū)塊信息的一致性和完整性。一致性協(xié)議有主節(jié)點、備份節(jié)點和副本節(jié)點3類節(jié)點,副本節(jié)點包括主節(jié)點和備份節(jié)點。在同一視圖(相同配置)中,PBFT[20]算法隨機選擇一個副本節(jié)點作為主節(jié)點,主節(jié)點選取的公式為:i=v%|N|,其中i是副本節(jié)點的編號(i

        1.2 視圖切換協(xié)議

        視圖切換協(xié)議是主節(jié)點發(fā)生故障,在限定時間內沒有生成新的區(qū)塊就會觸發(fā)視圖切換協(xié)議。PBFT需要將視圖v切換為視圖(v+1)來更換新的主節(jié)點,使其他副本節(jié)點觸發(fā)視圖切換協(xié)議,以保證系統(tǒng)在發(fā)生故障時的穩(wěn)定性和可用性,具體包括以下3個階段:

        (1)VIEW-CHANGE階段

        若主節(jié)點有問題,新的主節(jié)點i就會向其他副本節(jié)點廣播VIEW-CHANGE消息VIEW-CHANGE,v+1,n1,C,P,i。其中VIEW-CHANGE為消息名稱,v為上一個視圖的編號,i為新的主節(jié)點的編號,n1為i節(jié)點穩(wěn)定的檢查點編號,C為2f+1個有效檢查點信息的集合,P為i節(jié)點的上一個視圖編號大于n1且未完成的預準備消息(包括預準備和準備消息)的集合。

        (2)VIEW-CHANGE-Ack階段

        如果新的主節(jié)點i收到2f+1(包括自身)個來自其他副本節(jié)點視圖編號為v+1的正確VIEW-CHANGE消息,則進入NEW-VIEW階段。

        (3)NEW-VIEW階段

        1.3 檢查點協(xié)議

        共識過程中,分布式節(jié)點會產生大量的日志,導致系統(tǒng)開銷過大。檢查點協(xié)議可以去除已經達成共識的日志記錄,不僅可以降低系統(tǒng)內存開銷,還可以防止累積節(jié)點不一致導致系統(tǒng)崩潰。主節(jié)點在確認階段生成區(qū)塊后,向所有副本節(jié)點發(fā)送CHECKPOINT,n,Hash(sn)消息,其中:n為區(qū)塊的序號,sn為上一階段穩(wěn)定檢查點的區(qū)塊號,Hash(sn)為序列號在sn和n(n=sn+dist)之間的哈希,dist為檢查點滑動窗口的長度。若每個副本節(jié)點收到2f+1(包括自己)個正確的檢查點信息,則形成了穩(wěn)定的檢查點,從而可以去除區(qū)塊序列號小于n的日志記錄。

        2 IPBFT共識算法的設計與實現(xiàn)

        IPBFT算法主要做了以下3個方面的工作:

        (1)在擴展性算法中,首先優(yōu)化主節(jié)點的選取過程,將單個主節(jié)點擴展為多個主節(jié)點來降低預準備階段的網(wǎng)絡瓶頸,引入一致性哈希環(huán)來管理動態(tài)的副本節(jié)點,并將哈希空間平均分配給多個副本節(jié)點,從而使節(jié)點負載均衡。然后在一致性哈希環(huán)上載入虛擬節(jié)點(桶)來加強網(wǎng)絡數(shù)據(jù)處理的能力并減少節(jié)點的壓力。最后桶里的副本節(jié)點使用多線程來并行處理請求隊列、一致性協(xié)議、視圖切換協(xié)議和檢查點協(xié)議等操作以達成節(jié)點共識,高效地利用有限的資源來減少算法的時間,從而提高了算法的吞吐量,該方案是用來解決PBFT算法擴展性較差的問題。

        (2)在重播攻擊算法中,在一致性協(xié)議過程中通過定期旋轉桶和鎖同步機制來防止重播攻擊,從而解決重播攻擊降低了共識算法的性能問題。

        (3)在節(jié)點移除算法中,通過加入可靠的節(jié)點或者移除拜占庭節(jié)點來減少惡意節(jié)點的參與,以建立動態(tài)的網(wǎng)絡結構來維持高效的運行狀態(tài),從而解決網(wǎng)絡結構靜態(tài)導致性能低的問題。

        2.1 IPBFT的整體流程

        IPBFT的整體流程如圖2所示,虛線框為改進的部分。首先,優(yōu)化主節(jié)點的選取算法來選擇多個有效的主節(jié)點。然后,通過重播攻擊算法來防止客戶端重播攻擊,并基于多主節(jié)點的一致性協(xié)議生成新的區(qū)塊。如果主節(jié)點在限定時間內沒有生成新的區(qū)塊,就會觸發(fā)視圖切換協(xié)議,然后通過節(jié)點移除機制刪除拜占庭節(jié)點,否則將生成新的區(qū)塊。最后,生成的區(qū)塊通過檢查點協(xié)議來去除已經達成共識的日志記錄。

        2.2 擴展性算法

        2.2.1 優(yōu)化主節(jié)點的選取

        PBFT算法主節(jié)點選取(i=v%|N|)的方案[20]強烈依賴于節(jié)點數(shù)N,添加或者刪除節(jié)點時,分布式系統(tǒng)中所有數(shù)據(jù)的映射地址全部都發(fā)生變化,大量的映射失效使系統(tǒng)無法正常工作,該算法無法適用于節(jié)點動態(tài)變化的分布式系統(tǒng)中。因此,本文引入一致性空間[23]來管理動態(tài)的網(wǎng)絡節(jié)點,將存儲空間組織成一個虛擬的圓環(huán),然后將一致性哈希空間(0~2256)平均劃分給N個副本節(jié)點,接著將副本節(jié)點的編號作為關鍵字,這樣副本節(jié)點都存儲在哈希環(huán)上。在哈希環(huán)上增加或刪除節(jié)點時,只需要將環(huán)空間某一段局部范圍的數(shù)據(jù)重新定位,其他節(jié)點的數(shù)據(jù)不受影響,該算法有較好的容錯性和擴展性。另外,本文在哈希環(huán)上分配虛擬節(jié)點(桶)來實現(xiàn)數(shù)據(jù)均勻分布和任務均勻調度,不僅能解決副本節(jié)點太少時數(shù)據(jù)傾斜的問題,還能分擔副本節(jié)點的壓力,使大量請求消息均勻分散到不同的節(jié)點上,避免系統(tǒng)崩潰[24]。

        當視圖序號v=0時,主節(jié)點地址為哈希環(huán)的首地址,以哈希環(huán)的首地址按順序給每個副本節(jié)點分配size個大小相等的桶。當視圖序號v>0時,以主節(jié)點為起始地址給每個副本節(jié)點分配size個大小相等的桶。如圖3所示,存儲在哈希環(huán)上的4個副本節(jié)點(節(jié)點0、1、2、3和4),每個副本節(jié)點平均分配2個桶,此時數(shù)據(jù)通過哈希函數(shù)映射到桶0中,再關聯(lián)到副本節(jié)點0。

        PBFT算法[20]隨機選擇主節(jié)點,若選擇的主節(jié)點是拜占庭節(jié)點,會增加視圖切換,頻繁的視圖切換導致系統(tǒng)崩潰。本文不是隨意地選擇主節(jié)點,而是選擇桶里的節(jié)點作為主節(jié)點,從而減少視圖切換,進而避免了系統(tǒng)頻繁的視圖切換。

        2.2.2 優(yōu)化一致性協(xié)議

        本文將桶里的副本節(jié)點當作主節(jié)點,主節(jié)點通過一致性協(xié)議來達成共識,以優(yōu)化算法的時延和吞吐量,改進的一致性協(xié)議的具體內容如下:

        (1)請求階段(REQUEST)

        PBFT的客戶端僅向某一主節(jié)點發(fā)送消息,過多消息在預準備階段造成網(wǎng)絡瓶頸,導致整個系統(tǒng)崩潰,無法正常運行,算法的可靠性是有限的。本文改進客戶端提交請求的方式,客戶端c將帶有簽名的消息(交易請求)m發(fā)送給桶里所有副本節(jié)點,而不是單個主節(jié)點,以分擔請求隊列的數(shù)據(jù),同時降低預準備階段的網(wǎng)絡瓶頸。請求消息m的負載o、消息序號id和消息公鑰pu拼接成字節(jié)數(shù)組,然后采用SHA-256加密算法[25]將字節(jié)數(shù)組生成摘要,SHA-256加密算法的實施步驟為:

        步驟1字節(jié)數(shù)組劃分為512位的塊,字節(jié)數(shù)組可劃分為sm個塊。

        步驟2通過8個質數(shù)(2、3、5、7、11、13、17、19)平方的小數(shù)部分來初始化變量A、B、C、D、E、F、G、H。

        步驟3第i個塊分解成16個32位的字與變量A、B、C、D、E、F、G、H進行運算,并執(zhí)行64次加密循環(huán)得到第i個塊的散列值,加密的位運算公式為:

        CH(E,F,G)=(E∧F)⊕(?E∧G);Ma(A,B,C)=(A∧B)⊕(A∧C)⊕(B∧C);

        (A>>22);

        (E>>26)。

        (1)

        其中:∧表示按位與,?表示按位補,⊕表示按位異或,>>表示右移。

        步驟4重復sm次步驟3,迭代的結果就生成一個256位的數(shù)字摘要,接著使用客戶端私鑰對摘要進行數(shù)字簽名,并將數(shù)字簽名存儲在請求隊列中,以確保消息在傳播過程的有效性。

        (2)預準備階段(PRE-PREPARE)

        主節(jié)點收到客戶端發(fā)送的消息時,需要檢驗客戶端消息的合法性,使用公鑰來驗證客戶端的簽名,消息的負載是否超出范圍,桶中的預準備消息是否有重復或者重播攻擊。

        數(shù)據(jù)驗證通過后,主節(jié)點在水線范圍內對消息m分配提案編號n(區(qū)塊的高度),水線的作用是防止失效節(jié)點使用一個很大的序號來消耗序號空間[26]。然后,主節(jié)點通過多線程來并行處理請求隊列,接著向其他副本節(jié)點廣播預準備消息PRE-PREPARE,v,n,dσi,m,其中:m為客戶端發(fā)送的消息,d為消息m使用哈希函數(shù)得到的摘要,σi為主節(jié)點對預準備消息的簽名。若請求超時,主節(jié)點i收到了足夠多的請求,則主節(jié)點將在預準備階段處理相應的請求。若請求超時,主節(jié)點沒有收到可用的請求,則主節(jié)點將發(fā)送一個帶有空的預準備消息,從而保證預準備階段傳輸?shù)恼_性。

        (3)準備階段(PREPARE)

        副本節(jié)點在收到預準備消息時,會檢驗消息的合法性,具體檢驗內容為:①預準備階段的視圖與準備階段的視圖一致;②n在水線范圍內;③節(jié)點i是否為桶里的節(jié)點來防止重播攻擊;④準備消息是否有重復;⑤有相應的公鑰來驗證每個請求的身份。

        若預準備消息合法,則將預準備消息存入消息日志中,然后向其他副本節(jié)點廣播準備消息PREPARE,v,n,d,iσi,同時也會接收其他副本節(jié)點的準備消息,其中σi為節(jié)點i對消息的簽名。如果收到準備消息和預準備消息一致,就將準備消息寫入消息日志中。如果節(jié)點i收到正確的準備消息數(shù)大于或等于2f+1時,就進入確認階段。

        (4)確認階段(COMMIT)

        (5)回復階段(REPLY)

        一致性協(xié)議完成后,主節(jié)點將生成的區(qū)塊信息寫入?yún)^(qū)塊鏈。若主節(jié)點在一定的時間內沒有生成區(qū)塊,則此主節(jié)點為拜占庭節(jié)點,并按視圖切換協(xié)議更換主節(jié)點來完成共識過程。IPBFT一致性協(xié)議的流程圖如圖4所示。

        2.3 重播攻擊算法

        重播攻擊是客戶端向服務器發(fā)送多次重復的請求,重播攻擊增加了節(jié)點的工作量,不僅降低了系統(tǒng)的吞吐量,還使交易的數(shù)據(jù)不安全。攻擊者可能冒充合法的客戶端向服務端發(fā)送相同的消息來進行重播攻擊,尤其在單主節(jié)點擴展為多主節(jié)點時更容易引發(fā)重播攻擊,許多共識算法在一致性協(xié)議之后才過濾重復數(shù)據(jù),這會增加算法時間和性能等資源消耗,需盡早過濾重復數(shù)據(jù)來減少算法的資源消耗。因此,LIN等[27]利用消息受密鑰保護的原理,在每個請求中嵌入一次性公鑰來判斷重復數(shù)據(jù),并在請求階段過濾重復數(shù)據(jù)來有效地抵抗重播攻擊。因此,本文在一致性協(xié)議的過程中,預防重播攻擊的實施步驟為:

        步驟1桶里分配的副本節(jié)點是經過篩選得到的節(jié)點,這些的節(jié)點用來接收客戶端的請求,避免相同請求分配給不同的節(jié)點。因此,僅桶里的副本節(jié)點才能使用相應的數(shù)據(jù),有效地預防了重播攻擊。

        步驟2加入了鎖同步機制,當線程同步訪問數(shù)據(jù)時,由于每個桶使用了鎖機制,只有鎖上的事物處理完畢才能執(zhí)行下一階段任務,沒有執(zhí)行完畢拒絕執(zhí)行其他任務,從而消除了其他節(jié)點為爭奪資源時修改桶中的數(shù)據(jù)。

        步驟3在請求階段判斷桶里的請求(負載o、消息序號id和公鑰pu)是否有重復數(shù)據(jù),當兩個請求m和m′的負載相等(o=o′)且消息序號相等(id=id′)且公鑰相等(pu=pu′)時,兩個請求重復,需要過濾重復數(shù)據(jù)來減少CPU和時間等資源的消耗。

        步驟4在共識協(xié)議的過程中,某一主節(jié)點處理多條交易時,某條交易在規(guī)定的時間內無法生成區(qū)塊,就會移除主節(jié)點。因此,在確認階段主節(jié)點提交請求時,需要等待正在運行或者正在處理的請求,以防止主節(jié)點誤認為是拜占庭節(jié)點,將從副本節(jié)點中移出。

        步驟5PBFT通過一個固定的主節(jié)點來執(zhí)行一致性協(xié)議,只有在超時或者出現(xiàn)故障的情況下才通過視圖轉換協(xié)議更換主節(jié)點,永久固定的主節(jié)點容易遭受惡意節(jié)點的攻擊(節(jié)點丟棄請求或延遲請求)。因此,不能任命某個主節(jié)點無限期地擔任領導者,需要通過輪轉機制[28]來避免惡意節(jié)點的攻擊。當節(jié)點數(shù)大于或者等于2時,在確認階段提交請求后以當前主節(jié)點分配的桶為起始地址循環(huán)右移size位數(shù),因此在相同視圖上定期旋轉桶來分配正確的副本節(jié)點,從而使惡意的節(jié)點不會長久的執(zhí)行共識算法,不僅防止節(jié)點遭受重播攻擊,還使每個桶里的節(jié)點都有機會向系統(tǒng)提交提案,防止故障節(jié)點降低算法的性能,從而增強系統(tǒng)的可靠性。

        2.4 節(jié)點移除機制

        PBFT是靜態(tài)網(wǎng)絡結構沒有靈活的策略加入節(jié)點或者移除拜占庭節(jié)點,增加節(jié)點后需要重新啟動程序,尤其在節(jié)點數(shù)目較多或者變更頻繁的情況下,系統(tǒng)難以維持高效的運行狀態(tài),嚴重影響系統(tǒng)的可用性。當節(jié)點故障或者網(wǎng)絡延遲時,在設定的時間內無法生成區(qū)塊,需從共識節(jié)點中去除該節(jié)點來防止請求的延遲。MILOSEVIC等[30]引入節(jié)點移除機制,一旦懷疑節(jié)點i是拜占庭節(jié)點則將節(jié)點i加入黑名單,并將黑名單通知其他節(jié)點,從而使拜占庭節(jié)點無法參與共識過程。節(jié)點移除機制的實施步驟為:

        步驟1在確認階段,如果節(jié)點無法在限定的時間內生成新的區(qū)塊就標記當前的主節(jié)點i為拜占庭節(jié)點,并將節(jié)點i加入到黑名單,黑名單中的節(jié)點對共識過程產生了負面的影響,一旦拜占庭節(jié)點i存在黑名單中,客戶端就不會向黑名單中的節(jié)點廣播消息。因此節(jié)點i不能參與共識過程,無法傳遞或者廣播消息。

        步驟2觸發(fā)視圖切換協(xié)議,新的主節(jié)點i向其他副本節(jié)點廣播VIEW-CHANGE消息,然后進入到VIEW-CHANGE-Ack階段,并在NEW-VIEW階段將未完成的預準備和準備消息添加到消息隊列中。

        步驟3在NEW-VIEW階段重新給副本節(jié)點賦值,如果節(jié)點i存在黑名單中,則在上一個視圖(v)的副本節(jié)點中移除拜占庭節(jié)點,就得到本輪視圖(v+1)的副本節(jié)點。因此,將PBFT靜態(tài)網(wǎng)絡更改為動態(tài)網(wǎng)絡結構,從而減少了拜占庭節(jié)點的參與,進而建立良好的共識環(huán)境。

        3 實驗分析

        汽車零部件多產業(yè)鏈業(yè)務協(xié)同云服務平臺(http://www.autosaas.cn/)是我國云制造領域的第一批第三方云平臺,目前已包含10多家核心制造企業(yè)[31],8 000多家協(xié)作企業(yè)在第三方平臺上進行業(yè)務協(xié)作,并支持各企業(yè)群開展銷售分析、配件采購分析、配件庫存管控等業(yè)務。為了減少代理商的庫存積壓,本文在云平臺上進行跨鏈交易來實現(xiàn)代理商(云制造企業(yè)或者節(jié)點)間的橫向協(xié)作,供需代理商協(xié)作的交易流程如圖5所示。需方代理商在云平臺發(fā)布配件需求,然后在云平臺上向供方代理商求購所需的配件。供方代理商在云平臺上匯聚了多個代理商的配件積壓庫存,可在云平臺上共享這些積壓庫存。因此,云平臺上匯聚了配件需求訂單和積壓庫存,在共享庫存中自動匹配相應的配件,并將匹配的結果及時通知供需雙方,接著供方代理商選擇需求訂單并接單,然后需方代理商查看申請單并通過IPBFT共識算法進行可信交易,供需雙方的交易信息生成配件銷售單表,作為共識節(jié)點處理的消息,銷售單表詳情如表1所示。

        本文在Windows 10、i5-4210處理器環(huán)境下,使用Ubuntu20.10搭建了聯(lián)盟鏈Hyperledger Fabric框架來編寫實驗代碼,客戶端發(fā)送的交易數(shù)量為60 000條配件銷售單數(shù)據(jù),參數(shù)size設置為2,dist設置為64,區(qū)塊鏈的節(jié)點總數(shù)為100。實驗在相同的條件下與PBFT[20]進行比較,根據(jù)吞吐量和時延來測試算法的有效性。

        (1)吞吐量[29](TPS) 系統(tǒng)在單位時間內處理的區(qū)塊交易數(shù)量Transactions,吞吐量顯示了系統(tǒng)承受的負載,表示處理區(qū)塊交易的能力,其公式為:

        表1 配件銷售單

        (2)

        式中:Δt表示出塊的時間,Transactions表示出塊時間內系統(tǒng)處理的交易數(shù)量。

        (2)共識時延[32]Td每筆交易完成共識所消耗的時間,較低的延遲表明共識算法執(zhí)行的時間短,交易的效率高并具有較高的吞吐量。本文的共識時延采用多條交易的平均時延,其可以表示為:

        (3)

        式中:Tf表示共識過程的結束時間,Ts表示共識過程的開始時間;n0表示交易的數(shù)量。

        3.1 擴展性分析

        在無重播攻擊的環(huán)境下,實驗1通過不同節(jié)點數(shù)來測試IPBFT、IPBFT_no_M、IPBFT_no_D、IPBFT_no_R和PBFT算法在相同環(huán)境下的吞吐量和時延。IPBFT_no_M是單個主節(jié)點的IPBFT共識算法,IPBFT_no_D和IPBFT_no_R分別是IPBFT里無重播攻擊、無節(jié)點移除機制算法。如圖6所示,IPBFT_no_M和PBFT算法受節(jié)點數(shù)量的影響較大,當節(jié)點數(shù)超過4時,IPBFT_no_M和PBFT算法的吞吐量明顯降低,算法的擴展性較差。IPBFT、IPBFT_no_D、IPBFT_no_R三種算法的吞吐量隨著節(jié)點數(shù)的增加基本保持穩(wěn)定,這是因為采用多個副本節(jié)點并行處理數(shù)據(jù),大幅度減少了算法共識的時間,從而維持較高的吞吐量。IPBFT算法的吞吐量最高,在節(jié)點數(shù)較多的情況,也能維持較高的吞吐量,表現(xiàn)出最好的可擴展性。

        圖7比較了5種算法的平均時延,從圖中可知IPBFT_no_M和PBFT算法的時延隨著節(jié)點數(shù)的增加而增加,主要是網(wǎng)絡中消息的數(shù)量增加,使用單個主節(jié)點來執(zhí)行任務消耗了大量的時間。IPBFT、IPBFT_no_D、IPBFT_no_R三種算法的時延隨著節(jié)點數(shù)的增加而緩慢增加,IPBFT算法的時延最小。IPBFT算法比IPBFT_no_M和PBFT的時延低并且吞吐量高,算法有更好的擴展性。因此,實驗1表明IPBFT多主節(jié)點方法的擴展性優(yōu)于單個主節(jié)點的IPBFT_no_M和PBFT算法。

        3.2 重播攻擊分析

        實驗2是客戶端向多個節(jié)點發(fā)送重復的請求,來測試重播攻擊算法對吞吐量和時延的影響。如圖8所示,IPBFT_no_D是IPBFT里無重播攻擊算法,IPBFT_no_D(f+1)和IPBFT_no_D(N)分別是客戶端發(fā)送1次重復請求給f+1(f=1)個節(jié)點和所有節(jié)點,PBFT(N)是客戶端發(fā)送1次重復請求給所有節(jié)點。在N=4時,IPBFT_no_D(f+1)、IPBFT_no_D(N)和PBFT(N)的吞吐量比IPBFT低,這是因為未使用重播攻擊算法增加了重復數(shù)據(jù),從而降低了算法的吞吐量,IPBFT_no_D(N)的吞吐量比IPBFT_no_D(f+1)小,表明重復攻擊的節(jié)點越多,對吞吐量的影響越大。在N=100時,PBFT(N)算法的吞吐量損失最大,這是因為PBFT算法無法抵抗重復數(shù)據(jù),大量的重復數(shù)據(jù)增加了節(jié)點的工作量,使吞吐量急劇下降。如圖9所示,隨著節(jié)點數(shù)的增加,PBFT(N)的時延最大,而IPBFT以最低的時延完成任務。因此,實驗2表明IPBFT的重播攻擊算法能有效防止客戶端的重播攻擊,表現(xiàn)出了較高的性能。

        3.3 移除機制分析

        實驗3設置生成區(qū)塊的時間為20秒,超過時間則觸發(fā)視圖切換協(xié)議,采用16個節(jié)點通過吞吐量來測試移除機制對系統(tǒng)的影響。如圖10所示,IPBFT_no_R是IPBFT里無節(jié)點移除機制,當1個副本節(jié)點崩潰時,在第90秒就會觸發(fā)視圖切換,IPBFT通過節(jié)點移除機制來移除拜占庭節(jié)點,從而減少拜占庭節(jié)點的參與,進而減少視圖切換操作,然后切換到具有15個副本節(jié)點的配置來執(zhí)行共識算法,IPBFT算法的吞吐量最高,在100秒后系統(tǒng)仍維持較高的運行狀態(tài)。而IPBFT_no_R和PBFT算法的拜占庭節(jié)點仍留在系統(tǒng)中,在90秒時選擇拜占庭節(jié)點作為主節(jié)點,再次進行視圖切換,降低了算法的吞吐量,100秒后IPBFT_no_R和PBFT算法以較低的吞吐量運行。因此,實驗3表明節(jié)點去除機制可以高效地移除系統(tǒng)中的拜占庭節(jié)點,減少視圖切換操作,提高算法的吞吐量,使系統(tǒng)能夠維持較高的運行狀態(tài)。

        4 結束語

        本文提出一種改進的IPBFT算法模型,從擴展性、重播攻擊和節(jié)點移除機制3方面改進了PBFT算法,并通過實驗驗證了以下結論:在相同條件下與PBFT算法對比,IPBFT多主節(jié)點方法的擴展性優(yōu)于單個主節(jié)點的PBFT算法,IPBFT算法的吞吐量最高,在節(jié)點數(shù)較多的情況,也能維持較高的吞吐量和較低的時延,表現(xiàn)出最好的可擴展性;IPBFT的重播攻擊算法能有效地防止客戶端的重播攻擊,表現(xiàn)出較高的性能;節(jié)點去除機制可以高效地移除系統(tǒng)中的拜占庭節(jié)點,減少視圖切換操作,提高算法的吞吐量,使系統(tǒng)能夠能維持較高的運行狀態(tài)。因此,IPBFT算法可擴展性好,不僅能有效地防止重播攻擊,還能移除拜占庭節(jié)點,保證了系統(tǒng)的高效性,能夠有效地應用于云制造交易的環(huán)境。未來可以對一致性協(xié)議的驗證算法進行改進,通過簽名驗證算法來減少驗證過程中CPU的消耗,從而增加算法的吞吐量。

        猜你喜歡
        一致性
        注重整體設計 凸顯數(shù)與運算的一致性
        遼寧教育(2022年19期)2022-11-18 07:20:42
        關注減污降碳協(xié)同的一致性和整體性
        公民與法治(2022年5期)2022-07-29 00:47:28
        商用車CCC認證一致性控制計劃應用
        注重教、學、評一致性 提高一輪復習效率
        對歷史課堂教、學、評一體化(一致性)的幾點探討
        IOl-master 700和Pentacam測量Kappa角一致性分析
        基于CFD仿真分析的各缸渦流比一致性研究
        ONVIF的全新主張:一致性及最訪問控制的Profile A
        方形截面Rogowski線圈的一致性分析
        電測與儀表(2016年7期)2016-04-12 00:22:18
        基于事件觸發(fā)的多智能體輸入飽和一致性控制
        一区二区三区在线观看视频免费 | 国产综合精品久久99之一| 无码av一区二区大桥久未| 亚洲熟妇少妇任你躁在线观看| 爆乳无码AV国内| 综合久久精品亚洲天堂| 中文精品久久久久人妻不卡 | 亚洲码无人客一区二区三区| 日韩女同精品av在线观看| 免费国产黄网站在线观看可以下载| 国产最新网站| 成人免费视频自偷自拍| 日本亚洲视频一区二区三区| 亚洲av不卡一区二区三区| 午夜成人理论无码电影在线播放| 国产一区二区三区影片| 中文字幕成人乱码熟女精品国50| 国产成人亚洲精品| 日韩AV有码无码一区二区三区| 人妻少妇激情久久综合| 女人无遮挡裸交性做爰| 手机在线看永久av片免费| 精品久久亚洲一级α| 国产精品国产传播国产三级| 亚洲乱码国产乱码精品精| 亚洲国产成人久久综合一区77| 抖射在线免费观看视频网站| 精品粉嫩av一区二区三区| 亚洲综合久久精品无码色欲| 精品99在线黑丝袜| 久久国产精品免费一区二区三区| 手机看黄av免费网址| 国产美女遭强高潮网站| 男人的av天堂狠狠操| 国产高清在线视频一区二区三区| 97人人模人人爽人人喊电影| 欧美日韩中文字幕久久伊人| 一区二区三区四区午夜视频在线 | 久久久久久亚洲精品中文字幕| 尤物无码一区| 日本精品一区二区三区试看|