融合区块链的农产品溯源系统设计

2023-12-06 12:27谈和义顾永跟吴小红
湖州师范学院学报 2023年10期
关键词:共识区块环节

谈和义,顾永跟,吴小红,陶 杰

(湖州师范学院 信息工程学院,浙江 湖州 313000)

0 引 言

近年来,农产品食品安全问题在我国时有发生,并对消费者的身心健康产生了严重的影响[1].由于农产品供应链的各方信息流通不畅,存在“信息孤岛”,因此消费者难以获取农产品相关的准确信息.当发生食品安全事故时,既难以判定事故责任方,又难以及时召回问题食品.这进一步增加了消费者对食品安全信息获取的需求.

农产品溯源体系是一种农产品信息保障体系,在农产品的生产过程中,用于记录和存储农产品供、产、销等各种信息.溯源体系不仅能为消费者提供农产品供应链的信息,还能够精确记录问题发生的环节和及时确定事故责任方,从而减小损失.区块链作为一种去中心化的分布式账本,拥有分布式的存储结构、一致性的共识算法、公开透明的信息记录和不可篡改的技术特点.将区块链技术与农产品溯源体系结合,通过物联网设备采集生产周期的数据并实时上链,数据不经过第三方,不仅能保证农产品溯源信息的真实可信[2-4],还能为农产品生产者、消费者和政府监管部门提供真实可靠的溯源数据,实现农产品溯源的有效管控.

1 相关技术

1.1 区块链技术

区块链是比特币系统提出的新技术,是一种基于分布式网络技术、密码学技术、时间戳技术等电子现金系统的构架理念[5].区块链的每一个区块按照时间顺序链接,组合成链式数据结构,是一种用密码学技术保证不可篡改和不可伪造的可靠数据库,也是一种分布式账本,具有去中心化、开放性、独立性、安全性、匿名性等特点[6].

从广义说,区块链系统由数据层、网络层、共识层、激励层、合约层和应用层组成.其中,数据层封装了哈希函数和Merkle树等数据区块和密码学加密技术;网络层由分布式网络、数据传播机制和数据验证机制组成;共识层主要封装工作量证明和权益证明等各类共识算法;激励层将现实生活中的经济因素与激励机制组合到区块链中,激励机制包括发行机制和分配机制等;合约层包含各类脚本代码、算法机制和智能合约,是区块链可编程特性的基础;应用层表现区块链在现实生活中的可编程应用和可编程金融等应用场景[7-8].区块链基础架构模型见图1.

比特币自发行以来,被称为区块链1.0,比特币的工作量证明共识算法,使得交易顺序达成共识,也让区块链系统具有去中心化的特点.被称为区块链2.0的以太坊,新增了权益证明共识算法,这使得区块链系统的发展更加迅速.到目前为止,区块链技术已被运用到社会生活的各种场景,区块链也进入到3.0时代[9].

图1 区块链基础架构模型

1.2 SSM框架技术

SSM是Java开发过程中的一种快速应用框架,其分别是Spring、SpringMVC、MyBatis[10].Spring框架是一个轻量级容器,提供功能强大的IOC、AOP和Web MVC等功能,以解决开发者在开发过程中遇到的常见问题.Spring不仅能应用于Java应用程序,还能应用于桌面应用程序和小程序,其特点是方便解耦、简化开发、支持声明式事务、方便程序测试等.SpringMVC是一种Web层的MVC框架,它是Spring的一个模块,拥有Spring特性.Spring MVC拥有清晰的角色划分、强大的直接配置方式、业务代码可重用等优点,能够通过功能强大的前端控制器DispatcherServlet,对请求和响应进行统一处理,并提供一整套解决方案,性能卓越,尤其适合现代的大型或超大型项目.MyBatis 是一个开源、轻量级的数据持久化框架,是 JDBC 和 Hibernate 的替代方案.MyBatis内部封装了JDBC,xml文件和注解减少了大量的JDBC代码,实现对象到数据库的映射,降低SQL与程序代码的耦合度,开发者只需关注 SQL 语句本身,就能方便后期系统的修改和维护.

2 融合区块链技术的农产品溯源体系

2.1 溯源体系架构

基于融合区块链的农产品溯源体系架构,主要由物理层、数据传输层、数据存储层、接口层、系统层、用户层构成[11].系统架构见图2.

图2 融合区块链的农产品溯源体系整体架构图

物理层主要由物联网设备和传感器等模块组成.这类设备安装在生产环境中,自动采集信息,详尽地将感知信息、产品生产信息等收集待发.

数据传输层负责网络数据传输,其通过WLAN、蓝牙、数据网络等方式,并通过安全协议将物理层的信息传输到系统.数据传输层保证了区块链网络节点间的信息通信.P2P网络的每个节点间通过维护一个共同的区块来保持通信.

数据存储层主要实现对数据的存储操作,其通过关系型数据库和分布式存储的双重保障来保证信息的安全性.

接口层主要是一些API接口的设置,系统对各种数据的读取和调用系统的不同模块,都是通过接口层的交互来实现的.

系统层包括各种功能模块的设计实现.在各环节,企业可以通过企业管理模块实现自身的需求,政府可以通过系统监管全流程的安全信息,用户也有相应的溯源查询、评价建议等功能.

用户层主要面向用户,不同的用户可以通过不同的客户端,使用融合区块链的农产品溯源系统.

2.2 溯源流程

农产品溯源需要整个生产周期的所有参与方共同完成,生产过程中前一个环节的信息自动上传到系统后,跟随农产品一起发送到下一环节,环环相扣,以保证信息链完整真实.以湖羊农产品溯源为例,其溯源流程见图3.

2.2.1 生产阶段

生产环节主要节点为农产品生产方.生产方需要接入融合区块链的溯源系统,并在系统中录入产品的基础信息,包括湖羊的父母耳标号、出生时间、性别、出生栏舍、所属企业等,并实时上链.在进入下一环节后,下一环节的参与方可以通过数字签名和时间戳来验证消息的来源和真实性.此外,生产企业还可以在不同时间对湖羊的体检数据进行即时上链,并将湖羊的防疫、诊疗记录、栏舍环境信息即时上链存储.生产阶段上链数据见表1.

表1 生产阶段上链数据

2.2.2 加工阶段

加工环节的主要节点为农产品加工方.当加工方接收到来自生产环节的产品和信息后,需要对产品和信息进行验证,同时将加工企业名称、资质、加工时间、加工方式等信息加入到农产品信息中,并实时上链,以备后续查询.加工阶段上链数据见表2.

表2 加工阶段上链数据

2.2.3 仓储阶段

仓储环节关键为仓库厂房.生产方和加工方的产品在交接时会存储在固定地点,仓储方需要对农产品信息和来源信息进行验证,然后对农产品的仓储信息,如仓储地点、仓储环境等进行收集上链.仓储阶段上链数据见表3.

表3 仓储阶段上链数据

2.2.4 运输阶段

运输环节的主要信息是物流信息.当农产品状态更新时,需要增加物流单号和物流企业等信息.运输信息需要同农产品的批次信息和物流信息一一对应,以便下个环节对接管理不同批次的农产品.运输阶段上链数据见表4.

2.2.5 销售阶段

销售环节的主要节点为各销售方.经过运输环节,农产品被发往不同的销售点,销售企业验证农产品信息后,需要将经销商名称、地址、商品来源、接收时间、销售时间等信息加入到农产品溯源信息中,以确保整个流程的产品信息完整性.销售阶段上链数据见表5.

表5 销售阶段上链数据

2.2.6 溯源阶段

消费者输入农产品的溯源码,系统对溯源码和农产品批次号等关键信息进行验证,并将通过验证的对应批次号的所有溯源信息,包括商品来源、生产加工信息、仓储物流信息等展示给消费者,从而完成农产品的溯源过程.溯源数据见表6.

表6 溯源数据

3 溯源系统实现

3.1 系统需求

溯源系统使用最多的模块主要是溯源信息的收集和展示.本系统的主要使用者包括系统管理员、农产品生产方、农产品加工方、农产品仓储方、农产品运输方、农产品销售方.消费者作为溯源体系的最终使用者,只需获取农产品的溯源信息即可,对溯源系统的逻辑并没有更高的需求.系统模块见图4.

图4 系统功能模块图

系统管理员模块主要用于查看使用溯源系统的企业数量和企业信息,并结合Lay-UI前端组件展示使用溯源系统企业的信息.当管理员登录溯源系统后,可以通过企业管理模块查看各企业的登录账号、密码等,也可以注销企业.当前登录的管理员可以新增一个管理员账号,并设置新账号的密码和用户名等信息.

农产品新增模块可通过输入农产品名称、产地、等级和生产方式来建立农产品溯源信息档案,在建立档案后会自动生成唯一的农产品溯源码,溯源码以IP地址的形式存储在数据库.在查询数据库溯源信息时,溯源信息以IP地址的形式发送给前端,在前端解析后再以二维码的形式展示给消费者,而二维码的内容即为农产品生命周期的溯源信息.

农产品溯源主页面展示溯源系统的主要功能.在页面中间区域输入农产品溯源码后,主页面即可展示该农产品的溯源信息.页面上半部分展示农产品溯源的整个流程,页面下半部分展示农产品溯源系统在不同农产品领域的应用.

3.2 系统拓扑结构

基于以上概述的溯源体系架构和模型,设计一个融合区块链的农产品溯源系统.该系统面向消费者、生产供应链各环节主体和监管部门,以保证农产品信息能真实可信地被记录下来,从而保障消费者溯源查询结果的真实性,减少农产品食品安全事故的发生概率.系统拓扑结构见图5.

3.3 功能验证

融合区块链的农产品溯源系统使用联盟区块链将各方企业纳入溯源体系,采用Hyper ledger fabric底层区块链架构,基于Windows10操作系统,在jdk1.8的Java环境下,通过IDEA编译器进行开发,使用MySQL关系型数据库存储基础信息.

3.3.1 溯源系统主界面

溯源查询功能是消费者使用频率最高的功能.在溯源系统主页,消费者可通过溯源码可查询到产品的溯源档案.在输入溯源码后,系统主页展示的溯源信息包含农产品在生产全生命周期的id、生产产地、生产日期、上链时间、生产企业等关键溯源信息.溯源信息展示界面见图6.

图5 区块链溯源系统拓扑图

图6 溯源信息展示界面

3.3.2 链上新增用户接口测试

新增用户的接口参数为certificate,该字段表示新增用户的数字证书.接口返回值的参数包括:success,表示请求是否正确处理,返回true表示数据上链请求已经收到,并未实现数据上链;errorCode,表示请求失败时对应的错误码;msg,表示应答消息描述;data,表示该接口,data为null.调用示例见图7.

图7 新增用户接口测试

3.3.3 溯源信息上链接口测试

数据的明文上链接口参数包括:dataId,表示数据标识;dataVersion,表示数据版本标识;dataId和dataVersion,表示唯一一条上链数据;bizCode,表示上链数据的类型,根据业务场景定义;indexes,表示可用来查询的字段集合;dataContent,表示待上链的数据部分,该部分将直接存储到区块链上.接口返回值参数包括:success,表示请求是否正确处理,返回true表示数据上链请求已经收到,但并未实现数据上链;errorCode,表示请求失败时对应的错误码;msg,表示应答消息的描述;data,表示该接口,data为null.调用示例见图8.

3.3.4 溯源信息查询接口测试

查询链上数据接口参数包括:dataId,表示数据身份标识;dataVersion,表示数据版本标识,dataId 和 dataVersion,表示唯一一条上链数据.接口返回值的参数包括:success,表示请求是否正确处理,返回true表示数据上链成功;errorCode,表示请求失败时对应的错误码;msg,表示应答消息描述;链上的数据,data 为null,表示数据未上链.调用示例见图9.

3.3.5 关键信息篡改测试

在农产品信息的溯源流程中,农产品生产信息、加工信息和运输信息对溯源结果的真实性具有重要作用.在生产周期中,这些关键信息被上传至区块链系统,系统可通过区块链的密码学技术和分布式存储技术等架构,保证上链信息不被篡改.

图9 溯源查询接口测试

在溯源链上产生交易新增区块时,将生产、加工和运输等关键信息写入区块链的区块体.区块链网络则会在记录数据时,通过数字签名验证交易的有效性,并将验证通过的交易打包到区块中,且在区块链各节点形成共识.区块链交易数据的全网共识,依靠的是共识机制制定的规则,只有通过共识的信息才会被保存在链上.

农产品溯源链在生产环节产生交易新增区块时,生产方上传的信息为:{“dataId” :”20221211”,”dataVersion” :“0060”,”dataConttent” :“生产日期为2022年10月25日”},并在各节点共识.在后续环节中,生产方更改生产日期为2022年11月25日,并将此条信息重新上链.当修改的信息通过联盟链的共识算法进行共识时,全网节点需要相互通信,以比对收到的信息与各自已共识的信息是否一致.在超过 2/3 节点收到一致的回复后,才能达成全网共识.而上传虚假信息的节点因区块链的共识算法规则,并不能让所有节点都对此信息回复一致,所以修改的信息在全网节点中共识失败,即此条信息不能被上传并保存到链上.

信息篡改测试见图10,其为真实信息的查询结果.图11为篡改信息的查询结果,但链上并无篡改后的信息记录,表明篡改的信息并未上链.这是因为农产品溯源链至少有5个共识节点,只有一个节点篡改了信息,而超过2/3的节点无法对此达成全网共识,所以无法上链.

图10 真实信息查询结果

图11 篡改信息查询结果

4 结 语

本文基于传统的农产品溯源流程,设计一种融合区块链技术的农产品溯源系统.通过对传统溯源系统存在问题的分析,对农产品溯源流程进行分阶段、分环节优化设计,在每个阶段实时收集信息并上传至区块链系统,以保证农产品生产过程的关键信息真实和不可篡改,从而解决传统农产品溯源系统的中心化存储、信息不透明和存储安全性低等问题.

由于区块链技术在软件系统方面尚未大范围应用,融合区块链的农产品溯源系统还存在需要改进的地方.分布式存储的共识机制和共识算法仍是区块链技术的一大难点,不仅需要安全可信的机制算法,还需要考虑共识时间问题.此外,溯源流程的全国统一标准和规范还未完全建立,因此系统的运行机制还需要进一步根据市场规律来进行研究和改进.

猜你喜欢
共识区块环节
共识 共进 共情 共学:让“沟通之花”绽放
必要的环节要写清
区块链:一个改变未来的幽灵
论思想共识凝聚的文化向度
区块链:主要角色和衍生应用
商量出共识
在农民需求迫切的环节上『深耕』
区块链+媒体业的N种可能
读懂区块链
现代学徒制管理模式及其顶岗实习环节