基于联盟区块链的农产品质量安全高效追溯体系
2019-10-23王可可陈志德徐健
王可可 陈志德 徐健
摘 要:針对农产品追溯系统中的安全和效率问题,依据区块链的去中心化安全特性,提出一种基于联盟区块链的高效解决办法。首先,通过星际文件系统(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.)