闕培斯 高飛 曾一洪
西藏大學(xué)信息科學(xué)技術(shù)學(xué)院,西藏 拉薩 850032
西藏高原復(fù)雜多樣的地形地貌,形成了獨(dú)特的高原氣候。除了呈現(xiàn)出西北嚴(yán)寒干燥、東南溫暖濕潤的總趨向,還存在著多種多樣的區(qū)域氣候和明顯的垂直氣候帶。諺語“十里不同天”“一天有四季”等反映了這些特點[1]。與中國大部分地區(qū)相比,西藏的空氣稀薄、日照充足、氣溫較低、降水較少。在拉薩、昌都、日喀則等地,年溫差為18~20 攝氏度;而在阿里地區(qū)海拔5000 米以上的地方,8 月白天氣溫為10 攝氏度以上,而夜間氣溫降至攝氏零度以下。西藏自治區(qū)各地降水的季節(jié)分配不均,干季和雨季的分界非常明顯,而且多夜雨[2]。年降水量自東南低地的5000 毫米,逐漸向西北遞減到50 毫米。每年10月至翌年4 月,降水量僅占全年的10%至20%;從5月至9 月,雨量非常集中,一般占全年降水量的90%左右[3]。
因此,西藏的氣候特點可以從以下幾個方面簡述:(1)西藏氣候總的特點是日照時間長,輻射強(qiáng)烈;氣溫較低,溫差大;干濕分明,多夜雨;冬春干燥,多大風(fēng);氣壓低,氧氣含量少。(2)西藏氣候呈現(xiàn)出由東南向西北的帶狀分布,即:熱帶—亞熱帶—溫帶—亞寒帶—寒帶;濕潤—半濕潤—半干旱—干旱。(3)西藏氣候受地形影響,還有多種多樣的區(qū)域氣候及明顯的垂直氣候帶[4]。
目前基于西藏天氣采集存在設(shè)備分布不均衡、數(shù)據(jù)集中存儲困難、自動化觀測技術(shù)不足以及數(shù)據(jù)難以溯源等問題。本研究提出了一個基于區(qū)塊鏈的天氣預(yù)警系統(tǒng),利用區(qū)塊鏈技術(shù)提高了氣象數(shù)據(jù)的準(zhǔn)確性和安全性,為天氣預(yù)報提供了更可靠的數(shù)據(jù)支撐,主要特點就是更新天氣的時間間隔較短,提高了預(yù)報的精度和效率。
區(qū)塊鏈?zhǔn)且环N利用塊鏈?zhǔn)綌?shù)據(jù)結(jié)構(gòu)來驗證與存儲數(shù)據(jù)[5]、分布式節(jié)點共識算法來生成和更新數(shù)據(jù)、密碼學(xué)方式保證數(shù)據(jù)傳輸和訪問的安全,以及自動化腳本代碼組成的智能合約來編程和操作數(shù)據(jù),是區(qū)塊鏈這種全新的分布式基礎(chǔ)架構(gòu)與計算范式所采用的方法[6]。根據(jù)圖1所示,區(qū)塊鏈技術(shù)具有去中心化、不可篡改、公開透明、集體維護(hù)等特點,能夠為金融、物聯(lián)網(wǎng)、公益慈善、醫(yī)療健康、供應(yīng)鏈等領(lǐng)域提供更高效、更安全、更可信的數(shù)據(jù)服務(wù)[7]。
圖1 區(qū)塊鏈數(shù)據(jù)結(jié)構(gòu)
區(qū)塊鏈技術(shù)的核心關(guān)鍵技術(shù)包括以下幾個方面:
1.1.1 共識機(jī)制。在區(qū)塊鏈系統(tǒng)中,沒有一個中心化的機(jī)構(gòu),因此需要共識機(jī)制為各方節(jié)點提供處理數(shù)據(jù)的指導(dǎo)和規(guī)則,并按照嚴(yán)格的共識進(jìn)行數(shù)據(jù)交互。常用的共識機(jī)制有PoW、PoS、DPoS、PBFT、PAXOS、DPOP等[8]。
1.1.2 密碼學(xué)技術(shù)。密碼學(xué)技術(shù)是區(qū)塊鏈的核心技術(shù)之一,在現(xiàn)代的區(qū)塊鏈應(yīng)用中采用了許多經(jīng)典的現(xiàn)代密碼學(xué)算法,如哈希算法、對稱加密、非對稱加密、數(shù)字簽名等。
1.1.3 分布式存儲。分布式存儲是指區(qū)塊鏈?zhǔn)且环N點對點網(wǎng)絡(luò)上的分布式賬本,每個參與的節(jié)點都將獨(dú)立完整地存儲寫入?yún)^(qū)塊數(shù)據(jù)信息。分布式存儲具有兩個優(yōu)勢:一是每個節(jié)點都備份數(shù)據(jù)信息,避免單點故障導(dǎo)致數(shù)據(jù)丟失;二是每個節(jié)點上的數(shù)據(jù)都獨(dú)立存儲,有效避免惡意篡改歷史數(shù)據(jù)。
1.1.4 智能合約。智能合約是指存儲在區(qū)塊鏈系統(tǒng)上的程序,這些程序?qū)⒃诜项A(yù)先確定的條件時自動運(yùn)行。智能合約具有透明可信、自動執(zhí)行、強(qiáng)制履約的優(yōu)點,可以實現(xiàn)各種復(fù)雜的業(yè)務(wù)邏輯和交易規(guī)則。
以太坊是一種基于區(qū)塊鏈的開源平臺[9],旨在支持智能合約和去中心化應(yīng)用(DApp)的開發(fā)和運(yùn)行。以太坊采用自己的編程語言Solidity 和虛擬機(jī)EVM,以及其自有的加密貨幣Ether。目前,以太坊使用工作量證明(PoW)共識機(jī)制,但計劃未來將轉(zhuǎn)向權(quán)益證明(PoS)共識機(jī)制[10]。
智能合約是一種基于區(qū)塊鏈的自執(zhí)行的合約代碼,它可以定義和執(zhí)行合約雙方之間的協(xié)議。智能合約可以實現(xiàn)邏輯判斷、數(shù)據(jù)存儲、事件觸發(fā)等功能,以實現(xiàn)各種復(fù)雜的業(yè)務(wù)邏輯。[11]智能合約在部署到區(qū)塊鏈上后,就不可修改或刪除,只能按照預(yù)設(shè)的規(guī)則執(zhí)行。智能合約使用Gas 作為消耗資源,當(dāng)以太坊節(jié)點執(zhí)行一筆交易所需的計算步驟越多、越復(fù)雜,那么這筆交易消耗的Gas 就越多。Gas 是以太坊網(wǎng)絡(luò)中交易費(fèi)用的衡量標(biāo)準(zhǔn),用戶需要為每筆交易支付一定數(shù)量的Gas費(fèi)用,以激勵節(jié)點執(zhí)行交易[12]。
目前基于西藏地區(qū)氣象復(fù)雜多變及氣象站分布稀少、所采集的氣象數(shù)據(jù)缺失率高、信息區(qū)域間隔大等問題。為了解決這些問題,本研究提出了一個基于區(qū)塊鏈的天氣預(yù)警系統(tǒng),利用區(qū)塊鏈技術(shù)提高了氣象數(shù)據(jù)的質(zhì)量和安全性,為天氣預(yù)報提供了更可靠的數(shù)據(jù)支撐,主要特點就是更新天氣的時間間隔較短,提高了預(yù)報的精度和效率。具體而言,本系統(tǒng)采用了以下設(shè)計思路:利用智能合約和激勵機(jī)制,鼓勵各個參與者(如氣象局、氣象監(jiān)測站、個人用戶等)在區(qū)塊鏈上發(fā)布和獲取實時的氣象數(shù)據(jù),形成一個去中心化的氣象數(shù)據(jù)網(wǎng)絡(luò);利用區(qū)塊鏈的加密算法和共識機(jī)制,保證了氣象數(shù)據(jù)的安全性和可信性,防止了數(shù)據(jù)被篡改或偽造;利用區(qū)塊鏈的智能合約和事件驅(qū)動特性,實現(xiàn)了基于氣象數(shù)據(jù)的自動化天氣預(yù)警功能,及時向相關(guān)人員和機(jī)構(gòu)發(fā)送預(yù)警信息,提高了災(zāi)害應(yīng)對能力。
基于區(qū)塊鏈的西藏氣候多要素傳感器氣象預(yù)警系統(tǒng)主要包括以下四個功能模塊:多要素傳感器模塊、區(qū)塊鏈上鏈模塊、智能合約模塊和應(yīng)用服務(wù)模塊。系統(tǒng)架構(gòu)如圖2所示。
圖2 多要素傳感器氣象預(yù)警系統(tǒng)架構(gòu)
該模塊主要負(fù)責(zé)收集西藏地區(qū)各類氣候多要素傳感器數(shù)據(jù)[13,14],如圖3 所示,包括溫度、濕度、壓力、風(fēng)速、風(fēng)向、降水、光照、PM2.5、PM10等[15]。氣候多要素傳感器是一種將多種氣象參數(shù)通過一個高集成度結(jié)構(gòu)來實現(xiàn)的傳感器,可實現(xiàn)戶外氣象參數(shù)24小時連續(xù)在線監(jiān)測,通過數(shù)字量通訊接口將各項參數(shù)一次性輸出給用戶[16]。如圖3 所示,本文采用了超聲波多要素氣象傳感器,該傳感器利用超聲波技術(shù)測量風(fēng)速和風(fēng)向,具有無機(jī)械運(yùn)動部件、無需維護(hù)、壽命長、精度高等優(yōu)點。數(shù)據(jù)采集模塊通過無線通信方式將傳感器數(shù)據(jù)發(fā)送到數(shù)據(jù)共享模塊,同時將數(shù)據(jù)備份到本地存儲設(shè)備中,以防止數(shù)據(jù)丟失或損壞。
圖3 多要素傳感器模塊
該模塊負(fù)責(zé)構(gòu)建一個基于聯(lián)盟鏈的區(qū)塊鏈網(wǎng)絡(luò),由各個氣象站點的節(jié)點組成,利用共識機(jī)制來驗證和存儲數(shù)據(jù)上鏈模塊發(fā)送的氣象數(shù)據(jù)交易,并利用密碼學(xué)技術(shù)來保證數(shù)據(jù)的安全性和完整性。同時將數(shù)據(jù)處理模塊輸出的氣象數(shù)據(jù)按照一定的格式和規(guī)則打包成交易,每個交易包含了數(shù)據(jù)的內(nèi)容、來源、時間戳等信息,以及發(fā)送者的數(shù)字簽名,用于驗證數(shù)據(jù)的真實性和合法性。
2.2.1 智能合約編寫。通過編寫和執(zhí)行基于區(qū)塊鏈的智能合約,實現(xiàn)對氣象數(shù)據(jù)的分析和處理,根據(jù)預(yù)設(shè)的天氣預(yù)警規(guī)則,生成天氣預(yù)報和預(yù)警信息,并將其廣播到區(qū)塊鏈網(wǎng)絡(luò)中。從區(qū)塊鏈上鏈模塊寫入的區(qū)塊中讀取氣象數(shù)據(jù),并將其解析成可供智能合約使用的格式和結(jié)構(gòu)。根據(jù)數(shù)據(jù)分析子模塊得到的氣象指標(biāo)和趨勢,利用各種預(yù)測和推理方法,生成各個氣象站點和地區(qū)的天氣預(yù)報信息,如未來幾小時或幾天內(nèi)的天氣狀況、變化趨勢、可能發(fā)生的災(zāi)害等。
2.2.2 Ganache 本地區(qū)塊鏈。Ganache 可以在電腦使用內(nèi)存模擬的以太坊開發(fā)環(huán)境,主要是實現(xiàn)區(qū)塊鏈的私有鏈化。與區(qū)塊鏈公有鏈相比,Ganache 可以在本地搭建一個和公有鏈相同上鏈環(huán)境的區(qū)塊鏈,和公有鏈相比,私有鏈具有無需Gas消費(fèi)、可測試等優(yōu)點。本文主要使用Ganache 私有鏈進(jìn)行測試開發(fā),確保氣候多要素傳感器所采集數(shù)據(jù)上鏈的安全性和可靠性。
該模塊基于區(qū)塊鏈的天氣預(yù)警系統(tǒng)的應(yīng)用部分,它負(fù)責(zé)提供基于區(qū)塊鏈的天氣預(yù)警系統(tǒng)的應(yīng)用服務(wù),包括數(shù)據(jù)查詢、數(shù)據(jù)展示、數(shù)據(jù)統(tǒng)計、數(shù)據(jù)分析、數(shù)據(jù)可視化等功能,為用戶提供友好的界面和交互方式。
基于上述模型設(shè)計,本章主要實現(xiàn)原型系統(tǒng),通過多要素傳感器收集氣象數(shù)據(jù)導(dǎo)入?yún)^(qū)塊鏈IPFS 網(wǎng)絡(luò)中,以實現(xiàn)氣象數(shù)據(jù)的精細(xì)性和可溯源性。搭建的實驗環(huán)境和版本號如表1所示。
表1 系統(tǒng)設(shè)計開發(fā)環(huán)境及使用版本
實驗過程中使用Ganache 部署本地區(qū)塊鏈,使用solidity 語言編寫智能合約代碼。在Remix 上編寫好智能合約代碼并調(diào)試通過后,通過Truffle 在本地編譯、部署智能合約,將合約部署至搭建的開發(fā)框架中。NFT 發(fā)行平臺可通過調(diào)用交易合約進(jìn)行產(chǎn)權(quán)NFT 的鑄造、認(rèn)證和轉(zhuǎn)讓。
如圖4 所示,在Remix 以太坊開發(fā)上使用solidity進(jìn)行智能合約編程,solidity 版本號為0.8.0。使用ERC20協(xié)議將數(shù)據(jù)碼定義為10000*10**18,數(shù)據(jù)獲取后按照ERC20代幣進(jìn)行投票表決,確保了交易的透明性。當(dāng)同意值大于30%時被視為決議通過,數(shù)據(jù)將通過驗證并進(jìn)行區(qū)塊鏈上鏈。
圖4 氣象數(shù)據(jù)上鏈投票智能合約
本文提出的基于區(qū)塊鏈的天氣預(yù)警系統(tǒng),利用了區(qū)塊鏈技術(shù)來提高氣象數(shù)據(jù)的安全性。下面對該系統(tǒng)的安全性進(jìn)行分析。
3.2.1 數(shù)據(jù)傳輸安全性。多要素傳感器通過信道將收集到的氣象數(shù)據(jù)上傳至區(qū)塊鏈網(wǎng)絡(luò)。為保證數(shù)據(jù)傳輸?shù)陌踩?,可以采用對稱密鑰加密算法(如AES)對傳輸過程進(jìn)行加密,同時利用數(shù)字簽名算法(如RSA)保證數(shù)據(jù)的完整性和真實性。具體而言,設(shè)上傳的氣象數(shù)據(jù)為data,傳輸過程中使用的密鑰為k,則加密后的數(shù)據(jù)為Ek(data),數(shù)字簽名為Signsk(data),其中sk 表示發(fā)送方的私鑰。在數(shù)據(jù)接收方收到數(shù)據(jù)后,可以使用相應(yīng)的公鑰進(jìn)行解密和驗簽,即可確保數(shù)據(jù)傳輸?shù)陌踩浴?/p>
3.2.2 數(shù)據(jù)存儲安全性。為保障氣象數(shù)據(jù)的安全性和穩(wěn)定性,本研究采用了IPFS進(jìn)行分布式存儲。具體而言,在將氣象數(shù)據(jù)添加到區(qū)塊鏈上之前,需要先將其存儲在IPFS 網(wǎng)絡(luò)中,并得到一個唯一的哈希值hash。然后將哈希值添加到區(qū)塊鏈上,以確保數(shù)據(jù)的可追溯性和完整性。在使用氣象數(shù)據(jù)時,需要從IPFS網(wǎng)絡(luò)中獲取相應(yīng)的數(shù)據(jù),并通過驗證哈希值來判斷數(shù)據(jù)是否被篡改。由于IPFS 采用了去重和分塊存儲的方式,因此即使部分?jǐn)?shù)據(jù)被篡改或丟失,整個數(shù)據(jù)集仍然可以得到恢復(fù)。
3.2.3 區(qū)塊鏈安全性。區(qū)塊鏈作為分布式賬本技術(shù),具有去中心化、不可篡改、公開透明等特點。在本研究中,區(qū)塊鏈的安全性是保證氣象數(shù)據(jù)安全的關(guān)鍵。為保障區(qū)塊鏈的安全性,需要注意以下幾點:
(1)節(jié)點驗證:在區(qū)塊鏈網(wǎng)絡(luò)中,每個節(jié)點都需要對交易進(jìn)行驗證和記錄,因此需要保證節(jié)點的可靠性和安全性,防止出現(xiàn)僵尸節(jié)點、惡意節(jié)點等攻擊。
(2)共識機(jī)制:共識機(jī)制是區(qū)塊鏈安全的核心,主要規(guī)定了如何達(dá)成區(qū)塊鏈上的共識。在本研究中,可以采用類似比特幣的工作量證明機(jī)制,確保區(qū)塊鏈上的數(shù)據(jù)不能被篡改。
(3)智能合約安全:智能合約是區(qū)塊鏈上的自動執(zhí)行程序,一旦被攻擊,可能會導(dǎo)致數(shù)據(jù)泄露、資產(chǎn)損失等風(fēng)險。因此,在本研究中編寫智能合約時,需要注意安全性問題,例如代碼審計、漏洞修復(fù)等。
本文基于區(qū)塊鏈技術(shù),建立了一個天氣預(yù)警系統(tǒng),通過多要素傳感器收集氣象數(shù)據(jù)并利用IPFS進(jìn)行分布式存儲,解決了西藏地區(qū)氣象數(shù)據(jù)質(zhì)量和安全性等問題。該系統(tǒng)可以為天氣預(yù)報提供更可靠的數(shù)據(jù)支持,有望在提高西藏地區(qū)氣象預(yù)測準(zhǔn)確性、保障群眾生命財產(chǎn)安全等方面發(fā)揮重要作用。