食品如何溯源?来看看基于Fabric的空间区块链应用
本文刊登于2020年11月第70期《超图通讯》
2016年1月,第46届世界经济论坛达沃斯年会将区块链技术与人工智能、自动驾驶等一并列入“第四次工业革命”,区块链技术成为未来信息化建设的重要推动力之一。2019年10月24日,中共中央政治局强调区块链技术的集成应用在新的技术革新和产业变革中起着非常重要的作用,数字金融、物联网、供应链管理等多个领域已将区块链技术作为一项重点研究方向[1-3]。地理信息行业也开始在新一波的科技浪潮下,探索“区块链+”所能带来的新突破。
空间数据是地理信息的表达方式,数据在地理信息中的重要性不言而喻。随着海量空间数据的不断产生,在数据采集、分析和生产的环节中,一般采用集中式数据库或分布式存储管理。其中,集中式存储虽然读写性能高,但有发生故障导致业务瘫痪的风险,数据还有被恶意修改的可能,且这些传统的存储方式对数据变更历史的追溯较为困难。
超图研究院结合区块链特性和地理信息行业所面临的问题,形成了一套贴合空间信息领域的区块链应用体系,旨在打造一个安全、可信的地理信息系统,核心价值在于面向空间信息数据的防篡改、可信任和可追溯。
在2020年发布的SuperMap GIS 10i(2020)版本中,超图将区块链技术与GIS融合,为空间数据管理提供安全可信、可追溯的技术保障。区块链去中心化、不可篡改以及数据加密等特性,将助力应急、测绘、物联网等多个领域,形成一条信息和价值共享的链条。同时,GIS也为区块链技术注入新的活力,区块链技术融合空间信息,在数据表达和应用上增加了空间意义。
结合SuperMap GIS产品体系特点和应用需求,超图的空间区块链定位于联盟链。联盟链具有多中心化、授权管理机制和效率成本优化的特点,目前常见的联盟链包括:Hyperledger Fabric、摩根大通 Quorum、FISCO BCOS、微软 COCO 等。
Hyperledger Fabric,简称Fabric,是Linux基金会发起创建的开源区块链分布式账本,采用模块化设计,是一个需要许可才能加入的平台,支持在通用编程语言中创建智能合约,具备扩展性好、流行度高、保密性强、开源可商用的优势[4]。本文中的空间区块链就是基于Hyperleger Fabric框架进行开发。
技术设计
空间区块链的核心是为区块链赋予GIS能力,使空间数据具备区块链的特性。超图的空间区块链相关产品及主要功能如下:
• 空间区块链组件产品(SuperMap iObjects for Blockchain),提供空间区块链全部功能;
• GIS桌面产品(SuperMap iDesktopX),提供空间区块链数据可视化;
• GIS服务器产品(SuperMap iServer),提供空间区块链数据服务和历史追溯服务;
• GIS运维管理产品(SuperMap iManager),提供空间区块链的运维管理。
空间区块链技术架构图
空间区块链通过封装Fabric接口,实现空间数据交易的发起、验证、账本状态更新和一致性等相关功能,核心设计主要体现在数据存储和链码。
空间数据,特别是线和面类型的数据,数据量通常比较大。若空间数据全部上链存储,区块链平台本身无法高效支持,且数据存储成本巨大,这种方案在实施上不可行。因此超图采用“链内+IPFS链外扩展”的存储方案,根据数据大小,将空间数据的上链方式分为直接上链和哈希上链,系统设置数据大小的阈值,当小于阈值时,则直接上链存储,当大于阈值时,数据先写入IPFS,返回数据的哈希值再存入链内。
Fabric区块链网络与IPFS系统的交互模式
在空间数据的组织特性上,区块链框架中实现了超图空间数据模型,支持点、线、面、属性、模型等数据集,对空间数据、属性数据、文件型数据进行管理,使区块链对空间数据的管理颗粒度更细。
在空间区块链的读写性能上,海量空间数据读取主要通过缓存机制,来提高数据的读取速度,采用本地地理数据库GeoPackage缓存数据,其读取性能与udb性能基本持平。对链上空间要素建立GeoHash空间索引,对单个要素的点选查询速度大约30ms,空间要素写入链上的压测效率大约为1700tps。
空间区块链上通过执行链码完成操作,Fabric框架下的链码,是一系列智能合约的集合,用于业务规则的程序自动化[4-5]。超图根据空间数据的几何和属性特性,设计了空间链码,实现了空间数据查询、编辑和历史追溯等功能。
应用案例
本文选择食品运输应用场景,利用空间区块链的的溯源追踪功能,结合地理位置,进行食品运输站点和路径的追踪。对比于传统食品溯源系统多采用集中式数据库来存储溯源信息,存在中心机构易被攻击、信息泄露、数据易被篡改等问题,采用空间区块链技术的食品溯源系统具备去中心化、不可篡改的特性,能够保证食品信息的可信认和可溯源[6]。
系统中采用两个数据集记录食品运输信息,一个物流数据集,记录物流信息,包括:物流编号、运输起点、当前站点、运输终点、抵达时间、食品类型、食品状态等,数据表结构如下图;一个路网数据集,记录运输道路几何,由于数据量较大,存储在外链。
食品物流数据表结构
食品溯源系统以部分运输站点为记账节点,记录食品达到站点时当前状态下的物流信息,所有运输站点的信息将每隔一段时间被记账节点打包生成一个区块存储上链。每个区块由两个部分组成,区块头和区块数据。区块头为上一区块所有数据的哈希值,若上一区块发生任何篡改,哈希值将发生明显变化;区块数据记录区块生成的时间戳、一定时间范围内的物流数据生成的Merkle树。具体的区块链数据结构如下图所示。
食品溯源空间区块链数据结构
食品运输路径溯源效果
上图为模拟一批食品运输过程上链和溯源的流程:食品自运输起点登记一条物流信息,经过每个中转站则更新一次物流信息,这些操作记录均被打包记录在区块中;对这条物流信息进行追溯,则以物流编号TransID为查询Key值,查询链上此Key值的所有历史记录,并按时间先后排序,得到溯源信息。
文/大数据与AI研发中心 金虹杉 李文龙
欢迎转载~