APP下载

基于区块链的食品溯源技术研究

2020-11-03何思宇张青川姚双顺

农业大数据学报 2020年3期
关键词:拜占庭分块共识

左 敏 何思宇 张青川 姚双顺

(北京工商大学农产品质量安全追溯技术及应用国家工程实验室,北京 100048)

1 引言

食物是人类赖以生存的物质基础,近年来,随着当今社会物质水平发展,人们对于食品安全与食品品质有了更高的要求。同时,由于食品安全事件的频发,使得人们更加关注食品从源头、生产加工到仓储运输等完整的食品生命周期中所涉及的安全问题。因此,亟需建设完善食品溯源系统,使其更加安全、可信、透明。这不仅能够加强食品监管部门对食品全生命周期的监管,更能够进一步提高食品市场安全水平,保障食品市场健康稳定发展[1]。

区块链的分布式记账结构、安全信任机制以及不可篡改的时间戳等技术使其能够弥补传统溯源技术存在的局限,利用其可信化、去中心化和不可篡改等特点,将食品数据以不可逆的方式写入区块链,从而在实现追溯透明化的同时,能够有效地保证食品追溯数据的安全性和一致性[2-4]。因此,研究区块链技术的应用与实践已成为目前食品全生命周期溯源的不二之选,并且相关研究已经取得了一定的成绩。

IBM 在2018 年正式商用食品溯源区块链项目——IBM Food Trust[5],帮助商家迅速高效地应对食品安全风险;刘海洋等[6]提出一种在农产品种质资源溯源管理的区块链应用方案,从农产品种质源头保障食品安全;钟林忆等[7]应用区块链技术为肉类食品提供安全保障;江琳莉等[8]以区块链结合物联网、AI 等技术,构建出农产品溯源体系;Xie等[9]提出了区块链双链结构,用以保证农产品数据安全,使其不会被恶意篡改或破坏。

由于我国食品溯源信息量增长迅速且十分巨大,又由于在食品的全生命周期中流转场景节点众多,这不仅需要足够的存储容量,对区块链的吞吐量、吞吐效率也要求很高[10]。因此,针对食品溯源场景节点众多、区块链网络负载大、网络延时较长的问题,本文引入解释结构模型(ISM)分层思想,对区块链共识节点进行分层处理,优化传统实用拜占庭容错(PBFT)共识算法,实现多中心子节点集群分层分块共识,解决传统PBFT 算法中网络堵塞问题,减少区块链网络广播资源浪费、降低区块链共识通信成本,在保证区块链共识安全的同时提升通信和共识效率。

2 原理与方法

2.1 实用拜占庭容错共识机制

2.1.1 共识机制

共识机制[11]是区块链工作引擎,是在P2P网络中无控制主体情况下,各参与节点协同记账,保证数据的分布式一致性。共识算法主要解决分布式共识问题,即如何高效达成分布式一致性问题。是否达成共识的决定权分散在各个节点,而节点规模与共识通信成本成正比,所以系统的一致性和系统可用性存在二律背反。如果追求一致性效率而控制区块链节点数量,将限制系统的适用场景,相反,如果不断拓宽系统适用性,将会增加节点规模,加大系统达成一致难度。

2.1.2 拜占庭将军问题

著名的拜占庭将军问题[12]基于忠诚与叛变共存的敌城驻守故事,其中叛变将军向其他将军发送不同消息,干扰将军们的作战计划一致性。忠诚将军如何抵制叛变将军干扰达成作战计划一致性的拜占庭将军问题,其本质是在分布式对等网络中的通信容错问题。这个问题映射在区块链P2P网络中,即恶意节点通过系统中正确判断冲突信息,影响区块链节点达成共识,以此危害数据安全。

2.1.3 实用拜占庭容错共识机制

实用拜占庭容错算法由Castro与Liskov提出[13],其被认为是解决拜占庭问题的最佳算法之一[14]。PBFT 算法需要各节点共同维护系统状态,以解决带拜占庭问题的分布式一致性难题。带拜占庭问题的P2P网络中存在的恶意节点,即拜占庭节点,如图1节点3,故意对节点集群发出的请求不响应,甚至故意发送错误数据,以阻碍分布式系统达成一致。具有较高容错性的PBFT 算法原理如图1 所示,一条交易请求从客户端发起,至就近区块链网络节点处,然后向全网进行广播交易,主节点打包交易之后经过预准备(pre-prepare)—准备(prepare)—提交(commit)三大阶段,形成协议共识流程。该共识机制可容忍小于1/3的恶意或无效节点实现有效共识。

2.2 解释结构模型相关理论

解释结构模型的提出,是为分析复杂系统与要素关系而开发的一种分析方法[15],其通过定量分析使复杂的系统层次化,以结构表达模型来描述系统内各元素的重要性。解释结构模型为分析复杂系统要素关系,借助计算机生成计算矩阵,判断系统内各元素关系,制作出分层且有向的元素结构图。ISM 最大的优势在于可以将关系复杂、逻辑不清的系统结构条理化、层次化,并且适用性好,可解决大部分复杂系统的要素分层分级问题。

在应用解释结构模型处理复杂系统要素逻辑问题时,应遵循以下步骤:首先,针对研究问题开展ISM适用性讨论,成立ISM 研究小组,对系统和系统内元素进行总结归纳。随后,研究小组需整理复杂系统内各元素间关系,或直接影响关系、或直接交易关系,并以此为依据建立邻接矩阵(其中“1”表示Si对Sj有影响,“0”表示Si对Sj无影响(i、j为矩阵的行列数))。最后,以研究小组确定的邻接矩阵为计算基础,计算可达矩阵并解析可达矩阵表示的系统元素关系,绘制有向元素分层图。将系统内错综复杂的元素关系实现层次化、结构化的展示。ISM工作流程如图2所示:

3 基于ISM 优化的实用拜占庭容错共识机制

由于食品溯源场景节点众多、区块链网络负载大、网络延时较长、广播资源占用严重、网络堵塞且通信成本高。本文研究涉及的PBFT 算法目前主要应用于联盟区块链中,然而在节点众多的食品溯源场景中,PBFT 优势难以显现[16]。同时PBFT 共识算法存在不足也很明显,即所有节点参与共识,这无疑增加了通信成本,因为所有节点参与共识容易造成广播资源浪费,进而导致网络堵塞。为使PBFT 在食品溯源场景中保持高性能优势,弥补其不足之处,需对其进行优化,以适用食品追溯场景。

基于ISM优化后PBFT算法流程如图3。

首先,通过区块链节点间的交易关系构建解释结构模型,对区块链共识节点进行分层。由下而上展开,以底层节点为共识中心节点,以次底层节点为共识一级节点,以此类推定义区块链共识节点分层方法,建立区块链共识节点分层体系。然后,以探寻法对分层后的区块链共识节点进行分块,划分为多个参与共识的子节点集群,以多中心子节点集群分块进行PBFT 共识。最后,共识中心节点将共识结果提交区块,实现总体共识。

3.1 基于ISM共识节点分层

为改变区块链网络中全部节点同时参与共识造成网络堵塞的情况,最有效地方法是对节点进行分层处理,全网节点分开共识可减少网络资源占用情况、节省通信成本、提高共识效率。区块链各节点在复杂的网络交易中关系错杂且同处于一个区块链交易网络系统,符合解释结构模型的应用条件。所以引入解释结构模型的分层思想,根据区块链节点间的交易关系对区块链共识节点进行分层。分层具体包括如下步骤:

S1:通过交易关系建立节点间的m×m邻接矩阵A,其中m为区块链系统中的节点个数。邻接矩阵中元素表示为aij。其中,“1”表示两节点间存在交易,其中交易输入指向交易输出,“0”表示两节点间无交易。即:

S2:由邻接矩阵加单位矩阵得A+I,以布尔运算逻辑进行幂积运算n次,直到(A+I)n=(A+I)n+1,即当幂积迭代计算后结果不再变化,得可达矩阵M。

S3:为了区域分解可达矩阵M,首先在区块链系统中计算各节点的先行集合F 和可达性集合L,以及二者的共同集合(L ∩F),由以上先行集合F、可达性集合L 和共同集合(L ∩F)三个集合进行区块链共识节点分层。若某节点n对应的集合满足(L ∩F)=L,则节点n在最顶层,剔除节点n后继续以集合满足(L ∩F)=L 为规则选择次顶层节点,以此类推实现分层;若某节点n对应的集合满足(L ∩F)=F,则节点n在最底层。

S4:若某些节点对应的可达性集合L、先行集合F和共同集合(L ∩F)三个集合对应相同,则这些节点存在强连接关系,可取一个节点代表留在矩阵中进行后续运算,其他节点剔除矩阵,实现矩阵缩减。由可达矩阵M 剔除强相关节点得到缩减矩阵M1。通过缩减矩阵M1减掉单位矩阵I 得到矩阵M2,由矩阵M2反应的逻辑关系构建区块链节点的有向连接图,实现区块链共识节点带有交易逻辑关系的分层。

为了实现节点分层更好地服务区块链共识机制,如图4 由下而上展开式建立区块链节点分层体系。在区块链共识节点分层中,参与节点在整个区块链交易关系中的地位随着分层体系的层级上升而下降,因为底层节点在区块链节点间的交易关系中占据主要地位,故以底层节点为共识中心节点(K1、K2.....Ki,i为共识中心节点个数)。同理,以次底层节点为共识一级节点(A1、A2.......Aj,j为共识一级节点个数)。由此,区块链共识节点依据节点在交易关系中的重要地位建立起分层体系。

3.2 区块链共识节点分块

区块链共识节点分层是实现分块共识的基础。为ISM 更好地服务分层分块式共识,对ISM 模型进行改进,区块链共识节点按交易关系中的重要地位实现分层后,补充节点分块步骤,如图4 圆圈内所示即为一个共识块。区块链分层节点中,由底层节点向上层逐层探寻,如出现分叉,则该节点与分叉后节点划入一个共识节点子集群。交易量高且在复杂交易中起重要作用的节点划入共识中心节点集群,然后以共识节点分层结合探寻分块划分子共识节点集群。区块链全网参与共识节点的分层分块构建了多个参与区块链共识的多中心节点集群,各共识集群互不干扰、相辅相成,共同作用。

3.3 多中心子节点集群逐层共识

区块链全网共识节点的分层分块为多中心子节点集群逐层共识做好了准备。ISM 模型已实现区块链共识节点的分层分块功能,下面将PBFT 共识机制在分层分块的基础上实现共识的操作。在单个子节点集群网络中,通过预准备、准备、提交和回复等阶段实现整个区块链网络中的部分共识,子节点集群共识完成。同时,在区块链网络中,多中心子节点集群同时在分层的基础上分块进行共识。

如图5所示的改进PBFT共识方法原理图中:

在预准备阶段,节点Ai的上层节点Bi对Ai发出请求,节点Ai将若干请求写进区块,并且给Ai的上层节点Bi广播格式为<

在准备阶段,上层节点Bi收到节点Ai的preprepare消息,并且会发送一条prepare消息,格式为

在提交阶段,同一节点集群中的一级共识节点Ai和上层共识节点Ai开始交验消息,验证prepare消息签名、消息内容与摘要、请求编码。丢弃非法请求,如果消息正确,上层节点Bi向一级共识节点Ai发送一条commit消息,消息格式为

在回复阶段,一级共识节点Ai收到了2f+1个验证通过的commit消息(其中,f为拜占庭节点数),区块链单个子节点集群网络中已达成PBFT 共识。至此,单个子节点集群网络已达成二级子节点单个集群的PBFT共识。

子节点集群共识完成后,一级共识节点(A1、A2.......Aj,j为共识一级节点个数)进行第二次交易验证,其中,一级共识节点Ai和同一分层的节点An进入准备阶段并发送一条prepare消息给Ai的同一分层节点An来交验签名信息、摘要信息和请求编号,消息正确,进入下一层共识中心节点Kn的轮询交验。共识中心节点通过轮询方式进行交易验证,验证无误后提交区块,完成整个区块链网络节点共识,实现区块上链。

4 实验及性能测试

4.1 数据获取及算法应用

通常来说,食品安全追溯可以分为三部分:生产、仓储和运输环节,采集的追溯对象以及追溯信息如表1所示。

本文采用食品追溯数据集来进行实验验证,其数据来自于北京市农业农村局与北京市畜牧总站合作建立的位于北京市顺义区的智能禽舍及基于联盟区块链的北京市畜牧总站智能鸡舍监控管理平台。

表1 追溯对象与追溯信息Table 1 The trace objects and trace information

本文实验数据通过在四个禽舍部署的各不同分区的传感器设备采集。每个鸡舍均在百叶窗中安装6 个传感器,传感器数据采集频率为每30 秒一次,每个鸡舍单日产生约1.7万条数据样本。禽舍环境监测系统将数据监测节点分为前部节点、中部节点和尾部节点三个区域,每个区域独立采集、传输数据,实现对禽舍中环境信息进行监控,为后续的追溯提供数据支持。

加密后的数据将上传至北京市畜牧总站智能鸡舍监控管理平台,并对密文进行检验,系统将对一小时内采集且验证后的数据取平均值上传至基于联盟区块链的追溯系统,然后各节点对区块的合法性进行共识。由于采集数据量巨大,若使用传统拜占庭算法进行共识,将造成巨大的广播资源浪费,共识时间过长,交易无法顺利完成。将改进后基于ISM分层思想的PBFT 算法应用于共识过程,大大提升了共识效率和区块链吞吐性能。只有遵循基于ISM 的PBFT 共识机制设定规则的新块,才会被节点承认并添加区块到链上,否则将会被拒绝添加。在共识达成后,通过Ganache 可视化应用观察到区块数量正常增加且交易记录增长,如图6所示。

4.2 实验环境测试

在PBFT 实用拜占庭容错算法中,节点按是否具有恶性攻击性划分为拜占庭节点(B node)和非拜占庭节点(N_B node)。PBFT 共识算法具有1/3 容错率,即设网络中总节点数为N,恶意节点数f,则达成共识的节点个数要求只需满足公式(2):

根据实验测试需求设计初始节点个数如表2:

表2 初始节点设置Table 2 The initial node settings

首先,创建总节点13 个,其中N_B node 10 个,B node 3 个,节点初始设置满足总节点数大于拜占庭节点数的3 倍,可以实现区块链网络正常的共识动作。然后由优化的PBFT 算法执行命令,实现创建节点、节点变质、删除节点等一系列操作。以上测试设计思路及结果如表3所示。

经实验测试环境验证,此实验环境可以仿真实现区块链节点的创建、删除和节点性质变更,最终节点状态为:总节点9 个,非拜占庭节点7 个,拜占庭节点2 个,满足上述N≥3f+1 的PBFT 共识条件,达成了区块链实用拜占庭容错共识。

表3 吞吐量实验节点设计Table 3 The throughput experiment node design

4.3 吞吐量测试

吞吐量指在PBFT 共识算法下整个区块链系统在单位时间内处理的交易量,代表着系统的负载强度,表示着系统的性能。区块链的吞吐量随着区块容量的增大而提高,但区块链的吞吐量与区块容量并不存在正相关关系。区块容量会对区块链系统造成负载,所以当区块容量到达一定水平后,吞吐量不增反减。区块链吞吐量采用每秒交易量(transaction per second,TPS)如公式(3)所示:

其中,transaction表示单位时间t内区块链系统处理的交易数,t表示出块时间。在PBFT 共识吞吐量测试中,为了方便对比优化后的PBFT 与传统PBFT 吞吐量性能,实验中不考虑单个节点在接收到信息后的处理耗时与单机上的资源利用、CPU 处理速度、磁盘读写速度、网络拥塞等因素,并假设同一时间点单机上所有消息的接收与发送都并行发生。控制每个区块包含交易数为10,对比共识节点不同情况下的吞吐量变化的平均情况。优化后的PBFT 与传统PBFT在同等假设条件下吞吐量对比如图7所示。

由实验结果可得知,区块链吞吐量随着共识节点的增多而降低,优化后的PBFT 吞吐性能明显优于传统PBFT。

4.4 共识时延测试

共识时延是以时间为标准衡量共识算法运行速度的重要指标,共识时延越小说明交易确认速度快,相应地,区块链安全性越高。

公式(4)中,DelayTime为共识算法的延时,ConfirmTime为区块完成共识确认的时间,TransmitTime为区块采集数据开始时间。在PBFT 共识时延测试中,为了方便对比优化后的PBFT 与传统PBFT 时延性能,实验中不考虑单个节点在接收到信息后的处理耗时与单机上的资源利用、CPU 处理速度、磁盘读写速度、网络拥塞等因素,并假设同一时间点单机上所有消息的接收与发送都并行发生,只计算共识流程开始到共识流程结束的耗时。

为了对比评价基于ISM 优化的PBFT 性能,以共识耗时为指标进行了30 次独立的对比实验。每次实验按照模拟控制条件随机生成节点之间的延迟,然后记录优化前后的PBFT 单次共识耗时,优化后的PBFT 与传统PBFT 在同等假设条件下时延对比如图8所示。

通过30 次重复独立节点共识耗时对比实验,可计算出传统PBFT单次共识平均耗时568.6ms,优化后PBFT 单次共识平均耗时478.2ms,总体上区块链共识节点单次共识耗时平均缩短15.89%。

据上述实验分析,传统PBFT 共识需区块链全网所有节点参与共识,且单次共识需满足三阶段,节点广播频繁,网络资源浪费明显。优化后PBFT 分层分块共识,同一时间多个子节点集群同共识中心节点同时执行共识,这避免了节点统一通道集中广播,降低了区块链网络占用率,共识耗时时间缩短。此外,共识耗时波动较优化前稳定,说明基于ISM 优化的PBFT 分层分块共识机制具有耗时短、性能稳定的特点。尤其对于信息量巨大的食品追溯场景来说,共识耗时短、性能稳定是区块链在食品追溯领域落地的重要指标,具有很高的应用价值。

5 结果与讨论

本文主要依托食品追溯信息上链背景,抽取解释结构模型的系统元素分层思想,对区块链共识节点进行分层处理,优化了实用拜占庭容错共识机制,试点应用于智能禽舍及智能鸡舍监控管理平台,确保智能禽舍采集到的追溯信息得到有效共识。实验环节以吞吐量和共识时延为指标对比优化前后PBFT 的性能,实验表明优化后性能明显优于传统PBFT。优化后的PBFT 实现了多中心子节点集群分层分块共识,解决了传统PBFT 算法中网络堵塞问题,减少了区块链网络广播资源浪费、降低了区块链共识通信成本,保证区块链共识安全的同时大大地提升了通信和共识效率。在食品追溯业务背景下,基于解释结构模型优化的实用拜占庭容错共识机制能实现增安全、降成本、提效率等追溯目标,服务食品安全监管部门的追溯工作。

猜你喜欢

拜占庭分块共识
面向量化分块压缩感知的区域层次化预测编码
钢结构工程分块滑移安装施工方法探讨
共识 共进 共情 共学:让“沟通之花”绽放
论思想共识凝聚的文化向度
一种面向不等尺寸分块海量数据集的并行体绘制算法
商量出共识
分块矩阵初等变换的妙用
第四次十字军东征前的东地中海世界
《西方史学通史》第三卷“拜占庭史学”部分纠缪
拜占庭之光