周雅怡,宋偉杰,黃曉英,凌華明,黃明磊
(廣東電網(wǎng)有限責(zé)任公司珠海供電局,廣東省 珠海市 519000)
自2015年我國啟動(dòng)本輪電力體制改革以來,電力市場(chǎng)交易的規(guī)模不斷擴(kuò)大,市場(chǎng)交易中信息安全問題一直是市場(chǎng)成員關(guān)注的重點(diǎn)。與傳統(tǒng)集中式交易系統(tǒng)架構(gòu)相比,區(qū)塊鏈為市場(chǎng)交易提供了一種新的技術(shù)解決方案,具有更高的安全性和透明度,得到眾多市場(chǎng)交易相關(guān)方的關(guān)注[1-2]。面向電力交易的區(qū)塊鏈配套技術(shù)與解決方案也因此成為當(dāng)前該領(lǐng)域研究的重點(diǎn)。
當(dāng)前,區(qū)塊鏈技術(shù)應(yīng)用于電力交易領(lǐng)域,主要作為分布式賬本實(shí)現(xiàn)對(duì)交易信息的安全存儲(chǔ),提升市場(chǎng)成員的信任程度[3]。文獻(xiàn)[4-5]研究了電動(dòng)汽車充放電交易中區(qū)塊鏈技術(shù)應(yīng)用問題,構(gòu)建了面向點(diǎn)對(duì)點(diǎn)交易的電動(dòng)汽車充電區(qū)塊鏈架構(gòu)。文獻(xiàn)[6-7]研究了基于區(qū)塊鏈的虛擬電廠交易管理模式,探討了需求側(cè)響應(yīng)、電動(dòng)汽車等參與虛擬電廠交易的可行性問題。文獻(xiàn)[8-9]探討了面向分布式發(fā)電交易的分散式市場(chǎng)交易體系問題,提出了基于區(qū)塊鏈的解決方案。此外,在碳交易、綠證交易、現(xiàn)貨交易等領(lǐng)域,也能夠利用區(qū)塊鏈技術(shù)實(shí)現(xiàn)分布式存儲(chǔ)[10-12]。上述研究表明隨著市場(chǎng)體系日趨完善,交易規(guī)模不斷增大,市場(chǎng)交易復(fù)雜性問題更加突出,對(duì)區(qū)塊鏈處理效率、安全性等要求也不斷提升,迫切要求基于電力市場(chǎng)交易自身特點(diǎn),研究適合電力市場(chǎng)不同交易場(chǎng)景的區(qū)塊鏈技術(shù)。為此,目前也有部分研究將電力交易與區(qū)塊鏈技術(shù)相結(jié)合,研究了電力交易校核[13]、優(yōu)化出清[14]等領(lǐng)域適用的區(qū)塊鏈解決方案。但整體來看,該方面的研究還處于起步階段,缺乏從區(qū)塊鏈底層出發(fā),面向電力市場(chǎng)交易自身需要的針對(duì)性改進(jìn)研究成果。
為此,本文將研究面向電力交易分布式賬本的改進(jìn)共識(shí)算法問題。首先,將介紹區(qū)塊鏈基本概念,并系統(tǒng)研究當(dāng)前典型共識(shí)機(jī)制算法的自身特點(diǎn)。接著,從電力市場(chǎng)交易的需求著手,研究面向電力交易的共識(shí)機(jī)制改進(jìn)方案,提出一種基于拜占庭容錯(cuò)算法(byzantine fault tolerance,BFT)的改進(jìn)共識(shí)機(jī)制。最后,基于測(cè)試系統(tǒng)從吞吐量和通信開銷兩個(gè)維度對(duì)所提出的改進(jìn)算法效率進(jìn)行測(cè)試驗(yàn)證。
從數(shù)據(jù)的角度來看,區(qū)塊鏈本質(zhì)上是一種分布式共享賬本。區(qū)塊鏈基礎(chǔ)架構(gòu)模型可分為數(shù)據(jù)層、網(wǎng)絡(luò)層、共識(shí)層、激勵(lì)層、合約層和應(yīng)用層[15-16]。共識(shí)層用于封裝不同類型的共識(shí)算法,決定區(qū)塊鏈以怎么樣的機(jī)制來形成新的區(qū)塊。
共識(shí)機(jī)制的根本目的在于解決區(qū)塊鏈網(wǎng)絡(luò)的節(jié)點(diǎn)信任問題。區(qū)塊鏈設(shè)計(jì)中認(rèn)為每個(gè)節(jié)點(diǎn)均存在數(shù)據(jù)被篡改的可能性,對(duì)各節(jié)點(diǎn)提出的區(qū)塊數(shù)據(jù)申請(qǐng),必須建立一套所有節(jié)點(diǎn)均能認(rèn)可的判定機(jī)制,以決定該數(shù)據(jù)是否可靠。因此,某種程度來說,共識(shí)機(jī)制是區(qū)塊鏈信息安全的核心。當(dāng)前區(qū)塊鏈共識(shí)機(jī)制設(shè)計(jì)一般遵循“少數(shù)服從多數(shù)”和“人人平等”的原則?!吧贁?shù)服從多數(shù)”并不完全指節(jié)點(diǎn)個(gè)數(shù),也可以是計(jì)算能力、股權(quán)數(shù)或者其他的計(jì)算機(jī)可以比較的特征量?!叭巳似降取笔钱?dāng)節(jié)點(diǎn)滿足條件時(shí),所有節(jié)點(diǎn)都有權(quán)優(yōu)先提出共識(shí)結(jié)果、直接被其他節(jié)點(diǎn)認(rèn)同后并最后有可能成為最終共識(shí)結(jié)果。
目前,典型的共識(shí)機(jī)制算法包括工作量證明算法(Proof of Work,PoW)、權(quán)益證明算法(Proof of Stake,PoS)、BFT算法[17]。下面將介紹其主要特點(diǎn)。
以比特幣為代表的第一代數(shù)字貨幣大多采用PoW共識(shí)機(jī)制構(gòu)建其共識(shí)層。本質(zhì)上來說,PoW共識(shí)機(jī)制是一種自證機(jī)制,即需要各節(jié)點(diǎn)自我證明數(shù)據(jù)合法性,所使用的數(shù)學(xué)運(yùn)算為哈希函數(shù)。其實(shí)施流程要點(diǎn)如下[18]:
(1)構(gòu)造默克爾樹。由各節(jié)點(diǎn)收集交易信息,并從中選擇合法交易,構(gòu)造默克爾樹;
(2)確定出塊者。PoW共識(shí)機(jī)制下,最先提出滿足要求哈希值的節(jié)點(diǎn)獲得出塊權(quán),成為出塊者,該判定公式可表示為:
式中,Hash()為哈希函數(shù),Version為版本號(hào),prev_hash為前一區(qū)塊的哈希值,Merkle_root為該區(qū)塊的默克爾根,ntime為區(qū)塊生成時(shí)間,nonce為各節(jié)點(diǎn)為爭取獲得出塊權(quán)所確定的隨機(jī)數(shù),target為目標(biāo)值。
(3)驗(yàn)證區(qū)塊并更新。獲得出塊權(quán)的節(jié)點(diǎn)發(fā)布其哈希值和交易信息,若哈希值小于給定難度系數(shù),同時(shí)所提供的交易信息符合合法性校核條件,則所發(fā)布的交易信息寫入?yún)^(qū)塊鏈末端并更新區(qū)塊鏈;否則舍棄丟棄該信息,轉(zhuǎn)入下一輪共識(shí)判定。
PoW共識(shí)機(jī)制作為最早采用的共識(shí)算法,具有較高的安全性,能夠抵抗小于51%算力的雙花攻擊。但由于所有節(jié)點(diǎn)均參與出塊權(quán)確定及驗(yàn)證,導(dǎo)致其耗電量較高,受限于出塊時(shí)間等因素,其吞吐量較低。
為解決PoW共識(shí)機(jī)制耗電量高的問題,PoS共識(shí)算法被提出,并應(yīng)用于黑幣、Ethereum等區(qū)塊鏈項(xiàng)目。該共識(shí)機(jī)制的核心思路在于在出塊權(quán)確定環(huán)節(jié),以幣齡代替計(jì)算符合規(guī)定要求的nonce值,從而降低每個(gè)節(jié)點(diǎn)大量無實(shí)際意義的哈希函數(shù)計(jì)算[18]?;谝陨纤悸?,PoS共識(shí)機(jī)制中確定出塊者所需要滿足的條件可表示為:
式中,proofhash為由當(dāng)前時(shí)間、權(quán)值修改器等共同確定的哈希值,target為給定目標(biāo)值,coin_age為幣齡。根據(jù)式(2)可以發(fā)現(xiàn)幣齡值越大的節(jié)點(diǎn),獲得出塊權(quán)概率越高。早期的PoS共識(shí)機(jī)制下,幣齡為該節(jié)點(diǎn)已有貨幣數(shù)和所擁有的時(shí)間的乘積之和,可表示為:
式中,coinc、agec分別為節(jié)點(diǎn)所擁有的第c個(gè)貨幣和對(duì)應(yīng)持有時(shí)間。
然而由于以上幣值確定方式容易造成貨幣持有量越大的節(jié)點(diǎn)獲得新貨幣概率越高,客觀上阻礙了區(qū)塊鏈的拓展。后期PoS共識(shí)機(jī)制往往從幣齡指標(biāo)方面進(jìn)行改進(jìn),例如文獻(xiàn)[19-20]提出以實(shí)際在線節(jié)點(diǎn)貨幣量代替幣齡,以克服以上區(qū)塊鏈拓展問題,同時(shí)有利于解決無危險(xiǎn)攻擊和長距離攻擊等問題。
整體來說,由于改進(jìn)了出塊權(quán)確定方式,PoS共識(shí)機(jī)制耗電量顯著下降,能夠抵抗小于51%權(quán)益攻擊,安全性較高,通過進(jìn)一步改進(jìn)計(jì)算流程,吞吐量指標(biāo)也能得到顯著提升,具有更強(qiáng)的使用性。
BFT共識(shí)機(jī)制是以拜占庭容錯(cuò)算法為核心構(gòu)造而成的共識(shí)機(jī)制。當(dāng)前應(yīng)用較多的BFT共識(shí)機(jī)制包括實(shí)用拜占庭容錯(cuò)算法(practical byzantine fault tolerance,PBFT)、投機(jī)拜占庭容錯(cuò)(speculative byzantine fault tolerance,SBFT)和聯(lián)邦拜占庭容錯(cuò)(federal byzantine fault tolerance,F(xiàn)BFT)等[21-22]。拜占庭容錯(cuò)算法的本質(zhì)是一種投票制度,當(dāng)大部分參與方認(rèn)可一項(xiàng)提案時(shí),該提案才能確認(rèn)達(dá)成一致。在上述實(shí)現(xiàn)思路的基礎(chǔ)上,以上共識(shí)算法的區(qū)別主要在投票組織方式上。
以PBFT為例,每一輪形成共識(shí)的過程被稱為一個(gè)視圖,每個(gè)視圖中將確定一個(gè)主節(jié)點(diǎn),其他節(jié)點(diǎn)稱為備份節(jié)點(diǎn),共計(jì)節(jié)點(diǎn)2f+1個(gè)[23-24]。如圖2所示,交易行為產(chǎn)生后,共識(shí)過程如下:
(1)發(fā)布請(qǐng)求。由客戶端項(xiàng)所有節(jié)點(diǎn)發(fā)布交易請(qǐng)求;
(2)計(jì)算區(qū)塊。主節(jié)點(diǎn)負(fù)責(zé)對(duì)客戶端提出的交易行為格式檢查,并將符合要求的交易形成區(qū)塊向所有備份節(jié)點(diǎn)發(fā)布;
(3)驗(yàn)證區(qū)塊。各節(jié)點(diǎn)獨(dú)立驗(yàn)證區(qū)塊合法性,并將判定結(jié)果向其他所有節(jié)點(diǎn)發(fā)布;
(4)更新區(qū)塊鏈。若某個(gè)節(jié)點(diǎn)收到其他2f個(gè)節(jié)點(diǎn)且反饋正確的信息,則據(jù)此更新區(qū)塊鏈,并向客戶端返回答復(fù)信息;
(5)答復(fù)。客戶端接到符合判定條件數(shù)的答復(fù)信息后,認(rèn)定該交易執(zhí)行完畢。
與PBFT相比,SBFT共識(shí)算法應(yīng)用Collector技術(shù),設(shè)計(jì)了收集器,負(fù)責(zé)統(tǒng)計(jì)所有節(jié)點(diǎn)發(fā)布的驗(yàn)證結(jié)果,從而降低數(shù)據(jù)通信負(fù)擔(dān);FBFT共識(shí)算法則設(shè)計(jì)了信任節(jié)點(diǎn)列表和多輪驗(yàn)證機(jī)制,各備份節(jié)點(diǎn)獨(dú)立驗(yàn)證過程中,直接忽略非信任節(jié)點(diǎn)列表的節(jié)點(diǎn)驗(yàn)證結(jié)果,并采用多輪判定方式,逐步提升判定限值,從而進(jìn)一步提升吞吐量[25]。
以上三類BFT共識(shí)算法的差別主要體現(xiàn)在時(shí)間復(fù)雜度上,PBFT、SBFT、FBFT三個(gè)算法的時(shí)間復(fù)雜度依次為O(n2)、O(n)、O(n2),其中SBFT算法由于增加了收集器,降低了通信復(fù)雜性。
圖1 PBFT執(zhí)行過程Fig.1 Implementation process of PFBT
共識(shí)機(jī)制是區(qū)塊鏈的核心,要求共識(shí)機(jī)制具有較高的執(zhí)行效率和安全性,同時(shí)具有較低的能耗水平。表1中從能耗、安全性、成塊時(shí)間、吞吐量四個(gè)方面對(duì)比了以上三類共識(shí)機(jī)制算法。整體來看,PoW、PoS共識(shí)算法能耗水平和計(jì)算效率均弱于BFT算法[26-27]。因此,拜占庭容錯(cuò)算法已成為當(dāng)前應(yīng)用最為廣泛的共識(shí)算法。具體來看,能耗方面,拜占庭容錯(cuò)算法及其改進(jìn)算法能耗水平最低,PoW共識(shí)算法能耗水平最高,PoS共識(shí)算法相對(duì)較低。安全性方面,PoW共識(shí)算法和PoS共識(shí)算法均需要51%以上的算例或幣齡才能達(dá)成一致,但是若系統(tǒng)中存在某節(jié)點(diǎn)算力或幣齡占據(jù)較大優(yōu)勢(shì)時(shí),依然存在操縱共識(shí)結(jié)果的可能性,因此兩種算法安全性優(yōu)勢(shì)并不顯著。成塊時(shí)間和吞吐量兩項(xiàng)計(jì)算性能指標(biāo)來看,拜占庭容錯(cuò)算法具有明顯的優(yōu)勢(shì),均由于PoW共識(shí)算法和PoS共識(shí)算法。
BFT共識(shí)算法均具有較高的執(zhí)行效率和較低的能耗水平,適用于高頻交易場(chǎng)景。更進(jìn)一步比較,PBFT共識(shí)算法是SBFT、FBFT算法的基礎(chǔ),SBFT共識(shí)算法引入了收集器,大幅降低了通信復(fù)雜性,但對(duì)收集器節(jié)點(diǎn)的可靠性提出了較高要求,若收集器節(jié)點(diǎn)異常,可能影響整個(gè)區(qū)塊鏈正常運(yùn)行存儲(chǔ);FBFT共識(shí)算法則通過引入信任節(jié)點(diǎn)列表和多輪判定方式,實(shí)現(xiàn)了區(qū)塊判定的并行,進(jìn)一步提升了吞吐能力,但會(huì)造成大量日志存儲(chǔ)于各節(jié)點(diǎn),產(chǎn)生較重的存儲(chǔ)負(fù)擔(dān)[28]。
表1 共識(shí)機(jī)制對(duì)比分析Tab.1 Comparison of consensus mechanisms
電力交易是典型的高頻交易,特別是電力現(xiàn)貨市場(chǎng)環(huán)境中將開展不間斷的連續(xù)交易,對(duì)共識(shí)機(jī)制的執(zhí)行效率具有較高要求。同時(shí),電力交易涉及大量市場(chǎng)主體及多類型交易模式,交易本身復(fù)雜度較高。以上特點(diǎn)決定了當(dāng)利用區(qū)塊鏈技術(shù)解決電力交易中數(shù)據(jù)存儲(chǔ)問題時(shí),共識(shí)算法既需要具備較高的執(zhí)行效率,同時(shí)復(fù)雜度不宜過高。
根據(jù)上述需求分析,本文擬以PBFT共識(shí)算法為基礎(chǔ),充分吸收SBFT、FBFT共識(shí)算法在降低復(fù)雜度、提升處理效率方面的優(yōu)點(diǎn),構(gòu)建一種改進(jìn)PFBT共識(shí)算法,以滿足電力交易分布式賬本的實(shí)際需要?;谝陨细倪M(jìn)思路,本文擬從兩個(gè)方面著手對(duì)PBFT共識(shí)算法進(jìn)行改造:
(1)借鑒FBFT共識(shí)算法,制定備份節(jié)點(diǎn)信用分級(jí)機(jī)制,根據(jù)節(jié)點(diǎn)歷史表現(xiàn),確定其信用等級(jí),進(jìn)一步提升算法安全性。節(jié)點(diǎn)信用本質(zhì)上是對(duì)各節(jié)點(diǎn)歷史共識(shí)過程中貢獻(xiàn)度的評(píng)價(jià)結(jié)果。歷史共識(shí)過程中參與生成有效區(qū)塊的次數(shù)越高,則其信用度越高。信用等級(jí)越高的節(jié)點(diǎn)在后續(xù)共識(shí)過程中判定權(quán)重越高,對(duì)共識(shí)結(jié)果的影響力越大。
(2)借鑒SBFT共識(shí)算法,將信用等級(jí)最高的備份節(jié)點(diǎn)作為主節(jié)點(diǎn)和收集器,降低算法復(fù)雜度。由于引入節(jié)點(diǎn)信用等級(jí)機(jī)制,將提升共識(shí)機(jī)制復(fù)雜度,可能造成吞吐量、成塊時(shí)間等計(jì)算效率指標(biāo)。通過將信用等級(jí)最高的備份節(jié)點(diǎn)作為主節(jié)點(diǎn)和收集器,能最大限度發(fā)揮不同節(jié)點(diǎn)的效用,充分利用閑置計(jì)算資源,從而降低復(fù)雜性,提高計(jì)算效率,實(shí)現(xiàn)安全性與計(jì)算效率的統(tǒng)一。
節(jié)點(diǎn)信用分級(jí)是改進(jìn)共識(shí)機(jī)制的核心。根據(jù)節(jié)點(diǎn)生成有效區(qū)塊的歷史表現(xiàn),由高到低將其劃分為A、B、C、D四個(gè)級(jí)別,其轉(zhuǎn)換關(guān)系如圖2所示。整體來看,節(jié)點(diǎn)在共識(shí)過程中信用等級(jí)將隨其生成有效區(qū)塊的表現(xiàn)發(fā)生變化,原則上不會(huì)出現(xiàn)節(jié)點(diǎn)信用越級(jí)的問題,從而最大限度保證整個(gè)共識(shí)算法的穩(wěn)定性。
具體來看,實(shí)施過程可簡述如下:規(guī)定新加入節(jié)點(diǎn)的初始信用值為creNO,每參與生成一次有效區(qū)塊,信用值增加1,反之若參與生成一次無效區(qū)塊,則信用值減少3,以加重對(duì)無效區(qū)塊的懲罰。根據(jù)人工經(jīng)驗(yàn),確定四個(gè)信用級(jí)別的限值,依次為creAD、creBD、creCD,即若某節(jié)點(diǎn)信用值cren高于creAD,則為A級(jí)節(jié)點(diǎn);處于creAD、creBD之間,為B級(jí)節(jié)點(diǎn);處于creBD、creCD之間,為C級(jí)節(jié)點(diǎn);低于creCD,為D級(jí)節(jié)點(diǎn)。
為提升新加入節(jié)點(diǎn)參與共識(shí)的機(jī)會(huì),建議規(guī)定初始信用值應(yīng)對(duì)應(yīng)B級(jí)信用等級(jí),即滿足:
圖2 節(jié)點(diǎn)信用等級(jí)轉(zhuǎn)換關(guān)系Fig.2 Conversion relationship of node credit rating
類似PBFT共識(shí)算法,改進(jìn)算法也包括發(fā)布請(qǐng)求、計(jì)算區(qū)塊、驗(yàn)證區(qū)塊、更新區(qū)塊鏈、答復(fù)等五個(gè)流程。與傳統(tǒng)PBFT相比,主要區(qū)別在于:
(1)發(fā)布請(qǐng)求環(huán)節(jié),客戶端發(fā)布交易信息后,由上一輪共識(shí)的主節(jié)點(diǎn)、收集節(jié)點(diǎn)向A級(jí)信用節(jié)點(diǎn)發(fā)布隨機(jī)數(shù),確定本輪的主節(jié)點(diǎn)、收集節(jié)點(diǎn);
(2)驗(yàn)證區(qū)塊環(huán)節(jié),收集節(jié)點(diǎn)在判斷區(qū)塊是否合法時(shí),將統(tǒng)籌考慮各信用級(jí)別節(jié)點(diǎn)的反饋合法性。不同信用級(jí)別的節(jié)點(diǎn)反饋結(jié)果具有不同權(quán)重,以其綜合評(píng)價(jià)結(jié)果判斷結(jié)果合法性,該綜合評(píng)價(jià)可表示為:
式中,Ju為綜合評(píng)價(jià)結(jié)果,NN為備份節(jié)點(diǎn)數(shù)量,Cn為備份節(jié)點(diǎn)n的信用級(jí)別權(quán)重,規(guī)定A、B、C、D四類信用級(jí)別權(quán)重系數(shù)依次為4、3、2、1,Jun為該節(jié)點(diǎn)評(píng)價(jià)結(jié)果,若為有效區(qū)塊則為1,否則取值為0。
(3)更新區(qū)塊鏈環(huán)節(jié),除了將有效區(qū)塊更新上鏈外,還需要根據(jù)本輪判定結(jié)果對(duì)照本文所提出的節(jié)點(diǎn)信用分級(jí)方法,更新各節(jié)點(diǎn)信用值及信用等級(jí)。
將以上算法實(shí)施流程,與傳統(tǒng)拜占庭容錯(cuò)算法實(shí)施流程相比,實(shí)際上僅增加了更新區(qū)塊環(huán)節(jié)中節(jié)點(diǎn)信用分級(jí)的相關(guān)步驟,由于各節(jié)點(diǎn)能夠并行更新其信用等級(jí),從而保證整體計(jì)算效率最大化,降低計(jì)算耗時(shí),提升共識(shí)算法效率。
類似SBFT公式算法,改進(jìn)算法能夠立即確認(rèn),不會(huì)產(chǎn)生分叉。僅在初始階段增加了通信任務(wù),增加量為O(2n),因此整體來看改進(jìn)算法的復(fù)雜度與SBFT共識(shí)算法相當(dāng),均為O(n)級(jí)。而與PBFT公式算法相比,由于增加了收集器,避免了驗(yàn)證區(qū)塊環(huán)節(jié)所有節(jié)點(diǎn)不加區(qū)分的統(tǒng)一發(fā)布廣播,其通信復(fù)雜度大幅低于PBFT共識(shí)算法。
在Hyperledger Fabric V1.1的環(huán)境下建立仿真平臺(tái),驗(yàn)證所提出改進(jìn)共識(shí)機(jī)制的有效性。所使用的測(cè)試系統(tǒng)軟硬件配置情況如下:Inter Core i5-7300 CPU,8GB內(nèi)存,Linux Ubuntu 16.04操作系統(tǒng)。
吞吐量是指單位時(shí)間內(nèi)系統(tǒng)有效處理事務(wù)數(shù)量,是反映共識(shí)機(jī)制執(zhí)行效率的關(guān)鍵指標(biāo)。區(qū)塊鏈應(yīng)用中,一般采用每秒交易數(shù)(Transaction Persecond,TPS)來衡量吞吐量高低,可表示為:
式中,transcations為出塊時(shí)間內(nèi)系統(tǒng)處理交易數(shù),Δt為出塊時(shí)間。
系統(tǒng)設(shè)置100個(gè)節(jié)點(diǎn),錯(cuò)誤節(jié)點(diǎn)隨機(jī)產(chǎn)生無效區(qū)塊,但總錯(cuò)誤節(jié)點(diǎn)數(shù)不超過20個(gè)。如圖3所示的吞吐量測(cè)試結(jié)果中,PBFT、SBFT、FBFT三種傳統(tǒng)共識(shí)算法吞吐量均較為穩(wěn)定,整體來看PBFT與SBFT吞吐量水平基本相當(dāng),F(xiàn)BFT共識(shí)算法由于實(shí)現(xiàn)了并行處理,其吞吐量高于PBFT和SBFT兩種算法。而本文提出的改進(jìn)算法則具有隨時(shí)間逐步提升的吞吐量特性,其初始吞吐量與PBFT、SBFT基本相同,原因在于初始條件下各節(jié)點(diǎn)均為B級(jí)信用節(jié)點(diǎn),因此該改進(jìn)算法在初始階段基本等價(jià)于SBFT共識(shí)算法。隨著時(shí)間延長,改進(jìn)算法中信用分級(jí)機(jī)制的作用發(fā)揮日趨顯著,信用級(jí)別長期穩(wěn)定的節(jié)點(diǎn)將維持較高信用等級(jí),對(duì)生效區(qū)塊的貢獻(xiàn)度更為顯著,而錯(cuò)誤節(jié)點(diǎn)信用級(jí)別逐步降低,對(duì)生效區(qū)塊貢獻(xiàn)率下降。最后,改進(jìn)算法的吞吐量能夠超過FBFT共識(shí)算法。
以上結(jié)果表明,本文所提出的改進(jìn)共識(shí)機(jī)制能夠有助于提升共識(shí)算法對(duì)電力市場(chǎng)高頻交易的適應(yīng)性,同時(shí)隨著市場(chǎng)交易的執(zhí)行,吞吐能力將持續(xù)增強(qiáng),具有較強(qiáng)的場(chǎng)景適應(yīng)性,有力支撐電力市場(chǎng)下復(fù)雜的交易環(huán)境變化。
圖3 吞吐量測(cè)試結(jié)果Fig.3 Throughput test results
通信開銷是指每一輪共識(shí)機(jī)制執(zhí)行期間所必需的節(jié)點(diǎn)通信量,不僅影響共識(shí)機(jī)制執(zhí)行復(fù)雜度,同時(shí)也能影響區(qū)塊鏈的能耗水平。
如圖4所示,通信開銷指標(biāo)四類共識(shí)算法差異顯著。整體來看,通信開銷與算法通信復(fù)雜度相關(guān),改進(jìn)算法和SBFT算法與系統(tǒng)節(jié)點(diǎn)數(shù)整體呈一次線性關(guān)系,而PBFT、FBFT算法則呈二次關(guān)系。當(dāng)系統(tǒng)節(jié)點(diǎn)數(shù)增加時(shí),PBFT、FBFT算法的通信開銷將顯著增加,不僅導(dǎo)致其通信復(fù)雜度上升,通信失敗可能性增大,而且還將造成較高的能耗,導(dǎo)致區(qū)塊鏈整體效率下降。
以上結(jié)果表明,本文所提出的共識(shí)算法具有通信開銷增長穩(wěn)定的特征,隨節(jié)點(diǎn)數(shù)呈一次線性增長關(guān)系。以上特性對(duì)于電力交易具有顯著的促進(jìn)作用,體現(xiàn)在更適應(yīng)市場(chǎng)主體快速增加,復(fù)雜交易場(chǎng)景下的多節(jié)點(diǎn)分布式賬本需要,同時(shí)能夠降低整體能耗,提升效益。
圖4 通信開銷測(cè)試結(jié)果Fig.4 Test results of communication overhead
根據(jù)電力交易實(shí)際特點(diǎn),充分借鑒當(dāng)前三類BFT共識(shí)算法優(yōu)勢(shì)特征,提出了一種面向電力交易分布式賬本的改進(jìn)共識(shí)算法。與傳統(tǒng)BFT算法相比,該算法具有顯著的優(yōu)勢(shì)。
(1)該算法具有較低的通信復(fù)雜度,其通信開銷與系統(tǒng)節(jié)點(diǎn)呈一次線性關(guān)系,有效避免系統(tǒng)規(guī)模增大,節(jié)點(diǎn)增加對(duì)通信造成的負(fù)擔(dān);
(2)該算法具有較高的吞吐量效率,同時(shí)隨執(zhí)行時(shí)間增長,吞吐量將穩(wěn)定增長,更適應(yīng)電力市場(chǎng)高頻交易,特別是現(xiàn)貨市場(chǎng)的使用要求。