APP下载

区块链技术的农产品溯源可信平台研究与实现

2022-05-10廖定安

湖北农业科学 2022年7期
关键词:视图共识区块

廖定安

(常州纺织服装职业技术学院机电学院,江苏 常州 213164)

农产品溯源系统记录了农产品从生产到餐桌整个过程中的关键、详细信息,能够追溯农产品的来源。当农产品出现质量安全问题时,相关部门可以通过追溯系统提供的信息,精准、快速地定位到农产品出现问题的环节,第一时间将不合格农产品批量召回,确认问题责任节点和人员,将损失尽可能降低到最小。这个过程是处理当前农产品质量安全问题的一种效果较好的方式。农产品追溯涉及从生产到消费者整个供应链上各个环节的对象[1],包括农产品种植方以及生产、加工、物流服务企业、销售企业和消费者等。农产品追溯过程的复杂性导致质量监管执行难度大,涉及步骤多、过程长、范围广且交错性强,追溯数据集中复杂,供应链之间的质检节点不能完全保证其可靠性,且还存在管理者篡改农产品数据的风险[2]。

区块链是一种公开透明、分布式存储、无篡改、安全可靠的共享账本技术,它被认为是一个天然的信任机器。基于分散信用,在不需要节点互信的分布式系统中借助时间戳、一致性算法以及数据加密技术,解决了数据存储的不安全性和低效率问题[3]。农产品追溯体系若合理植入区块链共识算法等技术,从而建立由算法组成的农产品溯源体系可信平台,将提高系统的可靠性及安全性,使消费者重塑农产品安全追溯的信心,这将是未来追溯体系的发展趋势。

本研究将区块链的基本技术植入农产品信息追溯中,研究并实现了一个农产品安全信息追溯与区块链技术相结合的平台。该平台将区块链可追溯设计方案、区块链可追溯模型和低延迟PBFT 算法有机结合,实现农产品的可信溯源,确保用户可以看到真实的农产品溯源信息,实现农产品溯源系统的安全性和可靠性[4]。

1 方法

1.1 区块链原理

区块链(Blockchain)是一种链结构,使用加密算法按时间顺序组合数据块。它可以构建不易篡改、可追溯、去中心化、多方联合维护的数据库。规则被事先商讨确定后,任何一方有交易请求都必须依据规则实现。数据达成共识后,确认更新。更新后很难删除和更改,只能执行授权的查询操作,这一行为使得信息的多方监督与共享得到实现。区块链集成了共识机制、P2P 网络、智能合约、密码学、区块链结构、时间戳等多种技术,可以实现数据的自验证和管理,无需依赖其他设备[5]。

通常每个区块由区块体和区块头组成,以单位区块的有序链状数据块结构被称为区块链。上一个区块头的哈希(Hash)值会到下一个区块头,链式数据的存储结构由此形成。区块中的数据存储在Merkle 树结构中。数据块自上而下重复散列,最后根节点的散列值存储在区块头中,事务数据存储在区块体中,如图1 所示。当数据更改时,Merkle 树的根节点必须更改。区块与区块之间的链接借助了Merkle 树结构的特点与时间戳,区块之间的时间连接性是数据不易被篡改的主要原因。一旦数据块被篡改,篡改就会传导到Hash 计算,最后传导到根哈希,即区块头中的Merkle 根,这就使得该系统具有可信度。这对于数据的追溯系统是可靠的[6]。

图1 区块数据结构

1.2 优化的PBFT(Practical byzantine fault tolerant)算法

一般的PBFT 共识算法流程如下。如果令c、o、t分别表示客户端发送的请求、请求的操作以及请求的时间,将客户端的请求定义为<REQUEST,c,o,t>;如果,令c、v、t、r、i、f分别为客户端、客户端当前视图、发送请求的时间、客户端请求被执行的结果、接受请求的节点编号、块链网络中错误节点的总数,客户端的请求被处理的结果可以表示为<REPLY,c,v,t,r,i>。网络中随机选择的节点称为主节点,即主节点,剩余节点称为备份节点,即备份节点。视图由主节点和备份节点组成[7]。以下是对PBFT机制的定义。

定义1:Quorum 中两两交集是非空的,且通过系统节点集合构成。如果令U表示系统的节点集合,U={Q1,Q2,…,Qn} ,则将Q称为一个 Quorum,具体表述见式(1)。

且满足下面的性质:①Quorum 中任意2 个至少会存在1 个共用的且正确的节点;②不出现错误的Quorum 必然是存在的。

定义2:令v表示视图的编号,视图可以定义为达成一致的群。在IPBFT 机制中,对群中节点变化的观察以正确节点一致性的要求进行。如果视图节点的编号依次为(0,1,2,…,N-1),以此共有N个节点,将p设为主节点的标号(其余节点replica 是备份节点),当群中主节点出现故障时,则主节点会顺次下移为下一个编号的节点,因此,视图编号增加1,视图也随主节点的变换而发生切换,满足式(2)。

IPBFT 可以迅速、有效地解决拜占庭问题,这对于农产品溯源平台是较优且合理的选择。因此,作为区块链追踪系统的底层算法,本研究采用IPBFT共识算法进行处理[8]。

1.3 区块链技术的农产品溯源可信平台架构

基于传统农产品溯源和区块链技术的特点,设计了植入区块链技术的农产品溯源模型。区块链关键技术可以使产品的流通流程实现分布式存储各生产环节的可追溯数据,并将可追溯数据安全存储在相应的台账中。数据详实,保真度高,使得农产品的可信溯源功能得以实现。平台架构如图2 所示。

图2 溯源可信平台架构

农产品的流通过程要经过许多环节,参与节点是农产品信息传递的重要环节。因此,为每个参与节点都设置1 个密钥,其中包含农产品的过程链信息,这样产业链中的每个参与节点在1 个环节内对信息加密时都可以使用专属的密钥来进行。在产品交易环节中,发起者首先通过自己的密钥对节点进行身份验证,然后开始整个交易过程。此时,交易2个节点需要使用非对称加密技术来达成协议,从而实现产品所有权的转移[9]。

通过智能合约的编制,农产品的任意信息传递和坐标变化都可以记录在区块链上,真实有效,可以满足农产品产业链的实际需求。智能合约的这一系列功能合约可以用代码的形式在区块链上被满足。产品可追溯性的全过程是透明的、防篡改的,解决了传统可追溯性的完整性问题[10]。

共识算法确保了数据的公开性和透明性。例如,在节点存储信息之后,广播被发送到整个网络。信息不被篡改是由一致性算法和密码学两者保证的,产品信息在链中所有节点确认广播后将被分发并存储在每个节点的分布式账本中。

如果链路的参与节点发生故障,系统仍可正常运行,故障节点可以在系统中读写数据,它们被赋予了这样的权力,并且数据可以被恢复,每个节点因为链中的块可以同步数据而具有可以共享产品信息的功能。系统去中心化效果的实现在保证数据真实性的前提下,可以实现对信息的有效跟踪和追溯。

2 结果与分析

2.1 农产品溯源可信平台的实现

本研究的区块链系统采用Linux 环境,构建了1个基于多Docker 容器的Fabric 分布式网络,并基于Hyperledger Fabric 系统实现。使用CouchDB 数据库,主要使用shell 脚本来构建网络。智能合约是用Go 语言实现的,相关的依赖关系是NodeSDK。开发并实现资源调用的Restful接口。应用系统用C 语言开发,采用MVC(Model-View-Controller)架构,前端运用Boostrap 框架,结合区块链系统使用MySQL 数据库进行存储。以下介绍区块链系统的部署情况。

1)构建区块链的网络环境。共识算法采用IPBFT 算法,并依据产业链中各环节的现实需要编写智能合约,以确保可以正常运行区块链系统。

区块链系统运行的基础和前提是Fabric 环境。运行平稳且性能良好的Fabric 环境会使智能合约的运行与节点的共识正常工作,是关键的因素。该平台使用Fabric 1.1.0。安装docker 并下载Fabric 源代码,将Docker 容器和Fabric 源代码全部成功安装后,启动Fabric 网络。执行代码为:./network_setup.sh up。

2)智能合约的部署。将编写好的智能合约放到指定文件夹中,然后启动cli 容器及peer,加入到通道后执行代码为:peer chaincode install-n myccp/opt/gopath/src/github. com/hyperledger/fabric/suyun/chaincode/01-chaincode-v1.0,将链码(智能合约)进行安装,其中docker 容器中链码所在的位置是-p 后的内容,然后将链码实例化,实例化完成后,部署完毕。

3)IPBFT 共识的部署过程。在超级账本中,consensus 文件夹中存储的是共识算法的实现代码。consensus 模块主要包括该算法的hyperledger 内部接口以及算法插件的内部到外部接口。它包括6 个文件模块:controller、executor、helper、noops、pbt、util。根据可插入的共识算法模块特点,可以在controller中选择特定的识别算法。

4)系统界面展示。根据农产品溯源的实际应用需求,结合系统的详细设计,实现了系统的主要功能模块。系统用户为不同的角色提供不同的访问点。农产品追溯供应链不同环节的企业用户使用本系统租用应用服务时,需要在注册成功后登录系统购买应用服务。提交订单后,等待管理员审批,即可进入相应的管理页面进行相应的数据管理操作。进入登录页面后,点击按钮进入注册页面并填写相关信息。用户注册成功后,根据不同的角色登录。登录界面如图3 所示。

图3 农产品溯源可信平台登录界面

管理员可以通过查询农产品的区块信息和详细信息,点击追溯查询浏览每条记录,确认追溯过程链上状态和运行正常。消费者如果想要查看农产品的信息,如种植、销售、人员、区块链信息,可以通过产品包装上的二维码扫描和输入追溯代码,跳转到农产品的信息追溯界面而获得。

2.2 农产品溯源可信平台测试

大规模用户对区块链农产品溯源可信平台有需求,平台要求具有完备的功能和稳定性。需要对平台进行功能测试,包括表单测试、前端页面事件跳转测试、业务功能测试,测试系统的业务功能是否满足设计要求,是否达到预期结果。

表单测试主要对表单的输入和数据的显示进行测试,确保农产品质量可追溯系统的正确性。事件跳转测试是对界面上单击事件的跳转进行测试,检查页面跳转是否异常。结果如图4 至图6 所示。

图4 事件跳转测试结果

图5 表单测试结果

图6 系统业务功能测试

3 小结与讨论

随着人们生活水平的提高,食品安全问题越来越受重视。传统的农产品溯源平台采用单一的中心化存储解决方案,供应链中节点多,关系复杂,安全问题责任方确认成本高、效率低。本研究提出的基于区块链的可信农产品溯源系统去中心化、分布式存储、防篡改,能很好地解决食品安全溯源问题。

1)构建农产品溯源系统平台,实现了去中心化,结合区块链存储结构和共识算法,每个节点都有自己的分类账本,使得农产品信息易被篡改问题得到解决。

2)结合区块链溯源方案,模型和低延迟一致性算法的设计,采用Hyperledger 构建区块链可追溯系统的模块和架构,与传统的可追溯系统相比,该系统具有分散和分布式数据存储的特点,并建立了新的信任机制,以确保信息的安全性和可信度,为农产品的可追溯性提供了可靠的平台。

3)本研究设计实现的存储方式也存在一定的局限性,在数据不丢失的情况下对存储和查询性能方面进行了优化,当出现线下数据库宕机和数据丢失时,数据的真实性无法得到验证,未来应该结合本研究提出的存储和查询方法考虑数据安全问题,对系统进行进一步的优化。

猜你喜欢

视图共识区块
共识 共进 共情 共学:让“沟通之花”绽放
区块链:一个改变未来的幽灵
论思想共识凝聚的文化向度
区块链:主要角色和衍生应用
商量出共识
区块链+媒体业的N种可能
读懂区块链
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图