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