1. 首页 > 快讯

食品溯源有多难?手把手教你写一个区块链+物联网的溯源系统

食品溯源有多难?手把手教你写一个区块链+物联网的溯源系统

用什么来证明区块链有多火呢?大概是,区块链被搬上“两会”桌面上讨论、相关职位需求一年内增长400%、某上市公司在公司名称中加入“区块链”后股价暴涨500%之类的表现吧。

区块链(blockchain)和物联网(Internet of Things,IoT)已被证明是当下最受欢迎的技术,虽然其使用也才刚刚开始。目前,区块链和物联网的整合已是一些大公司的优先事项之一,且少数公司已开始在一些项目中使用它来实施计划、制定解决方案。

就在这个“人人皆链”的时候,我们需要认真思考几个严肃的问题:除了数字货币之外,区块链技术对于实体经济有哪些有价值的场景?在技术嫁接实践中如何遵循行业规律和需求?区块链如何与物联网、云计算、大数据结合达到真正理想的效果?

本文将针对如今的食品安全运输难题,给网友们深度介绍如何设计解决方案架构,即如何使用区块链支持分布式账本网络和物联网设备需求,并实现过程跟踪等内容。

想要知道食物进入你的胃之前,都经历了什么?话不多说,看干货吧。

设计解决方案架构在本章中,我们将回顾基于物联网和区块链的食品链解决方案架构,并重点探讨以下主题:

业务方面:将回顾业务组件构成和主要参与者,以及生产和消费者之间的交易过程

技术方面:将展示我们技术解决方案的架构

软件方面:将展示解决方案细节

1. 食品产业

现代食品链大而复杂,参与者们直接或间接地影响着食品的生产和运输。我们首先了解一下现代食品生产过程,现代食品链面临哪些挑战,并提出一种基于区块链和物联网技术的解决方案:

上图是现代食品链业务流程的简化版,实际链条要比上图庞大得多。例如,很多超市都有它们自己的销售中心,所以这里也没有涵盖例如港口和海关等其他参与者。

对于我们的应用案例,我们将设法从产品交付给生产商时起对其进行说明。产品任选,这里以鸡腿为例。

假设我们管理的资产是一个装满鸡腿的盒子,另一个资产是一个装满装着鸡腿的盒子的搬运托盘。在食品链中,我们将关注以下参与者流程:生产商、配送中心和零售商。

如前所述,现代食品链中有许多参与者,但我们遵循的是一个更简单的流程,而不一定是现实生活中所遵循的实际流程,目标是了解物联网和区块链如何帮助食品链中的各方解决实际问题。

a) 食品生态系统的挑战

我们选择关注的食品链中有许多挑战,在这里简单列示如下:

农民面临的挑战:确保有关原材料关键信息的安全可靠,包括产品说明、检查日期、库存信息等。

生产商面临的挑战:确保产品来源安全;产品能够安全交付和接收;尽量用电子装置包装产品,减少人工参与;使用条形码和二维码为监管者和消费者提供信息标签。

零售商面临的挑战:检查包装的完整性,保证产品运输过程的可视化,对产品生产日期、仓库检验和质量控制等方面进行管理。

消费者面临的挑战:对产品的原产地等包装中的信息充分信任,可迅速识别产品,且必要时能够排除可疑产品。

b) 食品加工环节

接下来从我们的目标开始。案例中,产品原料到达工厂后,被切割、打包、装盒、储存,在交货前将盒子放在搬运托盘上。

搬运托盘是用于运输货物的木制、金属或塑料平台,我们在下图中可以看到:

产品在加工环节必须进行登记的重要数据包括:

库存量单位(Stock Keeping Unit,SKU)

动物来源

生产厂家名称

动物信息

质量控制

减排日期

是否冷藏

技术主管信息

发货日期

温度和物流信息

在登记盒子或搬运托盘时记录下列详细信息:

库存量单位

日期

厂家地址

冷藏温度

质量记录

搬运托盘代码

我们来看下一个环节:

c) 食品配送环节

经过切割、包装和运输后,产品到达配送中心,那里负责接收货物并检查产品储存情况。根据实际运输需求,产品可能会被放在一个更大的搬运托盘中,以便更适合火车或卡车运输。

为了避免产品出现任何问题,配送中心会检查工厂发送的数据。如果有任何额外变化,如搬运托盘转移,都需要在产品信息包中添加相应信息。

对于产品来讲,要记录如下信息:

收货日期

搬运托盘号

收货温度

储存温度

运输公司名称

密封情况

对于搬运托盘来讲,要记录如下信息:

目的地代码

搬运托盘代码

日期

分销环节温度

运输公司名称

经过检验,产品被送到零售商手中。

d) 食品零售环节

商店收到产品后需要查货物是否符合要求,拆开搬运托盘,打开盒子,产品检查过程结束:

在零售环节,一定要记录如下信息:

收货日期

搬运托盘号

收货温度

储存温度

运输公司名称

密封情况

现在,商店可以在产品上贴上标签了,产品将直接或过一段时间被摆在货架上出售。

6.2 技术方案

现在我们已经了解了食品链的整个过程以及每个环节的潜在问题,接下来我们来看看区块链和物联网技术在此如何发挥作用。下图为标准的区块链Hyperledger Fabric架构图示:

上图向我们展示了区块链的三层架构,包括前端应用(左侧)、API/SDK (中间)、Hyperledger Fabric 和物联网平台(右侧)。

接下来对每层架构进行解读:

a) 前端应用

该层负责数据输入,可以是一个数据包,比如来自SAP、Salesforce或Siebel的数据包,或者是自定义的应用。它还可以与物联网设备交互,收集数据并在区块链账号中注册。开发前端应用由以下几个方面组成:

好吧,我知道每层架构都有很多工具,这里只用了我比较熟悉的工具。

这种前端架构使得我们可以将服务从单个接口中分离出来,这样我们就可以将用户体验(User eXperience,UX)扩展到其他平台,而不用重新构建服务内容。

b) 基于物联网的资产跟踪技术

物联网在食品链中起着重要作用。物联网设备可以跟踪资产,而且有很多型号可供选择。有测量温度的传感器,进行位置跟踪的GPS、信标、SigFox、Wi-Fi、4G和Sub1Ghz。这些设备和网络可以广泛应用于农场、工厂、运输公司、配送中心和零售网点,适用范围涵盖食品链中的所有参与者。

食品链的主要挑战来自运输环节。许多食品的运输需要特定环境,因为一些食品易腐烂,而温度控制对于预防食品污染和腐烂至关重要。

接下来看一下如何使用物联网设备来解决这个问题。粒子电子资产跟踪器(The Particle Electron Asset Tracker,如下图所示)可用于收集温度和环境数据,识别GPS定位,并进行蜂窝三角测量等:

这个跟踪器允许我们连接u-blox M8 GNSS GPS接收器和Adafruit LIS3DH三轴加速器。我们也可以将Grove传感器与其连接。

接下来让我来看一下这种物联网平台的架构:

上图向我们展示了解决方案的重要组件,包括:

消息队列遥测传输(Message Queuing Telemetry Transport,MQTT):这是指一个基于TCP的可发布–订阅消息的传递协议;专门用于远程连接,需要少量代码占用,或者对网络带宽有要求;发布–订阅消息传递模式需要消息代理。

Node-RED:这是一个编程工具,利用可以创建JavaScript函数的流编辑器将硬件设备、API和在线服务以一种简单的方式连接起来。

IBM Cloud:这是一组云计算服务。

Bosch IoT Rollouts:这是博世物联网套件中的一项云服务,使用户能够管理边缘设备、控制器和网关的软件更新。

那么,这些组件是如何结合在一起来帮助食品链运转的呢?

Node-RED控制面板仪表盘使我们能够选择一个资产跟踪器,并检查位置、数据、设备状态和其他信息

资产跟踪器可以在移动网络上激活或更新

地理位置数据可以定期传输,通过Node-RED仪表盘进行跟踪

资产跟踪器设备查询温度数据,然后查询位置或速度数据

Node-Red可以将温度、位置和速度数据写入Hyperledger Fabric中

Node-Red仪表盘查询Hyperledger结构中的各种任务信息,例如交易历史记录、日期和时间数据以及地理传感器数据

c) API/SDK

API/SDK是区块链网络中连接的集成层,通常使用Node.js开发,在调用智能合约中起着重要的作用。今天,我们可以找到使用Go和Java的API/SDK文档,以及 Python文档。

有关如何使用API/SDK将应用程序与区块链网络集成,可以参考此链接:

https:/hyperledger-fabric.readthedocs.io/en/release-1.3/fabric-sdks.html

下图展示了一个与API/SDK集成且与Hyperledger Fabric交互的应用:

Composer Java Script SDK是从Node.js派生的,它允许开发人员将应用程序与他们的业务网络集成起来。包括两个npm模块:

Composer-client:此模块通常作为应用程序的本地必安装项。它提供API,用来将业务应用程序连接到业务网络,目的是访问资产和参与者并提交交易。对于生产商来讲,这是应用程序唯一需要添加的模块。

Composer-admin:此模块通常作为管理应用的本地必安装项。这个API允许创建和定义业务网络。

现在让我们继续讨论解决方案中的最后一层。

d) Hyperledger Composer—高级概述

Hyperledger Composer是一种创建区块链网络的简单方法,它集成了一个全栈工作解决方案,就像Hyperledger Composer架构站点提供的那样。

在较高级别上,Hyperledger Composer由以下组件组成:

执行runtime

JavaScript SDK

命令行接口(CLI)

REST服务器

环回连接器

Playground 网络用户界面

Yeoman代码生成器

VS Code和Atom编辑器插件

详细介绍这些插件不在本书的内容范围之内。你可以访问这个链接,简要地了解这些组件:https:// hyperledger. github. io/composer/latest/introduction/solution- architecture

6.3 软件组件

现在,我们将从架构师的角度来看看解决方案的软件组件。这是熟悉所有组件并更好地理解它们是如何集成的一个好方法。

首先,我们探究最重要的组件之一:身份验证过程。

如何保证食品链中的每个成员在前端应用中都有正确的访问

权限?在回答了这个问题之后,我们将深入研究Hyperledger Composer最重要的组件:建模语言和交易处理器功能。

a) Composer REST服务器

要验证客户端,我们需要设置一个REST服务器。有了这个选项,在允许客户端在REST API中进行调用之前,应该对其进行身份验证。

REST服务器使用一个名为PASSPORT的开源软件,它是Node.js的身份验证中间件。它灵活且模块化,支持通过用户名和密码、Facebook、Twitter、Google和轻量级目录访问协议(Lightweight Directory Access Protocol,LDAP)等进行身份验证。在第7章中,我们将就此进行详细说明。现在,让我们回顾一下组件将如何工作。

下图中,我们可以看到使用Composer REST服务器的高级身份验证架构:

接下来的组件已经在图中进行了描述:前端应用、Composer REST服务器、LDAP和云(Cloudant,NoSQL数据库)。

如果正在进行测试,或者需要快速创建身份证明,建议使用Facebook、Google或Twitter进行身份验证,这将比其他方法更容易、更快。

要使用前面的方法,并利用Composer REST服务器,我们需要进行一些定制,这需要执行下列步骤:

1) 接下来一行是composer-rest-server安装时,需要在行之前执行的命令:

apk del make gcc g++ python git在使用此方法之前,请确保你有一个干净的环境,清除所有以前的安装。

2) 若要自定义Composer REST服务器Dockerfile,请在Run语句中添加以下命令:

su -c "npm install -g passport-ldapauth" – composer &&

3) 创建以下环境变量:

4) 如果正在检查API调用并接收到404,这意味着没有登录:

5) 检查钱包中是否有API:

为了更好地理解身份验证流程,我们看一下这个执行流程:

身份验证要求composer-rest-server的每个API调用都必须包括access_token。想了解更多相关内容,请访问:

https://hyperledger.github.io/composer/v0.16/integrating/enabling-rest-authentication

使用curl的一些示例包括:

又例如:

6) 这是设置composer-rest-server的最后一步:使用Cloudant创建名片。

利用接下来的几个属性创建成员卡片:

上传附件,如下所示:

在第7章中,我们将对此进行部署。

b) Hyperledger Composer模型

识别区块链应用案例的方法有很多,让我们记住第3章中讲到的一些好的应用案例的重要指标。

是否涉及业务网络?

如果是,是否存在需要验证且可审计的事务?

数据透明度以及数据更改是否重要?

在确定了这些问题的答案之后,头脑风暴会议是比较好的沟通方式,会议可详细说明解决方案、确定最佳解决方案平台(如IBM Food Security)或开始创建自定义应用案例。

使用Hyperledger Composer建模语言可以很容易地定义资源结构,该结构将作为交易处理,并记录在账本上。

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:http://www.fjxmta.com/kuaixun/29829.html

联系我们

在线咨询:点击这里给我发消息

微信号:wx123456