鄒賢,沈力,張偉,曹武,楊銘
(1. 昆明電力交易中心有限責(zé)任公司,昆明650011;2. 南京南瑞繼保工程技術(shù)有限公司,南京211102;3. 東南大學(xué),南京210096)
當(dāng)前電力市場建設(shè)已經(jīng)取得了一定進(jìn)展,首批8個試點(diǎn)電力現(xiàn)貨市場完成了結(jié)算試運(yùn)行;國家發(fā)展改革委辦公廳、國家能源局在2019年印發(fā)了《關(guān)于深化電力現(xiàn)貨市場建設(shè)試點(diǎn)工作的意見》、2020年印發(fā)了《關(guān)于做好電力現(xiàn)貨市場試點(diǎn)連續(xù)試結(jié)算相關(guān)工作的通知》[1],均提出了對電力市場的機(jī)制設(shè)計、運(yùn)營能力、電力市場運(yùn)營平臺、配套機(jī)制等進(jìn)一步發(fā)展的要求[2 - 6]。隨著“碳中和、碳達(dá)峰”要求的提出,電網(wǎng)的新能源比例越來越高,分布式風(fēng)電場/光伏電站、儲能系統(tǒng)、微單元發(fā)電系統(tǒng)、可控負(fù)荷等作為分布式交易主體也越來越多地參與到電力市場交易中,交易主體的激增使得電力市場交易的管理復(fù)雜度快速增加,電力市場交易頻繁,其清算過程需與銀行等第三方金融機(jī)構(gòu)進(jìn)行頻繁且慢速的信息校對,海量的交易信息數(shù)據(jù)存在丟失或篡改的可能性,且當(dāng)前的電力交易平臺已無法應(yīng)對大規(guī)模數(shù)據(jù)處理,同時各省級電力市場復(fù)雜的管理構(gòu)成也制約了各類分布式資源的統(tǒng)一優(yōu)化配置[7 - 10]。
區(qū)塊鏈?zhǔn)且环N分布式數(shù)據(jù)庫或共享賬本,數(shù)據(jù)按區(qū)塊組織并加密,具有可追溯性、防篡改、去中心化等特點(diǎn)和優(yōu)勢,其特點(diǎn)與大規(guī)模電力市場交易的需求相契合[11 - 15]?;趨^(qū)塊鏈的電力市場交易平臺已有了一定的研究成果,既有對平臺建設(shè)的研究,也有對其中關(guān)鍵技術(shù)的研究。文獻(xiàn)[16]分析了能源互聯(lián)網(wǎng)對區(qū)塊鏈的技術(shù)需求和引入?yún)^(qū)塊鏈的適用性。文獻(xiàn)[17]提出了一種大用戶直購電鏈路框架,結(jié)合直購電交易特點(diǎn)對分布式共識機(jī)制進(jìn)行改進(jìn)。文獻(xiàn)[18]提出了基于區(qū)塊鏈技術(shù)的分布式電力市場交易平臺,利用區(qū)塊鏈技術(shù)去中心化、開放性、匿名性及安全有效性等優(yōu)勢,建立基于電力交易智能合約的分布式電力交易機(jī)制。文獻(xiàn)[19]提出了基于有向無環(huán)圖(direct acyclic graph,DAG)拓?fù)涞墓轿袡?quán)益證明(fair delegated proof of stake,F(xiàn)-DPoS)共識機(jī)制的分布式能源交易區(qū)塊鏈技術(shù)。文獻(xiàn)[20]提出了基于區(qū)塊鏈的智能合約應(yīng)用。
共識機(jī)制作為區(qū)塊鏈技術(shù)中的核心[21],是保證節(jié)點(diǎn)在分布式網(wǎng)絡(luò)中達(dá)成共識,保障數(shù)據(jù)安全的基礎(chǔ),也是提高區(qū)塊鏈處理速度、運(yùn)行性能的關(guān)鍵。共識機(jī)制隨著區(qū)塊鏈應(yīng)用場景的擴(kuò)展不斷發(fā)展,在電力系統(tǒng)中已有實際應(yīng)用[22]。當(dāng)前主要的共識機(jī)制種類有:工作量證明機(jī)制(proof of work,PoW)、股權(quán)證明機(jī)制(proof of stake,PoS)、股權(quán)授權(quán)證明機(jī)制(delegated proof of stake,DPoS)、拜占庭容錯機(jī)制(practical Byzanine fault tolerant,PBFT)、Paxos和RAFT機(jī)制。其中PoW和PoS都存在計算量大,功耗高的缺點(diǎn);PBFT及其進(jìn)化機(jī)制對含有動態(tài)變化節(jié)點(diǎn)的區(qū)塊鏈適應(yīng)性較差。Paxos和RAFT機(jī)制則更適合沒有拜占庭容錯的分布式交易系統(tǒng)[23 - 25]。
當(dāng)前的電力市場交易平臺共識機(jī)制設(shè)計主要以PoS為主,隨著大規(guī)模分布式交易節(jié)點(diǎn)的加入,節(jié)省系統(tǒng)功耗是必須的工作,為此本文提出了電力交易區(qū)塊鏈的RAFT共識機(jī)制。分析了電力市場多動態(tài)變化節(jié)點(diǎn)、備份充足、交易主體職責(zé)明確等特點(diǎn)與RAFT應(yīng)用的適應(yīng)性,在此基礎(chǔ)上設(shè)計了多層次RAFT結(jié)構(gòu),并設(shè)計了信用評分機(jī)制對RAFT選主機(jī)制進(jìn)行改進(jìn),在保證有效性的前提下提高共識過程的速度,節(jié)省能耗。
區(qū)塊鏈基本架構(gòu)可以分為數(shù)據(jù)層、網(wǎng)絡(luò)層、共識層和應(yīng)用層,如圖1所示。數(shù)據(jù)層包括數(shù)據(jù)存儲區(qū)塊和鏈?zhǔn)浇Y(jié)構(gòu),哈希指針為每個節(jié)點(diǎn)進(jìn)行統(tǒng)一鏈接,通過加密保證數(shù)據(jù)的安全性;網(wǎng)絡(luò)層用來通過組網(wǎng)方式和網(wǎng)絡(luò)傳輸協(xié)議連接并組織各分布節(jié)點(diǎn),最早的區(qū)塊鏈網(wǎng)絡(luò)架構(gòu)基于P2P網(wǎng)絡(luò);共識層通過設(shè)定的共識機(jī)制達(dá)成各個區(qū)塊間的一致共識,是區(qū)塊鏈系統(tǒng)分布式和去中心化的核心;應(yīng)用層是系統(tǒng)開發(fā)和應(yīng)用部署的接口,包括各種加密貨幣、應(yīng)用軟件等。
圖1 區(qū)塊鏈基本架構(gòu)Fig.1 Basic architecture of blockchain
各個電力交易主體經(jīng)過預(yù)定的撮合交易策略達(dá)成交易,交易完成后通過網(wǎng)絡(luò)擴(kuò)散到電力市場的各個節(jié)點(diǎn),進(jìn)而全系統(tǒng)各個節(jié)點(diǎn)對達(dá)成的交易形成共識。電力交易的分布式共識要求各個服務(wù)器節(jié)點(diǎn)存儲的交易信息保持一致,以便于進(jìn)行交易記錄溯源、競價策略撤回等相關(guān)操作。每個服務(wù)器節(jié)點(diǎn)可以建模為一個復(fù)制狀態(tài)機(jī),采用日志復(fù)制的機(jī)制實現(xiàn)復(fù)制狀態(tài)機(jī)的狀態(tài)日志,每個服務(wù)器建有日志,日志由按順序編號。RAFT是用來管理復(fù)制日志的一種一致性協(xié)議。一致性算法允許多個節(jié)點(diǎn)作為一個集群協(xié)同工作,并且當(dāng)其中的某些節(jié)點(diǎn)退出或故障時集群仍具備快速達(dá)成一致性共識的能力。因此RAFT算法可以用來建立可靠的大規(guī)模軟件系統(tǒng)。RAFT算法設(shè)置領(lǐng)導(dǎo)人(Leader)、跟隨者(Follower)和候選人(Candidate)3種角色,任意節(jié)點(diǎn)都可以寫日志。RAFT算法更便于選舉出一個強(qiáng)領(lǐng)導(dǎo)人角色,領(lǐng)導(dǎo)人選取之后其日志必須進(jìn)行補(bǔ)全。RAFT算法中所有跟隨者的日志都是領(lǐng)導(dǎo)人的子集。
RAFT算法易于理解,其重要工作流程如下。
1)選主,即Leader選舉?,F(xiàn)任Leader有可能因故障或任期結(jié)束等原因,RAFT集群需要重新選主,Leader周期性地向所有Follower發(fā)送心跳以確認(rèn)在集群中作用的存在,如果一個Follower在設(shè)定時間內(nèi)沒有接收到心跳信息,即可認(rèn)為此時需要進(jìn)行選主工作。
2)強(qiáng)制日志復(fù)制。Leader從某個節(jié)點(diǎn)接收日志后,必須將該日志復(fù)制到系統(tǒng)其他節(jié)點(diǎn),強(qiáng)制要求其他節(jié)點(diǎn)的日志與自己保持一致,Leader選舉完成后,響應(yīng)應(yīng)用層的請求。Leader把應(yīng)用層的每請求中包含的復(fù)制狀態(tài)機(jī)執(zhí)行的指令追加到日志中去,并發(fā)給給其他的服務(wù)器,讓該條目得以復(fù)制。執(zhí)行的結(jié)果通過Leader返回給應(yīng)用層。如果Follower運(yùn)行緩慢或網(wǎng)絡(luò)丟包,Leader會不斷地重試直到所有的Follower最終都存儲了所有的日志條目。
3)安全性。在存在Leader的集群中新加入的節(jié)點(diǎn)將分配為Follower角色,新加入的節(jié)點(diǎn)可以再參與接下來的選主過程;如果系統(tǒng)中沒有Leader,所有節(jié)點(diǎn)變成Candidate,Candidate會向其他節(jié)點(diǎn)請求投票,最先獲得最多票數(shù)的Candidate節(jié)點(diǎn)將成為新一任Leader,新一任Leader選出后,剩余的Candidate節(jié)點(diǎn)即變?yōu)镕ollower節(jié)點(diǎn);同時RAFT有一套機(jī)制保證Leader選舉過程中仍能保證所有日志的復(fù)制和保存。
RAFT算法中節(jié)點(diǎn)3種狀態(tài)的變化可用圖2表示。
圖2 狀態(tài)變化示意圖Fig.2 Diagram of state changing
電力市場交易系統(tǒng)與RAFT算法的適應(yīng)性主要體現(xiàn)在以下幾個方面。
1)因電力系統(tǒng)的高有效性要求,大多數(shù)參與交易的節(jié)點(diǎn)都具備備份服務(wù)器,備份服務(wù)器也要求與實際的交易情況保持一致,RAFT的強(qiáng)制復(fù)制日志可以保證備份服務(wù)器信息的隨時更新;
2)電力市場交易節(jié)點(diǎn)是動態(tài)變化的,因檢修或故障等原因其退出交易的時間是不固定的,其加入交易的時間也具有隨機(jī)性,RAFT算法適合于節(jié)點(diǎn)動態(tài)變化的應(yīng)用場景;
3)電力市場準(zhǔn)入門檻較高,屬于私有鏈,交易節(jié)點(diǎn)的行為在可約束的范圍內(nèi),出現(xiàn)拜占庭錯誤的概率可控。
4)電力市場參與節(jié)點(diǎn)易于分類,職責(zé)清晰,參與電力交易的節(jié)點(diǎn)主要包含售電企業(yè)、發(fā)電企業(yè)、負(fù)荷用戶、電網(wǎng)企業(yè)、金融機(jī)構(gòu)以及政府機(jī)構(gòu),各類節(jié)點(diǎn)參與交易的職責(zé)不同以及投入交易的成本不同,天然有利于Leader的選取。
RAFT算法在選主過程中可能產(chǎn)生投票分歧問題,尤其在集群中節(jié)點(diǎn)數(shù)量較多的情況下,當(dāng)多個節(jié)點(diǎn)獲得了相同數(shù)量的選票時無法選取唯一的節(jié)點(diǎn)作為領(lǐng)導(dǎo)人,解決方法是重新進(jìn)行選主,這樣的過程會增加系統(tǒng)運(yùn)行的時間和復(fù)雜度。同時對于電力系統(tǒng)相關(guān)的交易,各個服務(wù)器通信時間處于異步狀態(tài),當(dāng)交易節(jié)點(diǎn)過多時,原有的RAFT算法的缺點(diǎn)就會放大,影響正常交易的進(jìn)行,需要對RAFT算法的領(lǐng)導(dǎo)人選舉過程進(jìn)行改進(jìn)。
電力交易包含碳交易、綠證配額交易、中長期交易、現(xiàn)貨交易等多種交易形式[26]。在各種電力交易系統(tǒng)中,各參與節(jié)點(diǎn)的職責(zé)分工是明確的:電源生產(chǎn)電力,負(fù)荷消耗電力,電網(wǎng)公司負(fù)責(zé)線路輸送。電力公司和運(yùn)營商可以對交易起到監(jiān)督的作用,監(jiān)管部門、交易中心和市場主體可以共同對交易的最終結(jié)果進(jìn)行校核以保證市場的公平和高信用[27]。在電力市場的交易過程中,電力公司、運(yùn)營商、電力負(fù)荷大戶、電廠大戶在交易過程中會形成天然的主導(dǎo)地位。本文設(shè)計采用信用評分的方式來表征交易的主導(dǎo)地位,以改進(jìn)RAFT投票選取領(lǐng)導(dǎo)人的過程,提高選主的有效性和快速性。對節(jié)點(diǎn)的信用評分基于節(jié)點(diǎn)的行為記錄,根據(jù)交易記錄日志中所接收到的節(jié)點(diǎn)交易行為信息,若節(jié)點(diǎn)反饋了正確的交易信息,則此節(jié)點(diǎn)可以增加信用積分,若節(jié)點(diǎn)反饋了錯誤的交易信息,則認(rèn)為此節(jié)點(diǎn)需要減少信用積分。交易的電量、交易是否成功都可以用來進(jìn)行信用評分。其中節(jié)點(diǎn)交易行為信息的公正性由主要監(jiān)管部門進(jìn)行最終校核。
基于節(jié)點(diǎn)的成功交易的歷史交易量、節(jié)點(diǎn)穩(wěn)定程度形成正常信用積分,而基于節(jié)點(diǎn)的錯誤反饋、懲罰因子等形成積分扣除制度,對正常信用積分進(jìn)行修正,從而綜合完成對節(jié)點(diǎn)的信用評分。信用評分的計算公式如式(1)所示。
(1)
式中:Ri為第i個節(jié)點(diǎn)的信用積分;Vs為累計的成功交易量;Vw為因錯誤信息涉及的累計交易量;α為節(jié)點(diǎn)穩(wěn)定因子;N為電力市場交易天數(shù);Ni為節(jié)點(diǎn)i參與電力市場交易沒有出現(xiàn)因故障等退出現(xiàn)象的天數(shù);β為節(jié)點(diǎn)懲罰因子,為當(dāng)前信用值的函數(shù);β1, …,βj為各信用值區(qū)間對應(yīng)的分段函數(shù)值,一般有β1<…<βj;R1, …,Rj為對應(yīng)的區(qū)間邊界值。
采用交易量作為信用評分的主要依據(jù)能夠包含跨區(qū)域的電力交易場景。實際應(yīng)用中節(jié)點(diǎn)的穩(wěn)定程度也是需要考慮的因素,相比較而言,電網(wǎng)公司因大量備用服務(wù)器的存在,其穩(wěn)定性比負(fù)荷和電源節(jié)點(diǎn)的穩(wěn)定度要高,同時對于同一地區(qū)來說,所有的電力交易都會通過電力公司或者運(yùn)營商,基于交易量和穩(wěn)定程度的信用積分方式有利于區(qū)域中的大電網(wǎng)企業(yè)主導(dǎo)電力交易區(qū)塊鏈共識。
懲罰因子的設(shè)計是為避免出現(xiàn)利用優(yōu)勢地位進(jìn)行錯誤校核的問題,當(dāng)前信用值高的節(jié)點(diǎn)產(chǎn)生錯誤行為時,將大幅降低其信用積分作為懲罰措施,即對應(yīng)的懲罰因子也較大。本文中懲罰因子采用基于信用值的分段函數(shù)形式,即每個區(qū)間段對應(yīng)一個懲罰因子。
改進(jìn)后的基于信用評分的選舉過程如下所述,并由圖3表示。
圖3 選舉關(guān)鍵流程Fig.3 Election critical process
1)跟隨者在設(shè)定的超時時間內(nèi)沒有收到來自領(lǐng)導(dǎo)人的心跳,則認(rèn)為此時的服務(wù)器集群網(wǎng)絡(luò)發(fā)生了某種變化,可能情況包括領(lǐng)導(dǎo)人服務(wù)器宕機(jī)、網(wǎng)絡(luò)故障、領(lǐng)導(dǎo)人節(jié)點(diǎn)任期結(jié)束而新的領(lǐng)導(dǎo)人尚未確定,此時主動發(fā)起選舉,增加當(dāng)前任期(term)并將節(jié)點(diǎn)的身份改為候選人;
2)候選人并行向其他節(jié)點(diǎn)發(fā)送投票請求和當(dāng)前的信用文檔,接收到投票請求的節(jié)點(diǎn)比較自身和請求發(fā)送方的信用值,若發(fā)送節(jié)點(diǎn)信用值比自身節(jié)點(diǎn)的信用值高,節(jié)點(diǎn)將退出選舉并變成跟隨者節(jié)點(diǎn);在接受到的所有其他節(jié)點(diǎn)信用值比自身節(jié)點(diǎn)的信用值低的情況下,節(jié)點(diǎn)為自身進(jìn)行投票;最后通過得票數(shù)確定領(lǐng)導(dǎo)人;對于兩個或多個節(jié)點(diǎn)擁有相同的信用值的情況,則以最先確定給自己投票的節(jié)點(diǎn)為領(lǐng)導(dǎo)人;
3)領(lǐng)導(dǎo)人一經(jīng)確定,即向其他節(jié)點(diǎn)發(fā)送確認(rèn)信息,選主過程結(jié)束,其他節(jié)點(diǎn)會切換到跟隨者狀態(tài)。
通過信用積分的方式,利用電力交易自身的交易特點(diǎn)和交易主體各自的身份區(qū)別,避免了RAFT算法中的交易分歧問題,并簡化了RAFT選主過程,總體上提高了RAFT選主過程的效率和有效性。
當(dāng)選主過程結(jié)束后,共識系統(tǒng)可以正常工作。電力交易的共識機(jī)制主要為了完成分布式交易結(jié)果的確認(rèn),本文提出的RAFT共識機(jī)制也主要是為了記錄電力交易智能合約的執(zhí)行結(jié)果。領(lǐng)導(dǎo)人節(jié)點(diǎn)將統(tǒng)一對交易結(jié)果的確認(rèn)及記錄請求進(jìn)行處理,并對這些并發(fā)請求的順序進(jìn)行調(diào)度。當(dāng)電力市場中按照智能合約完成一次交易后,參加交易的主體首先對交易的過程和結(jié)果進(jìn)行確認(rèn),確認(rèn)后的交易結(jié)果會經(jīng)監(jiān)管部門審核,完成后發(fā)往領(lǐng)導(dǎo)人節(jié)點(diǎn)進(jìn)行記賬操作。
根據(jù)規(guī)約任何節(jié)點(diǎn)的任期和同步號是單調(diào)遞增的;單節(jié)點(diǎn)只會對任期與同步號相同的日志執(zhí)行修改,而不會對任期小于同步號的日志執(zhí)行修改操作。領(lǐng)導(dǎo)人節(jié)點(diǎn)首先將當(dāng)前任期與請求內(nèi)容組成一條條目添加到日志中,隨后將新條目發(fā)送給其他跟隨者節(jié)點(diǎn),當(dāng)該新條目被過半數(shù)的節(jié)點(diǎn)收到并添加到自己的本地日志后,領(lǐng)導(dǎo)人節(jié)點(diǎn)可以確認(rèn)提交這一新條目,這些新條目可以應(yīng)用到狀態(tài)機(jī)。RAFT算法中已經(jīng)確認(rèn)的條目需要保證永遠(yuǎn)存在。跟隨者節(jié)點(diǎn)完全處于被動狀態(tài),收到領(lǐng)導(dǎo)人節(jié)點(diǎn)發(fā)送來的新條目時需要比較其日志條目目錄是否與自己的一致,如果比領(lǐng)導(dǎo)人節(jié)點(diǎn)的目錄小,說明自己沒有補(bǔ)全所有的日志,此時需要向領(lǐng)導(dǎo)人節(jié)點(diǎn)發(fā)送更新存儲請求,讓領(lǐng)導(dǎo)人節(jié)點(diǎn)調(diào)整發(fā)送,保證跟隨節(jié)點(diǎn)的日志記錄與領(lǐng)導(dǎo)人保持一致,為適應(yīng)電網(wǎng)交易主體的動態(tài)環(huán)境,領(lǐng)導(dǎo)人節(jié)點(diǎn)只對尚且有心跳的跟隨者節(jié)點(diǎn)補(bǔ)全日志信息,通過提高動態(tài)更新效率的方式更好地適應(yīng)動態(tài)環(huán)境;當(dāng)出現(xiàn)新加入的節(jié)點(diǎn)時,領(lǐng)導(dǎo)人節(jié)點(diǎn)對新加入的節(jié)點(diǎn)進(jìn)行當(dāng)前日志補(bǔ)全,并適當(dāng)考慮軟件平臺實施部署過程中的多線程并行操作。
RAFT算法保證系統(tǒng)節(jié)點(diǎn)信息一致性的前提是沒有惡意節(jié)點(diǎn),傳統(tǒng)RAFT算法抵抗惡意節(jié)點(diǎn)的能力較弱,極大限制了RAFT算法的應(yīng)用范圍和安全性,同時本文的選主過程基于信用評分,信用評分不能被惡意節(jié)點(diǎn)所篡改,否則會極大降低整體共識機(jī)制的安全性[27]。作為電力交易市場交易的各個主體,其存在惡意節(jié)點(diǎn)的可能性較低,但仍不可避免受到網(wǎng)絡(luò)攻擊的可能,因此本文的RAFT共識算法在惡意節(jié)點(diǎn)方面也做了一定的改進(jìn)。
若某個跟隨者節(jié)點(diǎn)受到網(wǎng)絡(luò)攻擊轉(zhuǎn)變?yōu)閻阂夤?jié)點(diǎn),該惡意節(jié)點(diǎn)可能會刪除自身節(jié)點(diǎn)日志項或者篡改日志,也會將接收領(lǐng)導(dǎo)人節(jié)點(diǎn)的信息私自篡改后保存到日志目錄,同時這種行為不會被其他節(jié)點(diǎn)包括領(lǐng)導(dǎo)人節(jié)點(diǎn)所察覺;若領(lǐng)導(dǎo)人節(jié)點(diǎn)受到網(wǎng)絡(luò)攻擊轉(zhuǎn)變?yōu)閻阂夤?jié)點(diǎn),該惡意領(lǐng)導(dǎo)人節(jié)點(diǎn)可能會刪除或者篡改客戶端、跟隨者節(jié)點(diǎn)發(fā)來的日志,并向其他的跟隨者節(jié)點(diǎn)發(fā)送有錯誤的數(shù)據(jù)信息并提交。為彌補(bǔ)這一缺點(diǎn),在共識機(jī)制中加入了審核者的角色,審核者是固定的,不隨選舉過程發(fā)生變化,一般由監(jiān)管機(jī)構(gòu)、政府部門擔(dān)任,審核者節(jié)點(diǎn)負(fù)責(zé)日志信息的完整性和準(zhǔn)確性,對領(lǐng)導(dǎo)人節(jié)點(diǎn)的日志信息進(jìn)行校對,維護(hù)信用值及其計算的可靠性。審核者節(jié)點(diǎn)的工作包括以下幾點(diǎn)。
1)當(dāng)電力市場交易完成后,交易信息先由審核者節(jié)點(diǎn)進(jìn)行審核,核對完成后發(fā)往領(lǐng)導(dǎo)人節(jié)點(diǎn);
2)領(lǐng)導(dǎo)人節(jié)點(diǎn)發(fā)往跟隨者節(jié)點(diǎn)的補(bǔ)全日志信息和當(dāng)前提交的新日志信息,要經(jīng)審核者節(jié)點(diǎn)根據(jù)時間戳進(jìn)行校核,若信息與前次校核的信息一致,則將該新日志條目提交至審核節(jié)點(diǎn)日志目錄;若信息不一致,該條目日志的交易過程和結(jié)果需要進(jìn)一步進(jìn)行核實處理,同時對惡意節(jié)點(diǎn)進(jìn)行信用評分,惡意節(jié)點(diǎn)也須退出選舉,并發(fā)起新一輪選主過程;
3)當(dāng)選領(lǐng)導(dǎo)人節(jié)點(diǎn)的存儲日志內(nèi)容需要審核者節(jié)點(diǎn)的核對,按照時間戳、任期和交易結(jié)果進(jìn)行核對,存在不一致的條目則當(dāng)前領(lǐng)導(dǎo)人選舉失效,惡意節(jié)點(diǎn)退出選舉,并對該節(jié)點(diǎn)進(jìn)行信用評分,并發(fā)起新一輪選主過程。
綜上,基于改進(jìn)RAFT的共識機(jī)制可用圖4表示。
圖4 改進(jìn)RAFT共識機(jī)制Fig.4 Improved RAFT consensus mechanism
本文實驗環(huán)境為Windows10操作系統(tǒng),系統(tǒng)內(nèi)存為8 GB,CPU為Intel Core-i5 2.5 GHz處理器。從選主過程用時、完成共識日志用時和吞吐量3個方面分析本文提出的用于電力市場交易的改進(jìn)RAFT共識機(jī)制在快速性和有效性方面的優(yōu)勢,在沒有惡意節(jié)點(diǎn)情況下與傳統(tǒng)RAFT算法比較選主過程用時、完成共識日志用時,在含有惡意節(jié)點(diǎn)情況下與已提出的R-RAFT算法[28]比較吞吐量。為模擬電力市場的交易場景,在測試中的每個節(jié)點(diǎn)都主動分配不同的信用值以便選主過程的實施;信用評分中的節(jié)點(diǎn)穩(wěn)定因子通過實際交易數(shù)據(jù)根據(jù)式(1)進(jìn)行計算,懲罰因子采用倍數(shù)懲罰的方式,即依據(jù)因錯誤信息涉及的累計交易量進(jìn)行倍數(shù)罰分,本仿真中將信用段分為5段,懲罰因子為[10, 9, 8.5, 8, 7]。
1) 場景一:選主用時的比較
分別對電力市場交易節(jié)點(diǎn)數(shù)為50,選主次數(shù)由10遞增至300次,以及選主次數(shù)為300次,節(jié)點(diǎn)數(shù)由20個遞增至200個兩種條件進(jìn)行模擬測試,比較這兩種情況下傳統(tǒng)RAFT和本文改進(jìn)RAFT算法在選主方面的用時區(qū)別,每組進(jìn)行5次重復(fù)測試,取平均值作為測試結(jié)果,結(jié)果如圖5—6所示。
圖5 共識次數(shù)遞增下選主用時Fig.5 Election time under increasing consensus numbers
圖6 節(jié)點(diǎn)數(shù)遞增下選主用時Fig.6 Election time under increasing node numbers
由圖5—6可知,傳統(tǒng)RAFT和本文改進(jìn)RAFT算法的選主用時都是波動上升,本文改進(jìn)算法的選主用時要小于傳統(tǒng)RAFT算法。在不存在惡意節(jié)點(diǎn)攻擊時,傳統(tǒng)RAFT和本文改進(jìn)共識算法需要一輪交互,節(jié)點(diǎn)間進(jìn)行投票的通信時間是用時的主要因素,改進(jìn)算法在交互時通過信用值比較減小了通信節(jié)點(diǎn)的規(guī)模,因此取得了選主時間上的優(yōu)勢。
2)場景二:完成共識日志用時的比較
比較以上兩種情況下傳統(tǒng)RAFT和本文改進(jìn)RAFT算法在完成共識日志用時方面的區(qū)別,每組進(jìn)行5次重復(fù)測試,取平均值作為測試結(jié)果,結(jié)果如圖7—8所示。
圖7 共識次數(shù)遞增下完成共識日志用時Fig.7 Consensus log time under increasing consensus numbers
圖8 節(jié)點(diǎn)數(shù)遞增下完成共識日志用時Fig.8 Consensus log time under increasing node numbers
本文的改進(jìn)算法在選主結(jié)束后的日志復(fù)制過程與傳統(tǒng)RAFT算法是一致的,本文改進(jìn)算法在復(fù)制開始增加了一個對領(lǐng)導(dǎo)人節(jié)點(diǎn)發(fā)出日志的審核過程,但這個時間較短,同時由于選主過程用時的優(yōu)勢,使得本文改進(jìn)算法在完成日志復(fù)制的用時結(jié)果上仍具有一定的優(yōu)勢。
3)場景三:吞吐量的比較
共識算法的一個關(guān)鍵指標(biāo)是吞吐量(throughput,TPS),其表征了系統(tǒng)節(jié)點(diǎn)集群單位時間內(nèi)處理請求的能力。吞吐量的計算公式如式(2)所示。
(2)
式中:QTPS為吞吐量;Δtrans為共識過程的交易總量;Δt為總的共識時間。
由于傳統(tǒng)RAFT算法中無法對惡意節(jié)點(diǎn)進(jìn)行安全性容錯,吞吐量測試選取R-RAFT作為對比對象,R-RAFT采用的是多輪核對的方法。在節(jié)點(diǎn)數(shù)為50,包含10%,15%惡意節(jié)點(diǎn)的情況下對兩種算法下共識次數(shù)由100增至300時的系統(tǒng)吞吐量進(jìn)行對比。對比結(jié)果如圖9—10所示。
通過對比可以看出本文的改進(jìn)算法吞吐量有一定的優(yōu)勢,本文改進(jìn)RAFT算法的審核環(huán)節(jié)在日志復(fù)制開始和選主結(jié)束時刻,因此當(dāng)惡意節(jié)點(diǎn)增多時有概率會發(fā)起多次選主過程,由于選主過程的快速性,使得改進(jìn)RAFT共識算法在提高容錯性的同時仍有一定快速優(yōu)勢。
圖9 10%惡意節(jié)點(diǎn)下吞吐量Fig.9 TPS under 10% malicious nodes
圖10 15%惡意節(jié)點(diǎn)下吞吐量Fig.10 TPS under 15% malicious nodes
綜合以上模擬電力市場相關(guān)區(qū)塊鏈的測試結(jié)果可以看出,本文提出的改進(jìn)RAFT算法相比傳統(tǒng)RAFT算法具有更快的選主速度和更好的容錯性,可以很好地解決電力系統(tǒng)中多備份節(jié)點(diǎn)的一致性問題,也滿足了電力市場交易區(qū)塊鏈分布式共識的快速性和有效性的要求。
本文根據(jù)電力市場交易區(qū)塊鏈分布式共識對一致性及快速性的要求,結(jié)合電力市場交易主體的特點(diǎn),針對傳統(tǒng)RAFT易產(chǎn)生選舉糾紛和無法適用于惡意節(jié)點(diǎn)的缺點(diǎn),改進(jìn)了傳統(tǒng)RAFT算法。改進(jìn)后的RAFT算法采用信用值評估節(jié)點(diǎn)的穩(wěn)定性和交易地位,基于信用值進(jìn)行領(lǐng)導(dǎo)人選舉,替代原有RAFT算法中的投票方式,加快了選主過程,避免了選舉糾紛;同時為提高RAFT算法對惡意節(jié)點(diǎn)的抵抗能力,提出了采用審核者節(jié)點(diǎn)對復(fù)制日志和領(lǐng)導(dǎo)人選舉審核的方法,提高了共識的有效性,并通過實例對比了不同算法的結(jié)果。結(jié)果顯示本文所提的改進(jìn)RAFT算法實現(xiàn)了提高分布式共識算法快速性和有效性的目標(biāo)。