国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于聯(lián)盟鏈微電網(wǎng)交易的改進(jìn)Raft共識(shí)算法

2024-10-14 00:00張銘泉曹新宇
計(jì)算機(jī)應(yīng)用研究 2024年10期

摘 要:針對(duì)聯(lián)盟鏈微電網(wǎng)交易場(chǎng)景的高吞吐量與抵御拜占庭節(jié)點(diǎn)攻擊的需求,提出了一種基于Raft的多領(lǐng)導(dǎo)者拜占庭容錯(cuò)共識(shí)算法MLB-Raft(multi-leader Byzantine fault tolerance-Raft)。首先使用可驗(yàn)證隨機(jī)函數(shù)VRF選舉領(lǐng)導(dǎo)者節(jié)點(diǎn)群,通過(guò)多領(lǐng)導(dǎo)者并行提交區(qū)塊的方式提高算法的吞吐量;接著引入了協(xié)調(diào)者角色,負(fù)責(zé)領(lǐng)導(dǎo)者的選舉、管理與系統(tǒng)共識(shí);在領(lǐng)導(dǎo)者與跟隨者進(jìn)行區(qū)塊復(fù)制的過(guò)程中,結(jié)合并簡(jiǎn)化了PBFT算法的共識(shí)流程,實(shí)現(xiàn)本算法的抗拜占庭特性。實(shí)驗(yàn)結(jié)果表明,在大規(guī)模網(wǎng)絡(luò)節(jié)點(diǎn)環(huán)境下,相較于Raft算法,該算法提高了吞吐量與共識(shí)效率,但付出了部分通信開(kāi)銷代價(jià);相較于PBFT算法,該算法提高了拜占庭容錯(cuò)能力,降低了通信開(kāi)銷。綜上,該算法能有效保障聯(lián)盟鏈微電網(wǎng)交易的時(shí)效性與安全性。

關(guān)鍵詞:聯(lián)盟鏈;微電網(wǎng);共識(shí)算法;Raft算法;PBFT算法;可驗(yàn)證隨機(jī)函數(shù)

中圖分類號(hào):TP301 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1001-3695(2024)10-005-2911-07

doi:10.19734/j.issn.1001-3695.2024.01.0010

Improvement of Raft consensus algorithm based on alliance chain microgrid trading

Zhang Mingquan, Cao Xinyu

(School of Control & Computer Engineering, North China Electric Power University, Baoding Hebei 071003, China)

Abstract:To address the high throughput and resistance to Byzantine node attacks in the microgrid trading scenario of consortium chains, this paper proposed a multi-leader Byzantine fault tolerance consensus algorithm based on Raft, named MLB-Raft. The algorithm first utilized the VRF to select a group of leader nodes, increasing throughput by allowing multiple leaders to submit blocks in parallel. A coordinator role was then introduced, responsible for the election and management of leaders and system consensus. During the block replication process between leaders and followers, the consensus process of the practical Byzantine fault tolerance (PBFT) algorithm was integrated and simplified to achieve the Byzantine resilience of this algorithm. Experimental results show that, under a large-scale network node environment, compared to the Raft algorithm, this algorithm improves throughput and consensus efficiency at the cost of some communication overhead. Compared to the PBFT algorithm, this algorithm enhances Byzantine fault tolerance and reduces communication overhead. In summary, this algorithm can effectively ensure the timeliness and security of alliance chain microgrid transactions.

Key words:alliance chain; microgrids; consensus algorithm; Raft algorithm; PBFT algorithm; verifiable random function(VRF)

0 引言

2022年8月1日,工業(yè)和信息化部、國(guó)家發(fā)展改革委、生態(tài)環(huán)境部發(fā)布《工業(yè)領(lǐng)域碳達(dá)峰實(shí)施方案》[1],明確提出要加快工業(yè)綠色微電網(wǎng)建設(shè),促進(jìn)就近大規(guī)模、高比例消納可再生能源。微電網(wǎng)[2]是指由分布式電源、儲(chǔ)能裝置、能量轉(zhuǎn)換裝置、相關(guān)負(fù)荷和監(jiān)控、保護(hù)裝置匯集而成的小型發(fā)配電系統(tǒng),是一個(gè)能夠?qū)崿F(xiàn)自我控制、保護(hù)和管理的自治系統(tǒng)。微電網(wǎng)通過(guò)點(diǎn)對(duì)點(diǎn)電力交易形成微電網(wǎng)電力交易市場(chǎng),可有效解決當(dāng)前可再生能源的就近消納問(wèn)題。但傳統(tǒng)的集中式電力交易模式很難適應(yīng)分布式電源分散性的特點(diǎn),因其存在交易數(shù)據(jù)不透明、無(wú)法追溯、數(shù)據(jù)易被竄改等問(wèn)題,無(wú)法有效實(shí)現(xiàn)交易雙方點(diǎn)對(duì)點(diǎn)的電力交易。

區(qū)塊鏈技術(shù)于2008年在Satoshi Nakamoto發(fā)表的《Bitcoin: a peer-to-peer electronic cash system》[3]中被首次提出,它集成了分布式存儲(chǔ)、共識(shí)算法、數(shù)字簽名、點(diǎn)對(duì)點(diǎn)傳輸與智能合約等技術(shù),通過(guò)網(wǎng)絡(luò)中所有的節(jié)點(diǎn)共同管理、監(jiān)督所有鏈上數(shù)據(jù),擺脫了網(wǎng)絡(luò)中單一節(jié)點(diǎn)或集群的中心化管理,是一個(gè)去中心化、無(wú)須信任的、不可竄改的分布式賬本。區(qū)塊鏈技術(shù)的特點(diǎn)與微電網(wǎng)電力交易的需求高度契合,當(dāng)前已有許多研究將區(qū)塊鏈技術(shù)與微電網(wǎng)電力交易相結(jié)合。文獻(xiàn)[4]提出了一種基于區(qū)塊鏈的微電網(wǎng)群分布式電能交易模型,用于解決傳統(tǒng)集中交易模式在處理高頻、小量的微電網(wǎng)群電能交易時(shí)存在的運(yùn)行成本高、信息不安全等弊端。文獻(xiàn)[5]將區(qū)塊鏈技術(shù)與微電網(wǎng)交易相結(jié)合,基于連續(xù)雙向拍賣模式提出了基于區(qū)塊鏈技術(shù)的微電網(wǎng)交易機(jī)制。

區(qū)塊鏈根據(jù)其去中心化程度分為公有鏈、私有鏈和聯(lián)盟鏈。公有鏈?zhǔn)峭耆_(kāi)透明的,不受任何組織控制,所有人都能參與;私有鏈的寫入權(quán)限僅屬于個(gè)人或某一組織,中心化程度高;聯(lián)盟鏈則介于兩者之間,只對(duì)特定的團(tuán)體組織開(kāi)放,參與者可以進(jìn)行交易或信息查閱,但僅有聯(lián)盟中的節(jié)點(diǎn)有權(quán)進(jìn)行交易驗(yàn)證、發(fā)布合約等功能。文獻(xiàn)[6]指出了聯(lián)盟鏈比公有鏈和私有鏈更適用于能源交易場(chǎng)景,建立了基于聯(lián)盟鏈的去中心化能源交易系統(tǒng)。文獻(xiàn)[7]針對(duì)微電網(wǎng)電力交易存在著身份認(rèn)證協(xié)議不安全、交易中心化、數(shù)據(jù)無(wú)法追蹤溯源、節(jié)點(diǎn)之間缺乏共識(shí)等問(wèn)題,提出了基于聯(lián)盟鏈的微電網(wǎng)身份認(rèn)證協(xié)議。聯(lián)盟鏈的部分去中心化特性、節(jié)點(diǎn)準(zhǔn)入機(jī)制等特點(diǎn),方便監(jiān)管機(jī)構(gòu)對(duì)交易進(jìn)行監(jiān)督與管理,因此適用于微電網(wǎng)電力交易。

共識(shí)機(jī)制是區(qū)塊鏈的重要組成部分,是區(qū)塊鏈網(wǎng)絡(luò)中節(jié)點(diǎn)間達(dá)成一致的重要技術(shù),保證了區(qū)塊鏈網(wǎng)絡(luò)中的數(shù)據(jù)一致性和安全性。文獻(xiàn)[8]為解決電力系統(tǒng)不同主體之間的信任問(wèn)題,提出了一種基于區(qū)塊鏈的分布式能源交易市場(chǎng)信用風(fēng)險(xiǎn)管理方法,其使用PoO(proof of optimization)算法進(jìn)行共識(shí),但是該算法存在大量算力浪費(fèi)的問(wèn)題。文獻(xiàn)[9]針對(duì)能源場(chǎng)景選擇了PoS共識(shí)算法進(jìn)行改進(jìn),設(shè)計(jì)了適用于能源互聯(lián)網(wǎng)的發(fā)用電量權(quán)益共識(shí)機(jī)制(proof of electrical output & load,PoEOL),但該算法沒(méi)有解決PoS類共識(shí)算法可能出現(xiàn)的單個(gè)節(jié)點(diǎn)權(quán)力過(guò)大導(dǎo)致系統(tǒng)中心化的問(wèn)題。文獻(xiàn)[10]針對(duì)可再生能源生產(chǎn)領(lǐng)域,提出了一種能源效率幣(energy efficiency coin,EEcoin),使可再生能源的建設(shè)能夠被有效追蹤。并基于股份委托證明機(jī)制(delegated proof of stake,DPoS)作出了算法改進(jìn),降低了共識(shí)過(guò)程造成的能源消耗。文獻(xiàn)[11]結(jié)合聯(lián)盟鏈應(yīng)用場(chǎng)景,提出了一種KRaft算法(Kademlia Raft),對(duì)Raft算法的領(lǐng)導(dǎo)者選舉流程與日志復(fù)制過(guò)程進(jìn)行了優(yōu)化,提高了算法的吞吐量與可擴(kuò)展性,但該算法無(wú)法實(shí)現(xiàn)拜占庭容錯(cuò)。從上述文獻(xiàn)可以看出,當(dāng)前已有研究大多都是針對(duì)適用于公有鏈的PoS類共識(shí)算法進(jìn)行改進(jìn),缺乏應(yīng)用于聯(lián)盟鏈能源交易的共識(shí)算法改進(jìn)。由于微電網(wǎng)電力交易存在頻繁且單筆量小的特性[4],產(chǎn)消者與消費(fèi)者之間的訂單數(shù)量多且雜亂[12],所以對(duì)交易中的系統(tǒng)吞吐量有著較高的要求,過(guò)低的交易吞吐量會(huì)對(duì)電力交易的及時(shí)性造成影響;且微電網(wǎng)電力市場(chǎng)的準(zhǔn)入門檻低,分布式電力產(chǎn)消者的個(gè)體趨利性較強(qiáng)[13],可能會(huì)出現(xiàn)竄改交易信息等惡意行為,不利于微電網(wǎng)交易安全高效地進(jìn)行,所以為微電網(wǎng)電力交易設(shè)計(jì)適合的共識(shí)機(jī)制就顯得尤為重要。

本文設(shè)計(jì)了適用于基于聯(lián)盟鏈微電網(wǎng)交易的共識(shí)機(jī)制。首先分析在聯(lián)盟鏈場(chǎng)景中常用的實(shí)用拜占庭容錯(cuò)PBFT[14]共識(shí)算法與分布式共識(shí)算法Raft[15]的優(yōu)缺點(diǎn)以及選擇Raft算法進(jìn)行改進(jìn)的原因。接著提出一種基于Raft改進(jìn)的多領(lǐng)導(dǎo)者拜占庭容錯(cuò)Raft共識(shí)算法MLB-Raft。為適應(yīng)聯(lián)盟鏈微電網(wǎng)交易高吞吐量的需求,該算法將原Raft的單一領(lǐng)導(dǎo)者機(jī)制修改為多領(lǐng)導(dǎo)者機(jī)制,并引入?yún)f(xié)調(diào)者作為中介,由領(lǐng)導(dǎo)者們并行提交不同的區(qū)塊,協(xié)調(diào)者進(jìn)行輪次切換工作;為提高聯(lián)盟鏈微電網(wǎng)交易系統(tǒng)的靈活性,再對(duì)原領(lǐng)導(dǎo)者選舉流程進(jìn)行改進(jìn),引入可驗(yàn)證隨機(jī)函數(shù)VRF實(shí)現(xiàn)領(lǐng)導(dǎo)者小組的選舉,當(dāng)領(lǐng)導(dǎo)者數(shù)量低于一定水平時(shí)便會(huì)觸發(fā)選舉,使領(lǐng)導(dǎo)者能在必要時(shí)讓位給其他節(jié)點(diǎn);最后為保證聯(lián)盟鏈微電網(wǎng)交易系統(tǒng)的數(shù)據(jù)安全性與穩(wěn)定性,將PBFT算法引入到算法共識(shí)過(guò)程中,判斷日志信息是否遭受到拜占庭節(jié)點(diǎn)的竄改,并將拜占庭領(lǐng)導(dǎo)者進(jìn)行標(biāo)記,由協(xié)調(diào)者進(jìn)行輪次切換時(shí)剔除該節(jié)點(diǎn)。

1 共識(shí)機(jī)制

1.1 PBFT共識(shí)算法

PBFT算法由Castro和Liskov于1999年提出[14],用于解決分布式系統(tǒng)的拜占庭容錯(cuò)問(wèn)題,能夠保證節(jié)點(diǎn)總數(shù)1/3的拜占庭容錯(cuò)率,其通信復(fù)雜度為O(n2),經(jīng)常被用作聯(lián)盟鏈的共識(shí)算法。

PBFT算法的具體流程包含請(qǐng)求(request)、預(yù)準(zhǔn)備(pre-prepare)、準(zhǔn)備(prepare)、提交(commit)和回復(fù)(reply)五個(gè)階段??蛻舳耸紫认蛑鞴?jié)點(diǎn)發(fā)送請(qǐng)求消息,主節(jié)點(diǎn)收到消息后便生成預(yù)準(zhǔn)備消息并廣播給所有的從節(jié)點(diǎn)。從節(jié)點(diǎn)接收到主節(jié)點(diǎn)發(fā)出的預(yù)準(zhǔn)備消息后進(jìn)行驗(yàn)證,驗(yàn)證通過(guò)則向所有節(jié)點(diǎn)發(fā)送準(zhǔn)備消息。當(dāng)從節(jié)點(diǎn)接收到除自己以外的2f個(gè)不同節(jié)點(diǎn)的有效準(zhǔn)備消息時(shí),向其他節(jié)點(diǎn)廣播確認(rèn)消息并收集其他節(jié)點(diǎn)傳來(lái)的確認(rèn)消息,當(dāng)收到2f+1條來(lái)自不同節(jié)點(diǎn)的確認(rèn)消息后,將該請(qǐng)求消息提交,并向客戶端發(fā)送回復(fù)消息??蛻舳耸盏絝+1條來(lái)自不同節(jié)點(diǎn)傳來(lái)的有效回復(fù)消息后,便認(rèn)為本次共識(shí)成功。PBFT算法的具體共識(shí)流程如圖1所示。

若從節(jié)點(diǎn)確認(rèn)主節(jié)點(diǎn)失效或成為拜占庭節(jié)點(diǎn)后,便會(huì)觸發(fā)視圖切換協(xié)議(view change)重新選取新的主節(jié)點(diǎn),該協(xié)議可確保當(dāng)主節(jié)點(diǎn)成為拜占庭節(jié)點(diǎn)時(shí),系統(tǒng)仍然可以正常的運(yùn)行,保證了系統(tǒng)的穩(wěn)定性。

但是PBFT算法也存在一定的問(wèn)題,雖然該算法不需要消耗大量的算力,但由于其O(n2)的通信復(fù)雜度,通信開(kāi)銷會(huì)隨著節(jié)點(diǎn)數(shù)量的增加而平方級(jí)增長(zhǎng),降低共識(shí)效率,影響系統(tǒng)的性能。另外PBFT算法的網(wǎng)絡(luò)結(jié)構(gòu)屬于靜態(tài)結(jié)構(gòu),若要?jiǎng)討B(tài)添加節(jié)點(diǎn),必須要重啟整個(gè)系統(tǒng),使系統(tǒng)的可用性難以保障[16]。因此單一的PBFT算法不能滿足基于聯(lián)盟鏈的微電網(wǎng)電力交易需求。

1.2 Raft共識(shí)算法

Raft算法由Ongaro等人[15]于2014年提出,該算法對(duì)比Paxos算法[17]更加易于理解和實(shí)現(xiàn),核心內(nèi)容由領(lǐng)導(dǎo)者選舉與日志復(fù)制兩部分組成。算法中的節(jié)點(diǎn)有領(lǐng)導(dǎo)者(leader)、候選者(candidate)與跟隨者(follower)三種角色,節(jié)點(diǎn)狀態(tài)會(huì)根據(jù)不同的條件進(jìn)行轉(zhuǎn)換。正常情況下,系統(tǒng)中僅有單個(gè)領(lǐng)導(dǎo)者節(jié)點(diǎn),其他節(jié)點(diǎn)均為跟隨者,領(lǐng)導(dǎo)者通過(guò)周期性的心跳維持與跟隨者的正常通信。當(dāng)跟隨者在超時(shí)狀態(tài)下仍未收到領(lǐng)導(dǎo)者的心跳消息時(shí),其狀態(tài)轉(zhuǎn)變?yōu)楹蜻x者,并向其他節(jié)點(diǎn)發(fā)送請(qǐng)求投票信息,申請(qǐng)成為下一任領(lǐng)導(dǎo)者,若該節(jié)點(diǎn)在規(guī)定時(shí)間內(nèi)收到了半數(shù)以上節(jié)點(diǎn)的投票,其狀態(tài)轉(zhuǎn)變?yōu)轭I(lǐng)導(dǎo)者。Raft算法節(jié)點(diǎn)狀態(tài)轉(zhuǎn)變過(guò)程如圖2所示。

在日志復(fù)制階段,領(lǐng)導(dǎo)者負(fù)責(zé)將所有的交易信息打包生成區(qū)塊,并向所有的跟隨者廣播,當(dāng)其收到半數(shù)以上的跟隨者回復(fù)后,領(lǐng)導(dǎo)者將確認(rèn)信息發(fā)送給所有節(jié)點(diǎn),該區(qū)塊便成功上鏈。

Raft算法的通信復(fù)雜度為O(n),其共識(shí)效率較高,算法擴(kuò)展性較好,當(dāng)系統(tǒng)內(nèi)宕機(jī)節(jié)點(diǎn)不超過(guò)一半時(shí)仍然可以正常工作,但是Raft算法不支持拜占庭容錯(cuò),不能保證微電網(wǎng)電力交易的系統(tǒng)安全性。

1.3 微電網(wǎng)交易與算法關(guān)聯(lián)分析

由于微電網(wǎng)電力交易存在訂單數(shù)量多、交易頻率高等特點(diǎn),對(duì)交易吞吐量性能有較高的要求;此外在交易過(guò)程中惡意用戶還可能出現(xiàn)竄改交易信息的行為,破壞交易的安全性,因此所使用的共識(shí)算法應(yīng)滿足高吞吐量、交易時(shí)延低及支持拜占庭容錯(cuò)等需求。當(dāng)前應(yīng)用于聯(lián)盟鏈中的主流共識(shí)算法有兩類:a)拜占庭容錯(cuò)共識(shí)算法,代表性的是PBFT算法;b)非拜占庭容錯(cuò)共識(shí)算法,代表性的是Paxos與Raft算法。PBFT算法雖支持拜占庭容錯(cuò),但其屬于靜態(tài)網(wǎng)絡(luò)結(jié)構(gòu),且通信開(kāi)銷大,不能很好地滿足微電網(wǎng)電力交易的需求。Paxos算法結(jié)構(gòu)復(fù)雜,實(shí)現(xiàn)難度大,而Raft算法較其更加易于理解和實(shí)現(xiàn),且共識(shí)效率較高,算法擴(kuò)展性較好,僅存在不支持拜占庭容錯(cuò)的問(wèn)題。因此若能解決Raft算法的拜占庭容錯(cuò)性問(wèn)題,并對(duì)Raft算法性能做進(jìn)一步優(yōu)化,就能更好地適用于基于聯(lián)盟鏈的微電網(wǎng)電力交易。

2 MLB-Raft共識(shí)算法

本文針對(duì)聯(lián)盟鏈微電網(wǎng)交易中高吞吐量、低交易時(shí)延與拜占庭容錯(cuò)等需求,結(jié)合PBFT算法的拜占庭容錯(cuò)與Raft算法的高效性與可擴(kuò)展性,提出了一種多領(lǐng)導(dǎo)者拜占庭容錯(cuò)Raft共識(shí)算法MLB-Raft。對(duì)Raft算法的領(lǐng)導(dǎo)者機(jī)制進(jìn)行改進(jìn),系統(tǒng)中選舉多領(lǐng)導(dǎo)者,通過(guò)并行狀態(tài)機(jī)的思想,使多領(lǐng)導(dǎo)者并行提交區(qū)塊以提高系統(tǒng)的吞吐量,將PBFT算法的共識(shí)流程進(jìn)行簡(jiǎn)化并應(yīng)用于系統(tǒng)的區(qū)塊復(fù)制過(guò)程中,避免日志信息遭到拜占庭節(jié)點(diǎn)竄改。另外引入?yún)f(xié)調(diào)者節(jié)點(diǎn)用于管理領(lǐng)導(dǎo)者與算法的共識(shí)流程。

2.1 系統(tǒng)框架

MLB-Raft算法的系統(tǒng)框架如圖3所示,包含聯(lián)盟鏈電力交易監(jiān)管中心、客戶端、協(xié)調(diào)者、領(lǐng)導(dǎo)者、候選者、跟隨者和拜占庭節(jié)點(diǎn)七個(gè)實(shí)體。

a)聯(lián)盟鏈電力交易監(jiān)管中心。該實(shí)體為國(guó)家電力職能部門,負(fù)責(zé)電力交易的監(jiān)督與管理,以及系統(tǒng)中協(xié)調(diào)者的指派。

b)客戶端。該實(shí)體為參與電力交易的用戶,其作用是將其買賣電力的交易信息提交至交易系統(tǒng)中,以滿足自身的需求。

c)協(xié)調(diào)者。該實(shí)體由聯(lián)盟鏈電力交易監(jiān)管中心指派,負(fù)責(zé)維護(hù)系統(tǒng)中共識(shí)算法的平穩(wěn)運(yùn)行,如領(lǐng)導(dǎo)者選舉、協(xié)助共識(shí)、任期輪次切換、移除拜占庭節(jié)點(diǎn)等任務(wù)。

d)領(lǐng)導(dǎo)者。該實(shí)體由協(xié)調(diào)者在候選者中進(jìn)行選舉產(chǎn)生,通常系統(tǒng)中同時(shí)存在多名領(lǐng)導(dǎo)者,共同負(fù)責(zé)在每輪任期提交區(qū)塊、完成共識(shí)流程與區(qū)塊復(fù)制。

e)候選者。該實(shí)體為跟隨者至領(lǐng)導(dǎo)者的過(guò)渡角色,在領(lǐng)導(dǎo)者選舉過(guò)程中產(chǎn)生,若選舉成功則成為領(lǐng)導(dǎo)者節(jié)點(diǎn),選舉失敗則成為跟隨者節(jié)點(diǎn)。

f)跟隨者。該實(shí)體占系統(tǒng)中節(jié)點(diǎn)數(shù)量的大多數(shù),未成功競(jìng)選領(lǐng)導(dǎo)者的節(jié)點(diǎn)均為跟隨者節(jié)點(diǎn),負(fù)責(zé)參與系統(tǒng)共識(shí)過(guò)程,接收領(lǐng)導(dǎo)者的信息并將區(qū)塊復(fù)制到自身日志中。

g)拜占庭節(jié)點(diǎn)。該實(shí)體為系統(tǒng)中作出惡意行為的節(jié)點(diǎn),通過(guò)竄改信息的方式對(duì)系統(tǒng)進(jìn)行破壞,其身份可能是領(lǐng)導(dǎo)者,也可能是跟隨者。當(dāng)拜占庭節(jié)點(diǎn)被系統(tǒng)中其他節(jié)點(diǎn)發(fā)現(xiàn)后,對(duì)其進(jìn)行標(biāo)記,由協(xié)調(diào)者在輪次切換時(shí)將其剔出系統(tǒng)。

2.2 改進(jìn)的領(lǐng)導(dǎo)者選舉

2.2.1 領(lǐng)導(dǎo)者節(jié)點(diǎn)群選舉方法

為實(shí)現(xiàn)多領(lǐng)導(dǎo)者的選舉,本文在領(lǐng)導(dǎo)者選舉流程中引入了可驗(yàn)證隨機(jī)函數(shù)VRF[18],它是Silvio等人在1999年提出的一種具有非交互零知識(shí)證明特點(diǎn)的偽隨機(jī)數(shù)生成函數(shù)。在領(lǐng)導(dǎo)者選舉過(guò)程中,使用VRF函數(shù)實(shí)現(xiàn)加密抽簽選取領(lǐng)導(dǎo)者節(jié)點(diǎn)群,具體的選取流程如圖4所示。

選舉開(kāi)始后所有節(jié)點(diǎn)均成為候選者,由系統(tǒng)設(shè)定范圍值range,如設(shè)置range的值為0.2,那么僅有使用VRF函數(shù)計(jì)算出隨機(jī)數(shù)在[0,0.2]的節(jié)點(diǎn)才能加入領(lǐng)導(dǎo)者節(jié)點(diǎn)群,由于VRF輸出的隨機(jī)變量來(lái)自均勻分布,所以預(yù)期成功率幾乎與范圍值相同,成為領(lǐng)導(dǎo)者節(jié)點(diǎn)群的節(jié)點(diǎn)數(shù)占總節(jié)點(diǎn)的20%,其余節(jié)點(diǎn)成為跟隨者。生成密鑰的加密算法選擇Ed25519簽名算法,節(jié)點(diǎn)i計(jì)算隨機(jī)數(shù)的過(guò)程如下:

a)節(jié)點(diǎn)i通過(guò)Ed25519簽名算法生成公鑰pki與私鑰ski。

b)節(jié)點(diǎn)i輸入hash與自己的私鑰ski,使用VRF()函數(shù)生成隨機(jī)數(shù)ni與身份證明pi。其中hash為對(duì)上一個(gè)區(qū)塊的區(qū)塊號(hào)和任期term進(jìn)行哈希得到的hash值,VRF()函數(shù)如式(1)所示。

VRF(hash,sk)=(n,p)(1)

c)其他節(jié)點(diǎn)使用VRF_proof()函數(shù)對(duì)節(jié)點(diǎn)i生成的隨機(jī)數(shù)ni進(jìn)行驗(yàn)證,輸入節(jié)點(diǎn)i的公鑰pki、哈希值hash、隨機(jī)數(shù)ni與身份證明pi。VRF_proof()函數(shù)如式(2)所示。

VRF_proof(pk,hash,n,p)=true∨false(2)

所有節(jié)點(diǎn)完成VRF選舉提交后,會(huì)繼續(xù)在candidate候選階段等待能否成為領(lǐng)導(dǎo)者的判定,協(xié)調(diào)者對(duì)各節(jié)點(diǎn)通過(guò)VRF函數(shù)計(jì)算出的隨機(jī)數(shù)進(jìn)行收集,完成收集后向它們返回結(jié)果result。如果協(xié)調(diào)者統(tǒng)計(jì)的節(jié)點(diǎn)中有隨機(jī)數(shù)符合范圍條件且數(shù)值相同的多個(gè)節(jié)點(diǎn),則根據(jù)先來(lái)先得的原則成為領(lǐng)導(dǎo)者。result值為1代表該節(jié)點(diǎn)成為領(lǐng)導(dǎo)者;result值為2表示該節(jié)點(diǎn)當(dāng)前不在領(lǐng)導(dǎo)者節(jié)點(diǎn)選擇范圍,不具備成為領(lǐng)導(dǎo)者節(jié)點(diǎn)的資格,如節(jié)點(diǎn)任期數(shù)低于當(dāng)前任期等情況;result值為3表示該節(jié)點(diǎn)未能成為領(lǐng)導(dǎo)者節(jié)點(diǎn)。未成為領(lǐng)導(dǎo)者節(jié)點(diǎn)的其余節(jié)點(diǎn)從candidate候選狀態(tài)變?yōu)閒ollower狀態(tài),成為跟隨者節(jié)點(diǎn)。

當(dāng)VRF選舉完成后,協(xié)調(diào)者會(huì)向所有節(jié)點(diǎn)發(fā)送領(lǐng)導(dǎo)者節(jié)點(diǎn)群信息,廣播changeleader請(qǐng)求給所有節(jié)點(diǎn),并更新目前的任期以及領(lǐng)導(dǎo)者節(jié)點(diǎn)群的全部ID信息。若VRF選舉超時(shí)沒(méi)有選舉決議,則增加任期term的期限,開(kāi)始新的VRF選舉。

2.2.2 重新觸發(fā)選舉條件

Raft算法中,當(dāng)跟隨者節(jié)點(diǎn)未在限定時(shí)間內(nèi)接收到來(lái)自領(lǐng)導(dǎo)者的心跳信息,即可判定領(lǐng)導(dǎo)者下線,重新選舉領(lǐng)導(dǎo)者。但在多領(lǐng)導(dǎo)者方案中,沿用Raft重新選舉領(lǐng)導(dǎo)者節(jié)點(diǎn)的方法不可行。假設(shè)個(gè)別領(lǐng)導(dǎo)者因?yàn)椴煌蛲顺鲱I(lǐng)導(dǎo)者集群,但系統(tǒng)中依然存在領(lǐng)導(dǎo)者節(jié)點(diǎn),無(wú)法觸發(fā)重新選舉領(lǐng)導(dǎo)者節(jié)點(diǎn)的行為。并且隨著領(lǐng)導(dǎo)者節(jié)點(diǎn)總數(shù)的降低,系統(tǒng)的吞吐量會(huì)隨之下降,從而影響系統(tǒng)性能。為解決該問(wèn)題,本算法作出如下改進(jìn):

由協(xié)調(diào)者設(shè)置心跳信息限定時(shí)間(heart time,Ht)和領(lǐng)導(dǎo)者心跳正??倲?shù)(heart number,Hn)及其警戒值(heart warning,Hw),各領(lǐng)導(dǎo)者節(jié)點(diǎn)需在每次Ht結(jié)束前向協(xié)調(diào)者發(fā)送自己的心跳信息,證明自己的狀態(tài)正常。若協(xié)調(diào)者在Ht時(shí)間內(nèi)未接收到某個(gè)領(lǐng)導(dǎo)者的心跳信息,則認(rèn)定該節(jié)點(diǎn)發(fā)生故障,更新Hn的值,并在進(jìn)行下一次輪次切換時(shí)刪除領(lǐng)導(dǎo)者名單中該領(lǐng)導(dǎo)者節(jié)點(diǎn)的信息。當(dāng)Hn的值低于Hw時(shí),代表系統(tǒng)中領(lǐng)導(dǎo)者的數(shù)量過(guò)低,重新啟動(dòng)領(lǐng)導(dǎo)者選舉,以保證算法的正常運(yùn)行。

2.2.3 節(jié)點(diǎn)可信性分析

沿用Raft算法的思想,系統(tǒng)完成領(lǐng)導(dǎo)者選舉后,由領(lǐng)導(dǎo)者節(jié)點(diǎn)群負(fù)責(zé)處理客戶端的請(qǐng)求,各跟隨者節(jié)點(diǎn)會(huì)完全相信領(lǐng)導(dǎo)者,并直接響應(yīng)來(lái)自領(lǐng)導(dǎo)者的消息,完成MLB-Raft算法共識(shí)流程。由于跟隨者節(jié)點(diǎn)對(duì)領(lǐng)導(dǎo)者節(jié)點(diǎn)是完全信任的,所以當(dāng)出現(xiàn)拜占庭節(jié)點(diǎn)惡意竄改信息時(shí),由算法的共識(shí)流程來(lái)保證區(qū)塊信息的正確傳遞與提交,保證系統(tǒng)的共識(shí)效率與安全性。

2.3 MLB-Raft算法流程

2.3.1 并行提交區(qū)塊

為更好地利用多領(lǐng)導(dǎo)者的并行性,MLB-Raft算法對(duì)領(lǐng)導(dǎo)者提交區(qū)塊的流程作出了改進(jìn),引入了并行狀態(tài)機(jī)的思想,它由一個(gè)主狀態(tài)機(jī)和多個(gè)子狀態(tài)機(jī)組成,每個(gè)子狀態(tài)機(jī)可以獨(dú)立地運(yùn)行,也可以同時(shí)執(zhí)行。當(dāng)一個(gè)子狀態(tài)機(jī)完成其任務(wù)時(shí),它會(huì)通知主狀態(tài)機(jī),主狀態(tài)機(jī)會(huì)根據(jù)需要切換到下一個(gè)狀態(tài),該機(jī)制可以提高系統(tǒng)的并發(fā)性和效率。在MLB-Raft算法中,由協(xié)調(diào)者擔(dān)任主狀態(tài)機(jī)的角色,負(fù)責(zé)領(lǐng)導(dǎo)者批次劃分、區(qū)塊序號(hào)分配與輪次切換工作;各領(lǐng)導(dǎo)者擔(dān)任子狀態(tài)機(jī)的角色,負(fù)責(zé)區(qū)塊提交與共識(shí)工作。

如圖5所示,各領(lǐng)導(dǎo)者依據(jù)協(xié)調(diào)者劃分的批次順序,按照協(xié)調(diào)者分配的區(qū)塊序號(hào)進(jìn)行并行提交,每一輪次中每個(gè)領(lǐng)導(dǎo)者只提交一個(gè)區(qū)塊,每個(gè)區(qū)塊中都包含該領(lǐng)導(dǎo)者的簽名和該區(qū)塊的序號(hào)Si。其中簽名用于確保消息的完整性和標(biāo)記區(qū)塊來(lái)源,序號(hào)Si是本區(qū)塊的目標(biāo)狀態(tài)機(jī)標(biāo)識(shí)符(state machine identifier),其作用是確保各個(gè)子狀態(tài)機(jī)(領(lǐng)導(dǎo)者)的執(zhí)行不會(huì)相互干擾。當(dāng)該輪次中的所有區(qū)塊都達(dá)成共識(shí)后,各領(lǐng)導(dǎo)者便向協(xié)調(diào)者發(fā)送成功同步消息successsync,協(xié)調(diào)者在接收到足夠的successsync消息后,將本輪交易中的各區(qū)塊打包成區(qū)塊集合并提交,區(qū)塊集合的結(jié)構(gòu)由區(qū)塊號(hào)、時(shí)間戳、上一輪區(qū)塊哈希、本輪區(qū)塊哈希、打包的交易及輪次、序列號(hào)等組成。接著協(xié)調(diào)者廣播任期切換消息TC,系統(tǒng)進(jìn)入下一輪次區(qū)塊提交中。

2.3.2 共識(shí)與區(qū)塊復(fù)制

為實(shí)現(xiàn)系統(tǒng)的抗拜占庭節(jié)點(diǎn)的特性,MLB-Raft將PBFT的共識(shí)流程進(jìn)行簡(jiǎn)化并應(yīng)用到系統(tǒng)的區(qū)塊復(fù)制過(guò)程中,防止拜占庭節(jié)點(diǎn)作出惡意行為,保障系統(tǒng)的穩(wěn)定性。另外,PBFT現(xiàn)存的問(wèn)題也不會(huì)對(duì)系統(tǒng)性能造成影響,一是通信開(kāi)銷會(huì)隨著節(jié)點(diǎn)數(shù)量的增加而增長(zhǎng),本文算法針對(duì)一致性協(xié)議進(jìn)行簡(jiǎn)化,因此算法的通信開(kāi)銷對(duì)比PBFT會(huì)顯著降低;二是PBFT無(wú)法動(dòng)態(tài)添加節(jié)點(diǎn),本文算法所提出的多領(lǐng)導(dǎo)者機(jī)制不存在動(dòng)態(tài)添加領(lǐng)導(dǎo)者的過(guò)程,僅有對(duì)整個(gè)領(lǐng)導(dǎo)者節(jié)點(diǎn)群進(jìn)行重新選舉的操作,避免了該問(wèn)題。MLB-Raft的區(qū)塊復(fù)制共識(shí)過(guò)程分為多個(gè)階段,包括request、preprepare、prepare、commit、commitreply、successsync和termchange&reply,具體流程如圖6所示。

a)request(請(qǐng)求)。本階段是客戶端向系統(tǒng)提交請(qǐng)求的起點(diǎn),客戶端將其請(qǐng)求信息發(fā)送至系統(tǒng)中的領(lǐng)導(dǎo)者消息池,由協(xié)調(diào)者進(jìn)行領(lǐng)導(dǎo)者節(jié)點(diǎn)群的交易區(qū)塊分配。

b)preprepare(預(yù)準(zhǔn)備)。當(dāng)每個(gè)領(lǐng)導(dǎo)者接收到客戶端請(qǐng)求后,它將會(huì)創(chuàng)建一個(gè)新的區(qū)塊條目,并將自己分配到的內(nèi)容附加到整個(gè)新的區(qū)塊條目中,設(shè)置該區(qū)塊條目的狀態(tài)為preprepare。下一步領(lǐng)導(dǎo)者采用BLS簽名方案對(duì)消息簽名,以確保消息的完整性和來(lái)源。完成以上操作后,將此preprepare消息廣播給其他節(jié)點(diǎn),通知它們新請(qǐng)求的到來(lái)。

BLS簽名(Boneh-Lynn-Shacham) [19]是一種基于橢圓曲線密碼學(xué)的數(shù)字簽名方案。此處采用BLS簽名的原因是其具有聚合性和高效性的優(yōu)點(diǎn),這些優(yōu)點(diǎn)使其成為PBFT中一個(gè)有力的工具,有助于提高系統(tǒng)性能、可靠性和安全性。這種簽名機(jī)制減少了通信和計(jì)算開(kāi)銷,有助于確保在拜占庭故障情況下的可靠性。

c)prepare(準(zhǔn)備)。其他節(jié)點(diǎn)收到領(lǐng)導(dǎo)者的preprepare消息后,先驗(yàn)證簽名,確認(rèn)消息的來(lái)源和完整性。然后它們將preprepare消息添加到自身的本地日志中,并將其狀態(tài)從preprepare更改為prepare。接著各節(jié)點(diǎn)將prepare消息廣播給各領(lǐng)導(dǎo)者節(jié)點(diǎn),這是為了向各領(lǐng)導(dǎo)者節(jié)點(diǎn)表明它們已經(jīng)達(dá)成了對(duì)該請(qǐng)求的初始共識(shí)。

d)commit(提交)。當(dāng)一個(gè)領(lǐng)導(dǎo)者節(jié)點(diǎn)收到來(lái)自多數(shù)派節(jié)點(diǎn)的prepare消息后,它將再次驗(yàn)證消息的完整性與BLS簽名,并將prepare消息添加到它的本地日志中,將狀態(tài)從prepare更改為commit。然后該節(jié)點(diǎn)把commit消息廣播給其他節(jié)點(diǎn),表明它已經(jīng)對(duì)該請(qǐng)求達(dá)成了共識(shí)。若節(jié)點(diǎn)接收到來(lái)自多數(shù)派節(jié)點(diǎn)的commit消息后,便可確認(rèn)該請(qǐng)求已經(jīng)被多數(shù)派節(jié)點(diǎn)所接受。

e)commitreply(提交回復(fù))。當(dāng)其他節(jié)點(diǎn)收到來(lái)自主節(jié)點(diǎn)的commit消息后,它將最后的消息添加到它們的本地日志中,表明該區(qū)塊可以同步。當(dāng)主節(jié)點(diǎn)收到來(lái)自多數(shù)派節(jié)點(diǎn)的commitresponse消息后,它可以確認(rèn)該請(qǐng)求已經(jīng)被多數(shù)派節(jié)點(diǎn)接受。

f)successsync(成功同步)。本階段是由領(lǐng)導(dǎo)者節(jié)點(diǎn)對(duì)協(xié)調(diào)者節(jié)點(diǎn)發(fā)送,對(duì)于領(lǐng)導(dǎo)者節(jié)點(diǎn),一旦節(jié)點(diǎn)確認(rèn)請(qǐng)求已被多數(shù)派節(jié)點(diǎn)接受,領(lǐng)導(dǎo)者將向協(xié)調(diào)者發(fā)送successsync的消息,等待協(xié)調(diào)者確認(rèn),并向協(xié)調(diào)者說(shuō)明是否作為之后的領(lǐng)導(dǎo)者繼續(xù)完成任務(wù)。

g)termchange & reply(任期切換與響應(yīng))。當(dāng)本任期的領(lǐng)導(dǎo)者節(jié)點(diǎn)的所有跟隨者節(jié)點(diǎn)都正常地被prepare、commit等流程填充,且滿足系統(tǒng)中最小共識(shí)節(jié)點(diǎn)數(shù)k的范圍,將向協(xié)調(diào)者發(fā)送一個(gè)成功同步消息successsync,協(xié)調(diào)者希望收到所有領(lǐng)導(dǎo)者節(jié)點(diǎn)的successsync消息,以證明所有的區(qū)塊都在多數(shù)派節(jié)點(diǎn)上達(dá)成了共識(shí)。接著協(xié)調(diào)者會(huì)驗(yàn)證每個(gè)領(lǐng)導(dǎo)者節(jié)點(diǎn)的successsync消息中所有節(jié)點(diǎn)對(duì)其的簽名,驗(yàn)證成功則證明所有的領(lǐng)導(dǎo)者節(jié)點(diǎn)均為誠(chéng)實(shí)節(jié)點(diǎn)。一旦協(xié)調(diào)者收到足夠的信息,它向全網(wǎng)廣播一個(gè)任期切換消息(term change, TC),其中包括下一個(gè)任期(t+1)的任期號(hào)、t+1輪的新領(lǐng)導(dǎo)者以及t+1輪為這些領(lǐng)導(dǎo)者分配的新的序列號(hào)。當(dāng)數(shù)據(jù)全部上鏈處理成功之后,協(xié)調(diào)者向客戶端發(fā)送一個(gè)響應(yīng),告知客戶端請(qǐng)求已成功處理,客戶端接收到響應(yīng)后,將知道其請(qǐng)求已經(jīng)在系統(tǒng)中達(dá)成了共識(shí),至此一輪共識(shí)結(jié)束。

2.3.3 安全性分析

2.3.2節(jié)步驟d)中的多數(shù)派節(jié)點(diǎn)是指系統(tǒng)中的誠(chéng)實(shí)節(jié)點(diǎn),其概念如下:在PBFT中,共識(shí)的核心思想是通過(guò)節(jié)點(diǎn)之間的互相通信來(lái)達(dá)成一致,在一個(gè)由3f+1個(gè)節(jié)點(diǎn)構(gòu)成的系統(tǒng)中,只要有不少于2f+1個(gè)非惡意節(jié)點(diǎn)正常工作,該系統(tǒng)就能達(dá)成一致性。而在本文的并行多領(lǐng)導(dǎo)者的場(chǎng)景下,要確保整個(gè)系統(tǒng)在最后對(duì)于跟隨者節(jié)點(diǎn)可以有2f+1的節(jié)點(diǎn)數(shù)目在每個(gè)主節(jié)點(diǎn)上都達(dá)成共識(shí),就需要考慮拜占庭節(jié)點(diǎn)的數(shù)量,以及對(duì)于每個(gè)領(lǐng)導(dǎo)者節(jié)點(diǎn)而言的最小共識(shí)節(jié)點(diǎn)數(shù)。為更好地介紹概念,本文設(shè)定以下參數(shù):n代表總節(jié)點(diǎn)數(shù),包括領(lǐng)導(dǎo)者節(jié)點(diǎn)和跟隨者節(jié)點(diǎn);fe0c2b4d6b605e5314483ccdc6c8998f5代表最大拜占庭節(jié)點(diǎn)數(shù)量;m代表領(lǐng)導(dǎo)者節(jié)點(diǎn)數(shù)量;k代表每個(gè)領(lǐng)導(dǎo)者節(jié)點(diǎn)需要的最小共識(shí)節(jié)點(diǎn)數(shù)。

系統(tǒng)要確保在每個(gè)領(lǐng)導(dǎo)者節(jié)點(diǎn)的共識(shí)結(jié)果中,對(duì)于所有n個(gè)總節(jié)點(diǎn)來(lái)說(shuō),至少有2f+1的節(jié)點(diǎn)是共識(shí)的。所以需要找到一個(gè)合適的k,這樣即使在最壞的情況下,即有f個(gè)拜占庭節(jié)點(diǎn)存在時(shí),系統(tǒng)也能保證正確的共識(shí)。

由于各領(lǐng)導(dǎo)者的跟隨者節(jié)點(diǎn)是共享的,所以在這種情況下,就需要確保系統(tǒng)能夠容忍f個(gè)拜占庭節(jié)點(diǎn),并且在每個(gè)領(lǐng)導(dǎo)者節(jié)點(diǎn)上都能達(dá)成共識(shí)。這意味著每個(gè)領(lǐng)導(dǎo)者節(jié)點(diǎn)都需要至少2f+1個(gè)節(jié)點(diǎn)的支持來(lái)達(dá)成共識(shí),以確保即使在f個(gè)節(jié)點(diǎn)作惡的情況下,仍有f+1個(gè)誠(chéng)實(shí)節(jié)點(diǎn)支持正確的決策。在這里本文假設(shè)惡意節(jié)點(diǎn)發(fā)生作惡行為時(shí),是對(duì)每個(gè)領(lǐng)導(dǎo)者節(jié)點(diǎn)都會(huì)做惡。因6ceea9a1fef5ed8941d1a3bc1ccf90c7此對(duì)于每個(gè)領(lǐng)導(dǎo)者節(jié)點(diǎn)而言的最小共識(shí)節(jié)點(diǎn)數(shù)k的范圍如式(3)所示。

k≥2f+1(3)

該條件確保了每個(gè)領(lǐng)導(dǎo)者節(jié)點(diǎn)都能與足夠多的誠(chéng)實(shí)節(jié)點(diǎn)達(dá)成共識(shí),從而使整個(gè)系統(tǒng)的共識(shí)是有效的。同時(shí),由于跟隨者節(jié)點(diǎn)是共享的,不需要為每個(gè)領(lǐng)導(dǎo)者節(jié)點(diǎn)分別計(jì)算2f+1個(gè)誠(chéng)實(shí)節(jié)點(diǎn),整個(gè)系統(tǒng)只需要確保有足夠的誠(chéng)實(shí)節(jié)點(diǎn)來(lái)支持所有的領(lǐng)導(dǎo)者節(jié)點(diǎn)即可。

為了整個(gè)系統(tǒng)達(dá)成共識(shí),需要的總誠(chéng)實(shí)節(jié)點(diǎn)數(shù)應(yīng)至少是2f+1,這是因?yàn)楸疚闹屑僭O(shè)拜占庭節(jié)點(diǎn)最多有f個(gè),而共識(shí)至少需要f+1個(gè)誠(chéng)實(shí)節(jié)點(diǎn)來(lái)克服這些拜占庭節(jié)點(diǎn)。然而由于領(lǐng)導(dǎo)者節(jié)點(diǎn)也可能是拜占庭節(jié)點(diǎn),需要確保即使所有的領(lǐng)導(dǎo)者節(jié)點(diǎn)都是惡意的,共識(shí)過(guò)程也能正常進(jìn)行。這意味著需要至少m+f個(gè)誠(chéng)實(shí)節(jié)點(diǎn)來(lái)保證至少有一個(gè)領(lǐng)導(dǎo)者節(jié)點(diǎn)可以達(dá)成正確的共識(shí)。因此,總節(jié)點(diǎn)數(shù)n的范圍如式(4)所示。

n≥m+f+(2f+1)(4)

這樣即使所有的領(lǐng)導(dǎo)者節(jié)點(diǎn)都是拜占庭節(jié)點(diǎn),系統(tǒng)中仍然有足夠數(shù)量的誠(chéng)實(shí)跟隨者節(jié)點(diǎn)來(lái)達(dá)成共識(shí),這為系統(tǒng)提供了一個(gè)安全的下界。

2.3.4 拜占庭領(lǐng)導(dǎo)者處理

在2.3.2節(jié)的步驟f)任期切換與響應(yīng)中,若協(xié)調(diào)者在規(guī)定時(shí)間內(nèi)未收到所有領(lǐng)導(dǎo)者節(jié)點(diǎn)的successsync消息,或是有惡意的successsync簽名,則可認(rèn)定對(duì)應(yīng)的領(lǐng)導(dǎo)者節(jié)點(diǎn)為拜占庭領(lǐng)導(dǎo)者(Byzantine leader),需要采取措施對(duì)其進(jìn)行處理。

在這種情況下系統(tǒng)會(huì)啟動(dòng)復(fù)雜輪次切換,首先將拜占庭領(lǐng)導(dǎo)者被分配的序列號(hào)的位置提交一個(gè)特殊的空塊,對(duì)該節(jié)點(diǎn)進(jìn)行標(biāo)記。然后系統(tǒng)觸發(fā)視圖切換,視圖切換流程圖7所示,切換至view_new=view+1的新視圖,并相互廣播viewchange包。協(xié)調(diào)者收集滿在視圖view_new上的2f+1個(gè)viewchange包后,將自己的view切換為view_new,將view_new對(duì)跟隨者節(jié)點(diǎn)總數(shù)進(jìn)行取模運(yùn)算,得到新的領(lǐng)導(dǎo)者節(jié)點(diǎn)繼續(xù)對(duì)拜占庭領(lǐng)導(dǎo)者的區(qū)塊進(jìn)行提交。

完成本輪的工作后,協(xié)調(diào)者廣播一個(gè)任期切換消息TC,其中包括下一個(gè)任期(t+1)的任期號(hào)、t+1輪的領(lǐng)導(dǎo)者集合,以及為每個(gè)領(lǐng)導(dǎo)者分配的新的序列號(hào),同時(shí)將上一輪的拜占庭領(lǐng)導(dǎo)者剔除,剔除節(jié)點(diǎn)全網(wǎng)廣播。這種機(jī)制確保了MLB-Raft共識(shí)算法在輪次切換時(shí)能夠處理不同情況,包括正常情況和拜占庭情況,以維護(hù)系統(tǒng)的穩(wěn)定性和一致性。

3 基于MLB-Raft算法的微電網(wǎng)電力交易流程

應(yīng)用本文MLB-Raft進(jìn)行微電網(wǎng)電力交易,分為身份認(rèn)證階段、領(lǐng)導(dǎo)者選舉階段和交易執(zhí)行階段三個(gè)階段。

a)身份認(rèn)證階段。本階段將進(jìn)行交易前的身份注冊(cè)工作,由聯(lián)盟鏈電力交易監(jiān)管中心指派微電網(wǎng)所在地的管理部門擔(dān)任協(xié)調(diào)者,負(fù)責(zé)處理交易過(guò)程中的系統(tǒng)共識(shí)、領(lǐng)導(dǎo)者選舉及拜占庭節(jié)點(diǎn)移除等工作。新用戶加入微電網(wǎng)交易平臺(tái)進(jìn)行電力交易,須在聯(lián)盟鏈中進(jìn)行身份注冊(cè),將各自的身份信息提交至聯(lián)盟鏈電力交易監(jiān)管中心進(jìn)行審核,審核通過(guò)后完成注冊(cè)。

b)領(lǐng)導(dǎo)者選舉階段。本階段將使用VRF函數(shù)進(jìn)行微電網(wǎng)電力交易的領(lǐng)導(dǎo)者選舉,所有微電網(wǎng)電力交易用戶節(jié)點(diǎn)均成為候選者,通過(guò)Ed25519簽名算法生成公鑰pk與私鑰sk,接著使用VRF()函數(shù)輸入私鑰sk生成隨機(jī)數(shù)n與身份證明p,其他節(jié)點(diǎn)使用VRF_proof()函數(shù)對(duì)某節(jié)點(diǎn)生成的隨機(jī)數(shù)n進(jìn)行驗(yàn)證,協(xié)調(diào)者對(duì)各節(jié)點(diǎn)的隨機(jī)數(shù)n進(jìn)行收集,并根據(jù)系統(tǒng)設(shè)置的范圍值range與節(jié)點(diǎn)情況返回選舉結(jié)果,更新目前的任期以及領(lǐng)導(dǎo)者節(jié)點(diǎn)群的全部ID信息。成為領(lǐng)導(dǎo)者的用戶節(jié)點(diǎn)身份更新為領(lǐng)導(dǎo)者,其他選舉失敗的用戶節(jié)點(diǎn)身份更新為跟隨者。

c)交易執(zhí)行階段。本階段由微電網(wǎng)電力交易用戶提交電力交易至領(lǐng)導(dǎo)者消息池,協(xié)調(diào)者為各領(lǐng)導(dǎo)者節(jié)點(diǎn)分配交易區(qū)塊,領(lǐng)導(dǎo)者節(jié)點(diǎn)群并行提交區(qū)塊;完成提交后系統(tǒng)進(jìn)行區(qū)塊共識(shí)與復(fù)制流程,待協(xié)調(diào)者接收并驗(yàn)證各領(lǐng)導(dǎo)者的successsync消息;當(dāng)數(shù)據(jù)全部上鏈處理成功之后,協(xié)調(diào)者向全網(wǎng)廣播任期切換消息TC,剔除共識(shí)過(guò)程中出現(xiàn)的拜占庭節(jié)點(diǎn),并向微電網(wǎng)電力交易用戶發(fā)送一個(gè)響應(yīng),告知其交易請(qǐng)求已成功處理,至此完成一次微電網(wǎng)電力交易。

4 仿真實(shí)驗(yàn)

本文通過(guò)Go語(yǔ)言實(shí)現(xiàn)MLB-Raft、PBFT、Raft、KRaft[11]及rbRaft[20],使用線程監(jiān)聽(tīng)不同的端口代替節(jié)點(diǎn),并開(kāi)啟多個(gè)線程模擬共識(shí)節(jié)點(diǎn)的通信過(guò)程。通過(guò)實(shí)驗(yàn)分析算法的吞吐量、共識(shí)時(shí)延、通信開(kāi)銷與拜占庭容錯(cuò)能力四個(gè)方面,并將MLB-Raft與其他算法的數(shù)據(jù)進(jìn)行對(duì)比分析以驗(yàn)證本文算法的有效性。實(shí)驗(yàn)的軟硬件配置如表1所示。

4.1 吞吐量

吞吐量是指在單位時(shí)間內(nèi)系統(tǒng)能夠處理的事務(wù)數(shù)量,通常用每秒完成的交易數(shù)量(transaction per second,TPS)來(lái)表示。在區(qū)塊鏈系統(tǒng)中,TPS的值為交易數(shù)量STransaction與處理交易的時(shí)間t的比值,其計(jì)算公式如式(5)所示。

TPS=STransaction/t(5)

為驗(yàn)證MLB-Raft在吞吐量上的優(yōu)勢(shì),本節(jié)在不同節(jié)點(diǎn)個(gè)數(shù)的區(qū)塊鏈網(wǎng)絡(luò)中,計(jì)算Raft、KRaft、rbRaft及MLB-Raft算法的吞吐量并取平均值進(jìn)行對(duì)比分析。

如圖8所示,隨著系統(tǒng)中節(jié)點(diǎn)個(gè)數(shù)的增加,四種算法的吞吐量均有不同程度的下降。其中在10~30節(jié)點(diǎn)個(gè)數(shù)時(shí),MLB-Raft的吞吐量遠(yuǎn)高于其他三種算法,節(jié)點(diǎn)個(gè)數(shù)超過(guò)40個(gè)后,MLB-Raft的吞吐量依然優(yōu)于其他三種算法,這是由于MLB-Raft通過(guò)多領(lǐng)導(dǎo)者并行提交區(qū)塊的方法,達(dá)到了提高吞吐量的效果,能夠適應(yīng)高吞吐量需求的聯(lián)盟鏈微電網(wǎng)電力交易環(huán)境。

4.2 共識(shí)時(shí)延

共識(shí)時(shí)延是指從客戶端向區(qū)塊鏈發(fā)起請(qǐng)求到該請(qǐng)求被確認(rèn)上鏈的時(shí)間,是衡量共識(shí)算法性能的重要指標(biāo)。為驗(yàn)證MLB-Raft在共識(shí)時(shí)延上的優(yōu)勢(shì),本節(jié)實(shí)驗(yàn)計(jì)算了不同節(jié)點(diǎn)個(gè)數(shù)情況下Raft、KRaft、rbRaft及MLB-Raft算法的共識(shí)時(shí)延并取平均值進(jìn)行對(duì)比分析。

如圖9所示,隨著系統(tǒng)中節(jié)點(diǎn)個(gè)數(shù)的增加,四種算法的共識(shí)時(shí)延均有不同程度的上升,都呈近似線性的增加趨勢(shì),且MLB-Raft的共識(shí)時(shí)延始終低于其他三種算法的共識(shí)時(shí)延。另外隨著節(jié)點(diǎn)個(gè)數(shù)的增加,可以明顯觀察到MLB-Raft的共識(shí)時(shí)延始終在Raft的50%以下,且MLB-Raft在節(jié)點(diǎn)數(shù)為60時(shí)的共識(shí)時(shí)延與其他三種算法節(jié)點(diǎn)數(shù)為10時(shí)的數(shù)值相近。通過(guò)實(shí)驗(yàn)可以得出MLB-Raft的共識(shí)效率高,能夠保證大規(guī)模節(jié)點(diǎn)網(wǎng)絡(luò)環(huán)境下的高效共識(shí),保障聯(lián)盟鏈環(huán)境下微電網(wǎng)電力交易的及時(shí)性。

4.3 通信開(kāi)銷

通信開(kāi)銷是指在區(qū)塊鏈系統(tǒng)中,節(jié)點(diǎn)達(dá)成全網(wǎng)的單次共識(shí)所需要的通信次數(shù)。為便于計(jì)算,本節(jié)實(shí)驗(yàn)假設(shè)系統(tǒng)中節(jié)點(diǎn)總數(shù)為N,MLB-Raft使用VRF選舉領(lǐng)導(dǎo)者節(jié)點(diǎn)總數(shù)為N/5。

a)PBFT通信開(kāi)銷。節(jié)點(diǎn)完成一次PBFT共識(shí)的過(guò)程中,pre-prepare階段進(jìn)行(N-1)次通信;prepare階段進(jìn)行(N-1)×(N-1)次通信;commit階段進(jìn)行N×(N-1)次通信;reply階段進(jìn)行N次通信。因此PBFT算法中節(jié)點(diǎn)單次共識(shí)的通信開(kāi)銷如式(6)所示。

N1=(N-1)+(N-1)×(N-1)+N×(N-1)+N=2N2-N(6)

b)Raft通信開(kāi)銷。節(jié)點(diǎn)完成一次Raft共識(shí)的過(guò)程中,領(lǐng)導(dǎo)者向所有跟隨者發(fā)送一條日志信息,進(jìn)行N-1次通信;跟隨者收到領(lǐng)導(dǎo)者的日志信息后進(jìn)行回復(fù),進(jìn)行N-1次通信;領(lǐng)導(dǎo)者接收到半數(shù)以上跟隨者的回復(fù)信息后,向客戶端發(fā)送回復(fù)消息,并向所有跟隨者發(fā)送確認(rèn)信息,進(jìn)行N次通信。因此Raft中節(jié)點(diǎn)單次共識(shí)的通信開(kāi)銷如式(7)所示。

N2=(N-1)+(N-1)+N=3N-2(7)

c)rbRaft通信開(kāi)銷。節(jié)點(diǎn)完成一次rbRaft共識(shí)的過(guò)程中,在復(fù)制階段領(lǐng)導(dǎo)者將區(qū)塊信息發(fā)送給跟隨者,進(jìn)行N-1次通信;在驗(yàn)證階段領(lǐng)導(dǎo)者發(fā)送包含簽名的驗(yàn)證信息,進(jìn)行N-1次通信。因此rbRaft中節(jié)點(diǎn)單次共識(shí)的通信開(kāi)銷如式(8)所示。

N3=(N-1)+(N-1)=2N-2(8)

d)MLB-Raft通信開(kāi)銷。節(jié)點(diǎn)完成一次MLB-Raft共識(shí)的過(guò)程中,request階段進(jìn)行N/5次通信;preprepare階段進(jìn)行N/5×(N-1)次通信;prepare階段進(jìn)行N/5×(N-1)次通信;commit階段進(jìn)行N/5×(N-1)次通信;commitreply階段進(jìn)行N/5×(N-1)次通信;successsyrc階段進(jìn)行N/5次通信;termchange&reply階段進(jìn)行N次通信。因此MLB-Raft中節(jié)點(diǎn)單次共識(shí)的通信開(kāi)銷如式(9)所示。

N4=N5+4×N5×(N-1)+N5+N=45N2+35N(9)

根據(jù)式(6)~(9)對(duì)四種共識(shí)算法的通信開(kāi)銷進(jìn)行了計(jì)算,并依據(jù)計(jì)算結(jié)果繪制出各算法的通信開(kāi)銷變化趨勢(shì)。

如圖10所示,在系統(tǒng)節(jié)點(diǎn)個(gè)數(shù)相同時(shí),MLB-Raft的通信開(kāi)銷低于PBFT,但高于Raft與rbRaft。當(dāng)系統(tǒng)中節(jié)點(diǎn)數(shù)量為60個(gè)時(shí),PBFT的通信開(kāi)銷為7 140,MLB-Raft將通信開(kāi)銷降低了5915%,其值為2 916。MLB-Raft因使用多領(lǐng)導(dǎo)者并行提交區(qū)塊的方法提高了系統(tǒng)吞吐量,但支持系統(tǒng)拜占庭容錯(cuò)的特性犧牲了算法的通信開(kāi)銷性能,因此通信開(kāi)銷高于Raft與rbRaft。

4.4 拜占庭容錯(cuò)能力

當(dāng)系統(tǒng)中存在拜占庭節(jié)點(diǎn)時(shí),共識(shí)算法應(yīng)當(dāng)保證系統(tǒng)中各節(jié)點(diǎn)接受到的都是正確信息,并及時(shí)將拜占庭節(jié)點(diǎn)去除,保障系統(tǒng)的共識(shí)效率與安全性。本節(jié)設(shè)置了兩個(gè)實(shí)驗(yàn)以驗(yàn)證MLB-Raft在面對(duì)拜占庭節(jié)點(diǎn)攻擊時(shí)的效率與安全性。實(shí)驗(yàn)1設(shè)置系統(tǒng)總節(jié)點(diǎn)個(gè)數(shù)為60個(gè),其中拜占庭節(jié)點(diǎn)個(gè)數(shù)為10個(gè),每輪共識(shí)有2個(gè)拜占庭節(jié)點(diǎn)作出惡意行為?;谝陨蠑?shù)據(jù),對(duì)MLB-Raft、PBFT及rbRaft的拜占庭節(jié)點(diǎn)去除效率進(jìn)行對(duì)比分析。

如圖11所示,PBFT的拜占庭節(jié)點(diǎn)率一直沒(méi)有降低,這是由于PBFT沒(méi)有剔除拜占庭節(jié)點(diǎn)的機(jī)制,即使某節(jié)點(diǎn)被認(rèn)定為拜占庭節(jié)點(diǎn),該節(jié)點(diǎn)也能繼續(xù)存在于系統(tǒng)中;rbRaft與MLB-Raft的拜占庭節(jié)點(diǎn)率都在持續(xù)下降,其中rbRaft在進(jìn)行10輪共識(shí)后基本去除了系統(tǒng)中所有的拜占庭節(jié)點(diǎn),而MLB-Raft的去除效率明顯高于rbRaft,并在完成第六輪共識(shí)時(shí)便將系統(tǒng)中所有的拜占庭節(jié)點(diǎn)去除,更好地保障了系統(tǒng)的安全性。

當(dāng)區(qū)塊鏈系統(tǒng)遭受拜占庭節(jié)點(diǎn)的惡意攻擊后,將其完全去除所需要的共識(shí)輪數(shù)代表了該共識(shí)算法針對(duì)拜占庭容錯(cuò)的有效性。本節(jié)設(shè)置了實(shí)驗(yàn)2以驗(yàn)證系統(tǒng)中出現(xiàn)不同數(shù)量的拜占庭節(jié)點(diǎn)同時(shí)作惡時(shí),MLB-Raft剔除拜占庭節(jié)點(diǎn)的能力。實(shí)驗(yàn)2設(shè)置系統(tǒng)總節(jié)點(diǎn)個(gè)數(shù)為60個(gè),拜占庭節(jié)點(diǎn)數(shù)分別設(shè)置為2、4、6、8、10個(gè),對(duì)5種情況下系統(tǒng)剔除拜占庭節(jié)點(diǎn)的共識(shí)輪數(shù)進(jìn)行對(duì)比分析。

如圖12所示,5種情況下系統(tǒng)中的拜占庭節(jié)點(diǎn)都是經(jīng)過(guò)一輪共識(shí)就被剔除出系統(tǒng)。這是由于共識(shí)過(guò)程中拜占庭節(jié)點(diǎn)作出惡意行為后,被其他的正常節(jié)點(diǎn)標(biāo)記并通知協(xié)調(diào)者,協(xié)調(diào)者完成拜占庭節(jié)點(diǎn)認(rèn)定后便啟動(dòng)復(fù)雜輪次切換以保證系統(tǒng)共識(shí)的正常進(jìn)行,并在輪次切換的過(guò)程中移除所有的拜占庭節(jié)點(diǎn),因此能及時(shí)地剔除系統(tǒng)中的拜占庭節(jié)點(diǎn),保障微電網(wǎng)電力交易的系統(tǒng)數(shù)據(jù)安全。

4.5 算法性能對(duì)比

本節(jié)對(duì)PBFT、Raft、rbRaft、KRaft、MLB-Raft算法的部分性能進(jìn)行匯總對(duì)比,采用系統(tǒng)總節(jié)點(diǎn)個(gè)數(shù)為60的實(shí)驗(yàn)數(shù)據(jù),對(duì)比結(jié)果如表2所示。

從表2可以看出,對(duì)比其他四種共識(shí)算法,MLB-Raft的拜占庭容錯(cuò)能力是最好的,PBFT僅能檢測(cè)出拜占庭節(jié)點(diǎn),無(wú)法去除;Raft與KRaft無(wú)拜占庭容錯(cuò)能力;rbRaft去除拜占庭節(jié)點(diǎn)的性能弱于本文算法。吞吐量與共識(shí)時(shí)延方面,MLB-Raft均優(yōu)于Raft、rbRaft、KRaft三種算法。而通信開(kāi)銷方面,MLB-Raft開(kāi)銷對(duì)比Raft與rbRaft較高,僅優(yōu)于PBFT。但對(duì)比吞吐量、共識(shí)時(shí)延和拜占庭容錯(cuò)性帶來(lái)的性能收益,MLB-Raft增加的通信開(kāi)銷是可以接受的。

5 結(jié)束語(yǔ)

本文針對(duì)聯(lián)盟鏈微電網(wǎng)交易場(chǎng)景高吞吐量與抗拜占庭節(jié)點(diǎn)等需求,結(jié)合PBFT與Raft提出了一種基于Raft的多領(lǐng)導(dǎo)者拜占庭容錯(cuò)的改進(jìn)共識(shí)算法MLB-Raft。該算法將Raft的單一領(lǐng)導(dǎo)者機(jī)制修改為了多領(lǐng)導(dǎo)者機(jī)制,使用可驗(yàn)證隨機(jī)函數(shù)VRF選舉多領(lǐng)導(dǎo)者,并通過(guò)多領(lǐng)導(dǎo)者并行提交區(qū)塊的方式提高共識(shí)算法的吞吐量;引入新的角色協(xié)調(diào)者負(fù)責(zé)領(lǐng)導(dǎo)者節(jié)點(diǎn)群的選舉、管理與系統(tǒng)共識(shí)的推進(jìn);簡(jiǎn)化PBFT的共識(shí)流程并將其結(jié)合到本文領(lǐng)導(dǎo)者與跟隨者的區(qū)塊復(fù)制流程中,實(shí)現(xiàn)算法的抗拜占庭特性。通過(guò)實(shí)驗(yàn)證明,相較于Raft,MLB-Raft的吞吐量與共識(shí)時(shí)延性能均優(yōu)于Raft;雖然犧牲了部分通信開(kāi)銷性能,使其通信開(kāi)銷高于Raft,但實(shí)現(xiàn)了算法的抗拜占庭節(jié)點(diǎn)的特性,且相較于PBFT,MLB-Raft的通信開(kāi)銷低,去除拜占庭節(jié)點(diǎn)的效率高。綜上所述,MLB-Raft能有效保障聯(lián)盟鏈環(huán)境下微電網(wǎng)電力交易的交易時(shí)效性與安全性。但本文算法仍有不足之處,未來(lái)可以針對(duì)其共識(shí)過(guò)程做進(jìn)一步優(yōu)化,通過(guò)降低算法的通信開(kāi)銷,更好地提升算法的性能。

參考文獻(xiàn):

[1]工業(yè)和信息化部, 發(fā)展改革委, 生態(tài)環(huán)境部. 關(guān)于印發(fā)工業(yè)領(lǐng)域碳達(dá)峰實(shí)施方案的通知[EB/OL]. (2022-07-07). https://www.gov.cn/zhengce/zhengceku/2022-08/01/content_5703910.htm. (Notice of the Ministry of Industry and Information Technology, Development and Reform Commission, Ministry of Ecology. Environment on issuing the implementation plan for carbon peak in the industrial sector[EB/OL]. (2022-07-07). https://www.gov.cn/zhengce/zhengceku/2022-08/01/content_5703910.htm.)

[2]王成山, 李鵬. 分布式發(fā)電、微網(wǎng)與智能配電網(wǎng)的發(fā)展與挑戰(zhàn)[J]. 電力系統(tǒng)自動(dòng)化, 2010, 34(2): 10-14, 23. (Wang Chengshan, Li Peng. Development and challenges of distributed generation, the micro-grid and smart distribution system[J]. Automation of Electric Power Systems, 2010, 34(2): 10-14, 23.)

[3]Nakamoto S. Bitcoin: a peer-to-peer electronic cash system[EB/OL]. (2008). https://bitcoin.org/en/bitcoin-paper.

[4]朱廷虎, 劉洋, 許立雄, 等. 基于區(qū)塊鏈技術(shù)的微電網(wǎng)群分布式電能交易模式[J]. 電力建設(shè), 2022, 43(6): 12-23. (Zhu Tinghu, Liu Yang, Xyu Lixiong,et al. Research on distributed electricity transaction mode of microgrid cluster applying blockchain technology[J]. Electric Power Construction, 2022, 43(6): 12-23.)

[5]張志龍, 劉忠途. 基于區(qū)塊鏈技術(shù)的微電網(wǎng)交易機(jī)制[J]. 信息技術(shù)與信息化, 2023 (2): 136-139. (Zhang Zhilong, Liu Zhongtu. Microgrid transaction mechanism based on blockchain technology [J]. Information Technology and Informatization, 2023 (2): 136-139.)

[6]周鑫, 鄧?yán)驑s, 王彬, 等. 基于聯(lián)盟鏈的去中心化能源交易系統(tǒng)[J]. 全球能源互聯(lián)網(wǎng), 2019, 2(6): 556-565. (Zhou Xin, Deng Lirong, Wang Bin,et al. Decentralized energy trading system based on consortium blockchain[J]. Journal of Global Energy Interconnection, 2019, 2(6): 556-565.)

[7]張利華, 胡方舟, 黃陽(yáng), 等. 基于聯(lián)盟鏈的微電網(wǎng)身份認(rèn)證協(xié)議[J]. 應(yīng)用科學(xué)學(xué)報(bào), 2020, 38(1): 173-183. (Zhang Lihua, Hu Fangzhou, Huang Yang,et al. ldentity authentication protocol of micro-grid power based on consortium blockchain[J]. Journal of Applied Sciences, 2020, 38(1): 173-183.)

[8]平健, 陳思捷, 嚴(yán)正. 適用于電力系統(tǒng)凸優(yōu)化場(chǎng)景的能源區(qū)塊鏈底層技術(shù)[J]. 中國(guó)電機(jī)工程學(xué)報(bào), 2020, 40(1): 108-116, 378. (Ping Jian, Chen Sijie, Yan Zheng. A novel energy blockchain technology for convex optimization scenarios in power system[J]. Proceedings of the CSEE, 2020, 40(1): 108-116, 378.)

[9]劉明川. 基于能源區(qū)塊鏈的分布式電能交易系統(tǒng)設(shè)計(jì)[D]. 北京: 華北電力大學(xué)(北京), 2019. (Liu Mingchuan. Energy-blockchain-based design of distributed electricity transaction system[D]. Beijing: North China Electric Power University(Beijing), 2019.)

[10]Dispenza J, Garcia C, Molecke R. Energy efficiency coin (EECoin) a blockchain asset class pegged to renewable energy markets[EB/OL]. (2019-11-17). https://wenku.baidu.com/view/0ee7b5bdfd4-ffe4733687e21af45b307e971f97f.html.

[11]王日宏, 周航, 徐泉清, 等. 用于聯(lián)盟鏈的非拜占庭容錯(cuò)共識(shí)算法[J]. 計(jì)算機(jī)科學(xué), 2021, 48(9): 317-323. (Wang Rihong, Zhou Hang, Xyu Quanqing,et al. Non-Byzantine fault tolerance consensus algorithm for consortium blockchain[J]. Computer Science, 2021, 48(9): 317-323.)

[12]王嘉瑤, 宋翔宇, 朱俊武. 基于精確分類和最優(yōu)匹配機(jī)制微電網(wǎng)交易決策方法[J]. 計(jì)算機(jī)應(yīng)用研究, 2024, 41(2): 348-355. (Wang Jiayao, Song Xiangyu, Zhu Junwu. Microgrid transaction decision making method based on precise classification and optimal matching mechanism[J]. Application Research of Computers, 2024, 41(2): 348-355.)

[13]平健, 嚴(yán)正, 陳思捷, 等. 基于區(qū)塊鏈的分布式能源交易市場(chǎng)信用風(fēng)險(xiǎn)管理方法[J]. 中國(guó)電機(jī)工程學(xué)報(bào), 2019, 39(24): 7137-7145, 7487. (Ping Jian, Yan Zheng, Chen Sijie,et al. Credit risk management in distributed energy resource transactions based on blockchain[J]. Proceedings of the CSEE, 2019, 39(24): 7137-7145, 7487.)

[14]Castro M, Liskov B. Practical Byzantine fault tolerance[C]// Proc of the 3rd Symposium on Operating Systems Design and Implementation. Berkeley: USENIX Association, 1999: 173-186.

[15]Ongaro D, Ousterhout J. In search of an understandable consensus algorithm[C]// Proc of USENIX Annual Technical Conference. Berkeley: USENIX Association, 2014: 305-319.

[16]甘俊, 李強(qiáng), 陳子豪, 等. 區(qū)塊鏈實(shí)用拜占庭容錯(cuò)共識(shí)算法的改進(jìn)[J]. 計(jì)算機(jī)應(yīng)用, 2019, 39(7): 2148-2155. (Gan Jun, Li Qiang, Chen Zihao,et al. Improvement of blockchain practical Byzantine fault tolerance consensus algorithm[J]. Journal of Computer Applications, 2019, 39(7): 2148-2155.)

[17]Lamport L. The part-time parliament[J]. ACM Trans on Compu-ter Systems, 1998, 16(2): 133-169.

[18]Micali S, Rabin M, Vadhan S. Verifiable random functions[C]// Proc of the 40th Annual Symposium on Foundations of Computer Science. Piscataway, NJ: IEEE Press, 1999: 120-130.

[19]Boneh D, Lynn B, Shacham H. Short signatures from the Weil pairing[C]// Proc of International Conference on the Theory and Application of Cryptology and Information Security. Berlin: Springer, 2001: 514-532.

[20]吳雪琛. 基于信譽(yù)機(jī)制的聯(lián)盟鏈共識(shí)算法研究[D]. 重慶: 西南大學(xué), 2023. (Wu Xuechen. Research on consensus algorithm of consortium blockchain based on reputation mechanism[D]. Chongqing: Southwest University, 2023.)