来源 | 《基于区块链的物联网项目开发》
作者 | 马克西米利亚诺·桑托斯、埃尼奥·莫拉
责编 | Carol
出品 | 区块链大本营(blockchain_camp)
用什么来证明区块链有多热?
大概是,区块链被摆上“两会”的桌面讨论,相关岗位需求一年内增长400%,某上市公司在公司名称上加上“区块链”后股价暴涨500%。
区块链和物联网(IoT)已经被证明是目前最热门的技术,虽然它们的使用才刚刚开始。目前,区块链与物联网的融合已经成为一些大公司的重点之一,少数公司已经开始在一些项目中使用它来实施计划和制定解决方案。
在这个“人人都被锁链锁住”的时刻,我们需要认真思考几个严肃的问题:除了数字货币,区块链科技对于实体经济还有哪些有价值的场景?技术嫁接实践中如何遵循行业规律和要求?区块链如何与物联网、云计算、大数据相结合,才能达到真正理想的效果?
针对当今的食品安全运输问题,本文将深入介绍如何设计解决方案架构,即如何使用区块链来支持分布式账本网络和物联网设备的需求,并实现过程跟踪。
知道自己经历了什么才想让食物进肚子吗?话不多说,看干货。
设计解决方案架构
在本章中,我们将回顾基于物联网和区块链的食物链解决方案架构,并重点关注以下主题:
业务:将审查业务组成部分和主要参与者的构成,以及生产者和消费者之间的交易过程。
技术方面:将展示我们技术解决方案的架构。
软件:将显示解决方案的详细信息。
1. 食品产业
现代食物链庞大而复杂,参与者直接或间接地影响着食物的生产和运输。
我们先来了解一下现代食品生产流程,现代食物链面临哪些挑战,提出一个基于区块链和物联网技术的解决方案:
上图是现代食物链业务流程的简化版。实际链条要比上图大很多。比如很多超市都有自己的销售中心,所以这里不涉及港口、海关等其他参与者。
对于我们的应用程序案例,我们将尝试从产品交付给制造商开始解释产品。可选产品,这里以鸡腿为例。
假设我们管理的资产是一个装满鸡腿的箱子,另一个资产是一个装满鸡腿的搬运托盘。在食物链中,我们将重点关注以下参与流程:生产商、配送中心和零售商。
如前所述,现代食物链中有许多参与者,但我们遵循一个更简单的过程,不一定是现实生活中遵循的实际过程。目标是了解物联网和区块链如何帮助食物链中的所有各方解决实际问题。
a) 食品生态系统的挑战
我们选择关注食物链中的许多挑战,这些挑战简要列举如下:
农民面临的挑战:确保原材料关键信息的安全可靠,包括产品描述、检验日期、库存信息等。
制造商面临的挑战:确保产品来源的安全;产品可以安全交付和接收;尽可能用电子设备包装产品,减少人工参与;利用条形码和二维码为监管者和消费者提供信息标签。
零售商面临的挑战:检查包装的完整性,确保产品运输过程的可视化,管理产品的生产日期,仓库检查和质量控制。
消费者面临的挑战:充分信任产品产地等包装中的信息,快速鉴别产品,必要时排除可疑产品。
b) 食品加工环节
先说我们的目标。在这种情况下,产品原料到厂后,经过切割、包装、装箱、储存,发货前将箱子放在搬运托盘上。
托盘是用于运输货物的木制、金属或塑料平台,我们可以在下图中看到:
产品加工中必须登记的重要数据包括:
库存股(SKU)
动物起源
制造商名称
动物信息
质量管理
减排日期
冷藏不冷藏?
技术主管信息
交货日期
以及温度和物流信息。
登记箱子或搬运托盘时,记录以下细节:
库存股
日期
制造商地址
冷藏温度
质量记录
托盘代码
让我们看看下一个链接:
c) 食品配送环节
产品经过切割、包装、运输后到达配送中心,在配送中心负责收货和检查产品的存储情况。根据实际运输需要,产品可以放在更大的托盘中,以便更适合火车或卡车运输。
为了避免产品出现任何问题,配送中心将检查工厂发送的数据。如果有任何额外的更改,如托盘转移,则需要在产品信息包中添加相应的信息。
对于产品,应记录以下信息:
接收日期
托盘号
接收温度
储存温度
运输公司名称
密封条件
对于托盘搬运,应记录以下信息:
目的地代码
托盘代码
日期
分配链路温度
运输公司名称
检验后,产品被送往零售商。
d) 食品零售环节
店铺收到商品后,需要检查商品是否符合要求,拆开搬运托盘,打开箱子,商品检验流程结束:
在零售部分,请务必记录以下信息:
接收日期
托盘号
接收温度
储存温度
运输公司名称
密封条件
现在,商店可以给产品贴上标签,产品会直接或过一段时间就上架销售。
6.2 技术方案
现在我们知道了食物链的整个过程和每个环节中的潜在问题,让我们看看区块链和物联网技术如何在这里发挥作用。下图显示了标准的区块链Hyperledger结构体系:
上图为我们展示了区块链的三层架构,包括前端应用(左)、API/SDK(中)、Hyperledger Fabric和IoT平台(右)。
解释下面体系结构的每一层:
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建模语言可以很容易地定义资源结构,该结构将作为交易处理,并记录在账本上。
CTO文件使用三个主要元素为业务网络定义创建域模型:
-
包含文件中所有资源声明的单个命名空间
-
包含资产、事务、参与者和事件的一组资源定义
-
从其他命名空间导入资源的可选导入声明
在本书第7章,创建区块链和物联网解决方案时,我们创建了一个业务网络。让我们更详细地研究我们使用的代码:名称空间是资产、事件、参与者和事务的基本定义,如下所示。
资源和枚举类型的声明显示在以下代码中:
交易过程函数在使用业务网络连接API提交交易时由运行库自动调用;
有关Hyperledger Composer建模语言的更多信息,请访问以下链接:
-
https://hyperledger.github.io/composer/v0.16/reference/cto_language.html
-
https://hyperledger.github.io/composer/v0.16/reference/js_scripts.html
c) Hyperledger Composer访问控制语言
Hyperledger Composer有一个访问控制文件(.acl),可以用它来对业务访问控制和网络访问控制进行编程。业务访问控制用于业务网络中的资源,而网络访问控制是指对管理网络更改的控制。
下面是授予网络访问控制的一个示例:
又例如:
通过访问以下链接,可以获得有关Hyperledger Composer访问控制语言的更多信息:
https://hyperledger.github.io/composer/v0.16/reference/acl_language.html。
d) Hyperledger Composer交易处理函数
Hyperledger Composer业务网络定义由一组模型文件和一组脚本组成。脚本可以包含执行交易过程的交易处理函数,这些交易是在业务网络的模板文件中定义的。
下面是一个交易执行脚本文件的样例:
如我们所见,在使用BusinessNetworkConnection API提交交易时,交易处理器函数由runtime自动调用。文档中的Decorators用于注释runtime处理所需的元数据函数,并且每个交易类型都有一个用于存储交易的关联注册表。
小结
本章描述的架构涉及许多组件,实现起来有点复杂。到目前为止,我们已经确定,物联网和区块链的结合可以缓解几个问题,改变现代食品链的运作方式。
例如:增加成员之间信息透明度,使它们能够更有效地控制数据;提高数据安全性;使流程更加自动化;尽量减少中间环节;使链条整体更加简化。
我们还看到物联网设备、传感器功能的扩展,它们能够在需要最少人工或不需要人工的情况下实现机器间的交互。这些技术组件带来了前所未有的自动化,既降低供应成本,也节约能源。
区块链与物联网的集成将使边缘设备(如传感器、条形码和二维码扫描事件)和基于视频识别的资产之间的数据交换成为可能。与传感器连接的资产将能够记录敏感信息,如特定仓库的位置和温度,并且可以在区块链上自动记录或更新这些信息。
随着对架构及其技术组件的更好理解,我们将能够为现代食品链充分实现一个使用物联网和区块链的解决方案。
在下一章中,我们将学习如何用物联网创建自己的区块链。
彩蛋
区块链技术理论上可以应用到各行各业大展拳脚,但理论如何与相应的应用场景结合起来, 又如何与同时代的其他技术相结合,迸发出绚丽耀眼的火花?这才是我们要思考的问题。
而以上内容所述的区块链+物联网+食物链的一系列解决方案架构,只是区块链场景应用的其中一部分。
老铁在看了吗??
本文章来源于互联网,如有侵权,请联系删除!
一张图让你读懂鹅厂的物联网框架 本文从物联网的中心要素、物联网的关键场景、微信硬件平台的通讯协议剖析三个维度去剖析基于微信硬件平台的物联网架构。 一、基于微信硬件平台的物联网架构图 上图涵盖以下信息: 基于微信硬件平台的物联网的架构组成,有微信大众平台…