關(guān)鍵詞:區(qū)塊鏈技術(shù);PBFT;信譽(yù)模型;信任機(jī)制
0 引言(Introduction)
《中華人民共和國國民經(jīng)濟(jì)和社會(huì)發(fā)展第十四個(gè)五年規(guī)劃和2035年遠(yuǎn)景目標(biāo)綱要》中明確指出要發(fā)展云計(jì)算、大數(shù)據(jù)、物聯(lián)網(wǎng)、工業(yè)互聯(lián)網(wǎng)、區(qū)塊鏈、人工智能、虛擬現(xiàn)實(shí)和增強(qiáng)現(xiàn)實(shí)七大數(shù)字經(jīng)濟(jì)重點(diǎn)產(chǎn)業(yè)。在此背景下,區(qū)塊鏈技術(shù)[1]再次得到社會(huì)各界的廣泛關(guān)注與深入應(yīng)用。實(shí)用拜占庭容錯(cuò)算法,作為區(qū)塊鏈共識(shí)算法[2-4]中最廣泛應(yīng)用于聯(lián)盟鏈的投票類算法,有效地解決了節(jié)點(diǎn)間通信可能出現(xiàn)的拜占庭將軍問題[5],進(jìn)一步提升了區(qū)塊鏈技術(shù)的穩(wěn)定性和可靠性。但是,實(shí)用拜占庭容錯(cuò)算法存在主節(jié)點(diǎn)選取隨機(jī)性大、缺乏信譽(yù)機(jī)制、易遭受Sybil女巫攻擊[6]及節(jié)點(diǎn)間的通信次數(shù)過多等問題,導(dǎo)致整個(gè)系統(tǒng)的共識(shí)效率低與鏈上空間存儲(chǔ)冗余。
針對(duì)上述問題,對(duì)PBFT共識(shí)算法進(jìn)行研究,設(shè)計(jì)信用模型[7-9]和投票機(jī)制,用于動(dòng)態(tài)更新用戶狀態(tài),并根據(jù)節(jié)點(diǎn)的行為達(dá)成共識(shí),提出具有分組評(píng)分機(jī)制和人工蜂群優(yōu)化共識(shí)過程的算法[10-12],緩解網(wǎng)絡(luò)節(jié)點(diǎn)通信的驟增,降低惡意節(jié)點(diǎn)的影響。TANG等[13]通過引入信任公平評(píng)分機(jī)制,動(dòng)態(tài)調(diào)整共識(shí)節(jié)點(diǎn)列表,簡(jiǎn)化共識(shí)過程,優(yōu)化共識(shí)效率。
基于上述研究,本文提出一種改進(jìn)PBFT算法設(shè)計(jì)的可信分布式信任機(jī)制,即TM-PBFT。首先,該機(jī)制設(shè)計(jì)了多因素分權(quán)節(jié)點(diǎn)信譽(yù)模型,通過分層共識(shí)優(yōu)化其三階段協(xié)議中一致性協(xié)議的預(yù)準(zhǔn)備階段。其次,采用IPFS星際文件系統(tǒng)實(shí)現(xiàn)節(jié)點(diǎn)數(shù)據(jù)的分布式存儲(chǔ)。通過與其他模型進(jìn)行對(duì)照實(shí)驗(yàn),結(jié)果證明TM-PBFT在通信效率上具有顯著優(yōu)勢(shì)。
1 改進(jìn)PBFT分布式信任機(jī)制設(shè)計(jì)(Distributedtrust mechanism design based on improved PBFT)
PBFT共識(shí)算法的本質(zhì)是一種狀態(tài)機(jī)副本復(fù)制算法,為了保證節(jié)點(diǎn)在分布式系統(tǒng)內(nèi)達(dá)成共識(shí),需要3種協(xié)議以滿足算法的安全性與活性,即一致性協(xié)議、檢查點(diǎn)協(xié)議和視圖更換協(xié)議。一致性協(xié)議作為PBFT共識(shí)算法的核心協(xié)議,執(zhí)行順序分為5個(gè)步驟(圖1)。
如圖1所示,一致性協(xié)議包含5個(gè)節(jié)點(diǎn),自上而下分為1個(gè)客戶端節(jié)點(diǎn)、1個(gè)主節(jié)點(diǎn)和3個(gè)備份節(jié)點(diǎn),其中最底端的備份節(jié)點(diǎn)為拜占庭節(jié)點(diǎn)。垂直線表示過程分界線,水平線表示各節(jié)點(diǎn),箭頭線表示消息廣播由一個(gè)節(jié)點(diǎn)發(fā)送到另一個(gè)節(jié)點(diǎn),虛線箭頭代表惡意節(jié)點(diǎn)的錯(cuò)誤信息或不傳遞信息。
PBFT的一致性協(xié)議是一種相對(duì)高效和安全的共識(shí)算法,但節(jié)點(diǎn)的信息傳輸與備份節(jié)點(diǎn)共識(shí)的并發(fā)操作仍然存在改進(jìn)和優(yōu)化的空間。每個(gè)節(jié)點(diǎn)都需要廣播自己的消息給其他節(jié)點(diǎn),會(huì)造成通信時(shí)延與復(fù)雜度過高,每個(gè)操作都必須經(jīng)過3個(gè)階段(預(yù)準(zhǔn)備、準(zhǔn)備和提交)才能達(dá)成一致。因此,本研究提出一種節(jié)點(diǎn)預(yù)準(zhǔn)備分層共識(shí)對(duì)協(xié)議進(jìn)行優(yōu)化,改進(jìn)后的TM-PBFT預(yù)準(zhǔn)備階段節(jié)點(diǎn)廣播執(zhí)行流程如圖2所示。
在請(qǐng)求階段,客戶端向主節(jié)點(diǎn)傳輸信息并進(jìn)行分發(fā);在預(yù)準(zhǔn)備階段,對(duì)節(jié)點(diǎn)進(jìn)行分組,圖2中的虛線箭頭線代表未畫出的其他分組分主節(jié)點(diǎn)。
PBFT中的每個(gè)節(jié)點(diǎn)都需要廣播自己的消息給其他節(jié)點(diǎn),這會(huì)造成大量的消息傳輸,可以通過壓縮、合并和篩選消息減少傳輸?shù)臄?shù)據(jù)量,從而提高網(wǎng)絡(luò)的效率。準(zhǔn)備階段引入分組并發(fā)共識(shí)機(jī)制,使節(jié)點(diǎn)能夠并行地處理請(qǐng)求。TM-PBFT準(zhǔn)備階段節(jié)點(diǎn)共識(shí)流程圖如圖3所示。
圖3中,實(shí)線箭頭代表預(yù)準(zhǔn)備階段之后,節(jié)點(diǎn)進(jìn)行廣播共識(shí);虛線箭頭代表遭受Sybil女巫攻擊的惡意節(jié)點(diǎn)的虛假信息或者不進(jìn)行廣播的節(jié)點(diǎn)信息,將傳統(tǒng)PBFT算法的準(zhǔn)備階段分成3個(gè)部分,主節(jié)點(diǎn)分組并發(fā)共識(shí),有效地解決了原始拜占庭容錯(cuò)[5]算法效率不高的問題,將節(jié)點(diǎn)之間兩兩確認(rèn)共識(shí)的復(fù)雜度從O(n2)降低至O(log n)。
2 信譽(yù)模型設(shè)計(jì)(Design of reputation model)
為了解決PBFT共識(shí)算法中節(jié)點(diǎn)選取隨機(jī)性高、優(yōu)劣節(jié)點(diǎn)混雜的問題,設(shè)計(jì)節(jié)點(diǎn)信譽(yù)模型用于評(píng)估參與節(jié)點(diǎn)行為質(zhì)量,將節(jié)點(diǎn)分為3種類型:正常節(jié)點(diǎn)、故障節(jié)點(diǎn)、惡意節(jié)點(diǎn)。引入節(jié)點(diǎn)獎(jiǎng)懲機(jī)制,信譽(yù)模型使用歷史數(shù)據(jù)和參與者之間的交互數(shù)據(jù)計(jì)算每個(gè)參與者的信譽(yù)分?jǐn)?shù),以評(píng)估參與節(jié)點(diǎn)的可信度和價(jià)值,旨在通過激勵(lì)節(jié)點(diǎn)積極性,進(jìn)而提升系統(tǒng)共識(shí)效率。
設(shè)每個(gè)加入?yún)^(qū)塊鏈的節(jié)點(diǎn)的初始信譽(yù)分?jǐn)?shù)Rinit 為50分,低于40分的節(jié)點(diǎn)Rbad 不參與共識(shí),信譽(yù)分?jǐn)?shù)最高的節(jié)點(diǎn)Rmax為100,到達(dá)100分即不再增加。
節(jié)點(diǎn)信譽(yù)分?jǐn)?shù)的增減由多種因素共同決定,如節(jié)點(diǎn)魯棒性、節(jié)點(diǎn)投入成本、通信成功率、節(jié)點(diǎn)間的投票數(shù)及參與共識(shí)輪次等。
節(jié)點(diǎn)魯棒性評(píng)估:在每個(gè)節(jié)點(diǎn)加入?yún)^(qū)塊鏈系統(tǒng)參與共識(shí)前,對(duì)自身穩(wěn)定性與算力進(jìn)行評(píng)估,剔除垃圾節(jié)點(diǎn),防止Sybil女巫攻擊,評(píng)估指標(biāo)為交易吞吐量Tt 與響應(yīng)能力Rb,節(jié)點(diǎn)魯棒性評(píng)估公式Nr 為(α1,α2 為評(píng)估系數(shù)):
節(jié)點(diǎn)投入成本:節(jié)點(diǎn)加入?yún)^(qū)塊鏈系統(tǒng)需要根據(jù)上述評(píng)估結(jié)果提交對(duì)應(yīng)比例的保證金Pn 作為置信憑證,保證金的數(shù)量與Nr 成反比,但不影響節(jié)點(diǎn)信譽(yù)分?jǐn)?shù)評(píng)估,若所有節(jié)點(diǎn)保證金總和為PSum,則節(jié)點(diǎn)保證金對(duì)節(jié)點(diǎn)信譽(yù)分的影響P 為
通信成功率:每一次成功通信,節(jié)點(diǎn)的置信度都會(huì)提高,總通信成功率C 為通信成功次數(shù)Csuc 除以總通信次數(shù)Csum,其計(jì)算公式如下:
節(jié)點(diǎn)間的投票數(shù):為提高各個(gè)節(jié)點(diǎn)間的參與度,給節(jié)點(diǎn)賦予投票權(quán),給每個(gè)與本節(jié)點(diǎn)參與過信息交互的節(jié)點(diǎn)進(jìn)行投票。規(guī)定每個(gè)節(jié)點(diǎn)可以給任意除自身外的交互過的節(jié)點(diǎn)投票,每個(gè)節(jié)點(diǎn)有1票,在每輪共識(shí)結(jié)束后統(tǒng)計(jì)票數(shù),票數(shù)高的節(jié)點(diǎn)參與主節(jié)點(diǎn)選舉,避免主節(jié)點(diǎn)共識(shí)輪數(shù)過多而產(chǎn)生中心化特征,增加共識(shí)成功概率,提升可信度。設(shè)有n 個(gè)節(jié)點(diǎn),Vi 代表節(jié)點(diǎn)i對(duì)節(jié)點(diǎn)j 的投票,Vj 代表節(jié)點(diǎn)j 的總票數(shù),計(jì)算節(jié)點(diǎn)間投票數(shù)的公式如下:
參與共識(shí)輪次:節(jié)點(diǎn)的可信度與節(jié)點(diǎn)參與的共識(shí)輪次呈正相關(guān),參與輪次越多,說明節(jié)點(diǎn)共識(shí)安全越值得信賴。因此,給節(jié)點(diǎn)信譽(yù)模型引入衰退函數(shù),當(dāng)節(jié)點(diǎn)n 參與了前i 輪次的共識(shí)且不被標(biāo)記為拜占庭節(jié)點(diǎn),則(i+1)輪次的信譽(yù)分?jǐn)?shù)不受衰退函數(shù)的影響;當(dāng)節(jié)點(diǎn)n 未參與前i 輪次的節(jié)點(diǎn),則使用如下衰退函數(shù)f(n)計(jì)算(θ 為衰退指數(shù),s 為節(jié)點(diǎn)總共識(shí)輪次),計(jì)算參與共識(shí)輪次的公式如下:
結(jié)合上述多層次因素考慮,可以得出信譽(yù)分?jǐn)?shù)的增減機(jī)制,主節(jié)點(diǎn)的選舉則與節(jié)點(diǎn)信譽(yù)分?jǐn)?shù)呈正相關(guān),節(jié)點(diǎn)信譽(yù)分?jǐn)?shù)Ri 的計(jì)算公式如下(β1,β2,β3,β4,β5 分別為節(jié)點(diǎn)信譽(yù)權(quán)重):Ri=Rinit+β1Nr+β2P+β3C+β4Vj-β5f(n),Ri∈[0,100]
在上述信譽(yù)模型中,節(jié)點(diǎn)計(jì)算信譽(yù)分?jǐn)?shù)會(huì)產(chǎn)生額外的時(shí)間與算力成本,進(jìn)而降低系統(tǒng)共識(shí)效率,但不計(jì)算節(jié)點(diǎn)信譽(yù)分?jǐn)?shù)又會(huì)導(dǎo)致系統(tǒng)出現(xiàn)受Sybil女巫攻擊、節(jié)點(diǎn)產(chǎn)生中心化特征、備份節(jié)點(diǎn)產(chǎn)生惰性等問題,因此系統(tǒng)設(shè)定每進(jìn)行3次共識(shí)則計(jì)算1次信譽(yù)分?jǐn)?shù),每計(jì)算3次信譽(yù)分?jǐn)?shù)則進(jìn)行1次主節(jié)點(diǎn)選舉,這種方法極大地提高了參與節(jié)點(diǎn)的共識(shí)積極性,確保了系統(tǒng)的安全與高效。
本設(shè)計(jì)以后臺(tái)服務(wù)開發(fā)為核心,將所設(shè)計(jì)的后臺(tái)系統(tǒng)作為連接客戶端、IPFS及Fabric區(qū)塊鏈的服務(wù)部件。分布式信任機(jī)制設(shè)計(jì)圖如圖4所示。數(shù)據(jù)存儲(chǔ)算法流程圖如圖5所示。
IPFS存儲(chǔ)文件的過程是分布式的,文件不是存儲(chǔ)在單個(gè)中心化服務(wù)器上,而是分布在多個(gè)節(jié)點(diǎn)上。因此,IPFS在存儲(chǔ)和傳輸文件方面具有較高的可靠性、安全性和效率。IPFS與區(qū)塊鏈結(jié)合,為構(gòu)建可信的分布式信任機(jī)制提供了一種創(chuàng)新的解決方案,并在未來的數(shù)字經(jīng)濟(jì)中得到了廣泛應(yīng)用。
當(dāng)大量數(shù)據(jù)需要可靠實(shí)時(shí)地存儲(chǔ)和驗(yàn)證時(shí),必須將數(shù)據(jù)以某種形式存入?yún)^(qū)塊鏈。傳統(tǒng)區(qū)塊鏈系統(tǒng)的數(shù)據(jù)存儲(chǔ)容量與速率非常低,無法存放大規(guī)模數(shù)據(jù)?;诖?,利用“區(qū)塊鏈+分布式存儲(chǔ)”的方式可以解決大規(guī)模數(shù)據(jù)上鏈的問題,將原始數(shù)據(jù)存儲(chǔ)于分布式文件管理系統(tǒng)中,并將源文件的地址存儲(chǔ)于區(qū)塊鏈,用戶可以通過區(qū)塊鏈上文件的地址信息隨時(shí)獲取這些數(shù)據(jù)。同時(shí),為了保證IPFS上的數(shù)據(jù)不被篡改,必須將文件的指紋(哈希算法結(jié)果)也一并存入?yún)^(qū)塊鏈,這樣用戶可以對(duì)鏈上數(shù)據(jù)進(jìn)行驗(yàn)證,以確定數(shù)據(jù)的完整性與可靠性。
3 理論與實(shí)驗(yàn)分析(Theoretical basis andexperimental analysis)
實(shí)驗(yàn)采用Java編程語言設(shè)計(jì)開發(fā)出一個(gè)多節(jié)點(diǎn)高并發(fā)的區(qū)塊鏈系統(tǒng),在吞吐量、共識(shí)時(shí)延及通信開銷等方面與文獻(xiàn)[14]中的C-PBFT共識(shí)算法進(jìn)行實(shí)驗(yàn)對(duì)比分析,系統(tǒng)開發(fā)配置信息為Intel(R) Core(TM) i5-7300HQ CPU@2.50GHz雙CPU和16 GB運(yùn)行內(nèi)存,開發(fā)軟件使用操作系統(tǒng)的版本為Ubuntu 20.04,Node.js的版本為10.16.0,通過Docker搭建Hyperledger Fabric分布式集群和IPFS。
3.1 吞吐量
吞吐量對(duì)比是指通過在同一設(shè)備單位時(shí)間內(nèi)完成交易傳輸數(shù)據(jù)的數(shù)量,即TPS(Transaction Per Second),其公式如下:
其中:Transaction 為單位時(shí)間內(nèi)傳輸數(shù)據(jù)的數(shù)量,Δt 為傳輸數(shù)據(jù)所用的時(shí)間,吞吐量通常與硬件因素密切相關(guān),因此在相同硬件條件下,所設(shè)計(jì)的系統(tǒng)吞吐量越大,則表示系統(tǒng)共識(shí)效率越高。數(shù)據(jù)吞吐量對(duì)比結(jié)果如圖6所示。
圖6的橫坐標(biāo)代表節(jié)點(diǎn)數(shù)量,縱坐標(biāo)代表數(shù)據(jù)吞吐量。隨著節(jié)點(diǎn)數(shù)量的增加,3種算法的吞吐量都有一定幅度的減少,而在相同的節(jié)點(diǎn)數(shù)量下,TM-PBFT 的吞吐量明顯高于傳統(tǒng)PBFT算法的吞吐量,略微高于對(duì)照實(shí)驗(yàn)的C-PBFT算法的吞吐量。并且,隨著節(jié)點(diǎn)的增加,即增加共識(shí)次數(shù),改進(jìn)后的TMPBFT算法在吞吐量方面有明顯的優(yōu)勢(shì)。
3.2 共識(shí)時(shí)延
共識(shí)時(shí)延對(duì)比是指不同共識(shí)算法在相同網(wǎng)絡(luò)架構(gòu)下的共識(shí)過程所需的時(shí)間延遲對(duì)比。通過對(duì)步長(zhǎng)為4的節(jié)點(diǎn)數(shù)量進(jìn)行增加,確保實(shí)驗(yàn)的準(zhǔn)確性。不同節(jié)點(diǎn)數(shù)量重復(fù)10次實(shí)驗(yàn),將10次實(shí)驗(yàn)的時(shí)延總和的平均值作為最終結(jié)果,確保實(shí)驗(yàn)的一般性。共識(shí)時(shí)延對(duì)比結(jié)果如圖7所示。
由圖7可知,共識(shí)時(shí)延與節(jié)點(diǎn)數(shù)量呈正相關(guān),即節(jié)點(diǎn)數(shù)量越多,則共識(shí)時(shí)延越久。優(yōu)化了一致性協(xié)議的TM-PBFT算法與C-PBFT算法和傳統(tǒng)PBFT算法相比,在共識(shí)時(shí)延方面具有顯著優(yōu)勢(shì)。
3.3 通信次數(shù)
通信次數(shù)是指各節(jié)點(diǎn)之間兩兩進(jìn)行信息傳遞的次數(shù)。通常情況下,通信次數(shù)越多,共識(shí)效率越低,傳統(tǒng)PBFT共識(shí)算法通信次數(shù)計(jì)算公式如下:
其中,K 為對(duì)節(jié)點(diǎn)進(jìn)行分組的簇?cái)?shù)。對(duì)于本文設(shè)計(jì)的TMPBFT算法,同樣對(duì)節(jié)點(diǎn)進(jìn)行分簇處理,通過公式(10)計(jì)算得到通信總次數(shù):
利用公式(8)和公式(9)得到3個(gè)階段的通信次數(shù)對(duì)比結(jié)果如圖8所示。
實(shí)驗(yàn)結(jié)果表明,在節(jié)點(diǎn)數(shù)量相同的情況下,分層對(duì)組內(nèi)節(jié)點(diǎn)進(jìn)行共識(shí)相比于原始的PBFT算法,通信次數(shù)大大降低,而在40個(gè)節(jié)點(diǎn)時(shí),相較于傳統(tǒng)PBFT 算法,通信次數(shù)下降了85.8%,相較于C-PBFT算法,通信次數(shù)下降了27.7%,呈現(xiàn)出節(jié)點(diǎn)越多,TM-PBFT算法與傳統(tǒng)PBFT算法和C-PBFT算法的通信次數(shù)相差越大的趨勢(shì)。
4 結(jié)論(Conclusion)
通過對(duì)PBFT算法的深入研究,將改進(jìn)的PBFT共識(shí)算法同IPFS星際文件系統(tǒng)相結(jié)合,提出一種效率優(yōu)化的分布式信任機(jī)制。改進(jìn)后的共識(shí)算法有效地優(yōu)化了PBFT共識(shí)算法存在的通信復(fù)雜度高和通信效率低等問題;結(jié)合IPFS星際文件系統(tǒng),降低了鏈上存儲(chǔ)壓力;引入節(jié)點(diǎn)信譽(yù)模型避免了受到Sybil女巫攻擊、惡意節(jié)點(diǎn)充當(dāng)主節(jié)點(diǎn)及替補(bǔ)節(jié)點(diǎn)積極性不高等問題。對(duì)比實(shí)驗(yàn)數(shù)據(jù)發(fā)現(xiàn),在共識(shí)時(shí)延、通信開銷、系統(tǒng)吞吐量及系統(tǒng)安全性等方面,本文提出的模型的表現(xiàn)明顯優(yōu)于傳統(tǒng)PBFT算法和C-PBFT算法,有效地提升了系統(tǒng)的共識(shí)效率、安全性和可靠性。但是,該模型仍有許多不足之處,后續(xù)將進(jìn)一步對(duì)節(jié)點(diǎn)的動(dòng)態(tài)調(diào)整副本組成與分層分組進(jìn)行優(yōu)化,最大限度地降低通信復(fù)雜度。