謝裕清,王 淵,江 櫻,楊 苗,王永利
1.國網(wǎng)浙江省電力有限公司 信息通信分公司,杭州310000
2.南瑞集團有限公司(國網(wǎng)電力科學研究院有限公司),南京211100
3.江蘇瑞中數(shù)據(jù)股份有限公司,南京211100
4.南京理工大學 計算機科學與工程學院,南京210094
《國家電網(wǎng)公司“十三五”科技戰(zhàn)略研究報告》中提出的利用大數(shù)據(jù)提升管理水平,實現(xiàn)規(guī)劃科學、投資精準、管控高效要求,從面向全業(yè)務統(tǒng)一數(shù)據(jù)中心的知識圖譜關鍵技術、應用和典型場景實踐三個角度進行深入研究,通過在全業(yè)務統(tǒng)一數(shù)據(jù)中心的數(shù)據(jù)倉庫與數(shù)據(jù)湖之間構(gòu)建業(yè)務數(shù)據(jù)知識圖譜,為全業(yè)務統(tǒng)一數(shù)據(jù)中心大數(shù)據(jù)建立起語義連接,從而實現(xiàn)語義級互操作的統(tǒng)一數(shù)據(jù)服務。
2010 年,Pentaho 公司的CTO Dixon 率先提出數(shù)據(jù)湖的概念,其定義為“未經(jīng)處理和包裝的原生狀態(tài)水庫,不同源頭的水體源源不斷地流入數(shù)據(jù)湖,為企業(yè)帶來各種分析、探索的可能性”[1]。數(shù)據(jù)湖平臺是一套混合架構(gòu),依托統(tǒng)一融合的數(shù)據(jù)平臺,全流程打通企業(yè)產(chǎn)品的研發(fā)制造、供應儲存、安裝交付多環(huán)節(jié)數(shù)據(jù),增強數(shù)據(jù)交互,使能數(shù)字孿生,自動化、智能化提升企業(yè)運作效率。
目前,數(shù)據(jù)湖是大數(shù)據(jù)應用最常用的數(shù)據(jù)共享方式,然而數(shù)據(jù)共享帶來隱私回題仍然是數(shù)據(jù)湖設計中缺失的部分,特別是應用于電網(wǎng)企業(yè)的數(shù)據(jù)保密性的要求更高。現(xiàn)有的數(shù)據(jù)湖設計考慮了數(shù)據(jù)的特點,使數(shù)據(jù)共享平臺更具可擴展性和彈性,但由于整個原始數(shù)據(jù)集是在不完全信任的對等節(jié)點之間換的,利用數(shù)據(jù)進行分析的用戶可能會在未經(jīng)數(shù)據(jù)提供者事先同意的情況下重新分發(fā)數(shù)據(jù)提供者共享的數(shù)據(jù)以獲取利潤;另一方面,數(shù)據(jù)提供者可能無法完全信任數(shù)據(jù)湖,數(shù)據(jù)湖可能在沒有經(jīng)過資料提供者同意的情況下將數(shù)據(jù)重新分發(fā)給用戶。因此,如何安全高效地共享有價值的數(shù)據(jù)成為數(shù)據(jù)湖的設計重點。為了促進大數(shù)據(jù)應用中有價值數(shù)據(jù)的流通,必須完成現(xiàn)有數(shù)據(jù)湖缺失的數(shù)據(jù)隱私和系統(tǒng)穩(wěn)健性,以便數(shù)據(jù)更為安全地在同企業(yè)部門間乃至同行業(yè)企業(yè)間實現(xiàn)共享。
近年來,一些研究團體和學者對數(shù)據(jù)隱私保護技術已開展了很多相關的研究工作,取得了一定的研究成果。2010 年,Ciriani 等提出將數(shù)據(jù)碎片與加密結(jié)合起來,利用碎片化作為打破屬性之間敏感關聯(lián)的方法,以增強數(shù)據(jù)收集的隱私性[2]。2015年,Zyskind等人建議使用區(qū)塊鏈來分散數(shù)據(jù)存儲[3],不過本文提供了一個完整的實現(xiàn),利用智慧合約實現(xiàn)數(shù)據(jù)的訪問控制,以打敗惡意攻擊者。2017 年,Dorri 等人建議使用區(qū)塊鏈來管理物聯(lián)網(wǎng)[4],通過提供輕量級區(qū)塊鏈共識系統(tǒng),具有低處理能力的設備可以獨立運行區(qū)塊鏈。2017年,Barhamgi等人提出構(gòu)建一種隱私知識庫[5],利用語義網(wǎng)的功能來確定數(shù)據(jù)消費者如何組合原始元數(shù)據(jù)來推斷對隱私敏感的信息以及與推斷信息的公開相關的隱私風險。2019年,黃穗等人提出一種基于CP-ABE 和區(qū)塊鏈的數(shù)據(jù)安全共享方法,實現(xiàn)數(shù)據(jù)的細粒度共享[6]。
隨著電網(wǎng)信息化持續(xù)建設與深化應用,各部門各項業(yè)務已與信息化初步融合,信息系統(tǒng)內(nèi)業(yè)務數(shù)據(jù)的數(shù)量和種類逐步增多,數(shù)據(jù)共享需求迫切。目前,在我國電力行業(yè)同業(yè)中,鮮有將數(shù)據(jù)鏈、數(shù)據(jù)治理、數(shù)據(jù)服務形成落地平臺并為企業(yè)提供服務的典型案例。電網(wǎng)開展信息化建設多年,但數(shù)據(jù)存儲位置和量級情況不明確,結(jié)構(gòu)化數(shù)據(jù)、非結(jié)構(gòu)化數(shù)據(jù)、實時數(shù)據(jù)、流數(shù)據(jù)等多種數(shù)據(jù)未得到有效整合,各部門間獨立應用較多,平臺關聯(lián)性不夠,影響了數(shù)據(jù)共享及業(yè)務融合的開展。其次,當前數(shù)據(jù)傳輸協(xié)議不統(tǒng)一,如何對數(shù)據(jù)進行分庫、分表存儲,實現(xiàn)數(shù)據(jù)中心的融合與透明訪問尚未實現(xiàn)。第三,對數(shù)據(jù)的存儲價值、應用價值進行分析,從而建立數(shù)據(jù)質(zhì)量的全過程考察機制需求迫切。數(shù)據(jù)湖的本質(zhì)是一種數(shù)據(jù)管理的思路,利用低成本技術來捕捉、提煉和探索大規(guī)模、長期的原始數(shù)據(jù)存儲的方法與技術。數(shù)據(jù)湖可存儲任何種類的數(shù)據(jù),高質(zhì)量高效率地存儲數(shù)據(jù),更快速、更廉價地處理數(shù)據(jù),數(shù)據(jù)庫的數(shù)據(jù)共享機制如圖1所示。
圖1 數(shù)據(jù)湖數(shù)據(jù)共享機制
智能合約是在區(qū)塊鏈內(nèi)運行的自治應用程序。本文通過智能合約構(gòu)建了一個數(shù)據(jù)湖訪問管理模型,其中數(shù)據(jù)提供者與數(shù)據(jù)使用者之間的交互的規(guī)則在區(qū)塊鏈網(wǎng)絡中自主實施而沒有集中信任[7]。通過智能合約,可以為用戶提供控制數(shù)據(jù)訪問和使用方式的能力,因為智能合約為他們提供了相同的數(shù)據(jù)管理權(quán)限。通過使用隔離的虛擬機來運行這些智能合約,用戶無法修改應用程序結(jié)果。智能合約和區(qū)塊鏈可以實現(xiàn)數(shù)據(jù)的訪問控制,以跟蹤相關方之間的數(shù)據(jù)使用情況,從而實現(xiàn)正確的數(shù)據(jù)訪問責任。
對此,本文提出一種基于區(qū)塊鏈的數(shù)據(jù)訪問與控制模型并在此基礎上對區(qū)塊鏈中的智能合約模塊進行了優(yōu)化,即在區(qū)塊鏈中存儲數(shù)據(jù)的哈希值并使用可信執(zhí)行環(huán)境將加密后的原始數(shù)據(jù)存儲在數(shù)據(jù)湖中,不僅解決了企業(yè)內(nèi)部訪問權(quán)限難控制、企業(yè)之間數(shù)據(jù)難共享的問題,也確保了敏感數(shù)據(jù)的安全性和隱私性。
數(shù)據(jù)已成為企業(yè)的重要資產(chǎn),如何在企業(yè)內(nèi)部對數(shù)據(jù)的訪問權(quán)限進行有效控制、在企業(yè)與用戶之間安全共享數(shù)據(jù)一直是一個挑戰(zhàn)。本文提出一種應用區(qū)塊鏈的數(shù)據(jù)訪問與共享模型,利用屬性基加密對數(shù)據(jù)進行訪問控制與共享,達到細粒度訪問控制和安全共享的目的。該模型特點如下:
(1)利用區(qū)塊鏈平臺提供去中心化的數(shù)據(jù)訪問管理。
(2)利用智能合約在用戶和數(shù)據(jù)提供商之間提供相同的數(shù)據(jù)訪問管理權(quán)限。
(3)使用Ethereum智能合約在真實的區(qū)塊鏈平臺上提供完整的系統(tǒng)實施。
本模型自下而上可分為存儲層、區(qū)塊鏈服務層、接口層、智能合約層、應用層等,其架構(gòu)如圖2所示。
(1)存儲層:數(shù)據(jù)湖中搭建可信執(zhí)行環(huán)境(Trusted Execution Environment,TEE)用來存儲原始數(shù)據(jù),同時使用Intel SGX 架構(gòu)實現(xiàn)可信計算,原數(shù)據(jù)經(jīng)過加密后存儲在數(shù)據(jù)湖中,由企業(yè)維護。區(qū)塊鏈中只存儲散列處理后數(shù)據(jù)的Hash地址。
(2)區(qū)塊鏈服務層:用來實現(xiàn)數(shù)據(jù)一致性服務和數(shù)據(jù)同步服務,記錄企業(yè)與用戶間的數(shù)據(jù)交互與共享。
圖2 基于區(qū)塊鏈的數(shù)據(jù)訪問與共享模型架構(gòu)
(3)接口層:主要包括數(shù)據(jù)接口與智能合約接口。
(4)智能合約層:提供智能合約服務。主要功能是提供數(shù)據(jù)的訪問控制,即對請求數(shù)據(jù)的用戶進行身份驗證,確認其是否有權(quán)限進行訪問。
(5)應用層:包括各種應用程序,如數(shù)據(jù)管理系統(tǒng)、數(shù)據(jù)采集系統(tǒng)等。
本模型主要分為企業(yè)內(nèi)的數(shù)據(jù)共享和企業(yè)與用戶間的數(shù)據(jù)交互兩部分,是平行區(qū)塊鏈結(jié)構(gòu)。企業(yè)內(nèi)的數(shù)據(jù)共享主要負責各部門數(shù)據(jù)的存儲與保護,為了加強企業(yè)內(nèi)數(shù)據(jù)的安全性及可靠性而將數(shù)據(jù)進行集中化管理,限定訪問權(quán)限,將加密后的數(shù)據(jù)存儲在安全存儲區(qū)中,鏈上只存放數(shù)據(jù)進行散列處理后的地址。存儲結(jié)構(gòu)主要分為區(qū)塊頭和區(qū)塊體,將數(shù)據(jù)的輸入時間戳、區(qū)塊長度及前一個區(qū)塊的哈希值作為區(qū)塊頭,根據(jù)訪問控制樹將數(shù)據(jù)Hash 地址、訪問控制策略和數(shù)據(jù)Merkle 根加密后打包成塊,存儲至區(qū)塊體中,其后上傳至區(qū)塊鏈上。其數(shù)據(jù)存儲結(jié)構(gòu)如圖3所示。
圖3 區(qū)塊體存儲結(jié)構(gòu)
企業(yè)與用戶間的數(shù)據(jù)交互將采集到的用戶數(shù)據(jù)進行集中處理方便共享,同時對企業(yè)數(shù)據(jù)使用情況進行監(jiān)管。訪問控制樹一般采用屬性基加密策略樹,只有特定企業(yè)中的特定部門才能進行解密。數(shù)據(jù)請求者在提出數(shù)據(jù)請求時,需將所請求數(shù)據(jù)與含有自己屬性的令牌一同發(fā)布至相應的區(qū)塊鏈上。
在進行數(shù)據(jù)存儲時,對于大量底層數(shù)據(jù)和基本的業(yè)務數(shù)據(jù)而言,若使用非對稱加密會導致密鑰管理混亂,故選用基于屬性加密(ABE)對底層數(shù)據(jù)進行加密[8]。而對于敏感數(shù)據(jù),由于區(qū)塊鏈處理速度較慢,不適宜將所有數(shù)據(jù)直接存儲在鏈上,因此使用脫鏈存儲。通過建立分布式散列表,區(qū)塊鏈存儲數(shù)據(jù)的散列地址。數(shù)據(jù)在存儲時進行加密,并通過智能合約進行數(shù)據(jù)訪問控制。
表1 從數(shù)據(jù)安全和數(shù)據(jù)存儲等方面將本模型與傳統(tǒng)區(qū)塊鏈進行對比分析。
以企業(yè)與用戶間進行數(shù)據(jù)交互為例,由于數(shù)據(jù)采集設備生成的數(shù)據(jù)管理權(quán)限的集中化,部門數(shù)據(jù)在企業(yè)各部門間之間的共享方式缺乏透明度。區(qū)塊鏈2.0的最大特性就是引入了智能合約,可以基于其架構(gòu)開發(fā)各種用途的區(qū)塊鏈應用。智能合約是一種計算機協(xié)議,能夠以信息化方式傳播、驗證或執(zhí)行合同,這些交易在沒有可信第三方情況下執(zhí)行、可追蹤且不可逆轉(zhuǎn)[9]。本文在區(qū)塊鏈訪問控制與共享模型的基礎上提出了智能合約算法,通過該智能合約算法,多方可以指定規(guī)則來管理其交互,這些規(guī)則在區(qū)塊鏈中獨立實施,而無需集中式系統(tǒng)。
智能合約是在區(qū)塊鏈內(nèi)運行的自治應用程序,其中管理相關方之間的交互的規(guī)則在區(qū)塊鏈網(wǎng)絡中自主實施,而沒有集中信任[10]。本文提出的方法首先存儲區(qū)塊鏈中生成的加密數(shù)據(jù)的哈希值,然后將數(shù)據(jù)本身存儲在數(shù)據(jù)湖中,從而使區(qū)塊鏈可通過智能合約控制數(shù)據(jù)訪問。
系統(tǒng)主要功能是在數(shù)據(jù)提供者和用戶之間建立信任。通過利用智能合約,本文提供了一個數(shù)據(jù)訪問管理模型,用戶在控制數(shù)據(jù)共享或使用方式方面享有同等的權(quán)限,從而可以指定由區(qū)塊鏈網(wǎng)絡上不受信任的第三方實體自主強制執(zhí)行的數(shù)據(jù)訪問規(guī)則[11]。此外,假設所有數(shù)據(jù)在傳輸之前都已加密,并且所有密鑰交換都是使用非對稱加密協(xié)議執(zhí)行的。在本實驗中,不考慮重放攻擊和拒絕服務攻擊。
表1 本模型與傳統(tǒng)區(qū)塊鏈對比分析
如圖4所示,基于智能合約的數(shù)據(jù)湖訪問管理主要由前端數(shù)據(jù)采集裝置、區(qū)塊鏈及數(shù)據(jù)湖三部分組成,其中企業(yè)內(nèi)各部門先通過特定的設備或裝置自動采集或手工錄入數(shù)據(jù),之后通過遠程服務認證和區(qū)塊鏈中的智能合約組件進行數(shù)據(jù)的訪問控制,再通過傳輸網(wǎng)絡入湖,入湖后的數(shù)據(jù)可通過加密或解密在信任模塊與不信任模塊之間轉(zhuǎn)換[12]。
圖4 基于智能合約的數(shù)據(jù)湖訪問管理模型
智能合約以區(qū)塊鏈中執(zhí)行的以太坊智能合約的形式向用戶數(shù)據(jù)提供去中心化的訪問控制策略[13]。由于在智能合約中存儲數(shù)據(jù)所需的有限數(shù)據(jù)存儲和費用,智能合約僅將數(shù)據(jù)的Hash 值存儲在區(qū)塊鏈中,主數(shù)據(jù)被加密并存儲在數(shù)據(jù)湖中。智能合約算法包括用戶注冊模塊、設備注冊模塊、數(shù)據(jù)寫入訪問策略模塊和設備數(shù)據(jù)讀取訪問策略模塊。詳細算法如下:
算法1 數(shù)據(jù)湖訪問管理智能合約算法
Input:ownerAddress //數(shù)據(jù)提供者的唯一標識
UserAddress //用戶的唯一標識
Output:Case one:hash(Data)//數(shù)據(jù)的哈希地址Case two:false //不具備訪問權(quán)限
1.HashMap deviceRegistry(ownerAddress)
2.return List[DeviceIds];
3.HashMap deviceData(ownerAddress,deviceId)
4.return List[DataHash] //返回數(shù)據(jù)Hash地址
3.HashMap DataAccessRegistry(ownerAddresss,UserAddress,deviceId)
6.return bool isAllowed;//審核用戶是否有權(quán)限訪問
4.function REGISTERDEVICE(ownerAddress,deviceID)
5.InsertToHashMap(deviceRegistry)
6.end function
7.function WRITEDATA(ownerAddress,deviceID,Data)
8.if owner==ownerAddress
9.deviceData[owner,deviceID].List.InsertData(hash(Data))
10.end function
11.function READDATA(ownerAddress,UserAddress,deviceID)
12.if DataAccessRegistry(UserAddress)==true
13.return deviceData[hash(ownerAddress,deviceID])
14.end function
15.function GRANTACCESS(ownerAddress,UserAddress,deviceID)
16.if owner==ownerAddress
17.DataAccessRegistry[hash(ownerAddress,User-Address,deviceID)]=true
18.end function
19.function REVOKEACCESS(ownerAddress,UserAddress,deviceID)
20.if owner==ownerAddress
21.DataAccessRegistry[hash(ownerAddress,User-Address,deviceID)]=false
22.end function
(1)用戶注冊。該模塊利用Ethereum network上的用戶注冊系統(tǒng)。每個用戶通過生成唯一標識用戶的公共私鑰對來加入Ethereum network,之后可使用私鑰與智能合約交互以執(zhí)行諸如設備注冊和數(shù)據(jù)訪問的功能[14]。
(2)設備注冊。每個經(jīng)過身份驗證的數(shù)據(jù)提供者都可以通過提供數(shù)據(jù)采集設備的標識符來進行注冊。在智能合約中,本文提供一個Hash映射,將數(shù)據(jù)提供者擁有的設備映射到區(qū)塊鏈上的所有者地址,如mapping(address=list of owners deviceids)。
(3)數(shù)據(jù)寫入訪問策略。對于將數(shù)據(jù)寫入?yún)^(qū)塊鏈的設備,設備將提供owner address 和設備ID 以及要寫入的數(shù)據(jù)。通過使用所有者地址和設備ID 的組合作為Hash映射中的鍵,可以唯一地存儲與所有設備相對應的所有數(shù)據(jù),如((owner address,device id)=list of device data)。Hash 映射的值是由設備寫入的數(shù)據(jù)的Hash 列表。在智能合約允許將數(shù)據(jù)寫入合同之前,智能合約將檢查owner address 是否與設備ID 相對應,以確保只有設備所有者才能執(zhí)行寫入操作。
(4)設備數(shù)據(jù)讀取訪問策略。在進行數(shù)據(jù)訪問時,一個需要訪問設備數(shù)據(jù)的用戶需要向其發(fā)出一個讀取數(shù)據(jù)的請求許可,請求用戶將提供其設備所有者的地址和設備ID,包含設備所有者和地址以及設備ID的Hash映射作為用戶的密鑰,如((owneraddress,device id,user address)=bool access)。最后,在對數(shù)據(jù)授予訪問權(quán)限之前,將檢查此哈希映射以查看請求用戶是否可以通過確保只有已注冊的用戶來訪問數(shù)據(jù)。
在數(shù)據(jù)湖中搭建可信執(zhí)行環(huán)境(TEE)用來存儲原始數(shù)據(jù),同時使用Intel SGX架構(gòu)實現(xiàn)可信計算,英特爾SGX是新型英特爾Skylake處理器中引入的可信計算架構(gòu)。通過提供擴展X86 和X86_64 體系結(jié)構(gòu)的新指令集,用戶級應用程序可以提供機密性和完整性,而無需底層操作系統(tǒng)的信任。同時,本次實驗使用五臺不同的智能傳感設備采集數(shù)據(jù)模擬企業(yè)內(nèi)數(shù)據(jù)采集裝置進行區(qū)塊鏈數(shù)據(jù)的寫入操作來評估此算法。實驗環(huán)境配置如表2。
表2 實驗環(huán)境
圖5 顯示了該實驗的詳細數(shù)據(jù)流程圖。對于要寫入或讀取數(shù)據(jù)的設備,首先,設備需使用區(qū)塊鏈進行自身注冊,同時執(zhí)行遠程認證服務使用戶信任SGX 平臺。在執(zhí)行數(shù)據(jù)寫入操作時,數(shù)據(jù)提供者首先應檢索智能合約地址,然后加密并對數(shù)據(jù)進行Hash處理,散列后的加密數(shù)據(jù)通過智能合約中的WriteData()函數(shù)寫入?yún)^(qū)塊鏈并將原始加密數(shù)據(jù)寫入數(shù)據(jù)湖中的SGX平臺。之后,完整性檢查模塊計算數(shù)據(jù)的基于散列的消息認證代碼(HMAC)并將HMAC與數(shù)據(jù)一起寫入安全存儲區(qū)。
圖5 數(shù)據(jù)流程圖
對于讀取操作,用戶必須使用AllowAccess()方法向智能合約注冊;若要撤消訪問權(quán)限,用戶可以選擇執(zhí)行revokeAccess()函數(shù)。用戶可提供其地址與智能合約通信,智能合約檢查用戶是否擁有訪問數(shù)據(jù)的權(quán)限,如果授予權(quán)限,則返回數(shù)據(jù)的哈希值,并可用于從SGX存儲平臺訪問數(shù)據(jù)。之后,SGX應用程序使用READDATA API重新檢查智能合約,以確定用戶是否可以訪問數(shù)據(jù)哈希標識符。如果允許訪問,則SGX 應用程序從安全存儲中檢索數(shù)據(jù)。需要注意的是區(qū)塊鏈讀取操作的開銷是無關緊要的,之后將在表3的評估部分中顯示。然后需解密數(shù)據(jù)并進行完整性檢查確保數(shù)據(jù)的真實性和完整性,最后需重新計算數(shù)據(jù)的HMAC 并將其與存儲的HMAC 進行比較。如果HMAC 未發(fā)生變化,則讀取數(shù)據(jù)并將其返回給用戶。
表3 數(shù)據(jù)集屬性分類
此外,對本次實驗中前端智能傳感器所采集的數(shù)據(jù)集各屬性,可大致進行如表3所示分類。
本實驗使用Ethereum區(qū)塊鏈實現(xiàn)該智能合約組件,主要包括可靠性編程語言。代碼需在最大程度上簡潔化以限制運行智能合約交易所需的Ethereum gas,gas即“燃氣”,是以太坊網(wǎng)絡世界的燃料[15],它決定了以太坊網(wǎng)絡生態(tài)系統(tǒng)的正常運行,在鏈上每執(zhí)行一個寫入操作時,都需要支付一定的費用,用gas 為單位來計數(shù),每個在鏈上可以執(zhí)行的命令都設置了一個消耗的gas 值[16]。同時,為了限制存儲數(shù)據(jù)所需的存儲空間,在區(qū)塊鏈中只存儲數(shù)據(jù)的哈希值。實驗在Rinkeby Ethereum 測試網(wǎng)絡上運行智能合約進行評估。該實驗實現(xiàn)了registerDevice、allowAccess、writeData、readData和revokeAccess 等接口使數(shù)據(jù)采集裝置能夠與智能合約進行交互。同時,本實驗利用Gas的使用量和區(qū)塊的吞吐量作為評估指標對是否使用Hash進行對比分析。
表4 顯示了礦工完成每種智能合約操作的評估結(jié)果。設備1的數(shù)據(jù)有效載荷大小為27 B,設備2為47 B,設備3 為132 B,設備4 和5 分別為127 B 且散列長度是256 bit。如表4 所示,registerDevice 使用47 543 gas 完成其操作,allowAccess 需要29 517 gas,writeData 需要51 049 gas,revokeAccess 需要14 792 gas,readData 沒有使用任何氣體,因為智能合約的讀取是在本地區(qū)塊鏈上完成的,不需要任何挖掘。
表4 基于Gas用量的智能合約應用效率
在圖6中,比較了礦工在區(qū)塊鏈中完成寫入操作所需的gas 使用量。分為兩種情況,一種是向區(qū)塊鏈中寫入加密過全部數(shù)據(jù),一種僅僅寫入數(shù)據(jù)的Hash值。圖6顯示設備2寫入散列后的數(shù)據(jù)使用59 846 gas和92 926 gas進行原始寫入,減少了35%。設備3 寫入散列后的數(shù)據(jù)使用53 454 gas,而原始數(shù)據(jù)寫入所需的氣體數(shù)為159 234 gas,減少了67%。設備4 和5 寫入散列后的數(shù)據(jù)使用58 974 gas,而需要140 255 gas 氣體來寫入原始數(shù)據(jù),減少了57%。
圖6 智能合約寫操作的gas使用量
圖7 展示了增加寫入工作負載對區(qū)塊鏈的影響。通過將500個寫入請求的寫入工作量增加到2 000個寫入請求,可以測量區(qū)塊鏈上每秒的事務吞吐量。如果沒有經(jīng)過散列,對于500 寫入工作負載,寫入事務吞吐量為每秒10.56 次寫入。對于1 500,它是9.26,對于2 000次寫入,寫吞吐量是每秒8.6 次寫入。使用散列,對于500寫入工作負載,寫入事務吞吐量為每秒8.8次寫入。對于1 500,它是7.9,對于2 000 次寫入,寫入吞吐量是每秒7.2次寫入。寫吞吐量隨著寫入工作量的增加而降低,也會隨著使用散列而降低。從圖6 中可以看出,使用Hash的gas使用量恒定的是因為散列函數(shù)會產(chǎn)生256位數(shù)據(jù)用于存儲在區(qū)塊鏈上;圖7表明將數(shù)據(jù)寫入?yún)^(qū)塊鏈之前的散列處理可降低寫入吞吐量。
圖7 基于寫入工作量增加的吞吐量
實驗結(jié)果表明,在Ethereum測試網(wǎng)絡上運行智能合約進行評估,并在鏈上只存儲數(shù)據(jù)的哈希值,可以在實現(xiàn)訪問控制的基礎上降低寫操作的gas的使用量和系統(tǒng)的吞吐量。
隨著信息化建設程度不斷邁進,完善的數(shù)據(jù)共享與訪問控制機制、數(shù)據(jù)傳輸透明度和數(shù)據(jù)隱私越來越重要。本文利用區(qū)塊鏈技術的最新進展,提出一種基于區(qū)塊鏈的數(shù)據(jù)訪問與控制模型并在此基礎上對區(qū)塊鏈中的智能合約模塊進行了優(yōu)化,通過利用區(qū)塊鏈以去中心化的方式管理用戶對數(shù)據(jù)訪問,并確保所有數(shù)據(jù)處理和存儲在安全區(qū)域內(nèi)完成,將原始加密數(shù)據(jù)存儲在數(shù)據(jù)湖中,提高了數(shù)據(jù)的安全性和完整性。本文提出的方法有助于實現(xiàn)企業(yè)數(shù)據(jù)的跨業(yè)務貫通,為電網(wǎng)全業(yè)務統(tǒng)一數(shù)據(jù)中心建設關切的重大技術難題提供了新的技術解決思路。