劉建偉/LIU Jianwei
喻輝/YU Hui
(北京航空航天大學(xué),北京100191)
2008年,化名為“中本聰”的研究人員首次提出了比特幣[1]。在隨后幾年中,數(shù)字貨幣發(fā)展迅速,出現(xiàn)了像以太坊、萊特幣等具有代表性的一些數(shù)字貨幣。而支撐這類數(shù)字貨幣的區(qū)塊鏈技術(shù)也逐漸得到研究人員的重視。
區(qū)塊鏈技術(shù)保證在不可信、分布式環(huán)境下,所有節(jié)點(diǎn)通過一定的共識算法對公共賬本達(dá)成一致。在區(qū)塊鏈中,賬本以區(qū)塊的形式構(gòu)成,每個合法的區(qū)塊都以特定的密碼學(xué)方式鏈接到前一個塊,這也就是區(qū)塊“鏈”的內(nèi)涵。隨著區(qū)塊的不斷生成和添加,歷史區(qū)塊內(nèi)容不能被修改,區(qū)塊中記錄的所有內(nèi)容能夠被網(wǎng)絡(luò)中所有節(jié)點(diǎn)獲取。
區(qū)塊鏈具有去中心化、公開透明、歷史數(shù)據(jù)防篡改等特點(diǎn)。區(qū)塊鏈的共識不需要任何可信的第三方,所有分布式節(jié)點(diǎn)參與共識。在公有鏈中,任何節(jié)點(diǎn)能夠自由加入、退出網(wǎng)絡(luò),節(jié)點(diǎn)數(shù)量隨時變化并且不可預(yù)知。一旦區(qū)塊鏈中區(qū)塊數(shù)據(jù)達(dá)到一定的“深度”(例如:在比特幣中,超過6個區(qū)塊),則可認(rèn)定區(qū)塊內(nèi)容很大概率不會被篡改。
目前區(qū)塊鏈的體系架構(gòu)一般分為以下幾個層面:從下到上依次是數(shù)據(jù)層、網(wǎng)絡(luò)層、共識與激勵層、合約層和應(yīng)用層。數(shù)據(jù)層包括最基本的交易數(shù)據(jù)、區(qū)塊數(shù)據(jù)和時間戳等,數(shù)據(jù)層采用哈希函數(shù)、數(shù)字簽名等密碼學(xué)技術(shù),為區(qū)塊鏈提供最基本的安全保證;網(wǎng)絡(luò)層采用基于點(diǎn)對點(diǎn)的網(wǎng)絡(luò)結(jié)構(gòu),負(fù)責(zé)區(qū)塊數(shù)據(jù)、節(jié)點(diǎn)間消息的傳播,區(qū)塊鏈網(wǎng)絡(luò)中節(jié)點(diǎn)一般采用八卦協(xié)議進(jìn)行通信;共識與激勵層是區(qū)塊鏈技術(shù)的核心,決定了區(qū)塊以什么方式在節(jié)點(diǎn)間達(dá)成一致,比特幣采取的共識機(jī)制是工作量證明(PoW),而激勵制度是對區(qū)塊記錄者進(jìn)行一定的獎勵分配,從經(jīng)濟(jì)學(xué)的角度使區(qū)塊鏈系統(tǒng)維持正常運(yùn)行;合約層主要是在以太坊等新型區(qū)塊鏈系統(tǒng)中的智能合約,以腳本代碼的形式完成用戶設(shè)定的交易過程;應(yīng)用層主要指的是區(qū)塊鏈系統(tǒng)的綜合應(yīng)用,如電子投票平臺、食品溯源等。
共識機(jī)制作為區(qū)塊鏈的核心技術(shù)顯得十分重要。共識機(jī)制的目的是實現(xiàn)公共賬本的2個關(guān)鍵特性:一是一致性,即去掉區(qū)塊鏈末端k個區(qū)塊(k為區(qū)塊鏈的安全參數(shù),比特幣中k=6)之后,誠實節(jié)點(diǎn)的區(qū)塊鏈能夠互相成為前綴,也就是說,誠實節(jié)點(diǎn)的區(qū)塊最終會達(dá)成一致;二是活性,即誠實用戶上傳的交易,在一定的時間之后,一定會出現(xiàn)在其他所有誠實節(jié)點(diǎn)的賬本中。為了更好地保證以上2個特性的實現(xiàn),許多共識機(jī)制應(yīng)運(yùn)而生。
BONNEAU J等人[2]對比特幣和其他數(shù)字貨幣完成了分類和調(diào)研。BANO S等人[3]對區(qū)塊鏈時代的共識機(jī)制進(jìn)行了分類和詳細(xì)的研究。ZOHAR A[4]分析了以比特幣為代表的加密貨幣的可擴(kuò)展性和安全性,強(qiáng)調(diào)了基于PoW的共識協(xié)議中激勵機(jī)制的重要性,與整個系統(tǒng)的安全密切相關(guān);CACHIN C和VUKOLIC M[5]討論了經(jīng)典共識中的重要概念,重點(diǎn)對需要身份準(zhǔn)入的區(qū)塊鏈系統(tǒng)進(jìn)行研究;BANO S、Al-BASSAM M 和 DANEZIS G[6]對可擴(kuò)展區(qū)塊鏈的設(shè)計給出了具體的發(fā)展路線圖;PASS R和SHI E[7]分析了大規(guī)模共識的形式化模型,并定義其安全性質(zhì)。
共識機(jī)制分為經(jīng)典分布式共識和區(qū)塊鏈共識兩大類,文中我們主要研究區(qū)塊鏈共識,將區(qū)塊鏈共識分為基于PoW的共識機(jī)制、基于權(quán)益證明(PoS)的共識機(jī)制、采用單一委員會的混合共識機(jī)制、采用多委員會的混合共識機(jī)制幾大類,并給出了每一類共識機(jī)制的基本流程、典型共識方案和優(yōu)缺點(diǎn)分析。
PoW共識機(jī)制主要利用節(jié)點(diǎn)算力來選擇區(qū)塊的生產(chǎn)者,節(jié)點(diǎn)通過找到滿足要求的哈希函數(shù)原像完成PoW的過程。PoS共識機(jī)制主要根據(jù)節(jié)點(diǎn)擁有財產(chǎn)的數(shù)量隨機(jī)決定區(qū)塊生產(chǎn)者,擁有財產(chǎn)越多的節(jié)點(diǎn),成為區(qū)塊生產(chǎn)者的概率越大。采用單一委員會的混合共識機(jī)制首先利用PoW或PoS的形式選出一定數(shù)量的節(jié)點(diǎn)組成“委員會”,然后在委員會內(nèi)部采用經(jīng)典分布式共識完成區(qū)塊的生產(chǎn)和確認(rèn)。采用多委員會的混合共識也被稱為分片共識,利用多個并行的委員會同時處理交易,實現(xiàn)網(wǎng)絡(luò)的可擴(kuò)展性。
本文對區(qū)塊鏈共識的分類和典型方案研究如表1所示。
從總體層面上來講,共識主要分為2類,一類是以實用拜占庭容錯共識(PBFT)為代表的經(jīng)典分布式共識,通常在授權(quán)網(wǎng)絡(luò)中,參與節(jié)點(diǎn)通過多輪投票的方式達(dá)成對某個提議值的一致。另一類是以比特幣為代表的區(qū)塊鏈共識,通常在非授權(quán)網(wǎng)絡(luò)中,節(jié)點(diǎn)能夠隨時加入或退出,通過特定算法完成出塊者選舉、區(qū)塊生成、節(jié)點(diǎn)區(qū)塊鏈更新等過程,保證最終誠實用戶手中賬本一致。本文中,我們主要研究區(qū)塊鏈中的共識機(jī)制。
區(qū)塊鏈作為一個分布式的公開賬本,每個區(qū)塊相當(dāng)于一輪產(chǎn)生的賬本,用于記錄本輪內(nèi)發(fā)生的交易;而共識機(jī)制首先需要確定的問題便是每一輪的賬本由誰來負(fù)責(zé)撰寫,我們將其稱之為“出塊者”。出塊者一般有2種:第1種是單一的節(jié)點(diǎn)作為出塊者,如比特幣、Bitcoin-NG;第2種是多個節(jié)點(diǎn)組成委員會,整個委員會相當(dāng)于出塊者的角色,完成區(qū)塊的生成。出塊者選舉的過程需要防止女巫攻擊,簡單來說就是敵手通過制造多個假身份來增加其成為出塊者的概率,因此需要采用PoW、PoS等機(jī)制。通常單一節(jié)點(diǎn)作為出塊者為概率性共識,又被稱為弱共識,即區(qū)塊鏈可能出現(xiàn)分叉的情況;而委員會作為出塊者的共識為確定性共識,又被稱為強(qiáng)共識,每一輪的區(qū)塊是確定的,一般不會出現(xiàn)分叉。
在完成出塊者選舉之后,出塊者負(fù)責(zé)完成區(qū)塊生成的工作。區(qū)塊一般要包括本輪產(chǎn)生的交易、上個區(qū)塊的哈希值、時間戳等內(nèi)容。在這里,區(qū)塊生成又可以分為2類:第1類是一個出塊者只負(fù)責(zé)生成一個區(qū)塊,下一個區(qū)塊由新的出塊者生成,如比特幣;第2類是一個出塊者對應(yīng)多個區(qū)塊,一個出塊者工作的整個時間周期被稱為一個時期,一個時期包括多個輪,每一輪對應(yīng)一個區(qū)塊,如Bitcoin-NG等。出塊者在生成區(qū)塊之后,將區(qū)塊在全網(wǎng)進(jìn)行廣播。
網(wǎng)絡(luò)中的其他節(jié)點(diǎn)在收到新區(qū)塊之后,首先驗證區(qū)塊的合法性,是否包含上個區(qū)塊的哈希值。對于概率性共識,如比特幣中,還需要對區(qū)塊中交易的合法性、PoW的正確性進(jìn)行驗證,驗證通過后節(jié)點(diǎn)將本地鏈進(jìn)行更新,并開始新一輪的“挖礦”;對于確定性共識,節(jié)點(diǎn)直接更新本地區(qū)塊鏈。
PoW的概念最早是在1993年被DWORK C和NAOR M[8]提出,最初被用來防止垃圾郵件。郵件發(fā)送者必須要計算出某個特定數(shù)學(xué)難題的解才能夠完成郵件的發(fā)送。后來在1997年的 Hashcash中,BACK A[9]將其拓展,利用哈希算法作為PoW的核心。因為哈希函數(shù)為單向函數(shù),能夠抵抗原像攻擊,因此設(shè)定哈希函數(shù)的特定輸出值作為難度,輸入值中嵌入隨機(jī)數(shù),當(dāng)輸出值小于或大于難度值時,輸入的隨機(jī)數(shù)便是哈希函數(shù)的解,即完成了PoW的過程。工作量證明的本質(zhì)是:只有完成了一定數(shù)量運(yùn)算的節(jié)點(diǎn)才能夠被授權(quán)參與某項活動,即防止敵手制造多個假身份發(fā)起的女巫攻擊。PoW與節(jié)點(diǎn)算力密切相關(guān)[9]。
表1 區(qū)塊鏈共識分類和典型方案
(1)比特幣
在比特幣中,平均約每10 min會產(chǎn)生一個最大1 MB的區(qū)塊,區(qū)塊由區(qū)塊體和區(qū)塊頭組成,如圖1所示。區(qū)塊體主要是本時間段產(chǎn)生的交易,區(qū)塊頭包括上個區(qū)塊的哈希值A(chǔ)r-1、當(dāng)前交易構(gòu)成的默克爾樹根哈希MerkleTX、時間戳T和隨機(jī)數(shù)Nonce等。由于區(qū)塊頭包含指向上個區(qū)塊的哈希值,因此區(qū)塊構(gòu)成了“鏈”狀的結(jié)構(gòu),所以被稱為區(qū)塊鏈。而隨機(jī)數(shù)Nonce便是工作量證明的解。比特幣中工作量證明的目的是決定區(qū)塊的出塊者,并且一輪中只有1個出塊者,對應(yīng)1個區(qū)塊。比特幣中的工作量證明用公式可以簡化表示為H(Ar-1,MerkleTX,Nonce)<D,其中 H()是單向哈希函數(shù),比特幣中使用SHA256(SHA256())實現(xiàn),輸出字符長度為256 bit。D是當(dāng)前挖礦難度,比特幣中通過對挖礦難度的動態(tài)調(diào)整來保持大約每10 min 1個區(qū)塊的速度。區(qū)塊的時間間隔和區(qū)塊大小與比特幣系統(tǒng)的安全性有著密切聯(lián)系,不能夠?qū)ζ溥M(jìn)行隨意更改,這也是目前比特幣交易速度只有7交易/秒的原因,因此比特幣的交易處理能力有限,許多諸如鏈下支付通道的研究意在提升比特幣的交易規(guī)模。
(2)Bitcoin-NG
由于比特幣交易規(guī)模有限,為了提高區(qū)塊鏈處理交易的能力,當(dāng)前研究主要分為線下和線上2個方向。線下解決方案主要指的是利用鏈下微支付通道處理小額交易,線上解決方案主要是對基于PoW的共識機(jī)制的改進(jìn)。線下方案不屬于本文討論范圍,不在此贅述。線上方案代表主要是 Bitcoin-NG,由 EYAL I等人[10]于2016年提出。Bitcoin-NG的PoW機(jī)制與比特幣基本一致,只不過出塊者和區(qū)塊是“一對多”的關(guān)系,即一個出塊者負(fù)責(zé)多個區(qū)塊的生成。在Bitcoin-NG中,區(qū)塊分為2種:關(guān)鍵塊和微塊,關(guān)鍵塊包含上個區(qū)塊哈希值、時間戳、挖礦難度、隨機(jī)數(shù)和出塊者公鑰,關(guān)鍵塊不記錄交易,只是負(fù)責(zé)選擇出塊者。與比特幣類似,Bitcoin-NG平均每10 min生成一個關(guān)鍵塊,對應(yīng)一個時期,在每個時期內(nèi),出塊者以小于等于10秒/個的速率產(chǎn)生微塊,記錄每一輪的交易。微塊包含上個區(qū)塊的哈希值、當(dāng)前輪的交易、時間戳等信息。Bitcoin-NG在一定程度上增加了交易規(guī)模。
基于PoW的共識機(jī)制還有GHOST[11]、Spectre[12]等。
圖1 比特幣區(qū)塊結(jié)構(gòu)圖
采用PoW的共識機(jī)制最大的問題是能源的巨大浪費(fèi)。以比特幣為例,由于比特幣每10 min產(chǎn)生一個區(qū)塊,并且給予區(qū)塊生產(chǎn)者一定獎勵(目前是12.5比特幣)和交易費(fèi)作為激勵,而目前比特幣價格在每比特幣一萬美元左右浮動,因此想要獲得高額回報的“礦工”們利用所有算力資源,進(jìn)行不間斷的哈希運(yùn)算,這就造成了巨大的能源浪費(fèi)。從最初的中央處理器(CPU)挖礦、圖形處理器(GPU)挖礦,到現(xiàn)在的現(xiàn)場可編程門陣列(FPGA)和專用集成電路(ASIC)挖礦,比特幣所消耗的電量成倍增長,據(jù)估計目前由于挖礦造成的每年消耗的能源已經(jīng)超過了31 TWh,已經(jīng)超過了全球159個國家消耗的能源,而77.7%的算力集中在中國境內(nèi),挖礦造成的巨大能源消耗已經(jīng)使中國電力網(wǎng)絡(luò)不堪重負(fù)。
此外,基于PoW的共識機(jī)制還面臨多種攻擊,包括:自私挖礦[13]、扣塊攻 擊(BWH)[14]、扣 塊 后 分 叉 攻 擊(FAW)[15],利用區(qū)塊鏈產(chǎn)生分叉的特點(diǎn),制定利己的區(qū)塊發(fā)布策略,獲得高于自身實際算力的高額回報;日蝕攻擊[16]、延時攻擊[17],以及網(wǎng)絡(luò)隔離攻擊[18],通過劫持網(wǎng)絡(luò)流量或其他方法,將區(qū)塊鏈中網(wǎng)絡(luò)節(jié)點(diǎn)的117個信息輸入通道控制或是將其與其他網(wǎng)絡(luò)節(jié)點(diǎn)隔離,使其只能接收到敵手發(fā)送的信息,在此基礎(chǔ)上發(fā)動女巫攻擊、雙花攻擊[19]、分布式拒絕服務(wù)攻擊(DDoS)等。
為了解決PoW帶來的巨大能源消耗,PoS的概念被提出。PoS的總體思路是:從所有的持幣者中隨機(jī)選取持幣者作為出塊者,持幣者被選中的概率與其持幣數(shù)目成正相關(guān),即持有越多的幣,被選中的概率越大。PoS中出塊者的選舉方式一般分為2類:一類是公開選舉,選舉結(jié)果能夠被所有參與者獲知,如Ouroboros等;一類是私下選舉,參與者利用私有信息確認(rèn)是否被選中作為出塊者,在出塊者發(fā)布區(qū)塊之后,其他參與者能夠驗證其合法性,如Ouroboros Praos等。私下選舉能夠抵抗DoS攻擊,因為在出塊者公布區(qū)塊之前,選舉的結(jié)果對于其他參與者而言都是未知的;而一旦出塊者公布區(qū)塊,區(qū)塊被加入到區(qū)塊鏈中,此時已經(jīng)失去了DoS攻擊的意義。
Ouroboros是首個被證明安全的基于PoS的共識機(jī)制,由KIAYIAS A等人[20]在2017年提出。在Ouroboros中,參與者首先運(yùn)行一輪多方計算產(chǎn)生一個隨機(jī)種子,然后將隨機(jī)種子作為輸入放到偽隨機(jī)函數(shù)中,該偽隨機(jī)函數(shù)隨機(jī)選取一個參與者作為出塊者,參與者被選中的概率與其持幣數(shù)量成正相關(guān)。出塊者生成本輪區(qū)塊并將其廣播,Ouroboros的出塊者和區(qū)塊是一一對應(yīng)的關(guān)系。Ouroboros最主要的貢獻(xiàn)是將PoS共識機(jī)制進(jìn)行形式化定義,并對其安全性給出了嚴(yán)格的數(shù)學(xué)證明。Ouroboros在40個節(jié)點(diǎn)參與、出塊間隔為5 s的情況下,能夠達(dá)到的交易規(guī)模為257交易/秒,交易確認(rèn)時間大概為30 s。
基于PoS的共識機(jī)制還包括PPCoin[21]、Casper[22]、Snow-White[23]等。
PoS在解放工作量證明的同時,引入了一些新的安全問題,其中CHEPURNOY A[24]提出現(xiàn)有PoS機(jī)制存在的“無利害關(guān)系”問題,即擁有較少財產(chǎn)的用戶,其作為區(qū)塊生產(chǎn)者和驗證者進(jìn)行惡意操作的成本很低,基于理性節(jié)點(diǎn)的自利假設(shè),參與者惡意操作可能性較大,可以同時在鏈的不同分叉上挖礦,無需花費(fèi)額外的成本,導(dǎo)致鏈傾向于分叉,使得這些基于PoS的協(xié)議安全性降低。另外,區(qū)塊生產(chǎn)者能夠發(fā)動粉碎攻擊[25],不斷重新生成新的區(qū)塊,直到生成的區(qū)塊有利于其成為下面區(qū)塊的生產(chǎn)者。與此同時,PoS共識機(jī)制可能遭受長程攻擊[26],攻擊者通過賄賂其他人,來獲得他人的私鑰。GAZI P、KIAYIAS A等人[27]提出了針對PoS機(jī)制的權(quán)益擊穿攻擊,如果PoS共識機(jī)制未采用檢查點(diǎn)機(jī)制來進(jìn)行全網(wǎng)狀態(tài)統(tǒng)一,攻擊者能夠利用交易費(fèi)作為激勵的形式,通過長時間的累積制造區(qū)塊分叉,進(jìn)而發(fā)動雙花攻擊。
混合共識指的是利用PoW、PoS等防女巫攻擊手段,選舉一定數(shù)量的節(jié)點(diǎn)作為委員會,即出塊者,委員會內(nèi)部通過經(jīng)典分布式共識算法就區(qū)塊達(dá)成一致?;旌瞎沧R中利用共識委員會的形式來代替單一的節(jié)點(diǎn),有著更高的容錯能力。
混合共識的2個重要部分是時期內(nèi)共識和重配置。時期內(nèi)共識是指在協(xié)議正常運(yùn)行過程中,協(xié)議以時期為單位推進(jìn),每個時期包括多個輪。在每個時期,委員會的配置是固定的,即委員會成員身份確定且委員會領(lǐng)導(dǎo)者確定。委員會領(lǐng)導(dǎo)者一般通過每一時期的隨機(jī)數(shù)決定,負(fù)責(zé)每一輪區(qū)塊的提議。通常來說,每一輪委員會內(nèi)部運(yùn)行類似于PBFT的分布式經(jīng)典共識協(xié)議,生成一個新的區(qū)塊,一個時期對應(yīng)多個區(qū)塊的生成。
重配置指的是時期與時期之間進(jìn)行的委員會成員的更新迭代。由于敵手的存在,敵手可能會對誠實用戶實施腐化,腐化后的用戶被敵手完全控制。為了防止敵手控制的用戶比例超過一定限制,就必須對委員會成員進(jìn)行更新?;旌瞎沧R中,重配置通過PoW或PoS的方法,選取新的節(jié)點(diǎn)對舊的委員會成員進(jìn)行替換。由于委員會需要持續(xù)運(yùn)作,一般只替換掉委員會中的部分成員,而不是每次重配置都全部更新。
2016年KOGIAS E K等人[28]對Bitcoin-NG進(jìn)行了改進(jìn),提出了ByzCoin。ByzCoin將PoW與PBFT相結(jié)合,委員會選舉方式采用PoW機(jī)制,最新找到PoW的144個節(jié)點(diǎn)(或1 008個)進(jìn)入委員會,并且委員會采用窗口滑動的方式進(jìn)行更新,即新找到PoW的節(jié)點(diǎn)并將最久遠(yuǎn)的節(jié)點(diǎn)替換,每次只替換一個節(jié)點(diǎn),新找到PoW的節(jié)點(diǎn)成為本時期的領(lǐng)導(dǎo)者。在委員會中,委員會成員的權(quán)限與其產(chǎn)生區(qū)塊的數(shù)量成正比,即如果某個用戶在144個區(qū)塊中產(chǎn)生了3個區(qū)塊,他便有3票的投票權(quán)。委員會內(nèi)部采用改進(jìn)的PBFT完成共識,利用群體簽名(CoSi)代替?zhèn)鹘y(tǒng)PBFT中的消息認(rèn)證碼(MAC),使得通信復(fù)雜度降低為O(log(n)),驗證復(fù)雜度為O(1)。ByzCoin中的區(qū)塊借鑒了Bitcoin-NG的思想,分為關(guān)鍵塊和微塊,關(guān)鍵塊主要用來完成委員會成員的選舉和領(lǐng)導(dǎo)者的選舉。微塊由委員會內(nèi)部共識產(chǎn)生,記錄一輪中產(chǎn)生的交易以及對交易的CoSi簽名認(rèn)證。在委員會成員1 008個、區(qū)塊大小為32 MB的情況下,ByzCoin的交易速度則會超過1 000交易/秒。
其他采用單一委員會的混合共識 還 有 Solida[29]、 Thunderella[30]、Algorand[31]等,其中Algorand采用的是PoS選取委員會的方式。
混合共識機(jī)制利用PoW或PoS選舉委員會,然后利用委員會內(nèi)部共識完成交易區(qū)塊的添加,突破了比特幣中區(qū)塊大小和出塊速度的限制,所以交易規(guī)模有了明顯提升,一般能夠達(dá)到每秒鐘上千個交易的量級。與此同時,由于采取的共識是確定性共識,也就是強(qiáng)共識,所以交易確認(rèn)時間大大縮短。
混合共識機(jī)制帶來了新的安全問題。如PBFT之類的委員會內(nèi)共識算法需要確保委員會中誠實節(jié)點(diǎn)占據(jù)2/3以上,而通過PoW選舉這樣的委員會會對誠實用戶算力比例產(chǎn)生新的要求。如果不采取相應(yīng)的措施,由于自私挖礦的存在,誠實節(jié)點(diǎn)算力需要占據(jù)3/4以上才能確保誠實用戶產(chǎn)生的區(qū)塊數(shù)量占比在2/3以上,滿足委員會內(nèi)誠實用戶的占比要求。另外,混合共識中的重配置也是十分重要的問題,在重配置過程中,應(yīng)當(dāng)確保以下條件滿足:第一,交易處理的不間斷性,即重配置過程不會影響委員會處理交易;第二,重配置之后的委員會誠實成員占據(jù)2/3以上,才能確保委員會不會被敵手控制;第三,重配置的頻率應(yīng)當(dāng)被合理設(shè)置,充分考慮敵手腐化節(jié)點(diǎn)的能力和節(jié)點(diǎn)的激勵等問題。
多委員會的混合共識機(jī)制在單一委員會基礎(chǔ)上進(jìn)行設(shè)計,主要為了解決全網(wǎng)節(jié)點(diǎn)處理交易的可擴(kuò)展性問題??蓴U(kuò)展性指的是網(wǎng)絡(luò)處理交易能力隨著全網(wǎng)節(jié)點(diǎn)的增加而增加。單一委員會的混合共識機(jī)制雖然在很大程度上增大了交易處理規(guī)模,但是當(dāng)全網(wǎng)節(jié)點(diǎn)增多,導(dǎo)致交易數(shù)量增多,此時如果委員會成員數(shù)目不變,那么其交易處理能力并不會改變。多委員會的混合共識機(jī)制又被稱為分片共識機(jī)制,其原理是將網(wǎng)絡(luò)節(jié)點(diǎn)分為多個并行的片區(qū),每個片區(qū)由各自的委員會負(fù)責(zé)并行處理對應(yīng)的交易。當(dāng)網(wǎng)絡(luò)節(jié)點(diǎn)增多時,片區(qū)增加,交易處理能力隨之增加。分片共識中不同交易分屬于不同的片區(qū),分別完成交易的處理和存儲過程。分片共識中最關(guān)鍵的問題是跨區(qū)交易的處理,所謂跨區(qū)交易指的是一個交易有多個輸入,而輸入由多個片區(qū)掌管,因此跨區(qū)交易的處理牽涉到多個委員會的共同處理,需要設(shè)計合理高效的跨區(qū)交易處理方式來避免交易鎖死等可能出現(xiàn)的情況。
分片共識比較典型的方案是Omniledger,由 KOGIAS E K 等人[32]在2018年提出。Omniledger主要貢獻(xiàn)如下:第一,實現(xiàn)了交易的原子性,跨區(qū)交易只能處于失敗或成功2種狀態(tài),避免了交易鎖死的狀態(tài);第二,實現(xiàn)了交易的可擴(kuò)展性,網(wǎng)絡(luò)的交易處理能力隨節(jié)點(diǎn)數(shù)的增加而線性增長;第三,實現(xiàn)了交易確認(rèn)的低延時,網(wǎng)絡(luò)能夠持續(xù)處理交易。在Omniledger中,有2種區(qū)塊:第1種是身份區(qū)塊,用于記錄每一時期參與共識的委員會節(jié)點(diǎn)的身份;第2種是交易區(qū)塊,每個片區(qū)單獨(dú)處理本片區(qū)內(nèi)交易,并形成各自的區(qū)塊鏈。為了處理跨區(qū)交易,Omniledger設(shè)計了鎖定-解鎖的原子性跨區(qū)交易處理方法??蛻舳藢⒔灰咨蟼髦两灰纵斎雽?yīng)的分片,如分片1和分片2,每個分片各自判斷交易輸入是否可用,即是否屬于未花費(fèi)交易池(UTXO)。如果交易輸入可用,則生成對應(yīng)的接受證明(PoA),即交易輸入在UTXO中的默克爾樹路徑;如果不可用,則生成對應(yīng)的拒絕證明(PoR)。當(dāng)分片1和分片2都提供PoA時,交易鎖定,經(jīng)過交易輸出分片3的共識,完成交易的解鎖和確認(rèn)。當(dāng)分片1或分片2中任意一個提供PoR時,交易解鎖并放棄。在Omniledger中,每個時期都會利用RandHound[33]分布式隨機(jī)數(shù)生成算法生成隨機(jī)數(shù),用于委員會領(lǐng)導(dǎo)者的選舉和委員會成員重配置時替換節(jié)點(diǎn)的選擇。
采用多委員會的共識機(jī)制還包括 ELASTICO[34]、 ChainSpace[35]、RapidChain[36]等。
多委員會的混合共識能夠?qū)崿F(xiàn)交易的可擴(kuò)展性,交易處理性能隨節(jié)點(diǎn)數(shù)目增多、分區(qū)數(shù)增多而線性增長,交易規(guī)模進(jìn)一步增大。Omneledger在每個分區(qū)人數(shù)為70,分區(qū)數(shù)為16時交易處理速度能夠達(dá)到5 000交易/秒。多委員會的混合共識主要需要解決的問題是跨區(qū)交易處理問題、委員會重配置問題、抗偏置隨機(jī)數(shù)生成問題等。
區(qū)塊鏈共識算法是區(qū)塊鏈技術(shù)研究的重點(diǎn),未來主要的發(fā)展趨勢是:將拜占庭容錯算法與區(qū)塊鏈技術(shù)相結(jié)合,在開放的區(qū)塊鏈網(wǎng)絡(luò)中建立動態(tài)、封閉的共識委員會,實現(xiàn)安全、高效的混合共識;將區(qū)塊鏈技術(shù)和可信硬件或其他最新密碼技術(shù)結(jié)合;對區(qū)塊鏈共識委員會中成員身份進(jìn)行高效管理;實現(xiàn)對惡意委員會的檢測和恢復(fù);防止擁有大算力或高權(quán)益礦工對委員會的控制;共識算法中充分考慮網(wǎng)絡(luò)的一致性和活性等。