吳宏杰
(甘肅宏天亞達電子技術(shù)有限公司,甘肅蘭州)
將區(qū)塊鏈技術(shù)應(yīng)用到數(shù)據(jù)共享中,可以使數(shù)據(jù)在采集、存儲、傳遞、使用等環(huán)節(jié)中得到安全保障。進入5G 時代,構(gòu)建基于區(qū)塊鏈的5G 物聯(lián)網(wǎng)并實現(xiàn)數(shù)據(jù)的實時共享,成為整合數(shù)據(jù)資源、挖掘數(shù)據(jù)價值的必要前提。但是受到區(qū)塊鏈交易機制、驗證速度等方面的限制,存在交易處理速度慢、可擴展性差等問題,難以滿足5G 物聯(lián)網(wǎng)下大數(shù)據(jù)的傳遞和處理需求。基于此,許多學(xué)者提出了改進方案,例如側(cè)鏈技術(shù)、分片技術(shù)等,從實際應(yīng)用效果來看確實能夠提升交易效率,但是安全性差。相比之下,閃電網(wǎng)絡(luò)方案通過建立鏈外交易通道,兼顧了安全與效率,成為更適合5G 物聯(lián)網(wǎng)數(shù)據(jù)共享的優(yōu)化方案。
將若干個區(qū)塊按照時間的先后順序串聯(lián)起來,得到的鏈?zhǔn)浇Y(jié)構(gòu)即為區(qū)塊鏈。在區(qū)塊鏈中,每一個獨立的區(qū)塊都是由區(qū)塊頭、區(qū)塊體2 部分組成,前者又包含了版本號、哈希值、時間戳等元素,后者則包含了詳細的交易信息。為提高數(shù)據(jù)信息的安全性與完整性,采用Merkle 證明機制[1]。區(qū)塊鏈的結(jié)構(gòu)如圖1 所示。
圖1 區(qū)塊鏈的數(shù)據(jù)結(jié)構(gòu)
現(xiàn)階段常用的區(qū)塊鏈有公有鏈、私有鏈、聯(lián)盟鏈3種基本類型。其中,聯(lián)盟鏈采用分布式一致性算法(如PBFE、Paxo 等),數(shù)據(jù)運算能力可以達到10 000 次/s,廣泛應(yīng)用于物流、金融等領(lǐng)域。本文提出的數(shù)據(jù)共享技術(shù)以聯(lián)盟鏈作為底層區(qū)塊鏈。
基于區(qū)塊鏈的5G 物聯(lián)網(wǎng)數(shù)據(jù)共享框架由2 個服務(wù)器和2 個數(shù)據(jù)節(jié)點組成,整體架構(gòu)如圖2 所示。
圖2 數(shù)據(jù)共享框架
(1) 數(shù)據(jù)提供節(jié)點包含了多種可以采集數(shù)據(jù)的物聯(lián)網(wǎng)設(shè)備,包括智能手機、智能手環(huán)以及支持智能駕駛的汽車等。該節(jié)點可以實時獲取智能設(shè)備上的數(shù)據(jù),并通過數(shù)據(jù)共享的方式將數(shù)據(jù)信息上傳至區(qū)塊鏈服務(wù)器。
(2) 任何有數(shù)據(jù)使用需求的對象,都可以部署數(shù)據(jù)需求節(jié)點,例如智能駕駛汽車、智慧建筑等。該節(jié)點獲取數(shù)據(jù)包含兩個必要的步驟,其一是發(fā)起請求,其二是支出共享幣,然后獲得相應(yīng)的數(shù)據(jù)。
(3) 區(qū)塊鏈服務(wù)器由3 個服務(wù)器組成,賬戶服務(wù)器主要用于發(fā)行共享幣,同時實時更新物聯(lián)網(wǎng)各個節(jié)點的賬戶余額信息;交易服務(wù)器主要用于接收和相應(yīng)來自各個物聯(lián)網(wǎng)節(jié)點的數(shù)據(jù)共享申請,并為數(shù)據(jù)需求節(jié)點提供數(shù)據(jù);共識服務(wù)器負責(zé)維護區(qū)塊鏈賬本的一致性。
(4) 云服務(wù)器用于存儲數(shù)據(jù),為了保證數(shù)據(jù)的安全性和隱私性,采用對稱密鑰對數(shù)據(jù)進行加密處理,將數(shù)據(jù)以密文形式保存在云端。在數(shù)據(jù)需求節(jié)點請求訪問數(shù)據(jù)時,需要驗證授權(quán)令牌,驗證不通過則禁止訪問,從而保證數(shù)據(jù)安全;驗證通過后,使用對稱密鑰進行解密,將密文變成明文,并發(fā)送給相應(yīng)的數(shù)據(jù)需求節(jié)點[2]。
基于區(qū)塊鏈的5G 物聯(lián)網(wǎng)需要經(jīng)過系統(tǒng)初始化、更新節(jié)點狀態(tài)、數(shù)據(jù)交易等步驟實現(xiàn)數(shù)據(jù)共享,具體流程如圖3 所示。
圖3 數(shù)據(jù)共享流程
所有參與數(shù)據(jù)共享的物聯(lián)網(wǎng)節(jié)點,必須提前完成注冊成為合法節(jié)點,從源頭上保證數(shù)據(jù)的來源可靠、內(nèi)容真實。注冊后可以取得證書、公私鑰對和錢包地址,并生成包含由節(jié)點身份、證書、公私鑰對、錢包地址4 個核心因素構(gòu)成的映射列表,將該列表存儲到賬戶服務(wù)器中。
為提高響應(yīng)速度,在每次進行數(shù)據(jù)交易前區(qū)塊鏈服務(wù)者會獲取節(jié)點當(dāng)前的狀態(tài)信息,同時根據(jù)數(shù)據(jù)使用要求判斷當(dāng)前節(jié)點的屬性,即屬于數(shù)據(jù)提供節(jié)點還是數(shù)據(jù)需求節(jié)點,并更新節(jié)點狀態(tài)。
當(dāng)物聯(lián)網(wǎng)中的某個節(jié)點有數(shù)據(jù)需求時,首先向交易服務(wù)器發(fā)出一個申請,該申請信息中至少要包含5個要素,分別是證書、公鑰、錢包地址、數(shù)據(jù)需求、地理位置。請求得到響應(yīng)后,檢索滿足要求的數(shù)據(jù),尋找匹配的節(jié)點。匹配成功后,準(zhǔn)備進行數(shù)據(jù)交易。
在交易前數(shù)據(jù)已經(jīng)準(zhǔn)備完畢,只需要數(shù)據(jù)需求節(jié)點支付相應(yīng)數(shù)量的共享幣,即可將準(zhǔn)備好的數(shù)據(jù)發(fā)送出去。
已經(jīng)完成的數(shù)據(jù)交易并不能直接上鏈,而是暫存在交易池中。此時系統(tǒng)會驗證錢包內(nèi)是否存入共享幣,如果未存入或者存入數(shù)額不夠,則數(shù)據(jù)交易中止;驗證通過后,數(shù)據(jù)允許打包上鏈。區(qū)塊的構(gòu)建過程如圖4 所示。
圖4 區(qū)塊的構(gòu)建過程
數(shù)據(jù)需求節(jié)點將授權(quán)令牌發(fā)送給云服務(wù)器,云服務(wù)器會驗證令牌簽名,如果驗證不通過則拒絕數(shù)據(jù)訪問請求;如果驗證通過則按照數(shù)據(jù)需求節(jié)點地址,掀起發(fā)送儲存在云服務(wù)器的加密數(shù)據(jù)。這樣就能避免在數(shù)據(jù)傳輸過程中被第三方竊取,從而維護了數(shù)據(jù)的隱私和安全。數(shù)據(jù)需求節(jié)點在成功接收數(shù)據(jù)后,使用與數(shù)據(jù)提供節(jié)點配對的私鑰進行解密,得到相應(yīng)的明文數(shù)據(jù)。數(shù)據(jù)需求寫點利用明文數(shù)據(jù)的哈希值與原來加密數(shù)據(jù)的哈希值做對比,兩者一致則說明該數(shù)據(jù)完整[3]。
閃電網(wǎng)絡(luò)(Lightning Network)最早是應(yīng)用于比特幣系統(tǒng)的一種支付通道,其特點是在現(xiàn)有的區(qū)塊鏈以外建立起獨立的交易通道,從而達到降低交易延時的效果[4]。為了進一步增強閃電網(wǎng)絡(luò)的交易效率,可采取多通道拓展方法,其原理如圖5 所示。
圖5 閃電網(wǎng)絡(luò)多通道擴展示意
如圖5 所示,假設(shè)在用戶Bob 和Carol 之間、Alice和Bob 之間均建立了支付通道。要想在Alice 和Carol之間完成交易,可以讓Bob 作為本次交易的中間人,先由Alice 轉(zhuǎn)賬給Bob,然后再由Bob 轉(zhuǎn)賬給Carol。在基于區(qū)塊鏈的5G 物聯(lián)網(wǎng)中,Bob 相當(dāng)于一個路由節(jié)點。為了確保Bob 能夠在規(guī)定時間內(nèi)轉(zhuǎn)賬給Carol,引入了一個哈希時間鎖定合約機制。作為交易的對象,Carol 會挑選隨機密文并通過運算得到其哈希值(Hash),然后將該值交給交易的另一方Alice。此時,Alice 會構(gòu)建一筆加鎖的轉(zhuǎn)賬與Bob 建立交易,Bob 需要從Carol 那里拿到密文才能解鎖,如果在規(guī)定時間內(nèi)未能解鎖,這筆錢將會退回到Alice 的賬戶。通過上述方式保障了Alice 與Carol 之間的交易能夠安全完成。
從實際情況來看,基于區(qū)塊鏈的5G 物聯(lián)網(wǎng)數(shù)據(jù)共享場景下,用戶之間采用“點對點”的數(shù)據(jù)共享模式;同時,絕大多數(shù)用戶之間的交易屬于小額交易,并且對實時提現(xiàn)的需求度并不高。基于以上特點,本文提出了一種基于閃電網(wǎng)絡(luò)的鏈下交易方案。其核心思想是利用序列到期可撤銷合約(RSMC)和哈希時間鎖定合約(HTLC)完成鏈下交易[5]。
RSMC 可以看作是在任意兩個或多個數(shù)據(jù)共享節(jié)點之間構(gòu)建微支付通道。交易雙方提前在該通道內(nèi)存入一部分資金,正式交易后共同核驗資金分配方案,在確認信息無誤后確認電子簽名,然后完成交易;在提取資金時,將蓋有電子簽名的資金分配方案寫入?yún)^(qū)塊鏈中并進行確認,如果確認不通過則無法提取資金,從而保障用戶資金的安全;在確認通過后,用戶可以順利提現(xiàn)?;赗SMC 的交易過程中,除了提現(xiàn)需要使用到區(qū)塊鏈外,其他的環(huán)節(jié)均不需要上鏈,這樣就能大幅度地減少區(qū)塊鏈的請求次數(shù)。
交易雙方簽署的資金分配方案本質(zhì)上屬于一種具有時效性的智能合約,即HTLC。一方完成轉(zhuǎn)賬操作后,轉(zhuǎn)賬資金并不是直接進入另一方的賬戶,而是被暫時凍結(jié),同時生成唯一的哈希值;在約定期限內(nèi),接收方提供另一個哈希值,兩者配對完畢后可以將資金解凍,然后轉(zhuǎn)入到接收方的賬戶中。
基于閃電網(wǎng)絡(luò)的鏈下交易模型如圖6 所示。
圖6 基于閃電網(wǎng)絡(luò)的鏈下交易模型
基于閃電網(wǎng)絡(luò)的鏈下交易流程如下:
(1) 獲取節(jié)點信息。閃電網(wǎng)絡(luò)需要從兩種節(jié)點獲取IP 地址、端口號等基本信息。
(2) 創(chuàng)建支付通道。利用步驟(1)中獲取的信息建立支付通道,由于交易在區(qū)塊鏈下完成,從而簡化了交易流程。在創(chuàng)建支付通道時,數(shù)據(jù)需求節(jié)點根據(jù)提供的錢包地址,存入一定數(shù)額的資金,并將資金存儲到資金池中,利用資金池中的一部分資金創(chuàng)建微支付通道。
(3) 完成支付。在閃電網(wǎng)絡(luò)的接受測發(fā)起支付申請,數(shù)據(jù)提供節(jié)點根據(jù)該申請產(chǎn)生一個接收單據(jù)并發(fā)送給數(shù)據(jù)需求節(jié)點。在兩個節(jié)點之間提供一個支付路由,并限定支付時間,在規(guī)定時間內(nèi)完成支付。
(4) 資金提現(xiàn)。數(shù)據(jù)提供節(jié)點將更新后的資金分配方案寫入?yún)^(qū)塊鏈中,在區(qū)塊生效后可以通過數(shù)據(jù)提供節(jié)點提取資金。
基于區(qū)塊鏈的5G 物聯(lián)網(wǎng)數(shù)據(jù)共享技術(shù),利用了區(qū)塊鏈支持不可信環(huán)境下多方信任交互的特點,讓陌生節(jié)點之間可以安全、高效地減小“點對點”的信息傳遞,為數(shù)據(jù)共享奠定了扎實的基礎(chǔ)。同時,將閃電網(wǎng)絡(luò)機制應(yīng)用到5G 物聯(lián)網(wǎng)數(shù)據(jù)共享中,彌補了區(qū)塊鏈交易處理速度慢、可擴展性差等短板,進一步提高了5G物聯(lián)網(wǎng)數(shù)據(jù)共享技術(shù)的實用性。