譚敏生,楊 杰,丁 琳,李行健,夏石瑩
(南華大學(xué) 計算機學(xué)院,湖南 衡陽 421001)
比特幣(Bitcoin)概念[1]由中本聰在2008年11月1日提出,現(xiàn)已成為市值最大的加密數(shù)字貨幣[2]。區(qū)塊鏈作為加密數(shù)字貨幣的底層技術(shù),實際上是一個由所有節(jié)點共同維護、共同記賬的分布式數(shù)據(jù)庫系統(tǒng),具有匿名、去中心化、可追溯、不可篡改等特性[3]。區(qū)塊鏈架構(gòu)主要包括分布式記賬本、點對點網(wǎng)絡(luò)、共識機制、智能合約、激勵機制和應(yīng)用程序[4]。記賬本由區(qū)塊構(gòu)成,區(qū)塊包含區(qū)塊頭和區(qū)塊體。區(qū)塊頭包括指向前一個區(qū)塊的哈希指針(prev_hash)、版本號(version)、時間戳(ntime)、隨機數(shù)(nonce)和默克爾樹根(Merkle_root),區(qū)塊體是由交易構(gòu)成的默克爾樹。共識機制[5]是區(qū)塊鏈系統(tǒng)達成一致的協(xié)議,根據(jù)其使用的技術(shù)路線分為單一共識機制與混合共識機制。單一共識機制主要分為工作量證明(Proof of Work,PoW)、權(quán)益證明(Proof of Stake,PoS)和拜占庭容錯(Byzantine Fault Tolerance,BFT)共識機制。
在共識機制中,節(jié)點可以分為出塊節(jié)點、驗證節(jié)點和記賬節(jié)點。負(fù)責(zé)提出區(qū)塊的節(jié)點稱為出塊節(jié)點,也稱為出塊者、記賬者、領(lǐng)導(dǎo)者、主節(jié)點或提議者。負(fù)責(zé)驗證區(qū)塊的節(jié)點稱為驗證節(jié)點,也稱為驗證者或備份節(jié)點。驗證節(jié)點需要驗證出塊者的合法性、區(qū)塊的合法性、簽名的正確性等。負(fù)責(zé)維護區(qū)塊鏈數(shù)據(jù)庫的節(jié)點稱為記賬節(jié)點。記賬節(jié)點需要存儲所有區(qū)塊和驗證區(qū)塊。出塊節(jié)點、驗證節(jié)點和記賬節(jié)點統(tǒng)稱為共識節(jié)點。共識機制的主要流程包括選舉出塊者、提出區(qū)塊、驗證區(qū)塊和更新區(qū)塊鏈。每一輪都先選舉新的出塊者,再由出塊者提出區(qū)塊(將網(wǎng)絡(luò)中的合法交易打包進新區(qū)塊),然后由驗證者驗證新區(qū)塊的合法性,最后記賬節(jié)點將達成共識的新區(qū)塊寫入本地數(shù)據(jù)庫末端來更新區(qū)塊鏈。
共識機制主要考慮安全性、擴展性、能耗、吞吐量、交易確認(rèn)時間和一致性等性能。安全性是指抵抗雙花攻擊、日蝕攻擊等安全威脅的能力[5]。擴展性是指系統(tǒng)支持?jǐn)U展的能力,主要考慮節(jié)點數(shù)量和交易數(shù)量增加時系統(tǒng)負(fù)載和網(wǎng)絡(luò)通信量的變化。能耗是指每年挖礦消耗的電能。吞吐量是指系統(tǒng)中每秒可以容納的最大交易量。交易確認(rèn)時間是指從交易上鏈到被確認(rèn)需要的時間。一致性是指系統(tǒng)抵御分叉的能力。
本文總結(jié)區(qū)塊鏈共識機制,將其分為單一共識機制與混合共識機制,根據(jù)技術(shù)路線對混合共識機制進行細(xì)分,并分析各類共識機制的基本原理及理論依據(jù),同時指出對應(yīng)的現(xiàn)實世界信任模型。在此基礎(chǔ)上,闡述包括選舉出塊者、提出區(qū)塊、驗證區(qū)塊和更新區(qū)塊鏈的共識機制流程,并從安全性、擴展性、能耗、吞吐量、交易確認(rèn)時間和一致性等方面分析現(xiàn)有共識機制的相關(guān)性能。
Bitcoin在沒有中心化節(jié)點參與的前提下,實現(xiàn)了用戶之間的安全自由匿名支付,目前在加密數(shù)字貨幣市場具有較大市值。以Bitcoin為代表的萊特幣(Litecoin)[6]、Bitcoin-NG[7]、GHOST[8-9]等第一代數(shù)字貨幣系統(tǒng)大多采用PoW作為共識機制。PoW共識機制基于計算機設(shè)備進行數(shù)學(xué)運算的確定性、公平性、可驗證性來達成共識,從而保障數(shù)據(jù)庫的一致性,而大部分PoW共識機制使用的數(shù)學(xué)運算為哈希函數(shù)。PoW共識機制相當(dāng)于自證制度,即自我證明合法性。在PoW共識機制中一般使用兩次哈希函數(shù),具體共識流程如下:
1)構(gòu)造默克爾樹。礦工收集系統(tǒng)中的交易,使用其認(rèn)為合法的交易構(gòu)造默克爾樹。
2)選舉出塊者和提出區(qū)塊。在PoW共識機制中選舉出塊者和提出區(qū)塊概念同時進行,礦工通過改變nonce的值使Hash(Hash(version+prev_hash+Merkle_root+ntime+nonce)) 3)驗證區(qū)塊并更新區(qū)塊鏈。礦工驗證哈希值和區(qū)塊中包含的交易,若哈希值小于給定的難度并且所有交易合法,則將新區(qū)塊寫入到區(qū)塊鏈末端,更新區(qū)塊鏈,開啟下一輪共識;否則直接將其丟棄并繼續(xù)進行本輪挖礦。 PoW共識機制保障了系統(tǒng)安全性,能抵抗小于51%礦力的雙花攻擊、自私挖礦攻擊和日蝕攻擊等安全威脅[10-11],但是中心化礦池使系統(tǒng)安全性下降,如Bitcoin中最大的3個礦池的算力之和已超過51%[12],若3個礦池勾結(jié),則足以發(fā)動51%攻擊,并拒絕其他礦工的交易及服務(wù)攻擊等。為保證交易的安全性,PoW共識機制中的交易不能立即被確認(rèn),而是需要等待6個區(qū)塊時間。PoW共識機制受出塊時間和區(qū)塊大小的限制,吞吐量很低,如Bitcoin只有7 TPS。另外,PoW共識機制消耗大量電能[13-14],如2014年Bitcoin挖礦能耗相當(dāng)于愛爾蘭全年用電總量[15-16]。 針對PoW共識機制存在的問題,一些解決方案被陸續(xù)提出。GHOST采用最重子樹策略生成主鏈,解決了自私挖礦問題。以太坊(Ethereum)[17-18]使用默克爾前綴樹替代默克爾樹,引入叔區(qū)塊結(jié)構(gòu)大幅縮短了出塊時間,從而將吞吐量增加至15 TPS[5]。Bitcoin-NG改進了區(qū)塊結(jié)構(gòu),將其分為關(guān)鍵區(qū)塊和微區(qū)塊,關(guān)鍵區(qū)塊在原Bitcoin區(qū)塊中添加了獲得記賬權(quán)的礦工公鑰,微區(qū)塊由獲得記賬權(quán)的礦工根據(jù)需要創(chuàng)建。默認(rèn)設(shè)置為每10分鐘產(chǎn)生一個關(guān)鍵區(qū)塊,每10秒產(chǎn)生一個微區(qū)塊。挖礦可以在關(guān)鍵區(qū)塊上進行,也可以在微區(qū)塊上進行。Bitcoin-NG為區(qū)塊鏈擴容提供了新思路,降低了交易延遲并提高了吞吐量。文獻[13]有效利用了區(qū)塊鏈系統(tǒng)的電能。文獻[19]基于區(qū)塊鏈的計算能力解決了正交向量、困難性假設(shè)等復(fù)雜數(shù)學(xué)計算問題。 為解決PoW共識機制的高能耗問題,文獻[20-21]提出PoS共識機制,基于用戶權(quán)益達成區(qū)塊鏈數(shù)據(jù)庫一致性[22],并且在點點幣(PPcoin)中提出基于幣齡的PoS共識機制(幣齡相當(dāng)于股權(quán)),定義幣齡為貨幣數(shù)量乘以時期(coin age=coins×age)。幣齡是一個隨時間流逝線性增加的未花費貨幣的權(quán)重因子,花費貨幣或者挖礦后消耗幣齡。基于PoS共識機制的區(qū)塊鏈項目多數(shù)是由PoW共識機制逐步過渡到PoS共識機制,如黑幣(Blackcoin)[22]、Ethereum。PoS共識機制相當(dāng)于股權(quán)制度,所有方案需要持有超過半數(shù)股權(quán)的用戶表決同意才能通過。 PoS共識機制的具體流程為: 1)選舉出塊者。用戶質(zhì)押持有的代幣來獲取幣齡,幣齡越長,成為區(qū)塊者的概率越大,挖礦需滿足不等式:proofhash 2)提出區(qū)塊。出塊者收集系統(tǒng)中的交易,將其認(rèn)為合法的交易打包進區(qū)塊,然后在系統(tǒng)內(nèi)廣播新區(qū)塊。 3)驗證區(qū)塊并更新區(qū)塊鏈。驗證節(jié)點對新區(qū)塊進行驗證,若驗證成功,則將其添加到區(qū)塊鏈末端,更新區(qū)塊鏈,開啟下一輪共識;否則直接將其丟棄,并重新選舉出塊者。 PoS共識機制相比PoW共識機制無需計算無意義的哈希值,因此其能耗大幅降低。PoS共識機制能抵抗小于51%權(quán)益的攻擊,惡意節(jié)點控制51%權(quán)益的概率小于控制51%計算能力的概率,安全性高于PoW共識機制。Blackcoin項目指出PPcoin中的PoS共識機制由于存在幣齡攻擊和長距離攻擊,因此將挖礦需滿足的不等式改進為proofhash 區(qū)塊鏈中使用的BFT共識機制主要分為實用拜占庭容錯(Practical Byzantine Fault Tolerance,PBFT)[26-28]、投機拜占庭容錯(Speculative Byzantine Fault Tolerance,SBFT)[29-30]和聯(lián)邦拜占庭容錯(Federal Byzantine Fault Tolerance,FBFT)共識機制[31-32]。BFT共識機制中不產(chǎn)生無意義的能耗,相比其他單一共識機制能耗較低,其相當(dāng)于公民投票制度,大部分參與者投票同意方案,投票確認(rèn)結(jié)果才能達成一致性。 1.3.1 PBFT共識機制 PBFT共識機制解決了原始拜占庭容錯共識機制效率較低的問題,將算法復(fù)雜度從指數(shù)級降低至多項式級。PBFT共識機制相當(dāng)于兩輪舉手表決,需要對提議進行表決并對結(jié)果進行確認(rèn)。 PBFT共識機制中每個節(jié)點都有一個唯一性編號標(biāo)識(i),編號逐漸遞增。一次共識從開始到結(jié)束所使用的數(shù)據(jù)集合稱為視圖,每個視圖都由一個唯一性編號v標(biāo)識,每次視圖變更編號加1,每個視圖中只存在一個主節(jié)點,其他節(jié)點都為備份節(jié)點。PBFT共識機制執(zhí)行流程[28]如圖1所示,具體步驟如下: 1)發(fā)出請求。客戶機發(fā)起請求,并將請求消息發(fā)送給所有節(jié)點。 2)提出區(qū)塊。主節(jié)點監(jiān)聽到客戶機發(fā)出結(jié)構(gòu)化的服務(wù)請求,進入預(yù)準(zhǔn)備階段。主節(jié)點對請求消息格式進行檢查,若不符合,則直接丟棄;若符合,則在當(dāng)前視圖v中分配請求標(biāo)記序號n(按序增加),向所有備份節(jié)點廣播結(jié)構(gòu)化的預(yù)準(zhǔn)備消息并將此消息寫入本地日志。 3)驗證區(qū)塊。備份節(jié)點對預(yù)準(zhǔn)備消息進行檢查,若通過,則向其他副本節(jié)點廣播格式化的準(zhǔn)備消息,并將預(yù)準(zhǔn)備消息和準(zhǔn)備消息寫入本地日志。 4)更新區(qū)塊鏈。節(jié)點將接收到的準(zhǔn)備消息都寫入日志,如果一個節(jié)點接收到2f+1個來自不同節(jié)點(包括其自身)且驗證正確的準(zhǔn)備消息,則向所有備份節(jié)點廣播結(jié)構(gòu)化的提交消息。 5)答復(fù)。備份節(jié)點接收到法定數(shù)量的提交消息后執(zhí)行請求操作,并向客戶端發(fā)送答復(fù)消息。客戶端若收到f+1個不同備份節(jié)點的正確答復(fù)時,則認(rèn)為請求得到執(zhí)行。 圖1 PBFT共識機制執(zhí)行流程Fig.1 Execution flow of PBFT consensus mechanism 視圖更改協(xié)議由備份節(jié)點發(fā)起,能夠解決主節(jié)點發(fā)生故障的問題。備份節(jié)點監(jiān)測到主節(jié)點發(fā)生故障時廣播視圖變更消息并申請成為新的主節(jié)點。編號最小(要求此編號比當(dāng)前發(fā)生故障的主節(jié)點編號大)且沒有發(fā)生故障的備份節(jié)點當(dāng)選為新一輪的主節(jié)點。視圖變更流程[28]如圖2所示,具體步驟如下: 1)發(fā)起視圖變更。備份節(jié)點i廣播視圖變更消息,視圖變更消息格式為Signi(View-change,v+1,h,C,P,Q),其中,h表示備份節(jié)點i存儲的最新檢查點編號,C表示由備份節(jié)點i存儲的所有檢查點編號及對應(yīng)憑證集合,P表示由備份節(jié)點i收集的所有預(yù)準(zhǔn)備消息集合(對應(yīng)請求還沒有進入提交階段),Q表示備份節(jié)點i接收到的預(yù)準(zhǔn)備消息集合(對應(yīng)請求還沒有進入準(zhǔn)備階段)。 2)確認(rèn)視圖變更。備份節(jié)點i收集2f+1個(包括其自身)視圖變更消息后,給視圖v+1對應(yīng)的主節(jié)點發(fā)送視圖變更確認(rèn)消息,視圖變更確認(rèn)消息格式為Signi(View-change-ACK,v+1,i,j,Hash(m)),其中,j表示發(fā)送視圖變更消息的備份節(jié)點編號集合,m表示視圖變更消息。 3)廣播新視圖。新的主節(jié)點根據(jù)存儲的信息和日志更新節(jié)點數(shù)據(jù),發(fā)送新視圖消息,進入新一輪一致性協(xié)議。新視圖消息格式為Signi(New-view,v+1,u,χ),其中,u表示主節(jié)點收集到的視圖變更證據(jù),χ表示主節(jié)點知道的最新檢查點、檢查點到當(dāng)前視圖中所有已經(jīng)提交的請求、準(zhǔn)備完成的請求和預(yù)準(zhǔn)備完成的請求。 圖2 PBFT視圖變更流程Fig.2 Procedure of PBFT view change PBFT共識機制可以容忍的最大拜占庭節(jié)點數(shù)為f=?(R1)/3」,其中,R表示共識節(jié)點總數(shù)。在區(qū)塊鏈系統(tǒng)中,采用準(zhǔn)入制度增加安全性。當(dāng)主節(jié)點為誠實節(jié)點時,共識過程能順利進行,不會觸發(fā)視圖更換,新產(chǎn)生的區(qū)塊可以立即確認(rèn),系統(tǒng)吞吐量達到1 000 TPS。由于任意時刻只有一個主節(jié)點,因此系統(tǒng)不會發(fā)生分叉,并且所有區(qū)塊需要經(jīng)過2f+1個備份節(jié)點(包含主節(jié)點)驗證,是一種完全去中心化的系統(tǒng)。 由于PBFT共識機制采用準(zhǔn)入制度,因此節(jié)點只有經(jīng)過認(rèn)證才能進入系統(tǒng)及廣播通信方式,造成了系統(tǒng)擴展性差。共識機制中主節(jié)點對請求消息排序并提出區(qū)塊,然后將預(yù)準(zhǔn)備消息發(fā)送給所有共識節(jié)點,時間復(fù)雜度為O(n)。在驗證時采取多對多的通信模式,每個備份節(jié)點都要廣播準(zhǔn)備消息和提交消息,單個備份節(jié)點的時間復(fù)雜度為O(2n),全體備份節(jié)點的時間復(fù)雜度為O(2n)×O(n)=O(2n2),所以PBFT共識機制中一致性協(xié)議的時間復(fù)雜度為O(2n2+n)≈O(n2),當(dāng)節(jié)點數(shù)量增加時一致性協(xié)議性能顯著下降。在PBFT視圖變更過程中,采取多對多的通信模式,每個備份節(jié)點都廣播一次視圖變更消息,時間復(fù)雜度為O(n)×O(n)=O(n2),空間復(fù)雜度為O(m)×O(n)=O(mn),且消息包含C、P、Q這3個集合,所需的存儲空間巨大。每個備份節(jié)點向新主節(jié)點發(fā)送一次視圖變更確認(rèn)消息,時間復(fù)雜度為O(n),消息含有備份節(jié)點編號集合,空間復(fù)雜度相比視圖變更消息可以忽略。新主節(jié)點向每個備份節(jié)點發(fā)送一次新視圖(t),時間復(fù)雜度為O(n),空間復(fù)雜度為O(t)×O(n)=O(tn),且消息包含u、χ兩個集合,所需的存儲空間巨大。所以PBFT視圖變更協(xié)議的時間復(fù)雜度為O(2n2+n)≈O(n2),空間復(fù)雜度為O(mn)+O(tn)。當(dāng)發(fā)生視圖變更時,系統(tǒng)時空復(fù)雜度為O(n2)×(O(mn)+O(tn))≈O((m+t)n3),嚴(yán)重消耗系統(tǒng)資源。 1.3.2 SBFT共識機制 文獻[29]提出SBFT共識機制,文獻[30]將SBFT共識機制應(yīng)用于區(qū)塊鏈。SBFT共識機制中使用Collector技術(shù)和收集器通信模式,共識過程中節(jié)點將消息發(fā)送給收集器,收集器匯總消息后再發(fā)送給節(jié)點,顯著降低了通信量。SBFT共識機制相當(dāng)于有專業(yè)計票人的投票制度,由計票人統(tǒng)計并公布結(jié)果。收集器相當(dāng)于計票人,可以由客戶機擔(dān)任,也可以由節(jié)點擔(dān)任。SBFT中備份節(jié)點總數(shù)為3f+2c+1,其中,c表示故障節(jié)點數(shù)量,SBFT共識機制執(zhí)行流程[30]如圖3所示,具體步驟如下: 1)發(fā)出請求。客戶機向信任的主節(jié)點發(fā)出請求。 2)提出區(qū)塊。主節(jié)點收集客戶機請求,提出區(qū)塊,然后發(fā)送提出區(qū)塊消息給所有節(jié)點。 3)驗證區(qū)塊。所有節(jié)點驗證從主節(jié)點發(fā)送過來的預(yù)準(zhǔn)備消息,如果驗證通過,則使用門限聚合簽名技術(shù)(threshold BLS)[33-35]對驗證結(jié)果進行數(shù)字簽名,然后將簽名消息發(fā)送給收集器C。 4)統(tǒng)計票數(shù)。收集器C收集所有節(jié)點發(fā)送的簽名消息并驗證合法性。若接收到3f+c+1個不同且合法的簽名消息,則使用聚合簽名技術(shù)將消息聚合,然后發(fā)送統(tǒng)計票數(shù)消息給所有節(jié)點。 5)更新區(qū)塊鏈。每個節(jié)點接收到合法的統(tǒng)計票數(shù)消息后,將新區(qū)塊寫入本地數(shù)據(jù)庫并更新區(qū)塊鏈,然后發(fā)送更新區(qū)塊鏈消息給收集器E。 6)公布執(zhí)行結(jié)果。收集器E收集更新區(qū)塊鏈消息并對其合法性進行驗證。若收集到f+1個不同且合法的更新區(qū)塊鏈消息,則發(fā)送執(zhí)行結(jié)果消息給客戶機和所有節(jié)點。 圖3 SBFT共識機制執(zhí)行流程Fig.3 Execution flow of SBFT consensus mechanism SBFT共識機制的視圖更改協(xié)議也使用Collector技術(shù)(新的主節(jié)點擔(dān)任收集器),觸發(fā)條件類似于PBFT共識機制,即計時器超時或者收到f+1個備份節(jié)點發(fā)送的主節(jié)點出錯的證據(jù)。SBFT共識機制能容忍f個拜占庭節(jié)點和c個故障節(jié)點。區(qū)塊能夠立即確認(rèn),不會產(chǎn)生分叉,并且其不再使用多對多的廣播通信模式,降低了通信開銷,時間復(fù)雜度降至O(n),顯著節(jié)省了系統(tǒng)資源。 1.3.3 FBFT共識機制 FBFT共識機制弱化了主節(jié)點和備份節(jié)點的概念,典型的區(qū)塊鏈代表項目有瑞波(ripple)[31]、恒星(stellar)[32],每個驗證節(jié)點在本地維護一個信任節(jié)點列表(Unique Node List,UNL),列表中的每個節(jié)點都能對交易進行投票。FBFT共識機制相當(dāng)于他證制度,每個提案都以他人看法為準(zhǔn)。 1)驗證請求。每個驗證節(jié)點不間斷監(jiān)聽網(wǎng)絡(luò),接收來自客戶端的請求信息。經(jīng)過與本地數(shù)據(jù)庫驗證后,如果是不合法的請求,則將其直接丟棄;反之,放入到交易候選集。交易候選集中還包括之前共識過程中無法確認(rèn)而遺留的交易。 2)提出區(qū)塊。每個驗證節(jié)點從自己的交易候選集中取出交易生成提案,并將提案發(fā)送給其他節(jié)點。 3)驗證區(qū)塊。驗證節(jié)點在收到其他節(jié)點發(fā)來的提案后,直接忽略不是來自UNL節(jié)點的提案,并對比提案中的交易和本地交易候選集,如果有相同交易,則該交易就獲得一票。在一定時間內(nèi),若交易獲得超過50%的票數(shù),則該交易進入下一輪;若沒有獲得超過50%的票數(shù),則在下一次共識過程中再次進行確認(rèn)。 4)再次驗證區(qū)塊。每個驗證節(jié)點將超過50%票數(shù)的交易作為提案發(fā)給其他節(jié)點,同時提高所需票數(shù)的閾值至60%,重復(fù)步驟3和步驟4,直到閾值達到80%。 5)更新區(qū)塊鏈。每個驗證節(jié)點將超過80%的UNL節(jié)點確認(rèn)的交易正式寫入本地數(shù)據(jù)庫,并更新交易候選集。 FBFT共識機制可以容忍的最大拜占庭節(jié)點數(shù)為f=?(R1)/5」。區(qū)塊的產(chǎn)生不依賴于主節(jié)點,因此加快了效率,使得吞吐量達到1 000 TPS~1 500 TPS[5]。由于每個驗證節(jié)點自身提出區(qū)塊、決定信任節(jié)點集合,因此去中心效果明顯,并且區(qū)塊產(chǎn)生具有不可逆性,不會產(chǎn)生分叉,在交易上鏈時就能得到確認(rèn),同時用戶能夠動態(tài)加入網(wǎng)絡(luò),擴展性高于PBFT共識機制,但其時間復(fù)雜度為O(n2)。 結(jié)合PoW與PoS的共識機制有兩種類型:一種是淺結(jié)合,即第一階段使用PoW共識機制,達到預(yù)定目標(biāo)后進入第二階段使用PoS共識機制(不再使用PoW共識機制),每次共識過程中只使用一種共識機制(PoW共識機制或者PoS共識機制),如Ethereum、PPcoin、Blackcoin等;另一種是深結(jié)合,即每次共識過程同時使用PoW共識機制和PoS共識機制,如活動證明(Proof of Activity,PoA)[36]。淺結(jié)合類型的共識機制原理、現(xiàn)實世界模型、流程和性能對應(yīng)每個階段的單一共識機制;深結(jié)合類型的共識機制流程和性能取決于混合共識機制,但由于深結(jié)合類型的共識機制模型比較復(fù)雜,因此未對應(yīng)現(xiàn)實世界模型。 基于PoW與PoS的共識機制流程具體如下: 1)選舉出塊者和提出區(qū)塊頭。礦工通過改變nonce值(Hash(prev_hash+address+height+nonce) 2)驗證區(qū)塊頭和選舉權(quán)益代表。全體礦工驗證新區(qū)塊頭,驗證成功后選舉N個權(quán)益代表(系統(tǒng)初始化時設(shè)定N)。具體選舉協(xié)議為:將新區(qū)塊頭的哈希值、前一個區(qū)塊的哈希值和N個固定的后綴連接起來(每次使用一個后綴,共產(chǎn)生N個連接體),然后將連接體的哈希值作為輸入調(diào)用follow-the-satoshi算法產(chǎn)生權(quán)益代表(一個連接體產(chǎn)生一個權(quán)益代表)。 3)提出區(qū)塊。全體礦工首先判斷自己是否成為權(quán)益代表人:如果成為前N1個代表中的1個,則對新區(qū)塊頭簽名并廣播簽名;如果成為第N個代表,則構(gòu)造新區(qū)塊體,然后使用新區(qū)塊頭、新區(qū)塊體和前N1個代表的簽名構(gòu)造新區(qū)塊并對新區(qū)塊簽名,最后廣播新區(qū)塊。 4)驗證區(qū)塊并更新區(qū)塊鏈。所有礦工驗證新區(qū)塊的合法性,將合法新區(qū)塊寫入到區(qū)塊鏈末端。 PoA共識機制采用最長主鏈原則解決分叉問題,由于攻擊者需要同時控制大部分礦力和大部分權(quán)益才能攻擊成功,因此安全性高于PoW共識機制和PoS共識機制,但其仍然依靠PoW共識機制選舉出塊者,并且沒有有效降低能耗,相比PoW共識機制通信時間更長、開銷更大,從而造成更低的吞吐量。 比特股(Bitshare)[37]結(jié)合委托投票制度對PoS共識機制做出重大改進,提出委托權(quán)益證明(Delegated Proof of Stake,DPoS)共識機制[38-39]。在DPoS共識機制中,代表者稱為見證人,由見證人按順序輪流產(chǎn)生區(qū)塊,其他見證人驗證區(qū)塊。DPoS共識機制相當(dāng)于人民代表大會制度,由人大代表提出議案并對提案進行投票。 DPoS共識機制通過選舉見證人行使權(quán)利,具體流程如下: 1)選舉出塊者。權(quán)益持有者投票選舉見證人。見證人在系統(tǒng)中保持中立,每24小時更新一次,其收益由權(quán)益持有者投票決定。Bitshare可以有任意數(shù)量的見證人,EOS[40]每輪見證人的數(shù)量設(shè)置為21,票數(shù)最多的前20人自動當(dāng)選見證人,剩余1人隨機選出,見證人需要100%在線。 2)提出區(qū)塊。見證人產(chǎn)生區(qū)塊并對區(qū)塊簽名和添加時間戳,再在系統(tǒng)中廣播新產(chǎn)生的區(qū)塊,如果見證人在某個時隙沒有產(chǎn)生區(qū)塊,則該時隙將被跳過,產(chǎn)生區(qū)塊的權(quán)力交給下一個見證人。Bitshare中每2秒產(chǎn)生一個區(qū)塊,EOS中每3秒產(chǎn)生一個區(qū)塊。 3)驗證區(qū)塊并更新區(qū)塊鏈。其他見證人負(fù)責(zé)驗證新產(chǎn)生區(qū)塊的合法性。Bitshare中N個見證人驗證通過就可上鏈(N個見證人要求代表的投票權(quán)之和大于50%),EOS中半數(shù)以上的見證人驗證通過就可以上鏈。 DPoS共識機制能夠?qū)灰走M行秒級驗證,并在短時間內(nèi)提供比現(xiàn)有股權(quán)證明系統(tǒng)更高的安全性,抵抗小于51%權(quán)益的攻擊[4]。對系統(tǒng)的任何更改(包括版本更新、添加新功能、對權(quán)益的修改等)都必須由大于51%權(quán)益持有者同意。見證人按順序產(chǎn)生區(qū)塊,意味著一筆交易從廣播開始直至經(jīng)過1/2區(qū)塊時間被確認(rèn)的概率為99.9%。在通常情況下,有半數(shù)以上見證人給出確認(rèn)后,新區(qū)塊就為不可逆。在連續(xù)丟失2個區(qū)塊后,有95%的確認(rèn)節(jié)點處于分叉中,在連續(xù)丟失3個區(qū)塊后就有99%的確認(rèn)節(jié)點處于分叉中。EOS的吞吐量理論上可達百萬級[5],但是選舉見證人需要消耗大量資源,實際應(yīng)用中吞吐量不理想,且區(qū)塊的產(chǎn)生依賴于21個見證人,從而造成中心化問題。 文獻[41]結(jié)合可驗證隨機函數(shù)(Verifiable Random Function,VRF)[42-44]、PoS和公證制度提出Dfinity共識機制。Dfinity共識機制中使用threshold BLS技術(shù)構(gòu)造VRF(稱為信標(biāo)),輸出一種隨時間變化的數(shù)據(jù)流。Dfinity共識機制相當(dāng)于公證制度,提案被任意一個合法的公證人證明后即可認(rèn)為可信。Dfinity共識機制執(zhí)行流程[41]如圖4所示,具體步驟如下: 1)選舉出塊者。在每一輪選舉開始時,由信標(biāo)廣播隨機數(shù),根據(jù)隨機數(shù)確定所有提議者及其排名。 2)提出區(qū)塊。每個提議者都能提議并廣播議案。議案由交易、提議者排名、前一個區(qū)塊的證書及對新區(qū)塊的簽名組成。系統(tǒng)根據(jù)提議者排名,給提案賦予不同的權(quán)重。提議者排名越高,權(quán)重越大。權(quán)重越大的提案越有可能成為新區(qū)塊。 3)驗證區(qū)塊。每一輪都使用信標(biāo)隨機選舉出公證委員會,其中公證人對新區(qū)塊進行公證。等待一定時間后,每個公證人都將認(rèn)證成功的消息在區(qū)塊鏈系統(tǒng)中進行廣播,若有多個區(qū)塊被公證,則將公證消息全部廣播。公證委員會中任意一個公證人公證一個區(qū)塊后,區(qū)塊鏈系統(tǒng)進入新一輪共識。 4)更新區(qū)塊鏈。全體記賬節(jié)點根據(jù)公證委員會的認(rèn)證消息更新區(qū)塊鏈。 圖4 Dfinity共識機制執(zhí)行流程Fig.4 Execution flow of Dfinity consensus mechanism Dfinity共識機制可以容忍的最大惡意公證人數(shù)量為f=?(R-1)/3」。由于網(wǎng)絡(luò)延遲,每一輪都可能有多個區(qū)塊被認(rèn)證成功進而產(chǎn)生分叉。為解決分叉,根據(jù)協(xié)議規(guī)定,在任意時間如果所有Bk1區(qū)塊都有共同的先驅(qū)Bk2,則提交Bk2進區(qū)塊鏈;當(dāng)沒有共同的先驅(qū)時,提交權(quán)重最大的區(qū)塊。文獻[45]證明了當(dāng)系統(tǒng)誠實用戶數(shù)量大于f+1時,系統(tǒng)最終會達成一致。Dfinity共識機制中拜占庭節(jié)點無法秘密建立和維護被認(rèn)證的鏈,所以不會存在雙花攻擊、自私挖礦攻擊、長距離攻擊和無危險攻擊這些安全威脅,但存在自適應(yīng)攻擊。若采用可驗證隨機函數(shù)產(chǎn)生提議者,雖然解決了提議者身份的問題,提高了系統(tǒng)安全性,但是所有提議者和公證人都使用廣播方式進行通信,時間復(fù)雜度為O(n2)。 小蟻鏈(NEO)中結(jié)合委托投票制度、PoS共識機制和PBFT共識機制提出委托拜占庭容錯(delegated Byzantine Fault Tolerance,dBFT)共識機制[46],參與者依據(jù)所持有的代幣數(shù)量進行投票,選舉出記賬人,由全體記賬人運行BFT算法達成共識生成新區(qū)塊。dBFT共識機制相當(dāng)于人民代表大會制度,記賬人相當(dāng)于人大代表。dBFT共識機制中新產(chǎn)生的區(qū)塊可以立即確認(rèn),每15秒~每20秒產(chǎn)生一個新區(qū)塊,吞吐量實測可達1 000 TPS,可以容忍的最大拜占庭節(jié)點數(shù)為f=?(R-1)/3」,但在NEO項目[46]中,需要NEO項目方同意才能成為共識節(jié)點,其目前只有7個共識節(jié)點,其中6個由項目方控制,接近于完全中心化系統(tǒng)。 2.5.1 VBFT共識機制 在Ontology項目中,結(jié)合PoS、BFT和VRF提出基于可驗證隨機函數(shù)的拜占庭共識機制(VBFT)[47],實現(xiàn)了網(wǎng)絡(luò)的快速共識。每個區(qū)塊的VRF值根據(jù)前一個區(qū)塊計算得到,具體過程為提取前一個區(qū)塊中的交易事務(wù),計算1 024 bit的哈希值并將該哈希值作為輸出。系統(tǒng)中將網(wǎng)絡(luò)分為共識網(wǎng)絡(luò)和公共網(wǎng)絡(luò)。用戶通過質(zhì)押代幣后參與到共識網(wǎng)絡(luò),共識合約自動更新共識節(jié)點列表和相應(yīng)權(quán)益(PoS表),每產(chǎn)生一個區(qū)塊更新一次。共識節(jié)點分為出塊者、驗證者、確認(rèn)者,所有驗證者組成驗證者集合,所有確認(rèn)者組成確認(rèn)者集合。VBFT共識機制相當(dāng)于選舉制度,合法的選民都具有投票權(quán)、被投票權(quán),由可驗證隨機函數(shù)驗證選民身份的合法性。 VBFT共識機制運行時依據(jù)VRF值作為索引,從PoS表中選舉共識節(jié)點,具體流程如下: 1)選舉出塊者和提出區(qū)塊。每一輪依據(jù)VRF值從共識網(wǎng)絡(luò)中選舉潛在出塊者集合,每個潛在出塊者提出一個區(qū)塊。 2)驗證區(qū)塊。每一輪依據(jù)VRF值從共識網(wǎng)絡(luò)中選舉出驗證者集合,每個驗證者從共識網(wǎng)絡(luò)中收集被提出的區(qū)塊進行執(zhí)行驗證,并投票給具有最高優(yōu)先級的區(qū)塊,廣播投票消息。 3)確認(rèn)區(qū)塊。每一輪依據(jù)VRF值從共識網(wǎng)絡(luò)中選舉出確認(rèn)者集合,確認(rèn)者統(tǒng)計驗證者的投票,最后確認(rèn)達成共識的區(qū)塊并廣播確認(rèn)消息。 4)更新區(qū)塊鏈。共識網(wǎng)絡(luò)中所有的節(jié)點復(fù)制確認(rèn)者認(rèn)可的區(qū)塊,只有結(jié)束一輪共識,才開啟新一輪共識。 每一個區(qū)塊決定了VRF函數(shù)的一個輸出,由VRF函數(shù)確定共識節(jié)點序列,根據(jù)節(jié)點序列分配優(yōu)先級,然后通過節(jié)點優(yōu)先級加權(quán)決定區(qū)塊優(yōu)先級,最后投票給優(yōu)先級最高的區(qū)塊,從而解決分叉問題。VBFT共識機制中隨機選擇出塊節(jié)點、驗證節(jié)點、確認(rèn)節(jié)點,能夠抵抗惡意攻擊,去中心化程度和安全性高,吞吐量達到3 000 TPS,交易確認(rèn)時間為5 s~10 s。另外,VBFT共識機制由共識節(jié)點執(zhí)行BFT共識機制,資源消耗低,可以容忍的最大拜占庭節(jié)點數(shù)為f=?(R1)/3」,時間復(fù)雜度為O(n2),擴展性隨共識節(jié)點的增加而降低。 2.5.2 Algorand共識機制 文獻[48]結(jié)合PoS、BFT和VRF提出Algorand共識機制,實現(xiàn)同步網(wǎng)絡(luò)的快速共識。VRF由可驗證概率函數(shù)構(gòu)造.Hash(Signi(r,s,Qr)),其中,r表示節(jié)點對共識輪數(shù),s表示共識步數(shù),Qr表示隨機數(shù)種子,.表示小于1的小數(shù)且其后面是小數(shù)位,i表示節(jié)點數(shù)。Algorand共識機制[49-50]相當(dāng)于多委員會制度,包括出塊節(jié)點委員會和驗證節(jié)點委員會。 1)選舉出塊節(jié)點和區(qū)塊驗證節(jié)點。在第rk輪中的每個驗證節(jié)點運行VRF函數(shù)判斷自身身份:若在rk輪中沒有當(dāng)選為驗證節(jié)點,則不參與本輪共識;若.Hash(Signi(r,s,Qr)) 2)提出區(qū)塊。每個潛在出塊節(jié)點生成Br并將其在區(qū)塊鏈系統(tǒng)中廣播。區(qū)塊形式為Br=(r,PAYr,Signi(Qr),Hash(Br-1)),其中PAYr表示區(qū)塊Br中包含的交易集合,若PAYr≠?,則Qr=Hash(QR-1,s);否則,Qr=Hash(Sign(QR-1,s))。 3)驗證區(qū)塊。委員會成員運行BA*共識機制驗證本輪區(qū)塊的合法性,其是一種新的拜占庭一致性共識機制。BA*共識機制包含分級共識(Graded Consensus,GC)算法和改進型二元拜占庭一致性(Binary Byzantine Agreement,BBA)算法,委員會成員驗證潛在出塊節(jié)點的合法性,找出概率值最小的潛在出塊節(jié)點并選舉為出塊節(jié)點,同時阻止傳播概率值較大的潛在出塊節(jié)點提出區(qū)塊,并驗證其提出區(qū)塊的合法性,廣播驗證消息。 4)更新區(qū)塊鏈。參與記賬的用戶根據(jù)委員會的驗證消息更新區(qū)塊鏈。 Algorand共識機制隨機選舉出塊節(jié)點和驗證節(jié)點,能夠抵抗惡意攻擊,去中心化程度和安全性高,吞吐量高于Bitcoin,交易確認(rèn)時間低于1 min。BA*共識機制類似PBFT共識機制,資源消耗低,每個步驟都要求拜占庭節(jié)點數(shù)少于f=?(R-1)/3」,算法時間復(fù)雜度為O(n2),但其至少需進行6輪通信,通信開銷高于PBFT共識機制。 2.5.3 Omniledger共識機制 文獻[51]結(jié)合VRF、PoS、BFT和鎖機制提出Omniledger共識機制,從未花費幣池(Unspent Transaction Output,UTXO)的角度實現(xiàn)跨分片鏈交易的原子性,每條分片鏈都擁有并維護自身的UTXO。Omniledger共識機制使用PoS共識機制挑選出驗證節(jié)點,利用VRF將驗證節(jié)點分配到分片鏈,每個分片鏈內(nèi)部使用BFT共識機制達成一致,并通過鎖機制保證跨分片鏈操作時的原子性和正確性。Omniledger共識機制較復(fù)雜,沒有對應(yīng)的現(xiàn)實世界信任模型,具體流程如下: 1)初始化。客戶端創(chuàng)建跨分片鏈交易(cross-TX)。cross-TX被廣播給所有花費UTXO的分片鏈(ISs)。 2)加鎖。所有ISs與cross-TX關(guān)聯(lián),每個ISs鎖定自身UTXO并檢查交易合法性。若驗證通過,則先寫日志,分片鏈領(lǐng)導(dǎo)者提交接收證明;若驗證失敗,分片鏈領(lǐng)導(dǎo)者提交拒絕證明。 3)解鎖。客戶端根據(jù)階段2的結(jié)果發(fā)出提交交易信息或者取消交易消息。若所有ISs都驗證通過,則發(fā)出提交消息;若其中有任意一個ISs提交了拒絕證明,則發(fā)出取消交易消息。ISs接收并驗證提交消息后,將交易寫入分片鏈,并在UTXO中使用對應(yīng)的代幣并解鎖交易;接收UTXO的分片鏈(OSs)并在UTXO創(chuàng)造對應(yīng)的代幣。 Omniledger共識機制利用PoS共識機制抵抗女巫攻擊,可容忍的最大拜占庭節(jié)點數(shù)為f=?(R1)/4」。吞吐量隨分片鏈數(shù)量線性增加。 2.6.1 Tendermint共識機制 文獻[52]提出的Tendermint共識機制使用鎖機制深度改進PBFT共識機制而得到,具體流程如圖5所示,包含預(yù)投票、預(yù)提交和提交3個步驟,其中提交包含得到區(qū)塊和等待超過2/3節(jié)點提交兩個步驟。任何共識節(jié)點不論處于哪個階段,只要接收到合法的提交消息,都進入提交階段。Tendermint共識過程中對預(yù)投票消息進行加鎖,保證了數(shù)據(jù)正確性和一致性,無需視圖變更協(xié)議和錯誤恢復(fù)協(xié)議,減少了系統(tǒng)資源消耗,但是一致性協(xié)議的時間復(fù)雜度為O(n2)。由于Tendermint共識機制較復(fù)雜,因此沒有對應(yīng)的現(xiàn)實世界信任模型,目前其已應(yīng)用于Cita[53]項目。 圖5 Tendermint共識機制執(zhí)行流程Fig.5 Execution flow of Tendermint consensus mechanism 2.6.2 Chainspace共識機制 文獻[54]結(jié)合BFT與鎖機制在Chainspace中提出S-BAC共識機制,保證了存儲分片中智能合約的正確性和安全性。S-BAC分片鏈內(nèi)部和分片鏈之間都使用BFT共識機制,區(qū)別在于對拜占庭節(jié)點數(shù)量要求不同。S-BAC分片鏈內(nèi)部相當(dāng)于公民投票制度,分片鏈之間相當(dāng)于否決權(quán)制度。 共識機制中的分片鏈和誠實節(jié)點均指與交易相關(guān)的分片鏈和誠實節(jié)點,跨鏈通信由分片鏈領(lǐng)導(dǎo)者發(fā)起,Chainspace共識機制執(zhí)行流程[54]如圖6所示,具體步驟如下: 1)初始化。一個用戶初始化交易,將準(zhǔn)備消息至少發(fā)送給一個誠實節(jié)點。為保證至少一個誠實節(jié)點接收到準(zhǔn)備消息,需要在一條分片鏈中將消息發(fā)送給f+1個節(jié)點,或者在每條分片鏈中都將消息發(fā)送給f+1個節(jié)點。 2)分配序號。接收到準(zhǔn)備消息,分片鏈進入活動狀態(tài),內(nèi)部使用BFT共識機制給準(zhǔn)備消息分配序號。 3)驗證消息和加鎖。分片鏈內(nèi)部使用BFT共識機制驗證交易,若超過f個節(jié)點驗證通過,則進入鎖定狀態(tài)并廣播準(zhǔn)備提交消息和證據(jù);否則廣播拒絕準(zhǔn)備消息和證據(jù)。如果節(jié)點處于鎖定狀態(tài)時,則不接收其他交易并廣播拒絕其他交易消息。 4)接收。每條分片鏈都監(jiān)聽網(wǎng)絡(luò),如果收到一條拒絕準(zhǔn)備消息,則廣播拒絕提交消息和證據(jù);反之,廣播接收提交消息和證據(jù)。 5)提交和解鎖。若分片鏈接收到提交消息,則將其與交易相關(guān)的對象設(shè)置為不活躍狀態(tài)并提交交易,同時更新分片鏈及解鎖交易。若接收到拒絕提交消息,則釋放相應(yīng)的鎖,將相關(guān)的對象設(shè)置為活躍狀態(tài),等待下一次共識。 圖6 Chainspace共識機制執(zhí)行流程Fig.6 Execution flow of Chainspace consensus mechanism 分片鏈中可以容忍的最大拜占庭節(jié)點數(shù)為f=?(R1)/3」,分片鏈之間不能容忍拜占庭節(jié)點。如果不同交易涉及的節(jié)點不同,則共識操作可以并發(fā)進行。分片鏈內(nèi)部和分片鏈之間的交易可以立即確認(rèn),但是S-BAC只解決了分片鏈的一致性問題,而沒有解決Chainspace全局一致性問題。 能力證明(Proof of Capacity,PoC)是根據(jù)參與者的計算機硬盤空閑空間作為標(biāo)準(zhǔn)選舉出塊者的共識機制,如Permacoin[55]、Spacemint[56]。消逝時間證明(Proof of Elapsed Time,PoET)是根據(jù)可信硬件芯片執(zhí)行某個命令的等待時間作為標(biāo)準(zhǔn)選舉出塊者的共識機制,等待時間最短的用戶即為出塊節(jié)點[57]。權(quán)威證明(Proof of Authority,PoA)是基于權(quán)威人士聲譽的共識機制,由聲譽高的權(quán)威人士證明交易的合法性[58]。燃燒證明(Proof of Burn,PoB)是通過可驗證的方式銷毀基礎(chǔ)代幣來獲得獎勵的共識機制[59]。 目前,區(qū)塊鏈已經(jīng)發(fā)展到第三代,第一代和第二代為公鏈,主要使用PoW共識機制、PoS共識機制和混合共識機制;第三代為聯(lián)盟鏈,主要使用PBFT共識機制。本節(jié)將從能耗、安全性、生成區(qū)塊時間、交易確認(rèn)時間、是否存在代幣和是否需要專業(yè)記賬人等方面對單一共識機制進行分析比較,如表1所示。同時,對現(xiàn)有典型的區(qū)塊鏈項目進行比較,如表2所示,其中“—”表示沒有對應(yīng)數(shù)據(jù)。 表1 單一共識機制性能比較Table 1 Performance comparison of single consensus mechanisms 表2 典型的區(qū)塊鏈項目性能比較Table 2 Performance comparison of typical blockchain projects 在區(qū)塊鏈共識機制的設(shè)計過程中主要考慮能耗、效率、一致性和安全性等性能,現(xiàn)有區(qū)塊鏈技術(shù)是在效率、安全性和去中心化之間進行有側(cè)重的取舍。共識機制作為區(qū)塊鏈的核心技術(shù),未來的研究方向主要包括以下4個方面: 1)研究被委托人不遵守規(guī)則時對委托人賠償?shù)墓沧R機制。在基于委托的共識機制中,目前研究的重點是減少委托人不遵守規(guī)則時的懲罰,因此下一步將研究被委托人不遵守規(guī)則時如何對委托人進行賠償。 2)研究結(jié)合VRF與Bitcoin-NG的共識機制。將VRF應(yīng)用于Bitcoin-NG中可以極大提高關(guān)鍵區(qū)塊的產(chǎn)生效率,從而降低能耗并提高資源利用率。 3)研究結(jié)合VRF與網(wǎng)絡(luò)分片技術(shù)的共識機制。將VRF應(yīng)用于網(wǎng)絡(luò)分片中可以提高共識機制效率并降低驗證區(qū)塊時間,從而增加吞吐量。 4)研究基于高效Rollup方法的共識機制。在儲存分片中,目前主要研究基于ZK-Rollup和Optimistic Rollup方法的共識機制,但由于ZK-Rollup方法使用ZK-SNARK技術(shù),計算過程復(fù)雜,計算時間長達10 min,因此可以通過基于其他零知識證明技術(shù)的Rollup方法降低計算時間,提高共識機制效率,加快區(qū)塊產(chǎn)生速度。在Optimistic Rollup方法中,新產(chǎn)生的區(qū)塊需要等待1周到2周的審查期才能被確認(rèn),因此可將其與BFT共識機制相結(jié)合,使新區(qū)塊能夠立即被確認(rèn),從而提高共識機制的執(zhí)行效率。 區(qū)塊鏈技術(shù)發(fā)展至今,受到各行各業(yè)的廣泛關(guān)注。共識機制作為區(qū)塊鏈的核心技術(shù),能夠保障區(qū)塊鏈數(shù)據(jù)庫的一致性和正確性,從而決定區(qū)塊鏈的安全性、擴展性、能耗等相關(guān)性能。本文從一致性、容錯性等角度歸納現(xiàn)有區(qū)塊鏈共識機制,分類介紹區(qū)塊鏈共識機制的技術(shù)路線。基于現(xiàn)實世界的信任模型,分析各種共識機制的原理,闡述包括選舉出塊者、提出區(qū)塊、驗證區(qū)塊和更新區(qū)塊鏈的共識機制流程,并從安全性、能耗、吞吐量和區(qū)塊確認(rèn)時間等方面對現(xiàn)有共識機制的相關(guān)性能進行對比總結(jié)。隨著區(qū)塊鏈技術(shù)在新型基礎(chǔ)設(shè)施建設(shè)中發(fā)揮愈加重要的作用,大規(guī)模、跨領(lǐng)域的區(qū)塊鏈會得到更加廣泛的應(yīng)用和發(fā)展,因此后續(xù)將對具有完善的獎懲制度且高容量、高效率的共識機制做進一步研究。1.2 PoS共識機制
1.3 BFT共識機制



2 混合共識機制
2.1 基于PoW與PoS的共識機制
2.2 基于PoS與委托投票制度的共識機制
2.3 基于PoS、VRF與公證制度的共識機制

2.4 基于PoS、BFT與委托投票制度的共識機制
2.5 基于PoS、BFT與VRF的共識機制
2.6 基于BFT與鎖機制的共識機制


3 其他共識機制
4 共識機制分析


5 研究展望
6 結(jié)束語