基于以太坊技术的农产品溯源系统设计与实现
时间:2023-02-12 20:45:05 来源:千叶帆 本文已影响人
蓝建平
(嘉兴职业技术学院,浙江 嘉兴 314036)
在人民生活水平日益提高的今天,食品安全问题受到了更多的关注。而农产品作为一种特殊商品,其质量安全关系到广大人民群众的身体健康与生命安全,因此建立一个完善有效的农产品追溯体系尤为重要。农产品是指由农业生产出来并经过加工处理后获得的产品。传统农产品溯源系统通过二维码,射频识别技术(RFID)技术等手段能一定程度上消费者食品溯源的需求,但是因传统系统使用中心化应用易出现如下问题:
(1)中心化容易出现系统受到攻击而瘫痪。
(2)中心化应用容易出现信息篡改。
(3)中心化应用由于信息不公开透明,导致不同主体间的信任问题。
而区块链是基于分布式账本、去中心化的技术,把该技术应用到农产品溯源系统中可以很好地解决传统溯源系统中存在的问题。本文基于区块链2.0 的以太坊(Ethereum)技术,分析、设计并实现了一个农产品溯源的去中心化应用Dapp。
农产品溯源涵盖了生产,流通,销售和查询等诸多环节,各个环节的高效合作可以确保农产品信息得到有效追溯。区块链是一种基于共识机制的去中心化网络技术,其具有数据不可篡改、可追溯性以及时间戳等特点,能够满足不同领域对于农产品追溯的要求。文章结合农产品溯源实际需求,设计区块链技术应用于产业链各个环节,使得区块链上智能合约与分布式存储技术可以保障产品信息流正常传输,保障产品流通,溯源与信息分布式存储。具体的溯源流程如图1所示。
图1 农产品溯源流程
在农产品生产、销售、运输的各个环节,相关的信息均要提交到区块链中,而且每个环节中包括了上一个环节中产生的数据信息。最后消费者通过访问系统进而访问底层的区块链,就能反向跟踪消费的农产品的信息。
系统中涉及的用户角色有普通消费者、与农产品生产到销售整个流程中涉及的各类企业(如种植企业、运输单位、经销商、零售商等)、各类监管政府部门、系统管理员。
在前台,新用户可以注册个人信息并选择相关角色,注册完成后通过管理员后台验证,就可以通过登录模块登录到平台上。
用户登录成功后,根据用户的角色不同,主界面也不同。
对于消费者登录后,主要是溯源查询,通过输入产品的条码或二维码信息后,获取该产品从生产到流通到销售整个环节中的各个溯源信息。
农产品生产商、运输商、销售商通过登录系统后,可以完善单位信息,并申请认证。通过认证后就可以在平台中管理相关产品信息,如添加商品、修改商品、商品信息上链、查询显示商品等功能。
各类监管政府部门注册登录后,可以在平台中查询供应链上的各类单位信息,进行主体单位的认证工作,通过平台,可以溯源出现问题的商品,从而及时精准召回,落实相关主体的责任。
管理员用户登录后,主要通过管理后台进行角色管理,系统数据字典维护等与系统运营相关的工作。
具体的系统功能模块图如图2所示。
图2 农产品溯源系统功能模块图
2.1 关键技术
2.1.1 区块链技术
简单来说,区块链是由类似信息记录组成的分布式账本,称为区块链。这个账本在不断增长,所有的区块都是通过密码学连接的。区块链持有的信息是一个共享的、不断更新的数据库。
作为一种分布式、去中心化的账本,它不是只存在于一个地方,而是真正公开的、可核查的。区块链技术不需要第三方背书,就能使系统内全部数据信息公开透明,不可篡改,不可伪造,可追溯。所以区块链技术可以很好地应用到溯源领域,从而解决传统溯源系统中存在的痛点。
区块链技术按节点参与模式可分为:公有链、联盟链、私有链。
公有链:任何区块链服务用户都可以使用,任何节点都可以访问,所有访问节点都可以参与读写数据。
联盟链:只适用于一组具体客户,只允许授权节点访问,访问节点可以按照规则参与数据读写。
私有链:只适用于个别客户,只有被授权节点才能访问,访问节点可以按照规则参与读写数据。
溯源系统开发测试阶段,使用私有链。生产运行环境为联盟链,与溯源系统相关的各类用户通过授权接入,即可进行数据上传到区块链和从区块链中查询相关溯源信息。
2.1.2 以太坊技术
以太坊(Ethereum)是一个建立在区块链技术之上,去中心化应用平台。以太坊是平台,它让我们方便地使用区块链技术开发去中心化的应用,在这个应用中,使用Solidity来编写和区块链交互的智能合约。
智能合约只是一个运行在以太坊链上的一个程序。它是位于以太坊区块链上一个特定地址的一系列代码(函数)和数据(状态)。
2.1.3 物联网技术
物联网(Internet of Things,IoT),就是通过多种信息传感器,射频识别技术(RFID),全球定位系统(GPS),红外感应器(FTIR),激光扫描器(LIBS)等多种设备和技术来实时获取任何一个需要监测,连接和交互的对象或进程,收集其声音,光线,热量,电力,力学,化学,生物,位置等多种所需信息,并通过多种可能的网络接入方式来达到事物之间,事物之间以及事物与人类之间泛在联系,从而达到智能化地感知,识别以及管理事物及进程的目的。
物联网(IoT)是以互联网,传统电信网等为基础,使所有可以独立寻址的常见物理对象组成互联互通网络的信息承载体。
本文中所涉及的溯源系统中,通过部署在农田,温室和园林目标区域内的海量传感节点对温度,湿度,光照,气体浓度和土壤水分进行实时采集,并将采集到的上述传感信息和GPS,农场信息计时写入区块链作为初始区块。
2.1.4 开发框架
Truラe 是针对基于以太坊的Solidity 语言的一套开发框架。本身基于Java。Truラe 为以太坊提供了开发环境、测试框架和资产管道。本文所涉及的溯源系统采用的是Truラe开发框架。
以太坊节点只能识别一种JSON-RPC 的语言,但JSONRPC 写起来很麻烦,也很容易出错,所以通过Web3.js 来进行封装,Web3.js 是以太坊Javascript API,这样就只需要与Web3.js 进行交互就可以了。
MetaMask(小狐狸钱包)是一个浏览器插件,可以用作以太坊钱包,并且可以像任何常规插件一样安装。安装之后,它允许用户存储 Ether 和其他ERC-20 令牌,从而使他们能跟其他以太坊地址之间进行交易转账。
2.2 系统架构
本文中所涉及的溯源系统的三层架构如图3所示。
图3 系统架构图
(1)最底层的是:分布式和去中心化的持久层,由在以太坊区块链上使用SOLIDTY 语言开发的智能合约(Smart Contract)组成(开发过程中使用了Truラe 框架,用于提供本地以太坊开发环境和测试框架)。在测试阶段使用了以太坊私有链Ganche 进行本地部署、运行、测试。
(2)中间层:作为数据存储层和应用层间的中介,通过一个Node.js 中间件,利用Web3.js 库访问智能合约,为应用层提供相关API,与本地或远程以太坊节点上的智能合约进行互动,从而实现具体的基于以太坊技术的应用。
(3)最上层为应用层,该层主要通过Vue.js 框架实现分布式应用Dapp,用户通过在支持Ethereum 的浏览器上运行访问项目(如Metamask 浏览器扩展程序)。
2.3 智能合约设计
根据具体的业务,在项目中设计了不同的智能合约,与人员管理相关的有农户智能合约,消费者智能合约,零售商智能合约,分销商智能合约,及物流公司智能合约,监管部门智能合约。在这些合约中主要完成一是验证当前账户是否是指定的用户,当前用户的注册,资质申请等功能,监管部门智能合约主要是对特定用户的资质申请进行审批功能。
除了上述的人员类智能合约外,还有支持农产品溯源的核心业务的供应链智能合约,上述的人员在完成角色验证后,就可以进行相关的信息上链操作。系统的核心智能合约如图4所示。
图4 溯源系统核心智能合约类图
对于农户来说,农产品的原材料,化肥,作物生长环境信息要定时上链,农产品收获时,相应的信息要进行注册上链。
对于农产品经物流配送到具体单位时,会把物流信息进行注册上链。
零售商对农产品上架出售前会进行信息登记并上链。
消费者通过农产品上的溯源二维码就可以反向追踪到产品从生产到运输到销售的整个过程数据。
监管部门对系统中的人员,单位信息进行认证,对产品进行溯源监督和问题产品的溯源查处。
3.1 系统前台
3.1.1 前台主界面
农产品溯源系统的前台包括登录(非管理员用户)、注册(各类不同角色用户)、溯源查询三个子模块的功能。新用户在登录页中点击注册新用户链接,跳转到注册页面,填写用户名、邮箱、密码等信息后完成注册。已完成注册的用户,在登录页中,输入用户名、密码、验证码,验证通过后就可进入系统。
3.1.2 用户详细信息管理
新注册的用户首次登录系统后,必须根据页面内容完善用户信息,不同的角色需要填写的用户信息有所不同,对于消费者用户,填写个人的姓名、性别、年龄等信息后,保存即可以使用系统的溯源查询功能。对于其他用户,填写单位名称、地址、联系人、经营产品等信息后保存,通过认证后,即可以使用系统实现产品溯源上链和查询功能。
3.1.3 溯源查询
如图5所示,在前台的溯源页面中,输入产品的二维码信息,点击查询就可以显示该产品的整个溯源信息。
图5 溯源查询
3.2 系统后台
3.2.1 农产品管理
进入后台,点击农产品管理,在页面中显示查询表单和农产品列表信息。输入类别、名称、位置点击搜索按钮,显示符合条件的相关农产品列表信息。显示界面如图6所示,点击列表上方的添加按钮,可以在弹窗中输入农产品的各种信息,保存会写入中心数据库。点击连接到MetaMask 按钮,则连接区块链,连接成功后,点击列表项中的操作中的上链按钮,把相应的农产品信息存储到区块链中,区块链的链块地址就会与该商品绑定,记录到中心数据库中。此外,相关用户可以进行农产品查看详情、修改、删除等操作。
图6 农产品管理
3.2.2 资质认证管理
监管部门用户登录后,在主界面中点击资质认证链接后,显示“申请资质认证”列表,“已完成资质认证列表”。在申请列表中选中某项,并点击认证按钮链接后,显示申请认证的企业完整信息,核验后,点击认证通过或者认证不通过,并填写相关备注信息。完成后相关的条目信息就从申请列表中移除,在已完成列表中新增了一条相关的数据。
3.2.3 个人信息管理
点击后台主界面的右上方的用户名下列箭头,弹出快捷菜单,菜单中有基本资料、修改密码、退出系统等菜单项。点击基本资料,进入修改个人基本信息页面,在该页面中可以修改邮箱、手机号、备注等信息。点击修改密码,进入修改密码页面,在该面上输入正确的旧密码、新的密码,新的确认密码后,点击确认保存,完成密码修改功能。点击退出系统,注销登录信息,跳转到登录页,进行登录操作。
区块链不可篡改,安全开放,去中心化等特性使得区块链在溯源领域有着广阔应用前景。目前已有不少学者对基于区块链技术构建溯源系统进行研究,并取得一定成果。但是对于如何将区块链与传统溯源系统相结合仍是一个有待解决的问题。
本文对传统农产品溯源系统现状及问题分析的基础上,提出一种以以太坊技术为核心的农产品溯源系统。对系统进行需求分析和技术架构,利用以太坊进行系统的分布式、去中心化存储,设计实现了一系列的智能合约,整个项目客户端使用Vue 框架实现,通过Web3j 库访问相关智能合约,实现溯源数据上链和查询业务。该系统由于融入了区块链技术,在很大程度上解决了传统溯源系统中数据集中,容易被篡改及容易产生信任危机,溯源流程不完整等一些痛点问题,具有很强的实用性和不可替代性。
猜你喜欢 以太合约节点 探索太空奥秘 还原宇宙本真科学导报·学术(2020年43期)2020-10-29以太万物理论概述科学导报·学术(2020年76期)2020-09-05基于移动汇聚节点和分簇的改进节能路由算法卫星电视与宽带多媒体(2020年7期)2020-06-19CAE软件操作小百科(48)计算机辅助工程(2019年3期)2019-10-21基于点权的混合K-shell关键节点识别方法华东师范大学学报(自然科学版)(2019年3期)2019-06-24以太坊又爆漏洞黑客大战一触即发计算机与网络(2018年14期)2018-09-10浅谈基于P2P的网络教学系统节点信息收集算法职业·下旬(2009年7期)2009-01-20 相关热词搜索:以太,溯源,农产品,