一、设计方案
如下图1所示,在食品的生产、加工、储存和运输过程中,通过物联网设备获取食品的温度、湿度、重量、地理位置等信息。传感器采集的数据通过MQTT协议上传至阿里云物联网平台。生产商和运输商通过AMQP协议从阿里云物联网平台获取食品物联网信息。食品的生产和运输数据通过链码永久存储在区块链上。消费者通过在线商城购买食品,收到食品后,通过小程序扫描二维码跟踪食品。
图1
二、总体架构
系统总体架构主要分为物联网层、网络层、数据层、平台层、应用层和外部接口层。物联网层用于收集食物的温度、湿度、重量和地理位置等数据。采集的数据存储到阿里云物联网平台。这一层的主要部件包括温湿度传感器、压力传感器、GPS、标签和二维码。数据层用于存储可跟踪和不可跟踪的数据。可追溯性数据通过区块链存储。区块链中的每条记录都包含一个惟一的时间戳和一个加密签名。系统中的每个实体都需要来自该实体的数字签名才能对可追溯性数据进行操作。数字签名保证了在发生食品问题时数据的不可否认性。不可追溯数据包括物联网数据、用户数据、店铺数据、订单数据等。不可跟踪的数据通过关系数据库存储。
应用层包括物联网应用、区块链应用、前端应用、后端应用和applet应用。物联网应用通过物联网设备获取食品的温度、湿度、重量、地理位置等数据。并将物联网数据存储到阿里云物联网平台。区块链应用程序通过链代码存储数据层的可跟踪性数据。数据数据存储在区块链系统的各个节点上。通过共识算法,这些数据也可以保证不会被篡改。前端应用是网上商城,消费者通过商城购买食品。后端应用程序是针对生产者和运输者的,生产者应用程序包括食品管理和订单管理,运输者应用程序包括快递管理。applet应用程序通过扫描二维码获取食品追溯数据。外部接口层包括物联网应用接口、区块链应用接口、前端应用接口、后端应用接口和applet接口。系统采用前后端分离的开发方式,前后端通过接口进行数据通信。用户可以通过接入接口访问业务。
三、详细设计
如图2所示,Stm32开发板集成了温度传感器、湿度传感器、压力传感器和GPS传感器。数据采集完成后,通过MQTT协议将采集的数据上传到阿里云物联网平台。用户应用通过AMQP协议从阿里云物联网平台获取物联网数据。该数据为区块链防伪溯源提供数据支持。
图2
如图3所示,区块链架构包括前端、后端和Fabric三层架构。前端架构主要是生产者的后端管理页面、运输者的后端管理页面、在线商城的首页和可追溯applet页面。超级账本主要由三个节点组成:生产者、运输者和消费者,以及智能合约。每个节点都有一个CA,智能合约被打包成一个链码,部署在每个通道的顶部,节点通过链码调用智能合约中的方法。
图3
前端和后端使用独立的前端和后端开发方法进行开发。如图4所示。
图4
用户使用小程序扫描食品二维码,查询食品追溯信息。QR码中的食品ID可以通过后端解码获得,applet通过该ID向服务器发起查询请求。服务器通过区块链节点查询分布式账本中的跟踪数据,并将跟踪结果返回给applet。applet动态地将跟踪结果呈现给用户。