任秀麗,張雷
(遼寧大學(xué) 信息學(xué)院,沈陽(yáng) 110036)(?通信作者電子郵箱1638938145@qq.com)
基于實(shí)用拜占庭容錯(cuò)的改進(jìn)的多主節(jié)點(diǎn)共識(shí)機(jī)制
任秀麗,張雷*
(遼寧大學(xué) 信息學(xué)院,沈陽(yáng) 110036)(?通信作者電子郵箱1638938145@qq.com)
針對(duì)實(shí)用拜占庭容錯(cuò)(PBFT)共識(shí)協(xié)議通信復(fù)雜度高導(dǎo)致的共識(shí)效率低、單一主節(jié)點(diǎn)發(fā)生故障或存在拜占庭行為時(shí)會(huì)導(dǎo)致共識(shí)過程停止的問題,提出了改進(jìn)的多主節(jié)點(diǎn)實(shí)用拜占庭容錯(cuò)(IMPBFT)共識(shí)機(jī)制。首先,通過節(jié)點(diǎn)的共識(shí)輪數(shù)、存在拜占庭行為的共識(shí)輪數(shù)以及節(jié)點(diǎn)被賦予的優(yōu)先值,計(jì)算出節(jié)點(diǎn)的有效共識(shí)輪數(shù),再依據(jù)有效共識(shí)輪數(shù)的大小選出多個(gè)主節(jié)點(diǎn)。其次,對(duì)原共識(shí)機(jī)制進(jìn)行改進(jìn),使所有節(jié)點(diǎn)利用改進(jìn)的機(jī)制進(jìn)行共識(shí)。最后,引入流水線來(lái)實(shí)現(xiàn)IMPBFT共識(shí)的并發(fā)執(zhí)行。在進(jìn)行流水線操作時(shí),不同輪共識(shí)的多階段消息統(tǒng)一簽名,并且不再使用固定周期來(lái)控制流水線。理論研究和實(shí)驗(yàn)結(jié)果表明,IMPBFT的多主節(jié)點(diǎn)結(jié)構(gòu)相較單一主節(jié)點(diǎn)的共識(shí)結(jié)構(gòu)更加安全穩(wěn)定;與平方級(jí)通信量的PBFT和信用委托拜占庭容錯(cuò)(CDBFT)共識(shí)相比,IMPBFT將通信量降至線性級(jí);在交易吞吐量、擴(kuò)展性和交易時(shí)延方面,IMPBFT的性能要優(yōu)于PBFT和CDBFT;使用“多階段消息統(tǒng)一簽名、無(wú)固定周期”流水線的IMPBFT,比未使用流水線的IMPBFT在交易吞吐量上提高了75.2%。
區(qū)塊鏈;聯(lián)盟鏈;共識(shí)機(jī)制;實(shí)用拜占庭容錯(cuò);流水線
區(qū)塊鏈起源于比特幣[1-2],區(qū)塊鏈的核心技術(shù)是共識(shí)機(jī)制,而對(duì)共識(shí)機(jī)制的研究卻遠(yuǎn)早于區(qū)塊鏈。比特幣系統(tǒng)使用的共識(shí)機(jī)制是工作量證明(Proof of Work, PoW),其屬于公有鏈共識(shí)機(jī)制。PoW中的共識(shí)節(jié)點(diǎn)出于自身利益考慮[3],會(huì)維護(hù)區(qū)塊鏈的安全;但該共識(shí)機(jī)制的共識(shí)時(shí)間較長(zhǎng),無(wú)法適用于所有場(chǎng)景,這也促進(jìn)了跨鏈技術(shù)[4]的出現(xiàn)。區(qū)塊鏈除了公有鏈,還有私有鏈和聯(lián)盟鏈。聯(lián)盟鏈中具有代表性的共識(shí)機(jī)制有實(shí)用拜占庭容錯(cuò)(Practical Byzantine Fault Tolerance, PBFT)[5]。相較于PoW,PBFT能耗更小、效率更高,更適用于大型組織聯(lián)盟[6]。
PBFT共識(shí)機(jī)制包括pre-prepare、prepare和commit這3個(gè)重要階段。它要求共識(shí)節(jié)點(diǎn)處于弱同步網(wǎng)絡(luò)之中,具有拜占庭容錯(cuò)特性的同時(shí),也具有實(shí)用性。PBFT中只有一個(gè)主節(jié)點(diǎn)負(fù)責(zé)對(duì)交易排序,該共識(shí)的通信復(fù)雜度為O(n2)。隨著節(jié)點(diǎn)的增多,其通信量急劇增大,共識(shí)效率急劇下降。PBFT對(duì)于拜占庭節(jié)點(diǎn)不做處理,這些節(jié)點(diǎn)可以持續(xù)作惡。
以PBFT共識(shí)機(jī)制為基礎(chǔ),又有許多新的改進(jìn)方案:通過分層結(jié)構(gòu)[7-11]來(lái)減少每輪共識(shí)節(jié)點(diǎn)數(shù)量,從而達(dá)到減少通信量的目的,這樣雖然可以提高共識(shí)效率,但同時(shí)也會(huì)造成共識(shí)的拜占庭容錯(cuò)性降低;通過對(duì)節(jié)點(diǎn)身份驗(yàn)證[12-13]、引入信任機(jī)制[14-15]、使用聚合簽名[16]等提高安全性,但也帶來(lái)了一些額外的資源消耗和一定程度中心化;通過簡(jiǎn)化共識(shí)過程[17-18]來(lái)提高效率,但這使得共識(shí)實(shí)用性變差;通過將“協(xié)商”和“執(zhí)行”工作分離[19]來(lái)提高效能,但每部分出錯(cuò)都可能導(dǎo)致整個(gè)共識(shí)過程的停止;共識(shí)中引入節(jié)點(diǎn)退出機(jī)制[20],使得共識(shí)擴(kuò)展性增強(qiáng),不過每個(gè)節(jié)點(diǎn)的退出都會(huì)使得共識(shí)中的一些參數(shù)發(fā)生變化;通過動(dòng)態(tài)更新共識(shí)節(jié)點(diǎn)集合[21]來(lái)提高共識(shí)一致性,但同時(shí)會(huì)帶來(lái)額外資源開銷;利用視圖向量[22]來(lái)表示共識(shí)數(shù)據(jù),使得響應(yīng)處理變快,但任一節(jié)點(diǎn)宕機(jī)都可能導(dǎo)致共識(shí)停止。
Wang等[23]提出了一種“代理”共識(shí)信用委托拜占庭容錯(cuò)(Credit-Delegated Byzantine Fault Tolerance, CDBFT),該共識(shí)機(jī)制中將節(jié)點(diǎn)劃分為m個(gè)組織,每個(gè)組織選出一個(gè)代理節(jié)點(diǎn)。每次共識(shí)都包括兩個(gè)階段:組織內(nèi)共識(shí)和代理節(jié)點(diǎn)共識(shí)。這種共識(shí)機(jī)制減少了參與共識(shí)的節(jié)點(diǎn)數(shù)量,相較于PBFT共識(shí)減少了通信量,提高了共識(shí)效率。然而,其通信復(fù)雜度仍然是O(n2);當(dāng)節(jié)點(diǎn)變多時(shí),它的共識(shí)效率會(huì)呈現(xiàn)急劇下降的趨勢(shì),擴(kuò)展性較差。
基于上述研究中的共識(shí)效率、安全性以及擴(kuò)展性等問題的分析,本文提出了改進(jìn)的多主節(jié)點(diǎn)實(shí)用拜占庭容錯(cuò)(Improved Multi-primary-node Practical Byzantine Fault Tolerance, IMPBFT)共識(shí)機(jī)制,并通過流水線來(lái)實(shí)現(xiàn)該共識(shí)的并發(fā)執(zhí)行。本文的主要工作如下:
1)計(jì)算有效共識(shí)輪數(shù):根據(jù)節(jié)點(diǎn)參與共識(shí)的輪數(shù)以及存在拜占庭行為的輪數(shù)計(jì)算得到有效共識(shí)輪數(shù)。將有效共識(shí)輪數(shù)作為選舉主節(jié)點(diǎn)依據(jù),可以降低拜占庭節(jié)點(diǎn)成為主節(jié)點(diǎn)幾率。
2)提出改進(jìn)的多主節(jié)點(diǎn)共識(shí)IMPBFT:共識(shí)選出多個(gè)主節(jié)點(diǎn)來(lái)共同接收客戶端交易,以減少單個(gè)主節(jié)點(diǎn)弊端;改進(jìn)共識(shí)流程,減少共識(shí)通信,提高共識(shí)效率。
3)引入流水線共識(shí):IMPBFT共識(shí)中引入流水線進(jìn)一步提高效率。在流水線執(zhí)行過程中,多個(gè)階段消息統(tǒng)一簽名發(fā)送,并且不再使用固定的流水線周期,而是依靠共識(shí)自身來(lái)進(jìn)行流水線控制。
所有節(jié)點(diǎn)的信息中都包含以下4個(gè)屬性信息:
1)共識(shí)輪數(shù)(R):表示節(jié)點(diǎn)參與了多少輪共識(shí)。一輪共識(shí)完成后,節(jié)點(diǎn)共識(shí)輪數(shù)加1,而且不管節(jié)點(diǎn)是否故障或者存在拜占庭行為,其共識(shí)輪數(shù)都會(huì)加1。
3)優(yōu)先值(P):該值的設(shè)立主要是為了共識(shí)初始化階段主節(jié)點(diǎn)的選取。共識(shí)初始階段,由于所有節(jié)點(diǎn)共識(shí)輪數(shù)都為0,無(wú)法選出主節(jié)點(diǎn),所以需要設(shè)置優(yōu)先值來(lái)選出主節(jié)點(diǎn)。這里設(shè)置優(yōu)先值為常數(shù),未設(shè)置的都為0。
拜占庭行為主要是依據(jù)各節(jié)點(diǎn)發(fā)送的消息數(shù)據(jù)進(jìn)行判斷,一旦發(fā)現(xiàn)與共識(shí)結(jié)果不同的數(shù)據(jù),檢查該消息數(shù)據(jù)。若該消息中其他基本信息都相同,只有結(jié)果不同,由于消息中帶有簽名,那么可以判定發(fā)送該數(shù)據(jù)的節(jié)點(diǎn)存在拜占庭行為。若該消息中除結(jié)果外的其他基本信息不相同,并且這些信息被篡改了,那么也可以判定發(fā)送該消息的節(jié)點(diǎn)存在拜占庭行為。保留該消息作為證據(jù),將證據(jù)發(fā)送給所有節(jié)點(diǎn),如果沒有證據(jù),則無(wú)法判定一個(gè)節(jié)點(diǎn)是否為拜占庭節(jié)點(diǎn)。例如:在IMPBFT共識(shí)中,各節(jié)點(diǎn)發(fā)送prepare1消息,主節(jié)點(diǎn)要收集到2n/3+1條prepare1消息,而某節(jié)點(diǎn)發(fā)送消息未被主節(jié)點(diǎn)收集,則主節(jié)點(diǎn)無(wú)法判定其是否為拜占庭節(jié)點(diǎn)。
一個(gè)節(jié)點(diǎn)出現(xiàn)故障時(shí),其有效輪數(shù)依舊會(huì)隨著共識(shí)完成而增加。該故障節(jié)點(diǎn)若為主節(jié)點(diǎn),也不會(huì)剝奪其主節(jié)點(diǎn)資格,但是因?yàn)樗荒芄ぷ?,相?dāng)于整個(gè)網(wǎng)絡(luò)是k-1個(gè)主節(jié)點(diǎn),不影響共識(shí)過程的繼續(xù)。如果主節(jié)點(diǎn)全部故障,那么將重置節(jié)點(diǎn)優(yōu)先值,重新選出主節(jié)點(diǎn)。若一個(gè)主節(jié)點(diǎn)存在拜占庭行為,那么其拜占庭輪數(shù)會(huì)增加,而且這會(huì)觸發(fā)主節(jié)點(diǎn)集合的更新,重新選出k個(gè)有效輪數(shù)最高的節(jié)點(diǎn)。下一輪開始時(shí),這些節(jié)點(diǎn)作為主節(jié)點(diǎn)。只要不是所有主節(jié)點(diǎn)都出現(xiàn)了故障或者拜占庭行為,那么共識(shí)就可以繼續(xù)。
IMPBFT共識(shí)中一共有n個(gè)節(jié)點(diǎn)、k個(gè)主節(jié)點(diǎn)。在request階段,客戶將交易請(qǐng)求trade發(fā)送給k個(gè)主節(jié)點(diǎn),request消息格式為。其中:trade表示一條交易的請(qǐng)求,trade中包含交易的時(shí)間戳、交易雙方的公鑰、交易額等信息;Ci表示客戶端的序列號(hào);表示客戶對(duì)交易的簽名。
主節(jié)點(diǎn)收到客戶request消息后,便與其他節(jié)點(diǎn)進(jìn)行共識(shí),共識(shí)流程如圖1所示。圖1中,表示客戶端,0~9表示共識(shí)的節(jié)點(diǎn),0和5表示主節(jié)點(diǎn)。
圖1 IMPBFT共識(shí)流程Fig. 1 Consensus process of IMPBFT
1)pre-prepare階段。主節(jié)點(diǎn)收到request消息后,首先驗(yàn)證簽名。當(dāng)收集到一定數(shù)量驗(yàn)證通過的交易請(qǐng)求后,主節(jié)點(diǎn)向所有共識(shí)節(jié)點(diǎn)發(fā)送消息,其中,requestsSet是包含一定數(shù)量且?guī)в锌蛻艉灻慕灰自颊?qǐng)求集合,表示節(jié)點(diǎn)的簽名,Ni表示節(jié)點(diǎn)序列號(hào)。
2)prepare1階段。節(jié)點(diǎn)收到pre-prepare消息后,先驗(yàn)證該消息包含的主節(jié)點(diǎn)簽名,然后對(duì)消息進(jìn)行拆包,驗(yàn)證requestsSet中的客戶簽名。驗(yàn)證完畢后,拆解得到所有requestsSet包含的trade信息。對(duì)不同主節(jié)點(diǎn)的trade取并集,并依據(jù)時(shí)間戳進(jìn)行排序,得到的交易集合記為T。排序完成后,該節(jié)點(diǎn)向主節(jié)點(diǎn)發(fā)送消息,其中H(T)表示T的哈希。
3)prepare2階段。主節(jié)點(diǎn)收到超過2n/3節(jié)點(diǎn)(包括自身)發(fā)來(lái)的prepare1消息后,比較各消息中的H(T)哈希值。如果有超過n/3的相同H(T),主節(jié)點(diǎn)向所有節(jié)點(diǎn)發(fā)送消息,其中表示主節(jié)點(diǎn)收集到的prepare1消息集合。
4)commit1階段。節(jié)點(diǎn)收到prepare2消息后,首先驗(yàn)證消息簽名是否正確,其次驗(yàn)證中簽名是否正確,最后比較H(T)是否與節(jié)點(diǎn)自身排好序的交易哈希值相同。驗(yàn)證通過后,執(zhí)行這些交易。執(zhí)行完成后,該節(jié)點(diǎn)向主節(jié)點(diǎn)發(fā)送消息,其中表示帶有處理結(jié)果的交易信息。
5)commit2階段。主節(jié)點(diǎn)收集超過2n/3條commit1消息后,其中,如果有超過n/3的相同,那么主節(jié)點(diǎn)將這些交易打包成最終的區(qū)塊B。主節(jié)點(diǎn)向所有節(jié)點(diǎn)發(fā)送消息,commit1Set表示commit1消息集合。各節(jié)點(diǎn)和客戶端收到消息后對(duì)所有簽名進(jìn)行驗(yàn)證,并對(duì)擁有一致結(jié)果的節(jié)點(diǎn)數(shù)量核實(shí)。驗(yàn)證通過后,表示區(qū)塊B可以添加到本地區(qū)塊鏈上了。
IMPBFT的共識(shí)流程如算法1所示:收到客戶端的交易請(qǐng)求requestMsg后,共識(shí)節(jié)點(diǎn)集群nodeSet會(huì)對(duì)交易請(qǐng)求進(jìn)行5個(gè)階段共識(shí),最終返回交易的結(jié)果。
算法1 IMPBFT共識(shí)算法。
輸入 交易請(qǐng)求;
輸出 交易的處理共識(shí)結(jié)果。
6) ENDIF
13) ENDIF
20) ENDIF
24) ENDFOR
25) END
為實(shí)現(xiàn)共識(shí)的并發(fā)執(zhí)行,在IMPBFT共識(shí)中使用流水線。PBFT共識(shí)具有原子性,即當(dāng)前共識(shí)未完成,無(wú)法進(jìn)行下一輪共識(shí)。這種方式雖然可以加強(qiáng)交易的安全性,卻造成了共識(shí)效率的降低,可以采用多輪共識(shí)并行的方式提高效率。在IMPBFT共識(shí)中,只要不存在沖突交易的區(qū)塊(區(qū)塊中不存在兩個(gè)或兩個(gè)以上交易的付款人、收款人為同一客戶),便可以并行處理。而區(qū)塊鏈中,區(qū)塊的生成必須要等待上一個(gè)區(qū)塊完成才可以,因?yàn)橐粋€(gè)區(qū)塊頭部需要包含前一個(gè)區(qū)塊的哈希值。所以,在最后生成區(qū)塊的commit2階段,必須保證當(dāng)前區(qū)塊的前一個(gè)區(qū)塊已經(jīng)生成。區(qū)塊的生成存在順序性,可以采用流水線方式的并行。
在流水線IMPBFT共識(shí)機(jī)制運(yùn)行時(shí),需保證“一位客戶交易未確認(rèn),該客戶新交易不得被共識(shí)”,這也是為了避免“雙花攻擊”。所以五輪共識(shí)之內(nèi)不應(yīng)存在同一客戶的不同請(qǐng)求,五輪共識(shí)內(nèi),若客戶多次發(fā)送交易請(qǐng)求,那么這些請(qǐng)求將不會(huì)被立即處理。
1.3.1 共識(shí)多階段消息統(tǒng)一簽名
圖2是使用流水線的5輪IMPBFT共識(shí),其中,phase1、phase2、phase3、phase4、phase5分別代表IMPBFT共識(shí)中pre-prepare、prepare1、prepare2、commit1、commit2這5個(gè)階段,T1~T9表示9個(gè)流水線周期。
圖2 流水線共識(shí)Fig. 2 Pipeline consensus
在使用流水線共識(shí)期間,每個(gè)節(jié)點(diǎn)都會(huì)向其他節(jié)點(diǎn)發(fā)送不同階段消息,而每個(gè)共識(shí)階段的消息都有自己的獨(dú)立簽名。簽名與簽名驗(yàn)證會(huì)消耗大量時(shí)間,所以對(duì)同一時(shí)間段向其他節(jié)點(diǎn)發(fā)送的不同階段的消息只進(jìn)行一次簽名,將節(jié)約許多時(shí)間。例如:在圖2中T5期間,主節(jié)點(diǎn)需要向其他所有節(jié)點(diǎn)發(fā)送第1輪共識(shí)的commit2消息、第3輪的prepare2消息和第5輪的pre-prepare消息;所有節(jié)點(diǎn)都需要向主節(jié)點(diǎn)發(fā)送第2輪共識(shí)的commit1消息和第4輪的prepare1消息。那么,將第1輪的commit2消息、第3輪的prepare2消息和第5輪的pre-prepare消息放在一起,統(tǒng)一簽名后發(fā)給所有節(jié)點(diǎn);將第2輪的commit1消息和第4輪的prepare1消息統(tǒng)一簽名后發(fā)送給主節(jié)點(diǎn),這將節(jié)約大量時(shí)間。
1.3.2 無(wú)固定周期的IMPBFT流水線共識(shí)
無(wú)固定周期流水線共識(shí)與傳統(tǒng)計(jì)算機(jī)中流水線有所不同,計(jì)算機(jī)中采用的流水線都會(huì)使用一個(gè)統(tǒng)一的流水線周期。計(jì)算機(jī)中的流水線之所以采用統(tǒng)一流水線周期,是因?yàn)橛?jì)算機(jī)處理器中的運(yùn)算單元、存儲(chǔ)單元等資源都極為有限。如果一個(gè)周期沒結(jié)束便進(jìn)行下一步指令處理操作,很可能會(huì)導(dǎo)致其他資源被破壞或其他處理操作被迫停止,最終致使執(zhí)行結(jié)果錯(cuò)誤。因此,計(jì)算機(jī)中會(huì)選擇執(zhí)行時(shí)間最長(zhǎng)的指令執(zhí)行時(shí)間作為流水線周期。
然而,在共識(shí)程序執(zhí)行過程中,共識(shí)執(zhí)行所需的內(nèi)存空間、算力等資源都是充足的。而且,有沖突交易是無(wú)法同時(shí)被處理的,無(wú)需擔(dān)心共識(shí)階段過早執(zhí)行會(huì)破壞下階段的數(shù)據(jù)或處理結(jié)果,所以無(wú)需使用固定流水線周期。在該共識(shí)流水線執(zhí)行過程中,一個(gè)節(jié)點(diǎn)一旦收集到足夠的消息,并且處理完自身的任務(wù),便可以進(jìn)行下一階段的任務(wù)了,這樣能夠更充分利用計(jì)算機(jī)資源。但是由于多階段統(tǒng)一簽名的限制,統(tǒng)一簽名的消息需要一起發(fā)送,所以每個(gè)主節(jié)點(diǎn)的pre-prepare、prepare2、commit2消息實(shí)際是在使用一個(gè)流水線周期時(shí)間。同理,每個(gè)節(jié)點(diǎn)的prepare1、commit1消息也是在使用一個(gè)流水線周期時(shí)間,這兩個(gè)周期時(shí)間可以不同。
在無(wú)固定周期的IMPBFT共識(shí)流水線中,共識(shí)自身會(huì)對(duì)流水線流程進(jìn)行約束控制:首先,一輪共識(shí)的上一階段沒有結(jié)束,下一階段無(wú)法繼續(xù);其次,由于在commit2階段生成區(qū)塊,區(qū)塊生成需要上一個(gè)區(qū)塊提供哈希,所以一輪共識(shí)的commit2階段開始必須要等到上一輪共識(shí)的commit2階段結(jié)束,這些約束也是不使用固定流水線周期的原因。因此實(shí)際共識(shí)中的流水線可能如圖3所示。最后通過實(shí)驗(yàn)得出,無(wú)固定周期流水線的交易吞吐量會(huì)高于有固定周期流水線。
圖3 無(wú)固定周期流水線Fig. 3 Pipeline without fixed cycle
無(wú)固定周期流水線的共識(shí)如算法2所示:根據(jù)節(jié)點(diǎn)的序列號(hào)Ni,判斷節(jié)點(diǎn)是主節(jié)點(diǎn)還是普通共識(shí)節(jié)點(diǎn),分別進(jìn)行不同步驟的流水線共識(shí)。
算法2 無(wú)固定周期流水線共識(shí)算法。
輸入 共識(shí)節(jié)點(diǎn)序列號(hào);
輸出 共識(shí)節(jié)點(diǎn)下一共識(shí)階段消息。
1) Algorithm NocyclePipeline()
13) ENDIF
19) ENDIF
20) ENDFOR
21) END
PBFT共識(shí)要求網(wǎng)絡(luò)節(jié)點(diǎn)部分同步,即PBFT共識(shí)要求有超過2n/3的網(wǎng)絡(luò)節(jié)點(diǎn)與網(wǎng)絡(luò)中其他至少2n/3網(wǎng)絡(luò)節(jié)點(diǎn)是同步的。由于CDBFT底層直接使用PBFT共識(shí),所以它的要求和PBFT一樣。而IMPBFT共識(shí)要求有至少2n/3節(jié)點(diǎn)與主節(jié)點(diǎn)之間的網(wǎng)絡(luò)是同步的,相較于PBFT,IMPBFT網(wǎng)絡(luò)要求更低,更具有實(shí)用性。
一輪共識(shí)中,PBFT的共識(shí)通信次數(shù)E1為:
一輪共識(shí)中,CDBFT的共識(shí)通信次數(shù)E2為:
一輪共識(shí)中,IMPBFT的共識(shí)通信次數(shù)E3為:
PBFT和CDBFT的通信復(fù)雜度為O(n2),IMPBFT的通信復(fù)雜度為O(n)。當(dāng)節(jié)點(diǎn)數(shù)n很大時(shí),IMPBFT的共識(shí)通信量會(huì)更少,擴(kuò)展性更好。
2.2.1 主節(jié)點(diǎn)選舉機(jī)制
在PBFT共識(shí)中,對(duì)于拜占庭節(jié)點(diǎn)是不做任何處理的,這也意味著拜占庭節(jié)點(diǎn)與誠(chéng)實(shí)節(jié)點(diǎn)被選為主節(jié)點(diǎn)的概率相同。而在IMPBFT共識(shí)中,通過有效輪數(shù)對(duì)節(jié)點(diǎn)的拜占庭行為進(jìn)行約束。
2.2.2 共識(shí)安全
PBFT、CDBFT與IMPBFT的共識(shí)拜占庭容忍度都是,但是IMPBFT多主節(jié)點(diǎn)的設(shè)計(jì)會(huì)更安全。
若只有一個(gè)主節(jié)點(diǎn),那么交易的順序?qū)⒂稍撝鞴?jié)點(diǎn)決定,這可能會(huì)帶來(lái)一些弊端??蛻魧⒔灰渍?qǐng)求發(fā)送給主節(jié)點(diǎn),主節(jié)點(diǎn)可以選擇不轉(zhuǎn)發(fā)。一段時(shí)間之后,客戶沒有收到交易的執(zhí)行結(jié)果,會(huì)將交易請(qǐng)求再次發(fā)送給主節(jié)點(diǎn)以及所有的副本節(jié)點(diǎn)。如果該交易沒有被共識(shí),那么節(jié)點(diǎn)對(duì)該交易共識(shí)。但是,交易的最終順序可能會(huì)被改變。
例如,客戶C0賬戶有100元,請(qǐng)求1:客戶C0在time時(shí)刻向客戶C1轉(zhuǎn)賬60元,請(qǐng)求2:客戶C0在time+1時(shí)刻向客戶C2轉(zhuǎn)賬50元。正常順序是先執(zhí)行請(qǐng)求1再執(zhí)行請(qǐng)求2,并且由于在PBFT共識(shí)中,一個(gè)客戶的請(qǐng)求未被執(zhí)行完,那么該客戶是不可以繼續(xù)發(fā)送請(qǐng)求的,所以,請(qǐng)求2在請(qǐng)求1未出結(jié)果前是不合法的。但是,由于網(wǎng)絡(luò)或其他原因,兩個(gè)請(qǐng)求幾乎同時(shí)到達(dá)主節(jié)點(diǎn),主節(jié)點(diǎn)正確的做法是選擇請(qǐng)求1;如果主節(jié)點(diǎn)選擇了請(qǐng)求2,那么最終的交易順序會(huì)被改變。
同樣地,惡意客戶不再把請(qǐng)求先發(fā)給主節(jié)點(diǎn),而是將請(qǐng)求發(fā)送給副本節(jié)點(diǎn),這會(huì)造成副本節(jié)點(diǎn)認(rèn)為客戶的請(qǐng)求沒有被及時(shí)處理執(zhí)行。在交易高峰期,惡意客戶向副本節(jié)點(diǎn)網(wǎng)絡(luò)中發(fā)送大量請(qǐng)求,可能會(huì)帶來(lái)不必要的損失。
主節(jié)點(diǎn)故障或存在拜占庭行為會(huì)導(dǎo)致其無(wú)法正常工作。一旦主節(jié)點(diǎn)全部無(wú)法正常工作,那么整個(gè)共識(shí)都將會(huì)停止,直到選出新的主節(jié)點(diǎn),客戶的交易也將無(wú)法得到及時(shí)處理。
2)共識(shí)因?yàn)橹鞴?jié)點(diǎn)全部故障而停止的概率P1:
其中,P1會(huì)隨著k的增大而不斷減小,所以主節(jié)點(diǎn)越多,共識(shí)因?yàn)橹鞴?jié)點(diǎn)全部故障而停止的概率越小。
3)共識(shí)因?yàn)橹鞴?jié)點(diǎn)全部是拜占庭節(jié)點(diǎn)而停止的概率為P2:
4)共識(shí)因?yàn)橹鞴?jié)點(diǎn)全部都故障或者存在拜占庭行為而停止的概率為P3:
其中i表示主節(jié)點(diǎn)中拜占庭節(jié)點(diǎn)個(gè)數(shù)。
圖4 主節(jié)點(diǎn)數(shù)與共識(shí)停止的概率關(guān)系Fig. 4 Probability relationship between number of primary nodes and consensus stopping
在區(qū)塊鏈系統(tǒng)中,當(dāng)交易量增多時(shí),簽名與簽名的驗(yàn)證非常耗時(shí)。相同的數(shù)據(jù),簽名一次比將數(shù)據(jù)分割后多次簽名要節(jié)省時(shí)間,同理,將消息合并后一起簽名將會(huì)節(jié)約大量時(shí)間。
IMPBFT共識(shí)中每個(gè)消息獨(dú)立簽名,每輪共識(shí)簽名次數(shù)S1為:
IMPBFT共識(shí)中每個(gè)消息獨(dú)立簽名,每輪共識(shí)簽名驗(yàn)證總次數(shù)V1為:
IMPBFT共識(shí)中多階段消息統(tǒng)一簽名,每輪共識(shí)簽名總次數(shù)S2為:
IMPBFT共識(shí)多階段消息統(tǒng)一簽名,每輪共識(shí)驗(yàn)證簽名次數(shù)V2為:
使用多階段消息統(tǒng)一簽名的流水線共識(shí),平均一輪共識(shí)通信次數(shù)E4為:
使用多階段消息統(tǒng)一簽名后,簽名次數(shù)與簽名驗(yàn)證次數(shù)會(huì)減少,從而達(dá)到節(jié)約時(shí)間的目的。同樣地,使用多消息統(tǒng)一簽名的流水線共識(shí)會(huì)節(jié)約通信資源。
然而,多階段消息統(tǒng)一簽名會(huì)讓單次發(fā)送的消息數(shù)據(jù)變大。在網(wǎng)絡(luò)環(huán)境極差的情況下,例如遭到拒絕服務(wù)攻擊(Denial of Service, DoS)時(shí),消息發(fā)送失敗的概率可能會(huì)高于獨(dú)立簽名的消息。
本文實(shí)驗(yàn)利用Go語(yǔ)言編寫一個(gè)單機(jī)多節(jié)點(diǎn)測(cè)試平臺(tái),在相同的軟硬件環(huán)境下,對(duì)不同共識(shí)機(jī)制進(jìn)行模擬測(cè)試得到實(shí)驗(yàn)數(shù)據(jù)。實(shí)驗(yàn)電腦配置為:處理器i7-9750;內(nèi)存16 GB;操作系統(tǒng)Windows 10,64位;實(shí)驗(yàn)部署環(huán)境Go 1.15。在實(shí)驗(yàn)中,利用Go語(yǔ)言中的“協(xié)程”來(lái)模擬節(jié)點(diǎn),利用“通道”來(lái)傳輸數(shù)據(jù),并利用Go語(yǔ)言中的“test”命令進(jìn)行共識(shí)的性能測(cè)試。實(shí)驗(yàn)主要對(duì)PBFT、CDBFT與IMPBFT共識(shí)的吞吐量、擴(kuò)展性和交易時(shí)延進(jìn)行了測(cè)試。
實(shí)驗(yàn)中,IMPBFT主節(jié)點(diǎn)數(shù)k分別設(shè)置為2、3、4、5、6;CDBFT中組織個(gè)數(shù)m分別設(shè)置為2、3、4、5、6。吞吐量測(cè)試中,共識(shí)節(jié)點(diǎn)數(shù)量n分別設(shè)置為50、60、70、80,比較共識(shí)的不同時(shí)間段吞吐量。擴(kuò)展性測(cè)試中,共識(shí)輪數(shù)(即多少輪共識(shí))分別設(shè)置為100、200、300、400、500,控制共識(shí)節(jié)點(diǎn)數(shù)n,比較共識(shí)時(shí)間。交易時(shí)延測(cè)試中,通過控制拜占庭節(jié)點(diǎn)數(shù)f來(lái)比較交易的時(shí)延。
共識(shí)機(jī)制的交易吞吐量與共識(shí)效率有關(guān),共識(shí)效率高,則交易吞吐量也必然高。影響共識(shí)效率的主要因素是通信量。該實(shí)驗(yàn)比較了IMPBFT、PBFT、CDBFT以及使用流水線后IMPBFT共識(shí)的吞吐量。對(duì)共識(shí)吞吐量進(jìn)行多組實(shí)驗(yàn)測(cè)試,這里隨機(jī)選取了k為3、m為2、n為60的實(shí)驗(yàn)結(jié)果,如圖5所示。其中,流水線1表示普通流水線共識(shí)(每個(gè)消息獨(dú)立簽名、有固定周期);流水線2表示“多階段消息統(tǒng)一簽名、有固定周期”流水線共識(shí);流水線3表示“多階段消息統(tǒng)一簽名、無(wú)固定周期”流水線共識(shí)。三種流水線中設(shè)置的參數(shù)變量與IMPBFT保持一致。
圖5 PBFT、CDBFT、IMPBFT與使用流水線的IMPBFT的交易吞吐量對(duì)比Fig. 5 Comparison of transaction throughput of PBFT,CDBFT, IMPBFT and IMPBFT using pipeline
從圖5可知,IMPBFT共識(shí)的交易吞吐量相較PBFT、CDBFT分別提高了259.9%和11.8%。IMPBFT共識(shí)引入普通流水線后,比未使用流水線的IMPBFT共識(shí)的吞吐量提高了21.6%;引入“多階段消息統(tǒng)一簽名、有固定周期”流水線的IMPBFT共識(shí),比未使用流水線的IMPBFT共識(shí)的吞吐量提高了67.5%;引入“多階段消息統(tǒng)一簽名、無(wú)固定周期”流水線的IMPBFT共識(shí),比未使用流水線的IMPBFT共識(shí)的吞吐量提高了75.2%。綜上可知,IMPBFT的共識(shí)效率優(yōu)于PBFT、CDBFT;使用流水線后,會(huì)使IMPBFT共識(shí)效率進(jìn)一步提高。
共識(shí)機(jī)制中共識(shí)節(jié)點(diǎn)增多,會(huì)造成通信量相應(yīng)增多,共識(shí)時(shí)間增長(zhǎng)。如果增長(zhǎng)速度太快,則表明共識(shí)的擴(kuò)展性較差。擴(kuò)展性測(cè)試主要是測(cè)試共識(shí)節(jié)點(diǎn)數(shù)對(duì)共識(shí)的影響,為了測(cè)試擴(kuò)展性,進(jìn)行了多組實(shí)驗(yàn)?zāi)M,這里隨機(jī)選取k為4、m為4、共識(shí)輪數(shù)為100的實(shí)驗(yàn)結(jié)果,如圖6所示。
圖6 PBFT、CDBFT與IMPBFT的擴(kuò)展性對(duì)比Fig. 6 Comparison of scalability of PBFT,CDBFT and IMPBFT
從圖6可知,隨著節(jié)點(diǎn)數(shù)的增加,三種共識(shí)的時(shí)間都在增長(zhǎng),PBFT、CDBFT的共識(shí)時(shí)間隨著節(jié)點(diǎn)數(shù)增加呈現(xiàn)平方級(jí)增長(zhǎng),IMBFT的共識(shí)時(shí)間隨著節(jié)點(diǎn)數(shù)增加呈現(xiàn)線性級(jí)增長(zhǎng)。這主要是因?yàn)榍皟蓚€(gè)共識(shí)機(jī)制的通信復(fù)雜度為O(n2),而本文提出的IMBFT機(jī)制的通信復(fù)雜度為O(n)。在擴(kuò)展性方面,IMPBFT優(yōu)于PBFT和CDBFT。
交易時(shí)延是指交易請(qǐng)求被發(fā)出到交易被確認(rèn)的這段時(shí)間,交易時(shí)延越小,反映出共識(shí)效率越高。此外,共識(shí)中拜占庭節(jié)點(diǎn)的數(shù)量也會(huì)對(duì)交易的時(shí)延有一定影響。為測(cè)試交易延遲,進(jìn)行了多組實(shí)驗(yàn),這里隨機(jī)選取了k為5、m為3、n為300的實(shí)驗(yàn)結(jié)果,如圖7所示。
由圖7可知,IMPBFT的交易時(shí)延相較PBFT和CDBFT分別降低了71.4%和11.2%,IMPBFT共識(shí)中的交易可以更快地被確認(rèn)。隨著共識(shí)中拜占庭節(jié)點(diǎn)數(shù)增加,PBFT的交易時(shí)延有一定幅度增長(zhǎng),而IMPBFT的交易時(shí)延最穩(wěn)定。IMPBFT時(shí)延最低是因?yàn)槠渫ㄐ帕孔畹?,共識(shí)效率最高;而IMPBFT的多主節(jié)點(diǎn)設(shè)計(jì),使該共識(shí)受拜占庭節(jié)點(diǎn)的影響降低,所以時(shí)延也更加穩(wěn)定。實(shí)驗(yàn)結(jié)果表明,在交易時(shí)延性方面,IMPBFT優(yōu)于PBFT和CDBFT。
圖7 PBFT、CDBFT與IMPBFT的交易時(shí)延對(duì)比Fig. 7 Comparison of transaction delays of PBFT, CDBFT and IMPBFT
本文所提的有效共識(shí)輪數(shù)為主節(jié)點(diǎn)的選取提供依據(jù),并且利用它可以降低拜占庭節(jié)點(diǎn)成為主節(jié)點(diǎn)的幾率,所提出的IMPBFT共識(shí)比單個(gè)主節(jié)點(diǎn)的共識(shí)更穩(wěn)定安全,共識(shí)效率更高。IMPBFT共識(shí)中引入了流水線,在流水線執(zhí)行過程中,多階段消息統(tǒng)一簽名、不使用固定周期,使得IMPBFT的共識(shí)效率進(jìn)一步提高。實(shí)驗(yàn)結(jié)果表明,所提IMPBFT共識(shí)在交易吞吐量、擴(kuò)展性和交易時(shí)延等方面都有較好表現(xiàn)。隨著區(qū)塊鏈的不斷應(yīng)用,后續(xù)還會(huì)對(duì)共識(shí)機(jī)制的實(shí)用性、效率和安全性做進(jìn)一步研究。
[1] 韓璇,袁勇,王飛躍.區(qū)塊鏈安全問題:研究現(xiàn)狀與展望[J].自動(dòng)化學(xué)報(bào),2019,45(1):206-225.(HAN X, YUAN Y, WANG F Y. Security problems on blockchain: the state of the art and future trends [J]. Acta Automatica Sinica, 2019, 45(1): 206-225.)
[2] 邵奇峰,金澈清,張召,等.區(qū)塊鏈技術(shù):架構(gòu)及進(jìn)展[J].計(jì)算機(jī)學(xué)報(bào),2018,41(5):969-988.(SHAO Q F, JIN C Q,ZHANG Z, et al. Blockchain:architecture and research progress [J]. Chinese Journal of Computers, 2018, 41(5): 969-988.)
[3] 唐長(zhǎng)兵,楊珍,鄭忠龍,等.PoW共識(shí)算法中的博弈困境分析與優(yōu)化[J].自動(dòng)化學(xué)報(bào),2017,43(9):1520-1531.(TANG C B, YANG Z,ZHENG Z L, et al. Game dilemma analysis and optimization of PoW consensus algorithm [J]. Acta Automatica Sinica, 2017, 43(9): 1520-1531.)
[4] 李芳,李卓然,趙赫.區(qū)塊鏈跨鏈技術(shù)進(jìn)展研究[J].軟件學(xué)報(bào),2019,30(6):1649-1660.(LI F, LI Z R, ZHAO H. Research on the progress in cross-chain technology of blockchains [J]. Journal of Software, 2019, 30(6): 1649-1660.)
[5] CASTRO M, LISKOV B. Practical Byzantine fault tolerance [C]// Proceedings of the 1999 3rd Symposium on Operating Systems Design and Implementation. Berkeley: USENIX Association, 1999: 173-186.
[6] 張超,李強(qiáng),陳子豪,等.Medical chain:聯(lián)盟式醫(yī)療區(qū)塊鏈系統(tǒng)[J].自動(dòng)化學(xué)報(bào),2019,45(8):1495-1510.(ZHANG C, LI Q, CHEN Z H, et al. Medical chain:alliance medical blockchain system [J]. Acta Automatica Sinica, 2019, 45(8): 1495-1510.)
[7] AHMAD A, SAAD M, NJILLA L, et al. BlockTrail: a scalable multichain solution for blockchain-based audit trails [C]// Proceedings of the 2019 IEEE International Conference on Communications. Piscataway:IEEE, 2019: 1-6.
[8] JIANG Y J, LIAN Z. Scalable efficient Byzantine fault tolerance [C]// Proceedings of the 2019 IEEE 3rd Advanced Information Management, Communicates, Electronic and Automation Control Conference. Piscataway: IEEE, 2019: 1736-1742.
[9] LI X F, LV F R, XIANG F, et al. Research on key technologies of logistics information traceability model based on consortium chain [J]. IEEE Access, 2020, 8:69754-69762.
[10] 包振山,王凱旋,張文博.基于樹形拓?fù)渚W(wǎng)絡(luò)的實(shí)用拜占庭容錯(cuò)共識(shí)算法[J].應(yīng)用科學(xué)學(xué)報(bào),2020,38(1):34-50.(BAO Z S, WANG K X,ZHANG W B. A practical Byzantine fault tolerance consensus algorithm based on tree topological network [J]. Journal of Applied Sciences, 2020, 38(1): 34-50.)
[11] 閔新平,李慶忠,孔蘭菊,等.許可鏈多中心動(dòng)態(tài)共識(shí)機(jī)制[J].計(jì)算機(jī)學(xué)報(bào),2018,41(5):1005-1020.(MIN X P, LI Q Z,KONG L J, et al. Permissioned blockchain dynamic consensus mechanism based multi-centers [J]. Chinese Journal of Computers, 2018, 41(5): 1005-1020.)
[12] CHEN X L, HU X, LI Y, et al. A blockchain based access authentication scheme of energy internet [C]// Proceedings of the 2018 2nd IEEE Conference on Energy Internet and Energy System Integration. Piscataway: IEEE, 2018: 1-9.
[13] XU H, LONG Y, LIU Z Q, et al. Dynamic practical Byzantine fault tolerance [C]// Proceedings of the 2018 IEEE Conference on Communications and Network Security. Piscataway: IEEE, 2018: 1-8.
[14] GAO S, YU T Y, ZHU J M, et al. T-PBFT: an EigenTrust-based practical Byzantine fault tolerance consensus algorithm [J]. China Communications, 2019, 16(12): 111-123.
[15] 賴英旭,薄尊旭,劉靜.基于改進(jìn)PBFT算法防御區(qū)塊鏈中sybil攻擊的研究[J].通信學(xué)報(bào),2020,41(9):104-117.(LAI Y X, BO Z X, LIU J. Research on sybil attack in defense blockchain based on improved PBFT algorithm [J]. Journal on Communications, 2020, 41(9): 104-117.)
[16] 苑超,徐蜜雪,斯雪明.基于聚合簽名的共識(shí)算法優(yōu)化方案[J].計(jì)算機(jī)科學(xué),2018,45(2):53-56,83.(YUAN C, XU M X, SI X M. Optimization scheme of consensus algorithm based on aggregation signature [J]. Computer Science, 2018, 45(2): 53-56, 83.)
[17] 甘俊,李強(qiáng),陳子豪,等.區(qū)塊鏈實(shí)用拜占庭容錯(cuò)共識(shí)算法的改進(jìn)[J].計(jì)算機(jī)應(yīng)用,2019,39(7):2148-2155.(GAN J, LI Q, CHEN Z H, et al. Improvement of blockchain practical Byzantine fault tolerance consensus algorithm [J]. Journal of Computer Applications, 2019, 39(7): 2148-2155.)
[18] 王日宏,張立鋒,徐泉清,等.可應(yīng)用于聯(lián)盟鏈的拜占庭容錯(cuò)共識(shí)算法[J].計(jì)算機(jī)應(yīng)用研究,2020,37(11):3382-3386.(WANG R H, ZHANG L F,XU Q Q, et al. Byzantine fault tolerance algorithm for consortium blockchain [J]. Application Research of Computers, 2020, 37(11): 3382-3386.)
[19] 韓鎮(zhèn)陽(yáng),宮寧生,任珈民.一種區(qū)塊鏈實(shí)用拜占庭容錯(cuò)算法的改進(jìn)[J].計(jì)算機(jī)應(yīng)用與軟件,2020, 37(2):226-233,294.(HAN Z Y, GONG N S, REN J M. An improved blockchain practical Byzantine fault tolerance algorithm [J]. Computer Applications and Software, 2020, 37(2): 226-233, 294.)
[20] 韓嗣誠(chéng),朱曉榮,張秀賢.優(yōu)化可擴(kuò)展的拜占庭容錯(cuò)共識(shí)算法[J].物聯(lián)網(wǎng)學(xué)報(bào),2020,4(2):18-25.(HANG S C, ZHU X R,ZHANG X X. Optimized scalable Byzantine fault tolerance algorithm [J]. Chinese Journal on Internet of Things, 2020, 4(2): 18-25.)
[21] 方維維,王子岳,宋慧麗,等.一種面向區(qū)塊鏈的優(yōu)化PBFT共識(shí)算法[J].北京交通大學(xué)學(xué)報(bào),2019,43(5):58-64.(FANG W W,WANG Z Y, SONG H L, et al. An optimized PBFT consensus algorithm for blockchain [J]. Journal of Beijing Jiaotong University,2019, 43(5): 58-64.)
[22] 李青鵬,趙相福,陳中育,等.GVGBC:全視圖情形下基于Gossip協(xié)議的拜占庭共識(shí)算法[J].浙江師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2020,43(1):50-55.(LI Q P, ZHAO X F, CHEN Z Y, et al. GVGBC: a Byzantine consensus algorithm in global view based on Gossip protocol [J]. Journal of Zhejiang Normal University (Natural Sciences), 2020, 43(1): 50-55.)
[23] WANG Y H, CAI S B, LIN C L, et al. Study of blockchains’ consensus mechanism based on credit [J]. IEEE Access, 2019,7: 10224-10231.
Improved multi-primary-node consensus mechanism based on practical Byzantine fault tolerance
REN Xiuli, ZHANG Lei*
(College of Information,Liaoning University,Shenyang Liaoning110036,China)
The high communication complexity of Practical Byzantine Fault Tolerance (PBFT) consensus protocol will lead to low consensus efficiency, the failure or the existing of Byzantine behavior of the single primary node will lead to the stop of consensus process. In order to solve these problems, an Improved Multi-primary-node Practical Byzantine Fault Tolerance (IMPBFT) consensus mechanism was proposed. Firstly,the number of effective consensus rounds of nodes was calculated by the number of consensus rounds of nodes, the number of consensus rounds with Byzantine behavior and the priority values assigned to the nodes, and several primary nodes were selected according to the size of effective consensus rounds. Then, the original consensus mechanism was improved to make all nodes use the improved consensus mechanism for consensus. Finally, pipeline was introduced to implement the concurrent execution of IMPBFT consensus. In the pipeline operation, multi-stage messages of different rounds’ consensus were signed together, and no fixed cycle was used to control the pipeline. Theoretical research and experimental results show that, the multi-primary-node structure of IMPBFT is more secure and stable than the consensus structure of single primary node. Compared with PBFT and Credit-Delegated Byzantine Fault Tolerance (CDBFT) consensus with square level traffic, the proposed IMPBFT reduces the traffic to linear level. The IMPBFT has better performance than PBFT and CDBFT in terms of transaction throughput, scalability and transaction delay. The IMPBFT using the “multi-stage messages signed together with no fixed cycle” pipeline has improved the transaction throughput by 75.2% compared with the IMPBFT without pipeline.
blockchain; consortium chain; consensus mechanism; Practical Byzantine Fault Tolerance (PBFT); pipeline
TP311.5
A
1001-9081(2022)05-1500-08
10.11772/j.issn.1001-9081.2021050772
2021?05?13;
2021?09?09;
2021?09?16。
遼寧省自然科學(xué)基金資助項(xiàng)目(201202089)。
任秀麗(1965—),女,吉林四平人,教授,博士,主要研究方向:無(wú)線網(wǎng)絡(luò)與通信、區(qū)塊鏈; 張雷(1996—),男,江蘇徐州人,碩士研究生,CCF會(huì)員,主要研究方向:區(qū)塊鏈。
This work is partially supported by Natural Science Foundation of Liaoning Province (201202089).
REN Xiuli, born in 1965, Ph. D., professor. Her research interests include wireless network and communication, blockchain.
ZHANG Lei, born in 1996, M. S. candidate. His research interests include blockchain.