动物检疫证区块链应用系统设计与实现
2020-08-04钟林忆孟祥宝刘红刚刘朝阳
钟林忆 孟祥宝* 刘红刚 刘朝阳 汪 洋
(1.广东省现代农业装备研究所,广州 510630;2.广州市健坤网络科技发展有限公司,广州 510630)
1 引言
动物检疫是食品安全监管的重要环节,动物检疫电子出证则是一项保障食品安全的重要工作。动物检疫合格证和动物产品检疫合格证,是畜牧、家禽及其它肉类产品安全走向市场流转的凭证,具备查询检疫信息快、全程追踪动物及产品流向、疫病追溯及责任管理优势,关系食品安全与居民健康[1]。
由于经济利益的驱使,动物检疫开证弄虚作假现象时有发生,给传统的动物检疫开证系统带来巨大的挑战,也给社会食品安全带来严重的影响。如:2012年1 月至2013 年3 月,广东省高州市的1 名兽医站站长,先后30 多次违规为来源不明的乳猪开具动物检疫合格证497 张,获利9 万多元;2016 年9 月,一辆从山东省运往广东省的拉有250 只貂和貉的货车被查获,货主私刻公章伪造动物检疫合格证;2017年11月至2019 年4 月,广东省梅州市的1 名检疫员,多次违规为冷冻猪肉开具“合格证明”,获利5 万多元。动物检疫开证弄虚作假现象主要包括:检疫出证过程信息造假开证;私刻公章伪造检疫合格证;换证过程制造信息不对称作假,等。
区块链本质上是一个分布式数据库,集合密码学、分布式存储、智能合约、共识算法技术[2],因其去中心化、防篡改、公开独立、匿名安全、可追溯等特点,被视作为价值互联网和信任互联网的重要支撑,天然与“存证”相匹配。巢燕在电子证照管理系统的设计中,引入了区块链技术,将电子证照数据存入数据不可篡改和安全可信的区块链上,实现了对海量电子证照数据的安全存储、安全查询、可信数据共享,提高了电子证照数据的安全性、可信性和一致性[3]。孙国梓等人,面对传统电子数据存证系统存在的第三方信任危机、数据安全隐患等问题,设计与实现了基于区块链技术的电子数据存证系统,通过编写智能合约,将关键数据上链,保证电子数据的不可篡改,同时对用户访问数据的权限进行约束,有效地解决了电子数据存证的篡改和安全问题[4]。孙志国等人,分析了食品溯源系统面临的问题,并对将区块链技术应用于食品安全领域进行了展望,提出了区块链技术可以低成本高效率地解决食品安全领域存在的信任难题,变对人的信任转为对机器的信任,可以产生不受人干扰的食品安全可信追溯体系[5]。
针对“区块链+检疫证”,探索建立一套连接养殖场、屠宰场、经销门店和监管方的动物检疫证区块链应用系统,遵循业务流程的链上流转,检疫员、养殖场等相关方在区块链账本上共同记录票据信息和交易信息,通过去中心化、无法篡改,保证动物检疫出证换证过程安全透明。
2 区块链的概念及技术选择
2.1 区块链基本概念
在区块链经典概念中,区块链被定义为去中心化和去信任可靠数据库的方式,对于任意链条节点的全部交易的数据,通过加密算法进入到一个数据块,共同来认定记录是否为真实[6‐7]。区块链涉及密码学、分布式账本、共识机制、智能合约四项核心技术,用一个家谱维护的通俗例子来说明区块链的特性:一个家族,每个同姓氏的家庭都有本自己版本的家谱记载自己的人丁变化,这就是去中心化;每个家庭的家谱对整个家族都是公开的,这就是开放性;家族整体家谱维护和更新需要在重大节日,经过族里绝大多数人的认可,不是随便哪个家庭说改就改的,这保证了信息的不可伪造和篡改;大家都是根据中国传统文化规则分年幼尊长,亲疏远近及生老病死更新的家庭变化,并不需要那一个人说三到四,这就是数据自治性。
站在技术的角度,区块链其实是一个分布式的公共账本技术,所有用户可以查看这个账本的内容,可以参与账本的更新维护。随着区块链的不断发展和创新应用,面向多样的应用场景,要求区块链技术在去中心化程度、用户参与程度等方面有所不同,区块链随后发展成了3 种技术分支,即“公有链”、“联盟链”和“私有链”。
(1)公有链。公有链属于完全去中心化,任何节点都向任何用户开放,每个用户都可以下载获取完整的区块链账本数据,都可以对账本进行读取、写入[8]。公有链的优点在于基于共识机制的完全去中心化,具有高度安全性,不受任何个人或组织控制,所有账本数据公开、透明;缺点在于每一次有用户对账本数据进行维护时,所有的节点需要达成共识,而公有链通常节点众多,这就带来公有链处理数据的效率问题,也对节点所需的存储、带宽和计算能力有较高的要求。
(2)联盟链。联盟链属于部分去中心化,它并不是对任何用户开放,只有被提前指定的若干组织或机构用户,在被赋予读写权限的前提下,才能相应地对账本进行读取、写入[9]。也就是说,联盟链是被指定的若干组织机构共同参与管理、共同记录账本数据。联盟链的优点在于节点数量和用户读写权限已经提前规定好,可控制性强,处理账本数据的速度快、效率高;缺点在于对用户节点赋予一定的信任度,不能排除多个用户节点出现合谋篡改数据的可能性。
(3)私有链。相比较而言,私有链不具备去中心化,账本数据的读取、写入权限完全被一个组织掌握,由这个组织来决定参与者是否可以参与账本数据的维护、是否可以查看账本数据[10]。私有链的优点在于可以由自己制定策略,读取速度极快,隐私保护性高,不容易被恶意攻击;缺点在于过于中心化,跟区块链倡导的“去中心化”理念有所背离,跟其他中心化数据库差别不大。
2.2 区块链技术选择
动物检疫电子开证或存证业务,是由指定检疫机构用户进行写入操作的,并且检疫证数据具有敏感性,它只能存储于检疫机构、检疫监督机构、检疫业务领导部门、第三方信任单位等有限的节点上,并非任何人可以下载获取完整的检疫证数据;因此,检疫证区块链应用系统,不适宜采用公有链。而为了防止单个机构用户对数据进行篡改,需要多个组织机构共同来管理检疫证数据,以保障检疫证数据的可靠性;因此,检疫证区块链应用系统,也不适宜采用私有链。而联盟链具备部分去中心化、提取指定写入和读取的用户权限、由多个组织机构共同维护账本数据;因此,联盟链是检疫证区块链应用的最佳选择。
超级账本Hyperledger 是以联盟链为出发点的开源区块链技术[11‐12],于2015 年由Linux 基金支持发起,目的是推进区块链软件和系统的开发,提升数据的防伪防篡改性。Hyperledger Fabric 是超级账本的三大账本平台项目之一(另外两个项目分别是SAW‐TOOTH 和IROHA),是一个带有可插入各种功能模块架构的区块链实施方案,也是目前比较有影响力的联盟链技术解决方案。Hyperledger Fabric 框架提供了成员管理服务、区块链服务、链码服务,支持Node.Js、Python 和Java 等多种语言,支持拜占庭容错等新的共识机制,支持权限管理。通过Hyperledger Fabric平台,可以很轻松地搭建起企业应用级的区块链网络。
3 系统设计
3.1 系统业务梳理
从养殖场、屠宰场再到经销门店,整个动物检疫及追溯流程包括:(1)养殖场填写相关资料,向检疫部门提交检疫申请;(2)检疫部门收到检疫申请后,安排检疫人员进行产地检疫,对于检疫合格的动物,生成并发放动物检疫合格证;(3)动物被运送到屠宰场时,屠宰场用户进行动物进场信息登记;(4)动物被屠宰后,检疫人员进行屠宰检疫,对于检疫合格的动物产品,生成并发放动物产品检疫合格证;(5)质检员对动物肉品进行品质检查后,对于肉品品质检查合格的动物产品,生成并开具肉品品质检验合格证。整个业务流程如图1所示。
从图1 中可以看出,一个完整动物检疫信息链条包括:动物检疫申请信息、动物检疫合格证、动物屠宰进场信息、动物产品检疫合格证、肉品品质检验合格证。传统的动物检疫开证系统中,在任何一个动物检疫信息链条里,都存在着人为造假和篡改的可能性,如从动物检疫合格证换成动物产品检疫合格证过程中,就存在人为操作风险(如把动物产品数量虚假填大,与对应的动物数量并不匹配),造成各个链条信息不对称、无法关联上,使得传统的动物检疫系统难以将动物检疫的各个信息链条有效地串联起来,这也加大了监管部门对动物检疫弄虚作假现象的监管难度,让高州的某兽医站站长、梅州的某检疫员能够长期屡次违规而未及时发现。
通过对动物检疫业务流程的梳理,确定了动物检疫区块链应用系统涉及到区块链账本数据包括动物检疫申请数据、动物检疫合格证数据、动物屠宰进场数据、动物产品检疫合格证数据、肉品品质检验合格证数据,区块链账本数据写入用户包括养殖场用户、产地检疫检疫员、屠宰场用户、屠宰检疫检疫员、质检员。
而由于动物检疫数据的敏感性和有限公开性,它只能存储于检疫机构、检疫监督机构、检疫业务领导部门、第三方信任单位等,所以确定以检疫机构、检疫监督机构、检疫业务领导部门、第三方信任单位等为联盟链节点,共同维护账本数据。
3.2 系统架构设计
在确定区块链账本数据来源、账本数据写入用户、节点管理组织机构后,底层采用开源的Hy‐perledger Fabric 区块链技术框架,对动物检疫区块链应用系统的总体架构进行设计,总体架构设计图如图2所示。
系统总体架构设计为3 层,上层为对象层,中间层为应用层,底层为区块链层。这样分层的好处是,有效地把用户交互与数据存储分离了开来。对于用户而言,只需要像操作传统的系统一样,考虑如何去操作和使用系统应用功能,而不需要去考虑底层的数据是如何存储和账本数据是如何入链的。通过这样的分层,系统的结构非常清晰明了。
(1)对象层。对象层是系统服务和证件的对象,包括养殖场用户、屠宰场用户、检疫用户、监管用户、经销门店用户、消费者用户和第三方用户等服务对象,包括动物检疫合格证、动物产品检疫合格证、肉品品质检验合格证等证件对象。
(2)应用层。应用层主要是为服务对象进行应用操作产生证件对象,应用层主要提供开证申请(检疫申请)、接受开证、证件信息固定(证件信息确认)、鉴伪查询等应用服务。
(3)区块链层。区块链层是整个系统的底层框架,包括了用于数据存储的数据库,也包括了基于Hyperledger Fabric 区块链技术框架的区块链账本记账服务。
在系统总体架构中,对象层和应用层服务也广泛应用于传统系统,并没有本质的区别,重点和难点在于区块链层,这是区块链系统和传统系统的本质差别所在。区块链层的关键核心在于身份管理、账本节点、交易管理共识机制和智能合约(链码服务)[13‐14]。
(1)身份管理
一般的区块链中,任何组织或个人都可以创建节点,可以对读取和下载账本数据。但对于动物检疫业务来说,其关键操作和账本数据是严格保密的,只有有限的组织机构才能读取或保存账本数据,这就要求对身份的管理和权限的管理。作为联盟链的代表,Hyperledger Fabric 提供了强大的角色管理和权限把控功能,其身份管理模块定义了角色管理和权限把控的核心机制,它可以标识、验证和管理用户。
MSP(Membership Service Provider)是可拔插的接口,有着自定义身份、身份管理(身份验证)、身份认证(生成与验证签名)规则。Hyperledger Fabric 默认实现的MSP 实例,即Fabric‐CA。Fabric‐CA 实现使用PKI方法和X.509 证书,同时提供了用户登记和注册的数字证书管理功能。通过身份管理模块的设计,当有新的组织机构,如食品安全管理部门申请参与时,系统可以为食品安全管理部门进行身份和权限的配置,让其参与账本数据的管理。
(2)账本节点
本系统的网络节点包括存证节点(即:客户端节点)和共识联盟节点(即:记账节点)。存证节点代表最终用户操作的实体,包括养殖场用户、屠宰场用户、检疫用户等,负责提交交易请求(网上申请检疫、产地检疫电子出证、屠宰检疫电子出证、品质检验电子出证等操作,都看作是区块链上的一笔交易)。
共识联盟节点是在网络中负责接受交易请求、维护账本一致性的Peer节点实例。本系统中,共识联盟节点包括检疫机构(凭证管理中心)、检疫监督机构(监督管理中心)、检疫业务领导部门(鉴伪服务中心)、第三方信任单位(系统服务中心)等组织机构用户建立的节点,每个节点都由MSP 颁发身份认证证书,共同组成一个P2P网络。当存证节点提交交易请求时,共识联盟节点通过交易管理共识机制达成共识后,进行广播记账。
(3)交易管理共识机制
本系统中,由于检疫机构、检疫监督机构、检疫业务领导部门、第三方信任单位等,都是基于身份认证的参与者,所有Peer 节点不存在未知的角色,所以整个区块链网络是在一定程度信任的治理模型下运行的,因此本系统不需要麻烦的共识算法,采用PBFT(拜占庭容错)或SBFT(简化版拜占庭容错)共识机制即可,这些共识机制不需要花费昂贵的挖矿成本。
PBFT 是一种状态机副本复制算法,即服务作为确定有限状态机进行建模,状态机在分布式系统的不同节点进行副本复制,每个状态机的副本都保存了服务的状态,同时也实现了服务的操作。动物检疫证区块链应用系统采用PBFT作为交易管理的共识机制。
(4)智能合约
在Hyperledger Fabric 中,账本是一个有序的、防篡改的全记录流程的区块哈希链,它用于记录所有的写入状态,同时提供了对账功能,能进行SQL 形式的查询。智能合约(在Hyperledger Fabric 也称链码,即chaincode)是客户端程序与账本之间的桥梁,账本通过智能合约进行操作或修改的。通过智能合约,客户端程序可以发起交易和查询交易。通过智能合约,为存证节点和共识联盟节点之间进行通信提供了渠道,它为检疫信息的数据入链和防伪查询提供了支持。
3.3 系统功能设计
在系统业务梳理和系统架构设计的基础上,对系统功能进行设计。系统的功能设计为三部分,分别为用户交互部分、区块链服务部分和节点管理部分。系统功能设计图如图3所示。
(1)用户交互
用户交互主要为客户端用户提供用户注册与登录,动物检疫申请信息填写、动物检疫合格证信息生成、动物屠宰进场信息登记、动物产品检疫合格证信息生成、肉品品质检验合格证信息生成等数据上链操作,检疫信息及证件防伪查询操作。
注册与登录。养殖场用户、检疫员、屠宰场用户、质检员等各类需要将信息写入账本的用户,在注册时直接将自己的信息捆绑到能够唯一标识身份的DID(分布式身份标识)上,然后将其作为交易数据的一部分,打包存放至区块链中;当用户想要操作的时候通过区块链查找到其DID,然后实现自主身份认证,避免忘记密码的苦恼。
交易操作。检疫申请、产地检疫开证、屠宰信息登记、屠宰检疫开证、品质检验开证等,每一次的信息写入或开证操作,都看作是区块链上的一笔交易,将其数据上链。
防伪查询。通过查询、区块链哈希数值比对,证明检疫证信息的真伪。
(2)区块链服务
区块链服务用于实现交易数据的入链和出链。包括哈希运算、智能合约、共识机制、账本存储等功能。
哈希运算。区块链存储的是哈希值,用户写入时,将用户写入的信息以及用户身份标识,打包进行哈希运算,得到哈希值;当用户查询时,将根据关键字,查询数据库并进行相同的哈希运算,并将得到的哈希值与区块链中存储的哈希值数据进行比对。
智能合约。智能合约是定义交易和进行交易的指令,当哈希运算生成的哈希值需要入链时,由程序调用,通过执行自身逻辑来提交交易提案。
共识机制。交易消息被网络广播发送到各个共识联盟节点,通过共识机制确保交易消息在各个共识联盟节点上的最终一致性。
账本存储。实现交易数据的入链与区块存储。
区块链服务功能网络拓扑图如图4所示。
(3)节点管理
这里的节点指的是共识联盟节点,节点管理包括节点添加、凭证中心认证、节点删除等功能。每个新增的节点都要经凭证中心认证,获得身份认证证书。新增的节点与其他共识联盟节点第一次连接时,主动发送消息进行身份验证。当删除节点时,凭证中心认证重新更新节点身份认证证书。
4 系统实现
4.1 实现流程
通过对系统业务梳理、系统架构设计和系统功能设计,以广东省为例,对动物检疫证区块链应用系统进行了实现。系统的实现流程如图5所示。
(1)客户端用户登陆系统,根据客户端程序设置的用户操作权限,进行相关的应用操作,如养殖场用户填写检疫申请、检疫员填写检疫信息并生成检疫证书等,这些信息将写入数据库并添加客户端用户的身份标识。
(2)客户端后台程序将客户端用户写入的信息以及用户身份标识,进行哈希运算,得到哈希值,发起交易请求,通过实例化的智能合约(Chaincode),经共识联盟节点通过PBFT 算法达成共识之后,主节点打包交易数据入链,其他节点进行同步数据入链。调用链码,执行交易事务的部分代码如下:
(3)经由不同的客户端用户写入操作,将动物检疫申请数据、动物检疫合格证数据、动物屠宰进场数据、动物产品检疫合格证数据、肉品品质检验合格证数据等整个动物检疫过程节点信息入链,形成动物检疫溯源链。创建块文件:
(4)当进行动物检疫信息查询时,将数据库中查询到的数据进行相同的哈希运算,将哈希运算得到的哈希值与区块链中存储的哈希值进行对比,验证哈希值数据是否一致。调用链码,查询交易记录的部分代码如下:
(5)如哈希值一致,说明数据信息未进行篡改,系统将查询结果进行显示,并生成防伪溯源鉴定报告或检疫证鉴证报告。
动物检疫证防伪数据查询界面如图6所示。
4.2 系统运行
系统进行了初步运行,主要在检疫开证环节进行了区块链验证,如:从动物检疫合格证到动物产品检疫合格证的换证过程,每一批屠宰后的动物产品数量,均有对应屠宰前的动物数量,并由区块链将屠宰前和屠宰后的信息进行了串联,这杜绝了换证后的“合格证明”中掺入冷冻肉的可能性,保障了食品安全。但动物检疫证区块链应用系统还处于1.0版本的试运行阶段,应用环节主要集中在检疫开证环节,要将整个链条打通,还需要政府从行政角度加大力度推行。当前,广东省出台了《广东数字农业农村发展行动计划(2020‐2025年)》,提出了“探索‘区块链+存证’应用,推进养殖、屠宰、饲料、兽药企业等数据直联直报”。下一版本的动物检疫证区块链应用系统,将考虑把饲料和兽药等数据纳入区块链,形成链条完善的动物检疫区块链联盟链。
5 结束语
为提高动物检疫证防篡改和防伪溯源功能、消除换证过程操作风险和食品安全隐患,基于区块链的联盟链思想和开源的Hyperledger Fabric 技术,设计与实现了动物检疫证区块链应用系统。系统遵循业务流程的链上流转,养殖场用户、动物检疫员、屠宰场用户、质检员等相关方在区块链账本上共同记录票据信息和交易信息,去中心化、无法篡改,保证出证换证过程安全透明,检疫监督机构可获得监管节点对检疫证出证换证全流程进行监管,有效提升检疫证应用的安全性和可追溯性,减少过程漏洞和提升风险管控能力。这套基于区块链技术的系统,将“技术信任背书”与“存证信任背书”相融合,实现“双信合一”,成为保障肉类食品安全的重要支撑。
我国已将区块链技术上升为国家战略技术,并强调把区块链作为核心技术自主创新重要突破口,加快推动区块链技术和产业创新发展[15]。动物检疫证区块链应用系统的设计与实现,为区块链技术在农业领域的应用提供了一种新的实现方式。持续将区块链技术与农业产业结合,推动食用农产品合格证、“三品一标”认证、农产品安全溯源等信息上链,面向不同的场景,建设相应的农业区块链应用系统,将有效解决农产品质量安全、防伪及信任问题,推动农业数字化创新发展,重塑农业行业。