李鵬飛 肖恒輝 易 環(huán) 曾嘉煒
(1.華南理工大學(xué)電子與信息學(xué)院,廣東 廣州 510000;2.廣東省通信產(chǎn)業(yè)服務(wù)有限公司,廣東 廣州 510000;3.廣東省電信規(guī)劃設(shè)計(jì)院有限公司,廣東 廣州 510000)
隨著能源轉(zhuǎn)型的不斷升級(jí),電動(dòng)汽車(EV)由于其自身低碳節(jié)能的優(yōu)勢(shì),在國(guó)內(nèi)外得到了很大發(fā)展,并且為實(shí)現(xiàn)國(guó)內(nèi)碳達(dá)峰、碳中和的目標(biāo)以及解決汽車尾氣排放、化石能源短缺越來(lái)越嚴(yán)重等相關(guān)問(wèn)題。然而,隨著電動(dòng)汽車的數(shù)量與規(guī)模不斷擴(kuò)大,大量電動(dòng)汽車的充電負(fù)荷接入到電網(wǎng)后,給電力系統(tǒng)的安全運(yùn)行帶來(lái)了很多新的挑戰(zhàn)[1]。如何完善充電基礎(chǔ)設(shè)施建設(shè)與安全、可靠、高效、便捷的充電服務(wù)就成為電動(dòng)汽車普及道路上的重點(diǎn)難題,尤其對(duì)充電交易的安全性、穩(wěn)定性、快速性提出了相當(dāng)高的要求[2]。
區(qū)塊鏈?zhǔn)荖akamoto在2008年提出的具有發(fā)展前景的新興技術(shù)[3]。區(qū)塊鏈的最初應(yīng)用是比特幣的基礎(chǔ)技術(shù),比特幣是一種加密貨幣。區(qū)塊鏈具有安全性和防篡改的優(yōu)點(diǎn),這是基于數(shù)學(xué)和密碼學(xué)所發(fā)揮的作用[4]。同時(shí),區(qū)塊鏈也是一種共享且受信任的分布式賬本技術(shù),它能夠?qū)崟r(shí)確認(rèn)交易并通過(guò)安全加密技術(shù)確保交易的完整性。它可以在點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)中建立信任鏈接,網(wǎng)絡(luò)中的所有節(jié)點(diǎn)(如公司、客戶等)可以相互信任,加速業(yè)務(wù)流程向前發(fā)展。除在金融領(lǐng)域的應(yīng)用外,區(qū)塊鏈技術(shù)還被廣泛應(yīng)用于智能電網(wǎng)、物聯(lián)網(wǎng)、供應(yīng)鏈管理、數(shù)據(jù)管理等領(lǐng)域。區(qū)塊鏈技術(shù)使信任網(wǎng)絡(luò)消除了中介參與的運(yùn)營(yíng)成本,有利于在能源交易市場(chǎng)上實(shí)現(xiàn)更快、更安全、更便宜的交易方式[5-6]。
目前,國(guó)內(nèi)外眾多學(xué)者對(duì)區(qū)塊鏈技術(shù)運(yùn)用到電動(dòng)汽車充電交易中的模型、機(jī)制和方法進(jìn)行了大量的深入探討與研究。王浩然等(2020)首先提出基于區(qū)塊鏈的充電權(quán)交易機(jī)制與模型,利用區(qū)塊鏈的智能合約以公平的方式分配初始充電權(quán)并確保設(shè)備不過(guò)載,然后設(shè)計(jì)了基于以太坊區(qū)塊鏈的充電權(quán)分配與交易平臺(tái)及智能合約,確保配網(wǎng)的安全運(yùn)行及充電權(quán)交易的公開透明與高效智能[7]。金志剛等(2019)提出基于聯(lián)盟鏈的電動(dòng)汽車充電交易模型[8]。首先建立多充電運(yùn)營(yíng)商、公用供電公司之間互聯(lián)互信的交易網(wǎng)絡(luò)與通道,通過(guò)實(shí)用拜占庭容錯(cuò)(PBFT)共識(shí)算法給出電動(dòng)汽車充電交易驗(yàn)證方式,并使用智能合約完成電動(dòng)汽車賬戶在交易通道上的轉(zhuǎn)賬、評(píng)價(jià)和查詢過(guò)程。在該模型下,各公司的充電站節(jié)點(diǎn)可直接驗(yàn)證交易,實(shí)現(xiàn)充電服務(wù)的互聯(lián)與充電交易的自主管理,提升了充電服務(wù)的便利性和靈活性。Iqbal等(2021)提出一種安全和分散的基于區(qū)塊鏈的電動(dòng)汽車能源交易模型[9],使用智能合約實(shí)現(xiàn)車輛中電動(dòng)汽車之間的點(diǎn)對(duì)點(diǎn)交易,并且基于區(qū)塊鏈的框架提供了一個(gè)安全、高效和透明的交易模型。參與交易的EV和聚合器應(yīng)在受信任的機(jī)構(gòu)注冊(cè),注冊(cè)成功后,電動(dòng)汽車和聚合器都以匿名方式相互驗(yàn)證。只有授權(quán)的電動(dòng)汽車參與相反的拍賣機(jī)制,以根據(jù)其需求進(jìn)行充電交易。
傳統(tǒng)聯(lián)盟鏈區(qū)塊鏈中,通常采用PBFT或變種的PBFT共識(shí)算法實(shí)現(xiàn)區(qū)塊鏈上數(shù)據(jù)的一致性存儲(chǔ)。傳統(tǒng)PBFT共識(shí)算法共分為5個(gè)階段:Request、Pre-prepare、Prepare、Commit、Reply。其工作流程如圖1所示,圖中C為交易上鏈請(qǐng)求客戶端,0為主節(jié)點(diǎn),1~3為3個(gè)副節(jié)點(diǎn)。
圖1 傳統(tǒng)PBFT共識(shí)算法工作原理圖
傳統(tǒng)PBFT共識(shí)算法的具體工作原理如下:
(1)Request:客戶端向主節(jié)點(diǎn)發(fā)送交易上鏈請(qǐng)求,請(qǐng)求包含交易內(nèi)容、交易摘要和消息簽名。
(2)Pre-prepare:主節(jié)點(diǎn)收到客戶端的交易上鏈請(qǐng)求,主節(jié)點(diǎn)校驗(yàn)客戶端請(qǐng)求消息的簽名是否正確;校驗(yàn)無(wú)問(wèn)題則向其他共識(shí)節(jié)點(diǎn)廣播Pre-prepare消息。
(3)Prepare:副節(jié)點(diǎn)收到主節(jié)點(diǎn)的Pre-prepare消息,對(duì)主節(jié)點(diǎn)的Pre-prepare消息簽名是否正確、計(jì)算交易內(nèi)容的摘要與交易摘要是否一致進(jìn)行校驗(yàn);校驗(yàn)無(wú)問(wèn)題則向其他共識(shí)節(jié)點(diǎn)廣播Prepare消息。
(4)Commit:主節(jié)點(diǎn)和副節(jié)點(diǎn)收到Prepare消息,對(duì)Prepare消息簽名是否正確、Prepare消息中的交易摘要和Pre-prepare消息中的交易摘要是否一致進(jìn)行校驗(yàn);如果某共識(shí)節(jié)點(diǎn)收到且校驗(yàn)成功2f+1個(gè)Prepare消息,則向其他共識(shí)節(jié)點(diǎn)廣播Commit消息。
(5)Reply:主節(jié)點(diǎn)和副節(jié)點(diǎn)收到Commit消息,對(duì)Commit消息簽名是否正確進(jìn)行校驗(yàn);如果某共識(shí)節(jié)點(diǎn)收到且校驗(yàn)成功2f+1個(gè)Commit消息,則運(yùn)行客戶端的請(qǐng)求操作,并返回Reply消息給客戶端。
電動(dòng)汽車的充電交易體系架構(gòu)從技術(shù)角度可以分為數(shù)據(jù)層、網(wǎng)絡(luò)層、區(qū)塊鏈層、應(yīng)用層。區(qū)塊鏈技術(shù)是連接充電站運(yùn)營(yíng)商、公共供電企業(yè)、政府監(jiān)管部門和電動(dòng)汽車用戶的技術(shù)紐帶,每個(gè)參與方的相關(guān)交易信息都需要區(qū)塊鏈技術(shù)來(lái)確保交易各環(huán)節(jié)的安全可靠。圖2為電動(dòng)汽車充電交易的架構(gòu)模型,包含了各個(gè)參與相關(guān)方的節(jié)點(diǎn)。每個(gè)充電運(yùn)營(yíng)商或公用供電公司作為交易網(wǎng)絡(luò)結(jié)構(gòu)中的一個(gè)組織,每個(gè)組織擁有多個(gè)充電站節(jié)點(diǎn)。智能合約可以對(duì)客戶端提出的充電交易提案進(jìn)行簽名背書,并反饋結(jié)果。交易模型根據(jù)節(jié)點(diǎn)的背書次數(shù)計(jì)算背書經(jīng)驗(yàn)值M,并在服務(wù)評(píng)價(jià)時(shí)參考這一指標(biāo),從而激勵(lì)各充電站節(jié)點(diǎn)擔(dān)任背書節(jié)點(diǎn),維護(hù)區(qū)塊鏈平臺(tái)穩(wěn)定運(yùn)行。背書經(jīng)驗(yàn)值M計(jì)算表達(dá)式如下式(1)。
圖2 電動(dòng)汽車的充電交易架構(gòu)模型
式中:lcs,n為截至此次交易時(shí)充電站節(jié)點(diǎn)擔(dān)任背書節(jié)點(diǎn)的賬本更新次數(shù),Ln為賬本更新總次數(shù),β為調(diào)節(jié)背書經(jīng)驗(yàn)值的權(quán)值。所有充電站節(jié)點(diǎn)通過(guò)聯(lián)盟鏈的數(shù)字證書認(rèn)證中心模塊實(shí)現(xiàn)了公鑰基礎(chǔ)設(shè)施服務(wù),并設(shè)置成員資格服務(wù)提供者組件,抽象化各參與主體之間的控制結(jié)構(gòu)關(guān)系,進(jìn)行身份認(rèn)證和權(quán)限控制。
傳統(tǒng)方式的PBFT共識(shí)算法的Pre-prepare和Prepare階段一般會(huì)占用一次共識(shí)操作的超過(guò)50%的時(shí)間。在區(qū)塊鏈網(wǎng)絡(luò)中的共識(shí)節(jié)點(diǎn)數(shù)量越大,該階段耗費(fèi)的計(jì)算機(jī)算力和網(wǎng)絡(luò)資源開銷就越大,且該階段的效率受到區(qū)塊鏈網(wǎng)絡(luò)中算力最低的一臺(tái)或幾臺(tái)服務(wù)器制約,所有共識(shí)節(jié)點(diǎn)需要等候收到區(qū)塊鏈網(wǎng)絡(luò)中算力最低的一臺(tái)或幾臺(tái)服務(wù)器的Prepare消息才會(huì)進(jìn)行下一階段操作。因此,傳統(tǒng)PBFT共識(shí)算法的Prepare階段大幅度制約了聯(lián)盟鏈區(qū)塊鏈的性能即TPS(每秒交易數(shù))的增長(zhǎng),隨著聯(lián)盟鏈區(qū)塊鏈中共識(shí)節(jié)點(diǎn)數(shù)量的增長(zhǎng),區(qū)塊鏈性能將變得越來(lái)越差,且性能改善變得越來(lái)越難。本文所提出的方法對(duì)PBFT共識(shí)算法的Prepare階段進(jìn)行了重構(gòu),具體過(guò)程如下。
客戶端向主節(jié)點(diǎn)發(fā)送上鏈交易請(qǐng)求,完整交易包含交易的內(nèi)容m、交易的摘要D(m)和消息簽名。
主節(jié)點(diǎn)收到客戶端的交易上鏈請(qǐng)求,主節(jié)點(diǎn)校驗(yàn)客戶端請(qǐng)求消息的簽名是否正確。
(1)對(duì)每條上鏈交易進(jìn)行編號(hào),記為Seq,每條交易均有唯一編號(hào)。客戶端上傳的第一條交 易編號(hào)為Seq=1,此后客戶端每.上傳一條交易,則Seq自增1,該編號(hào)不清零重置。
(2)副節(jié)點(diǎn)總數(shù)記為N-1。該編號(hào)只有在視圖轉(zhuǎn)換,即主節(jié)點(diǎn)切換時(shí)更新。
(3)為每個(gè)副節(jié)點(diǎn)編號(hào),記為ni=1,2,3,…,(N-1)。如1號(hào)副節(jié)點(diǎn)記為n1=1,i號(hào)副節(jié)點(diǎn)記為ni=i。該編號(hào)只有在視圖轉(zhuǎn)換,即主節(jié)點(diǎn)切換時(shí)更新。
(4)i號(hào)副節(jié)點(diǎn)的校驗(yàn)任務(wù)隊(duì)列長(zhǎng)度記為qi。該數(shù)據(jù)實(shí)時(shí)更新,實(shí)時(shí)上報(bào)給主節(jié)點(diǎn)。
(5)i號(hào)副節(jié)點(diǎn)的計(jì)算機(jī)參考算力記為hi。該數(shù)據(jù)只有在對(duì)應(yīng)共識(shí)節(jié)點(diǎn)加入?yún)^(qū)塊鏈時(shí)進(jìn)行更新。
(6)主節(jié)點(diǎn)輪詢操作計(jì)數(shù)器記為j。主節(jié)點(diǎn)每執(zhí)行一次輪詢操作該數(shù)據(jù)自增1,更換主節(jié)點(diǎn)后,該數(shù)值清零重置。
(7)區(qū)塊鏈的最大TPS記為Tmax。該數(shù)據(jù)需要在區(qū)塊鏈設(shè)置中進(jìn)行配置。
3.3.1 算法流程
輪詢與校驗(yàn)流程架構(gòu)如圖3所示,步驟如下:
圖3 改進(jìn)的Prepare階段算法的輪詢與校驗(yàn)流程圖
(1)主節(jié)點(diǎn)把待校驗(yàn)交易放人本機(jī)內(nèi)存的“緩存池”,“緩存池”中的所有交易按Seq編號(hào)進(jìn)行排序,只有主節(jié)點(diǎn)有權(quán)限執(zhí)行寫人和刪除“緩存池”中的交易。
(2)主節(jié)點(diǎn)確認(rèn)N、ni、hi、Tmax值有無(wú)更新,有則更新,無(wú)則進(jìn)行下一步。
(3)主節(jié)點(diǎn)根據(jù)實(shí)時(shí)消息更新qi、j。
(4)主節(jié)點(diǎn)計(jì)算i=j MOD (N-1)。
(9)以上第(1)~ (8)步稱為一次輪詢操作,完成上述(1)~ (8)步后,主節(jié)點(diǎn)輪詢計(jì)數(shù)器j=ji+1。主節(jié)點(diǎn)隨機(jī)生成驗(yàn)證字符串char,并將驗(yàn)證字符串char放入“緩存池”編號(hào)為Seq的交易頭中。
(10)主節(jié)點(diǎn)將待校驗(yàn)交易編號(hào)Seq和驗(yàn)證字符串char封裝進(jìn)訪問(wèn)令牌Tseq中,再把訪問(wèn)令牌Tseq發(fā)送給ni副節(jié)點(diǎn)。
(11)副節(jié)點(diǎn)ni發(fā)送訪問(wèn)令牌Tseq。中的待校驗(yàn)交易編號(hào)Seq去主節(jié)點(diǎn)的“緩存池”中查找交易。若查找到交易存在,副節(jié)點(diǎn)ni發(fā)送訪問(wèn)令牌Tseq中的驗(yàn)證字符串char給主節(jié)點(diǎn),主節(jié)點(diǎn)對(duì)比訪問(wèn)令牌Tseq中的驗(yàn)證字符串char與“緩存池”中交易頭存儲(chǔ)的驗(yàn)證字符串char是否一致。若一致則將完整交易Seq發(fā)送給副節(jié)點(diǎn)ni。
(12)副節(jié)點(diǎn)ni接收到交易后,回復(fù)主節(jié)點(diǎn)“ACK”消息,主節(jié)點(diǎn)接收到“ACK”消息后,將“緩存池”內(nèi)的編號(hào)為Seq的交易清除。
(13)副節(jié)點(diǎn)ni執(zhí)行校驗(yàn):計(jì)算編號(hào)為Seq的交易內(nèi)容m的摘要D'(m),對(duì)比D(m)與完整交易中的交易摘要D(m),若兩者一致則記為校驗(yàn)通過(guò)。校驗(yàn)通過(guò)后,副節(jié)點(diǎn)將校驗(yàn)通過(guò)結(jié)果封裝進(jìn)Prepare消息,并廣播消息給區(qū)塊鏈網(wǎng)絡(luò)中的所有共識(shí)節(jié)點(diǎn)。
3.3.2 “緩存池”操作流程
“緩存池”架構(gòu)及流程圖如圖4所示,步驟如下:
圖4 改進(jìn)的Prepare階段涉及的“緩存池”架構(gòu)及流程
(1)客戶端將交易上鏈申請(qǐng)?zhí)峤唤o主節(jié)點(diǎn),主節(jié)點(diǎn)對(duì)該筆交易進(jìn)行編號(hào):客戶端上傳的第一條交易編為Seq=1,此后客戶端每上傳一條交易,則Seq自增1,該編號(hào)不清零重置。
(2)主節(jié)點(diǎn)將該筆交易放人本機(jī)內(nèi)存的“緩存池”,對(duì)應(yīng)算法流程第(1)步。
(3)主節(jié)點(diǎn)完成輪詢操作,生成驗(yàn)證字符串char,將驗(yàn)證字符串char放入“緩存池”,封裝進(jìn)訪問(wèn)令牌,發(fā)放訪問(wèn)令牌給副節(jié)點(diǎn),對(duì)應(yīng)算法流程第(9)~ (10)步。
(4)副節(jié)點(diǎn)憑令牌從主節(jié)點(diǎn)獲取該條交易,對(duì)應(yīng)算法流程第(11)~ (12) 步。
(5)副節(jié)點(diǎn)對(duì)編號(hào)為Seq的交易進(jìn)行校驗(yàn),對(duì)應(yīng)算法流程第(13)步。
Commit階段與Reply階段與傳統(tǒng)PBFT共識(shí)算法沒(méi)有差異。
在電動(dòng)汽車數(shù)量大規(guī)模增長(zhǎng)與對(duì)充電交易的安全性和高效性的要求越來(lái)越高的全球環(huán)境下,本文提出對(duì)PBFT共識(shí)算法中最復(fù)雜、計(jì)算機(jī)資源開銷最大的階段進(jìn)行改進(jìn),即對(duì)PBFT共識(shí)算法的Prepare階段進(jìn)行了重構(gòu)。不再要求區(qū)塊鏈網(wǎng)絡(luò)中的所有共識(shí)節(jié)點(diǎn)進(jìn)行交易摘要計(jì)算、交易摘要比對(duì)、比對(duì)結(jié)果廣播,改為由主節(jié)點(diǎn)根據(jù)副節(jié)點(diǎn)當(dāng)前的工作負(fù)載、算力資源信息,輪詢副節(jié)點(diǎn),派發(fā)交易摘要計(jì)算、比對(duì)、結(jié)果廣播工作到最優(yōu)副節(jié)點(diǎn),由單個(gè)最優(yōu)副節(jié)點(diǎn)完成交易摘要計(jì)算、交易摘要比對(duì)、比對(duì)結(jié)果廣播工作。從而可以降低該階段的耗時(shí),并提升交易網(wǎng)絡(luò)的共識(shí)性能,提升電動(dòng)汽車充電交易的并發(fā)交易數(shù)。隨著電動(dòng)汽車充電交易的區(qū)塊鏈網(wǎng)絡(luò)中共識(shí)節(jié)點(diǎn)的增多,該改進(jìn)的算法對(duì)比傳統(tǒng)PBFT共識(shí)算法的性能優(yōu)勢(shì)也會(huì)越明顯,交易的安全性和高效性也會(huì)越來(lái)越顯著。