隨著電商經(jīng)濟的快速發(fā)展,社會對物流行業(yè)的依賴大幅增加。為了適應追求快速高效的新消費時代需求,許多物流貨運公司紛紛引進更科學高效的區(qū)塊鏈技術,來提升物流管理的效率[1]。其中共識算法作為區(qū)塊鏈技術的最重要的部分之一,許多研究者都通過優(yōu)化共識算法的方法,來提高區(qū)塊鏈物流管理系統(tǒng)的性能[2]。例如陳佶將傳統(tǒng)PBFT共識算法與DPOS算法相結合,提出一種基于DDPBFT算法的區(qū)塊鏈模型,改進算法保留了傳統(tǒng)PBFT的后半部分,在前半部分則采取DPSO算法來選舉主節(jié)點,并通過排序算法排序,以改進網(wǎng)絡的初始化過程與減少節(jié)點的視圖切換,進而促進區(qū)塊鏈系統(tǒng)的整體性能提升[3];葉進等針對分布式能源交易中共識效率低、資源開銷大和交易時效率高等問題,則提出一種面向分布式電能交易的智簡拜占庭容錯算法,通過引入門限簽名機制,將復雜的通信簡單化,進而縮短共識時延[4]。以上研究雖然一定程度上提高了區(qū)塊鏈物流管理系統(tǒng)的性能,但由于拜占庭算法在共識過程中需要逐個驗證的特點,驗證耗時仍然較長,且其中一個節(jié)點出現(xiàn)錯誤就可以影響整個系統(tǒng)的共識,不安全性較高。在以上研究基礎上,引入并行驗證策略對傳統(tǒng)拜占庭共識進行改進,并結合IBFT共識算法,提出一種基于并行驗證的改進IBFT共識算法,在保障安全性與容錯率的前提下,優(yōu)化共識過程的交易驗證速度,進而提升系統(tǒng)效率。
伊斯坦布爾拜占庭容錯(Istanbul Byzantine Fault Tolerant, IBFT)算法是啟發(fā)于實用拜占庭容錯(Practical Byzantine Fault Tolerance, PBFT)算法的一種修改共識算法[5]。相較于PBFT共識算法,IBFT具有更嚴格的驗證機制與更先進的加密算法,安全性更高,且可以在更短的時間內(nèi)達成共識,大幅提高了交易的確認速度[6]。然而與傳統(tǒng)拜占庭共識算法相同,IBFT的驗證過程同樣是按照時間順序進行,每個驗證結束后下個驗證才會開始,這大大增加了系統(tǒng)的驗證時間。為了提高系統(tǒng)的吞吐量與執(zhí)行效率,在IBFT中引入并行驗證策略,對其進行改進。
在區(qū)塊鏈的共識過程中,當一個提議者被選中時,需要向其他驗證者發(fā)送一個塊提議,再由其他節(jié)點對收到的塊提議進行驗證,以確保其符合既定的規(guī)則與約束[7]。常規(guī)的拜占庭共識通常只能按照順序一個一個對任務進行驗證,并行驗證策略則引入多線程的技術,通過在驗證時添加線程,由每個線程負責執(zhí)行不同的指令塊,使節(jié)點可以同時驗證多個任務[8]。
基于并行驗證策略的共識過程整體可以分為四個階段:塊提議、并行驗證、塊承諾和塊提交[9]。由負責提出新塊的節(jié)點,即提議者首先生成新塊,并將塊發(fā)送給其他節(jié)點;其他節(jié)點在收到來自提議者的新塊時,通過多線程技術對其進行并行驗證。當塊驗證通過且達成共識后,其他節(jié)點將承諾該區(qū)塊成為區(qū)塊鏈的新區(qū)塊,并由提議者在區(qū)塊鏈中添加新區(qū)塊[10]。系統(tǒng)共識過程中,節(jié)點并行驗證策略如圖1所示:
研究采用任務分解與同步線程實現(xiàn)高效的并行驗證策略。其中任務分解是指將驗證任務分解為三個獨立的子任務,并通過單獨的線程對每個子任務進行處理。通過任務分解,確保了每個子任務都能被并行執(zhí)行,從而最大程度地提高了驗證速度[11]。同步線程則是指在節(jié)點的信息驗證通過進入共識的下一階段,采用同步線程策略,通過條件變量來確保線程之間的安全通信與數(shù)據(jù)一致性,從而提高算法的性能。
基于線程池并發(fā)結構實現(xiàn)并發(fā)驗證邏輯。首先創(chuàng)建一個線程池,由線程池中的線程對任務進行管理。在節(jié)點收到塊提議后,將驗證任務分配給線程池里的線程,線程池的規(guī)模由系統(tǒng)資源和性能需求決定,每個線程需要獨立處理不同的驗證任務,任務包括查驗提議者身份、檢查新區(qū)塊的序列號和輪次等等[12]。
按照表1中的方法對數(shù)據(jù)結構和類型進行定義,以便系統(tǒng)在驗證過程中對各個實體訪問和操作[13]:
數(shù)據(jù)結構 |
儲存管理信息 |
Validator |
存儲驗證器的信息,包括節(jié)點的公鑰、私鑰、IP和地址 |
BlockProposal |
儲存塊提議的信息,包括提議者、區(qū)塊頭、序列號和輪次 |
ConsensusState |
儲存驗證器在共識過程中的狀態(tài)信息,包括PRE-PREPARE(準備)、PREPARED(確認)和COMMITTED(提交) |
Message |
儲存驗證器之間傳遞信息,包括發(fā)送者、消息類型、數(shù)據(jù)和接收者 |
按照表2中的方法實現(xiàn)共識過程中的消息處理與啟動定時器:
消息處理方法 |
任務 |
handle Message() |
負責處理接收到的消息。在節(jié)點收到提議時啟動定時器,并根據(jù)接收的消息類型選擇對應的驗證方法 |
generate Response Message() |
在節(jié)點完成驗證后,根據(jù)驗證結果生成響應消息,包括消息名稱、序列號、當前輪次、請求內(nèi)容 |
handle Round Change() |
在節(jié)點輪超時的情形下,廣播帶有currentRound+1的ROUNDCHANGE消息 |
按照表3中的驗證方法,實現(xiàn)各種驗證任務的執(zhí)行:
驗證方法 |
任務 |
verify Proposer() |
驗證提議者是否屬于驗證器集,以確定塊提議來源的有效性 |
verify Sequence and Round() |
驗證塊提議的輪次與序列號是否與驗證器的狀態(tài)匹配 |
verify Block Header() |
驗證區(qū)塊頭的簽名、散列及其他屬性,例如提議者和驗證區(qū)的簽名、固定數(shù)字的有效差異值和表示IBFT區(qū)塊的數(shù)字的有效散列 |
基于并行驗證的IBFT共識算法構建物流管理模型。在這個物流管理模型中,區(qū)塊鏈節(jié)點主要由生產(chǎn)商、原材料供應商、消費者和其他市場參與者構成[14]。具體流程如圖2所示:
其中驗證節(jié)點的選舉和調(diào)整通過既定規(guī)則和投票機制實現(xiàn)[13]。直到網(wǎng)絡中超過2/3的驗證節(jié)點達成共識,該區(qū)塊將被視為通過驗證,并添加至區(qū)塊鏈中。在公式過程中,由于IBFT公式算法強制將2/3的驗證節(jié)點通過請求作為達成共識的前提條件,避免了其中某個惡意節(jié)點對共識結果造成影響,從而為整個系統(tǒng)的安全運行提供保障。
隨著交易市場的擴大和參與者的增多,基于并行驗證的改進IBFT算法還可以根據(jù)實際需求調(diào)節(jié)驗證節(jié)點的數(shù)量,為算法提供良好的可擴展性[14]。并且共識的設計也使得物流管理模型在升級和更新時更為便利。算法可以通過調(diào)整共識參數(shù)、優(yōu)化共識過程或引入新的驗證節(jié)點選舉規(guī)則,不斷提升自己,以適應不斷變化的物流交易市場。
本次實驗基于Quorum區(qū)塊鏈平臺搭建,使用Hyperledger Caliper區(qū)塊鏈評估框架作為基準測試工具,Docker為部署工具,并在Ubuntu18.01操作系統(tǒng)上運行。系統(tǒng)配置i5-9600K中央處理器,服務器內(nèi)存為20 GB,硬盤儲存為100 GB。
Hyperledger Caliper區(qū)塊鏈評估框架通過使用一些預定義用途來衡量區(qū)塊鏈網(wǎng)絡的性能,它針對待檢測的系統(tǒng)生成工具負載并實時監(jiān)控其響應,然后結合事務吞吐量、事務延遲等評估網(wǎng)絡性能的重要指標,生成該網(wǎng)絡的性能評估報告。仿真選擇8個節(jié)點的大小的驗證器集,在無惡意節(jié)點的前提下,對不同提交、事務量與不同大小事務的提交下的并行驗證的IBFT共識算法測試。為了進一步了解算法優(yōu)越性,將所提算法的測試結果與Raft經(jīng)典共識算法和未改進的IBFT算法的結果進行比較[15]。
測試系統(tǒng)使用基于P2P網(wǎng)絡的去中心化結構,節(jié)點之間允許并通過異步消息傳遞的方式進行通信。通信包括PRE-PREPARE、PREPARE、COMMIT、ROUNDCHANGE四種消息類型,其中PRE-PREPARE代表提議者將塊提議廣播給所有驗證者;PREPARE代表驗證者在驗證塊提議后,將消息轉(zhuǎn)發(fā)給其他驗證者,表明自己已進入“確認共識”狀態(tài);COMMIT代表驗證者在收到足夠數(shù)目的來自其他驗證者的“確認共識”消息后,將此消息轉(zhuǎn)發(fā)給其他驗證者,表明自身已進入“提交共識”狀態(tài)。ROUNDCHANGE代表驗證者在超時后,將此消息發(fā)送給其他驗證者,表示進入下一輪。
采用區(qū)塊鏈系統(tǒng)關鍵指標事務吞吐量(Transactions Per Second, TPS)與事務延遲(Latency, L)作為所提改進共識算法的衡量指標。其中事務吞吐量是指以時間單位合并的事務總量,在區(qū)塊鏈系統(tǒng)中定義為區(qū)塊鏈網(wǎng)絡每秒成功處理的事務數(shù);事務延遲也叫共識時延,指事務合并所需要的時間,在區(qū)塊鏈系統(tǒng)中定義為事務提交之間的時間間隔,以及區(qū)塊鏈網(wǎng)絡中每個正確節(jié)點上結果可用的時間點。事務吞吐量與事務時延的計算公式如式(1)(2)所示:
式中,T表示完成的事務數(shù)量;ti和tj分別表示第一個事務進入系統(tǒng)的時間與最后一個事務被處理完成的時間。tu和ts分別代表共識過程開始和達成的時間。
基于Quorum平臺分別對基于所提IBFT算法的能源交易系統(tǒng)在標準化工作負載下與高并發(fā)情況下的性能表現(xiàn)進行綜合評價,并將評價結果分別與基于Raft共識協(xié)議與基于未改進IBFT共識協(xié)議的能源交易系統(tǒng)的評價結果進行比較。
設置發(fā)送事務大小為2 kB,對系統(tǒng)在交易發(fā)送率在600、1 200、1 800和2 400情況下,事務吞吐量的變化進行觀察。經(jīng)多次測試,三種共識算法的不同交易發(fā)送率下的平均事務吞吐量如圖3所示:
如圖3所示,隨著交易發(fā)送率的增加,三種共識算法的平均事務吞吐量都呈現(xiàn)上升趨勢。三種算法中,表現(xiàn)最差的是原始IBFT共識算法,雖然吞吐量隨著交易發(fā)送率增加而增加,但在三種算法中始終最低,對事物的處理有限。而所提算法雖然一開始略低于Raft共識算法,當交易發(fā)送率超過1 600 Tx/s后,開始出現(xiàn)反超。綜合來看,所提算法相較于原始IBFT共識算法與Raft共識算法能夠更有效地處理大量事務,共識性能更加優(yōu)越。
設置固定交易發(fā)送率為1 600 Tx/s, 對系統(tǒng)在發(fā)送事務大小分別為5 kB、12 kB和50 kB情況下,事務吞吐量的變化進行觀察。經(jīng)多次測試,三種共識算法在不同發(fā)送事務大小下的平均事務吞吐量如圖4所示:
如圖4所示,隨著發(fā)送事務大小增加,三種共識算法的平均事務吞吐量都呈現(xiàn)下降趨勢,且都逐漸趨于同一水平。三種算法中,所提算法在發(fā)送較小事務時,較Raft共識算法平均事務吞吐量略高,遠遠好于未改進的IBFT算法,性能表現(xiàn)在三種算法中最佳。綜上,說明所提基于并行驗證的IBFT共識方法有效提高了原始IBFT算法的性能,在處理不同大小事務時都具有較好的性能表現(xiàn),綜合性能最優(yōu)。
設置發(fā)送事務大小為2 kB,對系統(tǒng)在交易發(fā)送率在600、1 200、1 800和2 400情況下,事務延遲的性能變化進行觀察。經(jīng)多組測試,三種共識算法在不同交易發(fā)送率下平均事務延遲情況如圖5所示:
如圖5所示,相較于原始IBFT共識算法,所提算法在處理不同發(fā)送率下的事務,速度有了明顯提升,平均事務延遲耗時更短,處理效率更高。但是與Raft共識算法比較,所提改進算法的事務延遲時間仍然略高,這可能與Raft共識中的非完全去中心化機制有關,它使算法在事務延遲性能在一定程度上比拜占庭共識機制更具優(yōu)勢。綜上,所提算法使系統(tǒng)在整體共識過程的速度上得到了優(yōu)化,但相較于Raft算法仍有提升空間。
設置固定事務輸入率為1 600 Tx/s, 對系統(tǒng)在發(fā)送事務大小分別為5 kB、12 kB和50 kB情況下,事務延遲性能的變化進行觀察。經(jīng)多次測試,三種共識算法在不同發(fā)送事務大小下的平均事務延時如圖6所示:
如圖6所示,隨著發(fā)送事務大小的增加,三種共識算法的事務延遲都呈現(xiàn)上升趨勢。當系統(tǒng)處理事務大小為50 kB時,所提算法在平均事務延遲上的速度最快,相較于未改進的IBFT共識算法與Raft共識算法時延性能更優(yōu)越,表明所提算法在處理較大事務時完成效率更高。
綜上,提出一種基于并行驗證的改進IBFT共識算法,算法在傳統(tǒng)拜占庭基礎上引入共識策略,并結合IBFT算法,保障共識過程的快速性、安全性和高容錯率。測試結果表明,事務吞吐量指標上,在固定發(fā)送事務大小為2 kB的情況下,隨著交易發(fā)送率的增加,所提算法的事務吞吐量也在不斷提高,在交易發(fā)送率到達1 600Tx/s后時反超Raft共識算法,遠遠高于未改進IBFT共識算法;在固定交易發(fā)送率為1 600 Tx/s的情況下,隨著事務大小的增加共識算法的平均事務吞吐量都呈下降趨勢并逐漸趨同,而所提算法在發(fā)送較小事務時,略高于Raft共識算法,在三種比較共識算法中最佳。事務延遲指標上,所提算法相較于原始IBFT算法在處理不同發(fā)送率下的事務中,效率有了明顯提升,雖然略低于Raft共識算法,但是結果相近,說明算法具有較好的共識效率;隨著發(fā)送事務大小的增加,共識算法下的系統(tǒng)在處理事務上都有了更長的延遲時間。當處理事務大小為50 kB時,所提算法在事務上的平均處理速度最快。綜上,所提算法在處理較大事務上具有更快的事務吞吐量與完成效率,總體性能最佳,滿足基于區(qū)塊鏈的物流管理系統(tǒng)高性能要求。但是通過與Raft共識算法的比較可以發(fā)現(xiàn),算法在事務處理效率上還有進一步的提升空間,并且并行驗證方法在更大規(guī)模與更復雜網(wǎng)絡中的性能表現(xiàn)尚未得到驗證。因此,下一步研究將針對以上問題,在維持拜占庭共識容錯能力的條件下,對所提算法進行更高效的優(yōu)化,以滿足更多物流場景下的應用需求。