?

基于區塊鏈的電動汽車充電網絡信任管理機制

2022-12-26 03:21唐鄭熠陳龍輝胡文瑜
貴州大學學報(自然科學版) 2022年6期
關鍵詞:輪盤下層充電站

黃 達,劉 傳,唐鄭熠*,3,陳龍輝,胡文瑜

(1.福建工程學院 計算機科學與數學學院,福建 福州 350118;2.湖南工商大學 移動商務智能湖南省重點實驗室,湖南 長沙 410205;3.福建工程學院 福建省大數據挖掘與應用技術重點實驗室,福建 福州 350118)

隨著化石燃料的逐漸枯竭,電動汽車在節能減排和環境保護方面的優勢日益凸顯[1]。隨著電動汽車愈來愈多,電動汽車充電站[2]的需求量也將變得巨大。由于充電站的數量變多,各個充電站的使用損耗程度、服務質量、充電效率或者顧客滿意度又不同,需對各個充電站的信用進行分析。

自比特幣誕生以來,區塊鏈技術得到了廣泛的關注,并被應用于智能金融、物聯網等多個領域[3]。區塊鏈[4]是比特幣的底層技術,具有去中心化、匿名性、可追溯以及數據不可篡改等特性,與信任機制中的長期發展目標可信、可靠等不謀而和[5]。

許多學者對信任機制進行了相關研究。LI等[6]提出了一種基于信任的消息廣播方案,車輛的信息是由車輛自身進行操作,包括匯總和信用值的計算等。劉海等[7]提出了一種基于信譽的理性秘密共享方案,將博弈論和傳統的秘鑰相結合,分析理性參與者的行為偏好等,并設計了信譽懲罰機制。羅敏等[8]設計了一個無人系統的信任模型,針對各個節點之間難以全面地建立直接的信任關系,節點之間的信用值隨著時間的變化而具有主觀性和不確定性,綜合運用了各個節點的信用值并且運用信任傳遞方式生成信任鏈條。這項工作使得各個節點之間相互制約和警示,大大降低了節點作弊的風險,具有相對強的可靠和安全性,不容易受到惡意節點的影響。為了解決區塊鏈技術中基于算力的共識算法所出現的問題,ZHOU等[9]設計了一種基于歷史行為的信用值代替算力,但是此種方法僅僅只能根據特定的行為去決定各個節點的信用值,在一定程度上提高了區塊的生成效率,減小了無用算力帶來的能耗。OLUOCH等[10]提出一種基于路邊的單元的信任機制,車輛在遇到情況的時候將信息發給路旁所設置的類似基站或者服務器等單元控制器。YAO等[11]提出了集合多個因素的信用評估的方法,綜合對事件相關度、主體可信度、距離和時間的相關度進行考慮,并對最后的可信度加權分析。這項工作考慮到了事件的特征與時間和空間的相關性,對于辨別虛假的消息有很好的作用。

上述研究成果將信任機制分為兩種。一種通過信任傳遞方式構成鏈,雖然可以解決中心化遇到的一些問題,比如服務效率低、計算負荷大等,但是在數據存儲、安全性方面依舊存在問題。另一種使用信用值代替算力的方法,不但使系統的響應速度加快,還具有數據容錯性強等優點;但是單憑通過信用值高低選舉區塊鏈中的記賬節點還是存在壟斷的風險。

共識機制作為區塊鏈技術的核心部分,使得區塊鏈系統可以穩定安全地運行。其中:

工作量證明(proof of work, PoW),這種方法最大的缺陷就是對能源的損耗和浪費,所以不符合社會的發展。為了解決這個問題,因特爾提出了基于消逝時間的證明機制[12]。在這樣的機制下,節點參與競爭的代價相對挖礦來說將降低很多,所有的節點擁有的機會也較為平等。

權益證明機制(proof of stake, PoS)由Sunny King在點點幣白皮書中提出。為了解決比特幣的PoW帶來的大量能源浪費等問題,他引入了幣齡的概念,每個代幣都有相應的價值來衡量用戶參與決策的權利[13]。PoS雖然可以解決能源浪費的問題,但是從系統安全方面來說,正是因為不需要挖礦,所以極容易造成類似女巫攻擊的惡意行為[14]。

基于對電動汽車充電站的信任評估以及傳統中心架構的風險,本文提出一種融入了區塊鏈技術的電動汽車充電站信任機制,同時將輪盤賭算法融入到通過信用值選舉記賬節點的共識機制之中。這樣,不僅避免了由于信用值過高而出現的記賬節點壟斷行為,而且增加了作弊行為的難度。

1 基于區塊鏈的充電站網絡存儲設計

充電站網絡主要是由多個充電站組成的一個聯盟,每個充電站都有自己本身的服務器和一個客戶終端,并且客戶終端由區域下層鏈選舉出的總負責節點負責。正常情況下,負責節點不被允許進入客戶終端,客戶終端只在查詢問題時打開。為了加快系統運行速度,減小系統的吞吐量,本文設計兩條鏈,分別為下層鏈和上層鏈。下層鏈主要是按照區域劃分,在一定的區域內所有的充電站服務端構成一條下層鏈,而所有的下層鏈則在邏輯上構成一條上層鏈。其中,充電站用戶對充電站的評價內容保存在充電站的本地服務器上,評價內容進行哈希運算得出的哈希值則存儲在充電站的下層鏈上,由下層鏈塊標識、評價用戶偽身份、各充電站標識構成的安全索引則存儲在上層鏈上。

1.1 區塊鏈存儲結構

區塊鏈是一種信息技術的術語,從本質上來說,它是一種鏈式的數據結構,或者是一種多中心化的數據庫。由一連串的密碼學方法生成的數據塊被稱為區塊,每個區塊中都包含了某一時間段內的全網的交易信息。區塊里的交易信息是被某一時間段內具有打包區塊權力的礦工打包。區塊與區塊之間是由哈希索引相連接的,被稱為區塊鏈。每個區塊中的交易信息,實際是交易信息進行一系列的哈希運算得出的值,通過Merkle樹保存信息,以確保交易的安全性。本文設計的區塊分為區塊頭和塊身,區塊鏈結構如圖1所示。

圖1 區塊鏈結構Fig.1 Blockchain structure

1.2 存儲管理

定義一條區塊鏈Ψ=(V,fn),其中:

V= {c}是區塊集合,一個區塊c包含著塊頭和塊體兩個部分,分別記為header(c)、body(c)。

映射fn=V→V指的是與前一個區塊的鏈接關系,而fn(c′)=c表示c是c′的上一個區塊。

1.2.1下層區塊鏈

1)塊頭結構

下層區塊的塊頭結構如表1所示。

表1 下層區塊的塊頭結構Tab.1 Block head structure of lower block

塊頭重要元素的說明如下:

Pre_hash表示的是與前一個區塊之間的鏈接關系,對于區塊鏈Ψ=(V,fn),滿足:

?c,c′∈V:fn(c′)=c?c′.Prev_hash = hash(header(c))

其中:hash(x)是哈希運算。

Merkle_root表示的是塊體中的Merkle樹的根Hash,它最主要的作用是防篡改。

Pub_key和Dig_sig是區塊生成者的公鑰與數字簽名。數字簽名是區塊生成者的私鑰對信息加密后的結果,為了確認此區塊為此節點生成;公鑰是為了驗證簽名的正確性且只能通過區塊生成者的公鑰解開。

Block_id的作用類似比特幣中的區塊高度。文中下層鏈和上層鏈這兩條鏈,用區塊標識表示,便于節點遍歷和查找。

2)塊體結構

下層區塊的塊體是一棵Merkle樹,Merkle樹的各個葉子節點代表著此區塊包含各個交易的Hash值,本文將它稱為交易樹。

在這里,對樹的各個部分進行定義。樹中所有的節點集合定義為J,節點之間的鏈接的集合定義為H= {(j,j′) |j,j′∈J},此樹定義為Tx_Tree(J,H)。當Tx_Tree(J,H)存在時,當且僅當滿足以下條件:

(1)存在唯一的l∈J,都?(j,l)∈J。

(2)對?k∈J∧k≠l,僅存在唯一的(k,k′)∈H∧k′∈J。

定義交易樹:一棵交易樹Γ=(Jh∪Pm,H),其中:

(1)Jh∪Pm是所有節點的并集,其中,Jh是所有Hash值節點的集合,而Pm是所有交易節點的集合,Merkle樹的所有葉子節點都是交易信息節點。顯然Jh∪Pm=J。

(2)H={(k,m)|k∈Jh,m∈Jh∪Pm}是樹中各個節點之間的鏈接,當且滿足以下條件:

對?k∈Jh,當且僅當m,n∈Jh∪Pm,存在唯一的(k,m), (k,n)∈H∧k=hash(m‖n)。

(3)Tx_Tree(J,H) = True

其中hash(m‖n)表示的是節點m,n鏈接所得出結果的Hash值;對葉節點而言是對2個葉節點的交易信息連接得出的結果進行Hash運算,并將其轉換為二進制串。下層區塊的數據結構及其存儲內容,如圖2所示。

圖2 下層區塊數據結構Fig.2 Lower block data structure

1.2.2上層區塊鏈

1)塊頭結構

上層區塊的塊頭結構如表2所示。

表2 上層區塊的塊頭結構Tab.2 Block head structure of upper block

塊頭重要元素的說明如下:

Height指的是該區塊所在鏈的位置,方便對信息查找和遍歷,也用來對數據進行追溯。

2)塊體結構

上層區塊的塊體同下層區塊塊體相同,為一棵Merkle樹,僅僅為存儲內容不同。

上層區塊鏈的Merkle樹,由于存儲的主要信息為信用值,所以本文將其稱為信用默克爾樹。

上層區塊鏈的結構與下層區塊鏈的結構類似,但是存儲內容有所不同,也是整體區塊鏈系統重要的一部分。

對于上層區塊鏈,主要存儲充電站的信用分,具有串聯所有區域服務器的作用,便于上層鏈中的各個節點計算當前信用分,以及查詢。當用戶需要知道充電站的信用分,則僅僅需要將信息發給就近服務器,再廣播至聯盟節點進行檢索返回。正常情況下,下層區塊鏈計算出用戶的主觀總得分(節點信用分)上傳,且客觀因素影響分(環境信用分)也相應上傳;作為上層鏈節點時,需要計算當前獲得的信用總分和信用值,并且上傳各個充電站累加的誠實度,便于下一個獲得上層鏈區塊記賬權的節點進行計算。上層區塊的具體存儲如圖3所示。

圖3 上層區塊數據結構Fig.3 Upper block data structure

雖然塊頭信息相似,但是下層區塊鏈主要是起到數據收集與保存的功能,而上層區塊鏈中各個節點則起到信用分的計算及其存儲的作用。系統使用雙層區塊鏈,不僅能夠減小各個節點的工作量,還可以加快系統的響應時間。

2 評分數據收集上傳方案

本文利用區塊鏈的技術來存儲信用數據,并將不同的數據分別存入到區塊鏈當中。充電站雙層鏈系統結構如圖4所示。

圖4 充電站雙層鏈系統結構Fig.4 Double-layer chain system structure of charging station

從圖4可以看出,在進入系統之前,所有的充電站和用戶都需要進行注冊,并且生成自身的公私鑰對。當充電用戶充完電后,將評分信息與相應的消費記錄發送給就近的基站,基站收到信息后,對相應的消息進行整合,再將整合的信息上傳到下層鏈網絡中,下層鏈的共識節點收到整合的信息后,再計算出相應的評分數據,廣播至下層鏈網絡中驗證,驗證通過則上鏈。在固定時間內上層鏈共識節點提取下層鏈區塊中的數據,計算出信用值后,廣播至上層區塊鏈驗證,并上鏈。

充電數據上鏈的基本流程為用戶注冊、用戶數據上報、區塊生成、區塊驗證和上鏈。

2.1 系統初始化和實體注冊

充電站服務器(charging station server, CSS)使用密鑰和數字簽名的生成算法生成相應的公私鑰對(Genc,Gsig),充電用戶(charging user, CU)通過客戶端隨機生成自己的公私鑰對(pubmkey, privmkey),通過輸入的MA集合{a1,a2,a3,…,am}獲得相應的數字簽名privmkey_sig,同時各個服務器也生成相應的公私鑰對(pubnkey, privnkey),并且由交易簽名生成的簽名鑰privnkey_sig,對數據集合MB{b1,b2,b3,…,bn}簽名。

在數據的上報與存儲的過程中,CU、CSS對評分數據的簽名和加密分別由(Gsig,Ssig,Vsig)(生成、簽名、驗證)完成。存儲聚合評分數據的區塊鏈節點即CSS,通過本文提出的基于輪盤賭策略的共識機制(election of roulette, EoR)選舉出的記賬節點上傳并存儲交易。

2.2 用戶數據上報

用戶每次上傳的都是自己充電過后評判的數據,所以此類數據都是一維的;而服務器打包的數據是在這一時間段內n個用戶的所有數據,所以服務器打包的交易數據是n維的。用戶上傳數據{a1,a2,a3,…,am}的同時,用戶客戶端使用用戶的私鑰privmkey_sig對數據進行簽名?;驹谑盏叫畔⒑?,利用下一層服務器的公鑰(pubnkey)對數據進行加密,再將加密后的數據和數字簽名一同發給下一層的CSS。

算法1是用戶上傳評分數據的算法??蛻舳藦某潆娪脩?charging users)獲得評分數據集(data_set),先對數據集進行逐一驗證,并整合為數據集合MA,再對MA進行哈希運算,將MA、時間戳、簽名等整合為數據集MB,并將MB發送給CSS;CSS對MB中交易數據的簽名sigm(a)逐一進行驗證,并且比對MA的哈希值,若正確則接受數據集MB。其中,MA是整合過的數據集,sigm()是充電用戶對相應數據的數字簽名,時間戳是向認證服務器申請獲得,Hash()是驗證時所用的哈希運算。

算法1用戶評分數據上報

Input: {a1,a2,a3,…,am}

Output: 加密后的評分數據MB

Get data_set from charging users

Get Timestamp from certificate server

MA=?

for each r∈data_set then

if r is legal Then

a=r

MA=MA∪{a}

end if

end for

H(MA) ∶=hash(MA)

MB ∶=MA|sigm(MA.a)|H(MA)|Timestamp

Send MB to CSS

for each a in MA then

if Vsig(pubmkey) = sigm(a) is Ture then

return a

else

Remove a from MA

end if

end for

if Hash(MA)=H(MA) is Ture then

return MA

end if

if Hash(MA)=H(MA) is False then

return ?

end if

return MB

2.3 區塊生成

算法2是區塊鏈的區塊生成算法,其中:Chain_id是區塊鏈標志;Block_id是區塊標識,由區塊鏈標志Chain_id與區塊高度Height構成;index(a)是某一個主體a的編號。為了方便,以mbl表示區塊生成者的公鑰Pub_key,將公鑰Pub_key通過某種運算得到數字簽名Dig_sig的這種運算定義為G運算,用Rep(n)表示通過輪盤賭算法選出記賬節點。為了防止區塊過大,ηm表示某一交易事件中的消息極限,ηM表示區塊事件數量的極限。

算法2區塊生成

Input:An order number n,

An agent id a

Output:A block b or null

if Rep(n)≠index(a) then

return null

end if

Height=k

Tx_number=m

Pub_key=mbl

Block_id=(Height, Chain_id)

Get Timestamp from certificate server

Get the last block b′:Pre_hash ∶=hash(b′)

Get the digital signature(Dig_sig) from user

Pm∶=?

Get MB={B1,B2,B3,…,Bm} from message pool:

?β∈MB:|B|>=ηm∧|MB|<=ηM

for each B∈MB then

if B is legal then

P ∶=B

Pm∶=Pm∪{P}

end If

end for

Γ ∶=mt(Pm)

Merkle_root ∶=root(Γ)

header(b) ∶=(Pre_hash,Tx_number,Timestamp,Block_id,Pub_key,Dig_sig,Merkle_root)

body(b) ∶=Γ

return b

記賬節點從信息池里面把未上鏈的信息MB結合到一起,構成多個相同結構的交易P,并且對此類交易進行逐一驗證,再由交易單集合Pm構成塊體,即交易樹Γ。

2.4 區塊驗證

算法3為區塊驗證算法。記賬節點a在生成相應的區塊b后,需要將區塊的(a,b,siga(b))廣播至下層區塊鏈網絡,先驗證siga(b)的合法性,再對區塊的內容進行驗證。其中,sign(P)為下層鏈節點整理交易時對交易的簽名。

算法3區塊驗證

Input:An agent id a,

A block b

Output:valid or invalid

Block_id=(Height, Chain_id)

if Rep[header(b).Rep(n)]≠index(a) then

return invalid

end if

for each P in body(b):

if siga(b) is legal then

return valid

else

return invalid

end if

if sign(P) is legal then

return valid

else

return invalid

end if

Remove P from message pool

end for

Get the last block b′

if header(b).Pre_Hash≠hash(b′)

return invalid

end if

Get header(b).Block_id.Height from Block_id

Get Chain_id from Block_id

if header(b).Block_id.Height≠header(b′).Block_id.Height+1

return invalid

end if

if header(b).Block_id.Chain_id≠header(b′).Block_id.Chain_id

return invalid

end if

return valid

驗證一個區塊是否合法:1) 通過比對index(a)是否與節點相同,驗證記賬節點是否正確;2) 分別對區塊里面的交易P逐一驗證,判斷交易P是否合法;3) 驗證區塊高度Height、區塊頭的哈希摘要Pre_Hash是否由上一個區塊計算得出;4) 如果驗證通過,則需要將消息P從信息池中除去,避免被其他記賬者重復打包,并將其鏈接至末尾區塊。

3 信任機制設計

本文綜合考慮用戶的主觀因素和充電站服務的客觀因素兩個方面對信用值的影響,通過對這兩個方面影響因素的計算,提出基于主客觀的信用值的計算模型。

系統中每個充電站的服務器都充當一個區塊節點,每個節點的信用值也會隨著每個節點誠實程度的變化進行相應的變化。當節點的信用值變高,節點會得到系統相應的獎勵。為了督促各個服務器參加驗證及記賬權的競爭,每次生成區塊的節點都將獲得出塊獎勵。

信用值的計算針對節點的自利性進行設計。假設每個節點都是自利的,設立規則:信用值越高則獲得記賬權的可能性就越大。如果設計的信用值累計函數曲線一直快速上升,那么算力強大的用戶將會通過自己的算力壟斷記賬權的獲得;如果函數曲線增長過于緩慢,那么大多數用戶將會失去對記賬權爭奪的想法。所以滿足以上要求設計的函數必須滿足如下的條件:1)初期信用值緩慢增長;2)一段時間之后,快速增長信用值,鼓勵參加共識機制;3)為了防止信用值過高的壟斷性行為,信用值從高速增長變為低速增長。

綜上所述,系統需要考慮兩大因素對電動汽車充電站信用的影響:節點信用TJ和環境信用TE。

3.1 節點信用

用戶對電動汽車充電站服務的評分高低,是一種衡量節點服務質量的標準。但是對于不誠實用戶的惡意評分,這類數據不能夠真實地反映充電站服務質量的好壞,也會對信用值的計算產生嚴重的影響,所以在對信用值的計算過程中,應當優先考慮節點信用TJ。

3.1.1影響因素

1)評分可信度(THS)

記賬節點從區塊鏈中獲取用戶的歷史評分數據(THS′),但是歷史評分的可信度會隨著時間的增長而降低,因此加入時間衰減因子λ,則

THS=exp(-Δt/λ)THS′

(1)

式中:Δt為此次充電站的用戶評分與前一次評分的時間間隔;λ為歷史評分隨時間衰減的速度,一般設λ=T0/ln2。

2)間接信用(TRS)

間接信用是在電動汽車充電站附近的用戶(僅限于區塊鏈記賬節點授權的用戶)根據用戶體驗發送的該充電站的推薦評分。一般情況下,記賬節點會對信用較高的用戶進行授權。

(2)

式中:Ti為推薦用戶發送的評分。

3)信用誠實度(TFS)

信用誠實度指的是充電用戶給予充電站的實時評分。

3.1.2節點信用值計算

通過對上述因素進行分析,用戶主觀的信用評分等級如下:

(3)

式中:M為本次評分;Mmin和Mmax分別為最大值和最小值;M0為進行歸一處理后的用戶評分,其與用戶對充電站的滿意度成正比。

記賬節點在計算交易發送者信用時需要考慮:電動汽車充電站的評分可信度(THS),推薦者Oi提供的一些有關充電站的間接信用評分(TRS),當次充電交易獲得的信用誠實度(TFS),具體的計算如下:

TJ= (b1×THS+b2×TRS+b3×TFS) ×M0

(4)

式中:b1,b2,b3分別為各個參數占有的比重,且b1+b2+b3=1。

針對影響因素THS、TRS、TFS的分析,本文主要側重于THS、TRS,且THS的評分更加客觀,因此b1+b2>2/3,取b1>b2,b1、b2的取值范圍分別為(1/3, 2/3)和(1/3, 1/2),理論上b3的取值不超過1/3。

3.2 環境信用

3.2.1影響因素

1)客觀可信度(TFA)

客觀可信度是指充電站歷史評分造成的影響。如果充電站長期獲得不好的評價,或者長時間信用評分過低,就會導致充電站可信度指標降低。

2)輸出電量規模影響(TWR)

輸出電量規模影響指的是充電站充電量造成的影響。如果一個充電站充電量越多,那么這個充電站對環境信用值的影響將越大,反之越小。

3.2.2環境信用值計算

環境信用主要是評判充電站自身的信用表現,包括客觀可信度(TFA)和輸出電量規模影響(TWR)。具體計算如下:

TE=c1×TFA+c2×TWR

(5)

式中:c1,c2為比重系數,且c1+c2=1。

通常情況下TFA的影響更大,因此理論上c1>c2,即c1>0.5,c1的取值范圍為(0.5, 0.7],根據c1的值設置TWR的權重系數。

3.3 信用值的計算

綜合充電網絡的節點信用和環境信用,可以計算出充電站的信用總分:

TC=α×TJ+β×TE

(6)

式中:α,β為各個參數占有的比重,且α+β=1。

對于TJ和TE,雖然TE相對客觀,但是TE隨著時間的變化不會有很明顯的變化,因此本文更加側重TJ的影響。理論上,α的取值應大于β,即α>0.5。本文對α的取值范圍設為(0.5, 0.7],相應可得β的取值范圍。

信用值的計算,首先,通過信用評分計算出此次評價的誠實度

(7)

式中:Q為一個固定的值,負責對此次的誠實度進行歸一化。

其次,對G次的誠實度進行累加獲得總誠實度

(8)

再次,通過信用值計算公式可以得到最終的信用值。

(9)

式中:K為信用值閾值參數,K取值100;P0為常數,為了調節信用分中期高速的上升時間,通常取P0的值為K/2來保證增長的對稱性;h為擬合函數的中心位置,負責控制信用分上升的低速期的時間。

對于作弊的客戶端,由于本文設計的曲線變化過快,為了懲戒其作弊行為,每作弊一次,誠實度將會直接減為原來的3/5,即ni=3ni-1/5,并將其計入區塊鏈當中。對于反復被認定為作弊的節點,作弊次數達3次及以上5次以下的,將該節點參與記賬選舉的概率降為原先的一半;若作弊5次,將直接剝奪該節點參與記賬選舉的權力。

為了防止某些節點因為信用值累計過高而產生的惰性反彈效應使系統趨于中心化,在信用機制中增加了積分重置的功能。若節點的信用值過高且記賬次數達到閾值,那么將減半該節點的信用值,這樣可以降低信用值過高的節點作惡的概率。

4 基于輪盤賭改進的共識機制

EoR通過結合各個節點的信用值,再使用輪盤賭算法選擇出共識產生的記賬節點。使用此種方法可以有效地解決基于PoW共識機制的算力損耗以及共識效率上的缺陷,并且使得記賬權選舉更具有隨機性卻又不失公平,甚至可以有效地防止心懷惡意的節點違規操作?,F有的PoS的共識機制通過對擁有幣的多少和幣齡計算節點所持有的股份,取最大股份擁有者記為記賬節點。目前,很多的研究是使用節點的信用值來替換股份,也就是信用值最大的節點將會取得記賬權。在一定程度上,此種方法可以增加節點對記賬權的競爭,并且可以防止大多數惡意節點的攻擊。但是,當同一節點的信用值過高,那么極有可能使得該節點長期獲得記賬權,導致區塊鏈系統脫離本該有的去中心化的特征;而且當一個節點長期獲得記賬權,那么通常情況下大部分的節點也會放棄對記賬權的爭奪,容易形成節點普遍的惰性思維,不利于系統的長期發展。

本文對于信用值的計算綜合了多方面的因素,有助于提高信用值在節點行為規范以及品行等各個方面的表現,可以極大可能地認為信用值高的節點更加可信;但是為了防止由于信用值過高導致系統中心化、節點喪失對記賬權競爭的信心和高信用節點受賄等問題,將輪盤賭與信用值相結合,并且選取出最后的記賬節點。

在記賬權選舉過程中,各個節點被選中的概率為Pi,Ti為信用機制求出的信用值,q[j]為對節點記賬權獲得概率排序之后前j個概率累計。其中:

(10)

(11)

q[j]對應的概率累計分布如圖5所示。

圖5 概率累計分布Fig.5 Probability cumulative distribution

通過輪盤賭策略獲得記賬權的流程如圖6所示,具體如下:

1)所有節點都可以在給定的時間段內參加記賬權的爭奪。

2)計算所有參與記賬權爭奪的節點總數。

3)通過公式計算每個節點的參加記賬權爭奪時的信用值。

4)計算所有節點的信用值總和。

5)對各個節點被選中為記賬權獲得者的概率進行計算,并對其概率排序。

6)在[0,1]區間內產生一個均勻分布的偽隨機r。

7)若r<=q[1],則選擇節點1作為記賬節點;否則,選擇節點k,使得q[k-1]

8)代理節點選擇結束。

圖6 記賬權選舉的流程圖Fig.6 Flow chart of bookkeeping right election

在一定程度上,基于輪盤賭策略的共識機制可以增加記賬權選舉的隨機性,而且對信用值高的節點又不失競爭性;節點的信用值越高,獲得記賬權的概率越大,但不一定能夠獲得記賬權。

5 安全性分析

5.1 防止區塊鏈硬分叉

當少部分的惡意節點希望聯合作弊,就有可能使得區塊鏈出現分叉的現象,或者各種的網絡故障也會使得網絡不同步而出現分叉現象[15]。此時,系統可以采用雙向的確認機制,由記賬節點統一上一輪的合法區塊記賬節點的認可數,根據多者勝出的原則,將兩個區塊合并到統一的區塊鏈中[16],如圖7所示。

圖7 防止網絡故障區塊鏈硬分叉Fig.7 Preventing blockchain hard fork in network failure

在正常網絡下,選取的是H節點作為區塊記賬節點,另外4個節點為普通節點,這里統稱為普通記賬主節點A。在故障網絡下,D節點為區塊記賬節點,C為普通記賬主節點。從圖7可以看出:正常網絡中的節點H,獲得區塊生成的贊同票數為4;而節點D在故障網絡中,它取得的票數是2。因此,節點D生成的區塊為不合法的區塊,需要將此區塊拋棄,并將區塊內的內容同步到主區塊鏈當中。

5.2 防止記賬權壟斷

當節點的信用值達到一定的閾值時,將會更容易獲得記賬權,不排除節點販賣記賬權等惡意行為。本文設定初始7個節點,對相同節點分別使用與未使用輪盤賭策略時獲得的記賬權概率進行比較分析,如圖8所示。

圖8 獲得記賬權的概率比較Fig.8 Comparison of acquisition probability of bookkeeping right

從圖8可以看出:無論是否使用輪盤賭策略,節點獲得記賬權的概率都在穩定增加,我們可以認為此節點為信用較好的節點。但是,隨著記賬權選舉次數的增加,在第500次選舉時,未使用輪盤賭算法的節點獲得記賬權的概率接近0.9,其極有可能會壟斷記賬權的獲得;而此時使用輪盤賭策略的節點獲得記賬權的概率未到0.25。而且本文僅設定7個節點參與選舉,單個節點獲得概率會相對偏高,但使用輪盤賭算法之后,節點之間的競爭更加公平,可以很好地防止系統記賬權被壟斷,也能更好地防止惡意節點通過對節點攻擊獲得記賬權的行為。因此,本文設計的方案是安全可靠的。

6 實驗結果分析

6.1 優化后的信用評分

通過調節節點信用和環境信用的權重系數,對節點的評估信用做了信用好、信用一般和信用差的3組實驗,信用綜合評分直方圖如圖9所示。對于信用好的充電站,節點信用比重較大,環境信用比重較??;對于信用一般的充電站,節點信用和環境信用占有相同的比重;對于信用差的充電站,節點信用比重較小,環境信用比重較大。

從圖9(a)可以看出:信用好的充電站獲得的信用評分基本都穩定在80分左右,由此可以推斷出在比較理想的時候,信用好的充電站信用值上升得很快。從圖9(b)可以看出,信用一般的充電站獲得的評分主要集中在60~70分。因為充電站信用一般,獲得的評分較低,所以信用一般的充電站的信用值上升較為緩慢。從圖9(c)可以看出,信用差的充電站獲得的評分主要集中在25分左右,可見其信用值評分增長非常緩慢。因此,本文的信用機制可以體現充電站的總體信用。

6.2 優化信用與傳統信用比較

傳統信用目前使用較為廣泛,其僅對贊成或者歸一后的信用分進行直接的疊加,但不適用于本文對記賬節點的選舉。本文對這2種信用方案進行了200次信用分累計的比較,如圖10所示。

由圖10可以看出:傳統信用的曲線接近直線,信用分的累積速度較快且沒有極限,極易出現信用分過高壟斷記賬的風險;由于信用分一直增高,會造成后進入系統的用戶喪失競爭力。而優化信用機制在用戶剛進入系統時,為了判定用戶是否積極工作,信用分增長相對緩慢;而當信用分到達20時,為了使積極工作的用戶更具備競爭力,則進入快速增長時期;當信用分到達80后,為了防止壟斷,則降低增長速度。相較于傳統的信用累計方式,本文設計的信用機制更適用。

(a) 信用好 (b) 信用一般 (c) 信用差圖9 信用綜合評分直方圖Fig.9 Histogram of composite credit score

圖10 信用方案比較Fig.10 Comparison of credit schemes

6.3 記賬權選舉分析

本文共識機制的記賬權選舉采用輪盤賭算法。

無論是基于上層鏈還是下層鏈,如果不是通過挖礦進行記賬權選舉,那么對系統的運算能力及其配置要求將會大大降低。

如果單純地給共識節點分配序號或者隨機選舉記賬節點,那么會對系統整體的安全性造成巨大的影響。如果只是分配編號,按照編號直接選取下一個記賬節點,那么容易造成節點作弊和其他節點賄賂的現象。如果是隨機選取記賬節點,則會容易造成大部分節點的惰性思維,使得系統缺乏競爭力。

為了消除這種影響,將記賬權的生成與信用值相結合,并且尊重能者多得的思維,采用輪盤賭算法對記賬權進行選舉。本文進行了初始信用值為-5,0,10的3組實驗,每組實驗隨機生成了7個節點,分別進行500次的記賬權選舉,對相同初始信用值不同信用情況下的記賬權獲得次數進行比較,如圖11所示。由圖11可以看出:信用值較低的節點依舊有被選為記賬節點的機會,但是獲得記賬權的機會卻遠低于信用較高的節點。

(a)信用初始值(-5) (b)信用初始值(0) (c)信用初始值(10)圖11 記賬權選舉比較Fig.11 Comparison of bookkeeping right elections

6.4 共識延遲分析

由于一些客觀的因素,在一條區塊鏈中產生一些時延必不可免。從區塊生成到區塊上鏈之間的時間都屬于區塊的時延。對于一些雙層鏈來說,特別是上層鏈,由于需要對下層鏈中的數據進行提取,使得區塊的時延在上層鏈中顯得十分重要。

本文提出的雙層鏈中的下層鏈按照地域分布,下層鏈的數量不止一條。上層鏈的節點如果同時接收多個下層鏈的信息,會增加上層鏈的時延,其包括區塊信息提取、整合和哈希計算等時間,稱為共識時延。

圖12 區塊共識時延Fig.12 Block consensus delay

圖12是上層鏈主節點對下層鏈不同大小數據產生的共識時延。區塊共識時延以產生一個128 KiB大小區塊為一個單位時間,對其他大小區塊生成的延時分別取50次總時間的平均值。由圖12可以看出:時延長短隨著下層鏈區塊的大小呈正相關變化,區塊數據越多,時延越明顯;當不同下層鏈同時上傳上層鏈時,時延變化顯著;相對下層鏈中每個區塊的大小而言,下層鏈同時上傳區塊的數量越多則延時更加明顯。為了降低上層鏈同步消息的時延,應當適當地擴大下層鏈區域,以圖12的分析來看,下層鏈區域在4~7個時最為合適。

7 結論

1)本文提出了一種基于區塊鏈的電動汽車充電站信任機制,以用戶的主觀評分和充電站的客觀評分為依據,組建了一個能夠反映電動汽車充電站服務質量、用戶滿意度等行為的信任指標;采用了雙層鏈的結構,在保留信任度憑證的同時,降低了大部分CSS的負荷,加快系統的檢索與響應速度;將輪盤賭算法與共識機制中記賬權的選舉相結合,不僅能夠增加選舉的隨機度,還能有“多勞多得”的效果;不僅可以激勵各個主節點有規律的工作,也能減小因為信用值低而喪失對獲得記賬權節點的不作為。

2)本文的方法不僅能夠解決中心化存在的中心攻破等問題,還為架構節約了中心結構所需要的成本;另外取消了區塊共識中的挖礦機制,使用類輪盤賭的方式對記賬節點進行選舉,使得各個節點相對公平。

猜你喜歡
輪盤下層充電站
基于紅外線熱成像儀設備在蓄電池充電站中的應用
“首充”
地產人的知識充電站,房導云學堂5月開講!
渦輪盤中隱藏多年的瑕疵導致波音767燒毀
折疊積雪
基于Workbench的多級輪盤組件優化設計
命運的輪盤誰玩兒誰尷尬
積雪
有借有還
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合