劉丹 竇津津 胡建斌
摘 ?要:針對(duì)農(nóng)產(chǎn)品易出現(xiàn)產(chǎn)地造假等質(zhì)量監(jiān)管方面的不足,將物聯(lián)網(wǎng)和區(qū)塊鏈結(jié)合起來,建立基于“區(qū)塊鏈+物聯(lián)網(wǎng)”的農(nóng)產(chǎn)品溯源系統(tǒng)。在生產(chǎn)過程中,通過溫濕度傳感器、光照傳感器以及GPS模塊等采集信息,通過ZigBee技術(shù)進(jìn)行節(jié)點(diǎn)布置。在運(yùn)輸環(huán)節(jié),通過二維碼技術(shù)對(duì)每件產(chǎn)品賦予唯一的身份信息,通過GPS和攝像頭來監(jiān)控位置變化,收集到的信息通過區(qū)塊鏈技術(shù)進(jìn)行數(shù)據(jù)存儲(chǔ)。當(dāng)消費(fèi)者購入產(chǎn)品時(shí),只需掃描產(chǎn)品上的二維碼,就可以對(duì)產(chǎn)品進(jìn)行全方位的追根溯源。結(jié)果表明,該方案覆蓋農(nóng)產(chǎn)品的全生命周期,優(yōu)化了農(nóng)產(chǎn)品溯源信息的存儲(chǔ)與查詢,有一定的實(shí)用性。
關(guān)鍵詞:區(qū)塊鏈;物聯(lián)網(wǎng);產(chǎn)品溯源
中圖分類號(hào):TP311.5 ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
Agricultural Product Traceability System based on
Integration of "Blockchain + Internet of Things"
LIU Dan, DOU Jinjin, HU Jianbin
(Department of Internet of Things Engineering, Dalian Neusoft University of Information, Dalian 116023, China)
liudan_j@neusoft.edu.cn; doujinjin@neusoft.edu.cn; hujianbin@126.com
Abstract: Aiming at quality supervision deficiencies of agricultural products like fake origins, this paper proposes to establish a traceability system for agricultural products based on "Blockchain + Internet of Things" by integrating the Internet of Things and blockchain. In production process, product information is collected through temperature and humidity sensors, light sensors, and GPS modules, etc., and collection nodes are distributed by ZigBee technology. In transportation process, each product is given unique identity information through QR (Quick Response) code technology, and its location changes are monitored through GPS and cameras. The collected information is stored through blockchain technology. When consumers purchase a product, they just scan the QR code and all-around information about the product can be traced. Results show that this practical solution covers entire life cycle of agricultural products, and optimizes storage and query of agricultural product traceability information.
Keywords: blockchain; Internet of Things; product traceability
1 ? 引言(Introduction)
農(nóng)產(chǎn)品不僅是人類生存和發(fā)展的基本物質(zhì)條件,也是人們生活中不可或缺的必需品,從農(nóng)場到餐桌,農(nóng)產(chǎn)品經(jīng)過了長時(shí)間的運(yùn)輸和存儲(chǔ)過程。如果在某個(gè)環(huán)節(jié)中存在管理漏洞,將導(dǎo)致農(nóng)產(chǎn)品安全問題逐步暴露[1]。國家市場監(jiān)督管理總局建立了可追溯性政策,以確保對(duì)農(nóng)產(chǎn)品的安全監(jiān)控。以往的溯源系統(tǒng)存在兩個(gè)缺點(diǎn)[2-3]:一是溯源系統(tǒng)無法取得真正的信任,無法保證溯源信息的真假,也不能確定信息是否被人篡改;二是消費(fèi)者無法成為食品鏈中的參與者,只能作為終端的消費(fèi)者,這極大地疏遠(yuǎn)了與生產(chǎn)者的關(guān)系。本文通過區(qū)塊鏈與物聯(lián)網(wǎng)的結(jié)合,使整個(gè)食品鏈都有證可查,每一個(gè)環(huán)節(jié)都能追根溯源,從而加強(qiáng)食品的可追溯性和安全性,提升食品供應(yīng)鏈的透明度,保障食品安全。基于“區(qū)塊鏈+物聯(lián)網(wǎng)”的農(nóng)產(chǎn)品溯源系統(tǒng),使用傳感器技術(shù)來采集食品鏈上的生產(chǎn)數(shù)據(jù),通過二維碼技術(shù)對(duì)食品賦予唯一的身份信息,利用區(qū)塊鏈不易篡改和去中心化等特性來存儲(chǔ)數(shù)據(jù),存儲(chǔ)的數(shù)據(jù)真實(shí)并且無法被任何人修改,消費(fèi)者只需掃描食品包裝上的二維碼就可以輕松地對(duì)食品進(jìn)行溯源查詢。本系統(tǒng)依托物聯(lián)網(wǎng)提升傳統(tǒng)農(nóng)產(chǎn)品監(jiān)控和溯源效率,利用區(qū)塊鏈連接孤立的產(chǎn)業(yè)鏈環(huán)節(jié),解決消費(fèi)者和生產(chǎn)者之間的信任危機(jī),為社會(huì)建立全新的信任體系作出巨大貢獻(xiàn)[4]。
2 ? 相關(guān)技術(shù)(Related technology)
2.1 ? 區(qū)塊鏈技術(shù)
區(qū)塊鏈可以理解為一項(xiàng)存儲(chǔ)技術(shù)[5],將存儲(chǔ)空間分割為多個(gè)以區(qū)塊為單位的存儲(chǔ)塊,每個(gè)區(qū)塊有固定的存儲(chǔ)值,每個(gè)區(qū)塊又分為多個(gè)節(jié)點(diǎn),一個(gè)節(jié)點(diǎn)就是一個(gè)存儲(chǔ)空間,是一個(gè)交易過程。而區(qū)塊與區(qū)塊之間由鏈?zhǔn)浇Y(jié)構(gòu)連接起來,從而形成區(qū)塊鏈。每個(gè)節(jié)點(diǎn)包含哈希值、前一個(gè)區(qū)塊的地址、后一個(gè)區(qū)塊的地址和時(shí)間戳等信息,哈希算法作為一種交易的加密手段,可以實(shí)現(xiàn)理論上的不可篡改;而節(jié)點(diǎn)中包含的前一個(gè)和后一個(gè)區(qū)塊地址信息,就完美地保證了數(shù)據(jù)的可溯源性問題。自誕生之初,區(qū)塊鏈技術(shù)大約經(jīng)歷了三次更新迭代。區(qū)塊鏈1.0可以說是比特幣1.0時(shí)代。區(qū)塊鏈2.0的代表是智能合約,是事前設(shè)置好的一些交易當(dāng)中的規(guī)定,而智能是指在觸發(fā)這一協(xié)議系統(tǒng)時(shí)會(huì)自動(dòng)執(zhí)行的一些程序。區(qū)塊鏈3.0時(shí)代,也可以說是區(qū)塊鏈技術(shù)實(shí)現(xiàn)更多價(jià)值的一次迭代,已經(jīng)超越了金融領(lǐng)域,涵蓋了社會(huì)生活的各個(gè)方面[6]。
2.2 ? 二維碼技術(shù)
二維碼是按照一些規(guī)律分布的由黑白兩色組成的符號(hào)信息,對(duì)應(yīng)著計(jì)算機(jī)中的“0”“1”比特流的概念,通過一些可以識(shí)別信息的設(shè)備進(jìn)行信息采集和查看。二維碼由于其成本低、信息容量大、易制作等優(yōu)點(diǎn),迅速從日本普及全世界,同時(shí)也在最開始的基礎(chǔ)上不停地更新迭代,二維碼的技術(shù)也在不停地進(jìn)化,以滿足更多不同的應(yīng)用場景。
2.3 ? ZigBee協(xié)議
ZigBee是一種短距傳輸數(shù)據(jù)的協(xié)議,比較適合的場景包括:采集信息的網(wǎng)絡(luò)節(jié)點(diǎn)多、成本低、傳輸性能高、設(shè)備體積略小、地形復(fù)雜;監(jiān)測分布廣,需要監(jiān)測點(diǎn)廣泛密集及收發(fā)密集的網(wǎng)絡(luò)覆蓋等[7]。
2.4 ? Wi-Fi技術(shù)
Wi-Fi使用的協(xié)議是IEEE 802.11b局域網(wǎng)協(xié)議,采用DSSS(直序列擴(kuò)頻)和QPSK或BPSK(相移鍵控),通信范圍在100 米以上。Wi-Fi屬于WLAN無線局域網(wǎng),支持多個(gè)終端設(shè)備同時(shí)傳輸。
3 ? 系統(tǒng)設(shè)計(jì)(System design)
3.1 ? 系統(tǒng)架構(gòu)
本系統(tǒng)是基于物聯(lián)網(wǎng)和區(qū)塊鏈技術(shù),融合傳感器采集、無線傳輸、Web應(yīng)用和二維碼等技術(shù)構(gòu)建的農(nóng)產(chǎn)品溯源系統(tǒng)。該系統(tǒng)分為數(shù)據(jù)接入層、數(shù)據(jù)傳輸層、數(shù)據(jù)存儲(chǔ)層和數(shù)據(jù)展示層(客戶應(yīng)用層)。
(1)數(shù)據(jù)接入層
數(shù)據(jù)接入層基于物聯(lián)網(wǎng)技術(shù)采集農(nóng)產(chǎn)品生產(chǎn)過程中的數(shù)據(jù)信息,本系統(tǒng)涉及的數(shù)據(jù)包括農(nóng)產(chǎn)品的生長環(huán)境、農(nóng)產(chǎn)品的生產(chǎn)環(huán)境、農(nóng)產(chǎn)品的運(yùn)輸環(huán)境。其中,生長環(huán)境包括溫度、濕度、光照和生長日期等數(shù)據(jù),生產(chǎn)環(huán)境包括加工過程和生產(chǎn)日期等數(shù)據(jù),運(yùn)輸環(huán)境包括運(yùn)輸?shù)攸c(diǎn)、時(shí)間等數(shù)據(jù)。
(2)數(shù)據(jù)傳輸層
數(shù)據(jù)傳輸層是數(shù)據(jù)通信的過程,即數(shù)據(jù)由傳感器節(jié)點(diǎn)到主節(jié)點(diǎn)再到服務(wù)端的過程。本系統(tǒng)主要采用的是ZigBee和Wi-Fi。ZigBee是一種低功耗并被廣泛應(yīng)用的無線通信技術(shù)。通過編程,設(shè)置主節(jié)點(diǎn)和多個(gè)副節(jié)點(diǎn)的通信模式,定義單片機(jī)引腳和數(shù)據(jù)采集的實(shí)現(xiàn)原理,實(shí)現(xiàn)節(jié)點(diǎn)與節(jié)點(diǎn)之間的通信自由。Wi-Fi是現(xiàn)階段最常用的通信技術(shù),覆蓋范圍廣,適用范圍廣,已經(jīng)慢慢發(fā)展到工業(yè)、農(nóng)業(yè)、醫(yī)療等多個(gè)社會(huì)領(lǐng)域。
(3)數(shù)據(jù)存儲(chǔ)層
數(shù)據(jù)存儲(chǔ)層采用區(qū)塊鏈技術(shù),區(qū)塊鏈技術(shù)按照時(shí)間順序?qū)?shù)據(jù)以鏈?zhǔn)酱鎯?chǔ)的方式進(jìn)行存儲(chǔ),區(qū)塊體用作數(shù)據(jù)的載體,數(shù)據(jù)單元存放各種信息和類別,不同的區(qū)塊鏈應(yīng)用對(duì)應(yīng)不同的數(shù)據(jù)類型;如果數(shù)據(jù)修改,則所有的區(qū)塊信息都要進(jìn)行修改,否則無法更新數(shù)據(jù)。確保數(shù)據(jù)的安全性[8]是本系統(tǒng)使用區(qū)塊鏈的主要原因,也符合當(dāng)下食品安全所面臨問題的特征。
(4)數(shù)據(jù)展示層
數(shù)據(jù)展示層也是客戶應(yīng)用層,主要應(yīng)用二維碼技術(shù),將溯源信息有序、合理地呈現(xiàn)給客戶。將二維碼應(yīng)用到溯源系統(tǒng)中具有很多優(yōu)勢:編碼類型多,信息容量大,可以展現(xiàn)產(chǎn)品名稱、生產(chǎn)地、生產(chǎn)日期、保質(zhì)期、生長環(huán)境等信息。而且,二維碼還可以將圖片、文字鏈接等信息進(jìn)行編碼,極大提高了溯源系統(tǒng)的多樣性。二維碼還可以引入加密手段,與區(qū)塊鏈技術(shù)形成強(qiáng)強(qiáng)聯(lián)合,是解決農(nóng)產(chǎn)品安全問題的關(guān)鍵一步。
3.2 ? 系統(tǒng)功能
本系統(tǒng)分為基于物聯(lián)網(wǎng)的農(nóng)產(chǎn)品采集和基于區(qū)塊鏈的農(nóng)產(chǎn)品溯源兩部分。采集端主要包括傳感器部分和數(shù)據(jù)傳輸部分。傳感器部分包括溫度傳感器、濕度傳感器、光照傳感器、攝像傳感器和GPS傳感器等,用于采集數(shù)據(jù);Wi-Fi模塊用于進(jìn)行數(shù)據(jù)傳輸和服務(wù)器進(jìn)行通信,具體功能如圖1所示。
區(qū)塊鏈溯源系統(tǒng)分為前端和區(qū)塊鏈后臺(tái)兩個(gè)模塊,前端模塊主要是向用戶展示的界面,即溯源信息;區(qū)塊鏈后臺(tái)模塊主要用于數(shù)據(jù)交互,把區(qū)塊鏈的數(shù)據(jù)獲取并展示到前端界面,具體功能如圖2所示。
3.3 ? 區(qū)塊鏈設(shè)計(jì)
本系統(tǒng)中的區(qū)塊鏈?zhǔn)腔赟olidity開發(fā)的。Solidity是由Gavin Wood博士創(chuàng)建的以太坊上的主要編程語言,是一種可用于智能合約開發(fā)的面向?qū)ο蟮母呒?jí)編程語言。Solidity也是一種“圖靈完備”語言,這意味著其擁有開發(fā)復(fù)雜用例的所有能力。具體開發(fā)流程如下:
(1)配置開發(fā)環(huán)境:要開發(fā)區(qū)塊鏈,首先要配置的開發(fā)環(huán)境為:Truffle.js、Ganache、Web3.js、Node.js、Npm。本系統(tǒng)使用一個(gè)模擬的內(nèi)存區(qū)塊鏈(Ganache)代替真實(shí)的區(qū)塊鏈進(jìn)行開發(fā)。
(2)編寫智能合約:使用Solidity編程語言來編寫智能合約,寫合約對(duì)象(含有構(gòu)造函數(shù)初始化候選人數(shù)組),編寫項(xiàng)目的合約代碼。
(3)編譯合約:Node控制臺(tái)中使用這個(gè)庫來編譯合約。
(4)部署合約:使用Truffle部署智能合約。
(5)運(yùn)行合約:運(yùn)行已經(jīng)部署的智能合約。
(6)編寫前端:按需求編寫前端代碼。
4 ? 系統(tǒng)的實(shí)現(xiàn)(Implementation of the system)
4.1 ? 硬件實(shí)現(xiàn)
硬件部分包括STM32F103C8T6開發(fā)板、傳感器采集模塊、無線通信芯片、LCD顯示屏和繼電器控制單元等。核心原理圖和硬件效果圖如圖3和圖4所示。
4.2 ? 軟件實(shí)現(xiàn)
(1)Truffle框架配置
Truffle是基于Solidity語言的一套開發(fā)框架,簡化了去中心化應(yīng)用(DApp)的構(gòu)建和管理流程。采用JavaScript編寫,支持智能合約的編譯、部署和測試。
Truffle配置代碼如下:
module.exports = {
// See
// for more about customizing your Truffle configuration!
networks: {
development: {
host: "127.0.0.1",
port: 7545,
network_id: "*" // Match any network id
},
develop: {
port: 5777
}}};
(2)前端顯示界面
溯源系統(tǒng)的首頁界面如圖5所示。
(3)Solidity編程
Solidity編譯器獲取高級(jí)代碼并將其分解為更簡單的指令,Solidity代碼封裝在Contracts中。關(guān)鍵字為address,保存一個(gè)20字節(jié)的值。地址類型有members,作為所有合約的基礎(chǔ)。地址成員有balance與transfer,balance查詢地址的余額,transfer函數(shù)將以太網(wǎng)發(fā)送到地址。Solidity提供了一種以Struts形式定義新類型的方法。部署和運(yùn)行智能合約如圖6和圖7所示,溯源結(jié)果如圖8所示。
5 ? 結(jié)論(Conclusion)
基于“區(qū)塊鏈+物聯(lián)網(wǎng)”的農(nóng)產(chǎn)品溯源系統(tǒng),通過傳感器的感知能力,可以對(duì)農(nóng)產(chǎn)品從生長到生產(chǎn)、從物流到消費(fèi)等的全過程進(jìn)行數(shù)據(jù)采集、無線上傳,將所有信息以區(qū)塊鏈的形式進(jìn)行存儲(chǔ),實(shí)現(xiàn)了真正的溯源功能;而作為終端的消費(fèi)者可以有效地參與并監(jiān)督食品的生命周期,極大地加強(qiáng)了與種植者、生產(chǎn)者和物流等方面的信任關(guān)系。
參考文獻(xiàn)(References)
[1] KABALA C, GALKA B, JEZIERSKI P. Assessment and monitoring of soil and plant contamination with trace elements around Europe's largest copper ore tailings impoundment[J]. Science of The Total Environment, 2020, 738(10):1-13.
[2] 任守綱,何自明,周正己,等.基于CSBFT區(qū)塊鏈的農(nóng)作物全產(chǎn)業(yè)鏈信息溯源平臺(tái)設(shè)計(jì)[J].農(nóng)業(yè)工程學(xué)報(bào),2020,36(3):279-286.
[3] 徐苗苗,孫小越,呂堯,等.基于5G-IoT和區(qū)塊鏈的農(nóng)產(chǎn)品供應(yīng)鏈溯源平臺(tái)研究[J].網(wǎng)絡(luò)空間安全,2020,11(11):91-97.
[4] 張浩.泛在網(wǎng)在食品安全領(lǐng)域的可行性研究——以建設(shè)泛在食品安全網(wǎng)為例[J].食品與機(jī)械,2019(11):89-93.
[5] 張志威,王國仁,徐建良,等.區(qū)塊鏈的數(shù)據(jù)管理技術(shù)綜述[J].軟件學(xué)報(bào),2020,31(9):2903-2925.
[6] 賀海武,延安,陳澤華.基于區(qū)塊鏈的智能合約技術(shù)與應(yīng)用綜述[J].計(jì)算機(jī)研究與發(fā)展,2018,55(11):112-126.
[7] 張少波,董思招,王亞龍,等.基于ZigBee與Android的城鄉(xiāng)智能公交系統(tǒng)[J].信息技術(shù),2019(03):24-28.
[8] 韋智勇,周立廣.基于區(qū)塊鏈的身份認(rèn)證系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].軟件工程,2020,23(11):37-40.
作者簡介:
劉 ?丹(1982-),女,碩士,副教授.研究領(lǐng)域:區(qū)塊鏈,物聯(lián)網(wǎng),數(shù)據(jù)處理.
竇津津(1989-),女,碩士,副教授.研究領(lǐng)域:區(qū)塊鏈,無線網(wǎng)絡(luò).
胡建斌(1991-),男,本科生.研究領(lǐng)域:區(qū)塊鏈,物聯(lián)網(wǎng).