国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于改進(jìn)Raft共識(shí)算法和PBFT共識(shí)算法的雙層共識(shí)算法

2024-06-01 17:54:18袁昊天李飛
關(guān)鍵詞:拜占庭聲譽(yù)共識(shí)

袁昊天 李飛

摘 要:針對(duì)目前應(yīng)用于聯(lián)盟鏈中的實(shí)用拜占庭(PBFT)共識(shí)算法可擴(kuò)展性不足、通信開(kāi)銷增長(zhǎng)過(guò)大、難以適用于大規(guī)模網(wǎng)絡(luò)節(jié)點(diǎn)環(huán)境等問(wèn)題,提出了一種基于改進(jìn)Raft共識(shí)算法和PBFT共識(shí)算法的雙層共識(shí)算法(DL_RBFT)。首先將區(qū)塊鏈中的節(jié)點(diǎn)分成若干小組,組成下層共識(shí)網(wǎng)絡(luò),然后小組的組長(zhǎng)再構(gòu)成上層共識(shí)網(wǎng)絡(luò),形成一個(gè)雙層共識(shí)網(wǎng)絡(luò)結(jié)構(gòu);在下層共識(shí)網(wǎng)絡(luò)的小組內(nèi)部引入監(jiān)督機(jī)制和聲譽(yù)機(jī)制來(lái)改進(jìn)Raft共識(shí)算法,在初始組長(zhǎng)的選舉流程引入了蟻群算法,使選舉效率始終維持在較高水平;在上層共識(shí)網(wǎng)絡(luò)中,使用PBFT共識(shí)算法進(jìn)行共識(shí)。改進(jìn)后的Raft共識(shí)算法具備了抗拜占庭節(jié)點(diǎn)攻擊的能力,提升了算法的安全性。實(shí)驗(yàn)結(jié)果分析表明,相較于傳統(tǒng)的PBFT共識(shí)算法,在100個(gè)節(jié)點(diǎn)的情況下,DL_RBFT將共識(shí)時(shí)延降低了兩個(gè)數(shù)量級(jí),吞吐量也提升了一個(gè)數(shù)量級(jí),與其余改進(jìn)算法相比也有著明顯優(yōu)勢(shì)。因此DL_RBFT共識(shí)算法擁有良好的可擴(kuò)展性,可以廣泛應(yīng)用于聯(lián)盟鏈的各種場(chǎng)景中。

關(guān)鍵詞:聯(lián)盟鏈; 共識(shí)算法; Raft; PBFT; 區(qū)塊鏈; 雙層共識(shí)網(wǎng)絡(luò); 監(jiān)督機(jī)制; 聲譽(yù)機(jī)制

中圖分類號(hào):TP301 文獻(xiàn)標(biāo)志碼:A?文章編號(hào):1001-3695(2024)05-005-1314-07

doi:10.19734/j.issn.1001-3695.2023.08.0390

Double layer consensus algorithm based onimproved Raft consensus algorithm and PBFT

Abstract:This paper proposed a dual-layer consensus algorithm(DL_RBFT) based on the enhanced Raft and practical Byzantine fault tolerance(PBFT) consensus algorithms to address scalability issues, excessive communication overhead, and challenges in large-scale network node environments in use within consortium blockchains. Initially, it divided blockchain nodes into several groups to form a lower-layer consensus network. Then, leaders from these groups constituted an upper-layer consensus network, creating a dual-layer consensus structure. In the lower-layer consensus network, it improved Raft consensus algorithm by introducing supervision and reputation mechanisms, while the leader election process introduced ant colony optimization to maintain high efficiency. In the upper-layer consensus network, it utilized the PBFT consensus algorithm for consensus. The enhanced Raft consensus algorithm exhibited resistance to Byzantine node attacks, enhancing the algorithms security. Experimental results indicate that compared to traditional PBFT consensus algorithms, DL_RBFT reduces consensus latency by two orders of magnitude and improves throughput by one order of magnitude in a 100-node scenario. In comparison to other enhanced algorithms, DL_RBFT demonstrates significant advantages. Therefore, DL_RBFT consensus algorithm exhibits strong scalability and can be widely applied in various consortium blockchain scenarios.

Key words:consortium blockchains; consensus algorithm; Raft; PBFT; blockchain; dual-layer consensus network; supervision mechanism; reputation mechanism

0 引言

自2008年中本聰發(fā)布比特幣白皮書(shū)[1],區(qū)塊鏈[2]作為一種分布式、去中心化的技術(shù),憑借其不可竄改、透明、安全性高等優(yōu)勢(shì),受到各領(lǐng)域的關(guān)注。作為區(qū)塊鏈核心技術(shù)之一的共識(shí)機(jī)制,其保證了節(jié)點(diǎn)集群的安全性、穩(wěn)定性和一致性。隨著區(qū)塊鏈技術(shù)的快速發(fā)展,越來(lái)越多的人加入到區(qū)塊鏈網(wǎng)絡(luò)中,因而對(duì)區(qū)塊鏈節(jié)點(diǎn)體量的要求越來(lái)越大,對(duì)共識(shí)機(jī)制的要求也越來(lái)越高,因此,共識(shí)機(jī)制的可擴(kuò)展性、安全性和穩(wěn)定性就成為了區(qū)塊鏈領(lǐng)域的重點(diǎn)研究問(wèn)題[3]。

現(xiàn)有的共識(shí)機(jī)制有工作量證明(proof of work,PoW)[4]、權(quán)益證明(proof of stake,PoS)[5]、權(quán)益證明+權(quán)益投票(delegated proof of stake,DPoS)[6] 、工作量證明+權(quán)益證明(proof of work with proof of stake,PoW/PoS)[7]、優(yōu)先委托權(quán)益證明(preferential delegated proof of stake,PDPoS)[8]、Raft[9]、拜占庭容錯(cuò)共識(shí)(Byzantine fault tolerant consensus,BFT consensus)[10]、實(shí)用拜占庭容錯(cuò)共識(shí)(practical Byzantine fault tolerance,PBFT)[11]等。

根據(jù)節(jié)點(diǎn)準(zhǔn)入類型的不同,可以將區(qū)塊鏈劃分為公有鏈(public blockchain)、聯(lián)盟鏈(consortium blockchain)以及私有鏈(private blockchain)[12]三類。公有鏈?zhǔn)且环N完全開(kāi)放的區(qū)塊鏈網(wǎng)絡(luò);在公有鏈中,任何人都可以參與該網(wǎng)絡(luò)的節(jié)點(diǎn),并且可以進(jìn)行交易、添加新的區(qū)塊以及參與共識(shí)機(jī)制。在聯(lián)盟鏈中,參與的節(jié)點(diǎn)需要獲得邀請(qǐng)或滿足特定的準(zhǔn)入條件才能加入網(wǎng)絡(luò);一般情況下,聯(lián)盟鏈的節(jié)點(diǎn)由多個(gè)組織或?qū)嶓w共同管理;聯(lián)盟鏈的共識(shí)機(jī)制可能不同于完全去中心化的公有鏈,聯(lián)盟鏈通常更注重隱私性和可擴(kuò)展性,因?yàn)閰⑴c者之間可能需要一定程度的信任;聯(lián)盟鏈在特定行業(yè)或組織之間分享數(shù)據(jù)和交換價(jià)值的場(chǎng)景中被廣泛使用。AntChain、Zhi Xin Chain、XuperChain、Ti Chain、星火鏈、長(zhǎng)安鏈等,都是有名的聯(lián)盟鏈。私有鏈?zhǔn)且环N完全私有化的區(qū)塊鏈網(wǎng)絡(luò),參與節(jié)點(diǎn)由單個(gè)實(shí)體或組織控制。私有鏈的訪問(wèn)權(quán)限通常受到嚴(yán)格限制,只有授權(quán)的節(jié)點(diǎn)才能參與網(wǎng)絡(luò)的管理和交易活動(dòng)。

聯(lián)盟鏈相比于公鏈和私有鏈,更適合一些特定的企業(yè)和組織間合作的場(chǎng)景,因?yàn)槠淇梢蕴峁└叩碾[私性、可控性和可擴(kuò)展性。聯(lián)盟鏈在物聯(lián)網(wǎng)(IoT)[13]、供應(yīng)鏈管理[14]、電子健康記錄[15]、版權(quán)保護(hù)[16]、跨部門(mén)數(shù)據(jù)共享[17]、產(chǎn)品溯源[18]等領(lǐng)域有著廣闊的應(yīng)用前景。盡管聯(lián)盟鏈在這些應(yīng)用場(chǎng)景中表現(xiàn)出許多優(yōu)勢(shì),但它們?nèi)匀幻媾R一些挑戰(zhàn),比如擴(kuò)展性差、安全性低、吞吐量小等問(wèn)題。

目前在聯(lián)盟鏈的許多應(yīng)用中,使用最多的是PBFT共識(shí)算法,PBFT共識(shí)算法雖然不像PoW需要消耗大量的算力,但其時(shí)間復(fù)雜度為O(n2)[19],隨著鏈上節(jié)點(diǎn)數(shù)的增加,PBFT的通信開(kāi)銷呈現(xiàn)平方級(jí)的增長(zhǎng),共識(shí)效率急劇降低,故只適用于節(jié)點(diǎn)數(shù)量在一定范圍的場(chǎng)景。在供應(yīng)鏈管理、物聯(lián)網(wǎng)、跨部門(mén)數(shù)據(jù)共享、金融等領(lǐng)域,其對(duì)區(qū)塊鏈的可擴(kuò)展性和性能要求較高,節(jié)點(diǎn)的規(guī)??赡茉跀?shù)百上千,并且吞吐量要達(dá)到萬(wàn)級(jí),PBFT共識(shí)算法難以適用于這些場(chǎng)景。作為區(qū)塊鏈的核心技術(shù)之一,共識(shí)機(jī)制在很大程度上決定了區(qū)塊鏈的吞吐量、可擴(kuò)展性、安全性等,因此,改進(jìn)現(xiàn)有的共識(shí)機(jī)制是切實(shí)解決這些問(wèn)題的有效方法。

針對(duì)上述PBFT共識(shí)算法存在的問(wèn)題,文獻(xiàn)[20]引入了協(xié)調(diào)器技術(shù)對(duì)PBFT算法進(jìn)行改進(jìn),首先將交易交給協(xié)調(diào)器進(jìn)行分類,從中篩選出存在異常的交易,只對(duì)這部分交易執(zhí)行完整的共識(shí),使得共識(shí)延時(shí)縮短了79%;但是,該算法由于引入了協(xié)調(diào)器,會(huì)存在協(xié)調(diào)器單點(diǎn)故障導(dǎo)致整個(gè)系統(tǒng)失效的問(wèn)題。文獻(xiàn)[21]提出網(wǎng)絡(luò)自聚類的分組方法,提升了PBFT擴(kuò)展性不佳的問(wèn)題,但是節(jié)點(diǎn)間頻繁的通信導(dǎo)致通信復(fù)雜度增加,共識(shí)效率難以保證。文獻(xiàn)[22]提出一種分組策略,利用K-medoids聚類算法對(duì)節(jié)點(diǎn)進(jìn)行特征聚類和層次劃分,使得單次共識(shí)耗時(shí)縮短了20%,通信次數(shù)最佳能夠降低3個(gè)數(shù)量級(jí);但是該算法的時(shí)間復(fù)雜度依然是O(n2),并且搭建公識(shí)網(wǎng)絡(luò)的速度更慢,而且可能導(dǎo)致區(qū)塊鏈網(wǎng)絡(luò)所有節(jié)點(diǎn)的數(shù)據(jù)缺乏一致性。文獻(xiàn)[23]在文獻(xiàn)[22]的基礎(chǔ)上,在分組策略中加入了仿生優(yōu)化算法,提升了分組效率,又將組內(nèi)共識(shí)改變?yōu)镽aft共識(shí)機(jī)制,使得組內(nèi)共識(shí)算法的時(shí)間復(fù)雜度優(yōu)化為O(n),提升了共識(shí)效率;但仍然在一致性上存在問(wèn)題,且文獻(xiàn)[23]因?yàn)槠渫ㄐ帕鞒淘O(shè)計(jì),使得下層節(jié)點(diǎn)僅能知道上層節(jié)點(diǎn)的決定,不能作出干預(yù),故下層節(jié)點(diǎn)的存在意義存疑。文獻(xiàn)[24]提出一種基于一致性hash均勻分組的雙層共識(shí)算法,解決了分組不均的問(wèn)題,但是在分組時(shí)的多次hash增加了計(jì)算復(fù)雜度,降低了算法性能。

僅改進(jìn)PBFT算法,不能解決其算法設(shè)計(jì)層面帶來(lái)的時(shí)間復(fù)雜度高的問(wèn)題,可擴(kuò)展性差的問(wèn)題也不能從根源上解決。Raft共識(shí)機(jī)制是一種強(qiáng)領(lǐng)導(dǎo)型的共識(shí)算法,時(shí)間復(fù)雜度僅為O(n),在節(jié)點(diǎn)規(guī)模龐大的情況下,也能使得共識(shí)效率處于較好的水平,但是Raft共識(shí)機(jī)制本身不存在抗拜占庭攻擊的能力。因此,本文結(jié)合Raft共識(shí)機(jī)制的高效率特性和PBFT共識(shí)算法的抗拜占庭攻擊的特性,構(gòu)建一種基于Raft和PBFT算法的雙層共識(shí)(DL_RBFT)算法,在保證可擴(kuò)展性的同時(shí),保證共識(shí)網(wǎng)絡(luò)的抗拜占庭節(jié)點(diǎn)攻擊能力。

本文的主要研究工作如下:a)針對(duì)聯(lián)盟鏈實(shí)用拜占庭共識(shí)機(jī)制在大規(guī)模節(jié)點(diǎn)場(chǎng)景出現(xiàn)的時(shí)延爆炸問(wèn)題,結(jié)合Raft共識(shí)算法提出了一種基于改進(jìn)Raft共識(shí)算法和PBFT共識(shí)算法的雙層共識(shí)算法(double layer consensus algorithm based on improved Raft consensus algorithm and PBFT,DL_RBFT);b)針對(duì)改進(jìn)算法的安全性、一致性、活性進(jìn)行討論分析,論證了DL_RBFT算法的可行性;c)對(duì)DL_RBFT算法的共識(shí)延時(shí)、吞吐量和容錯(cuò)性進(jìn)行仿真實(shí)驗(yàn)測(cè)試,驗(yàn)證其有效性和安全性;d)對(duì)下層改進(jìn)的Raft算法中的選主策略進(jìn)行仿真模擬,驗(yàn)證算法的有效性。

1 相關(guān)知識(shí)

1.1 PBFT算法

1999年,Castro等人[25]提出了實(shí)用拜占庭共識(shí)算法,改進(jìn)了BFT算法的效率,使其時(shí)間復(fù)雜度從O(nf+1)降為O(n2),在滿足網(wǎng)絡(luò)中的總節(jié)點(diǎn)數(shù)N和拜占庭節(jié)點(diǎn)數(shù)f滿足N≥3f+1關(guān)系的前提下,可以保證網(wǎng)絡(luò)的正常運(yùn)行。

三階段共識(shí)流程和視圖更換流程是實(shí)用拜占庭共識(shí)機(jī)制的兩個(gè)主要流程[26]。

在三階段共識(shí)流程中,分為請(qǐng)求(request)、預(yù)準(zhǔn)備(pre-prepare)、準(zhǔn)備(prepare)、確認(rèn)(commit)、回復(fù)(reply)五個(gè)階段。在request階段,客戶端會(huì)向主記賬人(主節(jié)點(diǎn))發(fā)送請(qǐng)求消息。主節(jié)點(diǎn)收到消息后,流程進(jìn)入pre-prepare階段,主節(jié)點(diǎn)會(huì)生成預(yù)準(zhǔn)備消息廣播給網(wǎng)絡(luò)中所有的記賬人節(jié)點(diǎn)(從節(jié)點(diǎn))。在prepare階段,所有的從節(jié)點(diǎn)接收到預(yù)準(zhǔn)備消息并通過(guò)驗(yàn)證后,會(huì)將其余所有節(jié)點(diǎn)廣播準(zhǔn)備消息。commit階段,當(dāng)節(jié)點(diǎn)收到來(lái)自不同節(jié)點(diǎn)的準(zhǔn)備消息的數(shù)量>2f(不包括自己),就會(huì)向網(wǎng)絡(luò)中除自己以外的所有節(jié)點(diǎn)發(fā)送確認(rèn)消息。當(dāng)節(jié)點(diǎn)收到來(lái)自不同節(jié)點(diǎn)的確認(rèn)消息的數(shù)量>2f+1,進(jìn)入reply階段,并向客戶端發(fā)送回復(fù)消息。當(dāng)客戶端收到超過(guò)f+1個(gè)節(jié)點(diǎn)的有效回復(fù)消息后,會(huì)將這一次的共識(shí)判定為成功。其執(zhí)行流程如圖1所示。

當(dāng)主節(jié)點(diǎn)出現(xiàn)異常,并且被從節(jié)點(diǎn)判定已失效,就會(huì)進(jìn)入視圖更換流程,切換主節(jié)點(diǎn),進(jìn)入新一輪共識(shí),以保證共識(shí)的正常進(jìn)行。

1.2 Raft共識(shí)算法

2014年,Ongaro等人[27]提出了Raft算法。Raft的兩個(gè)核心部分是領(lǐng)導(dǎo)選舉和日志復(fù)制。在Raft共識(shí)算法中,節(jié)點(diǎn)有領(lǐng)導(dǎo)者(leader)、追隨者(follower)、候選人(candidate)三種狀態(tài),節(jié)點(diǎn)會(huì)在這三種狀態(tài)之間有條件地切換。

系統(tǒng)在任一時(shí)刻,有且僅有一個(gè)leader,leader會(huì)周期性地和follower維持心跳聯(lián)系。當(dāng)follower超過(guò)時(shí)間閾值仍然沒(méi)有收到來(lái)自leader的心跳,將會(huì)把自己的狀態(tài)從follower轉(zhuǎn)變?yōu)閏andidate,然后向其他節(jié)點(diǎn)廣播競(jìng)選消息,邀請(qǐng)其余節(jié)點(diǎn)投票。如果candidate在競(jìng)選時(shí)間超時(shí)前收到超過(guò)半數(shù)的投票,將會(huì)把自己的狀態(tài)轉(zhuǎn)變?yōu)閘eader,否則將會(huì)廣播下一輪競(jìng)選消息。節(jié)點(diǎn)狀態(tài)的流程如圖2所示。

在日志復(fù)制階段,leader首先會(huì)將交易打包并廣播給網(wǎng)絡(luò)中所有節(jié)點(diǎn),follower收到后,向leader反饋;在leader收到超過(guò)半數(shù)節(jié)點(diǎn)的回復(fù)信息后,會(huì)發(fā)送確認(rèn)信息給follower,并且將該區(qū)塊計(jì)入賬本,follower在收到來(lái)自leader的確認(rèn)信息后,也會(huì)將該區(qū)塊計(jì)入本地賬本。日志復(fù)制流程如圖3所示。

1.3 集群智能算法

典型的集群智能系統(tǒng)是由若干個(gè)彼此間可相互通信且只能完成簡(jiǎn)單行為的代理組成,這個(gè)集群沒(méi)有控制中心,行為簡(jiǎn)單,但可以通過(guò)彼此交互完成十分復(fù)雜的任務(wù),從整體上表現(xiàn)出智能。典型的群體智能算法包括蟻群算法、粒子群算法、混合蛙跳算法、煙花算法等,這些算法普遍具有自組織、靈活性高、無(wú)中心控制、低能耗、高魯棒性等特點(diǎn);但不同的算法有著不同的優(yōu)缺點(diǎn),適用于不同的問(wèn)題。

在本文研究的問(wèn)題中,在雙層共識(shí)網(wǎng)絡(luò)的下層結(jié)構(gòu)網(wǎng)絡(luò),節(jié)點(diǎn)群選擇leader和監(jiān)督節(jié)點(diǎn)時(shí),Raft算法的隨機(jī)性太強(qiáng),在節(jié)點(diǎn)規(guī)模龐大時(shí)會(huì)陷入無(wú)解情況,故引入群體智能算法來(lái)解決該問(wèn)題;同時(shí)還引入聲譽(yù)值作為影響決策的重要因子,并且隨著節(jié)點(diǎn)的不同操作,更新聲譽(yù)值;因此需要一個(gè)自適應(yīng)性強(qiáng)、魯棒性強(qiáng)和全局搜索能力強(qiáng)的算法優(yōu)化該流程。在上述的智能集群算法中,粒子群算法容易陷入局部最優(yōu)解、對(duì)初始值敏感以及難以處理約束條件, 不適用于尋找最高聲譽(yù)值的問(wèn)題;混合蛙跳算法依賴于不同個(gè)體之間的交流,應(yīng)用在本文研究的問(wèn)題中,會(huì)嚴(yán)重降低選主效率,故也不適用于選主問(wèn)題;煙花算法也容易陷入局部最優(yōu)解,參數(shù)過(guò)多且對(duì)參數(shù)的敏感性太高,隨機(jī)性太強(qiáng),同樣不適用于選主問(wèn)題。

而蟻群算法憑借以下優(yōu)勢(shì)[28],更適用于解決該問(wèn)題。

a)全局搜索能力強(qiáng)。通過(guò)螞蟻之間的信息素交流和反饋來(lái)引導(dǎo)搜索過(guò)程,能夠較好地探索問(wèn)題空間,并具有全局搜索能力,使得算法在求解復(fù)雜優(yōu)化問(wèn)題時(shí),能夠找到較優(yōu)的全局解。

b)自適應(yīng)性和自組織性。蟻群算法具有自適應(yīng)性和自組織性的特點(diǎn),螞蟻在搜索過(guò)程中不斷調(diào)整行為策略,根據(jù)環(huán)境和信息素的變化進(jìn)行適應(yīng)性調(diào)整。該特性使得蟻群算法能夠應(yīng)對(duì)動(dòng)態(tài)、復(fù)雜的問(wèn)題,適應(yīng)環(huán)境的變化。

c)分布式計(jì)算和并行性。蟻群算法的計(jì)算過(guò)程是分布式的,螞蟻在搜索過(guò)程中獨(dú)立執(zhí)行,各個(gè)螞蟻相互協(xié)作,通過(guò)信息素的交流和反饋來(lái)實(shí)現(xiàn)群體智能搜索。這種并行性使得蟻群算法在大規(guī)模問(wèn)題和并行計(jì)算環(huán)境下能夠具備較好的性能和效率。

d)魯棒性和容錯(cuò)性強(qiáng)。蟻群算法具有一定的魯棒性和容錯(cuò)性,即使在搜索過(guò)程中遭遇局部最優(yōu)解,通過(guò)信息素的揮發(fā)和更新,也可以幫助螞蟻擺脫陷入和跳出局部最優(yōu)解,進(jìn)一步搜索全局最優(yōu)解。

1997年,Dorigo等人[29]提出了一種元啟發(fā)式的蟻群算法,它是通過(guò)模擬螞蟻在尋找食物過(guò)程中的行為而發(fā)展起來(lái)的一類群體智能優(yōu)化算法。蟻群算法流程如圖4所示,其基本思想是模擬螞蟻在尋找食物時(shí)的行為。當(dāng)一只螞蟻找到一條路徑后,它會(huì)釋放一種化學(xué)物質(zhì)(信息素)來(lái)標(biāo)記這條路徑,其他螞蟻探測(cè)到這些信息素后,更有可能選擇沿著被標(biāo)記的路徑行走。隨著螞蟻數(shù)量的增加,更多的螞蟻選擇相同的路徑,導(dǎo)致該路徑上的信息素濃度增加。這樣,在信息素的引導(dǎo)下,螞蟻群體逐漸集中于較優(yōu)的路徑上,從而找到問(wèn)題的近似最優(yōu)解。

2 DL_RBFT算法模型

本文結(jié)合PBFT共識(shí)算法的抗拜占庭節(jié)點(diǎn)的安全性和Raft共識(shí)算法的高效率的優(yōu)點(diǎn),提出了一種基于改進(jìn)Raft共識(shí)算法和PBFT共識(shí)算法的雙層共識(shí)算法。在下層小組網(wǎng)絡(luò)中,設(shè)計(jì)了一種更高效、穩(wěn)定的選主方式,同時(shí)在分組時(shí),會(huì)爭(zhēng)取每個(gè)小組的節(jié)點(diǎn)數(shù)盡可能相同。為了增強(qiáng)Raft算法的抗拜占庭節(jié)點(diǎn)的能力,在小組內(nèi)引入了監(jiān)督節(jié)點(diǎn)。

2.1 DL_RBFT網(wǎng)絡(luò)結(jié)構(gòu)

在DL_RBFT共識(shí)算法中,存在兩層共識(shí)網(wǎng)絡(luò),下層共識(shí)網(wǎng)絡(luò)是一個(gè)個(gè)相互獨(dú)立的小組,每個(gè)小組都由1個(gè)組長(zhǎng)節(jié)點(diǎn)、1個(gè)監(jiān)督節(jié)點(diǎn)和若干個(gè)組員節(jié)點(diǎn)構(gòu)成。每個(gè)小組的組長(zhǎng)共同構(gòu)成上層的共識(shí)網(wǎng)絡(luò)。DL_RBFT的網(wǎng)絡(luò)結(jié)構(gòu)如圖5所示。

2.2 下層網(wǎng)絡(luò)主節(jié)點(diǎn)更新策略及監(jiān)督機(jī)制

在Raft共識(shí)算法中,當(dāng)節(jié)點(diǎn)數(shù)量規(guī)模達(dá)到一定程度后,會(huì)在一個(gè)時(shí)間點(diǎn)存在大量的candidate節(jié)點(diǎn)。由于每個(gè)節(jié)點(diǎn)處理事務(wù)的能力不同、網(wǎng)絡(luò)延遲不同,可能會(huì)導(dǎo)致follower節(jié)點(diǎn)的選票分散在各candidate節(jié)點(diǎn)上,導(dǎo)致選舉超時(shí),所以可能會(huì)花費(fèi)大量時(shí)間在選舉leader上。為了解決這一問(wèn)題,在初次選舉leader時(shí),本文引入聲譽(yù)機(jī)制和蟻群尋路算法,將高聲譽(yù)值節(jié)點(diǎn)模擬為蟻群搜尋目標(biāo)。在后續(xù)重新選舉leader時(shí),如果是有節(jié)點(diǎn)聲譽(yù)值達(dá)標(biāo),則采用聲譽(yù)值評(píng)判機(jī)制來(lái)作出抉擇,并且選擇出監(jiān)督節(jié)點(diǎn);如果是leader出現(xiàn)故障,則由監(jiān)督節(jié)點(diǎn)代替leader,follower中當(dāng)前聲譽(yù)值最高的擔(dān)任監(jiān)督節(jié)點(diǎn)。下面介紹小組內(nèi)節(jié)點(diǎn)選主策略和聲譽(yù)值機(jī)制。

在剛生成區(qū)塊鏈網(wǎng)絡(luò)時(shí)會(huì)隨機(jī)指定一個(gè)臨時(shí)組長(zhǎng),然后小組內(nèi)的節(jié)點(diǎn)會(huì)先向所有人發(fā)送一條消息,消息中記錄著本條消息發(fā)送時(shí)間的時(shí)間戳timestampsend。當(dāng)節(jié)點(diǎn)收到其余節(jié)點(diǎn)發(fā)送的消息時(shí),會(huì)記錄收到該消息的時(shí)間戳timestampreceive,并計(jì)算時(shí)間差timedifferi=timestampreceive-timestampsend,并廣播給其余節(jié)點(diǎn)該節(jié)點(diǎn)的通信時(shí)延。當(dāng)節(jié)點(diǎn)收到來(lái)自其余節(jié)點(diǎn)的通信時(shí)延消息,并且超過(guò)2/3的節(jié)點(diǎn)所記錄的數(shù)據(jù)差異不大時(shí),會(huì)將自己收集到的時(shí)延信息發(fā)送給臨時(shí)組長(zhǎng)。臨時(shí)組長(zhǎng)會(huì)將消息整合,根據(jù)時(shí)延信息先進(jìn)行標(biāo)準(zhǔn)化和歸一化,然后對(duì)所有節(jié)點(diǎn)的聲譽(yù)值進(jìn)行初始化,如式(1)~(5)所示,其中n為節(jié)點(diǎn)數(shù)。

聲譽(yù)值生成后,臨時(shí)組長(zhǎng)會(huì)將聲譽(yù)值信息廣播給所有節(jié)點(diǎn),并告知節(jié)點(diǎn)開(kāi)始進(jìn)行l(wèi)eader競(jìng)選。

在首次leader競(jìng)選中,默認(rèn)聲譽(yù)值排第2的節(jié)點(diǎn)作為臨時(shí)監(jiān)督節(jié)點(diǎn),聲譽(yù)值排名前x(3≤x≤10)位的節(jié)點(diǎn)會(huì)成為candidate節(jié)點(diǎn),然后根據(jù)聲譽(yù)值和蟻群尋路算法進(jìn)行l(wèi)eader選舉。

算法中符號(hào)含義如表1所示。

算法1 蟻群選主算法

輸入:value,random,α,i=0,β。

輸出:leader和監(jiān)督節(jié)點(diǎn)。

a)if i<n 轉(zhuǎn)至步驟b),else i=0,并把票數(shù)全部歸0,轉(zhuǎn)至步驟b) //檢測(cè)所有節(jié)點(diǎn)是否投票

b)if random<α+β,轉(zhuǎn)至步驟c);else 轉(zhuǎn)至步驟d) /*α和β視不同情況決定*/

c)votemax++,valuemax=valuemax×1.1,轉(zhuǎn)至步驟e) /*聲譽(yù)值最大的節(jié)點(diǎn)的票數(shù)和聲譽(yù)值更新*/

d)隨機(jī)選擇一個(gè)不超過(guò)x的正整數(shù),然后votem++,valuem=valuem×1.1,轉(zhuǎn)至步驟e) //隨機(jī)節(jié)點(diǎn)的票數(shù)和聲譽(yù)值更新

e)if 不存在節(jié)點(diǎn)的選票超過(guò)半數(shù)i++, 轉(zhuǎn)至步驟a), else選票超過(guò)半數(shù)的節(jié)點(diǎn)成為leader,聲譽(yù)值第二大的節(jié)點(diǎn)成為監(jiān)督節(jié)點(diǎn),聲譽(yù)值和票數(shù)清零,end //選擇leader和監(jiān)督節(jié)點(diǎn),并對(duì)聲譽(yù)值和票數(shù)進(jìn)行歸0操作

在leader產(chǎn)生后,會(huì)向follower節(jié)點(diǎn)定時(shí)發(fā)送心跳信息,如若有follower節(jié)點(diǎn)超時(shí)未收到心跳信息,則會(huì)向監(jiān)督節(jié)點(diǎn)匯報(bào)leader異常,當(dāng)監(jiān)督節(jié)點(diǎn)收到超過(guò)半數(shù)的節(jié)點(diǎn)發(fā)來(lái)的leader節(jié)點(diǎn)異常信息,則會(huì)將自己的狀態(tài)轉(zhuǎn)換為leader,并廣播給所有節(jié)點(diǎn),同時(shí)會(huì)指派聲譽(yù)值最高的follower節(jié)點(diǎn)成為監(jiān)督節(jié)點(diǎn)來(lái)維持正常的共識(shí)功能。小組leader更新流程如圖6所示。

在共識(shí)過(guò)程中,與傳統(tǒng)Raft共識(shí)流程不同的是,follower節(jié)點(diǎn)的確認(rèn)消息會(huì)同時(shí)發(fā)送給監(jiān)督節(jié)點(diǎn)和leader,leader在記錄區(qū)塊后,也會(huì)將反饋信息發(fā)送給監(jiān)督節(jié)點(diǎn)。如果監(jiān)督節(jié)點(diǎn)發(fā)現(xiàn)消息異常,就會(huì)變成leader,然后指派聲譽(yù)值最高的follower節(jié)點(diǎn)作為監(jiān)督節(jié)點(diǎn)來(lái)維持正常的共識(shí)功能。

在聲譽(yù)值機(jī)制中:

a)leader節(jié)點(diǎn)和監(jiān)督節(jié)點(diǎn)不會(huì)參與聲譽(yù)值更新;

b)在產(chǎn)生leader和監(jiān)督節(jié)點(diǎn)后,所有節(jié)點(diǎn)的聲譽(yù)值都會(huì)清0;

c)聲譽(yù)值共分為Vbad、Vnormal、Vgood、Vbetter和Vbest五個(gè)等級(jí),分別對(duì)應(yīng)0~20、21~40、41~60、61~80、81~100;

d)節(jié)點(diǎn)聲譽(yù)值到達(dá)100,就開(kāi)始競(jìng)選leader。

節(jié)點(diǎn)聲譽(yù)值更新公式如式(6)(7)所示。

a)懲罰公式:

b)獎(jiǎng)勵(lì)公式:

其中:Vi表示小組內(nèi)第i個(gè)節(jié)點(diǎn)的聲譽(yù)值,Vpreviousi表示第i個(gè)節(jié)點(diǎn)上一次的聲譽(yù)值。

2.3 DL_RBFT共識(shí)流程

在對(duì)鏈上所有節(jié)點(diǎn)進(jìn)行分組、組內(nèi)leader選舉形成雙層共識(shí)結(jié)構(gòu)后,各組長(zhǎng)間進(jìn)行PBFT共識(shí),組內(nèi)則采用改進(jìn)的Raft算法進(jìn)行共識(shí)。形成的雙層共識(shí)算法在擴(kuò)展性、安全性和共識(shí)效率上均取得了一定程度的提升。

DL_RBFT算法的共識(shí)流程如下:

定義小組數(shù)為G=3f+1,PBFT主節(jié)點(diǎn)編號(hào)為p,從節(jié)點(diǎn)編號(hào)為i,客戶端編號(hào)為c,客戶端請(qǐng)求消息的編號(hào)為reqID,請(qǐng)求消息為msg,請(qǐng)求消息的摘要為dig(msg),節(jié)點(diǎn)p對(duì)msg簽名后記作〈msg〉σp,消息的時(shí)間戳記作timestamp,最終執(zhí)行結(jié)果為reqs,本次共識(shí)的視圖編號(hào)為Vid。

a)區(qū)塊鏈按照2.1和2.2節(jié)中的方法分成G個(gè)小組,并選舉leader,即組長(zhǎng)。

b)客戶端c發(fā)送msg到主節(jié)點(diǎn)p,開(kāi)始進(jìn)行上層共識(shí),即組間共識(shí)。

c)PBFT主節(jié)點(diǎn)p向其余從節(jié)點(diǎn)發(fā)送預(yù)準(zhǔn)備消息〈〈pre_prepare,reqID,msg〉σp,dig(msg)〉。

d)PBFT從節(jié)點(diǎn)接受到預(yù)準(zhǔn)備消息后,會(huì)對(duì)消息進(jìn)行驗(yàn)證檢查,若合法,則所有從節(jié)點(diǎn)向除自己以外的所有節(jié)點(diǎn)廣播自己簽名后的消息〈prepare,reqID,dig(msg),i〉σp。

e)當(dāng)節(jié)點(diǎn)(組長(zhǎng))收到超過(guò)2f個(gè)節(jié)點(diǎn)的準(zhǔn)備消息并驗(yàn)證確認(rèn)后,會(huì)將消息帶入小組內(nèi),進(jìn)行組內(nèi)共識(shí)。

(a)組長(zhǎng)向監(jiān)督節(jié)點(diǎn)和所有組員節(jié)點(diǎn)廣播消息。

(b)組員節(jié)點(diǎn)收到消息,驗(yàn)證確認(rèn)后向組長(zhǎng)節(jié)點(diǎn)和監(jiān)督節(jié)點(diǎn)發(fā)送確認(rèn)信息,監(jiān)督節(jié)點(diǎn)收到超過(guò)3n/4個(gè)節(jié)點(diǎn)發(fā)送的確認(rèn)信息,組長(zhǎng)節(jié)點(diǎn)收到超過(guò)n/2個(gè)節(jié)點(diǎn)發(fā)送的確認(rèn)信息(n為小組組員節(jié)點(diǎn)總數(shù)),則進(jìn)入下一階段,否則認(rèn)為本輪共識(shí)無(wú)效。

(c)監(jiān)督節(jié)點(diǎn)對(duì)組長(zhǎng)節(jié)點(diǎn)進(jìn)行審查,審查通過(guò),繼續(xù)完成共識(shí),組長(zhǎng)節(jié)點(diǎn)將消息上鏈,并返回上層網(wǎng)絡(luò);審查不通過(guò),進(jìn)行組長(zhǎng)更換,具體流程如2.2節(jié)所述。

f)組長(zhǎng)節(jié)點(diǎn)向PBFT網(wǎng)絡(luò)除自己以外的所有節(jié)點(diǎn)廣播確認(rèn)消息〈commit,reqID,dig(msg),i〉σp。

g)當(dāng)節(jié)點(diǎn)收到超過(guò)2f+1個(gè)來(lái)自其他節(jié)點(diǎn)發(fā)來(lái)的確認(rèn)消息,則認(rèn)定該消息已確定,并向客戶端c發(fā)送回復(fù)消息〈reply,Vid,timestamp,c,i,reqs〉σi。

DL_RBFT算法的完整共識(shí)流程如圖7所示。

3 算法分析

本文的DL_RBFT共識(shí)算法是針對(duì)聯(lián)盟鏈提出來(lái)的,本章對(duì)DL_RBFT共識(shí)算法的安全性、一致性、活性進(jìn)行理論分析,對(duì)通信開(kāi)銷進(jìn)行分析并與PBFT、 Raft算法進(jìn)行對(duì)比。DL_RBFT共識(shí)算法是基于PBFT共識(shí)算法和Raft共識(shí)算法構(gòu)建的,引入了監(jiān)督機(jī)制、聲譽(yù)機(jī)制和蟻群算法,也對(duì)Raft選主流程做了一定改進(jìn),使得算法的安全性和活性都有一定的提升。

3.1 安全性

在組長(zhǎng)節(jié)點(diǎn)組成的上層共識(shí)網(wǎng)絡(luò)中,共識(shí)的安全性由PBFT算法自身的抗拜占庭節(jié)點(diǎn)特性提供。拜占庭節(jié)點(diǎn)不超過(guò)組長(zhǎng)節(jié)點(diǎn)總數(shù)的1/3時(shí),系統(tǒng)安全性由PBFT共識(shí)流程中的三階段共識(shí)流程保證;當(dāng)主節(jié)點(diǎn)出現(xiàn)異常時(shí),系統(tǒng)通過(guò)切換視圖來(lái)更換主節(jié)點(diǎn),以此來(lái)保證安全性。

在下層共識(shí)網(wǎng)絡(luò)的小組中,在傳統(tǒng)的Raft算法中引入了監(jiān)督機(jī)制,使得Raft算法擁有了抗拜占庭攻擊的能力。如果組長(zhǎng)發(fā)送給監(jiān)督節(jié)點(diǎn)的確認(rèn)消息與監(jiān)督節(jié)點(diǎn)自己從組員處收集到的消息不一致,將觸發(fā)組長(zhǎng)更新事件來(lái)保證共識(shí)的正常進(jìn)行。

假設(shè)小組內(nèi)節(jié)點(diǎn)數(shù)量為n,拜占庭節(jié)點(diǎn)數(shù)量為f。拜占庭節(jié)點(diǎn)收到來(lái)自組長(zhǎng)的消息msg后,可能不處理消息,或者作出假消息msg′,但是會(huì)向監(jiān)督節(jié)點(diǎn)發(fā)送正確的消息msg。那么監(jiān)督節(jié)點(diǎn)收到的M條一致消息中,可能存在f個(gè)拜占庭節(jié)點(diǎn)的惡意消息。為了保證M中存在一半以上由誠(chéng)實(shí)節(jié)點(diǎn)發(fā)送來(lái)的消息msg,應(yīng)滿足

因此,在下層共識(shí)網(wǎng)絡(luò)中,引入監(jiān)督節(jié)點(diǎn)可以保證拜占庭節(jié)點(diǎn)在不超過(guò)n/4的情況下,共識(shí)能正常運(yùn)行。

小組內(nèi)的組長(zhǎng)和監(jiān)督節(jié)點(diǎn)也會(huì)在組員聲譽(yù)值達(dá)標(biāo)或者自身出現(xiàn)異常時(shí)進(jìn)行組長(zhǎng)和監(jiān)督節(jié)點(diǎn)的更新,以確保不會(huì)存在單點(diǎn)失效的問(wèn)題。

3.2 一致性

由CAP定理[30]可知,在一個(gè)分布式系統(tǒng)中,最多同時(shí)滿足一致性、可用性、分區(qū)容錯(cuò)性三個(gè)屬性中的兩個(gè)。但是為了保證系統(tǒng)的可用性,一般會(huì)根據(jù)BASE理論[31]來(lái)構(gòu)建系統(tǒng),達(dá)到最終一致性而非強(qiáng)一致性。

在組長(zhǎng)構(gòu)成的上層共識(shí)網(wǎng)絡(luò)中,PBFT保證了在拜占庭節(jié)點(diǎn)數(shù)量不超過(guò)組長(zhǎng)節(jié)點(diǎn)數(shù)量的1/3時(shí)的一致性。在小組內(nèi)部,通過(guò)Raft算法的日志復(fù)制來(lái)保證一致性,即使有節(jié)點(diǎn)宕機(jī),也可以在恢復(fù)后從組長(zhǎng)處下載完整的日志記錄,達(dá)成最終一致性。

3.3 活性

在上層網(wǎng)絡(luò)中,活性由PBFT算法的視圖切換協(xié)議來(lái)保證。當(dāng)PBFT主節(jié)點(diǎn)出現(xiàn)異常,無(wú)法正常響應(yīng)客戶端時(shí),通過(guò)p=v mod k確定新的主節(jié)點(diǎn)來(lái)推動(dòng)共識(shí)流程正常進(jìn)行,p為主節(jié)點(diǎn)編號(hào),v為當(dāng)前視圖編號(hào),k為參與PBFT共識(shí)的節(jié)點(diǎn)總數(shù)。

下層網(wǎng)絡(luò)中follower會(huì)和leader保持心跳消息聯(lián)系,倘若響應(yīng)時(shí)間超時(shí),則會(huì)觸發(fā)leader更新協(xié)議,使監(jiān)督節(jié)點(diǎn)暫代leader,直至下次leader選舉;同時(shí),新產(chǎn)生的leader會(huì)代替原leader履行其在上層網(wǎng)絡(luò)中的職責(zé),增強(qiáng)了PBFT算法的活性。

3.4 通信開(kāi)銷分析

在本節(jié)中,假設(shè)區(qū)塊鏈的分組數(shù)為G,每個(gè)小組的節(jié)點(diǎn)數(shù)為n,且G≥4,n≥4,則整個(gè)鏈上的總節(jié)點(diǎn)數(shù)為N=G×n。

1)單次PBFT共識(shí)流程通信次數(shù)

若使用傳統(tǒng)的PBFT共識(shí)算法進(jìn)行一次共識(shí),在request階段,客戶端向主節(jié)點(diǎn)發(fā)送請(qǐng)求,通信1次;在pre-prepare階段,主節(jié)點(diǎn)向其余節(jié)點(diǎn)發(fā)送預(yù)準(zhǔn)備消息,總共通信N-1次;在prepare階段,每一個(gè)收到預(yù)準(zhǔn)備消息的節(jié)點(diǎn),向其余節(jié)點(diǎn)發(fā)送prepare消息,此過(guò)程通信次數(shù)為(N-1)2;在commit階段,每個(gè)節(jié)點(diǎn)向其余節(jié)點(diǎn)發(fā)送確認(rèn)消息,總共通信N×(N-1)次;在reply階段,所有節(jié)點(diǎn)向客戶端發(fā)送回復(fù)消息,一共通信N次。由此可知,單次PBFT共識(shí)流程的總通信次數(shù)為

CPBFT=1+(N-1)+(N-1)2+N(N-1)+N=2N2-N+1(10)

2)單次Raft共識(shí)流程通信次數(shù)

若使用傳統(tǒng)的Raft共識(shí)算法進(jìn)行一次共識(shí),leader收到請(qǐng)求消息后,會(huì)向所有的follower發(fā)送消息,通信N-1次;然后follower會(huì)向leader返回處理消息,通信N-1次;日志復(fù)制會(huì)發(fā)生在下一次請(qǐng)求或者心跳中,故單獨(dú)計(jì)算通信次數(shù)。由此可知,單次Raft共識(shí)流程的總通信次數(shù)為

CRaft=(N-1)+(N-1)=2N-2(11)

3)單次DL_RBFT共識(shí)流程通信次數(shù)

若本文DL_RBFT共識(shí)算法進(jìn)行一次共識(shí),在上層共識(shí)網(wǎng)絡(luò)中,各組長(zhǎng)進(jìn)行PBFT共識(shí),通信次數(shù)為2G2-G+1;在下層共識(shí)網(wǎng)絡(luò)的小組內(nèi)部,leader先向監(jiān)督節(jié)點(diǎn)和follower廣播消息,通信次數(shù)為N-1次;然后follower向leader和監(jiān)督節(jié)點(diǎn)返回處理消息,通信2(N-2)次;最后監(jiān)督節(jié)點(diǎn)對(duì)leader處理信息進(jìn)行審查,通信次數(shù)為2。由此可知單次DL_RBFT共識(shí)流程的總通信次數(shù)為

CDL_RBFT=2G2-G+1+G[(N-1)+2(N-2)+2]=2G2+3N-4G+1(12)

由上述分析可得,DL_RBFT共識(shí)算法將PBFT的時(shí)間復(fù)雜度從O(N2)降為了O(N+G2)。圖8為不同節(jié)點(diǎn)數(shù),PBFT、Raft和DL_RBFT共識(shí)算法的單次共識(shí)次數(shù)對(duì)比結(jié)果,其中展示了DL_RBFT共識(shí)算法將節(jié)點(diǎn)分為4組和5組的情況。

從圖8可以看出,隨著節(jié)點(diǎn)個(gè)數(shù)的增加,PBFT的通信次數(shù)急劇上升,當(dāng)節(jié)點(diǎn)數(shù)為50時(shí),需要近5 000次通信才能完成一次共識(shí);而DL_RBFT和Raft共識(shí)算法的通信次數(shù)非常接近,且增長(zhǎng)速度也非常緩慢。

因此,DL_RBFT共識(shí)算法顯著地降低了單次共識(shí)中的通信次數(shù),并且隨著節(jié)點(diǎn)數(shù)增加,這種優(yōu)勢(shì)相比于傳統(tǒng)PBFT算法更為顯著。

4 實(shí)驗(yàn)及結(jié)果分析

本文實(shí)驗(yàn)通過(guò)在一個(gè)設(shè)備上監(jiān)聽(tīng)多個(gè)不同的TCP端口,對(duì)PBFT共識(shí)算法、基于網(wǎng)絡(luò)自聚類PBFT算法(NAC-PBFT)[21]、基于主節(jié)點(diǎn)隨機(jī)選取的改進(jìn)PBFT算法(RPBFT)[32]、基于節(jié)點(diǎn)分組信譽(yù)模型的改進(jìn)PBFT算法(GR-PBFT)[33]以及本文DL_RBFT共識(shí)算法在共識(shí)延時(shí)和吞吐量進(jìn)行對(duì)比分析,還對(duì)Raft的leader選舉效率和本文改進(jìn)的選舉方案進(jìn)行對(duì)比分析,實(shí)驗(yàn)配置如表2所示。

4.1 共識(shí)時(shí)延測(cè)試

在區(qū)塊鏈中,共識(shí)時(shí)延指的是從客戶端提交交易請(qǐng)求開(kāi)始,一直到完成確認(rèn)所花費(fèi)的時(shí)間,是評(píng)價(jià)共識(shí)算法性能的重要指標(biāo)之一。在實(shí)驗(yàn)中,共識(shí)時(shí)延的計(jì)算公式為

DT=timereq-timereply(13)

其中:timereply是客戶端發(fā)起請(qǐng)求的時(shí)間,timereq是客戶端收到足夠數(shù)量的節(jié)點(diǎn)回復(fù)的時(shí)間。將節(jié)點(diǎn)分成不同的組數(shù),多次實(shí)驗(yàn)求平均值作為共識(shí)時(shí)延,并且與PBFT共識(shí)算法和文獻(xiàn)[21,31,32]改進(jìn)算法的時(shí)延作對(duì)比,結(jié)果如圖9、10所示。

從圖9可以看出,隨著節(jié)點(diǎn)數(shù)的增加,共識(shí)時(shí)延有不同程度的上升,其中PBFT系算法上升得格外迅速,但DL_RBFT算法的增長(zhǎng)較為緩慢。當(dāng)節(jié)點(diǎn)數(shù)為120時(shí),PBFT的時(shí)延已經(jīng)超過(guò)20 000 ms,三個(gè)改進(jìn)PBFT算法均超過(guò)15 000 ms,而DL_RBFT算法的時(shí)延均不到3 000 ms,與PBFT算法相比,時(shí)延降低了近85%,與文獻(xiàn)[21,31,32]的改進(jìn)算法相比,在大規(guī)模節(jié)點(diǎn)的環(huán)境下,DL_RBFT算法共識(shí)時(shí)延也降低了80%左右。因此DL_RBFT算法因其雙層共識(shí)網(wǎng)絡(luò)的特性,能在大規(guī)模節(jié)點(diǎn)網(wǎng)絡(luò)中保持較低的共識(shí)時(shí)延。

從圖10可以看出,在DL_RBFT算法中,將節(jié)點(diǎn)分成不同組數(shù),共識(shí)時(shí)延會(huì)有細(xì)微差別,組數(shù)越少,時(shí)延起點(diǎn)越低,但增長(zhǎng)速率越快,反之起點(diǎn)越高,但增長(zhǎng)速率低;總體來(lái)說(shuō),時(shí)間復(fù)雜度都是O(n),算法的效率不會(huì)有太大差異,證明了DL_RBFT算法具有較強(qiáng)的健壯性和穩(wěn)定性。

4.2 吞吐量測(cè)試

吞吐量是指系統(tǒng)在單位時(shí)間內(nèi)處理的事務(wù)數(shù)量,在區(qū)塊鏈領(lǐng)域中常用每秒完成交易數(shù)(transactions per second,TPS)來(lái)衡量,假設(shè)在Δt的出塊時(shí)間內(nèi)完成的交易數(shù)量為T(mén)ransactionΔt,則吞吐量計(jì)算公式為

將節(jié)點(diǎn)分成不同的組數(shù),多次實(shí)驗(yàn)求平均值作為共識(shí)時(shí)延,并且與PBFT共識(shí)算法和文獻(xiàn)[21,31,32]的改進(jìn)算法的吞吐量進(jìn)行對(duì)比。對(duì)比結(jié)果如圖11、12所示。

從圖11可以看出,隨著節(jié)點(diǎn)數(shù)增加,幾種算法的TPS都呈現(xiàn)下降趨勢(shì),但是PBFT算法的下降趨勢(shì)最快,在很短時(shí)間就趨近為0,而DL_RBFT算法的吞吐量下降速度很緩慢,盡管在節(jié)點(diǎn)數(shù)很少的情況下稍低于文獻(xiàn)[21,31,32]的改進(jìn)算法的吞吐量,但是在本文研究的大規(guī)模節(jié)點(diǎn)的網(wǎng)絡(luò)中,仍有較好的吞吐量,這是PBFT算法與其余三種改進(jìn)算法不具備的特性。因此,DL_RBFT算法適用于對(duì)吞吐量有著較高要求的聯(lián)盟鏈環(huán)境。

從圖12可以看出,將節(jié)點(diǎn)分成不同組數(shù),組數(shù)不同,DL_RBFT算法的TPS也不同,但變化并不大,在大規(guī)模節(jié)點(diǎn)的使用環(huán)境中,仍然能保有一定的吞吐量,再次證明了DL_RBFT算法具有較強(qiáng)的健壯性和穩(wěn)定性。

4.3 初始leader選擇效率

初始leader選擇效率是指在剛組成小組時(shí),對(duì)正式組長(zhǎng)選舉的效率。 在引入了聲譽(yù)機(jī)制和蟻群算法的選舉算法中,設(shè)置信息素和過(guò)往決策共占20%、40%和50%的權(quán)重,并與Raft中的傳統(tǒng)選擇機(jī)制進(jìn)行對(duì)比,對(duì)比結(jié)果如圖13和14所示。

從圖13可以看出,隨著節(jié)點(diǎn)數(shù)增加,Raft原始的選舉機(jī)制所消耗的輪數(shù)增長(zhǎng)得非??欤肓寺曌u(yù)機(jī)制和蟻群算法的改進(jìn)選舉機(jī)制則維持在一個(gè)小區(qū)間內(nèi),并且十分穩(wěn)定。

從圖14也可以看出,改進(jìn)后的選舉機(jī)制所消耗的時(shí)間與原來(lái)相比急劇下降,在120個(gè)節(jié)點(diǎn)的情況下,三種權(quán)重下的改進(jìn)機(jī)制的耗時(shí)相比于原始機(jī)制都下降了50%左右,并且權(quán)重占比越高,所消耗時(shí)間越少。因此改進(jìn)后的初始組長(zhǎng)選舉機(jī)制更適用于大規(guī)模節(jié)點(diǎn)的情況,使得雙層共識(shí)網(wǎng)絡(luò)的構(gòu)建更加迅速。

5 結(jié)束語(yǔ)

本文提出了一種基于改進(jìn)Raft共識(shí)算法和PBFT共識(shí)算法的雙層共識(shí)算法——DL_RBFT。該算法很好地結(jié)合了PBFT抗拜占庭節(jié)點(diǎn)攻擊和Raft共識(shí)效率高的優(yōu)點(diǎn),并且引入監(jiān)督機(jī)制、聲譽(yù)機(jī)制和蟻群算法改進(jìn)選主流程,提高了算法效率,為共識(shí)過(guò)程中的安全性提供了保證。實(shí)驗(yàn)結(jié)果證明,DL_RBFT通信次數(shù)、通信時(shí)延均優(yōu)于PBFT算法,并且可擴(kuò)展性更高,吞吐量更大,更適用于大規(guī)模網(wǎng)絡(luò)節(jié)點(diǎn)的環(huán)境,有效地突破了現(xiàn)有聯(lián)盟鏈的性能瓶頸。

未來(lái)將進(jìn)一步完善算法的細(xì)節(jié),提升性能,考慮結(jié)合跨鏈技術(shù),進(jìn)一步解決聯(lián)盟鏈中存在的問(wèn)題。

參考文獻(xiàn):

[1]Nakamoto S. Bitcoin: a peer-to-peer electronic cash system[EB/OL]. (2008). https://bitcoin.org/en/bitcoin-paper.

[2]Xu Min, Chen Xingtong, Kou Gang. A systematic review of blockchain[J]. Financial Innovation, 2019,5(1): 1-14.

[3]Monrat A A, Schelén O, Andersson K. A survey of blockchain from the perspectives of applications, challenges, and opportunities[J]. IEEE Access, 2019,7: 117134-117151.

[4]Feng Tao, Liu Yufeng. Research on PoW protocol security under optimized long delay attack[J]. Cryptography, 2023,7(2): 32.

[5]Cao Bin, Zhang Zhenghui, Feng Daquan, et al. Performance analysis and comparison of PoW, PoS and DAG based blockchains[J]. Digi-tal Communications and Networks, 2020,6(4): 480-485.

[6]Platt M, McBurney P. Sybil in the haystack: a comprehensive review of blockchain consensus mechanisms in search of strong sybil attack resistance[J]. Algorithms, 2023,16(1): 34.

[7]Zhang Rong, Chan W K V. Evaluation of energy consumption in block-chains with proof of work and proof of stake[J]. Journal of Physics: Conference Series, 2020,1584(1): 012023.

[8]Bachani V, Bhattacharjya A. Preferential delegated proof of stake (PDPoS) —modified DPoS with two layers towards scalability and higher TPS[J]. Symmetry, 2022,15(1): 4.

[9]Surjandari I, Yusuf H, Laoh E, et al. Designing a permissioned blockchain network for the Halal Industry using Hyperledger Fabric with multiple channels and the Raft consensus mechanism[J]. Journal of Big Data, 2021,8(1): 1-16.

[10]Buchman E. Tendermint: Byzantine fault tolerance in the age of blockchains[D].[S.l.]:University of Guelph, 2016.

[11]Zheng Xiandong, Feng Wenlong. Research on practical Byzantine fault tolerant consensus algorithm based on blockchain[J]. Journal of Physics: Conference Series, 2021,1802(3): 032022.

[12]Gorkhali A, Li Ling, Shrestha A. Blockchain: a literature review[J]. Journal of Management Analytics, 2020,7(3): 321-343.

[13]韋可欣, 李雷孝, 高昊昱,等. 區(qū)塊鏈訪問(wèn)控制技術(shù)在車聯(lián)網(wǎng)中的應(yīng)用研究綜述與展望[J]. 計(jì)算機(jī)工程與應(yīng)用, 2023,59(24):26-45. (Wei Kexin, Li Leixiao, Gao Haoyu, et al. Review and prospect of application research on blockchain access control technology in the Internet of Vehicles[J]. Computer Engineering and Applications, 2023,59(24):26-45.

[14]Xu Xinhan, Chen Xiangfeng, Jia Fu, et al. Supply chain finance: a systematic literature review and bibliometric analysis[J]. International Journal of Production Economics, 2018,204: 160-173.

[15]Agbo C C, Mahmoud Q H, Eklund J M. Blockchain technology in healthcare: a systematic review[J]. Healthcare, 2019,7(2):56.

[16]Jing Nan, Liu Qi, Sugumaran V. A blockchain-based code copyright management system[J]. Information Processing & Management, 2021,58(3): 102518.

[17]Gai Keke, She Yufeng, Zhu Liehuang, et al. A blockchain-based access control scheme for zero trust cross-organizational data sharing[J]. ACM Trans on Internet Technology, 2022,23(3): article No.38.

[18]Ni Shiying, Bai Xiwen, Liang Yuchen, et al. Blockchain-based traceability system for supply chain: potentials, gaps, applicability and adoption game[J]. Enterprise Information Systems, 2022,16(12): 2086021.

[19]王謹(jǐn)東, 李強(qiáng). 基于Raft算法改進(jìn)的實(shí)用拜占庭容錯(cuò)共識(shí)算法[J]. 計(jì)算機(jī)應(yīng)用, 2023,43(1): 122-129. (Wang Jindong, Li Qiang. A practical Byzantine fault tolerant consensus algorithm improved by Raft algorithm[J]. Journal of Computer Applications, 2023,43(1): 122-129.)

[20]Seo J, Ko D, Kim S, et al. A coordination technique for improving scalability of Byzantine fault-tolerant consensus[J]. Applied Sciences, 2020,10(21): 7609.

[21]高娜, 周創(chuàng)明, 楊春曉,等. 基于網(wǎng)絡(luò)自聚類的PBFT算法改進(jìn)[J]. 計(jì)算機(jī)應(yīng)用研究, 2021,38(11): 3236-3242. (Gao Na, Zhou Chuangming, Yang Chunxiao, et al. Improvement of PBFT algorithm based on network self-clustering[J]. Application Research of Computers, 2021,38(11): 3236-3242.)

[22]陳子豪, 李強(qiáng). 基于K-medoids的改進(jìn)PBFT共識(shí)機(jī)制[J]. 計(jì)算機(jī)科學(xué), 2019,46(12): 101-107. (Chen Zihao, Li Qiang. The improved PBFT consensus mechanism based on K-medoids[J]. Computer Science, 2019,46(12): 101-107.)

[23]翟社平, 廉佳穎, 楊銳,等. 基于Raft分組的實(shí)用拜占庭共識(shí)算法[J]. 計(jì)算機(jī)應(yīng)用研究, 2023,40(11): 3218-3224,3234. (Zhai Sheping, Lian Jiaying, Yang Rui, et al. Practical Byzantine consensus algorithm based on Raft clustering[J]. Application Research of Computers, 2023,40(11): 3218-3224,3234.)

[24]黃冬艷, 李浪, 陳斌,等. RBFT: 基于Raft集群的拜占庭容錯(cuò)共識(shí)機(jī)制[J]. 通信學(xué)報(bào), 2021,42(3): 209-219. (Huang Dongyan, Li Lang, Chen Bin, et al.RBFT: Byzantine fault-tolerant consensus mechanism based on Raft clustering[J]. Journal on Communications, 2021,42(3): 209-219.)

[25]Castro M, Liskov B. Practical Byzantine fault tolerance[C]//Proc of the 3rd Symposium on Operating Systems Design and Implementation.New York:ACM Press, 1999: 173-186.

[26]Li Wenyu, Feng Chenglin, Zhang Lei, et al. A scalable multi-layer PBFT consensus for blockchain[J]. IEEE Trans on Parallel and Distributed Systems, 2020,32(5): 1146-1160.

[27]Ongaro D, Ousterhout J. In search of an understandable consensus algorithm[C]//Proc of USENIX Annual Technical Conference. 2014: 305-319.

[28]秦小林, 羅剛, 李文博,等. 集群智能算法綜述[J]. 無(wú)人系統(tǒng)技術(shù), 2021,4(3): 1-10. (Qin Xiaolin, Luo Gang, Li Wenbo, et al. An overview of cluster intelligence algorithms[J]. Unmanned Systems Technology, 2021,4(3): 1-10.)

[29]Dorigo M, Gambardella L M. Ant colony system: a cooperative lear-ning approach to the traveling salesman problem[J]. IEEE Trans on Evolutionary Computation, 1997,1(1): 53-66.

[30]Fox A, Brewer E A. Harvest, yield, and scalable tolerant systems[C]//Proc of the 7th Workshop on Hot Topics in Operating Systems. Piscataway,NJ:IEEE Press, 1999: 174-178.

[31]Pritchett D. BASE: an acid alternative: in partitioned databases, trading some consistency for availability can lead to dramatic improvements in scalability[J]. Queue, 2008,6(3): 48-55.

[32]王森, 李志淮, 賈志鵬. 主節(jié)點(diǎn)隨機(jī)選取的改進(jìn)PBFT共識(shí)算法[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2022,39(10): 299-306. (Wang Sen, Li Zhihuai, Jia Zhipeng. Improved PBFT consensus algorithm with random primary node selection[J]. Computer Applications and Software, 2022,39(10): 299-306.)

[33]陳蘇明, 王冰, 陳玉全,等. 基于節(jié)點(diǎn)分組信譽(yù)模型的改進(jìn)PBFT共識(shí)算法[J]. 計(jì)算機(jī)應(yīng)用研究, 2023, 40(10): 2916-2921. (Chen Suming, Wang Bing, Chen Yuquan, et al. Byzantine fault-tolerant consensus mechanism based on Raft clustering[J]. Application Research of Computers, 2023,40(10): 2916-2921.)

猜你喜歡
拜占庭聲譽(yù)共識(shí)
共識(shí) 共進(jìn) 共情 共學(xué):讓“溝通之花”綻放
論思想共識(shí)凝聚的文化向度
拜占庭帝國(guó)的繪畫(huà)藝術(shù)及其多樣性特征初探
Top 5 World
商量出共識(shí)
淺談初中歷史教學(xué)中的邏輯補(bǔ)充——從拜占庭帝國(guó)滅亡原因談起
《西方史學(xué)通史》第三卷“拜占庭史學(xué)”部分糾繆
古代文明(2016年1期)2016-10-21 19:35:20
聲譽(yù)樹(shù)立品牌
拜占庭之光
鳳凰生活(2016年2期)2016-02-01 12:41:05
別讓“PX共識(shí)”在爆炸中瓦解
哈巴河县| 桂平市| 凤阳县| 双流县| 海丰县| 遂川县| 叶城县| 平阴县| 敦化市| 城固县| 松江区| 乐平市| 湘阴县| 尼玛县| 怀来县| 清流县| 淅川县| 岚皋县| 中西区| 台南市| 凉城县| 榆树市| 邢台县| 疏附县| 封开县| 福鼎市| 曲沃县| 德钦县| 兴文县| 宁阳县| 蛟河市| 余庆县| 建德市| 日土县| 万安县| 吐鲁番市| 霍邱县| 岑溪市| 邵阳市| 台前县| 巴南区|