劉 云, 宋 凱, 陳路遙, 朱鵬俊
(昆明理工大學信息工程與自動化學院, 昆明 650500)
利用區塊鏈技術去中心化、不可篡改等特點將區塊鏈技術應用到物聯網系統,降低了物聯網信息交互的安全風險,在一定程度上提升了數據安全性及可靠性等性能,使其更加符合各類場景的應用要求[1,2].現有區塊鏈通量有限[3],平均每秒只能處理幾十筆交易,遠遠低于物聯網應用每秒鐘處理成百甚至上千筆的交易量,即區塊鏈較低的交易吞吐量在很大程度上難以滿足物聯網場景下的業務需求[4].影響區塊鏈系統性能的因素主要是負載情況、計算資源和通信帶寬[5].而吞吐量與負載情況中每個區塊中的交易數及產生兩個區塊的時間間隔有關[6].
為了提高基于區塊鏈的物聯網系統的交易吞吐量, Qiu等[7]使用DDRL算法研究了一種基于許可的基于區塊鏈的物聯網架構,固定區塊生產者的塊大小,將共識協議選擇和網絡帶寬分配聯合優化,提高了區塊鏈系統的吞吐量并滿足不同用戶的需求.Guo等[8]采用DRL算法固定了區塊間隔,將每個生產者的塊大小和生產塊數化為聯合優化問題,提高了覆蓋的區塊鏈系統的吞吐量和底層移動邊緣計算系統中用戶的服務質量.
增加區塊大小或減小區塊間隔對區塊鏈吞吐量性能有一定的提升,但它們之間并不是簡單的線性關系[9].為了滿足基于區塊鏈的物聯網系統的高交易吞吐量的需求,本文在計算資源和通信帶寬一定的情況下,提出最小損失函數算法去動態聯合調整區塊大小和區塊間隔.首先初始化狀態空間和行為空間以及其他系統參數;其次根據狀態和動作輸入對構建狀態空間和行為空間,在系統延遲性約束條件下,計算出符合約束條件的狀態空間和行為空間輸入對的行為價值函數作為預測值;最后逐一計算符合約束條件輸入對的行為價值函數,利用損失函數對比行為價值函數的預測值和真實值,執行吞吐量最大值去調整塊大小和塊間隔.仿真結果表明,最小損失算法動態調整區塊大小和區塊間隔,在基于區塊鏈的物聯網系統達到穩定后顯著提高了區塊鏈物聯網系統的鏈上事務吞吐量.
在物聯網中,智能設備(如工業設備和監視設備等)能夠以安全的方式存儲和處理那些使用傳感器收集環境數據或使用嵌入式攝像頭捕獲圖像或視頻.這些事務被轉發給控制層,經控制器、服務器等設備處理后與區塊生產者完成去中心化的共享交易.當區塊生產者之間達成共識后生成區塊,此時區塊鏈系統根據物聯網節點參數動態調整進行資源優化,隨后將調整方案回復到控制層,最終實現物聯網層的優化[10].考慮一個基于區塊鏈的物聯網系統,它由兩部分組成(如圖1):生成數據后存儲、處理和共享事務的物聯網;以可靠和安全的方式處理事務的區塊鏈系統.

圖1 支持區塊鏈的物聯網系統模型
為了處理物聯網生成的交易,區塊生產者需要完成以下步驟[10]:(1) 生成區塊:收集,驗證交易并將其打包為一個區塊;(2) 將區塊追加到區塊鏈:將生成的區塊廣播給其他塊生成者,并在對新塊達成一致意見后,將該塊添加到它們的本地區塊鏈中.
在圖2所示的區塊模型圖中,區塊[11]由區塊頭和區塊主體兩部分構成.區塊頭的大小為80字節,包括4字節的版本號、32字節的上一區塊哈希值、32字節的Merkle根節點、4字節的時間戳、4字節的難度值和4字節的隨機數.區塊主體利用默克爾樹結構來記錄10 min內的交易信息.
區塊鏈中每筆交易都要以字節的形式存儲在每一個新產生的區塊中,但是每個區塊容納的交易數量是有限的,因為每個區塊都有自己的容量.區塊容量也稱區塊大小,是指限定在每個區塊存儲的字節數,代表了這個區塊能容納多少交易的能力.區塊間隔指的是上一區塊生成后到下一區塊生成的時間間隔,與區塊生成速率成反比關系.增大區塊容量可以容納更多的交易,減小區塊生成間隔意味著交易以更快的速度得到確認,兩種方式都可提高區塊鏈吞吐量性能,然而區塊鏈吞吐量性能與其影響因素之間并不是簡單的線性關系.區塊增大會導致出塊時間過長;區塊間隔變小,系統來不及處理過多交易,從而導致區塊變小.因此,我們需要動態考慮區塊大小和區塊間隔與當前區塊生產者平均交易量的關系.

圖2 區塊模型圖Fig.2 Block model

為了提高基于區塊鏈的物聯網系統的吞吐量,提出最小損失函數算法對如圖1所示的優化部分(物聯網和區塊鏈的整合過程)進行優化,最小損失算法流程如圖3所示.

圖3 最小損失算法流程圖Fig.3 Flow chart of optimization model
最小損失函算法[12]包含一個初始化階段,該階段用狀態空間和行動空間近似得到行為價值函數的估計值;以及一個學習階段,用于選擇動作,系統控制和動態網絡更新[12].下述優化算法的思路和詳細步驟均按照圖3所示的流程進行.
初始化階段,首先進行系統參數的初始化,接著在參數定義范圍內逐一組合輸入狀態空間和行動空間參數,在滿足約束條件的情況下計算集合的獎勵函數和行為價值函數近似為估計值.
3.1.1 約束條件 在區塊鏈物聯網系統參數滿足系統延遲的條件下進行吞吐量的優化,如下定義約束條件.
利用最終完成時間(TTF)[13]來評估區塊鏈系統的延遲,該時間定義為交易確認完成并變得不可逆的時間.交易處理包括兩個階段,即生成區塊和在驗證者之間就生成的塊達成共識.
TF,δ=TI+TC,δ
(1)
其中,TI是區塊間隔時間;TC,δ是共識等待時間,取決于所采用的共識算法PBFT共識協議.整個驗證過程分為兩部分:消息傳遞和消息驗證(驗證簽名及驗物理地址),共識等待時間又可細化為
TC,δ=TD,δ+TV,δ
(2)
其中,TD,δ為消息傳遞時間;TV,δ為消息驗證時間.為了滿足物聯網的延遲要求,假設應該在一系列連續的塊間隔w(w>1)內發出并驗證一個塊.TTF應滿足約束如下式.
TF,δ≤w×TI
(3)
3.1.2 狀態空間和行動空間 決策紀元t(t=1,2,...)的狀態空間[13]定義為事務大小(交易規模)χ,風險系數γ,物聯網節點的地理位置x,物聯網節點的計算能力c={ck},以及每對物聯網節點之間鏈路的數據傳輸速率為R={Ri,j}的并集,表示為
S(t)={χ,γ,x,c,R}(t)
(4)
其中,決策紀元t的動作空間[12]定義為區塊生產者a,區塊大小SB,區塊間隔TI的并集,表示為
A(t)={a,SB,TI}(t)
(5)

根據狀態空間和行動空間輸入對進行系統延遲約束條件的判斷
C1:TF,d≤w×TI
(6)
為在調整負載情況下獲得區塊鏈物聯網系統的最大吞吐量,將當前獎勵[14](即時獎勵)定義為
(7)
其中,R(t)為獎勵函數,代表了優化目標.如果約束條件不能得到滿足,意味著區塊鏈物聯網系統在延遲方面的性能較差,為了避免無效情況發生,此時設置獎勵為0.
接著在系統延遲滿足約束的條件下去計算狀態紀元的行為-價值函數值Q(S,A)如下式.
A(t))|S(0)=S,A(0)=A]
(8)
其中,E[*]表示數學期望;μ為折現因子[15],滿足μ∈(0,1],反映了當前獎勵和未來獎勵之間的權衡,通常取0.8.
學習階段的目標是發現最優策略,即根據當前需要處理平均事務量來確定最佳動作,調整區塊大小和區塊間隔.首先逐一取出符合約束條件的狀態空間和行動空間參數對,計算當前獎勵函數和行為價值函數,接著利用最小損失函數對比當前實際值和估計值,最終從這些獎勵中選擇收益最大和損失最小的行動作為實際行動.
3.2.1 算法實現 對同一個狀態紀元的不同參數,進行式(7)獎勵函數及式(8)行為價值函數計算后得到真實值,并將這些值存在經驗記憶庫D中,利用損失函數對比行為價值函數的真實值和估計值.損失函數[16]是一個非負實數函數,用來量化模型預測和真實標簽之間的差異.最小損失函數算法將反饋的獎勵信息轉化為對應狀態的標記,可實現樣本形式的統一,在計算方式相同和樣本形式統一的前提下使用參數估計方式直接對模型參數進行近似估計,即使用最小二乘法構建損失函數,讓預測值與真實值總的擬合誤差(即總殘差)達到最小.
L(θ)=[y(i)-Q(S(i),A(i+1);θ)]2
(9)
其中,y(i)為行為價值函數的狀態紀元的真實值,計算公式為式(10);Q(S(i),A(i+1);θ)為行為價值函數的狀態紀元的估計值;θ為真實值與估計值之間的差距,該函數的目的就是求解最優的θ,讓函數值最小.
(10)
算法1:最小損失函數算法
輸入:決策紀元t的狀態空間S及行動空間A,構成輸入對(S,A).
輸出:行為狀態值函數Q(S,A),以及損失函數L(θ).
Begin
(1) 初始化階段.加載歷史狀態轉換配置文件進行初始化,根據歷史經驗記憶庫D中進行主網絡行為價值函數Q(S,A)的估計.
(2) 學習階段.對每一個決策紀元t執行以下過程:
1) 輸入狀態空間和行為空間,使用輸入對(S,A)中對應的值去檢驗該輸入對是否滿足物聯網區塊鏈系統延遲性的約束;
3) 觀察獎勵R(t)和下一個狀態S(t+1),將經驗值(S(t),A(t),R(t),S(t+1))存儲到經驗記憶庫D中;

5) 訓練估計網絡中的參數以最小化損失函數L(θ)=[y(i)-Q(S(i),A(i+1);θ)]2,將目標網絡中參數同步為估計網絡參數;

End
3.2.2 性能分析 事務吞吐量反映區塊鏈物聯網系統處理交易的能力.最小損失函數算法在計算資源和通信帶寬一定的情況下,動態調整區塊大小和區塊間隔來提高基于區塊鏈的物聯網系統的事務吞吐量.考慮到上述因素,事務吞吐量的計算公式為
(11)
其中,SB表示塊大小;TI表示區塊間隔;χ表示事務的平均大小,即交易的平均規模.仿真過程將依次討論這3個變量獨自改變引起的吞吐量變化情況,以及整個吞吐量在4種不同方案的變化情況.
在仿真實驗中,考慮兩個物聯網節點密度不同的基于區塊鏈的物聯網系統場景,場景一設有100個物聯網節點和21個區塊生產者,分布在1 km×1 km的區域內;場景二設有1000個物聯網節點和21個區塊生產者,分布在1 km×1 km的區域內.擬議的最小損失函數算法框架的編程實現是使用Window 10系統中Python 3.8下的PyTorch 0.4.0.在進行共識過程的時候,選擇區塊鏈系統研究中常用的PBFT共識協議.表1總結了仿真中使用的參數設置.

表1 仿真參數設置
為了驗證擬議動態方案的可行性和吞吐量優化情況,在仿真部分考慮了以下3種基線對比方案.(1) 靜態方案:固定塊大小為4 MB,塊間隔為13 s;(2) DDRL算法:固定塊大小為4 MB,塊生產者以不同間隔生成區塊;(3) DRL算法:固定塊間隔為13 s,塊生產者以不同大小的區塊來處理事務.
根據式(11)可以看出,事務吞吐量與塊大小、塊間隔以及事務的平均規模有關系,在圖4~圖6中分別探索了這3個參數對基于區塊鏈的物聯網系統的吞吐量的影響,同時討論了4種方案的吞吐量變化趨勢.圖7討論了在情節變化的情況下4種方案的吞吐量對比.

(a)

(b)
TTF閾值對基于區塊鏈的物聯網系統的吞吐量的影響如圖4所示.隨著TTF閾值的增加,4種方案都獲得了更高的交易吞吐量,因為驗證器可以在一個塊中以更寬松的延遲約束來處理更多事務.同時在場景一低密度物聯網節點的情況下,事務吞吐量比場景二高密度物聯網節點要高,因為在延遲相同的時候,密度低的場景可以讓區塊有更好的選擇和更多時間處理更多的事務.但不論是哪個場景,提出的算法可以比基線一致的實現更高的吞吐量.
圖5檢查了具有不同交易規模的交易吞吐量,這在考慮不同類型的交易時是有意義的.通過仿真圖可以看出4種方案的吞吐量都隨著交易規模的增加而降低,因為對于大筆交易,一個區塊可以容納較少數量的交易.同時在兩個物聯網節點密度不同的場景下,提出的算法均可在平均交易大小變化的情況下獲得更高的吞吐量.

(a)

(b)
圖6討論了塊大小限制對吞吐量的影響,隨著區塊大小限制的增加,基于區塊鏈的物聯網系統可以處理更多交易,在兩個物聯網節點密度不同的場景下,提出的算法均可獲得更高的交易吞吐量,這適用于除固定區塊大小方案之外的所有方案.而TTF約束條件的存在限制了一個塊中的最大事務數,且區塊增大會導致出塊時間變長而影響區塊間隔,因此吞吐量不會無限增加.
圖7討論4種方案在情節數增加的情況下吞吐量的變化,可以看出,在學習過程開始時,事務吞吐量較低,隨著情節數量的增加,吞吐量逐步提高并在大約4000情節后達到穩定狀態,這驗證了我們提出的方案的收斂性能.此外還可以發現,靜態方案由于缺乏彈性而具有最低的吞吐量,DDRL算法和DRL算法的由于適當調整區塊參數而具有較高的吞吐量,在兩個物聯網節點密度不同的場景下,所提出的算法可以獲得更高的吞吐量.

(a)

(b)

(a)

(b)
區塊鏈去中心化、不可篡改等特點在一定程度上降低了區塊鏈物聯網系統進行信息交互的安全風險.但區塊鏈技術的通行量限制特點使其在很大程度上難以滿足物聯網場景下的高吞吐量業務需求.本文提出一種最小損失函數算法,動態調整區塊大小和區塊間隔,使得在保證基于區塊鏈的物聯網系統延遲性的同時提高鏈上事務吞吐量.仿真結果表明,在不同的仿真場景下,本文提出的算法能獲得比基線更高的吞吐量.下一步我們將考慮更多的共識協議,根據用戶的不同需求實現自適應的調整,并將類似方案應用于特定的邊緣計算案例.