王光輝,程功旭,李 青
(1.鄭州大學(xué)信息管理學(xué)院,河南 鄭州 450001;2.國(guó)網(wǎng)青海省電力公司調(diào)度控制中心,青海 西寧 810001;3.南瑞集團(tuán)有限公司電網(wǎng)事業(yè)部,江蘇 南京 210000)
近年來,國(guó)家提出建設(shè)泛在電力物聯(lián)網(wǎng)是落實(shí)“三型兩網(wǎng)、世界一流”戰(zhàn)略目標(biāo)的核心任務(wù)[1]。泛在電力物聯(lián)網(wǎng)[2-3]指任何時(shí)間、任何地點(diǎn)、任何人、任何事物的信息連接和交互,而電力資源供應(yīng)鏈的建設(shè)是泛在物聯(lián)網(wǎng)構(gòu)建的重要環(huán)節(jié)。
供應(yīng)鏈信息的共享可以促進(jìn)經(jīng)營(yíng)主體之間的相互監(jiān)督,促進(jìn)供應(yīng)方供給能力與需求方具體需求的透明化。比如現(xiàn)在的ERP 系統(tǒng)、e-ERP 系統(tǒng)已經(jīng)實(shí)現(xiàn)供應(yīng)鏈部分業(yè)務(wù)環(huán)節(jié)間信息共享與相關(guān)業(yè)務(wù)的整合[4],但是上述系統(tǒng)對(duì)不斷變化的需求與決策響應(yīng)較為困難,沒有從供應(yīng)鏈整體角度進(jìn)行信息和業(yè)務(wù)的整合與協(xié)調(diào)[5-6]。
目前,現(xiàn)有供應(yīng)鏈系統(tǒng)的業(yè)務(wù)內(nèi)容與業(yè)務(wù)鏈路相互獨(dú)立,業(yè)務(wù)主體之間的監(jiān)督不足。例如在一些供應(yīng)鏈中,物資需求方監(jiān)督供應(yīng)商或發(fā)電廠,但這種監(jiān)控是單向的[7-8],從整個(gè)供應(yīng)鏈來看,各業(yè)務(wù)主體之間還缺乏集團(tuán)化、多方位、開放式的相互監(jiān)督,不同業(yè)務(wù)間的信息流交互性差、實(shí)時(shí)性差,對(duì)整體運(yùn)營(yíng)效率有很大影響。經(jīng)過分析研究,提取出現(xiàn)有的電力物資備品供應(yīng)鏈信息傳遞的拓?fù)浣Y(jié)構(gòu)如圖1所示。
圖1 供應(yīng)鏈業(yè)務(wù)實(shí)體業(yè)務(wù)信息傳遞圖
從圖1 中可看出供應(yīng)鏈中供應(yīng)商與賣家、賣家與客戶之間業(yè)務(wù)相互獨(dú)立,有獨(dú)立的交易平臺(tái),每個(gè)業(yè)務(wù)實(shí)體只能關(guān)注與自身事務(wù)相關(guān)的供給信息,產(chǎn)生的弊端是每個(gè)業(yè)務(wù)實(shí)體很難了解完整的供應(yīng)鏈結(jié)構(gòu)與運(yùn)作。這種電力供應(yīng)鏈模式集成協(xié)調(diào)能力差、信息共享能力差,整體效率降低,若對(duì)電力物資數(shù)據(jù)進(jìn)行存儲(chǔ)與追溯,存在著供應(yīng)鏈各環(huán)節(jié)信息不共享、引發(fā)數(shù)據(jù)信息孤島或數(shù)據(jù)造假等問題[9-10]。
為避免供應(yīng)鏈信息未共享產(chǎn)生的信息不對(duì)稱問題,現(xiàn)有電力系統(tǒng)研究者利用區(qū)塊鏈技術(shù)的信息透明性、可追溯性來解決這一問題,但區(qū)塊鏈技術(shù)具有多個(gè)區(qū)塊節(jié)點(diǎn)與共識(shí)節(jié)點(diǎn)來共同存儲(chǔ)數(shù)據(jù)信息,隨著用戶數(shù)據(jù)量的增多,區(qū)塊鏈會(huì)出現(xiàn)高冗余存儲(chǔ)問題,而區(qū)塊數(shù)據(jù)存儲(chǔ)空間大小也限制了區(qū)塊鏈技術(shù)的發(fā)展[11]。
同樣基于區(qū)塊鏈技術(shù)的共享云倉(cāng)涉及電力主體眾多,一方面不同電力主體需要電力物資商品共享,供應(yīng)鏈的各業(yè)務(wù)主體需要電力物資商品的生產(chǎn)數(shù)據(jù)、供應(yīng)數(shù)據(jù)等信息的透明化共享,來解決物資上下游信息不對(duì)稱問題,另一方面不同電力供應(yīng)商間又處于競(jìng)爭(zhēng)關(guān)系,存在信息隱私與財(cái)務(wù)數(shù)據(jù)的保護(hù)問題,因此共享云倉(cāng)的設(shè)計(jì)需考慮信息數(shù)據(jù)透明化與部分隱私數(shù)據(jù)保護(hù)等因素,來構(gòu)建完備的系統(tǒng)分級(jí)訪問權(quán)限控制機(jī)制。
目前電力物資供應(yīng)鏈底層平臺(tái)難以處理高并發(fā)上鏈請(qǐng)求,若并發(fā)量太大,輕則區(qū)塊鏈組網(wǎng)性能受到影響,重則導(dǎo)致共識(shí)節(jié)點(diǎn)宕機(jī)[12]。為保障電力物資共享云倉(cāng)交易上鏈的可靠性,基于區(qū)塊鏈技術(shù)的電力物資共享云倉(cāng)的架構(gòu)需考慮信息智能合約、流量控制、系統(tǒng)的容錯(cuò)機(jī)制方面的設(shè)計(jì)。
因此本文基于區(qū)塊鏈技術(shù)構(gòu)建電力資源供應(yīng)鏈共享云倉(cāng),為促進(jìn)企業(yè)主體之間的互相監(jiān)督,促進(jìn)供給側(cè)供給能力與需求方具體要求的透明度,實(shí)現(xiàn)電力資源信息共享與供需精確對(duì)接,設(shè)計(jì)以信息共享思想為核心的供應(yīng)鏈架構(gòu);考慮外部多源數(shù)據(jù)信息的存儲(chǔ),提出一種供應(yīng)鏈內(nèi)部與外部多源數(shù)據(jù)信息塊的記錄方法,實(shí)現(xiàn)數(shù)據(jù)信息的安全存儲(chǔ);考慮云倉(cāng)系統(tǒng)訪問權(quán)限控制機(jī)制,構(gòu)建各主體的訪問分級(jí)權(quán)限機(jī)制,來解決主體間權(quán)限訪問透明性低問題;考慮信息技術(shù)智能合約制定與上鏈交易請(qǐng)求的可靠性,設(shè)計(jì)信息智能合約,并針對(duì)高并發(fā)的交易上鏈請(qǐng)求影響區(qū)塊鏈組網(wǎng)性能問題,提出一種流量控制算法,提高共享云倉(cāng)的可靠性。
共享云倉(cāng)平臺(tái)利用互聯(lián)網(wǎng)、物聯(lián)網(wǎng)、二維碼等信息化技術(shù)手段,聯(lián)接了電力企業(yè)、設(shè)備供應(yīng)商、區(qū)域倉(cāng)儲(chǔ)平臺(tái)、區(qū)域分庫(kù)以及急救包等多方主體,對(duì)互聯(lián)網(wǎng)電力企業(yè)的設(shè)備采購(gòu)、設(shè)備需求信息的生成、庫(kù)存合理性審核、設(shè)備調(diào)配、物流配送等全流程進(jìn)行信息化管理,實(shí)現(xiàn)互聯(lián)網(wǎng)電力企業(yè)的設(shè)備需求信息在多主體、多環(huán)節(jié)間的流通。云倉(cāng)平臺(tái)各環(huán)節(jié)流通流程如圖2所示。
圖2 互聯(lián)網(wǎng)電力企業(yè)共享云倉(cāng)
針對(duì)涉及多主體信息不對(duì)稱、共享能力差、多源數(shù)據(jù)存儲(chǔ)高冗余、主體間權(quán)限訪問透明性低、高并發(fā)的上鏈請(qǐng)求性能低下等問題,應(yīng)用區(qū)塊鏈去中心化的對(duì)等網(wǎng)絡(luò)及多方共識(shí)機(jī)制的特點(diǎn),為每個(gè)交互主體建立區(qū)塊鏈共識(shí)節(jié)點(diǎn),記賬、共享設(shè)備流轉(zhuǎn)相關(guān)信息,為設(shè)備需求信息發(fā)布、設(shè)備采購(gòu)、訂單審核、企業(yè)支付、設(shè)備調(diào)配、物流配送、訂單解算等過程提供上鏈存證,使電力企業(yè)、設(shè)備供應(yīng)商、區(qū)域存儲(chǔ)平臺(tái)、區(qū)域分庫(kù)等主體之間實(shí)現(xiàn)設(shè)備信息的可信共享,提高企業(yè)主體進(jìn)入供應(yīng)鏈的靈活性,促進(jìn)供應(yīng)鏈對(duì)企業(yè)主體的動(dòng)態(tài)、精準(zhǔn)選擇[13-14],同時(shí)監(jiān)管節(jié)點(diǎn)服務(wù),設(shè)計(jì)智能合約使監(jiān)管機(jī)構(gòu)能夠?qū)υO(shè)備流轉(zhuǎn)與生產(chǎn)過程信息進(jìn)行全程監(jiān)管,保障設(shè)備流轉(zhuǎn)的合規(guī)性與完整性。具體基于區(qū)塊鏈技術(shù)設(shè)計(jì)的電力物資共享云倉(cāng)架構(gòu)如圖3所示。
圖3 區(qū)塊鏈的電力物資共享云倉(cāng)架構(gòu)
1)應(yīng)用層。
基于區(qū)塊鏈技術(shù)的電力物資共享云倉(cāng)架構(gòu)的應(yīng)用層為各發(fā)電企業(yè)和供應(yīng)商提供數(shù)據(jù)接口,建立備品儲(chǔ)備數(shù)據(jù)的標(biāo)準(zhǔn)數(shù)據(jù)模型,并提供數(shù)據(jù)上傳接口,各發(fā)電企業(yè)和供應(yīng)商將自身原有物資備品管理系統(tǒng)數(shù)據(jù)信息通過接口對(duì)接或錄入的方式進(jìn)行備品儲(chǔ)備數(shù)據(jù)上傳。同時(shí)該應(yīng)用層設(shè)置界面,發(fā)電企業(yè)可通過登錄該平臺(tái)進(jìn)行備品儲(chǔ)備信息查詢。
2)業(yè)務(wù)層。
系統(tǒng)在業(yè)務(wù)層建立數(shù)據(jù)標(biāo)準(zhǔn)化檢測(cè)機(jī)制,對(duì)輸入的備品對(duì)象數(shù)據(jù)進(jìn)行有效性檢測(cè),以保證在物資備品信息管理系統(tǒng)中數(shù)據(jù)的標(biāo)準(zhǔn)化,同時(shí)將數(shù)據(jù)模型的結(jié)構(gòu)上鏈存證,作為數(shù)據(jù)格式的檢測(cè)依據(jù)。在電力行業(yè)備品種類繁雜、設(shè)備多樣的環(huán)境下,實(shí)現(xiàn)數(shù)據(jù)有效共享和可靠溯源。定時(shí)進(jìn)行庫(kù)存數(shù)據(jù)變化捕捉、集中匯總,完成信息的共享。建立調(diào)運(yùn)流程,實(shí)現(xiàn)調(diào)運(yùn)需求和調(diào)運(yùn)訂單管理。發(fā)電企業(yè)可根據(jù)物資需求填報(bào)調(diào)運(yùn)申請(qǐng)單,申請(qǐng)單中的與需求物資對(duì)應(yīng)的備品信息可通過用戶自行檢索進(jìn)行匹配,也可通過平臺(tái)對(duì)調(diào)運(yùn)需求物資進(jìn)行數(shù)據(jù)分析,智能匹配與需求相符的備品信息。
3)服務(wù)層。
服務(wù)層主要負(fù)責(zé)校驗(yàn)物資需求方與備品供給方的數(shù)據(jù)請(qǐng)求信息,記錄與存儲(chǔ)供給方與物資需求方的交易操作內(nèi)容。比如:物資需求方和備品供給方根據(jù)調(diào)運(yùn)訂單約定信息執(zhí)行備品調(diào)運(yùn),調(diào)運(yùn)期間服務(wù)層需要校驗(yàn)需求方上傳的備品采購(gòu)合同、付款憑證,驗(yàn)證備品產(chǎn)權(quán)方上傳的到貨簽收單等物品信息,云倉(cāng)的服務(wù)層有效記錄、分類、存儲(chǔ)采購(gòu)合同、付款憑證與簽收單等數(shù)據(jù)信息。
4)區(qū)塊鏈技術(shù)層。
區(qū)塊鏈技術(shù)層是區(qū)塊鏈電力資源共享云倉(cāng)的底層技術(shù),主要包括記錄數(shù)據(jù)、存儲(chǔ)數(shù)據(jù)、區(qū)塊鏈網(wǎng)絡(luò)節(jié)點(diǎn)交互、業(yè)務(wù)主體訪問權(quán)限控制、數(shù)據(jù)傳播與數(shù)據(jù)上鏈,是共享云倉(cāng)最關(guān)鍵的運(yùn)行模塊之一。
區(qū)塊鏈技術(shù)層針對(duì)數(shù)據(jù)存儲(chǔ)、訪問控制機(jī)制、流量控制、上鏈效率控制存在的問題,提出一種供應(yīng)鏈信息流層次模型,劃分為數(shù)據(jù)存儲(chǔ)層、訪問控制層、共識(shí)合約層[15-16]。
數(shù)據(jù)存儲(chǔ)層將區(qū)塊鏈系統(tǒng)中的數(shù)據(jù)信息進(jìn)行劃分、存儲(chǔ),由于數(shù)據(jù)記錄存儲(chǔ)過程中存在像物資需求方、備品供給方提供的多源數(shù)據(jù)信息,而多源數(shù)據(jù)信息的收集、過濾、清理、分析與匯總又是一項(xiàng)復(fù)雜的任務(wù)。同時(shí)數(shù)據(jù)信息具有多源異構(gòu)、復(fù)雜繁瑣的特點(diǎn),現(xiàn)有的區(qū)塊鏈存儲(chǔ)結(jié)構(gòu)存在存儲(chǔ)不足與存儲(chǔ)效率低下的問題[17-18]。因此共享云倉(cāng)架構(gòu)設(shè)計(jì)數(shù)據(jù)層方面,考慮到多源數(shù)據(jù)存儲(chǔ)問題,首先將多源異構(gòu)數(shù)據(jù)通過數(shù)據(jù)分析中心模塊進(jìn)行整理分析,輸出不同類型的數(shù)據(jù)信息映射到區(qū)塊鏈中對(duì)應(yīng)塊的塊體上,保證區(qū)塊鏈和供應(yīng)鏈管理的基礎(chǔ)數(shù)據(jù)分開存儲(chǔ)。將區(qū)塊鏈技術(shù)與Merkle 樹、數(shù)據(jù)庫(kù)進(jìn)行結(jié)合,提出一種多源數(shù)據(jù)信息塊的記錄方法,確保區(qū)塊鏈容量小、易于構(gòu)建和管理。
訪問控制層作為區(qū)塊鏈技術(shù)中主體訪問控制權(quán)限模塊,既要解決物資上下游信息不對(duì)稱問題,又要實(shí)現(xiàn)保護(hù)業(yè)務(wù)主體隱私數(shù)據(jù)與財(cái)務(wù)數(shù)據(jù)的功能。訪問控制層由主體節(jié)點(diǎn)、訪問節(jié)點(diǎn)、授權(quán)節(jié)點(diǎn)組成。主體節(jié)點(diǎn)主要由供貨商與需求方控制,通過與數(shù)據(jù)存儲(chǔ)層進(jìn)行數(shù)據(jù)交互,上傳、查看、下載電力資源信息;訪問節(jié)點(diǎn)主要處理主體節(jié)點(diǎn)的訪問請(qǐng)求,運(yùn)行訪問控制權(quán)限模型,實(shí)現(xiàn)業(yè)務(wù)主體間的信息共享;授權(quán)節(jié)點(diǎn)負(fù)責(zé)記錄訪問節(jié)點(diǎn)的運(yùn)行日志,并管理訪問控制鏈,授權(quán)合規(guī)請(qǐng)求,為供應(yīng)鏈業(yè)務(wù)主體提供歷史授權(quán)的數(shù)據(jù)追溯。
共識(shí)合約層是維持區(qū)塊鏈系統(tǒng)中的共識(shí)節(jié)點(diǎn)達(dá)到信息一致性,比如調(diào)運(yùn)訂單執(zhí)行過程調(diào)用區(qū)塊鏈備品資產(chǎn)轉(zhuǎn)移智能合約,調(diào)用該智能合約[19]需要傳入備品備件的ID 與備品需求者的身份標(biāo)識(shí)ID,該智能合約會(huì)檢測(cè)該設(shè)備當(dāng)前在鏈上的所有權(quán)是否跟調(diào)用者一致,只有在一致的情況下才能發(fā)生資產(chǎn)的轉(zhuǎn)移。同時(shí)系統(tǒng)全流程數(shù)據(jù)上鏈,每次上鏈的數(shù)據(jù)對(duì)應(yīng)的存證ID 建立一個(gè)數(shù)組索引,根據(jù)區(qū)塊鏈的特性,用戶只需要通過調(diào)用查詢數(shù)據(jù)溯源的智能合約就可以調(diào)取某個(gè)設(shè)備所有上鏈數(shù)據(jù),從而實(shí)現(xiàn)備品的溯源查詢。
同時(shí),若出現(xiàn)數(shù)據(jù)上鏈請(qǐng)求過大,處于高并發(fā)情況下,區(qū)塊鏈節(jié)點(diǎn)性能會(huì)受到影響,本文提出一種處理高并發(fā)數(shù)據(jù)上鏈請(qǐng)求的流量控制算法,以更好滿足系統(tǒng)數(shù)據(jù)層的高可靠、高效率運(yùn)轉(zhuǎn)。
5)安全層。
云倉(cāng)的安全層主要提供數(shù)據(jù)加密、解密、密鑰托管、隨機(jī)密鑰生成等功能,提供流程化加密方案,用戶可定制加解密流程中的密鑰生成、加密算法、解密算法。上鏈數(shù)據(jù)信息包括供應(yīng)商數(shù)據(jù)(供應(yīng)商名稱、地址、聯(lián)系方式、供應(yīng)備品備件數(shù)據(jù)參數(shù))與各級(jí)倉(cāng)庫(kù)數(shù)據(jù)信息(名稱、地址、聯(lián)系方式等信息)采用非對(duì)稱加密技術(shù)對(duì)數(shù)據(jù)安全進(jìn)行保障。
供應(yīng)鏈業(yè)務(wù)決策活動(dòng)依賴的數(shù)據(jù)主要包括供應(yīng)鏈系統(tǒng)運(yùn)行產(chǎn)生的內(nèi)部數(shù)據(jù)與外部引入的供貨商電力資源數(shù)據(jù)。對(duì)供應(yīng)鏈依賴的多源異構(gòu)數(shù)據(jù)的收集、過濾、清理、分析與匯總是一項(xiàng)非常復(fù)雜且艱巨的任務(wù)。若供應(yīng)鏈業(yè)務(wù)的管理活動(dòng)都由業(yè)務(wù)主體來處理時(shí),效率極低。因此,為高效完成多源數(shù)據(jù)處理任務(wù),在構(gòu)建電力物資共享云倉(cāng)階段,搭建一個(gè)多源數(shù)據(jù)分析中心模塊,整理、分析、匯總外部來源的多源數(shù)據(jù),比如各發(fā)電企業(yè)的物資備品、供應(yīng)商的物資備品、需求方的物資采購(gòu)項(xiàng)等數(shù)據(jù)信息,具體設(shè)計(jì)的多源數(shù)據(jù)分析中心的數(shù)據(jù)處理如圖4所示。
圖4 多源數(shù)據(jù)分析中心數(shù)據(jù)處理
交易過程中,若需求方需要了解供給方上傳的物資備品,首先需求主體向系統(tǒng)發(fā)出查詢請(qǐng)求,系統(tǒng)向供應(yīng)鏈管理系統(tǒng)發(fā)出指令,來分析物資備品信息。供應(yīng)鏈管理系統(tǒng)的認(rèn)證機(jī)構(gòu)將按照既定的規(guī)則將信息收集需求傳遞給外部多源數(shù)據(jù)分析中心。多源數(shù)據(jù)分析中心將根據(jù)信息采集需求確定采集與處理的數(shù)據(jù)信息。最后,相關(guān)的結(jié)果信息返回到供應(yīng)鏈中的每個(gè)認(rèn)證機(jī)構(gòu),認(rèn)證機(jī)構(gòu)將在區(qū)塊鏈系統(tǒng)中廣播供應(yīng)商的相關(guān)結(jié)果信息。區(qū)塊鏈系統(tǒng)中的其他認(rèn)證主體(包括需求方)將對(duì)廣播信息進(jìn)行認(rèn)證和分發(fā)。
本文以供應(yīng)鏈企業(yè)中的需求方選擇電力供給方為例,圖5 顯示了供應(yīng)鏈管理中內(nèi)部和外部多源數(shù)據(jù)的塊記錄、分析與分類以及區(qū)塊鏈生成的方法。如圖5 所示,不同類型的基本數(shù)據(jù)存儲(chǔ)在不同的數(shù)據(jù)存儲(chǔ)主體中,例如不同的數(shù)據(jù)庫(kù)。將不同類型的數(shù)據(jù)映射到區(qū)塊鏈對(duì)應(yīng)塊的塊體上,保證區(qū)塊鏈與供應(yīng)鏈管理的基礎(chǔ)數(shù)據(jù)分開存儲(chǔ)。不同類型的數(shù)據(jù)信息按類型分別存儲(chǔ),實(shí)現(xiàn)了區(qū)塊鏈管理的便捷性,確保區(qū)塊鏈容量小、易于構(gòu)建和管理。不同類型數(shù)據(jù)管理的有序,也可通過相應(yīng)的映射關(guān)系實(shí)現(xiàn)區(qū)塊鏈系統(tǒng)與供應(yīng)鏈管理數(shù)據(jù)系統(tǒng)之間的邏輯完整性。
圖5 多源數(shù)據(jù)分析中心數(shù)據(jù)處理
而多源數(shù)據(jù)分析結(jié)果傳遞至供應(yīng)鏈管理系統(tǒng)時(shí),備品信息等數(shù)據(jù)結(jié)構(gòu)需記錄與存儲(chǔ),本文結(jié)合Merkle樹[20]提出一種多源數(shù)據(jù)信息塊的記錄方法。具體的數(shù)據(jù)結(jié)構(gòu)一共分為5個(gè)模塊,如圖6所示。
圖6 多源數(shù)據(jù)分析中心數(shù)據(jù)處理
1)數(shù)據(jù)層。
接收電力物資供應(yīng)鏈相關(guān)的數(shù)據(jù)信息。
2)Merkle分類樹主干層。
不同分類數(shù)據(jù)構(gòu)成不同的Merkle樹,不同類的數(shù)據(jù)信息存儲(chǔ)在不同Merkle樹,互不干擾。
3)Merkle分類樹根層。
與分類Merkle 樹塊層不同,該層存儲(chǔ)每個(gè)不同Merkle樹的數(shù)據(jù)源,類似于數(shù)據(jù)指針的模式。
4)目錄層。
這一層根據(jù)基本數(shù)據(jù)對(duì)應(yīng)不同的Merkle 樹根分類。根據(jù)電力物資共享平臺(tái)的實(shí)際需求設(shè)置層,每N個(gè)分類Merkle根計(jì)算一個(gè)總的Merkle根。
5)區(qū)塊鏈頂層。
系統(tǒng)為目標(biāo)層所有的Merkle 樹根計(jì)算一個(gè)總的Merkle 樹根哈希,區(qū)塊鏈包含Merkle 樹的根,還包含前一個(gè)區(qū)塊鏈頂層的哈希值、版本號(hào)、共識(shí)身份驗(yàn)證參數(shù)、時(shí)間戳等信息。
這種存儲(chǔ)方式可確保數(shù)據(jù)信息的完整性、便捷性、可分類性,只需確認(rèn)區(qū)塊鏈頭部的Merkle 樹根哈希的正確性,便可校驗(yàn)底部的數(shù)據(jù)層與Merkle分類樹主干層的信息是否被修改,實(shí)現(xiàn)本次電力物資交易系統(tǒng)的安全存儲(chǔ)。
不同的電力企業(yè)與設(shè)備供貨商對(duì)供應(yīng)鏈中的信息有不同的需求,為了供應(yīng)鏈中的信息安全,有必要對(duì)各個(gè)企業(yè)的信息訪問權(quán)限進(jìn)行管理。本文選擇RBAC1[21]作為信息共享方案的訪問控制模型。RBAC1 包括5 個(gè)基本數(shù)據(jù)元素:用戶、角色、目標(biāo)、操作和權(quán)限。利用權(quán)限與特定角色關(guān)聯(lián)的方法,只需為用戶指定特定的角色就可以實(shí)現(xiàn)權(quán)限的分配,大大降低了大型系統(tǒng)中訪問權(quán)限管理的復(fù)雜性。通過角色分類對(duì)各企業(yè)進(jìn)行信息訪問管理,本文采用RBAC1模型對(duì)企業(yè)的接入權(quán)限進(jìn)行管理。RBAC1 模型的權(quán)限配置使系統(tǒng)管理員既擁有電力企業(yè)與設(shè)備供貨商等管理權(quán)限,又能擴(kuò)展交易與供貨相應(yīng)的職能權(quán)限。RBAC1 模型中存在2 種映射關(guān)系,即用戶-角色映射和角色-權(quán)利映射。供應(yīng)鏈的用戶多為供應(yīng)鏈企業(yè),其角色包括設(shè)備供貨商、電力企業(yè)、區(qū)域倉(cāng)儲(chǔ)平臺(tái)商與需求方等。訪問權(quán)限是指企業(yè)可以訪問的數(shù)據(jù)范圍。訪問控制模型如圖7所示。
在供應(yīng)鏈中,一個(gè)企業(yè)可能涉及多個(gè)生產(chǎn)環(huán)節(jié),甚至單個(gè)生產(chǎn)環(huán)節(jié)也需要各種各樣的信息。因此,在訪問權(quán)限的管理中,企業(yè)與角色之間存在多對(duì)多的關(guān)系,角色與訪問權(quán)限之間也存在多對(duì)多的關(guān)系,并且可以對(duì)企業(yè)進(jìn)行分級(jí),將不同的訪問權(quán)限分配給具有相同角色的企業(yè)。
在供應(yīng)鏈企業(yè)間的信息共享過程中,需要對(duì)企業(yè)間的交互操作進(jìn)行管理。信息智能合約的主要任務(wù)是對(duì)信息共享過程中各種操作的有效性進(jìn)行驗(yàn)證,并根據(jù)結(jié)果執(zhí)行相應(yīng)的操作[22]。
供應(yīng)鏈企業(yè)調(diào)用信息智能合約,按照交互規(guī)則向信息鏈發(fā)送產(chǎn)品信息、產(chǎn)品類型等。之后,信息智能合約會(huì)根據(jù)產(chǎn)品信息的數(shù)據(jù)庫(kù)表和企業(yè)的訪問權(quán)限來判斷操作是否合法。首先制定產(chǎn)品信息的數(shù)據(jù)庫(kù)表SupplyTable,其中包含原材料信息、供應(yīng)企業(yè)編號(hào)、企業(yè)名稱等信息,具體定義如表1所示。
表1 供應(yīng)商品數(shù)據(jù)庫(kù)表的定義
具體的供貨商提交供貨商品信息的智能合約算法見算法1。
算法1信息提交算法。
輸入:設(shè)備供貨商提交產(chǎn)品信息A。
輸出:如果信息與權(quán)利一致,則消息將存儲(chǔ)在信息鏈中;否則,請(qǐng)求將被拒絕。
1. 設(shè)備供貨商調(diào)用信息智能合約向信息鏈發(fā)送信息結(jié)構(gòu)體A;
2. if StructA== SupplyTableA
3. 對(duì)數(shù)據(jù)結(jié)構(gòu)體A的格式進(jìn)行驗(yàn)證
4. 如果符合要求,則在信息鏈中存儲(chǔ)一條信息A;如果沒有,拒絕請(qǐng)求;
5. else return
6. end if
供應(yīng)鏈企業(yè)在獲取信息的同時(shí),按照交互規(guī)則向信息鏈發(fā)送所需的目標(biāo)信息。信息智能合約將驗(yàn)證應(yīng)用程序與請(qǐng)求方權(quán)限,并根據(jù)結(jié)果執(zhí)行相應(yīng)的操作。算法見算法2。
算法2信息需求獲取算法。
輸入:需求方提交產(chǎn)品信息獲取請(qǐng)求B。
輸出:如果應(yīng)用內(nèi)容與權(quán)限一致,則將消息發(fā)送到需求方節(jié)點(diǎn);如果沒有,則拒絕申請(qǐng)。
1. 需求企業(yè)調(diào)用信息智能合約發(fā)送信息查詢應(yīng)用程序B;
2. 信息智能合約獲取需求企業(yè)的公開key地址,查詢信息數(shù)據(jù)庫(kù)表中是否存在,pubkey=msg.sender;
3. 獲取需求企業(yè)的權(quán)限,purview[pubkey];
4. if purview[pubkey]=Table_Enterprise_purview
5. 信息智能合約檢查目標(biāo)信息合約權(quán)限是否存在;
6. 如果存在,則發(fā)送許可請(qǐng)求給需求企業(yè),并將此應(yīng)用操作保存在信息鏈中;如果沒有,則拒絕請(qǐng)求;
7. else return
8. end if
目前的物資供應(yīng)鏈底層平臺(tái)難以處理高并發(fā)上鏈請(qǐng)求,若并發(fā)量太大,輕則區(qū)塊鏈組網(wǎng)性能受到影響,重則導(dǎo)致共識(shí)節(jié)點(diǎn)宕機(jī)。為保障電力物資共享云倉(cāng)交易上鏈的可靠性,本文監(jiān)控底層區(qū)塊鏈節(jié)點(diǎn)的吞吐量,提出一種交易量控制算法,將共享云倉(cāng)的上鏈交易請(qǐng)求壓力控制在可控范圍內(nèi),使供應(yīng)鏈區(qū)塊鏈節(jié)點(diǎn)性能與資源利用率達(dá)到最高,維持電力物資共享云倉(cāng)的高效率運(yùn)轉(zhuǎn)。
本文監(jiān)控區(qū)塊鏈節(jié)點(diǎn)的吞吐量[23],提出的交易量控制算法具體思路為:電力物資共享云倉(cāng)運(yùn)轉(zhuǎn)時(shí),首先確定系統(tǒng)效率達(dá)到最大的負(fù)載值,并確定系統(tǒng)安全運(yùn)轉(zhuǎn)狀態(tài)下的最小負(fù)載值?;谧钚∝?fù)載值,逐漸對(duì)控制流量進(jìn)行增加,增大對(duì)區(qū)塊鏈系統(tǒng)的資源利用率,實(shí)時(shí)監(jiān)控底層區(qū)塊鏈節(jié)點(diǎn)的吞吐量。若監(jiān)控性能指標(biāo)處于逐漸上升的狀態(tài),代表物資共享云倉(cāng)的資源還有進(jìn)一步的利用空間,再逐漸增加上鏈交易請(qǐng)求的流量數(shù),直至監(jiān)控區(qū)塊鏈節(jié)點(diǎn)的吞吐量性能處于下降狀態(tài),代表共享云倉(cāng)系統(tǒng)已進(jìn)入負(fù)載上限區(qū)域。這時(shí)候基于當(dāng)前負(fù)載值,逐步控制上鏈請(qǐng)求量的減少,減小對(duì)區(qū)塊鏈系統(tǒng)的資源利用率。實(shí)際云倉(cāng)的交易請(qǐng)求壓力分布并不是處于均勻分布的,需要針對(duì)實(shí)際交易請(qǐng)求設(shè)置安全閾值,當(dāng)超過安全閾值時(shí),緩慢增加云倉(cāng)的上鏈交易請(qǐng)求,直至再次監(jiān)控到資源信息共享云倉(cāng)的性能指標(biāo)下降。這樣,當(dāng)共享云倉(cāng)積壓的上鏈交易請(qǐng)求過大時(shí),通過這種逐步增加上鏈請(qǐng)求,逼近云倉(cāng)性能負(fù)載拐點(diǎn)區(qū)間的方式,可以將區(qū)塊鏈系統(tǒng)效率利用率維持在高效區(qū)間,即使當(dāng)系統(tǒng)積壓上鏈請(qǐng)求過大,并發(fā)量較高時(shí),也不會(huì)導(dǎo)致區(qū)塊鏈底層節(jié)點(diǎn)宕機(jī)的現(xiàn)象。
本文提出的算法只在并發(fā)量過大、交易請(qǐng)求堵塞時(shí)運(yùn)行,若日常交易量較小,系統(tǒng)處于正常運(yùn)轉(zhuǎn)狀態(tài)。每次交易環(huán)節(jié)進(jìn)行中,系統(tǒng)會(huì)實(shí)時(shí)監(jiān)控當(dāng)前的吞吐量,并根據(jù)連續(xù)3 次的吞吐量變化進(jìn)行處理效率的判斷,并設(shè)置2 個(gè)安全閾值。若判斷處理效率仍處于上升狀態(tài),系統(tǒng)認(rèn)為交易上鏈請(qǐng)求仍處于可負(fù)載范圍內(nèi),判斷當(dāng)前的吞吐量是否超過安全閾值1,若未超過安全閾值1,系統(tǒng)采用指數(shù)增長(zhǎng)策略,快速運(yùn)轉(zhuǎn)系統(tǒng),若超過安全閾值1,則采用線性增長(zhǎng)策略;若連續(xù)3 次判斷處理效率處于下降狀態(tài),且超過安全閾值2,則需要立即降低上鏈交易請(qǐng)求量,直至再次監(jiān)控到資源信息共享云倉(cāng)的性能指標(biāo)下降。具體的安全閾值1與安全閾值2的比例為0.5和0.75。
針對(duì)高并發(fā)上鏈請(qǐng)求,本文提出一種交易量控制算法,雖能有效將共享云倉(cāng)的上鏈交易請(qǐng)求壓力控制在可控范圍內(nèi),使供應(yīng)鏈區(qū)塊鏈節(jié)點(diǎn)性能與資源利用率達(dá)到最高,但會(huì)導(dǎo)致系統(tǒng)的可用性降低。當(dāng)然相比于系統(tǒng)宕機(jī)、服務(wù)不可用,這種系統(tǒng)的有損算法是最好的解決方案。如何將損失降到最???答案是降低系統(tǒng)的響應(yīng)時(shí)間。
當(dāng)電力物資共享云倉(cāng)上鏈交易請(qǐng)求時(shí),首先監(jiān)控系統(tǒng)的請(qǐng)求量,確定出系統(tǒng)效率達(dá)到最大的負(fù)載值,若交易量不超過安全運(yùn)轉(zhuǎn)狀態(tài)的最小負(fù)載值,則正常進(jìn)行區(qū)塊鏈上鏈交易請(qǐng)求的流程,確保交易正常運(yùn)轉(zhuǎn);若交易量處于安全運(yùn)轉(zhuǎn)狀態(tài)的最小負(fù)載值與最大負(fù)載值之間,采用本文提出的交易量控制算法,維持供應(yīng)鏈節(jié)點(diǎn)性能達(dá)到最大,避免區(qū)塊鏈組網(wǎng)受影響或宕機(jī)現(xiàn)象;若請(qǐng)求并發(fā)量遠(yuǎn)遠(yuǎn)超過系統(tǒng)的最大負(fù)載值,將共享云倉(cāng)系統(tǒng)進(jìn)行分布式部署,提高系統(tǒng)的可靠性與可用性,縮短系統(tǒng)的響應(yīng)時(shí)間;若請(qǐng)求并發(fā)量已經(jīng)超過分布式系統(tǒng)的最大安全負(fù)載,當(dāng)然該現(xiàn)象在電力系統(tǒng)供貨鏈交易過程中,出現(xiàn)的概率極低,首先對(duì)共享云倉(cāng)分布式系統(tǒng)服務(wù)進(jìn)行降級(jí),采用屏蔽降級(jí)與容錯(cuò)降級(jí)策略,同時(shí)采用本文提出的交易量控制算法,保證系統(tǒng)的可用性,不出現(xiàn)服務(wù)宕機(jī)現(xiàn)象。
基于Hyperledger Fabric 區(qū)塊鏈平臺(tái)[24]實(shí)現(xiàn)電力系統(tǒng)資源共享云倉(cāng)的構(gòu)建,并利用Fabric tape工具進(jìn)行性能測(cè)試。處理器為Intel Xeon E5-2620@2.00 GHz,內(nèi)存為64 GB。
以寧夏國(guó)網(wǎng)電力供應(yīng)鏈調(diào)度場(chǎng)景為例進(jìn)行分析。實(shí)際設(shè)計(jì)的區(qū)塊鏈網(wǎng)絡(luò)包括供給方、電力企業(yè)、供貨倉(cāng)庫(kù)、電力調(diào)度中心、需求方等主體。首先確認(rèn)區(qū)塊鏈節(jié)點(diǎn)的分級(jí)控制權(quán)限。根據(jù)實(shí)際的共享云倉(cāng)電力物資供應(yīng)場(chǎng)景,按實(shí)際的商品信息隱私程度分為3類。具體的分級(jí)控制等級(jí)如表2所示。
表2 共享云倉(cāng)信息等級(jí)權(quán)限
根據(jù)權(quán)限等級(jí),供給方、電力企業(yè)、供貨倉(cāng)庫(kù)、電力調(diào)度中心、需求方等主體,在共享云倉(cāng)中具體的分級(jí)訪問控制如表3所示。
表3 共享云倉(cāng)主體的分級(jí)控制
系統(tǒng)的容錯(cuò)能力是指系統(tǒng)在受到惡意節(jié)點(diǎn)攻擊時(shí)仍能保持正常運(yùn)行的能力[25]。綜合考慮實(shí)驗(yàn)效果與設(shè)備性能,將系統(tǒng)節(jié)點(diǎn)總數(shù)設(shè)置為120 個(gè)。惡意節(jié)點(diǎn)數(shù)由1增加到100,步長(zhǎng)為1。對(duì)不同數(shù)量的惡意節(jié)點(diǎn)進(jìn)行重復(fù)實(shí)驗(yàn),得到不同狀態(tài)下的系統(tǒng)攻擊成功率。為驗(yàn)證本文的容錯(cuò)能力,與實(shí)用拜占庭算法[26]進(jìn)行對(duì)比驗(yàn)證。具體的容錯(cuò)實(shí)驗(yàn)如圖8所示。
圖8 共享云倉(cāng)的容錯(cuò)能力
實(shí)驗(yàn)結(jié)果表明,攻擊成功率隨著惡意節(jié)點(diǎn)數(shù)量的減少而降低。當(dāng)惡意節(jié)點(diǎn)數(shù)量小于39 個(gè),即惡意節(jié)點(diǎn)數(shù)量小于惡意節(jié)點(diǎn)總數(shù)的33%時(shí),2 種系統(tǒng)中惡意節(jié)點(diǎn)攻擊成功率接近于0。一般情況下,惡意節(jié)點(diǎn)數(shù)量超過節(jié)點(diǎn)總數(shù)1/3 的概率較低,系統(tǒng)具有較好的容錯(cuò)性能。而隨著惡意節(jié)點(diǎn)的數(shù)量不斷增加,與實(shí)用拜占庭算法相比,本文構(gòu)建的云倉(cāng)系統(tǒng)攻擊成功率的上升趨勢(shì)相對(duì)平緩,直到節(jié)點(diǎn)數(shù)超過88 個(gè),系統(tǒng)才完全攻破,已超過總數(shù)量的88%,表明系統(tǒng)具有較好的容錯(cuò)性能。
系統(tǒng)吞吐量表示系統(tǒng)在單位時(shí)間內(nèi)可以處理的信息量。本文采用每秒事務(wù)數(shù)(tps)作為系統(tǒng)吞吐量的評(píng)價(jià)標(biāo)準(zhǔn)[27]。實(shí)驗(yàn)以系統(tǒng)節(jié)點(diǎn)數(shù)為變量,節(jié)點(diǎn)數(shù)從10增加到120,步長(zhǎng)為10。在不同節(jié)點(diǎn)數(shù)下進(jìn)行重復(fù)實(shí)驗(yàn),最后取tps 的平均值作為該節(jié)點(diǎn)數(shù)下的系統(tǒng)吞吐量值。結(jié)果如圖9所示。
圖9 共享云倉(cāng)的吞吐量分析
根據(jù)實(shí)驗(yàn)結(jié)果,當(dāng)節(jié)點(diǎn)總數(shù)小于20 時(shí),系統(tǒng)的吞吐量呈加速上升趨勢(shì)。隨著節(jié)點(diǎn)數(shù)的不斷增加,系統(tǒng)的吞吐量處于不斷增長(zhǎng)的趨勢(shì),在節(jié)點(diǎn)數(shù)為78 時(shí),吞吐量達(dá)到最大。后續(xù)不斷增加系統(tǒng)的節(jié)點(diǎn)數(shù)目,共享云倉(cāng)的吞吐量稍有下降,直至增加到系統(tǒng)最大節(jié)點(diǎn)時(shí),共享云倉(cāng)的最低吞吐量仍能維持在150 tps以上,更能反饋出本文設(shè)計(jì)的共享云倉(cāng)性能較為穩(wěn)定。
為進(jìn)一步驗(yàn)證本文提出的電力物資共享云倉(cāng)交易上鏈可靠性設(shè)計(jì)的性能,構(gòu)建出上鏈請(qǐng)求高并發(fā)的場(chǎng)景,區(qū)塊鏈的非共識(shí)節(jié)點(diǎn)能夠?qū)Φ讓訁^(qū)塊鏈的并發(fā)量處于擁堵約束,避免高并發(fā)量區(qū)塊鏈共識(shí)節(jié)點(diǎn)宕機(jī)的現(xiàn)象。因此,系統(tǒng)使用Fabric tape工具仿真不同數(shù)量的交易請(qǐng)求,測(cè)試系統(tǒng)的吞吐量,同時(shí)對(duì)比驗(yàn)證采用本文設(shè)計(jì)的交易量控制算法與未采用交易量控制算法,系統(tǒng)的吞吐量測(cè)試如圖10所示。
圖10 流量控制算法的云倉(cāng)吞吐量值
由圖10 可看出,隨著一次性發(fā)送的交易量不斷增加,未采用流量控制算法的共享云倉(cāng),當(dāng)持續(xù)接收到高并發(fā)的上鏈請(qǐng)求時(shí),系統(tǒng)的吞吐量處于先上升到峰值階段,再不斷下降的狀態(tài)。分析得知,隨著上鏈交易量的不斷增大,基于區(qū)塊鏈技術(shù)的共享云倉(cāng)性能不斷下降,特別是處于交易流量節(jié)點(diǎn)堵塞場(chǎng)景下,處理效率明顯下降。而監(jiān)控區(qū)塊鏈節(jié)點(diǎn)的吞吐量,使用本文提出的交易量控制算法時(shí),系統(tǒng)的吞吐量基本處于一個(gè)固定的區(qū)間范圍內(nèi)??梢灶A(yù)見,該系統(tǒng)遇到用戶上鏈請(qǐng)求量足夠大,所有上鏈節(jié)點(diǎn)全速運(yùn)行時(shí),區(qū)塊鏈的非共識(shí)節(jié)點(diǎn)也能穩(wěn)定控制系統(tǒng)的并發(fā)量,使系統(tǒng)保持穩(wěn)定的處理效率,系統(tǒng)性能達(dá)到最優(yōu)。
本文基于區(qū)塊鏈技術(shù)提出一種電力物資共享云倉(cāng)平臺(tái),面向?qū)嶋H的物資供應(yīng)鏈場(chǎng)景,設(shè)計(jì)了一種共享云倉(cāng)企業(yè)供應(yīng)鏈架構(gòu),實(shí)現(xiàn)多主體多環(huán)節(jié)鏈路的信息共享。為安全存儲(chǔ)商品信息數(shù)據(jù),提出一種信息數(shù)據(jù)存儲(chǔ)方法,有效對(duì)供應(yīng)鏈外部多源數(shù)據(jù)信息的收集、過濾、清理、分析與匯總,以信息鏈為平臺(tái),通過部署信息智能合約,建立訪問控制機(jī)制,將供應(yīng)鏈參與者整合為一個(gè)信息共享系統(tǒng),實(shí)現(xiàn)供應(yīng)鏈信息管理和企業(yè)交互。交易授權(quán)過程透明可追溯,既能保證供應(yīng)鏈的信息安全,又能實(shí)現(xiàn)企業(yè)高效便捷的信息共享。最后針對(duì)高并發(fā)的交易上鏈請(qǐng)求影響區(qū)塊鏈組網(wǎng)性能問題,監(jiān)控物資共享云倉(cāng)區(qū)塊鏈節(jié)點(diǎn)的吞吐量,提出一種流量控制算法,使區(qū)塊鏈底層節(jié)點(diǎn)資源利用率達(dá)到最大。
實(shí)驗(yàn)結(jié)果表明本文基于區(qū)塊鏈技術(shù)設(shè)計(jì)的共享云倉(cāng)具有較好的容錯(cuò)性能與相對(duì)穩(wěn)定的吞吐量處理性能,面向大規(guī)模交易請(qǐng)求時(shí),可穩(wěn)定控制系統(tǒng)的并發(fā)量,有較好的性能,在實(shí)際供應(yīng)鏈應(yīng)用場(chǎng)景具有可行性。