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

?

基于區(qū)塊鏈的高效能源交易共識與存儲優(yōu)化方法研究①

2022-09-28 03:30崔蔚于卓王璇吳曉亭文治張巧蓮沈韜
高技術(shù)通訊 2022年7期
關(guān)鍵詞:貢獻(xiàn)度共識區(qū)塊

崔蔚 于卓 王璇 吳曉亭 文治 張巧蓮 沈韜③

(?國網(wǎng)信息通信產(chǎn)業(yè)集團(tuán)有限公司 北京100031)

(??北京中電普華信息技術(shù)有限公司 北京100192)

(???昆明理工大學(xué)信息工程與自動化學(xué)院 昆明650000)

0 引言

在能源轉(zhuǎn)型和電力體制改革的新形勢下,我國能源互聯(lián)網(wǎng)體系呈現(xiàn)出新的發(fā)展勢態(tài)。以綠色新能源為主體的分布式能源已然成為能源交易市場中的重要組成部分,為降低通信復(fù)雜度、提高能源利用率、多渠道擴(kuò)展分布式能源就地消納,分布式能源獲得合法就近售電資質(zhì),其能源生產(chǎn)和消費(fèi)結(jié)構(gòu)呈無中心、多節(jié)點(diǎn)狀特點(diǎn)。

現(xiàn)有能源運(yùn)營模式由于具有集中式管理的特點(diǎn)且依賴于第三方機(jī)構(gòu),其交易流程多、電力損耗大、效率低、時間長、交易成本高。由于區(qū)塊鏈技術(shù)和分布式能源交易在理念上的相似性,基于區(qū)塊鏈的能源交易已成為眾多專家學(xué)者的研究熱點(diǎn)。

1 相關(guān)研究

文獻(xiàn)[1]重點(diǎn)研究了基于拜占庭式區(qū)塊鏈共識框架下電動汽車與配電網(wǎng)分布式網(wǎng)絡(luò)(distribution network,DN)之間的能源交易過程。文獻(xiàn)[2]使用區(qū)塊鏈技術(shù)來管理分布式能源交易的系統(tǒng)運(yùn)行。文獻(xiàn)[3]提出了一種基于軟件定義網(wǎng)絡(luò)(software defined networking,SDN)的區(qū)塊鏈能源互聯(lián)網(wǎng)分布式能源交易方案。該方案在保護(hù)隱私的前提下實(shí)現(xiàn)了交易對象的合理匹配。為了應(yīng)對當(dāng)前電動汽車集成量大的現(xiàn)狀,文獻(xiàn)[4]提出了點(diǎn)對點(diǎn)電力區(qū)塊鏈交易 (peer-to-peer electricity blockchain trading,P2PEBT)的效益證明(proof of benefit,PoB)共識機(jī)制,通過在新型區(qū)塊鏈系統(tǒng)中提供平衡本地電力需求的激勵機(jī)制來實(shí)現(xiàn)需求響應(yīng)。文獻(xiàn)[5]提出了一個區(qū)塊鏈平臺的通用框架,該平臺支持零售電力市場的點(diǎn)對點(diǎn)(peer-to-peer,P2P)能源交易,從供需雙方尋找能源匹配對,鼓勵生產(chǎn)者和消費(fèi)者直接進(jìn)行能源交易,實(shí)現(xiàn)了一個完整的能源交易流程。針對聯(lián)盟區(qū)塊鏈不能智能地選舉實(shí)時交易的領(lǐng)導(dǎo)者、不能滿足數(shù)據(jù)交易平臺穩(wěn)定性要求的問題,文獻(xiàn)[6]提出了一種聯(lián)盟區(qū)塊鏈動態(tài)領(lǐng)導(dǎo)者的選擇方法?;贖yperledger Fabric 的共識協(xié)議,將計算每個對等方用戶得分的交易評估模塊引入聯(lián)盟區(qū)塊鏈。文獻(xiàn)[7]提出了一種基于分層模型的多中心的共識機(jī)制,與其他共識機(jī)制不同的是,該文設(shè)計了主從鏈,用以提高區(qū)塊鏈系統(tǒng)的吞吐量。文獻(xiàn)[8]提出了一種新的協(xié)商一致協(xié)議——委托式拜占庭容錯協(xié)議(credit-delegated Byzantine fault tolerance,CDBFT),并提出了一種投票獎懲方案及其相應(yīng)的信用評估方案和基于實(shí)用拜占庭容錯(practical Byzantine fault tolerance,PBFT)的一致性和檢查點(diǎn)協(xié)議。文獻(xiàn)[9]提出一種基于動態(tài)信譽(yù)值的實(shí)用拜占庭容錯(dynamic-reputation practical Byzantine fault tolerance,DPBFT)共識算法。文獻(xiàn)[10]提出一種基于分片的共識算法。文獻(xiàn)[11]提出了基于跳躍Hash 和動態(tài)權(quán)重分片構(gòu)建算法,同時引入異步共識組機(jī)制,提升分片的交易安全性,有效處理跨分片交易。文獻(xiàn)[12]針對區(qū)塊鏈系統(tǒng)中節(jié)點(diǎn)誠信問題,對于PBFT 的節(jié)點(diǎn)劃分階段進(jìn)行優(yōu)化,利用聚類算法根據(jù)節(jié)點(diǎn)類型進(jìn)行劃分,提高了區(qū)塊鏈系統(tǒng)中的節(jié)點(diǎn)質(zhì)量,進(jìn)而降低了故障概率。文獻(xiàn)[13]針對能源領(lǐng)域提出一種基于區(qū)塊鏈技術(shù)的分布式能源信息互通互聯(lián)模式,優(yōu)化了RAFT 算法來滿足電力數(shù)據(jù)上鏈實(shí)時性的要求。表1為主流共識算法的對比分析。

表1 主流共識機(jī)制對比

隨著能源工業(yè)互聯(lián)網(wǎng)發(fā)展的不斷滲透,能源數(shù)據(jù)量與交易量呈指數(shù)型增長。為了緩解區(qū)塊鏈系統(tǒng)帶來的存儲壓力,眾多學(xué)者專家對區(qū)塊鏈中的區(qū)塊存儲方案進(jìn)行優(yōu)化。區(qū)塊存儲優(yōu)化方案主要是在不影響交易吞吐量的情況下改變區(qū)塊的存儲方式。鏈下存儲優(yōu)化方案是一種將區(qū)塊體中數(shù)據(jù)內(nèi)容從原區(qū)塊體轉(zhuǎn)移到鏈下存儲系統(tǒng),區(qū)塊體中僅存儲指向這些數(shù)據(jù)的“指針”和其他非數(shù)據(jù)信息,以解決區(qū)塊鏈存儲可擴(kuò)展性問題的方法。星際文件系統(tǒng)(inter planetary file system,IFPS)是一種旨在將所有計算設(shè)備與相同文件系統(tǒng)連接起來的點(diǎn)對點(diǎn)分布式文件系統(tǒng)[14],IPFS 是內(nèi)容尋址的,即內(nèi)容本身決定了內(nèi)容的位置[15],是目前作為區(qū)塊鏈鏈下存儲中使用較多的一種方案。文獻(xiàn)[16]針對物聯(lián)網(wǎng)數(shù)據(jù)隱私問題提出了一種基于區(qū)塊鏈和IPFS 的“模塊化聯(lián)盟架構(gòu)”,既克服了傳統(tǒng)區(qū)塊鏈網(wǎng)絡(luò)無法存儲海量數(shù)據(jù)的缺點(diǎn),又消除了物聯(lián)網(wǎng)(Internet of Thing,IoT)數(shù)據(jù)的中心化管理模式。Desema[17]是一個基于Ethereum 和IPFS 的分布式服務(wù)市場系統(tǒng)。在Desema 中,服務(wù)的元數(shù)據(jù)和大型數(shù)據(jù)都存儲在IPFS 中,而區(qū)塊鏈中僅存儲這些數(shù)據(jù)的散列值。Chameleon[18]是一個動態(tài)適應(yīng)、可擴(kuò)展的私有鏈架構(gòu)。它將最近一段時期(一天或者一周)的數(shù)據(jù)存儲在區(qū)塊鏈中,以前的數(shù)據(jù)存儲到云上。分布式哈希表(distributed hash table,DHT)[19]是一種分布式存儲方法。DHT 在不需要中心服務(wù)器的情況下,每個節(jié)點(diǎn)負(fù)責(zé)一個小范圍內(nèi)的路由,同時存儲一小部分?jǐn)?shù)據(jù),從而實(shí)現(xiàn)DHT 網(wǎng)絡(luò)的尋址和存儲。文獻(xiàn)[20]改變了傳統(tǒng)區(qū)塊鏈網(wǎng)絡(luò)(例如比特幣)存儲所有交易的存儲模式,將數(shù)據(jù)與數(shù)據(jù)引用進(jìn)行分離式存儲,設(shè)計了一種使用DHT 的鏈下存儲模式,其中,DHT由Kademlia[21]實(shí)現(xiàn)。原始數(shù)據(jù)的引用(即原始數(shù)據(jù)SHA-256 計算后的散列值)保存在區(qū)塊鏈中,而原始數(shù)據(jù)則保存在鏈下的DHT 中。

以上述可知,現(xiàn)存的共識機(jī)制如POW、POS 共識機(jī)制均存在參與的節(jié)點(diǎn)數(shù)目較多、共識時間較長以及效率低的問題,且大多用于公有鏈中。同樣現(xiàn)有大多數(shù)區(qū)塊鏈鏈下存儲優(yōu)化方案均是基于公有鏈或私有鏈,在聯(lián)盟鏈中的存儲優(yōu)化方案較少。因此,本文針對區(qū)塊鏈在能源交易過程中存在的交易效率與存儲容量問題,提出基于節(jié)點(diǎn)貢獻(xiàn)度的實(shí)用拜占庭容錯共識算法和位置分區(qū)的聯(lián)盟鏈存儲優(yōu)化策略。共識算法保證加入聯(lián)盟鏈中節(jié)點(diǎn)的可靠性與能源交易數(shù)據(jù)的不可篡改。存儲策略基于節(jié)點(diǎn)的地理位置劃分出的不同域組,每個域之間功能與地位都相同。功能上,每個域只有兩種類型的節(jié)點(diǎn):一個存儲節(jié)點(diǎn)和若干個普通節(jié)點(diǎn),只有存儲節(jié)點(diǎn)保存區(qū)塊鏈中全部數(shù)據(jù),其余節(jié)點(diǎn)只需要保存區(qū)塊頭,以此減輕區(qū)塊鏈的存儲壓力。

2 基于節(jié)點(diǎn)貢獻(xiàn)度的實(shí)用拜占庭容錯共識機(jī)制(NCPBFT)

區(qū)塊鏈本質(zhì)上是一個全網(wǎng)節(jié)點(diǎn)共同參與記賬的分布式數(shù)據(jù)庫,而共識機(jī)制是其中的核心要素,能夠確保全網(wǎng)節(jié)點(diǎn)保存在區(qū)塊鏈上的數(shù)據(jù)是一致的?,F(xiàn)存的共識機(jī)制如POW、POS 共識機(jī)制基本用于公有鏈中,參與的節(jié)點(diǎn)數(shù)目較多,共識時間較長、效率低。而在能源互聯(lián)網(wǎng)場景中,為了滿足能源快速交易的需求,本文基于聯(lián)盟鏈節(jié)點(diǎn)準(zhǔn)入準(zhǔn)出機(jī)制,提出了一種基于節(jié)點(diǎn)貢獻(xiàn)度的實(shí)用拜占庭容錯(node-based contribution practical Byzantine fault tolerance,NCPBFT)共識算法。該算法將網(wǎng)絡(luò)中的參與節(jié)點(diǎn)分為具有不同職責(zé)的4 種類型,分別為主節(jié)點(diǎn)、監(jiān)控節(jié)點(diǎn)、共識節(jié)點(diǎn)和存儲節(jié)點(diǎn)。共識節(jié)點(diǎn)以及存儲節(jié)點(diǎn)是由監(jiān)控節(jié)點(diǎn)根據(jù)其自身的貢獻(xiàn)度進(jìn)行動態(tài)更新,然后主節(jié)點(diǎn)從貢獻(xiàn)度較高的那一半共識節(jié)點(diǎn)中隨機(jī)選出,并根據(jù)節(jié)點(diǎn)貢獻(xiàn)度對節(jié)點(diǎn)進(jìn)行降序排序及動態(tài)變更。在PBFT 共識機(jī)制中,共識的通信復(fù)雜度為O(n2)級別。若系統(tǒng)中的節(jié)點(diǎn)數(shù)較多,則通信壓力會較大,為了緩解通信壓力,本文使用簡化的共識過程,將共識的通信復(fù)雜度減少為O(n)。

2.1 網(wǎng)絡(luò)結(jié)構(gòu)

在NCPBFT 中,節(jié)點(diǎn)主要分為監(jiān)控節(jié)點(diǎn)、主節(jié)點(diǎn)、共識節(jié)點(diǎn)和存儲節(jié)點(diǎn)幾種類型。

監(jiān)控節(jié)點(diǎn):(1)監(jiān)控全網(wǎng)中節(jié)點(diǎn)的共識行為及該節(jié)點(diǎn)接入網(wǎng)絡(luò)的具體時間;(2)根據(jù)節(jié)點(diǎn)貢獻(xiàn)度對共識節(jié)點(diǎn)和存儲節(jié)點(diǎn)進(jìn)行動態(tài)變更;(3)選取主節(jié)點(diǎn);(4)驗(yàn)證節(jié)點(diǎn)同步性。

主節(jié)點(diǎn):(1)接收客戶端發(fā)送的交易,對交易進(jìn)行排序;(2)打包交易生成預(yù)備消息,并向其他共識節(jié)點(diǎn)廣播;(3)統(tǒng)計共識節(jié)點(diǎn)發(fā)送的反饋消息,生成準(zhǔn)備消息并廣播給其他共識節(jié)點(diǎn)以及存儲節(jié)點(diǎn);(4)維護(hù)區(qū)塊鏈賬本。

共識節(jié)點(diǎn)(concensus node,CN):(1)對主節(jié)點(diǎn)發(fā)送的預(yù)準(zhǔn)備消息進(jìn)行驗(yàn)證,然后生成反饋消息返回給主節(jié)點(diǎn);(2)接收準(zhǔn)備消息并將其寫入到區(qū)塊鏈賬本,然后返回確認(rèn)消息給主節(jié)點(diǎn)。

存儲節(jié)點(diǎn)(storage node,SN):不參與共識過程,只將正式區(qū)塊存儲到區(qū)塊鏈賬本。

在該算法中共識節(jié)點(diǎn)的數(shù)量為n,其中主節(jié)點(diǎn)是在貢獻(xiàn)度較高的共識節(jié)點(diǎn)中隨機(jī)選擇,存儲節(jié)點(diǎn)的數(shù)量為k,監(jiān)控節(jié)點(diǎn)的數(shù)量為1。假設(shè)網(wǎng)絡(luò)中的惡意節(jié)點(diǎn)數(shù)量為f,則惡意節(jié)點(diǎn)和共識節(jié)點(diǎn)仍滿足f≤(n -1)/3。

由圖1 所示,在NCPBFT 中,只有共識節(jié)點(diǎn)才能參與共識過程進(jìn)行投票和驗(yàn)證等過程,將高耗性能操作與共識操作分開執(zhí)行能在一定程度上加快共識過程,提升業(yè)務(wù)操作區(qū)塊的生成速度,進(jìn)而達(dá)到用戶與應(yīng)用交互的需求。同時,共識過程通過主節(jié)點(diǎn)確認(rèn)區(qū)塊合法性,降低原始PBFT 的通信復(fù)雜度,也縮短了共識周期所需的時間,進(jìn)而提高共識效率。

圖1 NCPBFT 共識網(wǎng)絡(luò)結(jié)構(gòu)圖

2.2 NCPBFT 共識協(xié)議

PBFT 算法中共識過程主要分為預(yù)準(zhǔn)備、準(zhǔn)備、確認(rèn)以及回復(fù)這幾個階段。其中在準(zhǔn)備階段和確認(rèn)階段的通信量較多。在準(zhǔn)備階段,除主節(jié)點(diǎn)外的各共識節(jié)點(diǎn)會將準(zhǔn)備消息向其他共識節(jié)點(diǎn)進(jìn)行廣播,在確認(rèn)階段各共識節(jié)點(diǎn)會將確認(rèn)消息向其他的共識節(jié)點(diǎn)進(jìn)行廣播,PBFT 算法的通信復(fù)雜度為O(n2)級別。參與共識的節(jié)點(diǎn)數(shù)量越多,則共識的效率將越低,針對該問題本文提出簡化的一致性協(xié)議,由主節(jié)點(diǎn)對交易進(jìn)行排序打包生成預(yù)準(zhǔn)備消息廣播給各共識節(jié)點(diǎn),共識節(jié)點(diǎn)對其進(jìn)行驗(yàn)證然后將結(jié)果返回給主節(jié)點(diǎn),然后由主節(jié)點(diǎn)生成準(zhǔn)備消息廣播給共識節(jié)點(diǎn)以及存儲節(jié)點(diǎn)進(jìn)行驗(yàn)證保存,共識節(jié)點(diǎn)以及存儲節(jié)點(diǎn)返回確認(rèn)消息給主節(jié)點(diǎn),NCPBFT 通信復(fù)雜度將降為O(n)。

圖2 中PBFT 算法在預(yù)準(zhǔn)備階段、準(zhǔn)備階段、接受階段的通信消耗量比較多。假設(shè)共識節(jié)點(diǎn)數(shù)量為n,預(yù)準(zhǔn)備階段的通信消耗量為n -1,準(zhǔn)備階段的通信消耗量為(n -1)2,接受階段的通信消耗量為n(n -1),所以這幾個階段的總消耗量為T=2n(n-1)。

圖2 PBFT 協(xié)議過程圖

圖3 所示NCPBFT 中,假設(shè)共識節(jié)點(diǎn)數(shù)量為n,存儲節(jié)點(diǎn)數(shù)量為k,預(yù)準(zhǔn)備階段的通信消耗量為n -1,反饋階段的通信消耗量為n -1,準(zhǔn)備階段的通信消耗量為n +k -1,接受階段的通信消耗量為n +k -1,所以這幾個階段的總消耗量為T=4n +2k -4。

圖3 NCPBFT 協(xié)議過程圖

所以相較于PBFT 算法,NCPBFT 的通信復(fù)雜度降為O(n),基于節(jié)點(diǎn)貢獻(xiàn)度機(jī)制的拜占庭容錯共識算法在參與節(jié)點(diǎn)較多并處理能源互聯(lián)網(wǎng)中大量能源交易時有更高的效率。

2.3 共識過程

節(jié)點(diǎn)共識過程如圖4 所示。

如圖4 所示,在預(yù)準(zhǔn)備階段,主節(jié)點(diǎn)對交易進(jìn)行打包生成預(yù)準(zhǔn)備消息的條件有:設(shè)置預(yù)準(zhǔn)備消息包含的交易最大數(shù)量Thtx,當(dāng)交易池里的交易量超過所設(shè)置的預(yù)準(zhǔn)備消息包含的交易最大數(shù)量閾值時,主節(jié)點(diǎn)會對最早的一批交易進(jìn)行打包;設(shè)置兩個區(qū)塊生成的最大時間間隔為Thbtime,當(dāng)前區(qū)塊時間戳Tk減去前一區(qū)塊時間戳Tk-1所獲得值大于等于所設(shè)置的Thbtime時,即使交易池里的交易數(shù)量低于預(yù)準(zhǔn)備消息包含的交易最大數(shù)量,主節(jié)點(diǎn)也會對交易進(jìn)行打包,生成預(yù)備區(qū)塊。公式表示如下:

圖4 共識流程圖

在反饋階段,會設(shè)置主節(jié)點(diǎn)接收各共識節(jié)點(diǎn)返回消息的定時器,當(dāng)主節(jié)點(diǎn)接收到所有共識節(jié)點(diǎn)返回的反饋消息時,會生成正式區(qū)塊;當(dāng)定時結(jié)束,主節(jié)點(diǎn)統(tǒng)計返回的反饋消息數(shù)量,當(dāng)數(shù)量大于等于(n為共識節(jié)點(diǎn)數(shù)),則會生成準(zhǔn)備消息。公式表示為

2.4 節(jié)點(diǎn)貢獻(xiàn)度的計算

如圖5 所示,監(jiān)控節(jié)點(diǎn)根據(jù)各節(jié)點(diǎn)在共識過程中的表現(xiàn),對各節(jié)點(diǎn)的貢獻(xiàn)度進(jìn)行相應(yīng)的更新,然后根據(jù)貢獻(xiàn)度對節(jié)點(diǎn)進(jìn)行類別更新。計算節(jié)點(diǎn)的貢獻(xiàn)度以及更新節(jié)點(diǎn)類型方法如下所述。

圖5 節(jié)點(diǎn)貢獻(xiàn)度計算流程圖

對于新加入系統(tǒng)的節(jié)點(diǎn)給予其初始值:Cinit=0.5。節(jié)點(diǎn)貢獻(xiàn)值,即根據(jù)各節(jié)點(diǎn)共識行為來進(jìn)行計算:

根據(jù)各節(jié)點(diǎn)連續(xù)參與網(wǎng)絡(luò)的時間計算網(wǎng)絡(luò)穩(wěn)定值為

其中tnow表示現(xiàn)在的時間值,tstart表示節(jié)點(diǎn)接入網(wǎng)絡(luò)的時間。

最終節(jié)點(diǎn)的貢獻(xiàn)度為

其中λ為調(diào)節(jié)參數(shù),可調(diào)整節(jié)點(diǎn)貢獻(xiàn)值和網(wǎng)絡(luò)穩(wěn)定值所占的比重。而當(dāng)節(jié)點(diǎn)為惡意節(jié)點(diǎn)則將節(jié)點(diǎn)貢獻(xiàn)度設(shè)為0,并將其剔除系統(tǒng)。

則各節(jié)點(diǎn)的貢獻(xiàn)度為

3 基于位置分區(qū)的聯(lián)盟鏈存儲優(yōu)化原理

3.1 存儲優(yōu)化模型

在該模型中,節(jié)點(diǎn)分為監(jiān)控節(jié)點(diǎn)、存儲節(jié)點(diǎn)兩類。其中存儲節(jié)點(diǎn)根據(jù)性能評價指標(biāo)分為存儲節(jié)點(diǎn)和普通存儲節(jié)點(diǎn)。該優(yōu)化模型根據(jù)不同的位置劃分節(jié)點(diǎn)域,不同域間通過存儲節(jié)點(diǎn)進(jìn)行關(guān)聯(lián)。存儲優(yōu)化模型如圖6 所示。每個域內(nèi)都會有一個存儲節(jié)點(diǎn)和若干普通存儲節(jié)點(diǎn),正常情況下每隔時間t監(jiān)控節(jié)點(diǎn)會根據(jù)性能評價指標(biāo)選擇出性能最好的節(jié)點(diǎn)作為存儲節(jié)點(diǎn),其余節(jié)點(diǎn)均作為普通存儲節(jié)點(diǎn);同時為確保系統(tǒng)正常運(yùn)行,所有的存儲節(jié)點(diǎn)要求定時發(fā)送心跳到監(jiān)控節(jié)點(diǎn)并由監(jiān)控節(jié)點(diǎn)進(jìn)行監(jiān)督,一旦發(fā)現(xiàn)存在狀態(tài)異常的節(jié)點(diǎn),由監(jiān)控節(jié)點(diǎn)負(fù)責(zé)計算各節(jié)點(diǎn)的性能評價指標(biāo)值并選出狀態(tài)良好的節(jié)點(diǎn)作為該異常節(jié)點(diǎn)的替代。在存儲數(shù)據(jù)的過程中存儲節(jié)點(diǎn)會分別負(fù)責(zé)不同的模塊,普通存儲節(jié)點(diǎn)只負(fù)責(zé)存儲區(qū)塊鏈數(shù)據(jù)較少的區(qū)塊頭,并形成區(qū)塊頭鏈;而存儲節(jié)點(diǎn)負(fù)責(zé)存儲整條區(qū)塊鏈生成的區(qū)塊數(shù)據(jù)。為降低域與域間由于距離引起的通信時延,當(dāng)有新的節(jié)點(diǎn)想要加入到該區(qū)塊鏈系統(tǒng)時,通過該節(jié)點(diǎn)給出的位置信息將其分配到離它最近的節(jié)點(diǎn)域。

圖6 存儲優(yōu)化模型示意圖

3.2 數(shù)據(jù)存儲過程

本文提出的聯(lián)盟鏈存儲優(yōu)化策略的數(shù)據(jù)存儲過程如圖7 所示。在一個域內(nèi),正常情況下的具體流程如下。

圖7 存儲過程

步驟1某個節(jié)點(diǎn)接收到能源交易的數(shù)據(jù)時,首先對自身身份作出判斷,即是否為普通存儲節(jié)點(diǎn)。若該節(jié)點(diǎn)為存儲節(jié)點(diǎn)而非普通存儲節(jié)點(diǎn),可以直接對交易數(shù)據(jù)進(jìn)行投票驗(yàn)證其合法性;反之,則需要將該交易數(shù)據(jù)廣播到全網(wǎng)直至有存儲節(jié)點(diǎn)接收到轉(zhuǎn)發(fā)的信息。

步驟2存儲節(jié)點(diǎn)接收到該交易數(shù)據(jù)后,首先通過投票驗(yàn)證該交易數(shù)據(jù)的合法性。同時為了避免不必要的帶寬開銷,該存儲節(jié)點(diǎn)只將驗(yàn)證合格的交易廣播到其他存儲節(jié)點(diǎn)。

步驟3存儲節(jié)點(diǎn)打包驗(yàn)證合格的交易形成區(qū)塊,并開始參與共識。

步驟4存儲節(jié)點(diǎn)向系統(tǒng)模型發(fā)送存儲數(shù)據(jù)的請求,存儲共識生成的區(qū)塊,并向全網(wǎng)廣播區(qū)塊頭的數(shù)據(jù)。

步驟5普通節(jié)點(diǎn)接收區(qū)塊頭數(shù)據(jù)并存儲。

步驟6結(jié)束。

3.3 交易驗(yàn)證

只有在保存完整交易數(shù)據(jù)的節(jié)點(diǎn)上才能進(jìn)行相應(yīng)的交易驗(yàn)證。該模型中,每個節(jié)點(diǎn)域都存在一個保存完整區(qū)塊數(shù)據(jù)的存儲節(jié)點(diǎn),普通存儲節(jié)點(diǎn)若想進(jìn)行交易驗(yàn)證,則需要和存儲節(jié)點(diǎn)合作才能獲取相應(yīng)的驗(yàn)證結(jié)果。驗(yàn)證過程中,一旦存儲節(jié)點(diǎn)表現(xiàn)異常,無法與普通存儲節(jié)點(diǎn)合作驗(yàn)證,則需要請求監(jiān)控節(jié)點(diǎn)獲取得到網(wǎng)絡(luò)中其他存儲節(jié)點(diǎn)的節(jié)點(diǎn)列表并選出若干個存儲節(jié)點(diǎn)完成該交易的驗(yàn)證。交易驗(yàn)證的步驟如圖8 所示。

圖8 驗(yàn)證過程

具體的交易驗(yàn)證過程如下。

步驟1普通存儲節(jié)點(diǎn)想要驗(yàn)證某條交易信息,首先需要向該節(jié)點(diǎn)所在節(jié)點(diǎn)域中的存儲節(jié)點(diǎn)發(fā)送驗(yàn)證請求,并對該節(jié)點(diǎn)狀態(tài)進(jìn)行判斷。若節(jié)點(diǎn)狀態(tài)正常,存儲節(jié)點(diǎn)會對收到的驗(yàn)證請求進(jìn)行驗(yàn)證處理并將帶有數(shù)字簽名的處理結(jié)果反饋給普通存儲節(jié)點(diǎn);反之,普通存儲節(jié)點(diǎn)要繼續(xù)請求網(wǎng)絡(luò)中的其他類似的存儲節(jié)點(diǎn)進(jìn)行驗(yàn)證,并對當(dāng)前存儲節(jié)點(diǎn)作差評處理并記錄。

步驟2普通存儲節(jié)點(diǎn)接收驗(yàn)證結(jié)果。

步驟3普通存儲節(jié)點(diǎn)對驗(yàn)證結(jié)果進(jìn)行一致性判斷,若結(jié)果一致則通過驗(yàn)證并對該存儲節(jié)點(diǎn)作良好評價,最后將評價結(jié)果回饋給監(jiān)控節(jié)點(diǎn);反之,認(rèn)為返回驗(yàn)證結(jié)果的存儲節(jié)點(diǎn)狀態(tài)異常,需給予該節(jié)點(diǎn)差評處理并將評價結(jié)果回饋到監(jiān)控節(jié)點(diǎn)并請求選擇新的存儲節(jié)點(diǎn)進(jìn)行驗(yàn)證操作。

步驟4結(jié)束。

4 實(shí)驗(yàn)部分

4.1 實(shí)驗(yàn)環(huán)境設(shè)置

該存儲優(yōu)化方法的共識模塊選擇采用第2 節(jié)提到的NCPBFT 算法,存儲模塊應(yīng)用本文第3 節(jié)所提出的優(yōu)化方案。使用本地數(shù)據(jù)庫提供外部服務(wù),如交易數(shù)據(jù)和塊查詢。系統(tǒng)底層仍采用區(qū)塊鏈技術(shù)架構(gòu)體系、橢圓曲線密碼(ECC)非對稱加密算法等以保證系統(tǒng)安全性。模擬實(shí)驗(yàn)在CPU 為Intel Xeon Processor 的服務(wù)器上進(jìn)行,運(yùn)用Openstack 虛擬出17 個節(jié)點(diǎn)的ubuntu18.04 系統(tǒng),每個節(jié)點(diǎn)的硬件配置為CPU 頻率為2.4 GHz,內(nèi)存大小為2 GB,存儲容量為20 GB。劃分一個監(jiān)控節(jié)點(diǎn)和4 個域,每個域4 個節(jié)點(diǎn)。選用Hyperledge Fabric 0.6 在相同的環(huán)境下做對比實(shí)驗(yàn)。

4.2 安全性分析

本次實(shí)驗(yàn)共識模塊采用NCPBFT 算法,一種改進(jìn)的PBFT 算法,雖然只有部分節(jié)點(diǎn)參與共識過程,但同樣滿足惡意節(jié)點(diǎn)數(shù)量不超過總共識節(jié)點(diǎn)數(shù)量的1/3 時整個共識過程將順利進(jìn)行,進(jìn)而能夠有效降低通信復(fù)雜度、提高共識效率;同時采用基于位置分區(qū)的聯(lián)盟鏈存儲優(yōu)化策略,保證只有性能評價好的節(jié)點(diǎn)即存儲節(jié)點(diǎn)存儲整個區(qū)塊信息,其余普通存儲節(jié)點(diǎn)只負(fù)責(zé)存儲區(qū)塊鏈頭信息。在降低存儲壓力的同時,進(jìn)一步降低了惡意節(jié)點(diǎn)入侵造成重大損失的幾率。

4.3 結(jié)果及分析

4.3.1 節(jié)點(diǎn)共識性能測試

由于共識算法性能差異,為驗(yàn)證NCPBFT 的有效性,通過發(fā)送1000 條能源交易數(shù)據(jù),4 個節(jié)點(diǎn)對生成連續(xù)20 個區(qū)塊進(jìn)行測試。從圖9 可以看出,與其他幾種經(jīng)典共識算法如PBFT、PoS-PBFT、RAFT等相比,本文所提NCPBFT 吞吐量的平均值有了明顯提升,整個交易處理過程花費(fèi)時間較少。這主要是由于NCPBFT 優(yōu)化了主節(jié)點(diǎn)選取過程,降低了共識算法通信復(fù)雜度。

圖9 經(jīng)典共識算法吞吐量比較

當(dāng)參與共識的節(jié)點(diǎn)數(shù)為4 的時候,分別選擇包含50、100、200、300、500、700、1000、1500、2000、2500、3000 等交易量的區(qū)塊大小,針對本文所提出的算法NCPDBT 及傳統(tǒng)PBFT 算法的時延、吞吐量進(jìn)行相應(yīng)的實(shí)驗(yàn)分析。具體實(shí)驗(yàn)結(jié)果如圖10 和圖11所示。

圖10 區(qū)塊大小不同時傳統(tǒng)PBFT 及NCPBFT 中吞吐量對比圖

圖11 區(qū)塊大小變化時傳統(tǒng)PBFT 及NCPBFT 算法時延對比圖

由圖10、11 可以看出,本文方案相較于PBFT算法有著較高的吞吐量和較低的時延,兩個方案中吞吐量在開始時會隨著區(qū)塊內(nèi)交易數(shù)量的增多而升高,但在區(qū)塊的大小到達(dá)某一值之后其吞吐量則增長緩慢甚至?xí)档?。而時延是隨著區(qū)塊的增大而不斷在增大的。所以區(qū)塊的大小要選擇一個最適值來獲得最佳的性能??傮w來說,本文方案較PBFT 算法的性能更優(yōu)。

接下來在區(qū)塊大小為300,共識節(jié)點(diǎn)數(shù)為4 個、6 個、8 個時,分別給出了NCPBFT 共識算法在20 次實(shí)驗(yàn)中吞吐量和時延的變化的值,結(jié)果如圖12 所示。

圖12 NCPBFT 算法區(qū)塊大小為300 時不同共識節(jié)點(diǎn)數(shù)下的性能

在區(qū)塊大小為500,共識節(jié)點(diǎn)數(shù)分別為4 個、6個、8 個時,NCPBFT 算法在20 次實(shí)驗(yàn)中的吞吐量和時延的變化值如圖13 所示。

圖13 NCPBFT 算法區(qū)塊大小為500 時不同共識節(jié)點(diǎn)數(shù)下的性能

圖12 和圖13 是基于NCPBFT 共識算法,在不同的共識節(jié)點(diǎn)情況下,在多次實(shí)驗(yàn)中吞吐量和時延的變化,由圖可以看出在區(qū)塊大小固定不變時,共識節(jié)點(diǎn)數(shù)越多,其吞吐量會越低,而時延會越高。這是因?yàn)楣?jié)點(diǎn)數(shù)增加了,各節(jié)點(diǎn)的通信次數(shù)就會增加,所以時延會增大,吞吐量則會減小。

4.3.2 存儲開銷測試

網(wǎng)絡(luò)中全部節(jié)點(diǎn)正常工作且不受攻擊時,比較在本文及Fabric 存儲策略下每個區(qū)塊存儲500、1000、2000、3000 個區(qū)塊數(shù)據(jù)的存儲開銷,其結(jié)果如圖14 所示。

圖14 文中策略與Fabric 存儲占比對比圖

通過分析圖14 的實(shí)驗(yàn)結(jié)果,可以得出如下結(jié)論。

(1) 當(dāng)整個區(qū)塊鏈中只生成少量區(qū)塊時,本文所提出的存儲優(yōu)化策略較Fabric 存儲而言其優(yōu)勢不是很明顯,但當(dāng)交易量的增多導(dǎo)致區(qū)塊鏈中區(qū)塊逐漸增多時,本文提出的存儲策略所要占用的存儲空間比Fabric 的要小很多。

(2) 交易量增多導(dǎo)致區(qū)塊鏈中區(qū)塊逐漸增多的情況下,本文所提存儲方案的存儲占用增長速率要遠(yuǎn)遠(yuǎn)低于Fabric 存儲。

Fabric 內(nèi)的每個節(jié)點(diǎn)都存儲完整的區(qū)塊數(shù)據(jù),而本文所提存儲方案中每個節(jié)點(diǎn)域只有存儲節(jié)點(diǎn)才會存儲完整的區(qū)塊數(shù)據(jù),在普通存儲節(jié)點(diǎn)內(nèi)部只對區(qū)塊鏈中的每個區(qū)塊的區(qū)塊頭進(jìn)行相應(yīng)的存儲;當(dāng)區(qū)塊數(shù)逐漸增大時,本文方案的優(yōu)勢更加明顯,與Fabric 相比存儲占用雖然也在逐漸增加,但其增長速度明顯變緩。此次實(shí)驗(yàn)結(jié)果證明了本文所提策略的有效性。

4.3.3 交易驗(yàn)證測試

交易驗(yàn)證過程中,區(qū)塊鏈系統(tǒng)對驗(yàn)證請求的響應(yīng)時間對當(dāng)次交易驗(yàn)證能否有合理的反饋結(jié)果起著至關(guān)重要的作用,此次驗(yàn)證主要以不同節(jié)點(diǎn)對相同交易驗(yàn)證請求進(jìn)行處理的時間為基準(zhǔn)進(jìn)行驗(yàn)證測試。假設(shè)區(qū)塊鏈系統(tǒng)中節(jié)點(diǎn)運(yùn)行狀態(tài)正常,選擇存儲節(jié)點(diǎn)、普通存儲節(jié)點(diǎn)、Fabric 中的節(jié)點(diǎn),比較同一節(jié)點(diǎn)在查詢驗(yàn)證500、1000、2000、3000 條交易所需的驗(yàn)證時間。具體結(jié)果如圖15 所示。

圖15 交易驗(yàn)證對比圖

根據(jù)圖15 結(jié)果,可得出以下結(jié)論。

(1) 查詢的交易數(shù)量相同的情況下,普通存儲節(jié)點(diǎn)、存儲節(jié)點(diǎn)和Fabric 節(jié)點(diǎn)的查詢驗(yàn)證時間均會隨著數(shù)據(jù)量的增大而變長。

(2) 查詢的交易數(shù)量相同的情況下,在存儲節(jié)點(diǎn)上和在Fabric 節(jié)點(diǎn)上查詢驗(yàn)證的時間幾乎一致。

(3) 查詢的交易數(shù)量相同的情況下,在普通存儲節(jié)點(diǎn)上進(jìn)行查詢驗(yàn)證的時間要遠(yuǎn)遠(yuǎn)高于在存儲節(jié)點(diǎn)和在Fabric 節(jié)點(diǎn)上的時間。

基于分區(qū)的存儲優(yōu)化策略下,區(qū)塊數(shù)據(jù)分別由存儲節(jié)點(diǎn)和普通存儲節(jié)點(diǎn)進(jìn)行存儲,其中只有存儲節(jié)點(diǎn)才有權(quán)存儲完整的區(qū)塊信息,普通存儲節(jié)點(diǎn)只負(fù)責(zé)區(qū)塊頭信息的存儲。由普通節(jié)點(diǎn)發(fā)起的驗(yàn)證請求要通過進(jìn)一步轉(zhuǎn)發(fā)給存儲節(jié)點(diǎn)才能進(jìn)行交易的驗(yàn)證,故而查詢會稍慢一些。Fabric 的所有節(jié)點(diǎn)均存有區(qū)塊的完整數(shù)據(jù),故而查詢驗(yàn)證Fabric 節(jié)點(diǎn)的時間與查詢驗(yàn)證存儲節(jié)點(diǎn)的時間相差無幾。綜上所述,盡管普通存儲節(jié)點(diǎn)查詢驗(yàn)證時間的時間會稍長,但并不影響整個區(qū)塊鏈能源交易系統(tǒng)的正常運(yùn)行。

5 結(jié)論

為了提升能源互聯(lián)網(wǎng)中能源交易效率、降低通信復(fù)雜度及能源數(shù)據(jù)的存儲壓力、實(shí)現(xiàn)能源互聯(lián)網(wǎng)跨企業(yè)之間的數(shù)據(jù)共享,本文基于區(qū)塊鏈共識算法、存儲策略等技術(shù),提出了一種改進(jìn)的基于節(jié)點(diǎn)貢獻(xiàn)度的實(shí)用拜占庭容錯共識機(jī)制。根據(jù)節(jié)點(diǎn)貢獻(xiàn)值計算并進(jìn)行共識節(jié)點(diǎn)的選取,保證節(jié)點(diǎn)進(jìn)入?yún)^(qū)塊鏈網(wǎng)絡(luò)的可靠性、能源數(shù)據(jù)的不可篡改性的同時降低通信復(fù)雜度、提升能源交易效率;在聯(lián)盟鏈數(shù)據(jù)分區(qū)存儲節(jié)點(diǎn)存儲優(yōu)化策略中,基于存儲節(jié)點(diǎn)的地理位置劃分出的不同域組,每個域只有一個存儲節(jié)點(diǎn)和若干個普通存儲節(jié)點(diǎn),只有存儲節(jié)點(diǎn)保存區(qū)塊鏈中全部數(shù)據(jù),其余節(jié)點(diǎn)只需要保存區(qū)塊頭,進(jìn)一步減輕區(qū)塊鏈存儲壓力。通過實(shí)驗(yàn)驗(yàn)證了本文所提方案能夠有效提升能源交易效率、降低通信復(fù)雜度及區(qū)塊鏈存儲壓力。

猜你喜歡
貢獻(xiàn)度共識區(qū)塊
共識 共進(jìn) 共情 共學(xué):讓“溝通之花”綻放
國有林業(yè)產(chǎn)業(yè)對地區(qū)經(jīng)濟(jì)發(fā)展貢獻(xiàn)度的動態(tài)演繹分析
區(qū)塊鏈:一個改變未來的幽靈
論思想共識凝聚的文化向度
區(qū)塊鏈:主要角色和衍生應(yīng)用
《紅樓夢》的數(shù)字化述評——兼及區(qū)塊鏈的啟示
商量出共識
一場區(qū)塊鏈引發(fā)的全民狂歡
信息通信裝備體系能力貢獻(xiàn)度評估方法研究
聯(lián)合作戰(zhàn)太空作戰(zhàn)力量體系貢獻(xiàn)度仿真分析框架研究