孫霓剛,湯晨楓,魯 力
(1.常州大學(xué)信息科學(xué)與工程學(xué)院,江蘇 常州 213164;2.電子科技大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院,四川 成都 611731)
近年來,隨著比特幣、以太坊、瑞波幣等數(shù)字貨幣系統(tǒng)的興起,作為數(shù)字貨幣的技術(shù)支撐——區(qū)塊鏈技術(shù),因其所具備的網(wǎng)絡(luò)高度自治性、用戶信息的高度隱私性、數(shù)據(jù)的可追溯性等特點(diǎn)吸引了人們對(duì)于這一技術(shù)本身及其應(yīng)用場(chǎng)景的關(guān)注[1],我國(guó)也將區(qū)塊鏈技術(shù)列為核心技術(shù)自主創(chuàng)新的突破口[2]。
分布式領(lǐng)域最為基礎(chǔ)也是最重要的問題就是系統(tǒng)中節(jié)點(diǎn)的一致性問題,如果分布式系統(tǒng)中的節(jié)點(diǎn)能夠?qū)崿F(xiàn)“對(duì)外”一致性,則這些虛擬節(jié)點(diǎn)相較于物理節(jié)點(diǎn)能具備更優(yōu)越的性能和更高的系統(tǒng)穩(wěn)定性。區(qū)塊鏈本質(zhì)上是一個(gè)去中心化的分布式信息記錄系統(tǒng),由于缺少了可信的中心節(jié)點(diǎn)管理,如何在一個(gè)去信任的網(wǎng)絡(luò)環(huán)境下維護(hù)數(shù)據(jù)的一致性、實(shí)現(xiàn)交易信息不被篡改,這一問題在區(qū)塊鏈中被稱為共識(shí)問題。自區(qū)塊鏈誕生起,共識(shí)問題一直是區(qū)塊鏈研究的熱點(diǎn)與重點(diǎn)。
針對(duì)區(qū)塊鏈系統(tǒng)中的共識(shí)問題,Nakamoto提出通過工作量證明(Proof of work,POW)[3]的共識(shí)機(jī)制來解決這一問題。但POW共識(shí)機(jī)制也帶來了算力資源的消耗[4]。為了解決資源消耗問題,Sunny King等人提出通過權(quán)益證明(Proof of stake,POS)[5]來解決這一問題,但同時(shí)也產(chǎn)生了共識(shí)節(jié)點(diǎn)中心化以及共識(shí)節(jié)點(diǎn)作惡成本為0等其它問題。雖然后續(xù)依然出現(xiàn)很多針對(duì)POS共識(shí)機(jī)制的改進(jìn)方案[6],但這類基于資源證明的共識(shí)機(jī)制仍無法解決共識(shí)節(jié)點(diǎn)中心化與區(qū)塊鏈系統(tǒng)性能的權(quán)衡問題[7]。為了解決區(qū)塊鏈系統(tǒng)的性能問題,由Miguel Castro等人提出的PBFT(Practical Byzantine Fault Tolerance)一致性算法[8]被引入到區(qū)塊鏈系統(tǒng)中,該類共識(shí)機(jī)制是通過投票的方式來達(dá)成區(qū)塊鏈系統(tǒng)共識(shí),通過視圖改變機(jī)制確保在系統(tǒng)共識(shí)節(jié)點(diǎn)較少的情況下,即使存在拜占庭錯(cuò)誤節(jié)點(diǎn),仍舊能夠確保共識(shí)過程的高效性和安全性。由于PBFT共識(shí)機(jī)制極大地提升了區(qū)塊鏈的系統(tǒng)性能,因此這一共識(shí)機(jī)制也被廣泛應(yīng)用到區(qū)塊鏈應(yīng)用場(chǎng)景的開發(fā)中[9]。
然而,隨著區(qū)塊鏈系統(tǒng)規(guī)模的增大,共識(shí)過程中通信次數(shù)的增加導(dǎo)致了PBFT共識(shí)機(jī)制達(dá)成共識(shí)所需時(shí)間上升,從而影響到區(qū)塊鏈系統(tǒng)性能。為了解決這一問題,Zamani M等人提出分片方案[10],通過將區(qū)塊鏈系統(tǒng)分割成多個(gè)子分區(qū)系統(tǒng),使得子系統(tǒng)能夠在網(wǎng)絡(luò)規(guī)模不大的情況下確保PBFT共識(shí)機(jī)制的效率。盡管分片方案在一定程度上解決了網(wǎng)絡(luò)規(guī)模對(duì)于區(qū)塊鏈系統(tǒng)性能的影響,但也帶來了跨分區(qū)交易、節(jié)點(diǎn)重配置等安全問題[11],而解決這些安全問題又會(huì)影響到區(qū)塊鏈的共識(shí)效率,甚至?xí)奚鼌^(qū)塊鏈系統(tǒng)的去中心化和節(jié)點(diǎn)高度自治的特性,這些問題也導(dǎo)致了當(dāng)前區(qū)塊鏈的分片方案大多停留在理論論證階段[12]。
為了在確保系統(tǒng)安全性的前提下解決網(wǎng)絡(luò)規(guī)模對(duì)PBFT共識(shí)機(jī)制的系統(tǒng)吞吐量的影響,向?qū)崿F(xiàn)區(qū)塊鏈系統(tǒng)性能與區(qū)塊鏈高速發(fā)展相匹配的這一最終目標(biāo)靠近,本文首次提出了一種融合了懲罰模型的K-確認(rèn)共識(shí)機(jī)制。實(shí)驗(yàn)結(jié)果表明,文中提出的共識(shí)機(jī)制在確保區(qū)塊鏈系統(tǒng)安全性的基礎(chǔ)上,相較于PBFT共識(shí)機(jī)制能平均提升40%的系統(tǒng)吞吐量,而且隨著網(wǎng)絡(luò)規(guī)模的增大,這一提升效果可以提升60%甚至更多。
本文的主要貢獻(xiàn)分為以下三個(gè)部分:
1)為了減少驗(yàn)證者的惡意行為,本文提出了觀察期+積分池的懲罰模型,并依據(jù)這一模型來設(shè)置驗(yàn)證者的當(dāng)前狀態(tài),再通過驗(yàn)證者的狀態(tài)來決定共識(shí)過程中驗(yàn)證者的權(quán)力;
2)為了將驗(yàn)證者的作惡行為作為懲罰模型的評(píng)判依據(jù),本文設(shè)計(jì)了雙鏈?zhǔn)降腄AG存儲(chǔ)架構(gòu);
3)為了在確保系統(tǒng)安全性的前提下提升區(qū)塊鏈的系統(tǒng)性能,本文提出了一種融合了懲罰模型的K-確認(rèn)共識(shí)機(jī)制,實(shí)驗(yàn)結(jié)果表明這一共識(shí)機(jī)制在確保系統(tǒng)安全性的前提下,能夠有效提升區(qū)塊鏈的系統(tǒng)性能。
聯(lián)盟鏈[13]系統(tǒng)的運(yùn)行流程如圖1所示,系統(tǒng)中的節(jié)點(diǎn)按功能被分為兩類:用戶節(jié)點(diǎn)和共識(shí)節(jié)點(diǎn)。用戶節(jié)點(diǎn)負(fù)責(zé)產(chǎn)生交易并將交易廣播到區(qū)塊鏈網(wǎng)絡(luò)中;共識(shí)節(jié)點(diǎn)負(fù)責(zé)接收交易,并按照共識(shí)機(jī)制流程完成交易驗(yàn)證,所有的共識(shí)節(jié)點(diǎn)構(gòu)成了共識(shí)節(jié)點(diǎn)集合,交易驗(yàn)證過程在共識(shí)節(jié)點(diǎn)集中進(jìn)行。
圖1 聯(lián)盟鏈系統(tǒng)的運(yùn)行流程
PBFT共識(shí)機(jī)制是由Miguel Castro等人提出的一種分布式共識(shí)算法[8],主要解決了分布式系統(tǒng)下節(jié)點(diǎn)狀態(tài)的一致性問題。其具體流程如圖2所示,在這一共識(shí)過程中存在一個(gè)主節(jié)點(diǎn),主節(jié)點(diǎn)負(fù)責(zé)將接收到的交易編號(hào),然后將這些交易發(fā)送給共識(shí)節(jié)點(diǎn),共識(shí)節(jié)點(diǎn)通過三個(gè)階段:預(yù)準(zhǔn)備階段、準(zhǔn)備階段、提交階段完成共識(shí)過程。
圖2 PBFT共識(shí)機(jī)制的執(zhí)行流程
1)預(yù)準(zhǔn)備階段:主節(jié)點(diǎn)對(duì)接收到的交易進(jìn)行編號(hào),將交易及其編號(hào)廣播到驗(yàn)證者集合中;
在聯(lián)盟鏈系統(tǒng)框架的基礎(chǔ)上,本文將區(qū)塊鏈網(wǎng)絡(luò)中節(jié)點(diǎn)分為兩類:用戶節(jié)點(diǎn)和驗(yàn)證者節(jié)點(diǎn)。用戶節(jié)點(diǎn)可以通過申請(qǐng)成為驗(yàn)證者節(jié)點(diǎn),申請(qǐng)過程無條件約束;所有的驗(yàn)證者共同構(gòu)成驗(yàn)證者集合,交易驗(yàn)證過程在驗(yàn)證者集合中進(jìn)行。
3.1.1 用戶節(jié)點(diǎn)
為了減少用戶節(jié)點(diǎn)的存儲(chǔ)負(fù)載,在本文設(shè)計(jì)的共識(shí)機(jī)制中,用戶節(jié)點(diǎn)只需存儲(chǔ)自身的交易信息。在交易驗(yàn)證過程中,用戶只需將交易廣播到驗(yàn)證者集合中。當(dāng)驗(yàn)證者集合返回交易驗(yàn)證結(jié)果后,用戶將對(duì)應(yīng)的交易加入到自身的交易鏈上。
3.1.2 驗(yàn)證者節(jié)點(diǎn)
驗(yàn)證者節(jié)點(diǎn)需要存儲(chǔ)區(qū)塊鏈系統(tǒng)中交易驗(yàn)證的全部信息,本文將由驗(yàn)證信息區(qū)塊構(gòu)成的鏈稱為驗(yàn)證鏈。驗(yàn)證者節(jié)點(diǎn)需要參與到交易驗(yàn)證的過程中,并通過共識(shí)機(jī)制達(dá)成最終的交易驗(yàn)證結(jié)果。在每輪共識(shí)過程中,驗(yàn)證者集合都會(huì)存在一個(gè)記錄者,記錄者負(fù)責(zé)將交易驗(yàn)證結(jié)果及驗(yàn)證信息打包成區(qū)塊,并將該區(qū)塊廣播到區(qū)塊鏈網(wǎng)絡(luò)中。
為了減少驗(yàn)證者的作惡行為,本文依據(jù)懲罰模型(具體將在3.4節(jié)闡述)將驗(yàn)證者分為正常和異常兩個(gè)狀態(tài),未被列入觀察期內(nèi)的驗(yàn)證者狀態(tài)為正常狀態(tài),正常狀態(tài)的驗(yàn)證者可以成為記錄者,并且擁有確認(rèn)交易的權(quán)力;被列入觀察期內(nèi)的驗(yàn)證者狀態(tài)為異常狀態(tài),異常狀態(tài)的驗(yàn)證者不可以成為記錄者,而且其確認(rèn)交易的行為只作為評(píng)判該節(jié)點(diǎn)是否能重返正常驗(yàn)證者隊(duì)列的依據(jù),即異常驗(yàn)證者確認(rèn)交易的行為不會(huì)影響到共識(shí)過程中的交易驗(yàn)證結(jié)果。
由于本文提出的K-確認(rèn)機(jī)制無法確保在交易驗(yàn)證階段(具體將在3.3節(jié)闡述)得到的驗(yàn)證結(jié)果是否正確,因此為了便于系統(tǒng)收集惡意驗(yàn)證者的作惡證據(jù),從而發(fā)揮懲罰模型的作用,本文將交易驗(yàn)證階段得到的區(qū)塊按驗(yàn)證結(jié)果的正確性分為驗(yàn)證區(qū)塊和異常區(qū)塊。
如圖3所示,驗(yàn)證區(qū)塊被存儲(chǔ)在驗(yàn)證鏈上,異常區(qū)塊被存儲(chǔ)在異常鏈上。這兩個(gè)區(qū)塊鏈中的區(qū)塊采取鏈內(nèi)按區(qū)塊的生成順序依次連接,鏈間按分叉區(qū)塊點(diǎn)相互關(guān)聯(lián),最終構(gòu)成了驗(yàn)證鏈+異常鏈的雙鏈?zhǔn)紻AG存儲(chǔ)架構(gòu)。
圖3 雙鏈?zhǔn)降腄AG存儲(chǔ)架構(gòu)
本文設(shè)計(jì)的K-確認(rèn)共識(shí)機(jī)制包含三個(gè)階段:驗(yàn)證準(zhǔn)備階段、交易驗(yàn)證階段以及區(qū)塊鏈數(shù)據(jù)更新階段。為了快速得出交易驗(yàn)證結(jié)果,在交易驗(yàn)證階段,只需要部分驗(yàn)證者確認(rèn)交易就能得出交易的驗(yàn)證結(jié)果。為了維護(hù)交易驗(yàn)證結(jié)果的正確性,驗(yàn)證者節(jié)點(diǎn)需要依據(jù)系統(tǒng)設(shè)定的數(shù)據(jù)更新規(guī)則將接收到的區(qū)塊記錄到對(duì)應(yīng)的區(qū)塊鏈上。下文將具體介紹這三個(gè)階段。
3.3.1 驗(yàn)證準(zhǔn)備階段
1)驗(yàn)證者集合中n個(gè)驗(yàn)證者節(jié)點(diǎn)記為(V1,V2,V3,…,Vn),在每輪共識(shí)過程中,驗(yàn)證者集合都存在一個(gè)記錄者,記錄者由驗(yàn)證者節(jié)點(diǎn)輪流擔(dān)任。當(dāng)記錄者發(fā)布完一個(gè)區(qū)塊后,則該記錄者的任職周期結(jié)束;
2).基于拜占庭將軍問題的安全性的假設(shè),記錄者需要決定當(dāng)前任期內(nèi)確認(rèn)交易所需的K值,并將對(duì)應(yīng)的K值廣播到驗(yàn)證者集合中;
3).若在t時(shí)間內(nèi),驗(yàn)證者并未接收到記錄者所決定的K值,則按照系統(tǒng)規(guī)定的順序,由下一個(gè)驗(yàn)證者節(jié)點(diǎn)成為當(dāng)前任期內(nèi)的記錄者。
3.3.2 交易驗(yàn)證階段
1)驗(yàn)證者接收到交易后,需要對(duì)交易信息進(jìn)行驗(yàn)證,若交易正確無誤,則驗(yàn)證者將與該交易相對(duì)應(yīng)的確認(rèn)信息發(fā)送給記錄者;
2)記錄者接收到驗(yàn)證者的確認(rèn)信息后,依據(jù)確認(rèn)信息中的數(shù)字簽名判斷該確認(rèn)信息是否有效。若確認(rèn)信息有效,則記錄者保存這一投票判斷;反之,記錄者丟棄接收到的確認(rèn)信息;
3)當(dāng)記錄者接收到同一交易的K個(gè)確認(rèn)信息后,記錄者將該交易信息和對(duì)應(yīng)的K個(gè)驗(yàn)證者的信息打包成區(qū)塊,并將區(qū)塊廣播到區(qū)塊鏈網(wǎng)絡(luò)中。
4)若在t時(shí)間內(nèi),驗(yàn)證者并未接收到記錄者產(chǎn)生的區(qū)塊,則按照系統(tǒng)規(guī)定的順序,由下一個(gè)驗(yàn)證者節(jié)點(diǎn)成為當(dāng)前任期內(nèi)的記錄者,此時(shí)區(qū)塊鏈系統(tǒng)進(jìn)入下一輪的驗(yàn)證準(zhǔn)備階段。
3.3.3 數(shù)據(jù)更新階段
當(dāng)驗(yàn)證者接收到新的區(qū)塊后,需要依據(jù)區(qū)塊高度和交易驗(yàn)證內(nèi)容所規(guī)定的更新規(guī)則來決定如何更新區(qū)塊鏈系統(tǒng)中的數(shù)據(jù)信息。
(a)交易驗(yàn)證內(nèi)容
驗(yàn)證者依據(jù)當(dāng)前記錄的數(shù)據(jù)信息來判斷交易驗(yàn)證內(nèi)容是否正確。若正確,則依據(jù)區(qū)塊高度中的規(guī)則更新自身區(qū)塊鏈的數(shù)據(jù);反之,則將這一區(qū)塊添加到異常鏈上。
(b)區(qū)塊高度
如圖4所示,虛線框代表驗(yàn)證者接收到的區(qū)塊1的簡(jiǎn)化圖,實(shí)線框表示當(dāng)前驗(yàn)證鏈上的最新區(qū)塊2的簡(jiǎn)化圖。其中height代表當(dāng)前的區(qū)塊高度,PerHash代表該區(qū)塊鏈接的上一個(gè)區(qū)塊的hash值,hash代表當(dāng)前區(qū)塊的hash值,數(shù)字代表當(dāng)前區(qū)塊的編號(hào)。
圖4 接收到的區(qū)塊高度對(duì)比圖
①若height1 ②若height1>height2+1,則驗(yàn)證者需要更新自身驗(yàn)證鏈的數(shù)據(jù)信息,然后再將依據(jù)區(qū)塊高度判斷規(guī)則進(jìn)行二次判斷; ③若height1=height2+1且PreHash1=hash2,則驗(yàn)證者將這一區(qū)塊添加到驗(yàn)證鏈上; ④ 若height1=height2+1且prehash1≠hash2,則驗(yàn)證者將這一區(qū)塊添加到異常鏈上。 盡管K-確認(rèn)共識(shí)機(jī)制可以在數(shù)據(jù)更新階段確保區(qū)塊鏈數(shù)據(jù)的一致性,但是當(dāng)K-確認(rèn)階段得到的驗(yàn)證結(jié)果錯(cuò)誤率過高,此時(shí)會(huì)使得驗(yàn)證鏈的分叉率也隨之增加,導(dǎo)致區(qū)塊鏈系統(tǒng)處于不穩(wěn)定的狀態(tài)[14]。針對(duì)這一問題,本文在K-確認(rèn)共識(shí)機(jī)制中融合了觀察期+積分池的懲罰模型。依據(jù)這一模型,本文可以限制共識(shí)節(jié)點(diǎn)集合中的拜占庭錯(cuò)誤節(jié)點(diǎn)的權(quán)力甚至做到剔除拜占庭錯(cuò)誤節(jié)點(diǎn),從而減少了K-確認(rèn)機(jī)制錯(cuò)誤驗(yàn)證交易的概率,下文將具體闡述這一模型。 本文提出的懲罰模型中有三個(gè)重要的參數(shù),分別是觀察期的時(shí)限T、異常驗(yàn)證者在觀察期內(nèi)的積分S以及恢復(fù)為正常驗(yàn)證者所需的積分閾值。若驗(yàn)證者在K-確認(rèn)共識(shí)過程中錯(cuò)誤確認(rèn)交易,則該驗(yàn)證者將被列入觀察期,并且將初始化當(dāng)前驗(yàn)證者的T和S的值。懲罰模型的具體流程如圖5所示,若處于觀察期內(nèi)的異常驗(yàn)證者在K確認(rèn)階段錯(cuò)誤確認(rèn)交易,則該驗(yàn)證者的觀察期次數(shù)T會(huì)減一,積分S不變,反之該驗(yàn)證者的觀察期次數(shù)T減一,積分S加一。若驗(yàn)證者在觀察期內(nèi)的積分達(dá)到積分閾值,則該驗(yàn)證者會(huì)重新被列入正常的驗(yàn)證者隊(duì)列中;若驗(yàn)證者在觀察期內(nèi)的積分上限(即S+T)不可能達(dá)到積分閾值,則系統(tǒng)會(huì)將該共識(shí)節(jié)點(diǎn)從共識(shí)集合中剔除。為了實(shí)現(xiàn)快速甄別集合中的惡意驗(yàn)證者,本文將觀察期的初值T設(shè)置為6,積分閾值設(shè)置為5。 圖5 懲罰模型的流程圖 本文的實(shí)驗(yàn)是基于FISCO-BCOS平臺(tái),實(shí)驗(yàn)環(huán)境如表1所示。本文模擬的區(qū)塊鏈系統(tǒng)中包含兩個(gè)模塊——共識(shí)模塊和交易模塊。在交易模塊中,本文將智能合約部署到區(qū)塊鏈上,節(jié)點(diǎn)通過調(diào)用智能合約來模擬用戶節(jié)點(diǎn)生成交易并將交易發(fā)送到共識(shí)模塊上的功能。在共識(shí)模塊中,為了實(shí)現(xiàn)性能上的對(duì)比,本文將按照PBFT和K-確認(rèn)共識(shí)機(jī)制的協(xié)議流程,實(shí)現(xiàn)與之相關(guān)的共識(shí)機(jī)制接口,通過調(diào)用這一接口來完成區(qū)塊鏈系統(tǒng)在不同共識(shí)協(xié)議下的數(shù)據(jù)獲取。 表1 測(cè)試環(huán)境配置 實(shí)驗(yàn)將對(duì)融合了懲罰模型的K-確認(rèn)共識(shí)機(jī)制的性能以及系統(tǒng)穩(wěn)定性兩方面進(jìn)行實(shí)驗(yàn)分析。在評(píng)測(cè)系統(tǒng)性能實(shí)驗(yàn)中,本文針對(duì)區(qū)塊鏈系統(tǒng)的性能評(píng)判指標(biāo)——系統(tǒng)吞吐量來進(jìn)行實(shí)驗(yàn)與統(tǒng)計(jì),并與PBFT共識(shí)機(jī)制進(jìn)行比較,以此來論證K-確認(rèn)共識(shí)機(jī)制的有效性和優(yōu)勢(shì)。在評(píng)測(cè)系統(tǒng)穩(wěn)定性的實(shí)驗(yàn)中,本文將驗(yàn)證區(qū)塊分叉到錯(cuò)誤區(qū)塊的分叉率來作為評(píng)價(jià)區(qū)塊鏈系統(tǒng)穩(wěn)定性指標(biāo),通過實(shí)驗(yàn)來得到區(qū)塊增長(zhǎng)過程中系統(tǒng)中分叉率的數(shù)據(jù)變化,以此來論證基于懲罰模型的K-確認(rèn)共識(shí)機(jī)制的穩(wěn)定性。 系統(tǒng)吞吐量即TPS(Transactions Per Second)是衡量系統(tǒng)單位時(shí)間內(nèi)處理事務(wù)、請(qǐng)求、交易的能力,是衡量系統(tǒng)性能的重要指標(biāo),因而本文通過TPS來評(píng)測(cè)K-確認(rèn)共識(shí)機(jī)制的性能。由于區(qū)塊鏈的共識(shí)機(jī)制的性能主要是受共識(shí)集合中的節(jié)點(diǎn)個(gè)數(shù)影響,因此本文通過改變共識(shí)集合共識(shí)節(jié)點(diǎn)數(shù)來模擬網(wǎng)絡(luò)規(guī)模對(duì)區(qū)塊鏈系統(tǒng)性能的影響。受制于實(shí)驗(yàn)環(huán)境的限制,性能對(duì)比實(shí)驗(yàn)將在驗(yàn)證者節(jié)點(diǎn)數(shù)為(4,7,10,13,16,19,22),此時(shí)對(duì)應(yīng)的拜占庭錯(cuò)誤節(jié)點(diǎn)數(shù)為(1,2,3,4,5,6,7)環(huán)境下進(jìn)行。在交易驗(yàn)證過程中,有30個(gè)用戶節(jié)點(diǎn)通過調(diào)用交易模塊接口來向驗(yàn)證者節(jié)點(diǎn)并行發(fā)送交易。隨著區(qū)塊鏈系統(tǒng)穩(wěn)定后,系統(tǒng)性能仿真實(shí)驗(yàn)在每個(gè)網(wǎng)絡(luò)規(guī)模下都統(tǒng)計(jì)了30個(gè)區(qū)塊并計(jì)算對(duì)應(yīng)的TPS,依據(jù)這些數(shù)據(jù),本文最終得到了在不同網(wǎng)絡(luò)規(guī)模下,K-確認(rèn)共識(shí)機(jī)制和PBFT共識(shí)機(jī)制的TPS的對(duì)比圖。 圖6描述了在區(qū)塊鏈網(wǎng)絡(luò)規(guī)模增大時(shí),兩種共識(shí)機(jī)制的TPS變化趨勢(shì)。通過分析圖6可知,盡管在區(qū)塊鏈網(wǎng)絡(luò)規(guī)模增大的時(shí),兩種共識(shí)機(jī)制的TPS均會(huì)下降,但是在相同的網(wǎng)絡(luò)規(guī)模下,K-確認(rèn)共識(shí)機(jī)制的TPS始終優(yōu)于PBFT共識(shí)機(jī)制。為了更清晰的論證K-確認(rèn)共識(shí)機(jī)制對(duì)于區(qū)塊鏈系統(tǒng)性能提升的優(yōu)勢(shì),通過縱向?qū)Ρ葘?shí)驗(yàn)數(shù)據(jù),得到了如圖7所示的TPS的增長(zhǎng)率。分析圖7可知,相較于PBFT共識(shí)機(jī)制,基于K-確認(rèn)共識(shí)機(jī)制的區(qū)塊鏈系統(tǒng)性能已經(jīng)得到了極大地提升,而且隨著網(wǎng)絡(luò)規(guī)模的增大,這一提升效果也更為地明顯。最終本文通過整理實(shí)驗(yàn)數(shù)據(jù)發(fā)現(xiàn),相較于PBFT共識(shí)機(jī)制,K-確認(rèn)共識(shí)機(jī)制能實(shí)現(xiàn)平均40%的TPS提升效果。 圖6 共識(shí)機(jī)制的TPS對(duì)比 圖7 系統(tǒng)吞吐量的增長(zhǎng)率 圖8描述了在系統(tǒng)中無新的驗(yàn)證者節(jié)點(diǎn)加入驗(yàn)證者集合的情況下,區(qū)塊鏈系統(tǒng)的分叉率與系統(tǒng)運(yùn)行時(shí)間變化的關(guān)系圖,其中橫坐標(biāo)每個(gè)時(shí)間片代表驗(yàn)證者集合的一個(gè)完整輪次,縱坐標(biāo)代表了當(dāng)前輪次區(qū)塊鏈系統(tǒng)的分叉率。通過分析圖8可知,由于拜占庭錯(cuò)誤節(jié)點(diǎn)的存在,這使得K-確認(rèn)共識(shí)機(jī)制在系統(tǒng)運(yùn)行初期的分叉率較高。但是由于K-確認(rèn)共識(shí)機(jī)制中融合了懲罰模型,隨著系統(tǒng)運(yùn)行時(shí)間的增加,惡意驗(yàn)證者因其交易驗(yàn)證階段的惡意行為而被列入觀察期,喪失了確認(rèn)交易的權(quán)力,為了實(shí)現(xiàn)攻擊區(qū)塊鏈系統(tǒng)網(wǎng)絡(luò),惡意驗(yàn)證者也必須正確確認(rèn)交易,最終使得區(qū)塊鏈系統(tǒng)達(dá)到一個(gè)極低分叉率的納什均衡點(diǎn)。因此,融合了懲罰模型的K-確認(rèn)共識(shí)機(jī)制能夠確保區(qū)塊鏈系統(tǒng)在極低的分叉率下平穩(wěn)運(yùn)行。 圖8 系統(tǒng)中的分叉率變化圖 本文針對(duì)當(dāng)前區(qū)塊鏈網(wǎng)絡(luò)規(guī)模增大會(huì)影響到區(qū)塊鏈系統(tǒng)性能的這一關(guān)鍵問題,提出了基于懲罰模型的K-確認(rèn)共識(shí)機(jī)制。實(shí)驗(yàn)結(jié)果表明,相較于PBFT共識(shí)機(jī)制,文中提出的共識(shí)機(jī)制能夠在確保區(qū)塊鏈系統(tǒng)穩(wěn)定運(yùn)行即分叉率較低的前提下,提升平均40%的TPS,而且隨著網(wǎng)絡(luò)規(guī)模的增大,這一提升效果也在逐步增加。盡管本文提出的共識(shí)機(jī)制相較于PBFT共識(shí)機(jī)制有了一些改進(jìn),但并未消除區(qū)塊鏈系統(tǒng)規(guī)模對(duì)于區(qū)塊鏈性能的影響。在未來的工作中,本文將著重于研究快速驗(yàn)證交易的區(qū)塊鏈共識(shí)優(yōu)化方案,力求在確保安全性的前提下,減少網(wǎng)絡(luò)規(guī)模對(duì)區(qū)塊鏈系統(tǒng)性能的影響,最終實(shí)現(xiàn)區(qū)塊鏈共識(shí)機(jī)制的性能與當(dāng)前區(qū)塊鏈發(fā)展相匹配的最終目標(biāo)。3.4 懲罰模型
4 實(shí)驗(yàn)結(jié)果及分析
4.1 系統(tǒng)性能的實(shí)驗(yàn)分析
4.2 系統(tǒng)穩(wěn)定性的實(shí)驗(yàn)分析
5 總結(jié)