楊卓
(云南電網(wǎng)有限責任公司,云南 昆明 650011)
水、電、風、潮汐、太陽能等綜合能源的采集、交易過程中涉及到多種物聯(lián)網(wǎng)設(shè)備,例如采集風能的風力發(fā)電機,新能源汽車配套的智能充電樁,光伏發(fā)電機等。傳統(tǒng)的能源市場中,由能源控制中心將分散的綜合能源統(tǒng)一收集并匯入主網(wǎng),再搭建中心化平臺集中對外銷售。然而,大量異構(gòu)能源設(shè)備的接入將導致中心平臺信息存儲壓力大,運營成本增加,數(shù)據(jù)訪問控制的安全性得不到保障。點對點的交易機制能有效改善中心化交易的弊端,但在交易雙方的信任問題上,難以保證交易的公開、透明,缺少強有力的機制維護參與主體的隱私安全。
區(qū)塊鏈技術(shù)以信息不可篡改、可溯源、去中心化的特點而被學界廣泛關(guān)注,目前已經(jīng)有很多區(qū)塊鏈技術(shù)與能源領(lǐng)域結(jié)合的研究。利用區(qū)塊鏈搭建去中心化的能源交易體系,能有效解決中心化處理海量交易時存在單點故障、效率低下、數(shù)據(jù)容易被篡改及點對點交易不公開、不透明的問題。區(qū)塊鏈在能源交易上的研究廣泛而深入,Li等[1]peer-to-peer (P2P建立了適用于工業(yè)物聯(lián)網(wǎng)的能源區(qū)塊鏈體系,劃分物聯(lián)網(wǎng)能源交易角色分為energy node和聚合者,交易數(shù)據(jù)通過聚合者達成共識上鏈,交易過程中采用了基于信用的支付方式,減少了節(jié)點因為代幣不足而造成的交易時延。但該方法在共識機制上采用的仍是PoW,因為工作量證明造成的資源花費和時延仍然存在,不利于實際應(yīng)用。Lu等人[2]針對電網(wǎng)交易過度依賴第三方平臺而造成能耗高、效率低的問題,提出一種兩層區(qū)塊鏈結(jié)構(gòu),儲能裝置在私有鏈上進行區(qū)域內(nèi)的能源交易,區(qū)域的聚合者在聯(lián)盟鏈上進行跨區(qū)域的能源調(diào)度。并采用最高信用得分的共識機制,本質(zhì)未脫離PoS的局限,當信用值越高,該節(jié)點越容易上鏈,所有交易上鏈都依據(jù)同一個信用值最高的節(jié)點,必將產(chǎn)生新的中心化。Ali Dorri等人[3]提出一種基于私有鏈的安全能源交易方法,在消費者和生產(chǎn)者之間采用匿名路由進行協(xié)商,同時將交易劃分為兩個原子事務(wù),承諾支付和確認交易,只有當兩個原子事務(wù)都完成才能完成一個交易,有效避免對第三方平臺的信任依賴。Luo等人[4]提出兩層體系結(jié)構(gòu)來支持點對點的分布式交易,第一層采用多代理人機制和聯(lián)盟協(xié)商機制實現(xiàn)設(shè)備間的統(tǒng)一的價格協(xié)定,第二層通過建立合約鏈和賬本鏈來記錄交易數(shù)據(jù),且兩個鏈數(shù)據(jù)可相互驗證,保障交易的效率同時還保證數(shù)據(jù)安全。Wang等人[5]將充電樁的充電權(quán)作為數(shù)字資產(chǎn),依據(jù)區(qū)塊鏈記錄的歷史數(shù)據(jù)對未來時段進行充電權(quán)的預先分配和交易,在區(qū)塊鏈平臺上運行雙向拍賣機制和P2P交易實現(xiàn)充電權(quán)的結(jié)算交割。
現(xiàn)有研究都采用一個區(qū)塊鏈實現(xiàn)交易過程中的數(shù)據(jù)存證業(yè)務(wù),隨著交易量的增加和交易需求的多樣化,依靠一個區(qū)塊鏈記錄上鏈信息會給區(qū)塊鏈網(wǎng)絡(luò)帶來額外的負擔,例如存儲、計算、通信成本增加[6]。且單一區(qū)塊鏈數(shù)據(jù)相對封閉,不易與外界交互。采用多個區(qū)塊鏈分管不同業(yè)務(wù),每個區(qū)塊鏈上都部署不同的輕量級業(yè)務(wù),通過鏈與鏈之間的分工合作,實現(xiàn)價值轉(zhuǎn)移,多方存證,有效降低單個區(qū)塊鏈維護整個體系數(shù)據(jù)安全的壓力??珂溂夹g(shù)就是實現(xiàn)不同區(qū)塊鏈之間的價值傳遞[7]。Jiang等人[8]利用區(qū)塊鏈在物聯(lián)網(wǎng)的特定場景具有防篡改、安全性高的優(yōu)勢,建立跨鏈體系對記錄internet of things(IoT)數(shù)據(jù)的多個區(qū)塊鏈進行整合,聯(lián)盟鏈作為核心區(qū)塊鏈進行全局管控,有向無環(huán)圖作為數(shù)據(jù)結(jié)構(gòu)的side-blockchain則負責記錄不同IoT數(shù)據(jù),多鏈協(xié)同模式有效解決了區(qū)塊鏈在物聯(lián)網(wǎng)上擴展性受限和高消耗問題。但通過公證人節(jié)點實現(xiàn)跨鏈信息流通,會造成信息流通決策權(quán)過于集中,存在中心化風險。He等人[9]采用主鏈和側(cè)鏈模式實現(xiàn)光伏發(fā)電市場和碳市場的數(shù)據(jù)共享,采用改進的雙向錨定技術(shù)實現(xiàn)碳鏈和電鏈的資產(chǎn)轉(zhuǎn)移,減少電碳結(jié)算對第三方權(quán)威機構(gòu)的依賴性。但該文將交易雙方的價格協(xié)商過程轉(zhuǎn)移在鏈上執(zhí)行,產(chǎn)生額外的區(qū)塊鏈開銷。Tian等人[10]針對cosmos和polkadot中繼跨鏈技術(shù)實際應(yīng)用中擴展性差、兼容要求高的問題,采用中間人、智能合約、驗證組的模式實現(xiàn)加密貨幣的跨鏈流通,但在驗證過程中采用PoW選擇監(jiān)管代理人讓跨鏈貨幣流通速度變慢。Luo等人[11]搭建綜合能源系統(tǒng)和新能源發(fā)電之間的綠證交易平臺,利用中繼跨鏈技術(shù)實現(xiàn)綠色證書在不同主體間跨鏈流通,但是區(qū)塊鏈技術(shù)在該模式下僅作為了一種能源流通效率優(yōu)化手段,該方案在區(qū)塊鏈交易細節(jié)上有待進一步挖掘。
本文針對上述研究存在的問題,提出一種基于跨鏈技術(shù)的物聯(lián)網(wǎng)點對點能源交易模型。讓能源區(qū)塊鏈和財務(wù)區(qū)塊鏈的參與主體共同分擔交易任務(wù),通過跨鏈技術(shù)實現(xiàn)上鏈共享數(shù)據(jù)的交叉驗證。建立鏈上鏈下協(xié)同存儲體系,減輕區(qū)塊鏈網(wǎng)絡(luò)參與者的存儲壓力。在共識機制上結(jié)合隨機可驗證函數(shù)選取共識節(jié)點,滿足大規(guī)模交易節(jié)點達成一致性協(xié)定,提升信息打包上鏈效率和安全。本文的主要貢獻總結(jié)如下:
1)本文提出一種安全的跨鏈交易模型。具體來說,依據(jù)交易過程的承當?shù)慕巧?,模型劃分為能源區(qū)塊鏈、財務(wù)區(qū)塊鏈。采用改進的雙向錨定和哈希鎖定結(jié)合的跨鏈技術(shù),完成跨部門間的數(shù)字資產(chǎn)的安全高效轉(zhuǎn)移,實現(xiàn)用能溯源,往來資金審計。
2)采用IPFS和無模式數(shù)據(jù)庫協(xié)同區(qū)塊鏈實現(xiàn)鏈上鏈下數(shù)據(jù)存儲。將設(shè)備產(chǎn)能、用能數(shù)據(jù)記錄存儲在IPFS各節(jié)點上。交易記錄通過共識機制上鏈存儲,同時依據(jù)鏈上數(shù)據(jù)建立數(shù)據(jù)庫副本,便于監(jiān)管部門過濾或排序查詢結(jié)果,減少合約代碼的復雜性,避免過度查詢產(chǎn)生的額外開銷。
3)提出一種的偽隨機拜占庭容錯共識算法。采用隨機可驗證函數(shù)結(jié)合橢圓曲線加密,高保密性隨機選取固定數(shù)量的共識節(jié)點參與拜占庭容錯算法過程,實現(xiàn)分散節(jié)點交易數(shù)據(jù)正確且安全上鏈記錄,確保大規(guī)模分散能源交易業(yè)務(wù)高效運行。
如圖1所示,整個跨鏈框架包含兩個部分,能源聯(lián)盟鏈(Energy Blockchain,EBC)、財務(wù)聯(lián)盟鏈(Financial Blockchain,F(xiàn)BC)、IPFS網(wǎng)絡(luò)。在整個體系中,有兩個區(qū)塊鏈,其中EBC作為主鏈,F(xiàn)BC為側(cè)鏈,能源區(qū)塊鏈網(wǎng)絡(luò)負責處理一線分布式新能源設(shè)備的能源交易,其智能合約接收能源節(jié)點發(fā)起的交易請求。財務(wù)區(qū)塊鏈網(wǎng)絡(luò)負責處理整個交易環(huán)節(jié)的資金,具體功能涉及資金結(jié)算、資產(chǎn)抵押擔保。EBC和FBC之間通過跨鏈轉(zhuǎn)移抵押資產(chǎn),進而實現(xiàn)能源傳輸業(yè)務(wù)和資金來往業(yè)務(wù)明確劃分,采用數(shù)字資產(chǎn)代替實際能源減少等價值實物在轉(zhuǎn)移過程中的損耗。具體交易過程細節(jié)將在第2章詳細描述。各區(qū)塊鏈網(wǎng)絡(luò)中參與主體有能源節(jié)點,財務(wù)節(jié)點。各主體的功能細節(jié)如下:
圖1 雙聯(lián)盟鏈物聯(lián)網(wǎng)能源交易框架
新能源節(jié)點:是指在能源系統(tǒng)中實現(xiàn)發(fā)電、集電一體的物聯(lián)網(wǎng)設(shè)備,例如:電動車充電樁設(shè)備、光伏發(fā)電設(shè)備、風力發(fā)電機設(shè)備等新能源和綜合能源設(shè)備,且每個設(shè)備具備區(qū)塊鏈功能。在P2P交易過程中按照交易角色被劃分為:買家節(jié)點和賣家節(jié)點[1]。同時還有負責監(jiān)聽能源區(qū)塊鏈交易全過程,匯集所有交易信息全節(jié)點。
財務(wù)節(jié)點:負責一個能源片區(qū)內(nèi)資金往來的電網(wǎng)財務(wù)部門作為一個財務(wù)節(jié)點。含有wallet pool,wallet pool里面記錄著所管轄能源節(jié)點的錢包地址,負責接受能源節(jié)點的交易資金和抵押金。能源節(jié)點P2P交易過程中產(chǎn)生的收費地址是存在于錢包池,能源節(jié)點本身不負責收發(fā)資金。
能源幣:是由財務(wù)區(qū)塊鏈中的財務(wù)節(jié)點向wallet pool能源節(jié)點發(fā)放的代幣。在交易初期,每個財務(wù)節(jié)點向分管片區(qū)內(nèi)IoT發(fā)放等量一定數(shù)額的energy coin。只要能源區(qū)塊鏈內(nèi)的P2P交易進行,必定有energy node的coin消耗,當coin為0時,相應(yīng)energy node向financial node發(fā)送借幣請求,financial node 依據(jù)credit pool里面對該節(jié)點的信用記錄進行發(fā)幣響應(yīng),該過程的具體細節(jié)在后面的動態(tài)定價策略中會展開描述。
能源通證:是在能源區(qū)塊鏈上流通的數(shù)字資產(chǎn)。P2P能源交易,實質(zhì)就是交易數(shù)字資產(chǎn)energy token,有energy token就代表實際擁有多少能源,智能設(shè)備之間物理輸電線以1 energy token=0.1 kw/h 為換算進行能源輸送。該方法能有效避免實際能源在P2P傳輸損耗。同時作為energy node在EBC上發(fā)起交易請求時的抵押資產(chǎn)。
為支持物聯(lián)網(wǎng)集電設(shè)備進行安全的P2P交易,同時實現(xiàn)用能溯源和資金審查。建立了兩個關(guān)鍵聯(lián)盟鏈,一個是能源區(qū)塊鏈,一個是財務(wù)區(qū)塊鏈。交易過程如圖2所示。
圖2 跨鏈交易工作流程
1)系統(tǒng)初始化。在能源區(qū)塊鏈網(wǎng)絡(luò)中,每個參與的能源節(jié)點,即物聯(lián)網(wǎng)能源設(shè)備都先經(jīng)過權(quán)威機構(gòu)(電網(wǎng)公司)認證,獲得唯一身份認證后,才有發(fā)起交易的準入資格。Seller node和buyer node的P2P交易過程中所需要的請求-響應(yīng)消息傳遞過程都利用EIGamal算法進行數(shù)字簽名及數(shù)據(jù)加密。每個能源節(jié)點獲得公鑰私鑰對,獲得各自在財務(wù)節(jié)點錢包池中的錢包地址。因此每個能源節(jié)點系統(tǒng)初始產(chǎn)生信息列表包括{Certe,i, PK, SK, Ecoin, Waddr, };財務(wù)區(qū)塊鏈中,每個財務(wù)i節(jié)點同樣是具有證書Certf,i的各供電所配置的財務(wù)部門,財務(wù)節(jié)點擁有轄區(qū)內(nèi)能源節(jié)點的資金,同時監(jiān)聽EBC上事件。能源節(jié)點的錢包地址是指向財務(wù)節(jié)點的wallet pool。財務(wù)節(jié)點要記錄的列表信息包含了買賣方的抵押資金,交易需求量,近期時間內(nèi)的競價數(shù)據(jù)。數(shù)據(jù)列表{Cert, PK, SK, price}
2)確定交易角色。有購電意向的能源節(jié)點確定為buyer node,有剩余能源且想對外銷售的能源節(jié)點為seller node。Buyer node提交購電需求并向EC的智能合約抵押資產(chǎn),同理buyer node提交售電請求并向EC上的智能合約抵押資產(chǎn)。抵押資產(chǎn)以能源令牌(energy token)的形式上傳到EC上的智能合約中。抵押資產(chǎn)取能源節(jié)點目前含有的能源資產(chǎn)的5%。雙重抵押的方式利于建立seller和buyer之間的去中心化信任。
3)交易組價格協(xié)商。EBC上的智能合約收集從能源節(jié)點收到的交易請求信息,優(yōu)先將能源需求量小于等于能源供應(yīng)量的seller和匹配為交易組{seller ID , buyer ID},并向相應(yīng)節(jié)點發(fā)送開始競價指令。能源節(jié)點收到配對通知,本文不介紹競價的具體細節(jié),按照以下規(guī)則判斷雙方是否達成價格匹配:
其中Prbuyer買家出價,Prseller是賣方出價,Prretail是電網(wǎng)零售價,是電網(wǎng)公司主網(wǎng)面向散戶(如:家庭、學校、工廠)售電的市場標準價格。買家在競價過程中兩個狀態(tài):接受/拒絕,賣家三個狀態(tài):接受/協(xié)商/拒絕。當買賣雙方都達成滿意的價格后,即買賣雙方競價狀態(tài)都是accept,能源節(jié)點將該狀態(tài)下買賣雙方的最終定價寫入EBC智能合約,由此改變合約狀態(tài),啟動跨鏈轉(zhuǎn)移命令,將抵押資金及支付通知通過雙向錨定技術(shù)轉(zhuǎn)移到FBC。
4)跨鏈信息共享。EBC網(wǎng)絡(luò)內(nèi)的買賣雙方的抵押資產(chǎn)、成交量、成交價格都發(fā)送到EBC的智能合約上。由于能源節(jié)點所擁有的支付資金energy coin都在財務(wù)節(jié)點上,這樣的目的是讓能源節(jié)點專門處理能源輸送協(xié)定,財務(wù)節(jié)點負責實現(xiàn)資金調(diào)整,從而避免不同主體在交易過程中承擔過多的功能,造成額外的工作量負擔。在EBC智能合約上的抵押資產(chǎn)采用雙向錨定技術(shù)轉(zhuǎn)移到FBC,讓財務(wù)鏈對資金往來進行溯源監(jiān)管。轉(zhuǎn)賬通知也由EBC上的智能合約向FBC傳達,再通過FBC上的智能合約對與能源節(jié)點交易雙方相關(guān)的財務(wù)節(jié)點發(fā)起通知??珂溞畔⒐蚕淼倪^程采用到結(jié)合了區(qū)塊鏈微支付思想的雙向錨定技術(shù)。雙向錨定實現(xiàn)信息傳遞及資產(chǎn)轉(zhuǎn)移過程如圖所示3流程圖。
圖3 雙向錨定資產(chǎn)轉(zhuǎn)移流程圖
①首先,在EBC上的智能合約鎖定待轉(zhuǎn)移的抵押資產(chǎn),被鎖定的資產(chǎn)不能在EBC中繼續(xù)進行交易業(yè)務(wù),鎖定資產(chǎn)表示為V,如果主鏈網(wǎng)絡(luò)中各參與節(jié)點動用了這筆鎖定的資產(chǎn),其他節(jié)點可以證明這個過程,向智能合約發(fā)送重構(gòu)SPV,則之前的跨鏈轉(zhuǎn)移失效,本文對該過程不細述。
②之后,抵押資產(chǎn)在EBC上等待一個確認期,防止拒絕服務(wù)攻擊(Denial of Service, DoS)[12]。DoS攻擊是采用數(shù)量龐大的傀儡節(jié)點持續(xù)向區(qū)塊鏈智能合約發(fā)送大量交易請求,從而導致整個區(qū)塊鏈數(shù)據(jù)處理模塊癱瘓。雙向錨定技術(shù)設(shè)計確認期的目的是保障主鏈達到足夠的工作量,因此等待一個確認期,確認期一旦結(jié)束,區(qū)塊鏈上的智能合約將對期間產(chǎn)生的交易數(shù)據(jù)進行處理。由于傳統(tǒng)雙向錨定技術(shù)中,確認周期時間較長,不能滿足實際P2P交易輕量、快捷的操作需求,因此本文利用區(qū)塊鏈微支付的思路,在資產(chǎn)鎖定但未轉(zhuǎn)移的確認期內(nèi),允許高頻小額交易的抵押。鎖定的待轉(zhuǎn)移資產(chǎn)Alock高于實際抵押資產(chǎn)V,多出的部分稱為定向資產(chǎn)R,是依據(jù)實際抵押的資產(chǎn)決定的(R=V*γ,γ取值參考轉(zhuǎn)移過程的手續(xù)費(gas)花費在總資產(chǎn)價值中的占比,該比例下產(chǎn)生的預扣資產(chǎn)價值要高于手續(xù)費,同時小于實際確定的資產(chǎn)價值),即:
確認期截止時,最后達成的轉(zhuǎn)移資產(chǎn)如果是包含在確認期前鎖定的資產(chǎn)中,即微交易抵押資產(chǎn)價值R′<定向資產(chǎn)價值R,則最后待轉(zhuǎn)移資產(chǎn)修改為實際確定的抵押資產(chǎn)V′和微交易產(chǎn)生的資產(chǎn)R′之和;即,Alock=V+R′反之,則以確認期前被鎖定的資金進行轉(zhuǎn)移;
③確認期過后,EBC向FBC發(fā)送簡單支付證明(Simple-Payment-Verify, SPV),SPV在區(qū)塊鏈中通常以區(qū)塊頭列表、默克爾樹的形式存在,此處SPV不僅包含了在EBC上抵押資產(chǎn)的價值信息,而且還包括買賣雙方達成一致后買家所需要執(zhí)行的轉(zhuǎn)賬信息。
④FBC收到EBC發(fā)過來的SPV,對發(fā)送方及信息真實性展開驗證,具體通過簽名驗證。等待一個競爭期,目的防止資產(chǎn)轉(zhuǎn)移過程中利用時延產(chǎn)生雙重花費現(xiàn)象[12]。一個競爭期結(jié)束后,依據(jù)EBC發(fā)送的SPV所包含的抵押資產(chǎn)信息,F(xiàn)BC產(chǎn)生成等價值的energy coin,該過程被稱為鑄幣。FBC完成鑄幣行為后,再根據(jù)SPV里面包含的轉(zhuǎn)賬信息,由FBC上的智能合約觸發(fā)分管seller node的財務(wù)節(jié)點,由財務(wù)節(jié)點根據(jù)共享的轉(zhuǎn)賬信息來變更wallet pool里面的seller address和buyer address的energy coin數(shù)量。完成FBC鑄幣和轉(zhuǎn)賬后,F(xiàn)BCN向EBCN發(fā)送反饋,主鏈接收到側(cè)鏈發(fā)來的反饋,將轉(zhuǎn)移前鎖定的抵押資產(chǎn)全部清空。由于FBC接收到SPV后,相應(yīng)功能函數(shù)狀態(tài)改變,則FBC上智能合約觸發(fā)財務(wù)節(jié)點向管轄區(qū)域?qū)?yīng)seller node發(fā)送簽名,通知其向?qū)?yīng)買家發(fā)送能源。
⑤釋放抵押資產(chǎn),交易完成。買家收到所請求的energy token后,向EBC合約發(fā)送傳輸完成消息,標志著買家和賣家P2P交易順利達成。買賣雙方達成交易后,開始請求撤回抵押資產(chǎn)。因為資產(chǎn)轉(zhuǎn)移過程中,EBC中的抵押資產(chǎn)已經(jīng)以energy coin的形式存在于FBC中了。因此撤回抵押資產(chǎn)實質(zhì)上就是將與抵押資產(chǎn)等值energy coin發(fā)送到賣家節(jié)點和買家節(jié)點的錢包地址中。該方式實現(xiàn)能源變現(xiàn)的同時,減少了一線綜合能源處理交易的復雜性。
5)共識上鏈。共識算法采用適用于大規(guī)模能源P2P交易的偽隨機拜占庭容錯算法(RPBFT),該算法將由在FBC和EBC網(wǎng)絡(luò)中的監(jiān)聽全過程的全節(jié)點通過選舉出共識委員節(jié)點而進行PBFT共識達成一致性交易,委員節(jié)點監(jiān)聽整個交易過程中各區(qū)塊鏈網(wǎng)絡(luò)的狀態(tài)變化,將EBC上交易協(xié)商、抵押信息、交易達成相關(guān)的信息打包經(jīng)過共識后上鏈保存。將FBCN關(guān)于資金支付信息、抵押轉(zhuǎn)移信息通過財務(wù)節(jié)點經(jīng)過RPBFT后達成正確一致性決定上鏈保存。在該共識算法下,網(wǎng)絡(luò)通信復雜度僅和共識委員會節(jié)點數(shù)量有關(guān),在大規(guī)模物聯(lián)網(wǎng)節(jié)點中保障交易信息一致性的確定性同時達到毫秒級時延。具體過程見第3章。
跨鏈實現(xiàn)能源交易的業(yè)務(wù),主要實現(xiàn)交易過程跨部門的追蹤溯源,實現(xiàn)整個能源交易業(yè)務(wù)分流,將能源交易中涉及到資金和能源兩個業(yè)務(wù)劃分開來,分別由能源區(qū)塊鏈和財務(wù)區(qū)塊鏈進行數(shù)據(jù)記錄,有效提升數(shù)據(jù)傳遞的安全性,同時降低單一部門交易模式下能源輸送、資金管理一手抓的工作量。是區(qū)塊鏈在工業(yè)物聯(lián)網(wǎng)領(lǐng)域上應(yīng)用的一大實質(zhì)性進步。
P2P交易過程中,能源區(qū)塊鏈和財務(wù)區(qū)塊鏈兩個聯(lián)盟鏈包含的各參與節(jié)點地位均等的,都先經(jīng)過權(quán)威機構(gòu)的認證后才能參與到對應(yīng)區(qū)塊鏈網(wǎng)絡(luò)中承當相應(yīng)角色任務(wù),因此不同于比特幣網(wǎng)絡(luò)中完全不可信的交易環(huán)境,不需要采用耗費大量計算資源的工作量證明(proof of work,PoW)。實用拜占庭容錯算法(Practical byzantine fault, PBFT)相比PoW,對節(jié)點算力要求不高,能在有錯誤節(jié)點情況下,快速達成正確的一致性決定。但是其通信復雜度和節(jié)點數(shù)量相關(guān),因此不適用于存在大規(guī)模節(jié)點參與共識的應(yīng)用場景中。在這個問題上,fisco bcos提出了隨機拜占庭容錯算法(RPBFT),從參與節(jié)點中隨機選取共識委員節(jié)點,在節(jié)點替換周期內(nèi)由共識委員節(jié)點進行PBFT共識,每輪周期結(jié)束后再從驗證節(jié)點列表里選取節(jié)點替換共識委員節(jié)點。該方法下,通信復雜度僅和共識委員節(jié)點數(shù)量相關(guān),且隨機輪換的方式保證了共識過程公平性、安全性。
門外,不到十個人。最近的,有三個,一個男孩,蹦蹦跳跳,顯得很高興。一個光頭大漢,手上持刀,刀上有血。一個瘦小干枯的老頭,眼睛追著橋上紫衣美婦的屁股看。
在物聯(lián)網(wǎng)P2P能源交易的場景下,為了激勵節(jié)點參與能源交易,本文的區(qū)塊鏈網(wǎng)絡(luò)節(jié)點采用偽隨機拜占庭容錯算法( Pseudorandom and practical byzantine fault,RPBFT),結(jié)合能源交易活躍度考量和可驗證隨機函數(shù)(Verifiable Random Function)的思想,隨機選擇能源區(qū)塊鏈網(wǎng)絡(luò)或者財務(wù)區(qū)塊鏈網(wǎng)絡(luò)里面的部分節(jié)點加入共識節(jié)點委員會,由共識委員會中的成員節(jié)點進行PBFT,委員會之外的剩余節(jié)點對委員會節(jié)點達成的一致性結(jié)果進行二次驗證。同時由于P2P交易對時效要求較高,本文采用的RPBFT將取消傳統(tǒng)的準備階段。在RPBFT共識過程中,節(jié)點劃分為進行PBFT的共識委員節(jié)點,剩下的節(jié)點為驗證節(jié)點,整個共識算法過程如下:
隨機的目的就是不可預測。節(jié)點總數(shù)為S,則共識委員節(jié)點數(shù)量為H,其余節(jié)點為驗證節(jié)點,不參與一致性協(xié)議的共識過程。區(qū)塊鏈節(jié)點表示為{N0,N1,…,NS-1},其中選擇H個節(jié)點加入共識委員。H根據(jù)網(wǎng)絡(luò)規(guī)模在控制臺設(shè)置更新(節(jié)點大于兩位數(shù),則H=50)。本文結(jié)合IRTF提出的VRF技術(shù)方案[13]產(chǎn)生隨機數(shù),選擇共識委員節(jié)點,VRF基本思想就是通過輸入難以被篡改的值,稱為seed,結(jié)合橢圓曲線加密的過程,輸出一個不可預測的隨機數(shù)r和一個零知識證明π,其他節(jié)點可以通過π驗證隨機數(shù)的正確性?;诳沈炞C函數(shù)思想選取共識委員節(jié)點的具體過程如下:
1)生成密鑰對:橢圓曲線中,G為基準點,O為階數(shù),每個節(jié)點生成一對公鑰私鑰對,隨機選擇獲得私鑰Ki(i為節(jié)點編號),其中Ki∈[0,O-1],公鑰P=K*G。
2)產(chǎn)生隨機數(shù)及證明:輸入seed,Ki。輸出:隨機數(shù)r,證明π。seed代表一個不可篡改、能代表節(jié)點特性的消息,本文中采用交易前后的energy coin差值,記作ΔCoin,與節(jié)點編號NID使用函數(shù)h1編碼成一個整數(shù)作為輸入seed,即:
使用散列函數(shù)h2,計算得到L,將seed映射到secp256k1橢圓曲線的有限域上一點L。
產(chǎn)生一個隨機數(shù)Q,Q∈[1,O-1]。計算Q*L,Q*G。使用函數(shù)h1將兩個數(shù)字編碼成數(shù)字C,即:
獲得橢圓曲線上一點Vi,使用函數(shù)h3將橢圓曲線上的點V編碼成一個整數(shù),獲得隨機數(shù)r;
3)每個節(jié)點按照上述步驟都能獲得屬于自己的隨機數(shù)和證明,規(guī)定節(jié)點編號從r%M到(r+H)%M之間的節(jié)點作為共識委員節(jié)點(r%M編號的節(jié)點作為共識過程中的主節(jié)點,其余節(jié)點為副本節(jié)點)。為了防止隨機可驗證函數(shù)選出來的節(jié)點聯(lián)合作惡,因此片區(qū)內(nèi)每完成一次跨鏈交易操作時,節(jié)點的ΔCoin都發(fā)生變化,根據(jù)新的變化重新計算隨機數(shù)r和π,替換原有的共識委員節(jié)點。
1)獲 得seed'=h1(NID',ΔCoin'),h1能將兩個輸入變成成一個整數(shù)。將seed'映射到橢圓曲線有限域上一點L';
2)根據(jù)節(jié)點提供的證明信息π′(包含有C',M',V'),計算如下公式:
3)采用函數(shù)h1將T1和T3編碼成為一個整數(shù)V'':
4)驗證如果C″=C′相等,則該節(jié)點的身份是有效的。通過驗證的節(jié)點下一步進行PBFT共識。
①預準備階段。主節(jié)點向副本節(jié)點發(fā)送預準備消息<<Pre-prepare, v, n, d>, m>。其中v為當前視圖view,n代表該預準備消息序號,d代表交易數(shù)據(jù)數(shù)字摘要,m為交易數(shù)據(jù)本身。
②準備階段。備份節(jié)點i收到預準備消息后進入準備階段,將準備消息發(fā)送給除自己以外的其他備份節(jié)點,準備消息格式為<Prepare, v, n, d, i>。當日志內(nèi)容被寫入交易數(shù)據(jù)m、視圖v中序列號為n的預準備消息、2f個來自不同備份節(jié)點的準備消息。代表準備階段完成。
③確認階段。所有備份節(jié)點向客戶端返回回復消息。消息格式為<Commit, v, n, d, i>,當收到2f+1個與準備消息匹配的來自不同備份節(jié)點的確認消息,則該階段完成。
④回復階段。所有節(jié)點向客戶端返回回復消息<Reply, v, t, c, i, r>。r為執(zhí)行請求后的操作結(jié)果。
本文中涉及到能源交易與區(qū)塊鏈安全性能相關(guān)的性能有:
1)無第三方中心化控制。智能充電樁之間的電力交易時通過P2P的方式進行,同時利用兩個區(qū)塊鏈對交易過程的能源輸送管和資金往來進行記錄,避免數(shù)據(jù)集中化易被攻擊、被篡改帶來的安全隱患,實現(xiàn)分布式交易的痕跡式管理與業(yè)務(wù)分流。
2)無雙重花費。在能源區(qū)塊鏈上發(fā)起交易前,買方和賣方都要在區(qū)塊鏈上抵押資產(chǎn),限制作惡節(jié)點參與交易。涉及到資金花費需要兩個區(qū)塊鏈主體共同監(jiān)管,資金轉(zhuǎn)移過程中用到了雙向錨定技術(shù),一旦交易發(fā)起,相應(yīng)資金就會被鎖定,且分別等待一個競爭期后才能解鎖使用。
3)加密交互。在交互過程中都采用的是密碼學原理,涉及到信息傳遞都采用非對稱加密和數(shù)字簽名進行操作。
4)防攻擊。首先區(qū)塊鏈上每個節(jié)點都是經(jīng)過權(quán)威認證的節(jié)點,其次在交易上鏈過程中,采用基于密碼學原理的共識算法,高保秘性的隨機選擇了參與共識的節(jié)點,產(chǎn)生的偽隨機數(shù)具有均勻分布的性質(zhì),與橢圓曲線上的隨機點一樣,是不可區(qū)分、不可反推的,結(jié)合密碼學隨機選擇有效避免女巫攻擊通過大量傀儡節(jié)點參與增加選中概率的發(fā)生。提供零知識證明在不公開節(jié)點私鑰信息的情況下,讓其他節(jié)點對共識節(jié)點有效性進行驗證。從而杜絕了惡意節(jié)點根據(jù)公開信息提前掌握關(guān)鍵節(jié)點,對區(qū)塊鏈網(wǎng)絡(luò)發(fā)起有目的攻擊。
5)可驗證性。對獲得了隨機數(shù)r和及其有效性證明π=(C,M,V)。其他節(jié)點對該隨機數(shù)相關(guān)的節(jié)點進行證明。如果證明及節(jié)點公開信息沒有被篡改:則前提條件:seed=seed'; C = C'; M = M'; V = V';如果共識委員節(jié)點無效,則切換當前視圖,展開新一輪共識節(jié)點選舉,進而保證一致性協(xié)定的正確性。驗證過程原理如下:
本文采用的共識機制與傳統(tǒng)的PBFT相比主要優(yōu)勢體現(xiàn)在高保密性的選取了代表性節(jié)點參與共識,共識過程實質(zhì)還是PBFT。因此測試性能之考慮通信次數(shù)。在傳統(tǒng)PBFT共識中,設(shè)定區(qū)塊鏈中總節(jié)點數(shù)量為N,客戶端發(fā)送請求給主節(jié)點,通信次數(shù)為1;在預準備階段,主節(jié)點向除自己以外的其他備份節(jié)點發(fā)送準備消息,通信次數(shù)為N-1;準備階段,各備份節(jié)點間相互驗證的通信次數(shù)為(N-1)2;在確認階段,所有備份節(jié)點向主節(jié)點返回確認信息,通信次數(shù)為N(N-1)。最后回復階段,所有節(jié)點向客戶端返回一致性信息,通信次數(shù)為N。因此總的通信次數(shù)為2N2-N+1。偽隨機PBFT共識算法,在總節(jié)點數(shù)為N的情況下,采用隨機驗證函數(shù)的方法獲得不可預測的節(jié)點作為參與共識的節(jié)點,其通信次數(shù)與選取的共識節(jié)點委員會數(shù)量K有關(guān),K≤N。同理,PRPBFT中,完成一次共識并將區(qū)塊上鏈,整個過程通信次數(shù)為2K2-K+1。
根據(jù)實際測試點的充電樁配置及整個地區(qū)未來充電樁網(wǎng)絡(luò)配置計劃,設(shè)置節(jié)點總數(shù)為7,15,38,100,124,450,750。在不同節(jié)點數(shù)量下,傳統(tǒng)PBFT和PRPBFT的通信次數(shù)對比如表1所示。
表1 不同節(jié)點總數(shù)下兩種算法通信次數(shù)對比
由表1可以看出,在大規(guī)模節(jié)點情況下,偽隨機實用拜占庭共識算法更具有優(yōu)勢,在超過兩位數(shù)節(jié)點數(shù)量上,參與共識的節(jié)點數(shù)量固定下來,保障交易達成一致性的效率。
本文設(shè)計了一種基于跨鏈的能源點對點交易模型,采用兩個區(qū)塊鏈協(xié)同完成分布式新能源P2P交易;使用支持微支付雙向錨定技術(shù)實現(xiàn)能源鏈和財務(wù)聯(lián)的資產(chǎn)轉(zhuǎn)移;引入基于橢圓曲線加密的可驗證隨機函數(shù),高保密性地選取節(jié)點參與PBFT共識過程,提高了該算法在大規(guī)模節(jié)點下的擴展性;實驗仿真和數(shù)據(jù)推理表明,該方案是有效的。未來將探索新的跨鏈技術(shù)優(yōu)化交易步驟,減少跨鏈造成的手續(xù)開銷。