牟 平, 梁鑒如
(上海工程技術(shù)大學(xué),上海 201620)
Satoshi Nakamoto在2008年提出了bitcoin[1],描述了一種全新的電子貨幣及其算法。它的不可篡改、多方維護(hù)的特性,引起了各個(gè)領(lǐng)域的廣泛關(guān)注,其重要底層技術(shù)之一的區(qū)塊鏈也吸引了諸多研究者關(guān)注。
在傳統(tǒng)的數(shù)據(jù)系統(tǒng)中,賬本上的一系列信息往往由一個(gè)中心服務(wù)器進(jìn)行記錄,這種設(shè)計(jì)特性,節(jié)省了使用成本、保證了數(shù)據(jù)的強(qiáng)一致性、規(guī)避了分區(qū)容錯(cuò)性但卻使得可用性風(fēng)險(xiǎn)極高[2]。在數(shù)據(jù)儲(chǔ)存階段,采用多備份容災(zāi),足以抵御自然條件下的偶發(fā)災(zāi)害。相較而言,惡意的節(jié)點(diǎn)對(duì)傳統(tǒng)分布式數(shù)據(jù)系統(tǒng)造成的問(wèn)題要嚴(yán)重得多,典型的有DDOS攻擊,冒充客戶端提交虛假信息,攻擊中心服務(wù)器篡改用戶提交的信息,篡改歷史信息等[3-4]。這對(duì)新型的數(shù)據(jù)系統(tǒng)分布式系統(tǒng)帶來(lái)了以下挑戰(zhàn):在一個(gè)無(wú)中心,弱信任的分布式系統(tǒng)中,如何讓各個(gè)節(jié)點(diǎn)在指定時(shí)間內(nèi)達(dá)成共識(shí)[5]。
所謂共識(shí),簡(jiǎn)單來(lái)說(shuō)就是分布式系統(tǒng)中節(jié)點(diǎn)對(duì)某個(gè)數(shù)值或狀態(tài)的承認(rèn)[6]。Lynch基于如今的計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)的結(jié)構(gòu)提出了CAP理論[7],認(rèn)為分布式系統(tǒng)不可能同時(shí)滿足一致性(consistency)、可用性(availability)和分區(qū)容錯(cuò)性(partition tolerance)這三個(gè)基本需求,最多只能同時(shí)滿足其中兩項(xiàng)。業(yè)界在分布式的實(shí)際使用中,對(duì)CAP特性進(jìn)行進(jìn)一步權(quán)衡,由Dan Pritchett總結(jié)為主要特征為基本可用(basically available)、軟狀態(tài)(soft state)和最終一致性(eventually consistent)的BASE原理。Gray在1978提出了2PC(concurrency control and recovery in database systems)通過(guò)兩階段進(jìn)行事務(wù)提交,但如果從節(jié)點(diǎn)失效則會(huì)發(fā)生事務(wù)阻塞,使系統(tǒng)崩潰。為增強(qiáng)系統(tǒng)健壯性,Skeen在1981年提出(3PC)通過(guò)三階段進(jìn)行事務(wù)提交,降低了數(shù)據(jù)不一致的概率。Lamport在1998年提出的Paxos[8]是第一個(gè)獲得廣泛認(rèn)可的基于消息傳遞的一致性算法。Diego Ongaro和John Ousterhout通過(guò)問(wèn)題拆分、狀態(tài)空間降維等方式對(duì)Paxos進(jìn)行簡(jiǎn)化,提出了Raft算法。Barbara Liskov等在1999年提出了實(shí)用拜占庭容錯(cuò)算法[9],解決了原始拜占庭不能容錯(cuò)的問(wèn)題,并且將算法的復(fù)雜度由指數(shù)級(jí)降低到多項(xiàng)式級(jí)。擴(kuò)展了系統(tǒng)的可用性。Ramakrishna Kotla在2007年提出了基于zyzzyva協(xié)議[10]的SBFT算法[11],使得消息事件復(fù)雜度由PBFT的O(n2)降為O(n),改良后效果非常顯著,極大地提高了共識(shí)效率。但這些算法為了保證數(shù)據(jù)的一致性,一般選擇對(duì)客戶端發(fā)送的消息由一個(gè)主節(jié)點(diǎn)進(jìn)行排序、打包,再分發(fā)到各個(gè)副本節(jié)點(diǎn)進(jìn)行校驗(yàn),但是主節(jié)點(diǎn)的更換方式采取的是輪巡式,敵手非常容易猜到預(yù)備的主節(jié)點(diǎn),這可能導(dǎo)致敵手有針對(duì)性地攻擊預(yù)備節(jié)點(diǎn),或者故意癱瘓當(dāng)前節(jié)點(diǎn),迫使切換到已控制的節(jié)點(diǎn)中完成攻擊。因此,應(yīng)當(dāng)避免系統(tǒng)通過(guò)單一主節(jié)點(diǎn)接受輸入消息,防止主節(jié)點(diǎn)被劫持給系統(tǒng)帶來(lái)風(fēng)險(xiǎn)。同時(shí)應(yīng)當(dāng)減少同步數(shù)據(jù)中的計(jì)算開(kāi)支。文中在SBFT共識(shí)算法的基礎(chǔ)上引入了計(jì)入時(shí)間戳排序的監(jiān)督共識(shí)算法:
(1)引入多節(jié)點(diǎn)對(duì)客戶端消息排序打包,防止單主節(jié)點(diǎn)篡改、瞞報(bào)客戶端的消息。
(2)引入消息的時(shí)間水位和延時(shí)排隊(duì)概念,將時(shí)間戳作為消息排序的依據(jù)。設(shè)置消息緩沖,解決網(wǎng)絡(luò)延遲帶來(lái)的各節(jié)點(diǎn)消息不同步。
(3)增加節(jié)點(diǎn)間消息對(duì)比方式,對(duì)于不同的業(yè)務(wù)邏輯使用不同的對(duì)比邏輯,增加使用彈性。
比特幣的PoW共識(shí)算法[1]中每個(gè)節(jié)點(diǎn)會(huì)將收到的交易數(shù)據(jù)(記為m)、前一個(gè)區(qū)塊的merkle值、時(shí)間戳(記為t)以及隨機(jī)數(shù)(nonce)等結(jié)合進(jìn)行一次哈希運(yùn)算,需要滿足得到的哈希結(jié)果小于某一目標(biāo)數(shù)值(target),因此每個(gè)節(jié)點(diǎn)會(huì)不斷更改隨機(jī)數(shù)進(jìn)行嘗試,直到得到滿足條件的隨機(jī)數(shù)。然后該節(jié)點(diǎn)會(huì)將結(jié)果向整個(gè)區(qū)塊鏈網(wǎng)絡(luò)廣播,其他節(jié)點(diǎn)驗(yàn)證屬實(shí)后就會(huì)接納此節(jié)點(diǎn)生成的區(qū)塊,放到自己的鏈條上,得到一條“最長(zhǎng)鏈”。
Hash(block,nonce) PoW機(jī)制是最早和理論上最安全的公有鏈算法,參與競(jìng)爭(zhēng)消息排序的節(jié)點(diǎn)越多,系統(tǒng)會(huì)自動(dòng)調(diào)整target的大小,控制難度,使得出塊的速度大體穩(wěn)定在一定區(qū)間,這使得篡改區(qū)塊鏈的內(nèi)容越困難,而且難以預(yù)測(cè)下輪的主節(jié)點(diǎn)避免了數(shù)據(jù)打包時(shí)可能受到的干擾。但是PoW的缺陷也很明顯,巨量算力的消耗造成了資源和設(shè)備的浪費(fèi),而且根據(jù)調(diào)查顯示90%的算力掌握在5家“礦場(chǎng)”中,這無(wú)疑違背了分布的原則。而且長(zhǎng)達(dá)10分鐘到1小時(shí)的確認(rèn)時(shí)間以及7tx/s的交易速度使得應(yīng)用場(chǎng)景非常受限[12]。 2011年7月Quantum Mechanic提出了權(quán)益證明PoS共識(shí)算法,提出將幣齡引入以減少節(jié)點(diǎn)尋找隨機(jī)數(shù)的難度。幣齡指的是節(jié)點(diǎn)擁有的幣乘以幣剩余的時(shí)間。PoS算法原理如下: 其中,target功能與PoW中的目標(biāo)數(shù)一致,用來(lái)控制出塊速度,而擁有更多,時(shí)間更長(zhǎng)的余額的人則可以以較低的代價(jià)計(jì)算出nonce從而獲得記賬權(quán)。但是這個(gè)算法對(duì)于幣齡沒(méi)有限制,于是有用戶開(kāi)始囤幣升值,以期獲得在系統(tǒng)內(nèi)的更多投票權(quán)。因此Peercoin修改了幣齡的計(jì)算方法由線性增長(zhǎng)改為了衰減增長(zhǎng)和控制coinage的最大值,使得囤幣者的效用增長(zhǎng)不再明顯。 2016年,IBM提出了基于PBFT[9]中的共識(shí)協(xié)議hyperledger,采用了授權(quán)式共識(shí),在一個(gè)已經(jīng)被驗(yàn)證過(guò)的節(jié)點(diǎn)群中,節(jié)點(diǎn)間鏈接配置被稱為視圖(view),在一個(gè)視圖中,一個(gè)節(jié)點(diǎn)是主節(jié)點(diǎn),其他節(jié)點(diǎn)是備份,當(dāng)需要視圖切換時(shí)(view-change)通過(guò)計(jì)算P=Vmod |R|選擇下一個(gè)主節(jié)點(diǎn),其中V是視圖編號(hào),R是參與共識(shí)的節(jié)點(diǎn)數(shù)。主節(jié)點(diǎn)的更換通常由以下情況觸發(fā):主節(jié)點(diǎn)宕機(jī)超時(shí);主節(jié)點(diǎn)是惡意節(jié)點(diǎn),傳播惡意消息,被過(guò)半節(jié)點(diǎn)發(fā)現(xiàn)異常;設(shè)置的階段定時(shí)器超時(shí)。對(duì)于主節(jié)點(diǎn)P,由于在更替中視圖遵循是V,V+1,V+2原則使得攻擊者容易推測(cè)下一個(gè)可能的主節(jié)點(diǎn),進(jìn)而攻擊控制,而且如果主節(jié)點(diǎn)擅自增刪,修改客戶端的消息,其他節(jié)點(diǎn)未能發(fā)現(xiàn)異常,這對(duì)用戶的安全性無(wú)疑帶來(lái)極大危險(xiǎn)。PBFT共識(shí)算法流程如圖1所示。 圖1 PBFT共識(shí)算法流程 2013年8月,比特股(bitshare)則采用授權(quán)股份證明算法(delegated proof-of-stake,DPoS)即系統(tǒng)中每個(gè)節(jié)點(diǎn)可以將其持有的股份權(quán)益作為選票授予一個(gè)證人,獲得票數(shù)最多且愿意成為證人的前N個(gè)節(jié)點(diǎn)將進(jìn)入“證人名單”,按照既定的時(shí)間表輪流對(duì)交易進(jìn)行打包結(jié)算并且簽署(即生產(chǎn))新區(qū)塊。每經(jīng)過(guò)一個(gè)維護(hù)間隔(maintenance interval)時(shí)間(1天),選票就會(huì)被統(tǒng)計(jì)一次,屆時(shí)活躍證人的名單也會(huì)更新一次。然后將證人名單洗牌(shuffle),并且每個(gè)證人節(jié)點(diǎn)會(huì)輪流地在固定的預(yù)先計(jì)劃好的2秒內(nèi)生產(chǎn)一個(gè)區(qū)塊。當(dāng)所有證人輪完之后,他們又將被洗牌。 綜上來(lái)看,主節(jié)點(diǎn)的選擇一般出自以下幾種方式:算力競(jìng)爭(zhēng)(PoW);資產(chǎn)所有權(quán)競(jìng)爭(zhēng)(PoS);輪巡(PBFT);投票+輪巡(DPoS)。在眾多改進(jìn)算法中,除了PoW算法,一般是通過(guò)增加隨機(jī)選擇的特性防止主節(jié)點(diǎn),如果主節(jié)點(diǎn)被腐蝕,或者被惡意控制,在算法中一般只考慮對(duì)節(jié)點(diǎn)的不統(tǒng)一欺騙即主節(jié)點(diǎn)對(duì)P1發(fā)出A→B卻對(duì)P2,P3發(fā)出A→C的交易命令。但是對(duì)于主節(jié)點(diǎn)篡改交易信息或憑空杜撰統(tǒng)一的消息記錄,即對(duì)原本A→B的交易信息被篡改為A→C,統(tǒng)一發(fā)布給P1,P2,P3,在這種情況下,現(xiàn)有的共識(shí)機(jī)制無(wú)法識(shí)別攔截。Hyperledge等聯(lián)盟鏈一般依托線下的強(qiáng)身份認(rèn)證使得主節(jié)點(diǎn)一旦作惡將被追溯,Carboni引入了追溯機(jī)制使得作惡節(jié)點(diǎn)會(huì)被懲罰[13],但考慮到一般攻擊方并不會(huì)是主節(jié)點(diǎn)的現(xiàn)實(shí)所有者,更可能是被植入后門(mén)的節(jié)點(diǎn),造成的損失將很難挽回。因此一種對(duì)性能要求不大并能監(jiān)視異常主節(jié)點(diǎn)行為的算法,對(duì)提高有明確主節(jié)點(diǎn)主導(dǎo)的區(qū)塊鏈算法安全性的提升很有必要。 SBFT算法分為6個(gè)階段,分別是請(qǐng)求、預(yù)準(zhǔn)備、投票簽名、完全共識(shí)證明、簽名狀態(tài)、完全執(zhí)行證明,流程如圖2所示。 (1)請(qǐng)求階段:客戶端向主節(jié)點(diǎn)發(fā)送消息m。 (2)預(yù)準(zhǔn)備階段:主節(jié)點(diǎn)收到客戶端發(fā)來(lái)的消息m后,為其分配編號(hào),并將收到的消息按編號(hào)打包成塊,發(fā)送給其他節(jié)點(diǎn)。 (3)投票簽名階段:各節(jié)點(diǎn)對(duì)收到消息進(jìn)行核驗(yàn),確認(rèn)后使用門(mén)限簽名(BLS),將簽名消息發(fā)給收集節(jié)點(diǎn)C。 (4)完全共識(shí)證明階段:每一個(gè)收集節(jié)點(diǎn)會(huì)收集簽名,然后為該塊創(chuàng)造一個(gè)完全共識(shí)證明,將其發(fā)送給所有節(jié)點(diǎn),一旦節(jié)點(diǎn)接收到完全共識(shí)消息,就會(huì)對(duì)這個(gè)塊進(jìn)行共識(shí)同步,然后執(zhí)行塊內(nèi)記錄的交易信息。 (5)簽名狀態(tài)階段:當(dāng)從節(jié)點(diǎn)執(zhí)行完塊中所有交易后,開(kāi)始創(chuàng)造一個(gè)完全執(zhí)行證明,并進(jìn)行門(mén)限簽名,然后發(fā)送消息給收集節(jié)點(diǎn)E。 (6)完全執(zhí)行證明階段:收集節(jié)點(diǎn)E收集簽名,達(dá)到門(mén)限要求后,為該塊創(chuàng)建一個(gè)完全執(zhí)行完成證明,并告訴所有節(jié)點(diǎn)和客戶端當(dāng)前狀態(tài)是持久的,并且交易操作已經(jīng)被執(zhí)行。 為解決共識(shí)算法過(guò)度依賴主節(jié)點(diǎn)的問(wèn)題,引入監(jiān)督節(jié)點(diǎn)(supervisor)對(duì)主節(jié)點(diǎn)的排序結(jié)果進(jìn)行監(jiān)督校準(zhǔn)。流程如圖3所示。如果主節(jié)點(diǎn)篡改客戶端發(fā)來(lái)的消息,除非能同時(shí)控制監(jiān)督節(jié)點(diǎn)否則必然會(huì)造成消息摘要的不一致,從而發(fā)現(xiàn)主節(jié)點(diǎn)異常,沒(méi)有必要通過(guò)等待收集f+1個(gè)異常證明來(lái)提出view-change。對(duì)于某些安全要求不高的場(chǎng)合,還可以采用采納多數(shù)的方式,即在一個(gè)主節(jié)點(diǎn)兩個(gè)監(jiān)督節(jié)點(diǎn)的情況下,當(dāng)主節(jié)點(diǎn)和一個(gè)監(jiān)督節(jié)點(diǎn)的摘要不同,但與另一個(gè)監(jiān)督節(jié)點(diǎn)相同時(shí),可以認(rèn)為是系統(tǒng)誤差造成,繼續(xù)執(zhí)行后續(xù)步驟。 圖3 優(yōu)化后的共識(shí)流程 優(yōu)化后的流程具體如圖4所示。 圖4 優(yōu)化后的SBFT共識(shí)算法 (1)請(qǐng)求階段:客戶端提交消息<”request”,m,c,t>sig給主節(jié)點(diǎn)和監(jiān)督節(jié)點(diǎn),m表示客戶端向區(qū)塊鏈請(qǐng)求寫(xiě)入的交易數(shù)據(jù),c表示客戶端編號(hào),t表示時(shí)間戳,一般來(lái)說(shuō)由本地時(shí)鐘控制,其精度應(yīng)當(dāng)滿足系統(tǒng)要求的Δλ??蛻舳税l(fā)出的時(shí)間戳是嚴(yán)格單調(diào)遞增的。sig是客戶端對(duì)這個(gè)消息的簽名,用以證明消息確實(shí)是此客戶端發(fā)出的。消息發(fā)送成功后,客戶端啟動(dòng)計(jì)時(shí)器,計(jì)算消息是否發(fā)送超時(shí)。 (2)預(yù)準(zhǔn)備階段:主節(jié)點(diǎn)接受到客戶端發(fā)來(lái)的請(qǐng)求后,通過(guò)時(shí)間排序?yàn)橄分配編號(hào),滿足打包條件后,將消息按序號(hào)打包成塊(blockp),并生成區(qū)塊的摘要hash(blockp)以及交易列表{cp,hash(m)p,tp},交易列表中存放了區(qū)塊中所有提交消息的客戶端編號(hào)和對(duì)應(yīng)的提交時(shí)間戳。將 (3)投票簽名階段:一般節(jié)點(diǎn)對(duì)收到消息進(jìn)行核驗(yàn),確認(rèn)后使用門(mén)限簽名(BLS),將簽名消息發(fā)給收集節(jié)點(diǎn)C。主節(jié)點(diǎn)和監(jiān)督節(jié)點(diǎn)將收到的其他節(jié)點(diǎn)的摘要與自己生成的摘要比較,生成比較消息。將比較消息發(fā)送給收集節(jié)點(diǎn)。 (4)完全共識(shí)證明階段:收集節(jié)點(diǎn)C對(duì)比較消息驗(yàn)證,不通過(guò)則進(jìn)入視圖轉(zhuǎn)換,通過(guò)則繼續(xù)收集簽名,然后為該塊創(chuàng)造一個(gè)full commit proof消息,發(fā)送給所有節(jié)點(diǎn),一旦從節(jié)點(diǎn)接收到full commit,就會(huì)對(duì)這個(gè)塊進(jìn)行共識(shí)同步,然后執(zhí)行塊內(nèi)記錄的交易信息。 (5)與原方案相同。 (6)與原方案相同。 主節(jié)點(diǎn)和監(jiān)督節(jié)點(diǎn)每Δt進(jìn)行一次打包操作,抽取 受制于現(xiàn)實(shí)條件制約,節(jié)點(diǎn)廣播的信息不會(huì)同時(shí)抵達(dá)其他節(jié)點(diǎn)??赡茉谀承┕?jié)點(diǎn)出現(xiàn)如下情況。 這時(shí)需要通過(guò)重新排序?qū)崿F(xiàn)順序,排序后的消息矩陣成為block,如果某條消息因?yàn)檠訒r(shí),一部分節(jié)點(diǎn)將此消息打包入blocki,但另一部分節(jié)點(diǎn)中將其打包入blocki+1,將使得消息無(wú)法排序。因此,引入了時(shí)間水位[h,H]和延時(shí)排隊(duì)的概念。低水位h等于上一個(gè)打包完成區(qū)塊的最大時(shí)間戳編號(hào),高水位為tH=th+Δt,其中Δt是指定的數(shù)值,等于區(qū)塊打包消息的時(shí)間間隔,其中tH+Δλ 圖5 消息隊(duì)列 在投票階段各節(jié)點(diǎn)將自己的區(qū)塊摘要同其他節(jié)點(diǎn)的摘要進(jìn)行比較[14],相同為1,不同為0。若摘要全部相同則生成一條(1,1,1)消息,若主節(jié)點(diǎn)摘要為A,監(jiān)督節(jié)點(diǎn)1摘要為B,監(jiān)督節(jié)點(diǎn)2摘要為A,則主節(jié)點(diǎn)生成(1,0,1),監(jiān)督節(jié)點(diǎn)1生成(0,1,0),監(jiān)督節(jié)點(diǎn)2生成(1,0,1),若主節(jié)點(diǎn)摘要為B,監(jiān)督節(jié)點(diǎn)1摘要為A,監(jiān)督節(jié)點(diǎn)2摘要為A,則主節(jié)點(diǎn)生成(1,0,0),監(jiān)督節(jié)點(diǎn)1生成(0,1,1),監(jiān)督節(jié)點(diǎn)2生成(0,1,1)。對(duì)不同的任務(wù)場(chǎng)景可以使用不同的錯(cuò)誤容忍策略,對(duì)高要求場(chǎng)景可以使用嚴(yán)格模式必須(1,1,1)才能通過(guò)審查,對(duì)于寬容度較高的任務(wù)類(lèi)型可以接受(1,0,1)或者(1,1,0)但是拒絕(1,0,0)。 改進(jìn)方案通過(guò)引入了時(shí)間水位[h,H]和延時(shí)排隊(duì)以及消息比較的概念,實(shí)現(xiàn)了對(duì)主節(jié)點(diǎn)的監(jiān)督。通過(guò)引入不同的監(jiān)督節(jié)點(diǎn)數(shù),增加攻擊主節(jié)點(diǎn)操縱數(shù)據(jù)的成本。如果采用嚴(yán)格模式,則使得攻擊成功的難度指數(shù)上升。如果采用寬容模式,敵手設(shè)定為n=2f+1,有總量為n節(jié)點(diǎn),Mp個(gè)敵手節(jié)點(diǎn),當(dāng)選x-1個(gè)節(jié)點(diǎn)作為監(jiān)督節(jié)點(diǎn),則被敵手攻擊成功的概率Pr為: 在n=100,Mp=6,x=9的條件下,敵手攻擊成功的概率為2.97e-10,如果系統(tǒng)打包出塊的速度是每分鐘一塊,每天運(yùn)行20小時(shí),則平均2 805年才會(huì)出現(xiàn)一次攻擊成功。圖6是在n=100的情況下以log10計(jì)的攻擊成功概率圖。以攻擊成功的概率小于e-8為通過(guò)標(biāo)準(zhǔn)(千萬(wàn)分之一),可以看到敵手攻擊成功的概率隨著敵手控制點(diǎn)的增加而增加,而且當(dāng)敵手控制節(jié)點(diǎn)數(shù)目不變時(shí)增加背書(shū)節(jié)點(diǎn)數(shù)目可以使攻擊成功概率呈指數(shù)下降,即使敵手控制了相對(duì)較多的節(jié)點(diǎn)Mp=10;當(dāng)x=13時(shí)攻擊成功概率仍然僅為2.001e-09,充分體現(xiàn)了安全性。在實(shí)際使用中需要根據(jù)需求設(shè)置n和x,以滿足不同的場(chǎng)景需求和不同強(qiáng)度的安全需要。 圖6 敵手攻擊成功概率圖(以log10記) 在有100個(gè)節(jié)點(diǎn)的典型環(huán)境中,敵手?jǐn)?shù)目為1~5時(shí),不同監(jiān)督節(jié)點(diǎn)數(shù)下攻擊成功的概率細(xì)節(jié)如表1所示。 表1 敵手攻擊成功概率 通過(guò)比較可以看到,引入監(jiān)督節(jié)點(diǎn)后攻擊成功的概率大大降低,效果明顯。 主節(jié)點(diǎn)的極高權(quán)限使得惡意攻擊者一旦得手所得收益極大,這也是各個(gè)算法極力避免主節(jié)點(diǎn)提前計(jì)算出的原因,但是系統(tǒng)為了維持?jǐn)?shù)據(jù)一致又必須由單節(jié)點(diǎn)進(jìn)行記賬操作,因此引入一種帶有主節(jié)點(diǎn)監(jiān)督的共識(shí)算法被視為效率與安全的一中折中方案。文中針對(duì)共識(shí)算法中存在的對(duì)主節(jié)點(diǎn)消息過(guò)度依賴的問(wèn)題,提出一種基于時(shí)間排序的監(jiān)督共識(shí)方案。通過(guò)引入監(jiān)督節(jié)點(diǎn),在系統(tǒng)內(nèi)部利用現(xiàn)有資源對(duì)主節(jié)點(diǎn)的消息進(jìn)行校準(zhǔn),以較小代價(jià)顯著提高主節(jié)點(diǎn)傳播消息的造假成本。通過(guò)消息的排隊(duì)解決多節(jié)點(diǎn)記錄時(shí)的異步網(wǎng)絡(luò)帶來(lái)的消息傳遞延遲。仿真結(jié)果表明,基于時(shí)間排序的監(jiān)督共識(shí)可以很好地在有部分惡意節(jié)點(diǎn)的網(wǎng)絡(luò)中以較低的代價(jià)顯著增加主節(jié)點(diǎn)作弊的成本,有效提升了系統(tǒng)的安全性,并且可以通過(guò)設(shè)置不同的共識(shí)模式、引入不同的監(jiān)督節(jié)點(diǎn)調(diào)節(jié)系統(tǒng)的抗攻擊能力。對(duì)有彈性安全需求的系統(tǒng)有較大應(yīng)用潛力。1.2 PoS中主節(jié)點(diǎn)的選擇方法
1.3 PBFT中主節(jié)點(diǎn)的選擇方法
1.4 DPoS中主節(jié)點(diǎn)的選擇方法
1.5 總 結(jié)
2 改進(jìn)方案
2.1 SBFT共識(shí)流程結(jié)構(gòu)
2.2 共識(shí)流程優(yōu)化
3 特性分析
3.1 基于時(shí)間排序
3.2 消息比較
4 仿真結(jié)果分析
5 結(jié)束語(yǔ)