阙培斯 高飞 曾一洪
西藏大学信息科学技术学院,西藏 拉萨 850032
西藏高原复杂多样的地形地貌,形成了独特的高原气候。除了呈现出西北严寒干燥、东南温暖湿润的总趋向,还存在着多种多样的区域气候和明显的垂直气候带。谚语“十里不同天”“一天有四季”等反映了这些特点[1]。与中国大部分地区相比,西藏的空气稀薄、日照充足、气温较低、降水较少。在拉萨、昌都、日喀则等地,年温差为18~20 摄氏度;而在阿里地区海拔5000 米以上的地方,8 月白天气温为10 摄氏度以上,而夜间气温降至摄氏零度以下。西藏自治区各地降水的季节分配不均,干季和雨季的分界非常明显,而且多夜雨[2]。年降水量自东南低地的5000 毫米,逐渐向西北递减到50 毫米。每年10月至翌年4 月,降水量仅占全年的10%至20%;从5月至9 月,雨量非常集中,一般占全年降水量的90%左右[3]。
因此,西藏的气候特点可以从以下几个方面简述:(1)西藏气候总的特点是日照时间长,辐射强烈;气温较低,温差大;干湿分明,多夜雨;冬春干燥,多大风;气压低,氧气含量少。(2)西藏气候呈现出由东南向西北的带状分布,即:热带—亚热带—温带—亚寒带—寒带;湿润—半湿润—半干旱—干旱。(3)西藏气候受地形影响,还有多种多样的区域气候及明显的垂直气候带[4]。
目前基于西藏天气采集存在设备分布不均衡、数据集中存储困难、自动化观测技术不足以及数据难以溯源等问题。本研究提出了一个基于区块链的天气预警系统,利用区块链技术提高了气象数据的准确性和安全性,为天气预报提供了更可靠的数据支撑,主要特点就是更新天气的时间间隔较短,提高了预报的精度和效率。
区块链是一种利用块链式数据结构来验证与存储数据[5]、分布式节点共识算法来生成和更新数据、密码学方式保证数据传输和访问的安全,以及自动化脚本代码组成的智能合约来编程和操作数据,是区块链这种全新的分布式基础架构与计算范式所采用的方法[6]。根据图1所示,区块链技术具有去中心化、不可篡改、公开透明、集体维护等特点,能够为金融、物联网、公益慈善、医疗健康、供应链等领域提供更高效、更安全、更可信的数据服务[7]。
图1 区块链数据结构
区块链技术的核心关键技术包括以下几个方面:
1.1.1 共识机制。在区块链系统中,没有一个中心化的机构,因此需要共识机制为各方节点提供处理数据的指导和规则,并按照严格的共识进行数据交互。常用的共识机制有PoW、PoS、DPoS、PBFT、PAXOS、DPOP等[8]。
1.1.2 密码学技术。密码学技术是区块链的核心技术之一,在现代的区块链应用中采用了许多经典的现代密码学算法,如哈希算法、对称加密、非对称加密、数字签名等。
1.1.3 分布式存储。分布式存储是指区块链是一种点对点网络上的分布式账本,每个参与的节点都将独立完整地存储写入区块数据信息。分布式存储具有两个优势:一是每个节点都备份数据信息,避免单点故障导致数据丢失;二是每个节点上的数据都独立存储,有效避免恶意篡改历史数据。
1.1.4 智能合约。智能合约是指存储在区块链系统上的程序,这些程序将在符合预先确定的条件时自动运行。智能合约具有透明可信、自动执行、强制履约的优点,可以实现各种复杂的业务逻辑和交易规则。
以太坊是一种基于区块链的开源平台[9],旨在支持智能合约和去中心化应用(DApp)的开发和运行。以太坊采用自己的编程语言Solidity 和虚拟机EVM,以及其自有的加密货币Ether。目前,以太坊使用工作量证明(PoW)共识机制,但计划未来将转向权益证明(PoS)共识机制[10]。
智能合约是一种基于区块链的自执行的合约代码,它可以定义和执行合约双方之间的协议。智能合约可以实现逻辑判断、数据存储、事件触发等功能,以实现各种复杂的业务逻辑。[11]智能合约在部署到区块链上后,就不可修改或删除,只能按照预设的规则执行。智能合约使用Gas 作为消耗资源,当以太坊节点执行一笔交易所需的计算步骤越多、越复杂,那么这笔交易消耗的Gas 就越多。Gas 是以太坊网络中交易费用的衡量标准,用户需要为每笔交易支付一定数量的Gas费用,以激励节点执行交易[12]。
目前基于西藏地区气象复杂多变及气象站分布稀少、所采集的气象数据缺失率高、信息区域间隔大等问题。为了解决这些问题,本研究提出了一个基于区块链的天气预警系统,利用区块链技术提高了气象数据的质量和安全性,为天气预报提供了更可靠的数据支撑,主要特点就是更新天气的时间间隔较短,提高了预报的精度和效率。具体而言,本系统采用了以下设计思路:利用智能合约和激励机制,鼓励各个参与者(如气象局、气象监测站、个人用户等)在区块链上发布和获取实时的气象数据,形成一个去中心化的气象数据网络;利用区块链的加密算法和共识机制,保证了气象数据的安全性和可信性,防止了数据被篡改或伪造;利用区块链的智能合约和事件驱动特性,实现了基于气象数据的自动化天气预警功能,及时向相关人员和机构发送预警信息,提高了灾害应对能力。
基于区块链的西藏气候多要素传感器气象预警系统主要包括以下四个功能模块:多要素传感器模块、区块链上链模块、智能合约模块和应用服务模块。系统架构如图2所示。
图2 多要素传感器气象预警系统架构
该模块主要负责收集西藏地区各类气候多要素传感器数据[13,14],如图3 所示,包括温度、湿度、压力、风速、风向、降水、光照、PM2.5、PM10等[15]。气候多要素传感器是一种将多种气象参数通过一个高集成度结构来实现的传感器,可实现户外气象参数24小时连续在线监测,通过数字量通讯接口将各项参数一次性输出给用户[16]。如图3 所示,本文采用了超声波多要素气象传感器,该传感器利用超声波技术测量风速和风向,具有无机械运动部件、无需维护、寿命长、精度高等优点。数据采集模块通过无线通信方式将传感器数据发送到数据共享模块,同时将数据备份到本地存储设备中,以防止数据丢失或损坏。
图3 多要素传感器模块
该模块负责构建一个基于联盟链的区块链网络,由各个气象站点的节点组成,利用共识机制来验证和存储数据上链模块发送的气象数据交易,并利用密码学技术来保证数据的安全性和完整性。同时将数据处理模块输出的气象数据按照一定的格式和规则打包成交易,每个交易包含了数据的内容、来源、时间戳等信息,以及发送者的数字签名,用于验证数据的真实性和合法性。
2.2.1 智能合约编写。通过编写和执行基于区块链的智能合约,实现对气象数据的分析和处理,根据预设的天气预警规则,生成天气预报和预警信息,并将其广播到区块链网络中。从区块链上链模块写入的区块中读取气象数据,并将其解析成可供智能合约使用的格式和结构。根据数据分析子模块得到的气象指标和趋势,利用各种预测和推理方法,生成各个气象站点和地区的天气预报信息,如未来几小时或几天内的天气状况、变化趋势、可能发生的灾害等。
2.2.2 Ganache 本地区块链。Ganache 可以在电脑使用内存模拟的以太坊开发环境,主要是实现区块链的私有链化。与区块链公有链相比,Ganache 可以在本地搭建一个和公有链相同上链环境的区块链,和公有链相比,私有链具有无需Gas消费、可测试等优点。本文主要使用Ganache 私有链进行测试开发,确保气候多要素传感器所采集数据上链的安全性和可靠性。
该模块基于区块链的天气预警系统的应用部分,它负责提供基于区块链的天气预警系统的应用服务,包括数据查询、数据展示、数据统计、数据分析、数据可视化等功能,为用户提供友好的界面和交互方式。
基于上述模型设计,本章主要实现原型系统,通过多要素传感器收集气象数据导入区块链IPFS 网络中,以实现气象数据的精细性和可溯源性。搭建的实验环境和版本号如表1所示。
表1 系统设计开发环境及使用版本
实验过程中使用Ganache 部署本地区块链,使用solidity 语言编写智能合约代码。在Remix 上编写好智能合约代码并调试通过后,通过Truffle 在本地编译、部署智能合约,将合约部署至搭建的开发框架中。NFT 发行平台可通过调用交易合约进行产权NFT 的铸造、认证和转让。
如图4 所示,在Remix 以太坊开发上使用solidity进行智能合约编程,solidity 版本号为0.8.0。使用ERC20协议将数据码定义为10000*10**18,数据获取后按照ERC20代币进行投票表决,确保了交易的透明性。当同意值大于30%时被视为决议通过,数据将通过验证并进行区块链上链。
图4 气象数据上链投票智能合约
本文提出的基于区块链的天气预警系统,利用了区块链技术来提高气象数据的安全性。下面对该系统的安全性进行分析。
3.2.1 数据传输安全性。多要素传感器通过信道将收集到的气象数据上传至区块链网络。为保证数据传输的安全性,可以采用对称密钥加密算法(如AES)对传输过程进行加密,同时利用数字签名算法(如RSA)保证数据的完整性和真实性。具体而言,设上传的气象数据为data,传输过程中使用的密钥为k,则加密后的数据为Ek(data),数字签名为Signsk(data),其中sk 表示发送方的私钥。在数据接收方收到数据后,可以使用相应的公钥进行解密和验签,即可确保数据传输的安全性。
3.2.2 数据存储安全性。为保障气象数据的安全性和稳定性,本研究采用了IPFS进行分布式存储。具体而言,在将气象数据添加到区块链上之前,需要先将其存储在IPFS 网络中,并得到一个唯一的哈希值hash。然后将哈希值添加到区块链上,以确保数据的可追溯性和完整性。在使用气象数据时,需要从IPFS网络中获取相应的数据,并通过验证哈希值来判断数据是否被篡改。由于IPFS 采用了去重和分块存储的方式,因此即使部分数据被篡改或丢失,整个数据集仍然可以得到恢复。
3.2.3 区块链安全性。区块链作为分布式账本技术,具有去中心化、不可篡改、公开透明等特点。在本研究中,区块链的安全性是保证气象数据安全的关键。为保障区块链的安全性,需要注意以下几点:
(1)节点验证:在区块链网络中,每个节点都需要对交易进行验证和记录,因此需要保证节点的可靠性和安全性,防止出现僵尸节点、恶意节点等攻击。
(2)共识机制:共识机制是区块链安全的核心,主要规定了如何达成区块链上的共识。在本研究中,可以采用类似比特币的工作量证明机制,确保区块链上的数据不能被篡改。
(3)智能合约安全:智能合约是区块链上的自动执行程序,一旦被攻击,可能会导致数据泄露、资产损失等风险。因此,在本研究中编写智能合约时,需要注意安全性问题,例如代码审计、漏洞修复等。
本文基于区块链技术,建立了一个天气预警系统,通过多要素传感器收集气象数据并利用IPFS进行分布式存储,解决了西藏地区气象数据质量和安全性等问题。该系统可以为天气预报提供更可靠的数据支持,有望在提高西藏地区气象预测准确性、保障群众生命财产安全等方面发挥重要作用。