孙 俊,何小东,陈建华
(中南林业科技大学 计算机与信息工程学院,湖南 长沙 410004)
农产品的安全追溯是全国乃至全世界关注的热门问题。我国农业农村部将2018年确定为农业质量年,以此来确保农产品安全问题;同年3月召开的全国两会上,多位委员再次提出要加强农产品全程监管,实现质量可追溯。
目前,在农产品追溯系统的研究上,李琳等[1]、孙书谨等[2]研究了基于RFID技术的追溯系统;张京京等[3]设计了基于NFC的农产品追溯系统;李建伟[4]、董玉德等[5]、申强等[6]研究了追溯系统中供应链的优化;杨信廷等[7]、张驰等[8]阐述了农产品追溯系统中关键技术的研究进展;刘佳[9]研究了基于二维码技术的追溯系统;颜波等[10]研究了物联网环境下追溯系统的监管体系。但以上研究仍不能完全解决农产品追溯系统中心化管理及数据易被篡改的问题。区块链作为一种基于非对称加密算法和共识机制的分布式数据库,通过各节点的集体维护保证网络的稳定运行,具有去中心化、可追溯性、一致性与不可篡改等特性[11]。为此,本研究提出基于区块链的农产品追溯系统框架模型,将区块链的技术框架同现有农产品追溯系统的框架相融合,研究解决农产品追溯系统因中心化管理,导致数据不便及时共享、存储不安全、难以追溯等问题,以提高农产品追溯系统的鲁棒性和数据的可靠性。
1991年, Haber等[12]第一次描述了区块的加密链,并于1992年将Merkle树并入加密链,以便多份文件集中于一个区块中;2008年,Nakamoto[13]在其论文《比特币:一种点对点的电子现金系统》中首次引用了区块链并阐述了相关原理。区块链可以理解为一种基于密码学方法、按时间顺序相连的链式数据结构,其作为一个分布式账本,不需要借助或依赖第三方信用,具有数据一致性、不可篡改性、可追溯性以及去中心化的特性[14]。
区块链现阶段主要包括公有链(Public blockchain)、私有链(Private blockchain)和联盟链(Consortium blockchain)3种类型[15-16],各适应于不同的场合,具有不同的特性。公有链是最早的区块链,基于特定的共识机制和激励机制,共识过程的各节点通过密码学原理以及代币奖励等激励机制共同维护数据库的安全,具有去中心化、访问门槛低、数据无法篡改等特点;私有链适应对象为个人或组织,其中各个节点的读取和写入权限受控制,但其交易速度非常快,为隐私提供了保障,蚂蚁金服就是私有链的典型代表;联盟链介于公有链和私有链,属于多中心化,超级账本(Hyperledger)是联盟链运用的典型[14]。公有链、联盟链、私有链的各自特征见表1。
表1 公有链、联盟链、私有链的特征
区块链的主要技术特点:(1)不可篡改性。区块链中提供了多种共识机制可防止数据的篡改和删除。(2)去中心化,分布式容错。区块链中的数据分布式存储,不需要统一的软硬件,同时分布式系统使得网络抗攻击性强,理论上能容许一半的节点出错。(3)一致性、可追溯性。区块链中的数据严格按照加密算法进行存储和核算,能保证数据的一致性,相邻的2个区块通过区块头的哈希值达到链式效果,也方便追溯时定位某次数据的所属区块。
综上,利用区块链共识机制、分布式存储、加密等技术特点,能针对性地解决农产品追溯系统中,企业和部门间数据不共享、中间环节数据可能被恶意篡改以及数据来源不明等问题。本研究拟采用联盟链作为组织模式,以在保证交易速度的情况下,能实现部分去中心化,同时保证系统的安全性和公开透明性。
本研究提出的基于区块链的农产品追溯系统基本架构分为数据层、网络层、共识层、激励层、合约层和应用层(图1)。其中,区块链技术主要应用于框架中的数据层、网络层、共识层和应用层。
数据层负责将通过数字化方式采集到的数据进行分布式存储,将数据记录到区块主体的Merkle树中,Merkle树中的所有数据通过Hash求值得出Merkle树的根,并将根值保存在区块头中,同时将上一个区块头的80字节数据进行SHA256运算,作为当前区块的父哈希值,形成哈希链式结构,区块盖上时间戳加上数字签名后便开始生效,区块一经形成则不可篡改。
网络层负责数据的传播和验证。农产品整个生命周期中涉及到的身份识别、源位置、属性、认证等数据均与一个特定的项目或批次ID相连接,认证授权中心通过参与者拥有的密钥与农产品ID号来判断节点的权限。节点收到各环节上传的数据后,通过P2P网络向全网广播。数据在流转过程中(如棉花从种植地到加工厂的流转中),产品的所属关系发生转移,2个节点间在达成协议后,使用数字签名(多重签名)和时间戳,来保证信息不会被篡改;P2P的组网方式使得每个节点均以扁平式拓扑结构相连接,参与者根据所分配的密钥对应相应的权限,生厂商和供应商无法获知第三方人员的权限信息[17]。
图1 基于区块链的农产品追溯系统架构
共识层采用实用拜占庭容错协议(PBFT),以保证数据在网络传播和存储过程中不被恶意节点篡改,即使在网络中有不明节点的情况下仍能达成共识,同时不同于PoW和PoS机制,拜占庭容错协议不需要依赖数字货币,能减少大量计算所造成的资源浪费问题。
应用层为不同的主体提供相应的权限和接口,生产商、供货商、经销商等企业可通过系统界面,向区块链输入指定农产品的主要信息。同时,企业和消费者都能通过相应的系统平台,进行产品的查询、追溯和验证,相关的政府权威机构则负责制定标准条例,实时监督。
本研究将传统的农产品追溯系统与基于区块链的农产品追溯系统进行架构比较(图2),传统的农产品追溯系统大都采用B/S(Browser/Server)网络架构,将数据存放在服务器的Oracle、SQL等数据库中,同时整个农产品追溯系统拥有一个中心数据库,在权威政府和相关标准组织的监管下,对溯源数据进行集中式管理。而在基于区块链的农产品追溯架构中,用户通过系统界面注册后,会自动获取1对密钥(1个公钥和1个私钥)[18],区块链网络根据密钥所属类型开放对应权限。消费者只可以查询和追溯农产品数据,生产商、供应商等环节中的人员可进行数据录入和查询,权威机构的政府或标准化组织甚至还可以查看数据录入人员的个人信息等。整个区块链基于P2P网络,每个节点的计算机都可充当服务器。
基于区块链的农产品追溯系统在传统的农产品追溯系统基础上,有一定的创新。首先,P2P的网络结构使数据分布式存储于各节点,其分布式容错特性,减少了网络攻击对数据的影响,区块链的哈希链式结构也排除了人为篡改的可能;其次,联盟链的组织模式对不同主体开放对应权限、区块链的链式结构和时间戳等技术,也方便了用户对数据的查询和追溯;最后,区块链是一个共享性的分布式数据库,不需要用户从生产商、销售商等一级一级往上查询(追溯)数据,同时数据不可篡改的特性,也使数据的可信度大大提高。
以鱼肉制品为例,探讨基于区块链的农产品追溯系统架构在鱼肉制品追溯中的应用。监管组织可借助区块链开源平台客户端提供的硬代码,初始化数据生成创世区块,也可以利用python、java等编程语言自行建立创世区块,自行创建的过程中,需要定义区块的时间戳、hash值、工作量证明等数据结构;随即监管组织将包含创世区块、域名数组、IP地址数组等基础组件的区块链向外发布对外接口;鱼肉制品追溯中的相关单位第一次访问该区块链将创建一个节点,之后的每次访问都会通过连接项目中的域名和IP地址,加载验证本地区块或者同步区块链;追溯环节的相关单位通过私钥连接网络,在系统中输入数据,数据验证成功后,信息将以序列化的数据形式存储在产品信息电子档中。在追溯系统中,产品信息电子档是农产品信息的体现方式。产品信息电子档包括以下几个方面:追溯环节中相关单位的信息、时间戳、农产品信息。同时,产品信息电子档中嵌入了一定的硬代码,使不同身份对应不同权限。
图2 不同追溯系统网络架构对比
以鱼肉制品为例,分析其在生产、加工、销售和追溯等环节中数据的录入与追溯。首先,在追溯过程中涉及到的个人或企业要由权威机构认证其身份信息,并由审计系统对相关的外部条件进行验证,验证通过后,参与者在基于区块链的农产品追溯系统上注册登记身份账户,系统自动分配对应的1对密钥,密钥决定了与参与者身份相对应的权限。
养殖(生产)中,养殖场为所有鱼类进行身份标识,并将属性、所处位置、饲料信息、检测免疫等数据输入系统中,区块链根据地理位置和生产时间自动生成唯一的ID号。ID号与数据记录相连,一起存储在区块链中,随后系统平台为每个鱼肉制品自动生成附带时间戳的产品信息电子档。
在鱼肉加工成新产品的过程中,产品信息电子档发生转移,权威机构需要事先确定合理的加工用料的计算方法(如金枪鱼在加工成罐装的过程中,200 g金枪鱼最多用10 mL橄榄油),并将实施过程存储于区块链合同中用于验证,加工环节中的参与者将产品类型、用料含量、包装材料、保质期等信息数字化存储于区块链中,随即更新产品信息电子档。经过加工后的鱼肉成了罐头、鱼块等不同的新产品,新产品最终分销到超市、鱼贩、餐厅等不同场所。销售企业或个人必须明确产品来源,同时将产品价格、售出时间等信息写入产品信息电子档,保证区块链中数据的完整性和连贯性。
最终,消费者、企业、相关机构均可通过二维码、条形码、RFID等访问产品的信息电子档,追溯和查询产品的整个流通过程。在鱼肉生产加工的每个环节中,认证机构都可介入审核数据。另外,不同身份对应查询到不同的产品信息,消费者只能看到与产品相关的主要信息,如保质期、生产地、生产时间、产品价格等,相关监管机构可以查询到各环节中的参与者信息、制作流程等细节(图3)。产品的标识符通过区块链传递,区块链是所有数字化信息存储和流通的载体。
图3 基于区块链的鱼肉制品追溯系统流程
本研究将区块链技术与现有农产品追溯系统的架构相融合,提出了基于区块链的农产品追溯系统基本架构,并对架构各层功能进行详细分析。同时将该系统与传统的农产品追溯系统进行比较,具有去中心化、数据分布式存储的特点,避免了因有中心而易受网络攻击的问题,提高了系统的鲁棒性;数据区块的链式结构和时间戳排除了人为篡改的可能性,提高数据的可信度和可靠性。以鱼肉制品追溯系统为例,说明了基于区块链的追溯系统在生产、加工、销售和监管等各个环节的追溯流程,探讨了系统实际应用的可行性,为进一步研究和建立基于区块链的农产品追溯系统原型提供技术参考。
由于目前区块链技术还处于起步阶段,该系统受限于当前区块链的技术现状,区块链要求系统中的各个节点均存储数据备份,这对于拥有海量数据的追溯系统来说是受限的,区块链的性能和效率亟待提高[18]。同时,本研究主要保证数据录入系统后数据不被篡改,但对于数据源头即录入之前数据被篡改的情况未设计保障机制。因此,在后续的研究中,将着重考虑数据录入之前到数据查询整个过程中数据的一致性,并提高本系统的性能效率,实现可实用的系统原型。