張世政,劉 勇
(網(wǎng)絡(luò)體系構(gòu)建與融合北京市重點(diǎn)實(shí)驗(yàn)室,北京郵電大學(xué)信息與通信工程學(xué)院,北京 100876)
“中本聰”提出的比特幣,成為區(qū)塊鏈技術(shù)的第一個(gè)成功應(yīng)用的案例,自此,區(qū)塊鏈技術(shù)開始進(jìn)入大眾的視野,被人們所熟知。區(qū)塊鏈技術(shù)是一種特殊的分布式數(shù)據(jù)庫(kù),它結(jié)合了去中心化、信息加密、共識(shí)算法等多種技術(shù),具有去中心化、不可篡改、可溯源等特征。按照應(yīng)用情況,可將其分為公有鏈、聯(lián)盟鏈和私有鏈三種。目前,區(qū)塊鏈技術(shù)已得到極大發(fā)展,其應(yīng)用場(chǎng)景越發(fā)廣泛,在諸多領(lǐng)域影響深遠(yuǎn),其在新技術(shù)變革中的重要性日漸顯著。
共識(shí)算法作為區(qū)塊鏈的核心技術(shù)之一,影響著其安全性和整體性能。目前應(yīng)用較為廣泛的共識(shí)算法包括工作量證明機(jī)制(proof of work,POW)、權(quán)益證明機(jī)制(proof of stake,POS)、授權(quán)權(quán)益證明機(jī)制(delegated proof of stake, DPOS)和 實(shí) 用 拜 占 庭 容 錯(cuò) 機(jī) 制(practical byzantine fault tolerance,PBFT)等,在實(shí)際應(yīng)用中,由于聯(lián)盟鏈和私有鏈中的節(jié)點(diǎn)只有經(jīng)過授權(quán)才能夠加入到網(wǎng)絡(luò)當(dāng)中,因此具有更高的安全性和實(shí)用性,PBFT 共識(shí)算法由于能夠有效地解決網(wǎng)絡(luò)中的拜占庭將軍問題,保證了網(wǎng)絡(luò)可靠性和穩(wěn)定性,已成為聯(lián)盟鏈和私有鏈中應(yīng)用最廣泛的共識(shí)算法之一。 但PBFT 算法的劣勢(shì)也極為明顯,在PBFT 共識(shí)的過程中,隨著網(wǎng)絡(luò)中節(jié)點(diǎn)規(guī)模的擴(kuò)大,共識(shí)的時(shí)延以及通信復(fù)雜度急劇上升,從而導(dǎo)致共識(shí)效率較低,并且消耗大量的信道資源。PBFT算法缺少節(jié)點(diǎn)評(píng)估機(jī)制,不能靈活地對(duì)網(wǎng)絡(luò)中的節(jié)點(diǎn)進(jìn)行區(qū)分。另外,其輪流當(dāng)選的視圖切換策略也會(huì)影響系統(tǒng)的安全性和共識(shí)效率。
對(duì)于PBFT 算法的改進(jìn)工作已有多種方案,但始終缺乏考慮網(wǎng)絡(luò)整體情況、自適應(yīng)的優(yōu)化措施。為了解決目前PBFT 算法存在的諸多問題,本文旨在設(shè)計(jì)一種具有一定自適應(yīng)性的優(yōu)化算法,結(jié)合網(wǎng)絡(luò)所有節(jié)點(diǎn)的整體情況,從節(jié)點(diǎn)評(píng)估、自適應(yīng)共識(shí)節(jié)點(diǎn)選擇等方面進(jìn)行創(chuàng)新與改進(jìn),提升PBFT算法性能。
針對(duì)PBFT 存在的效率低,時(shí)延高的問題,已有多位學(xué)者提出了改進(jìn)措施。例如,文獻(xiàn)[15]提出的基于投票的拜占庭容錯(cuò)算法,將網(wǎng)絡(luò)中的節(jié)點(diǎn)劃分為客戶端、從節(jié)點(diǎn)和主節(jié)點(diǎn)三種不同的職責(zé)類型,由主節(jié)點(diǎn)進(jìn)行投票和評(píng)分來改變每個(gè)節(jié)點(diǎn)的類型。文獻(xiàn)[16]提出一種基于特征信任模型的優(yōu)化實(shí)用拜占庭容錯(cuò)共識(shí)算法,它是一種多階段共識(shí)算法,通過節(jié)點(diǎn)之間的交易來評(píng)估節(jié)點(diǎn)信任,從而選擇網(wǎng)絡(luò)中質(zhì)量較高的節(jié)點(diǎn)來構(gòu)建共識(shí)群。文獻(xiàn)[17]提出基于可靠性評(píng)估的改進(jìn)拜占庭容錯(cuò)算法,根據(jù)評(píng)分將節(jié)點(diǎn)劃分為誠(chéng)實(shí)、故障、惡意三種狀態(tài),并根據(jù)節(jié)點(diǎn)可靠性選擇主節(jié)點(diǎn)組建共識(shí)節(jié)點(diǎn)群。上述改進(jìn)措施均采用依據(jù)分?jǐn)?shù)來選擇共識(shí)節(jié)點(diǎn)的機(jī)制,具有一定的優(yōu)化效果,但在面對(duì)惡意節(jié)點(diǎn)數(shù)量較少甚至沒有惡意節(jié)點(diǎn)的系統(tǒng)中,參與共識(shí)的節(jié)點(diǎn)數(shù)量過多,優(yōu)化效果有限。文獻(xiàn)[18]針對(duì)PBFT 算法的改進(jìn),根據(jù)評(píng)分將節(jié)點(diǎn)劃分為共識(shí)節(jié)點(diǎn)、候選節(jié)點(diǎn)和預(yù)備節(jié)點(diǎn),并規(guī)定共識(shí)節(jié)點(diǎn)數(shù)量固定為總節(jié)點(diǎn)數(shù)量的2 3。但當(dāng)惡意節(jié)點(diǎn)較多時(shí),共識(shí)節(jié)點(diǎn)集群數(shù)量保持不變,共識(shí)失敗的概率較高,甚至面臨連續(xù)共識(shí)失敗的風(fēng)險(xiǎn)。
以上方法都不能根據(jù)具體的共識(shí)場(chǎng)景自適應(yīng)地選擇和調(diào)整最佳的共識(shí)節(jié)點(diǎn)集群,針對(duì)這種現(xiàn)象,結(jié)合聯(lián)盟鏈的實(shí)際特點(diǎn),本文提出一種基于平均穩(wěn)定度的自適應(yīng)改進(jìn)PBFT算 法(average stability byzantine fault tolerant algorithm,AS-PBFT),引入平均穩(wěn)定度的概念,依據(jù)平均穩(wěn)定度控制參與共識(shí)的節(jié)點(diǎn),優(yōu)化PBFT 算法,以此來降低共識(shí)時(shí)延和通信復(fù)雜度,并且能夠一定程度地反映系統(tǒng)的共識(shí)情況,及時(shí)調(diào)整共識(shí)節(jié)點(diǎn)所占的比例,針對(duì)不同的惡意節(jié)點(diǎn)情況,選擇最佳的共識(shí)節(jié)點(diǎn)集群方案,避免連續(xù)共識(shí)失敗等安全性問題。
聯(lián)盟鏈?zhǔn)怯啥鄠€(gè)組織或機(jī)構(gòu)參與的區(qū)塊鏈,通常情況下,每個(gè)節(jié)點(diǎn)都有與之對(duì)應(yīng)的實(shí)際機(jī)構(gòu)或組織,故在實(shí)際的應(yīng)用場(chǎng)景中,節(jié)點(diǎn)產(chǎn)生作惡行為的概率是不同的,會(huì)有一部分穩(wěn)定性強(qiáng)的節(jié)點(diǎn),也會(huì)存在相對(duì)穩(wěn)定性較差的節(jié)點(diǎn)。基于這種實(shí)際情況,本文提出了一種改進(jìn)方案,其整體結(jié)構(gòu)如圖1所示。
圖1 AS-PBFT算法整體結(jié)構(gòu)
基于聯(lián)盟鏈的實(shí)際特點(diǎn),本文提出的算法主要分為基于歷史表現(xiàn)評(píng)估機(jī)制、自適應(yīng)共識(shí)比例控制機(jī)制和優(yōu)化的一致性交互協(xié)議三部分。首先對(duì)所有節(jié)點(diǎn)增設(shè)穩(wěn)定系數(shù),共識(shí)開始后,由主節(jié)點(diǎn)按照基于歷史表現(xiàn)的穩(wěn)定性評(píng)估機(jī)制,計(jì)算所有節(jié)點(diǎn)當(dāng)前的穩(wěn)定系數(shù),此系數(shù)可以反應(yīng)當(dāng)前節(jié)點(diǎn)的穩(wěn)定性。此后,本文引入整體穩(wěn)定度的概念,通過自適應(yīng)共識(shí)比例控制模塊,計(jì)算當(dāng)前系統(tǒng)的整體穩(wěn)定度,根據(jù)計(jì)算結(jié)果,調(diào)整共識(shí)比例。共識(shí)集群確定以后,采用優(yōu)化的一致性協(xié)議進(jìn)行共識(shí)節(jié)點(diǎn)之間的信息交互,確定共識(shí)結(jié)果,標(biāo)記作惡節(jié)點(diǎn),完成共識(shí)。在存在惡意節(jié)點(diǎn)的區(qū)塊鏈系統(tǒng)中,通過上述機(jī)制,便可根據(jù)網(wǎng)絡(luò)中惡意節(jié)點(diǎn)的實(shí)際情況,進(jìn)行評(píng)估優(yōu)化,提高共識(shí)效率。
為了解決PBFT 算法無法對(duì)節(jié)點(diǎn)進(jìn)行評(píng)估的問題,提出了基于歷史表現(xiàn)的穩(wěn)定性評(píng)估機(jī)制。首先為所有節(jié)點(diǎn)增設(shè)穩(wěn)定系數(shù),在系統(tǒng)開始共識(shí)前,將每個(gè)節(jié)點(diǎn)的穩(wěn)定系數(shù)初始化為50,并規(guī)定其下限為0,上限為100。增設(shè)共識(shí)狀態(tài)表,此表格記錄系統(tǒng)中每個(gè)節(jié)點(diǎn)近三次共識(shí)的狀態(tài),節(jié)點(diǎn)共識(shí)狀態(tài)包括穩(wěn)定、出錯(cuò)和沒有參加共識(shí)三種,分別用0、1、2 表示,每一輪共識(shí)結(jié)束后,都將更新該表以及時(shí)反應(yīng)節(jié)點(diǎn)的最新狀態(tài),對(duì)節(jié)點(diǎn)穩(wěn)定系數(shù)的調(diào)整如表1所示。
表1 穩(wěn)定系數(shù)調(diào)整
系統(tǒng)根據(jù)共識(shí)狀態(tài)表來判斷每個(gè)節(jié)點(diǎn)的歷史狀態(tài),并將前三輪按照2∶1∶1 的比例進(jìn)行權(quán)值分配,按照穩(wěn)定系數(shù)的調(diào)整規(guī)則,計(jì)算對(duì)應(yīng)三次的系數(shù)調(diào)整結(jié)果并進(jìn)行累加,成為節(jié)點(diǎn)新的系數(shù)調(diào)整值。通過這種穩(wěn)定系數(shù)調(diào)整機(jī)制,可以反映出節(jié)點(diǎn)的歷史狀態(tài),從而對(duì)一個(gè)節(jié)點(diǎn)的穩(wěn)定系數(shù)做出綜合評(píng)估,削弱隨機(jī)性帶來的影響,更容易區(qū)分出惡化概率較高的節(jié)點(diǎn),提升算法的穩(wěn)定性和安全性。并且給沒有參與共識(shí)的節(jié)點(diǎn)進(jìn)行緩慢的加分,保證共識(shí)節(jié)點(diǎn)集群的動(dòng)態(tài)性。
針對(duì)PBFT 算法隨著節(jié)點(diǎn)數(shù)量的增多,共識(shí)時(shí)延上升明顯的問題,提出自適應(yīng)共識(shí)比例控制機(jī)制,動(dòng)態(tài)調(diào)整參與共識(shí)的節(jié)點(diǎn)所占的比例?;谠u(píng)估機(jī)制中設(shè)置的穩(wěn)定系數(shù),本文引入平均穩(wěn)定度的概念,即網(wǎng)絡(luò)中所有節(jié)點(diǎn)的平均穩(wěn)定系數(shù),計(jì)算方法如公式(1)所示,其中,A為第輪共識(shí)的平均穩(wěn)定度,S代表節(jié)點(diǎn)第輪的穩(wěn)定系數(shù),ΔS代表節(jié)點(diǎn)第輪穩(wěn)定系數(shù)的調(diào)整,代表總節(jié)點(diǎn)數(shù)。
由公式(1)計(jì)算每輪共識(shí)的平均穩(wěn)定度,并且規(guī)定50 ≤A≤100,基于得到的當(dāng)前整體的平均穩(wěn)定度,采用公式(2)計(jì)算下一輪參與共識(shí)的節(jié)點(diǎn)數(shù)目,其中為計(jì)算所得的共識(shí)節(jié)點(diǎn)數(shù)量。
根據(jù)公式(2)可以得出,當(dāng)平均穩(wěn)定度為初始狀態(tài)的50 時(shí),全部節(jié)點(diǎn)都將參與共識(shí),平均穩(wěn)定度到達(dá)上限100時(shí),計(jì)算得到的共識(shí)節(jié)點(diǎn)所占比例為2 3,并且按照規(guī)定,數(shù)量下限應(yīng)該大于總節(jié)點(diǎn)數(shù)量的2 3,從而通過判斷進(jìn)行適當(dāng)調(diào)整。由此可以得出結(jié)論,在網(wǎng)絡(luò)中作惡節(jié)點(diǎn)較少,或者沒有作惡節(jié)點(diǎn)時(shí),共識(shí)節(jié)點(diǎn)的數(shù)目經(jīng)過幾輪調(diào)整以后,將會(huì)趨于總節(jié)點(diǎn)的2 3,并且在確定共識(shí)節(jié)點(diǎn)之前,先會(huì)將節(jié)點(diǎn)按照穩(wěn)定系數(shù)進(jìn)行降序排列,從而使得選取的節(jié)點(diǎn)都是穩(wěn)定系數(shù)高的。
在本文提出的優(yōu)化方案中,由于減少了共識(shí)節(jié)點(diǎn)的數(shù)量,故在惡意節(jié)點(diǎn)較多的情況下存在共識(shí)失敗的可能性,控制機(jī)制在面對(duì)共識(shí)失敗的情況下,會(huì)將所有節(jié)點(diǎn)的穩(wěn)定系數(shù)減20,則平均穩(wěn)定度A下降20,進(jìn)而通過公式(2)計(jì)算得到的下一輪共識(shí)節(jié)點(diǎn)的數(shù)量就會(huì)增加,對(duì)共識(shí)失敗的消息進(jìn)行重新共識(shí),降低共識(shí)失敗的概率。此后,再通過評(píng)估機(jī)制進(jìn)行慢恢復(fù),避免連續(xù)失敗的情況發(fā)生。
通過本文提出的共識(shí)節(jié)點(diǎn)選擇機(jī)制,能夠保證絕大多數(shù)情況下,參與共識(shí)的節(jié)點(diǎn)是穩(wěn)定性強(qiáng)的節(jié)點(diǎn),穩(wěn)定性較差的節(jié)點(diǎn)則會(huì)逐漸剔除出共識(shí)集群。因此,在惡意節(jié)點(diǎn)數(shù)量較少的情況下,共識(shí)失敗的概率很低,共識(shí)節(jié)點(diǎn)數(shù)量趨于總節(jié)點(diǎn)數(shù)量的2 3,而在惡意節(jié)點(diǎn)數(shù)量較多的情況下,也能自適應(yīng)地對(duì)共識(shí)節(jié)點(diǎn)集群進(jìn)行控制,避免連續(xù)共識(shí)失敗。因此,本文中的共識(shí)比例控制機(jī)制可以針對(duì)不同情況進(jìn)行自適應(yīng)的動(dòng)態(tài)調(diào)整,以得到最優(yōu)的共識(shí)節(jié)點(diǎn)群,提高共識(shí)效率。
2.4.1 優(yōu)化視圖切換策略
對(duì)于傳統(tǒng)的PBFT 算法的一致性交互協(xié)議,在進(jìn)行視圖切換時(shí)是按照公式(3)進(jìn)行新的主節(jié)點(diǎn)選擇的。
其中代表新選擇的主節(jié)點(diǎn)的編號(hào),代表上一次主節(jié)點(diǎn)的編號(hào),為總的節(jié)點(diǎn)數(shù)量??梢钥闯?,傳統(tǒng)的一致性協(xié)議的視圖切換是一種輪流當(dāng)選的方式,對(duì)于存在惡意節(jié)點(diǎn)的系統(tǒng)中,這種選舉方式是極其隨意的,并且也會(huì)面臨著多個(gè)惡意節(jié)點(diǎn)連續(xù)當(dāng)選為新的主節(jié)點(diǎn)的風(fēng)險(xiǎn)。
針對(duì)這個(gè)問題,結(jié)合本算法提出的基于歷史表現(xiàn)的節(jié)點(diǎn)評(píng)估機(jī)制,對(duì)一致性協(xié)議的視圖切換策略進(jìn)行改進(jìn),在共識(shí)過程中需要進(jìn)行視圖切換的時(shí)候,將每個(gè)節(jié)點(diǎn)的穩(wěn)定系數(shù)作為主要參考指標(biāo),將節(jié)點(diǎn)的歷史表現(xiàn)考慮進(jìn)來,按照穩(wěn)定系數(shù)降序的順序,進(jìn)行新的主節(jié)點(diǎn)的選擇。利用這種視圖切換策略,可以有效地降低惡意節(jié)點(diǎn)當(dāng)選為主節(jié)點(diǎn)的概率,減少視圖切換的頻率與次數(shù),進(jìn)一步提高算法的共識(shí)效率。
2.4.2 惡意節(jié)點(diǎn)篩選策略
為維護(hù)系統(tǒng)的共識(shí)狀態(tài)表,向評(píng)估機(jī)制提供穩(wěn)定系數(shù)調(diào)整的參考依據(jù),故在改進(jìn)后的一致性交互協(xié)議中,對(duì)有惡意行為的節(jié)點(diǎn)進(jìn)行篩選和記錄。
(1)本文為每個(gè)節(jié)點(diǎn)增設(shè)共識(shí)集群表,記錄當(dāng)前共識(shí)過程中,參與共識(shí)的節(jié)點(diǎn)的編號(hào)集合。該表在每輪共識(shí)開始之前,由主節(jié)點(diǎn)根據(jù)基于歷史表現(xiàn)的評(píng)估機(jī)制和共識(shí)比例控制機(jī)制進(jìn)行更新和調(diào)整,主節(jié)點(diǎn)在Pre-prepare 階段將該表添加至Pre-prepare 消息中,分發(fā)給每個(gè)節(jié)點(diǎn),節(jié)點(diǎn)根據(jù)共識(shí)集群表確定后續(xù)的消息廣播和接收的節(jié)點(diǎn)范圍。
(2)在全廣播消息交互階段,每個(gè)節(jié)點(diǎn)需要收到2+1 條一致消息才能認(rèn)為投票通過,進(jìn)而在投票過程中,記錄收到的不一致消息的來源節(jié)點(diǎn)編號(hào),在回復(fù)階段,將該消息一起發(fā)送給共識(shí)信息的請(qǐng)求端。
(3)共識(shí)請(qǐng)求端節(jié)點(diǎn)驗(yàn)證共識(shí)成功以后,將收到的惡意節(jié)點(diǎn)集合進(jìn)行取并集處理,得到本輪篩選出的惡意節(jié)點(diǎn)集合,將其發(fā)送給主節(jié)點(diǎn),由主節(jié)點(diǎn)根據(jù)該集合對(duì)所有節(jié)點(diǎn)穩(wěn)定系數(shù)進(jìn)行調(diào)整。
本文基于Java 語言構(gòu)建一個(gè)多節(jié)點(diǎn)區(qū)塊鏈系統(tǒng),分別對(duì)PBFT 算法和本文提出的AS-PBFT算法進(jìn)行實(shí)現(xiàn)和驗(yàn)證,記錄分析AS-PBFT 算法在共識(shí)過程中的變化情況,從共識(shí)時(shí)延和通信量方面與PBFT 算法進(jìn)行比較,并且對(duì)本算法的自適應(yīng)性進(jìn)行實(shí)驗(yàn)驗(yàn)證分析。
本文提出了基于平均穩(wěn)定度來控制共識(shí)節(jié)點(diǎn)比例的優(yōu)化思想,為貼近聯(lián)盟鏈中節(jié)點(diǎn)的實(shí)際場(chǎng)景,設(shè)定系統(tǒng)中節(jié)點(diǎn)作惡的概率不同,選擇1 3 的節(jié)點(diǎn)設(shè)置其作惡概率為80%,再取1 3的節(jié)點(diǎn)規(guī)定其作惡概率為50%,另外的節(jié)點(diǎn)作惡概率為10%,并且每一輪惡意節(jié)點(diǎn)的總數(shù)不變。因此,在惡意節(jié)點(diǎn)數(shù)量較少的情況下,共識(shí)失敗的概率很低。選定總節(jié)點(diǎn)數(shù)為16,作惡節(jié)點(diǎn)數(shù)為4,其前十次共識(shí)過程中,系統(tǒng)的平均穩(wěn)定度和共識(shí)節(jié)點(diǎn)數(shù)的變化如圖2所示。
圖2 平均穩(wěn)定度和共識(shí)節(jié)點(diǎn)數(shù)量變化
根據(jù)圖2可知,第一輪平均穩(wěn)定度為初始值50,所有節(jié)點(diǎn)都參與共識(shí),隨著共識(shí)過程的進(jìn)行,基于歷史表現(xiàn)的評(píng)估機(jī)制對(duì)所有節(jié)點(diǎn)的穩(wěn)定系數(shù)進(jìn)行評(píng)估,平均穩(wěn)定度逐步上升,進(jìn)而參與共識(shí)的節(jié)點(diǎn)數(shù)量呈下降趨勢(shì),最終數(shù)量穩(wěn)定在11 個(gè)節(jié)點(diǎn)。另外,惡意節(jié)點(diǎn)數(shù)量不同,對(duì)平均穩(wěn)定度增長(zhǎng)速率會(huì)產(chǎn)生影響,如圖3 所示,在惡意節(jié)點(diǎn)數(shù)量較少的情況下,其數(shù)量越少,平均穩(wěn)定度上升越快,共識(shí)節(jié)點(diǎn)數(shù)量達(dá)到下限的時(shí)間就越短。
圖3 不同數(shù)量作惡節(jié)點(diǎn)下平均穩(wěn)定度變化情況
共識(shí)時(shí)延為算法開始進(jìn)行一輪共識(shí)到共識(shí)結(jié)束所消耗的時(shí)間,反應(yīng)了共識(shí)算法的效率。本文分別對(duì)PBFT算法和AS-PBFT算法的共識(shí)時(shí)延進(jìn)行評(píng)估,在惡意節(jié)點(diǎn)為(- 1) 3 的情況下,對(duì)不同節(jié)點(diǎn)數(shù)分別進(jìn)行多次實(shí)驗(yàn),計(jì)算其進(jìn)行十輪共識(shí)以后單次共識(shí)消耗時(shí)間的平均值,對(duì)比結(jié)果如圖4 所示。隨著共識(shí)節(jié)點(diǎn)數(shù)量的增加,兩種算法的共識(shí)時(shí)延都呈上升趨勢(shì),但相較于PBFT 算法,本算法參與共識(shí)的節(jié)點(diǎn)數(shù)量趨于總節(jié)點(diǎn)數(shù)量的2 3,并且發(fā)生視圖切換的概率小很多,因此,在不同節(jié)點(diǎn)數(shù)量的情況下,共識(shí)時(shí)延均明顯減小。
圖4 PBFT和AS-PBFT算法共識(shí)時(shí)延對(duì)比
通信開銷是指完成單次共識(shí)所需要通信的次數(shù),分別對(duì)PBFT和AS-PBFT算法,在惡意節(jié)點(diǎn)為(- 1) 3 的情況下進(jìn)行多次實(shí)驗(yàn)比較,計(jì)算其第十輪共識(shí)以后的單次通信量的平均值。兩種算法的通信開銷如圖5所示。
圖5 PBFT和AS-PBFT算法通信開銷對(duì)比
本文對(duì)視圖切換時(shí)主節(jié)點(diǎn)的選擇策略做了優(yōu)化,將視圖切換的概率大大降低,減少了因視圖切換造成的通信開銷。并且,根據(jù)共識(shí)比例控制機(jī)制,減少了參與共識(shí)的節(jié)點(diǎn)數(shù)量,故其單次共識(shí)的通信量明顯降低。
本文提出的AS-PBFT 算法,能夠根據(jù)作惡節(jié)點(diǎn)的數(shù)量和共識(shí)情況進(jìn)行自適應(yīng)調(diào)整,故設(shè)置兩組不同作惡節(jié)點(diǎn)數(shù)量的實(shí)驗(yàn),進(jìn)行對(duì)比分析。
(1)將系統(tǒng)中的惡意節(jié)點(diǎn)數(shù)量設(shè)置為0,模擬沒有節(jié)點(diǎn)作惡的情況,與常見改進(jìn)方法中所采用的分?jǐn)?shù)選擇機(jī)制來選擇共識(shí)節(jié)點(diǎn)的方式進(jìn)行多次實(shí)驗(yàn)對(duì)比,記錄其平均共識(shí)時(shí)延。在沒有節(jié)點(diǎn)作惡的情況下,最終所有節(jié)點(diǎn)的穩(wěn)定系數(shù)都將達(dá)到上限100,若采用分?jǐn)?shù)選擇機(jī)制選擇節(jié)點(diǎn),全部節(jié)點(diǎn)都將符合要求參與共識(shí),與傳統(tǒng)的PBFT 算法類似,AS-PBFT 算法會(huì)根據(jù)公式(2),將共識(shí)節(jié)點(diǎn)的數(shù)量維持在總節(jié)點(diǎn)數(shù)量的2 3 左右。如圖6 所示,本文提出的基于平均穩(wěn)定度選擇機(jī)制的共識(shí)時(shí)延更低,更加適用于沒有作惡節(jié)點(diǎn)的情況。
圖6 分?jǐn)?shù)選擇機(jī)制和平均穩(wěn)定度選擇機(jī)制共識(shí)時(shí)延對(duì)比
(2)設(shè)置系統(tǒng)中惡意節(jié)點(diǎn)的數(shù)量為(- 1) 3,因減少了參與共識(shí)的節(jié)點(diǎn)數(shù)量,故當(dāng)惡意節(jié)點(diǎn)數(shù)量較多時(shí),便有可能產(chǎn)生接收到的一致性投票數(shù)量達(dá)不到2f+1 的情況,從而導(dǎo)致無法成功完成共識(shí),此時(shí)就需要重新對(duì)該信息進(jìn)行操作。在這種情況下,將基于平均穩(wěn)定度選擇機(jī)制和常用的改進(jìn)方案中采用的固定前2 3 比例節(jié)點(diǎn)作為共識(shí)節(jié)點(diǎn)的機(jī)制進(jìn)行對(duì)比,對(duì)其分別進(jìn)行100 輪共識(shí), 并進(jìn)行多次實(shí)驗(yàn),求得失敗次數(shù)的平均值,如圖7 所示。因ASPBFT 算法采用基于平均穩(wěn)定度的控制機(jī)制,逐步降低其共識(shí)節(jié)點(diǎn)比例,并且一旦出現(xiàn)共識(shí)失敗的現(xiàn)象,會(huì)立刻降低系統(tǒng)的平均穩(wěn)定度,增加共識(shí)節(jié)點(diǎn)數(shù)量,以降低失敗概率,故其失敗次數(shù)明顯小于采用固定前2 3節(jié)點(diǎn)作為共識(shí)節(jié)點(diǎn)的方式,并且避免了連續(xù)共識(shí)失敗的可能,增強(qiáng)了系統(tǒng)的安全性。因此AS-PBFT 共識(shí)算法具有更強(qiáng)的自適應(yīng)性。
圖7 固定比例機(jī)制和平均穩(wěn)定度機(jī)制共識(shí)失敗次數(shù)對(duì)比
本文提出AS-PBFT 共識(shí)算法,采用根據(jù)系統(tǒng)整體穩(wěn)定度來動(dòng)態(tài)調(diào)整共識(shí)節(jié)點(diǎn)比例的思想,來增強(qiáng)共識(shí)過程的動(dòng)態(tài)性和自適應(yīng)性,并且依據(jù)基于歷史表現(xiàn)的評(píng)估機(jī)制和優(yōu)化的一致性協(xié)議來解決PBFT 算法存在的諸多問題,提高共識(shí)效率、降低通信開銷的同時(shí),也能根據(jù)惡意節(jié)點(diǎn)的實(shí)際情況動(dòng)態(tài)選擇最優(yōu)的共識(shí)節(jié)點(diǎn)集群。
AS-PBFT 算法提出基于平均穩(wěn)定度控制的思想,具有一定的自適應(yīng)性,但在惡意節(jié)點(diǎn)較多的情況下,其共識(shí)效率仍有待提高,在后續(xù)工作中,將針對(duì)該情況進(jìn)行優(yōu)化,在保證共識(shí)失敗率的情況下,進(jìn)一步提升共識(shí)效率。