基于主从多链的水产品区块链溯源信息管理系统设计与实现

2021-07-07 10:16李梦琪杨信廷徐大明于华竟孙传恒
渔业现代化 2021年3期
关键词:主从水产品架构

李梦琪,杨信廷,徐大明,于华竟,孙传恒

(1 上海海洋大学信息学院,上海 201306; 2 国家农业信息化工程技术研究中心,北京 100097; 3 农产品质量安全追溯技术及应用国家工程实验室,北京 100097)

随着国家经济快速发展,国民生活水平逐步提升,饮食文化日益多样化,食品安全事件因此也受到公众的高度关注。中国是水产品生产和消费大国,2020年中国水产品总量已达6 545万t,占全球水产品总量的1/3以上[1-2]。水产品具有营养丰富,脂肪含量低,味道鲜美等特点,深受人们喜爱。然而,水产品在储运、加工期间易氧化腐蚀,极易发生食品安全事故,极大地危害到了广大人民的健康[3-4]。追溯系统作为国际公认的质量管理手段,成为国内外研究热点[5-6]。传统的水产品供应链溯源系统大多采用条形码技术、无线射频识别(Radio Frequency Identification,RFID)等标识技术与物联网技术相结合对溯源信息进行追踪,并采用中心化数据库存储溯源信息[7-8]。由于传统溯源系统采用中心化管理,水产品的养殖厂家、加工厂家、物流方、销售公司、政府监管部门等终端用户之间都是彼此隔离的,导致溯源信息透明度低、政府监管力度低、数据易篡改,因此数据的真实可靠性低,在食品安全事故发生时难以第一时间定位到问题环节[9-10]。

区块链是一种分布式账本技术[11],具有去中心化、不可篡改、时序数据、可编程和安全可信等特点[12-14]。针对传统追溯系统存在数据易篡改、环节不透明、中心化管理等问题,国内外大量研究者对区块链技术在追溯方面的应用进行了探索研究。Salah等[15]提出了一种利用以太坊区块链和智能合约执行业务交易的方法用于大豆追溯,并将区块链技术与星际文件系统(InterPlanetary File System,IPFS)结合。董云峰等[16]基于区块链技术设计了“链上+云数据库”的粮食食品全供应链可信追溯原型系统,刘家稷等[17]设计了使用双区块链与IPFS的防伪溯源系统。目前已有大量学者结合实际应用构建了基于区块链的追溯系统,但大部分文章仅解决了区块链存储负载问题,并未解决供应链过程中隐私数据安全性问题,农业与区块链技术整合的研究仍处于起步阶段,区块链技术更广泛的应用面临各种障碍和挑战。

本研究首先对水产品供应链环节及关键信息进行了分析,根据水产品实际应用情况设计了主从多链存储模型,并结合区块链技术构建了基于区块链接的水产品溯源信息管理模型。然后对系统进行了总体架构设计与实现,并将多链架构与单链架构进行了对比测试。

1 基于主从多链的水产品溯源信息管理模型

1.1 水产品供应链环节及关键信息分析

水产品供应链过程中涉及参与主体众多,按业务关系可划分为供应链内部主体和外部主体,内部主体包括水产养殖户、加工企业、冷链物流企业、销售企业等,外部主体包括消费者、监管机构、卫生检疫机构等[18-19]。同时供应链环节中涉及的数据类型多样化,包含公开信息和隐私信息[20]。公开信息为展示给消费者看的信息,包含产品的基本信息、各环节具体过程信息、环境信息、工人信息、质检结果等数据。隐私信息为企业内部共享的隐私数据,包括产品具体数量、成本售价、仓储数量以及产品具体生产销售的交易信息等。为保证交易信息的隐私安全性且解决追溯信息量大等问题,本研究采用主从多链存储架构存储数据,分别为供应链环节中的每个企业构建一条从链存放本企业溯源数据,主链存放从链索引信息以及区块哈希值等数据。本研究将水产品供应链分为养殖、加工、储运、销售等环节。养殖环节指对水产品进行育苗、放养、投喂、捕捞和收获等操作,记录鱼苗信息、养殖过程信息、环境信息、交易信息等关键信息。加工环节包括对收获的水产品进行充气、装袋或加工成熟食等操作并记录产品信息、加工过程、加工环境、交易信息等关键信息。储运环节将收获后的产品及加工后的成品从出发地运输到目的地,记录其具体仓储信息及物流信息等。销售环节指对产品进行售卖,记录相关销售信息与交易信息等关键信息,如表1所示。

表1 水产品供应链环节关键信息

1.2 主从多链存储模型

现有区块链技术在单链架构下每个节点都需要存储全网所有信息,存在容量、隐私和隔离性上的瓶颈,同时受限于网络中单节点的性能极限,因此单链架构无法满足联盟链环境对性能、容量等需求[21-22]。以太坊2.0的分片方案和Hyperledger Fabric 1.0的多通道方案使得全网由原来的单链架构扩展到了多链架构,在多链上可并发进行交易处理,并且单个节点只存储本通道的交易记录,有效减轻了节点的存储压力[23]。为实现各企业隐私信息的保护功能,解决单链架构的负载问题,本研究基于Hyperledger Fabric提出了一种主从多链式的存储模型管理水产品供应链过程中的数据。构建一条主链与多条从链架构,主链与从链之间的区块相互锚定,从链中的区块用于存放节点上传的产品详细溯源信息,不同企业的溯源信息与交易信息存储在不同的从链中,将区块链应用功能与企业隐私信息隔离,解决隐私数据安全问题。同时主链与从链之间通过基于哈希值的方式互相锚定链接,增强了区块链数据的隐私性、不可篡改性以及可监管性,减少了节点的数据冗余量,进一步提高了系统的共识速度。

本设计的主从多链存储模型如图1所示,各企业节点通过CA(Certificate Authority)认证后加入区块链网络中,每一条链均是有区块链网络中部分节点拥有的独立的通信通道,也称作多通道存储模型[24]。在通道中发送的交易信息只有该通道的成员节点可见,而通道外的组织成员无法访问链内的账本数据,实现节点账本数据隔离的需求。一个通道内包含多个区块链节点,这些节点在区块链网络中发起交易时,由同一个通道内的节点进行背书验证和记账,共同负责维护和更新通道内的账本数据。联盟链网络内的节点可以动态申请加入某一个通道内,一个节点可以加入多个通道,加入通道的申请由系统链码处理,在身份认证和权限检查通过后,完成初始化工作即可与通道内的节点进行通信。当节点上传数据到从链时,每个数据按照Merkle树结构存储在从链区块体中,将最后的根哈希值存入到从链区块头,从链采用实用拜占庭容错PBFT共识算法对区块数据进行共识。同时,智能合约将每条数据的从链ID、从链中数据的Key值、区块哈希值以及产品批次号传入到主链上,主链节点采用实用拜占庭容错PBFT共识算法对区块进行共识后将区块加入到链中。用户查询溯源信息时,系统首先调用智能合约利用批次号从主链上查找到相关从链信息,再使用智能合约读取从链中详细溯源信息,为提高查询速率,主链和从链中均使用CouchDB数据库索引查询方式进行查询。

图1 主从多链存储模型

1.3 基于主从多链的水产品溯源信息管理模型

利用区块链技术去中心化、不可篡改和可编程性的特点,结合水产品养殖、加工、储运、销售、监管等业务,建立供应链环节对应的区块链节点,采用主从多链式的存储模型管理溯源数据,构建水产品溯源信息管理模型,实现对水产品在供应链中的全程监控。图2展示了基于区块链的水产品溯源信息管理模型,该模型由四个部分组成:数据采集、追溯系统、区块链网络和数据查询。数据采集是在供应链环节部署各种物联网设备(温湿度传感器、水位传感器、氨传感器、距离传感器等)用于实时监测环境变化以及位置信息。为控制上链数据量和保证环境数据的有效性,追溯系统对物联网设备收集到的数据进行处理后分类为隐私信息和公开信息后进行上传,并通过相应的智能合约上传到从链中。上传的数据在从链网络中进行广播,链上共识节点将数据打包成区块发送给各节点,各节点通过验证后将数据存入到账本中。同时共识节点通过智能合约将此从链ID、从链中数据的Key值、区块哈希值以及产品批次号传入到主链上,使用哈希锚定的方式将主链与从链相连接。供应链中所有企业共同维护主链,各企业的所有部门以及相关监管机构等共同维护从链,主链提供溯源信息查询功能,从链存储产品的原始溯源信息。消费者通过手持设备扫描产品二维码能查询到产品的溯源公开信息,隐私数据仅从链中节点能查看。

图2 基于区块链的水产品溯源信息管理模型

2 基于多链的溯源信息管理原型系统设计与实现

2.1 系统总体框架设计

水产品供应链全环节涉及主体众多,增加了水产品信息追溯的难度。区块链技术的优势在于为溯源系统提供良好的数据追溯方案,并不具备从源头上防止虚假信息写入区块链的功能,故引入物联网设备动态跟踪水产品状态,为水产品信息的客观性、真实性创造条件[25]。以区块链技术层次结构为基础,结合水产品供应链过程设计系统的总体框架,如图3所示。根据功能不同划分为数据采集层、存储层、网络层、合约层、应用层。

图3 系统总体架构图

数据采集层是在供应链各环节部署传感器、物联网自动控制终端设备、摄像头等多种传感设备并结合人工记录的方式采集水产品在养殖、加工、物流、销售环节的产品数据和环境数据。存储层是将供应链产生的数据生成数据区块,建立分布式账本,通过非对称加密与时间戳的方式将数据进行加密,通过区块的哈希值串联成链式结构,保证数据的不可篡改。网络层用于实现区块信息在主链和从链中通过P2P网络传播、共识和验证。合约层主要负责部署智能合约与追溯信息调用,通过可编程的智能合约对数据进行判断和操作。应用层通过可视化页面向平台用户提供信息交互服务,是企业用户、监管机构和消费者的前端入口。向企业用户提供模块管理和账本维护服务,为监管部门提供数据实时监控服务,同时为消费者提供溯源信息查询服务。

2.2 智能合约设计

智能合约(Smart Contracts)是由计算机科学家Nick Szabo提出并定义为“一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议”[26]。狭义上的智能合约可看作是运行在分布式账本上预置规则,一段由事件驱动的、具有状态的、条件响应的完成信息交换、价值转移的计算机程序,具有去中心化、可编程、自动执行等特点[27-28]。广义的智能合约则是无需中介、自我验证、自动执行合约条款的计算机交易协议[29]。水产品供应链环节众多,出现质量安全事故时,很难从找到具体原因,因此可以通过智能合约实现对供应链各个环节进行智能监控,做好源头防范,避免质量安全事故的发生。如图4所示,以黄山泉水鱼为例,本设计在智能合约上根据国家环境保护总局发布的GB 11607—1989《渔业水质标准》设定了相关算法对上传的数据进行判定[30],若上传的数据不符合规定,则会及时通知企业对环境进行及时整改。若上传的数据符合规定,则将数据上传到从链中。

图4 智能合约流程图

2.3 系统实现

2.3.1 开发环境

为了解决区块链参与节点的权限等问题,结合溯源过程涉及多环节、多参与者的特点,采用联盟链形式的区块链进行架构。溯源信息管理系统包括两个部分,以Hyperledger Fabric为底层架构的区块链网络以及使用C#语言开发的追溯系统。区块链网络部署在Ubuntu Linux 16.04操作系统上,基于多个Docker容器搭建运行环境,由于CouchDB支持账本数据富查询,因此选择CouchDB作为区块链底层数据库。本研究使用Go语言编写智能合约,通过Docker容器部署到Fabric网络通道中所有的对等节点。该区块链网络使用了 Fabric-node-sdk 模块给开发者提供了可插拔 API、用户客户端以及 Fabric区块链网络组件。

本系统将养殖、加工、储运、销售环节涉及的企业以及监管部门作为节点加入到主链,每个企业内部相关部门以及相关监管部门根据需求构建从链,每条从链由企业内部的2个部门以及1个监管部门组成,设计了4条从链。如图5所示,区块链平台在Vmware虚拟机下采用多机多节点的部署方式,将水产品供应链上的养殖企业、加工企业、储运企业、销售企业以及监管部门作为5个组织加入到区块链中,每个组织含有2个节点。节点通过通道连接到区块链网络中时,通道根据配置的策略决定节点的权限。

图5 区块链网络环境部署图

2.3.2 案例分析

本系统目前应用于黄山休宁县泉水鱼追溯,黄山泉水鱼是生活在安徽省黄山市新安江源头山涧泉水之中的名贵淡水鱼,是中国重要农业文化遗产。在实际应用中,系统根据鱼的种类、养殖地点等信息产生相应的生产批次号,当鱼苗达到出售标准,便打捞起来装入包装袋,并在包装袋中装入适量的泉水以及充入适量氧气进行密封存储。鱼的加工信息以及生产批次号通过追溯系统为每一条鱼生成唯一的二维码,将二维码制作成标签粘贴在包装袋上。仓储、物流人员可以通过手持设备扫描追溯码将相关数据输入到系统中。消费者通过智能终端设备扫描只能查看产品的溯源信息,无法看到产品的隐私数据信息。图6a为黄山鱼标签,消费者可使用手持设备微信扫一扫功能即可查看产品的溯源信息。图6b为黄山鱼包装完成并贴上二维码出售时的成品展示。图6c为消费者扫描二维码后展示的产品溯源信息,消费者可以了解所购买产品的养殖、加工及质检信息等。图6d为当前产品加工信息在区块链主链网络中的存储状态。

图6 溯源信息管理系统页面

2.3.3 系统测试

在系统性能方面,本研究提出的溯源信息管理系统保护了企业的隐私数据安全,并减轻了区块链单链架构的存储负载压力。本研究中同一个通道的节点可以通过智能合约查看此通道中的所有信息包括追溯信息和隐私信息,而其他通道中的节点无法直接访问,需授予权限后通过调用相关接口查看信息,仅能查看到追溯数据,无法查看到隐私信息。同时本研究对在相同运行环境下的单链架构和主从多链架构的溯源数据查询时间进行了测试对比,通过部署一条含有5节点的单链结构的区块链网络和一条包含5个节点的主链以及4条各包含3个节点的从链组成多链结构的区块链网络,统计在数据总量为200、400、600、800、1 000、1 200、1 400条的情况下的同时查询100条数据的时间。由于多链架构下查询数据时需要先从主链上查找到从链信息,再在从链中找到具体追溯信息,故在总量相同时多链架构的查询相同数据的时间比单链架构的查询时间长,测试结果如图7所示。

图7 单链架构与多链架构查询对比图

3 讨论

3.1 架构分析

在架构方面,本研究提出了主从多链存储架构,采用一条主链与多条从链的分层架构进行溯源数据的存储与查询。主链由供应链环节中的养殖、加工、储运、销售环节以及监管机构组成,每条从链分别由供应链环节的每个企业内部部门以及相关监管机构组成。并基于Hyperledger Fabric支持的多通道实现了基于主从多链的水产品区块链溯源信息管理系统,每个企业仅能查看到本企业的交易数据等隐私信息,实现了水产品供应链环节的养殖、加工、储运、销售企业的交易数据隐私安全保护。本研究使用多链架构提高了溯源数据的隐私保护性,并使用分层架构减轻了单链架构的负载压力,解决了现有区块链溯源系统负载压力大、数据全部共享问题。

3.2 智能合约分析

在智能合约方面,本研究通过设计链上管控智能合约实现对供应链环节进行实时监控。在养殖环节,当水质条件满足渔业水质标准设定的0 ℃≤水温≤20 ℃、6.5≤pH≤8.5以及硫化物≤0.2 mg/L等条件时,溯源数据才被允许上传,否则将通知相关企业进行水质改善。由于水产品受环境温度影响较大,通过在加工、储运、销售环节部署智能合约对企业环境进行智能监控,当环境温度不达标时,智能合约会自动执行通知相关企业。本研究通过部署智能合约实现了从源头上防范食品安全事故的发生。

3.3 性能分析

在性能方面,本研究通过对主从多链存储架构与单链存储架构在隐私保护安全性与查询速率两方面进行了测试对比,设计不同通道的节点对产品数据进行查询,证明主从多链存储架构的隐私安全性。测试结果表明,在主从多链架构中不同通道节点查询权限不同,同一个通道的所有节点可查看本通道的所有产品信息,包括溯源信息与隐私信息,而外通道的节点只能查看到产品的溯源信息。在单链架构中,所有节点均在一个通道,因此每个节点均可查看全网信息,无法保证数据的隐私安全性。通过部署相同配置的测试环境对单链架构与主从多链架构进行了查询速率对比,测试在数据总量为200、400、600、800、1 000、1 200、1 400条的情况下的两种架构同时查询100条数据的时间。测试结果表明,当区块链网络中存储的数据总量小于200条时,多链与单链的查询时间与数据总量均呈线性相关;当数据总量超过250条时,多链与单链的查询速率稳定,满足实际生产需求。

4 结论

面向多源异构超高维追溯大数据治理,本研究应用Hyperledger Fabric多通道方案设计了主从多链存储模型,并以此构建了基于区块链的水产品溯源信息管理系统。通过哈希值以及从链ID等信息将主从链进行锚定,进一步提升了数据存储的安全性和防篡改,保证了产品溯源信息的真实可靠性,并使用多链并发存储减轻了单链负载压力。本研究设计的基于主从多链的水产品区块链溯源信息管理系统对于提高联盟链追溯系统的理论研究和实用水平价值明显,但在查询效率上仍存在一些不足。在下一步研究中,将对链上数据查询方式进行改进以减少查询时长,并考虑结合IPFS存储从链数据,减轻区块链网络中的存储压力。

猜你喜欢
主从水产品架构
冰岛2020年水产品捕捞量102.1万吨
多数水产品价格小幅下跌
功能架构在电子电气架构开发中的应用和实践
儿童气候教育者让成人开眼看气候
鸟类世界的爱因斯坦
基于B/S架构的图书管理系统探究
构建富有活力和效率的社会治理架构
旋转位似的性质与主从联动法
湖北省2016年9月水产品塘边价格
VoLTE时代智能网架构演进研究