王煜翔
(四川大學(xué)計算機學(xué)院,成都610065)
IIoT的作為一種前沿技術(shù),它的出現(xiàn)使得更多的工業(yè)實體能夠?qū)崿F(xiàn)互連,這引起了很多行業(yè)的廣泛的關(guān)注,如工業(yè)制造、零售、物流、環(huán)境治理、能源、醫(yī)療等。不同的行業(yè)中,IIoT通過連接不同類型的實體,能夠便利生活,提高生產(chǎn)效率。IIoT對所連接的實體,根據(jù)不同的需求進行實時的數(shù)據(jù)采集,這些數(shù)據(jù)可以用來對實體的性能、屬性、狀態(tài)等進行描述,進而實現(xiàn)對實體不同的操作包括控制、監(jiān)控等。在IIoT中,不間斷的制造生產(chǎn)勢必會產(chǎn)生大量的數(shù)據(jù),這些數(shù)據(jù)是由IIoT所連接的成千上萬的實體的傳感器所采集獲取,所得到的數(shù)據(jù)是一種寶貴的資源,需要在傳輸、共享的過程中保證其安全性,因此保證IIoT中數(shù)據(jù)隱私及安全性顯得愈發(fā)的重要。
區(qū)塊鏈被廣泛地認為是對上述問題的一個合理的解決方案。區(qū)塊鏈起初是被設(shè)計應(yīng)用于比特幣系統(tǒng),提供安全可靠的交易。但區(qū)塊鏈在高吞吐量和擴展性方面仍有著極大的挑戰(zhàn),阻礙其發(fā)展成為一個適用于不同應(yīng)用場景的通用平臺[1]。如果將基于區(qū)塊鏈的IIoT運用于不同場景,對TPS(Transaction Per Second)有著較高的要求。目前,在如何解決區(qū)塊鏈擴展性問題上有不同的方案:鏈下支付網(wǎng)絡(luò)、BitCoin-NG、分片機制等。對于鏈下支付網(wǎng)絡(luò),典型的方案是閃電網(wǎng)絡(luò),它通過減少鏈上的冗余來解決擴展性的問題。比特幣現(xiàn)金通過調(diào)節(jié)區(qū)塊大小與區(qū)塊的生成速度來處理擴展性問題;Bitcoin-NG[2]將區(qū)塊劃分為用于leader選舉的KeyBlock和記錄交易的MicroBlock,使挖礦及區(qū)塊確認時間縮短;分片技術(shù)只讓網(wǎng)絡(luò)中的一部分節(jié)點處理某筆交易,網(wǎng)絡(luò)被劃分成很多片,同一時間每一分片都可以處理不同的交易,使得擴展性提高。但區(qū)塊鏈的擴展性、中心化程度、安全性和延遲之間存在著相互制約。因此在IIoT中運用區(qū)塊鏈作為數(shù)據(jù)存儲的手段時,不能一味的提高擴展性,需要考慮這四者之間的平衡。
為了解決IIoT利用區(qū)塊鏈作為數(shù)據(jù)存儲時所存在的擴展性不足的問題,利用強化學(xué)習(xí)中的DDPG算法,結(jié)合DRL-Blockchain模型[3],在提高擴展性同時保證區(qū)塊鏈仍有較好的去中心化程度,安全性與較短的延遲,使其適應(yīng)不同的應(yīng)用場景。
IIoT的快速發(fā)展為各個行業(yè)提供了大量的機會,如工業(yè)制造、農(nóng)業(yè)、環(huán)境監(jiān)測、安全監(jiān)管等[4]。使用區(qū)塊鏈作為實現(xiàn)工業(yè)物聯(lián)網(wǎng)中數(shù)據(jù)安全的解決方案是由于區(qū)塊鏈分布式連接的特點可以形成一個龐大的P2P傳輸網(wǎng)絡(luò),通過限制資源利用與點對點的連接,可以對IIoT組網(wǎng)架構(gòu)進行優(yōu)化,并且去中心化的存儲能夠保證信息安全和用戶隱私。雖然區(qū)塊鏈技術(shù)有著顯著的好處,但是傳統(tǒng)的區(qū)塊鏈技術(shù)難以提供較好的擴展性來滿足IIoT的高事務(wù)吞吐量的需求。例如:比特幣平均每秒只能確認3-4筆交易,以太坊雖然將吞吐量提高到了平均每秒14筆交易,但這仍不能夠滿足IIoT對交易處理的需求。
對于任何一個分布式系統(tǒng)應(yīng)當滿足CAP定理(一致性、可用性、分區(qū)容錯)。在區(qū)塊鏈系統(tǒng)中,去中心化程度、安全性、延遲和擴展性之間也存在著相互制約。
(1)擴展性
這是對區(qū)塊鏈處理交易的一個量化指標,區(qū)塊鏈的擴展性通過最終存入?yún)^(qū)塊鏈的交易吞吐量來進行衡量。當交易吞吐量較小時,該區(qū)塊鏈系統(tǒng)只能適用于某些對吞吐量要求不高的應(yīng)用場景,因此其擴展性較差。當交易吞吐量較大時,能夠適用更多的應(yīng)用場景,其擴展性較好。交易吞吐量直接與區(qū)塊大小和區(qū)塊達到最終一致性時間相關(guān)。因此,最終交易吞吐量可以表示為:
其中S B表示每個區(qū)塊設(shè)置的大?。▎挝籑B),T F表示區(qū)塊從產(chǎn)生到最終獲得共識的時間(單位s)。χ表示每個交易的平均大?。▎挝籅)。
(2)綜合去中心化程度
在區(qū)塊鏈中,控制資源的分配能夠?qū)崿F(xiàn)不同的目標,例如,抵制審查、免受某些攻擊和消除單點故障[5]。泰爾指數(shù)是經(jīng)濟學(xué)中的指數(shù),常用來表示財富或收入的不平均程度。在一些非金融領(lǐng)域仍借用泰爾系數(shù)來表示該領(lǐng)域的某種不均衡程度,如資源配置的公平程度[6]、資源差異程度[7]等。泰爾指數(shù)將信息理論中的熵指數(shù)概念用于收入差距的測量,作為收入不均等程度的測量指標。該指數(shù)不僅能夠測量整體的不均等程度,還能夠較為方便地測量群組之間的不均等程度。在區(qū)塊鏈系統(tǒng)中值得關(guān)注的是節(jié)點權(quán)益分配的去中心化程度高低,對于一些共識算法,當其中涉及到節(jié)點的權(quán)益分配時,需要考慮不能使得節(jié)點之間權(quán)益差距過大,導(dǎo)致整個系統(tǒng)去中心化程度不夠,偏向于某些擁有權(quán)益過大的節(jié)點,使得系統(tǒng)的安全性能降低。為了更好地描述去區(qū)塊鏈系統(tǒng)的中心化程度,使用歸一化泰爾指數(shù)[8],將算力、權(quán)益、地理位置的去中心化程度分別表示為:
其中Tl norm_C、Tl norm_Γ、Tl norm_λ分別表示計算資源、權(quán)益、地理位置的去中心化程度,其范圍均為[0,1]。Ψp表示區(qū)塊打包節(jié)點集合,C i、Γi分別表示第i個區(qū)塊打包節(jié)點的計算資源、權(quán)益大小。K是該區(qū)塊鏈系統(tǒng)總共有K個區(qū)塊生成節(jié)點。λi表示將區(qū)域A∈R2劃分為n個大小為Aˉ的區(qū)域,每個區(qū)域中對應(yīng)的節(jié)點密度。綜合去中心化程度表示整個系統(tǒng)的去中心化程度,由算力、權(quán)益與地理去中心化程度加權(quán)表示,其范圍為[0,1],當它越接近0,去中心化程度越高,當它越接近1,表示算力/權(quán)益越集中在某些節(jié)點或是在某個小區(qū)域范圍內(nèi)區(qū)塊打包節(jié)點越集中,去中心化程度越低。若區(qū)塊鏈系統(tǒng)選擇與權(quán)益相關(guān)的共識算法如DPoS,其中α=0;若選擇算力相關(guān)的共識算法如PoW,其中β=0。
(3)安全性
安全性是區(qū)塊鏈賬本所包含數(shù)據(jù)不變性的保證,這可以從它的健壯性和對如51%算力、Sybil和DDoS[9]等攻擊的抵抗上得到反映。
理論上,需要超過51%的算力/權(quán)益才能生成更長的鏈使其可以追溯到創(chuàng)世塊。在PoW、PoS、DPoS共識算法中的安全性表示為:
其中f表示系統(tǒng)中可以容忍的惡意節(jié)點數(shù),hi表示每個節(jié)點的算力/權(quán)益大小,假定節(jié)點的算力/權(quán)益大小分布為高分分布,hˉ為在該分布下的均值。而在聯(lián)盟鏈中,假定在聯(lián)盟鏈中所有的節(jié)點的權(quán)益是相等的,對于聯(lián)盟鏈中常使用共識算法X-BFT(如PBFT、dBFT),安全性則表示為:
對于如Quorum這類的共識算法,該算法中不能接受惡意節(jié)點的存在,安全性表示為:
(4)延遲
當一個交易被驗證/確認并添加到區(qū)塊鏈的一個塊中,從而成為不可逆的交易數(shù)據(jù)所花費的時間[10]。它可以通過數(shù)據(jù)達到最終一致性的時間來度量。要使區(qū)塊達到最終一致性,需要經(jīng)歷區(qū)塊生成和區(qū)塊共識兩個階段。
其中T I是區(qū)塊產(chǎn)生的時間間隔,T c是共識的延遲。
DDPG-BlockChain-IIoT(DDPG&BlockChain-enabled IIoT),如圖所示,基于DDPG區(qū)塊鏈工業(yè)物聯(lián)網(wǎng)系統(tǒng)分為三個部分:①IIoT網(wǎng)絡(luò),②DDPG配置,③區(qū)塊鏈系統(tǒng)。
圖1 基于DDPG區(qū)塊鏈的工業(yè)物聯(lián)網(wǎng)框架
在工業(yè)物聯(lián)網(wǎng)網(wǎng)絡(luò)中,智能設(shè)備(如工業(yè)設(shè)備、車輛、無人機、監(jiān)控等)能夠使用傳感器收集環(huán)境數(shù)據(jù),或使用嵌入式攝像頭捕獲圖像或視頻,這些圖像或視頻以安全的方式捕獲和存儲/處理。與此同時,收集到的數(shù)據(jù)可能需要在不同的產(chǎn)業(yè)部門之間共享,以便進行有效的決策。因此,需要考慮智能設(shè)備不斷產(chǎn)生的兩種交易(數(shù)據(jù)存儲/處理和數(shù)據(jù)共享)。這些交易通過區(qū)塊鏈系統(tǒng)進行存儲/獲取數(shù)據(jù)。在整個基于區(qū)塊鏈的IIoT系統(tǒng)中,實際上將物理節(jié)點劃分為兩個角色,一部分節(jié)點僅負責數(shù)據(jù)的收集,另一部分除了能夠進行數(shù)據(jù)收集還能夠?qū)崿F(xiàn)區(qū)塊的打包,稱其為區(qū)塊打包節(jié)點。
為了處理從IIoT網(wǎng)絡(luò)生成的交易,區(qū)塊打包節(jié)點需要完成生成區(qū)塊(打包區(qū)塊)和區(qū)塊共識兩個步驟。生成區(qū)塊的過程與其他常見的區(qū)塊鏈系統(tǒng)一樣,主要的任務(wù)是收集、驗證并將交易打包到一個區(qū)塊中。區(qū)塊共識是將打包的塊廣播給其他的塊打包節(jié)點,待新的塊達成共識后,將該塊添加到它們本地的區(qū)塊鏈中。因此,在IIoT的區(qū)塊鏈系統(tǒng)中有兩個關(guān)鍵的要素,一是區(qū)塊打包節(jié)點,二是共識過程中所使用的共識算法。選擇哪些節(jié)點作為區(qū)塊打包節(jié)點,選擇何種共識算法將直接影響區(qū)塊鏈系統(tǒng)的性能。假定整個系統(tǒng)的區(qū)域范圍為R2,在R2內(nèi)按照非齊次泊松點過程從所有節(jié)點中選取區(qū)塊打包節(jié)點,同時將其地理信息以二維坐標{xi,y i}表示。同時使用δ={0,1,2,3,4}分別表示PoW、PoS、DPoS、PBFT、Quorum算法。
DDPG算法是一種無環(huán)境模型,產(chǎn)生行為策略與評估策略不一樣的強化學(xué)習(xí)算法。DDPG利用深度神經(jīng)網(wǎng)絡(luò)作為函數(shù)近似,能夠解決在連續(xù)動作空間及大動作空間的中進行動作選擇的問題[11]。要使基于區(qū)塊鏈的工業(yè)物聯(lián)網(wǎng)能夠成為一個適應(yīng)多個應(yīng)用場景的通用平臺,系統(tǒng)需要對一些相關(guān)的參數(shù)進行自動的選擇與配置,包括共識算法、打包的區(qū)塊大小、打包區(qū)塊的時間間隔。共識算法的選擇是通過序列標識來表示選擇了相應(yīng)的共識算法。區(qū)塊大小和區(qū)塊時間間隔兩個參數(shù)分別用S B與T I表示,可以認為它們在動作空間中是連續(xù)的。DDPG配置是通過觀察狀態(tài)空間,經(jīng)過對DDPG損失函數(shù)進行優(yōu)化處理,從動作空間獲取相應(yīng)的動作。
(1)狀態(tài)空間:用以描述當前系統(tǒng)的狀態(tài),作為DDPG算法的輸入。選擇平均交易大小?,綜合去中心化程度Tl C,Γ,λ,節(jié)點間的傳輸速率R={Ri,j}三個參數(shù)來描述區(qū)塊鏈系統(tǒng)的狀態(tài),記為:
(2)動作空間:用來描述根據(jù)某一狀態(tài)所選取的動作,通過區(qū)塊打包節(jié)點編號標識,共識算法編號標識,區(qū)塊大小,區(qū)塊打包時間間隔四個參數(shù)描述,記為:
其中區(qū)塊打包節(jié)點編號a={a n},通過對所有的節(jié)點進行編號表示,an∈{0,1}。當a n=1表示該節(jié)點是從全節(jié)點中選取作為區(qū)塊打包節(jié)點,當a n=0該節(jié)點僅為普通節(jié)點。表示不同的共識算法,S B表示區(qū)塊大小,T I表示時間間隔。
(3)獎勵函數(shù):在RL中,獎勵被認為是用以衡量RL中智能體行為的輸出[12]。在本系統(tǒng)中對滿足限制條件與不滿足限制條件情況下,定義了不同的獎勵函數(shù)。
限制條件:
其中σ<1,取0.5~0.7。ω>1,取整數(shù),表示某區(qū)塊達到最終一致性需要在ω個T I時間范圍內(nèi)完成,取6~8。Fδ表示在不同的共識算法中的安全性條件。
(4)損失函數(shù):通過在經(jīng)驗池中隨機采樣N batch個數(shù)據(jù),通過梯度下降以獲取目標網(wǎng)絡(luò)參數(shù)θQ、θμ。
DDPG算法流程:
基于DDPG算法的區(qū)塊鏈工業(yè)物聯(lián)網(wǎng)流程
1. Actor(μ(s|θμ)),Critic(Q(s,a|θQ)),目標Actor(μ(s|θμ")),目標Critic(Q(s,a|θQ"))構(gòu)建
(1)有歷史的狀態(tài)-動作數(shù)據(jù):
加載存放在經(jīng)驗池B中的數(shù)據(jù)訓(xùn)練網(wǎng)絡(luò),獲取初始的網(wǎng)絡(luò)參數(shù)θμ、θQ、θμ"、θQ";
(2)暫無歷史的狀態(tài)-動作數(shù)據(jù):
隨機初始化actor網(wǎng)絡(luò)μ(s|θμ),critic網(wǎng)絡(luò)Q(s,a|θQ),權(quán)重分別為θμ,θQ;
初始化目標網(wǎng)絡(luò)Q"和μ",權(quán)重分別為:
初始化經(jīng)驗回放池B;
2. 初始化隨機過程N用以動作探索;
3. 獲取初始狀態(tài)s1;
4. 對于每個決策輪次t:
6. 執(zhí)行動作a t,觀察收益r t和下一個狀態(tài)st+1;
7. 將元組(s t,a t,r t,s t+1)存放至經(jīng)驗池B中;
8. 從經(jīng)驗池B中隨機采樣出個數(shù)為N batch的小批量經(jīng)驗元組(si,ai,r i,s i+1);
9. 令y i=ri+γQ"(si+1,μ"(si+1|θμ")|θQ");
12. 更新目標網(wǎng)絡(luò):
13.結(jié)束。
本文提出利用DDPG算法解決區(qū)塊鏈應(yīng)用于工業(yè)物聯(lián)網(wǎng)中擴展性不足的問題,DDPG算法相較于DQN算法,能夠更好地運用于連續(xù)的動作空間。根據(jù)本文所提出的量化指標,通過DDPG算法對交易吞吐量進行優(yōu)化,在保證滿足安全性、去中心化程度及延遲的條件下,使擴展性增強,讓基于DDPG和區(qū)塊鏈架構(gòu)的工業(yè)物聯(lián)網(wǎng)能夠更好地適用于不同的應(yīng)用場景。未來的工作是:①對算法流程優(yōu)化,②對獎勵函數(shù)優(yōu)化[13],③將更多屬于不同類別的共識算法融入到此框架中。