李 玨,余 雷,邢方亮
(1.貴州省水利水電勘測設計研究院,貴陽 550002;2.貴州思索電子有限公司,貴陽 550002;3.珠江水利委員會珠江水利科學研究院,廣州 510611)
區塊鏈這個詞最早出現在比特幣的白皮書里,是分布式數據存儲、點對點傳輸、共識機制、加密算法等計算機技術的新型應用模式,本質上是一個去中心化的數據庫,特點是不可篡改、開放透明、可審計。幾年的發展后,相較于比特幣,區塊鏈已完全是不同的概念了,而基于一種信任機制,在新一代的互聯網中,區塊鏈已成為戰略支撐技術,區塊鏈技術的產業發展和創新獲得了國家的高度重視,提出要“加強對區塊鏈、人工智能、虛擬現實等新興技術在行業系統解決方案中的應用推廣”。
在國家經濟建設和社會發展中,所有與水相關活動的決策均來源于基礎水文資料,準確的的水文資料是水文事業服務于社會經濟、生態環境及交通等信息產品的重要戰略資源。水文數據庫的建設是現代化水文工作的重要組成部分之一,而區塊鏈和水文數據庫建設的結合將是未來水文水利發展最容易落地的實踐應用場景。將區塊鏈技術應用于水文數據的分布式存儲方式中,通過加密增加安全性和可靠性,從而保證數據的完整性、真實性和可審計性。
水文資料種類多,規模大,品質高,數據類型具有代代相傳的特點,是在水文數據的基礎上記錄了地球水圈和人民改造生活環境的依據。水文數據庫包含和使用一些密切相關銜接的數據,從實際調查數據到月度統計數據,含水流銜接和數據說明、測站分布和方法信息、測站屬性和率定信息、斷面信息及數據可靠性信息、降水、蒸發、流量、冰凌、潮水、水位、泥沙和水量等統計特征值,所有的水文分析均可與水利工程數據結合,并在水文數據的基礎上用以實現水力計算和力學計算[1],故水文數據庫建設是重要的水文運維基本業務。以往的水文數據庫建設存在如下幾點問題:①水文數據未加密;②容易在傳輸過程中被修改;③使用不受控制;④使用人不受控制。
隨著水文業務需求的深化、區塊鏈技術的發展和經濟社會的不斷進步決定了水文數據庫的建設是一個復雜的、動態的系統建設工程,解決水文現代化數據庫建設和水文應用服務中存在的問題已勢在必行。
2008年中本聰發表論文《比特幣——一種點對點的電子現金系統》,文中設計了一個全新的電子貨幣系統,可在去中心化管理的情況下進行全網賬本的共同維護和更新,并保證交易記錄的真實有效且不可篡改。隨著比特幣系統的運行,實現這一系統的技術方案的重要性逐漸體現出來,人們將其提煉稱之為區塊鏈技術,因此,區塊鏈的第一個應用是比特幣,比特幣是區塊鏈的底層技術,兩者既有聯系又有區別。
IDC(Internet Data Center)將區塊鏈定義為數據區塊按時間順序相連的鏈式數據結構,用密碼學保證安全的分布式數字賬本,是一種全新的分布式基礎架構與范式。
1)分布式:區塊鏈系統中每個節點均具有對等的權利和義務,均能獲得完整的數據拷貝,因而,區塊鏈系統無需配置相應的硬件設備及管理機構,將維護工作分散,由多個節點共同維護系統。
2)多節點共識:公開數據內容和系統運作規則,各節點間無需相互信任,入鏈數據通過共識機制進行驗證,由技術手段自動實現信任關系,無需配備審批結算交易的中心化管理員。
3)公開透明:利用時間戳機制追溯用戶行為,而共識機制則保證賬本和商業規則可被所有人審閱,從而保證透明的系統。
4)不可篡改:通過新增區塊來修改交易,原區塊仍然存在,所有的區塊變動將留有痕跡,永久保留。
1)去中心化或多中心化:不再有中心數據庫,而是分布在世界各地的計算機中,形成分布式數據庫進行計算,弱化甚至消除管理中心性。
2)開放性:開放式是區塊鏈設計的初衷,每一條數據均由所有人驗證通過,每個人均可隨時查看。每一次記錄都全網公開,所有人都能看到記錄的內容,并來驗證其真實性,只有真實的信息才能被計入數據塊中,掛在鏈上,之后所有的人也可以再查看,保障操作者的公的權益。
3)自治性:區塊鏈一開始就設置了統一的平臺協議和技術規范,讓后續的開發者和使用者能統一的使用分布式數據庫進行安全交易。
4)不可篡改:不可篡改性是區塊鏈信任機制的基礎,其鏈條結構能向整個網絡公告并認可每次的交易環節,驗證并記錄之后,所有人均無權對其進行修改和刪除。
目前全國水文數據資料龐大,但完善的水文數據庫應用很少,每次使用數據大多是查閱PDF文檔或者手工抄錄,整個過程中存在很多問題,如工作量大、響應緩慢、數據傳輸不安全和數據可被篡改等,嚴重的阻礙制約了水利大數據和智慧水利的發展。區塊鏈技術在水文數據庫中的應用,去除了中間機構,改變傳統水文的由組織機構完成集中數據的權限審查和數據校驗的方式,節約時間成本,提高安全性。
1)水文機構服務器群:水文資源數據目前的分布現狀,主要的水文數據信息服務和數據存儲節點均在國家水利行政單位及大型水利企業,因而可將水文機構進行等級劃分,明確授權機制,實現節點之間的共識。
2)水文數據存儲結構:將數據的節點根錨定在區塊鏈,實現高效傳播和不可篡改。
3)分布式數據庫系統(Distributeddatabasesystem,DDBS):將水文數據存儲在分布式數據庫中并進行加密,減輕高頻訪問的壓力。
2.1.1 水文數據庫組成
水文數據庫含主題、元、專用和基礎數據庫,ETL(Extract-Transform-Load)負責抽取分布的數據,清洗和轉換后加載,為數據挖掘和分析提供基礎數據[2]。
2.1.2 水文數據管理設計
通過區塊鏈管理信息資源目錄實現數據的管理與共享,詳細數據存儲在數據倉庫中,為進一步處理與分析提供數據支撐。
2.1.3 水文信息資源目錄管理
水文元數據主要包含技術元、業務元和內斂映射元等幾種數據類型,故設計過程中,要抓住規律,實現加工、處理和再次開發。將元數據中的8個不能重復利用的主要子集和5個可重復利用的次要子集運用在數據集,搭建元數據組織的框架。將元數據對應區塊鏈的Merkle樹節點,實現數據的不可篡改和真實性。
2.2.1 分布式水文數據庫系統
來源于不同渠道的專用數據及水文技術,在內容和格式上區別較大,無法支持高級決策和分析,故在采用區塊鏈技術建立分布式數據庫時,需重新構建數據模型,根據不同構造的數據庫裝載基礎和專用的數據,采用主數據進行決策分析,通過水文數據建立分布式數據庫。
2.2.2 水文數據抽取
將原有備份在光盤或磁帶上的歷史數據、基礎數據和外部文件調至相應分類的水文數據即為抽取水文數據,在抽取過程中,不宜采用直接鏈接水文數據庫的方式,應采用不同的接口對不同源數據進行調取,同時需建立安全保證措施,保證一定的抽取效率[3]。
2.2.3 水文數據加載
在加載經過轉換的水文數據時,需先刪除原有的歷史數據,且要保在同一加載時間的加載過程中的數據具有一致性與完整性。
2.3.1 水文數據交換體系
水文數據交換體系具有統一的標準規范,其用戶分為完備、輕量及普通三個用戶類型,其中輕量級用戶可使用網站或APP查看水文數據,并可授權或取消訪問權限。這里客戶端可分為:
1)完備級客戶端:可提供對外服務接口,并存儲所有的記錄。
2)輕量級客戶端:可提供查詢接口,不保存記錄,需要時向其他節點查詢,可完成個人授權。
3)在線客戶端:網頁瀏覽模式。行業背景研究發現,小型水文機構水文數據少,數據中心不完善,數據處理能力弱,故水文大數據中心基本都建設在重點水文機構,基于此現狀,采用區塊鏈技術,即能實現去中心化的安全快捷的數據共享,對于體積較大的設計圖、圖片、視頻等數據,可將所有者公鑰加密放在分布式數據庫中,將所有數據的摘要保存在分層機構中,將數據哈希值保存在Item結構中,再將每個Item的哈希值放在Item塊機構中,從而加快使用者對記錄的校核速度,實現高速、可靠、透明和安全的數據共享。
2.3.2 水文數據安全
采用安全系數較高的操作系統作為數據庫和數據倉庫服務器的操作系統,同時進行恢復和備份的設計,而區塊鏈的鏈條結構可保證每次經過公告和認可的交易記錄的真實性,從而保證了數據信息的不可篡改。
在此,文章實現一個簡單的水文數據區塊鏈。考慮到水文工作的實際需求,這里主要是利用了區塊鏈的數據溯源和不可篡改特性,常見區塊鏈中工作量證明等與實際需求無關的部分不予實現,生成一個新區塊的權限不以工作量證明為依據,而是由各采集終端節點依照水文測驗規則采集數據后生成。
設想中的水文數據區塊鏈的區塊基本結構如下:
1)index:區塊索引值。
2)hash:本區塊哈希值。
3)p_Hash: 上一區塊哈希值。
4)timestamp:時間戳。
5)W_data:水文數據塊。
6)C_data:存儲認證中心、采集終端信息的數據塊。
7)O_data: 其他數據塊。
采集終端節點采集數據后,經RSA非對稱數據加密算法進行數字簽名后上傳至所屬的水文數據認證中心,認證中心通過該數字簽名驗證確認數據來源的可信性和數據可用性后,發起生成新區塊的廣播,并向水文數據區塊鏈網絡進行廣播。新區塊的W_data字段為符合《水文監測數據通信規約》(SL651-2014)的數據報文,C_data字段用于存儲采集W_data數據的采集終端信息以及認證該數據的認證中心的信息,O_data字段用于存儲其他信息。
每一個區塊代表一個或一批水文測驗數據,所有水文測驗數據的請求、使用等信息視為交易數據,合規的、被允許的請求和使用等數據操作,按照區塊鏈相關算法及規則(如PBFT、PoW算法、PoS算法、DPoS算法、Ripple算法等)解決共識問題并生成記錄后,分布存儲于各區塊的O_data數據中。
隨著信息技術的發展,將區塊鏈應用于水文數據庫建設是大勢所趨,文章借鑒區塊鏈這一分布式數據庫技術來解決現有水文資源數據中存在的問題,從分類分級、加密水文數據集、分布式數據存儲三個方面探討區塊鏈與水文數據庫的融合,將區塊鏈技術應用于水文數據庫管理,助力水利工程活動轉型升級,實現經營目標。