王可可 陳志德 徐健



摘 要:針對農產品追溯系統中的安全和效率問題,依據區塊鏈的去中心化安全特性,提出一種基于聯盟區塊鏈的高效解決辦法。首先,通過星際文件系統(IPFS)對農產品數據進行hash轉變,從而減小區塊中單條事務數據量,并利用IPFS數據的不可逆原理,達到數據的初步保障;其次,建立聯盟區塊鏈模型進行數據驗證,區塊鏈數據驗證的共識算法采用實用拜占庭容錯(PBFT)算法來減少全網共識時間;最后,根據仿真實驗中參與節點數、區塊大小和網絡帶寬,來擬合驗證交易的時間曲線,進而計算出不同帶寬下的區塊鏈交易效率,并結合數以萬計的傳感器參與下的農產品追溯系統的實際情況,對比區塊鏈雙鏈結構,給出分析結果。實驗結果表明,在低于1000個驗證節點的條件下,區塊鏈最大共識時長為32 min,聯盟鏈系統可支持35~40萬條傳感器數據,可適用于大范圍、多數據的農產品追溯。
關鍵詞:聯盟區塊鏈;農產品追溯;星際文件系統;實用拜占庭容錯算法;交易效率
中圖分類號:?TP309; TP311
文獻標志碼:A
Efficient traceability system for quality and safety of agricultural products based on consortium blockchain
WANG Keke1,2*, CHEN Zhide1,2, XU Jian1,3
1.College of Mathematics and Informatics, Fujian Normal University, Fuzhou Fujian 350007, China ;
2.Fujian Provincial Key Laboratory of Network Security and Cryptology (Fujian Normal University), Fuzhou Fujian 350007, China ;
3.Engineering Research Center of Fujian University for Electronic Information and Control (Minjiang University), Fuzhou Fujian 350007, China
Abstract:?Concerning of the security and efficiency problems of the agricultural product traceability system, based on the decentralization security feature of blockchain, an efficient solution based on consortium blockchain was proposed. Firstly, through Inter-Planetary File System (IPFS), the agricultural product data was hashed, so as to reduce the data size of single transactions in the block, and the initial guarantee of data was achieved by using the irreversible principle of IPFS data. Secondly, the consortium blockchain model for data verification was established, and Practical Byzantine Fault Tolerant (PBFT) algorithm was used as consensus algorithm for blockchain data verification to reduce the consensus time of the whole network. Finally, according to the number of participating nodes, block size and network bandwidth in the simulation experiment, the time curve of the verification transaction was fitted, and then the blockchain transaction efficiency under different bandwidths was calculated; by using tens of thousands of actual situations of the agricultural product traceability system with the participation of sensors, the blockchain double-chain structure was compared to obtain the analysis results. Experimental results show that under the condition of less than 1000 verification nodes, the maximum consensus time of blockchain is 32min, and the consortium blockchain system can support 350000-400000 sensor data, which can be applied to large-scale and multi-data agricultural product traceability.
Key words:?consortium blockchain; agricultural product traceability; Inter-Planetary File System (IPFS); Practical Byzantine Fault Tolerance (PBFT) algorithm; transaction efficiency
0 引言
農產品可追溯系統是追蹤農產品從生產到消費的各個階段農產品質量安全的一個整體系統。農產品安全是維系人們生命與健康的重要因素,建立高效、可信任的農產品質量安全追溯系統,是促進食品安全,保證人民健康的重要前提。
農產品追溯系統從一開始就受到國內外專家的重視,早在2002年,美國國會就通過了“生物反恐法案”開始建立農產品質量安全可追溯制度[1]。 2003年5月FDA公布了《食品安全跟蹤條例》,要求所有涉及食品運輸 、配送和進口的企業要建立并保全相關食品流通的全過程記錄[2]。2006年,我國農業部也正式提出建立農產品質量安全追溯體系,按照承建主體的不同產生了四種類型的追溯系統:分別由政府、社會組織、企業、食品生產公司內部質量安全追溯系統[3]。到目前為止雖然社會各界已經對農產品質量安全追溯的重要性達成了共識,相關制度和系統建設也初見成效,但是在實際工作中仍然存在許多問題。
伴隨著互聯網和物聯網技術的發展,農產品質量安全追溯登上一個新的臺階,借助物聯網、信息采集技術、數據庫和云儲存等,在農產品質量安全追溯系統的各個環節實現改進。比如,文獻[4]中介紹了從制造商到消費者的運輸過程中實現食品質量檢測的可能性,利用傳感器遠程監控系統結合物聯網技術,提出了一種基于物聯網實時食品可追蹤和食品運輸過程可監測的低成本解決方案。盡管物聯網技術已經足夠成熟,但是農產品生產銷售體系涉及主體眾多,影響體系的不確定因素繁瑣,借助傳感器實時監控資源消耗大等,導致質量安全追溯體系的管理難度大、效率低,特別是數據存儲安全仍然面臨眾多挑戰和問題。于是文獻[5-7]中提出運用區塊鏈分布式存儲技術,借助區塊鏈不可逆的特性解決了在數據存儲階段中篡改或破壞數據的可能性。區塊鏈由比特幣的底層技術發展而來,是一種具有去中心化、可追溯性、不可篡改、公開透明、共識機制和交易匿名等特點的分布式存儲技術。 然而,與其他行業相比,區塊鏈技術用于農產品質量安全追溯對物聯網數據的存儲壓力更大。為了實現分布式節點的一致性,區塊鏈的塊生成速度和事務處理能力是有限的,因此不可能直接應用區塊鏈技術處理和存儲大量的傳感器數據。為了解決存儲問題,文獻[8]-[11]中使用云計算和云存儲技術來提供應用程序。正如文獻[12]所述,傳統的安全問題仍然存在于云計算環境中,甚至傳統的安全機制也不再適用于云中的應用程序和數據。因此文獻[12]中提出了區塊鏈雙鏈結構,利用鏈式數據結構存儲區塊鏈事務散列,并與區塊鏈一起形成雙鏈存儲,保證農產品數據不會被惡意篡改或破壞。由于農產品追溯涉及的標準眾多,需要對參與節點進行有效的政策把控,同時隨著數據量的增大,對于區塊鏈交易的效率也需要不斷提升,完全的公鏈已經不能滿足這些多變性需求。聯盟鏈和公鏈相比,在高可用、高性能、可編程、隱私保護方面更有優勢,它被認為是“部分去中心化”或者“多中心”的區塊鏈。聯盟鏈讓節點數得到了精簡,能夠使得系統的運行效率更高、成本更低,在單位時間內能夠確認的交易數量要比公鏈大很多,更容易在農產品質量安全追溯系統中落地。
用于大數據記錄主要存在以下問題:1)區塊鏈共識算法引起的記錄速度問題。盡管任何人都可以自由使用比特幣的區塊鏈,但每秒只能寫入7筆是它的性能極限。2)參與節點數的界限性問題。即使是在以商業用途為對象的參與者限定型區塊鏈中,當參與節點數超過幾十個時,性能就會急劇惡化。
為更好解決安全存儲和大數據存儲的問題,本文提出了一種基于區塊鏈技術的農產品信息分布式存儲 (Distributed-Storage Agricultural Information, DSAI)方案。該方案借助于去中心化的星際文件系統(Inter-Planetary File System, IPFS)來解決存儲瓶頸。IPFS本質上是一種內容可尋址、版本化、點對點超媒體的分布式存儲傳輸協議[13]。通過底層協議,人們能夠輕松從IPFS上提取文件,且不受防火墻的影響,在尋找內容過程中,用戶只需要驗證內容的哈希,就可以實現內容的訪問。IPFS哈希用來表示不可改變數據,一旦數據改變,哈希值也會改變,這樣的設計充分保證了數據的不可逆。同時IPFS基本沒有存儲上的限制,大文件會被切分成小的分塊,下載時可以從多個服務器同時獲取,這又為農產品大數據的存儲提供了便利。然后將產品固定的哈希值存入DSAI中的聯盟區塊鏈系統,經過全網共識,實現數據的安全可追溯。
為了解決區塊鏈共識算法引起的記錄速度和參與節點數的界限性問題,DSAI系統運用聯盟鏈技術,通過仿真實驗,合理選取有限驗證節點,減少區塊全網驗證時間,保證數據的存儲時效性,減少孤塊的產生。
總體來說,本文在以往農產品質量安全追溯系統的研究之上,探索基于區塊鏈技術的互聯網溯源平臺,借助物聯網技術的基礎設施,利用編碼、傳感器等基礎元件的應用,最終建成一個高效率、防篡改、可信任、易管理的農產品質量安全追溯系統。
1 DSAI系統模型
1.1 系統結構
為了保證農產品質量安全追溯系統的整體性和可行性,農產品質量安全追溯系統由信息采集層、數據存儲層和應用層三個模塊組成。信息采集層包含了各種物聯網傳感器模塊,這些模塊可以實時收集數據并將其上傳到節點服務器;然后由服務器將其寫入到數據存儲層的分布式存儲系統和區塊鏈中;應用層與為用戶設計的基于數據系統服務的應用程序相關。具體結構如圖1所示。
1.2 信息采集策略
信息采集模塊主要包括溫度傳感器、濕度傳感器、GPS模塊和GPRS模塊,可以根據溫度和濕度的變化來記錄農產品的生產環境,GPS模塊進行農產品定位和信息采集節點劃分。通過傳感器傳回的數據用于農產品數據存儲時的質量檢測,一旦發現不合要求,就不能進行存儲與運輸銷售。
1.3 數據存儲策略
在數據存儲層中,數據存儲基于區塊鏈和分布式存儲系統,考慮到區塊鏈對傳感器大數據的輸入輸出(Input/Output, I/O)效率,本文系統自動封裝節點服務器采集到的傳感器數據上傳至分布式存儲系統,以應對區塊鏈直接對大數據存儲的壓力。區塊鏈的數據存儲在一系列塊中,事務是數據存儲的載體,也就是說存入區塊鏈的數據是由一系列事務組成的,但是區塊鏈本身不能判斷這些事務的結構,因此需要自定義這些數據的標識,借助數據標識來查詢數據。首先在全網公布數據標識,然后在區塊鏈共識階段設置合理的共識機制。農產品質量安全追溯與虛擬貨幣不同,其數據的多元性導致不能簡單地運用工作量證明(Poof Of Work, POW)或權益證明(Poof Of Stake, POS)來實現共識。本文系統通過實用拜占庭容錯算法實現共識,只有得到超過51%全節點的共識,交易才能寫入區塊鏈,具體實現流程如圖2所示。
1.4 應用層
應用層主要涉及農產品信息數據分析、追溯客戶端的建立以及系統各層之間的交互。通過對農產品信息數據分析,可以明確知道農產品在整個供應鏈中的易出問題環節,以便采取更多措施來減少損害。通過建立追溯客戶端,可以最大限度地實現農產品的大眾監視度。整個追溯過程的建立,在系統各層之間交互地完成,系統算法對信息數據的精準處理決定追溯系統的效率問題。
2 安全高效的聯盟區塊鏈
在農產品跟蹤問題上,應用區塊鏈現在面臨物聯網傳感器的互聯網數據量比傳統電子貨幣區塊鏈大得多,區塊和交易的生產速度不夠高,無法提供農業跟蹤,可以說區塊鏈是一種有限的資源。因此,當區塊鏈與物聯網數據結合時,必須改進存儲方案以支持大量數據,同時不浪費網絡和存儲資源。因此為了確保區塊鏈存儲系統順利運行,必須保證單筆交易足夠的小從而達到相對意義上的區塊擴容。如圖3所示為農產品質量安全追溯組成體系及其結構分布。
首先各個數據節點對傳感器數據進行收集,存入鏈下存儲系統,本文借助于IPFS,在IPFS存儲系統中對數據進行過濾,通過減少重復數據來實現第一步的數據簡化。當數據過濾之后,將數據對象的傳感器數據封存(可以看作一個交易),然后將交易Hash廣播到區塊鏈網絡。具體實現過程如算法1所示。
算法1? 數據檢驗及封裝算法。
輸入? 農產品數據信息及生成Hash。
輸出? 若信息合格,Hash存入區塊鏈;若信息不合格,重新進行信息采集。
程序前
wh ile 階段傳感器數據沒有完全錄入
do 傳感器數據監測
if? 傳感器數據符合要求
then 添加入事務數據集
else 舍棄數據,檢查問題,重新錄入
end while
程序后
關于區塊鏈交易量的提升主要在于提升交易速率,通過擴容的方法需要考慮網絡承載能力(網絡帶寬和存儲容量是否足以支撐更大的區塊),當容量達到上限,不能及時處理新塊數據,可能導致數據對象在狀態發生改變時,數據仍未寫入區塊鏈,從而造成巨大的交易延遲,并且孤塊率的提升使得網絡節點的不一致性加重(分叉變多),最終影響區塊鏈安全性能。
目前區塊鏈應用場景多種多樣,如表1所示的是四種應用場景的區塊鏈交易數據。根據表1可以發現,影響交易性能的四種關鍵因素分別是區塊形成間隔、公共節點數目、孤塊率和區塊大小,因此要設計安全高效率的區塊鏈系統,必須從以上因素出發去考慮。
2.1 利用聯盟鏈解決問題
2.1.1 采用PBFT共識解決一致性問題。
本文系統利用PBFT算法進行聯盟鏈共識,PBFT算法傳播示意圖如圖4所示。
圖4中,請求節點為C,0、1、2、3為運行正常的服務器,3是宕機服務器,算法執行如下:
1)請求階段:節點C向主節點發送請求并記為0 [14]。
2)預準備階段:C請求主節點服務端0后,服務端0廣播至副本節點1、2、3。
3)準備階段:副本節點1、2、3接收到廣播記錄后繼續廣播,1廣播至023, 2廣播至013,3因為宕機無法廣播。
4)提交階段:節點0、1、2、3在準備階段如果收到超過一定數量的相同請求,就會進入提交階段,并且廣播提交請求。
5)回應階段:在提交階段若0、1、2、3節點若收到超量相同請求,則會對節點C反饋信息。
具體的PBFT算法流程如算法2~4所示。
算法2? 確定view主節點。
輸入? client請求;
輸出? 主節點編號。
程序前
view ← 0
wh ile 通過timeout機制判斷主節點是faulty
view+ +
do 觸發view change協議選舉新的主節點
P=view mod |R|
return P
程序后
因為PBFT是一種狀態機副本復制算法,所有副本在一個view中輪換操作,主節點通過view編號以及節點總個數決定。算法2中的view為視圖編號,從0開始一直延續下去, | R | 為節點個數,P為主節點編號。
算法3? 3REQUEST & PRE-PREPARE過程。
輸入? 〈REQUEST,o,t,c〉;
輸出? 〈PRE-PREPARE,v,n,d〉。
程序前
if? 客戶端請求消息簽名不正確
then 非法請求丟棄
else 給請求分配一個編號n進行排序
print 〈〈PRE-PREPARE,v,n,d〉,m〉
程序后
客戶端client向主節點發送〈REQUEST,o,t,c〉請求,其中REQUEST包含消息的內容m和消息摘要d(m),o為請求的具體操作;t為請求時client追加的時間戳;c為客戶端標識。client對REQUEST請求進行簽名。主節點在收到請求后,進行客戶端請求消息簽名校驗,丟棄非法請求,為正確請求分配排序編號n,然后廣播〈〈PRE-PREPARE,v,n,d〉,m〉,其中v為view編號,d為客戶端消息摘要,m為消息內容。〈PRE-PREPARE,v,n,d〉進行主節點簽名,n是要在某一個范圍區間內的[h,H]。
算法4? PREPARE過程。
輸入? 〈PRE-PREPARE,v,n,d〉;
輸出? 〈PREPARE,v,n,d,i〉。 程序前
if? 主節點PRE-PREPARE消息簽名正確
if? 當前副本節點收到簽名不同,v和n相同的信息
if? d=m
if? n in [h,H]
then print 〈PREARE,v,n,d,i〉
else 非法請求丟棄
else 非法請求丟棄
else 非法請求丟棄
程序后
算法4主要針對副本節點i收到主節點PRE-PREPARE消息后進行的四方面校驗:第一是判斷主節點消息簽名的正確性;第二是判斷當前副本節點是否收到一條同一v下并且編號也是n,但是簽名不同的PRE-PREPARE信息;第三是判斷d和m的摘要是否一致;最后判斷n是否在區間[h, H]內。若同時滿足以上判斷,副本節點就向其他節點包括主節點發送〈PREARE,v,n,d,i〉,其中i是當前副本節點編號。〈PREARE,v,n,d,i〉進行副本節點簽名。
接下來是COMMIT階段,與上一階段相似,主節點和副節點收到PREPARE消息后,也要進行四部分校驗:1)副本節點PREPARE消息簽名是否正確;2)當前副本節點是否已經收到同一view下的n;3)n是否在區間[h,H]內;4)d是否和當前已收到PRE-PREPARE中的d相同。如果請求通過,并且副本節點i收到2f+1[14]個驗證通過的PREPARE消息,則向其他節點發送〈COMMIT,v,n,d,i〉消息。
最后REPLY階段,進行類似上面算法中的四方面校驗后,如果副本節點i收到了2f+1個驗證通過的COMMIT消息,這時候當前網絡中大部分節點已經達成共識,之后運行client請求o,返回〈PEPLY,v,t,c,i,r〉給client,其中r是請求操作的結果。此時若客戶端收到f+1個相同的REPLY消息,說明此請求已經達到了全網共識。
2.1.2 利用聯盟鏈確保交易效率
聯盟鏈通過選取有限驗證節點來減少全網驗證時間(農產品數據hash寫入延遲時間),即數據發生之后,在固定時間內必須保證寫入區塊鏈。
區塊在聯盟鏈中被打包過程中,首先需要經過主節點驗證,驗證通過后廣播到副本節點,直到所有驗證節點收到消息。其中驗證節點數是n,單點帶寬是B,區塊大小為S,節點之間的傳播時間為ti1=kiS/B,正常節點發送個數為ki,節點編號i,區塊打包需要通過計算驗證有效性,因此需要校驗。因為區塊大小、交易數量和驗證時間正相關,故假設驗證交易所需的時間和區塊大小成線性關系,即每個節點驗證交易所需要時間約ti2=aS,其中a為比例系數,因此得到由一個節點向其他節點傳播的時間遞推公式如下:
t(n)=k1S/B+aS+max{(t(n*)}; n≥2
(1)
其中:t(n)表示在整個網絡中的n個非宕機節點傳播所需要的時間;t(n*)表示在共識階段節點間驗證所需要的時間。如果已知節點之間的連接矩陣和各個節點的帶寬,可以由式(1)遞推得到傳播的總時間。
為保證賬本數據一致,必須保證挖礦時間大于區塊廣播時間。設每個交易大小為S0,則聯盟鏈中交易個數為K=S/S0,每個區塊廣播完成后才可產生下一區塊,其中,秒級交易個數是D:
D=K/T(n)
(2)
式中,T(n)表示傳播到n個節點所用的時間,因為傳播時間和區塊大小、網絡帶寬、節點個數成線性關系,設計區塊傳播時間和區塊大小、節點個數和網絡帶寬的多元線性回歸模型,假設它們之間有如下關系:
T(2f)=β0+β1S+β2n+β3B
(3)
式中,β0、β1、β2通過最小二乘法擬合計算得出
3 實驗與分析
3.1 實驗環境
為了分析PBFT性能,建立了一個由15臺運行Linux操作系統的計算機仿真平臺,每臺計算機參數如下:16GB內存,i5-4590 CPU和HD Graphics 4600 顯卡,Linux系統版本是Ubuntu 16.04。所有計算機都在同一局域網中,根據Hyperledger fabric V1.1的要求配置系統環境,建立區塊鏈基礎設施網絡。
[3]?呂芙蓉,陳莎.基于區塊鏈技術構建我國農產品質量安全追溯體系的研究[J].農村金融研究,2016(12):22-26. (LYU F R,CHEN S. Research on the construction of Chinas agricultural product quality safety traceability system based on blockchain technology [J]. Rural Finance Research, 2016(12):22-26.)
[4]?MAKSIMOVIC M, VUJOVIC V, OMANOVIC-MIKLICANIN E. A low cost Internet of things solution for traceability and monitoring food safety during transportation [C]// Proceedings of the 7th International Conference on Information & Communication Technologies in Agriculture, Food and Environment. Kavala, Greece: Zacharoula Andreopoulou, 2015: 583-593.
[5]?TSE DANIEL, ZHANG B, YANG Y, et al. Blockchain application in food supply information security [C]// Proceedings of the 2017 IEEE International Conference on Industrial Engineering and Engineering Management.Piscataway, NJ: IEEE, 2017: 1357-1361.
[6]?TIAN F. A supply chain traceability system for food safety based on HACCP, blockchain & Internet of things [C]// Proceedings of the 14th IEEE International Conference on Service Systems and Service Management. Piscataway, NJ: IEEE, 2017:1-6.
[7]?AHMED S, ten BROEK N. Food supply: blockchain could boost food security [J]. Nature, 2017, 550(7674): 43.
[8]?FU Y, LI F. Application of internet of things to the monitoring system for food quality safety [C]// Proceedings of the 4th International Conference on Digital Manufacturing & Automation. Piscataway, NJ: IEEE, 2013:296-298.
[9]??GAI K, CHOO K R, Zhu L. Blockchain-enabled reengineering of cloud datacenters [J]. IEEE Cloud Computing, 2018, 5(6): 21-25.
[10]??LIANG X, SHETTY S, TOSH D, et al. ProvChain: a blockchain-based data provenance architecture in cloud environment with enhanced privacy and availability [C]// Proceedings of the 17th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing. Piscataway, NJ: IEEE, 2017: 468-477.
[11]?FU X, WANG H, SHI P, et al. JCLedger: a blockchain based distributed ledger for JointCloud computing [C]// Proceedings of the IEEE 37th International Conference on Distributed Computing Systems Workshops. Piscataway, NJ: IEEE, 2017:289-293.
[12]?XIE C, SUN Y, LUO H. Secured data storage scheme based on block chain for agricultural products tracking [C]// Proceedings of the 3rd International Conference on Big Data Computing and Communications. Piscataway, NJ: IEEE, 2017:45-50.
[13]?BENET J. IPFS — content addressed, versioned, P2P file system [J]. arXiv E-print, 2014: arXiv:1407.3561.?[EB/OL]. [2018-10-12]. https://arxiv.org/pdf/1407.3561.pdf.
[14]?劉肖飛.基于動態授權的拜占庭容錯共識算法的區塊鏈性能改進研究[D].杭州:浙江大學,2017:36-38. (LIU X F. Study on performance improvement of Byzantine fault-tolerant consensus algorithm based on dynamic authorization [D]. Hangzhou: Zhejiang University, 2017: 36-38.)
[15]?張文彤,董偉. SPSS統計分析高級教程[M].北京:高等教育出版社, 2013:97-121. (ZHAGN W T, DONG W. SPSS advanced course in statistical analysis [M]. Beijing: Higher Education Press, 2013: 97-121.)