分享
基于多链融合的粮食供应链溯源系统.pdf
下载文档

ID:3075485

大小:1.55MB

页数:14页

格式:PDF

时间:2024-01-19

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于 融合 粮食 供应 溯源 系统
第41卷 第4期2023年7月应用科学学报JOURNAL OF APPLIED SCIENCESElectronics and Information EngineeringVol.41 No.4Jul.2023DOI:10.3969/j.issn.0255-8297.2023.04.002基于多链融合的粮食供应链溯源系统曹浩浩,刘扬,李向阳,刘鑫磊,王耀启,张元河南工业大学 信息科学与工程学院,河南 郑州 450001摘摘摘要要要:区块链因具有不可篡改、群体共识、全程可追溯等特点而广泛应用于存证确权、商品溯源、协同共享等应用场景。基于区块链的粮食溯源难点在于粮食从种植、收储、加工、物流所涉及的供应链条比较长,追溯困难,并且同一供应链上企业之间的企业资源计划(enterpriseresource planning,ERP)系统并不互通,企业自治 ERP 系统难以与区块链对接。本文基于联盟链与私有链融合提出了一种多链粮食供应链溯源系统(multi-blockchain food supply chaintraceability,MBFST),企业间通过联盟链开展业务协作,企业内部基于私有链记录信息流转;设计了私有链与联盟链的跨链交互协议,根据溯源 ID 实现联盟链与私有链的交互与映射;通过私有数据集合等数据隔离机制,确保供应链企业私有数据的隐私保护。通过对原型系统的设计与实现,结果显示,MBFST 能够实现粮食供应链企业间的全链条精准溯源,确保链上链下溯源信息的全程可追溯;通过 Hyperledger Fabric 的 Node-SDK 对系统的性能和吞吐量进行测试,实验结果显示,MBFST 在压力测试中查询每秒事务处理量(transaction persecond,TPS)最高可达 1 000 以上,使用溯源 ID 的富查询 TPS 可达 200 以上,信息上链时延测试中平均时延稳定在 0.20.3 s。对比现有的基于区块链的商品溯源系统,MBFST 在溯源信息的追溯能力、链上信息的隐私性和追溯效率等方面都更具优势。关键词:区块链;联盟链;私有链;供应链溯源;跨链交互;隐私保护中图分类号:TP311.1文章编号:0255-8297(2023)04-0563-14Food Supply Chain Traceability System Based onMulti-blockchainCAO Haohao,LIU Yang,LI Xiangyang,LIU Xinlei,WANG Yaoqi,ZHANG YuanCollage of Information Science and Engineering,Henan University of Technology,Zhengzhou 450001,Henan,ChinaAbstract:This paper proposes a multi-blockchain food supply chain traceability system(MBFST)based on the integration of consortium blockchain and private blockchain,toaddress challenges in food traceability.Enterprises carry out business cooperation throughthe consortium blockchain system,and record the trade circulation through the privateblockchain system.The cross-chain interaction protocol between the private blockchain and收稿日期:2022-10-25基金项目:河南省重大科技专项(No.201300210100,No.201300210200);郑州市协同创新重点专项(No.21ZZXTCX07)资助通信作者:刘扬,教授,研究方向为区块链与分布式计算。E-mail:liu_564应用科学学报第41卷the consortium blockchain is designed to implement the interaction and mapping accord-ing to the traceability ID.The system enables business cooperation and trade circulationrecording through the consortium and private blockchain,respectively,with a cross-chaininteraction protocol facilitating interaction and mapping based on traceability ID.Throughdata isolation mechanism like private data set,the protection of private data of enterprisesis ensured.Experimental results show that the prototype system can achieve accuratetraceability among enterprises in the food supply chain and ensure the whole process trace-ability both on-chain and off-chain.MBFST achieves a maximum TPS(transaction persecond)of over 1000 and a TPS of over 200 for rich queries using traceability ID,withan average delay stable at 0.20.3 s.MBFST has superior query performance in highconcurrency circumstances in terms of traceability,privacy and efficiency.Keywords:blockchain,consortium blockchain,private blockchain,supply chain traceabil-ity,cross-chain interaction,privacy protection区块链1本质上是一种去中心化的存储模式,利用点对点传输协议、共识机制以及非对称加密算法来保证数据具备不可篡改的特性。区块链因其具备不可篡改、防抵赖、全程可追溯等特点,而广泛应用于存证确权、商品溯源、协同共享等场景2。当前的商品溯源系统一般由各级政府或行业中的核心企业主导建设,利用行政手段或市场地位,强制上下游企业按照其设定的标准规范进行使用,溯源数据也掌握在中心化的机构或企业中。这种溯源系统存在着以下缺陷:1)单一主体(中心化)提供溯源信息,商品的品质性状等数据来自单一主体;2)溯源不涉及供应链或者供应链条断裂,难以覆盖产品生命周期的全链条溯源;3)同一供应链上企业之间的企业资源计划(enterprise resource planning,ERP)系统并不互通,企业自治 ERP系统无法与区块链对接,存在信息孤岛问题。粮食安全问题事关国家战略和国计民生,溯源成为保障粮食安全的重要方式。2017 年 12月,中国首个安全食品区块链溯源联盟成立,旨在确保品牌企业数据隐私,同时帮助其整合线上线下食品安全追溯和质量管理渠道3。区块链对于提升整个食品供应链安全水平的关键性作用已得到业界认可。供应链是一个由物流、信息流、资金流共同组成的,并将行业内的供应商、制造商、分销商、零售商、用户串联在一起的复杂结构4-5。粮食供应链贯穿着从农田到餐桌,中间历经种植、收储、加工、销售、物流等多个环节,产业链较长,追溯困难。基于区块链的粮食供应链溯源能够克服传统信息追溯系统的数据不一致、数据真实性难以保证等问题,可为政府、企业和消费者三方提供服务。一方面可增强政府的监管能力,提高粮食供应链企业间的协同效率;另一方面也能提升消费者与社会之间的信任度,有效防止食品安全问题的发生。当前,基于区块链的粮食溯源系统设计上存在以下难点:1)信息源头的防伪、防篡改无法保障,来自企业内部的流转信息无法保证其真实性与有效性,诚信企业也难以自证清白;2)全链条的溯源信息难以实现完整映射与串联,供应链各环节信息记录标准不一,难以统一;3)溯源流程涉及多方、多行业、多主体参与,业务逻辑复杂,溯源成本高、效率低;4)溯源信息的公开与企业商业数据的隐私保护相冲突。针对以上问题和技术难点,本文提出了一种基于多链融合的粮食供应链溯源系统,充分考虑了粮食在供应链企业内部与外部流转特性,在企业内部通过私有链记录内部流转信息,企业间通过联盟链开展业务协作,提高溯源协作效率;设计了私有链与联盟链的跨链交互协议,记录粮食种植、收储、加工、物流的全链条流转信息,根据溯源 ID 实现联盟链与私有链的交互与映射;选择多通道与私有数据集合两种业务隔离与隐私保护机制,保护企业隐私数据。第4期曹浩浩,等:基于多链融合的粮食供应链溯源系统5651相关研究现状1.1区块链溯源研究现状近年来,区块链溯源研究方向主要集中在对溯源技术架构的优化创新和对各种溯源场景应用的探索。在溯源技术架构的创新研究中,文献 6 提出了基于双链的防伪溯源系统,该方案将私有链在存储上的高效性与公链的高可信度相结合,解决了产品标签复制、滥发和产品出现质量问题时定位难等问题。文献 7 设计了基于区块链的食品安全溯源体系,分析了区块链应用于食品溯源的技术架构,提出将区块链恰当植入食品溯源体系的方案。文献 8 提出了基于侧链技术的供应链溯源系统,利用侧链技术对以太坊进行扩容,通过以太坊智能合约实现供应链中的产品溯源等功能。在溯源应用场景的探索中,文献 9 提出了基于区块链的医药防伪溯源系统,系统基于 Hyperledger Fabric 平台实现,将区块链的难以篡改、时间戳以及交易可追溯的特性应用于医药防伪溯源系统。文献 10 提出了基于区块链+物联网的果蔬农产品供应链追溯体系,将农业物联网与区块链结合应用于果蔬农产品供应链溯源,提高了果蔬农产品的监管效率,保证了果蔬农产品的质量安全,并提供了果蔬农产品的可追溯性。文献11 中设计了区块链的农作物全产业链信息溯源平台,具有去中心化及信息完整性、安全性、真实性和可靠性更高的优点。此外,结合供应链的区块链溯源应用研究,文献 12 系统分析了区块链技术在供应链管理中的应用,文献 13 使用智能合约对供应链的流程进行了设计,文献 14 对区块链在食品供应链溯源体系中的应用进行了分析,文献 15 构建了食品安全供应链追溯系统,文献 16 实现了在区块链上供应链溯源信息的可信查询。在国内行业落地应用中,2017 年蚂蚁金服推出产品溯源防伪区块链应用,同年众安保险旗下的众安科技联手连陌科技推出利用区块链的溯源项目“步步鸡”,京东随后也推出了“跑步鸡”业务并采用区块链溯源技术17,2020 年重庆餐饮行业实现区块链精准技术落地应用。很多国外企业同样也早已将区块链溯源应用于商业场景,2016 年 6 月,沃尔玛与 IBM合作开始试点区块链+供应链食品可追溯;同年 10 月,丰田汽车加入 R3 联盟,通过区块链技术,将每个零件的生产加工使用情况都存储到区块链中,在汽车零件出现问题后,可以方便快捷地查询到零件的出处;2018 年,Redwind 针对传统红酒行业的弊端,提出“区块链+红酒”项目;近几年,将区块链应用于商品溯源的商业项目更是层出不穷,区块链在溯源场景的应用探索与落地,无疑证明了区块链在溯源应用场景中的巨大潜力。1.2三种区块链平台区块链按照准入机制,可以分为公有链、联盟链和私有链。公有链是所有人都可以参与的区块链,任何人都可以发起交易、参与记账、竞争记账权。公有链通过 POW、POS、DPOS18等共识机制确认交易,全网参与共识,因此公有链通常被认为是“完全去中心化”的。相应地,正因为公有链的所有节点共同参与共识过程,竞争记账权,公有链中的共识的效率极低,并且极其耗费资源。例如,在比特币网络中,一笔交易通常被认为在 6 个区块后被确认,按照比特币的平均出块时间来计算,也就是一笔交易的确认需要至少 60 min 的时间19,这在一些对交易速度有要求的商业应用中是难以接受的。同时,公链中的参与者共同存储交易信息,见证交易过程,所以在一些应用场景中为了保护隐私通常将真实信息存在链下,通过哈希算法将信息的哈希值上链存储20-22。但由于哈希算法的单向可验证性,在供应链溯源应用场景中,在链上存储有效信息的同时具备隐私保护能力,在公有链上是难以实现的。私有链是只有企业内部可以使用的区块链,一般用于企业,其可提供安全、可追踪、自动化的平台。相比企业中的传统集中式数据管理模式,在企业中使用私有链记录生产数据信息具有以下优势:1)私有链的分布式存储方式可以解决传统数据库集中式存储面临的单点故障566应用科学学报第41卷和信息孤岛问题;2)私有链能够极大降低数据被篡改和伪造的风险;3)私有链较好地解决了企业 ERP 系统与区块链系统的接入问题。由于私有链具有较严格的准入机制,通常私有链网络中认为节点都是可靠可信的。私有链被认为是较为中心化的区块链,通常具有较好的性能和安全性,与公有链相比,其是一种高效、大容量的信息存储方式23-25;相较于联盟链,私有链运行和维护成本更低,性能更好,隔离性更强。但是私有链一般不适用于处理企业间的业务问题,扩展性有限,在溯源应用场景,难以适配溯源数据在供应链主体间多级流转等复杂业务场景。联盟链是只有经过授权许可的组织成员才能加入的区块链。组织成员可以发起交易并查看区块链状态数据。在当前的一些主流联盟链系统(如 Hyperledger Fabric)中,允许联盟成员间建立独立的通道,在通道中维护一条区块链,共同维护交易数据。同时提供了创建私有数据集合的机制,允许在一个通道上的部分组织共享、查询和验证私有数据,而无需创建单独的通道。在保证商业隐私的同时将不同业务进行分离,以实现较好的性能与隔离性26-28。三种类型区块链在溯源场景的应用特点如表 1 所示。在公链上存储大量的溯源数据成本高、效率低,这在实际应用中是难以接受的;私有链能够解决传统集式存储模式面临的数据篡改、伪造、单点故障等问题,能够较为高效地处理溯源数据;联盟链具有良好的扩展性,可以撮合不同利益主体间的数据流转与协作。因此,本文在技术选型上结合联盟链与私有链,设计并实现了一种同时使用联盟链和私有链的粮食供应链溯源系统。在企业内部使用以太坊私有链记录内部流转信息,保证在企业内部的溯源信息可查可验。相比 Fabric,使用以太坊的私有链系统在搭建和管理上成本更低,性能更好,更适合在企业内部使用。在供应链企业间使用Hyperledger Fabric 联盟链构建区块链网络,允许企业间灵活建立通道,部署业务相关智能合约,记录企业间的流转信息;同时结合具体业务场景,明确溯源责任主体,加入监管机制,给予溯源责任主体审查供应链企业私有链数据的相应权限,并建立联盟链溯源协作通道,进行溯源业务协作。表 1 三种区块链平台的特征对比Table 1 Feature comparison of three blockchain platforms指标类型公有链私有链联盟链业务扩展性数据隐私性r性能2MBFST 设计与实现2.1基于多链融合的系统架构本文实现的多链融合的粮食供应链溯源系统,是由区块链系统和溯源应用系统两部分组成的,系统逻辑结构如图 1 所示。其中,区块链系统包括 Fabric 联盟链系统与以太坊私有链系统,分别用于粮食供应链企业间和企业内部的溯源管理与流转。应用系统包括区块链管理系统与业务应用系统,其中区块链管理系统通过使用(software development kit,SDK)连接到区块链网络,提供网络、合约、节点的管理等功能,并向业务应用系统提供相关的智能合约第4期曹浩浩,等:基于多链融合的粮食供应链溯源系统567调用接口,在业务应用系统中提供溯源信息的上链、查询、验证等溯源业务功能,同时提供对接企业 ERP 系统的接口。?SDKAPI?PKI?Fabric?EVM?图 1 MBFST 系统逻辑架构Figure 1 MBFST system logical architecture粮食在供应链的流转过程中,涉及多级加工以及多次产品性状的改变,当前研究中,仅对粮食在供应链中的跨企业流转信息进行记录或企业各自为营的“数据孤岛”模式,无法满足供应链全链条、产品全生命周期的溯源需求。因此需要对粮食在供应链企业内部与外部流转的全部流程进行记录与追溯。如图 2 所示,本文设计了基于联盟链与私有链多链融合的粮食供应链溯源结构。通过跨链交互协议与溯源 ID 的映射关系,将整个粮食在供应链的整个流转过程进行串连,实现了产品全生命周期流转的可信追溯。在供应链企业间使用 Fabric 联盟链搭建业务网络。相比公有链与私有链,联盟链在跨企业、跨主体的业务协作场景中具有更高的性能、更低的成本、友好的商业数据隐私保护、良好的扩展性以及业务的隔离性。系统在 Fabric 联盟链中定义了两种业务主体组织类型:BusinessOrg,供应链企业组织类型;TraceOrg,溯源责任主体组织类型。BusinessOrg 主要包括参与到供应链的企业,例如种植企业、加工厂、仓储企业、物流公司、经销商等。网络中的 BusinessOrg 组织只需要关注业务相关的处理。TraceOrg 是负责具体溯源业务的组织类型,包括各级政府相关管理部门、司法部门、消费者组织等。在 Fabric 联盟链网络中,多个BusinessOrg 可以自行组建业务通道或建立私有数据集合,并接受相关 TraceOrg 的监管。按照准入机制区分的三类区块链中,私有链具有最严格的准入机制,一般用于企业内部提供安全可信的平台。私有链与外部网络的隔离使得链上数据具有较好的私密性,只有网络中的节点存储账本数据,也只有网络中的用户对账本数据具有读写权限。粮食供应链流转过程中,让供应链企业将内部生产数据公之于众显然是不符合常理的,因此本文使用以太坊搭建私有链对供应链企业内部流转信息进行存储,在获得良好存储性能的同时有效保护企业内568应用科学学报第41卷?图 2 MBFST 系统体系架构Figure 2 MBFST system architecture部数据的隐私性,让企业将生产数据掌握在自己的手中。在 Fabric 联盟链网络中,同一个通道上的组织节点共同维护账本数据,通道上的组织用户具有对账本数据的操作权限。在粮食供应链流转过程中,不同企业间的交易数据同样具备机密属性。为了保证企业间数据的隐私性,本文结合 Fabric 的通道隔离与隐私数据集合机制设计了联盟链网络结构。通过多业务通道的方式,将不同的企业间不同的业务进行分离,部署相应的链码,企业仅需关注与自己业务相关的通道,而不需要存储全网所有交易信息,在保证隐私的同时减小供应链企业组织内节点的存储开销。在溯源协作通道上,溯源组织仅将业务通道上交易的关键信息及哈希值上链存储,不记录具体交易内容。从 Fabric 的 1.2 版本开始,提供了创建私有数据集合的功能,它允许同一个通道上的部分组织背书、提交或查询私有数据,而无需创建单独的通道;在授权节点上存储完整数据,未授权节点仅存储私有数据的哈希值。通过创建私有数据集合,可以在一条通道上实现不同组织间的隐私数据隔离,避免了创建多个通道带来额外的管理开销。在一条通道中的部分组织间创建私有数据集合,私有数据保存在授权组织节点的私有数据库上,它们可以被授权节点的链码访问。如表 2 所示,使用多通道的网络结构与使用隐私数据集合的网络结构在数据的隐私性、表 2 两种结构的对比Table 2 Compare of two architecture结构指标商业数据隐私性业务隔离性网络结构复杂程度节点存储开销多通道结构通道隔离数据通道隔离业务随通道增多而增长仅存储与自己相关的业务数据私有数据集合私有数据集合隔离数据私有数据集合隔离业务仅有溯源通道和业务通道全网数据(未授权的私有数据哈希)第4期曹浩浩,等:基于多链融合的粮食供应链溯源系统569业务的隔离性、网络结构的复杂程度与节点的存储开销上都存在差异,在供应链场景中结合具体需求进行取舍。2.2跨链交互协议本文结合 MBFST 的多链融合系统架构,设计了联盟链与私有链跨链交互协议,充分考虑了粮食供应链溯源场景跨链交互需求,通过跨链交互中间件实现了联盟链与私有链溯源信息的交互。粮食供应链中企业内部与外部流转信息分别记录在私有链与联盟链上,因此若想实现信息的全链条精准追溯,联盟链与私有链的跨链交互是必不可少的。私有链一般部署于较为隔离的网络环境中,因此需要网关作为与外界通信的桥梁;同样,智能合约与链码的隔离沙盒运行机制,原则上不允许在其中发起网络调用,因此也需要网关作为与外部世界通信的代理。本文设计的跨链交互中间件架构如图 3 所示,由跨链网关和认证调度组件构成。?HTTP-RPCPort:8545gRPCPort:7051图 3 跨链交互中间件架构Figure 3 Cross-chain interaction middleware architecture跨链网关分为私有链网关和联盟链网关,分别连接企业内部私有链与联盟链网络,代理私有链与联盟链跨链通信。私有链网关通过以太坊节点的 HTTP-RPC 接口的连接到私有链,联盟链网关通过 Fabric peer 节点的 gRPC 接口连接到联盟链网络。网关中分别内嵌了私有链代理账户与联盟链组织的代理用户,用于在私有链与联盟链上发起信息查询操作。在认证调度组件中,集成了对查询客户端身份认证与对跨链查询任务调度的功能组件。其中,认证组件实现对跨链查询接口的访问控制功能,客户端的请求会首先由认证组件处理,认证组件验证客户端身份,进一步验证用户访问权限,通过后将请求交给调度组件进行跨链信息查询。调度组件根据客户端发来的请求结合联盟链与私有链溯源信息的映射关系,调用跨链网关的查询接口,将查询到的全链条溯源信息拼接后返回给客户端。考虑到粮食供应链溯源场景的特点与安全性,跨链交互中间件只需要关注联盟链与私有链关联信息的查询,没有赋予其对区块链账本的写入权限。这样的设计可以保证链上数据真实可信不受外部影响,同时在设计实现上也更简单可靠。MBFST 系统结合供应链企业内部与外部流转的特点,设计了私有链与联盟链溯源协议,并结合溯源协议设计了溯源信息记录与追溯映射模型。MBFST 系统中,企业使用私有链记录企业内部产品流转的信息,由于供应链中涉及生产加工的环节通常伴随着产品性状的改变,因此需要在溯源协议中针对这样的情况进行处理,防止溯源链条断裂。系统设计了溯源 ID 映射关系,在流转过程中,溯源 ID 存在一对一、一对多、多对一的映射关系,用以应对供应链570应用科学学报第41卷不同生产环节中的产品性状转变。在供应链企业内部的溯源私有链中,当一次生产事件的发生产生一次内部部门间流转或在产品流入、流出企业时,会触发一次信息的上链,记录必要的溯源信息。当溯源需求产生时,可以通过被溯源产品前置流转信息,快速定位前一次流转信息,查询对应记录并进行验证。在 Fabric 网络中同一条通道上的节点共同维护账本信息,因此溯源组织(TraceOrg)可以从所在的业务通道上查询具体的交易信息,并将其中的关键信息写入到溯源协作通道的账本上,实现溯源组织间信息的互通共享。通过溯源 ID 可以将溯源通道上的记录与业务通道上的交易进行关联。同时,在私有链上记录私有链与联盟链溯源 ID 的映射关系,将内部与外部流转的整个过程进行串连;通过联盟链溯源 ID 将业务链与溯源链信息相关联,从而形成联盟链溯源通道到联盟链业务通道,再到企业私有链的溯源信息映射结构。溯源 ID 的映射关系描述如下。溯源通道上记录信息中的业务链溯源 ID 与业务通道上交易信息中的业务链溯源 ID 对应tracechannel.bcTraceId businesschannel.bcTraceId(1)业务通道上交易信息中的业务链溯源 ID 与私有链上记录的业务链后继信息中业务链溯源 ID 对应businesschannel.bcTraceId privatechain.BCRear.bcTraceId(2)私有链上记录的后继信息中业务链溯源 ID 与私有链上记录的内部溯源 ID 关联privatechain.BCRear.bcTraceId privatechain.traceId(3)私有链上记录的内部溯源 ID 与私有链记录中前置信息中的一个或多个内部溯源 ID 关联privatechain.traceId privatechain.pre.traceIds(4)私有链上记录的内部溯源 ID 与私有链上记录的业务链前置信息中的业务链溯源 ID 关联privatechain.traceId privatechain.BCPre.bcTraceId(5)私有链上记录的业务链前置信息中的业务链溯源 ID 对应溯源通道上记录信息中的业务链溯源 IDprivatechain.BCPre.bcTraceId tracechannel.bcTraceId(6)在溯源信息的查询与验证上,可以使用溯源 ID 在联盟链溯源通道上发起溯源业务请求,并在相关业务通道和企业内部私有链上查询相关记录信息从而串连整个流程。溯源信息在联盟链与私有链上通过溯源 ID 的映射关系及其查询验证流程如图 4 所示。2.3溯源合约设计MBFST 系统中结合溯源协议设计了私有链与联盟链溯源合约。其中私有链合约基于以太坊的 Solidity 实现,实现了粮食供应链企业内部溯源信息的上链存储与查验。部分查验合约伪代码如下,通过内部溯源 ID 或联盟链溯源 ID 发起查询,结合溯源 ID 间的映射关系对获取私有链上的全部内部流传记录。第4期曹浩浩,等:基于多链融合的粮食供应链溯源系统571?Id?.businesschannel2?TxInfo?BCTxHash=Hash(tx)tracechannelbusinesschannel2?Info图 4 溯源信息的查询及验证流程Figure 4 Traceability information query and verification processAlgorithm 1Query and verify information on private blockchainInputtraceIdOutputtraceinfosfunction GetTraceInfostraceInfo=GetInfo(traceId)push(traceInfo,traceInfos)while traceInfo.pre!=nulllength=GetLength(traceInfo.pre)i=0while i length thentraceId=traceInfo.prei.traceIdGetTraceInfos(traceId)end whileend whileif traceInfo.BCPre!=nullreturn traceinfosend if联盟链中设计了业务链码(business chaincode,businesscc)和溯源链码(trace chaincode,tracecc),其中业务合约结合溯源记录与查询需求并根据供应链具体业务场景展开设计,溯源合约则完成对业务链交易信息摘要的记录与查询,其中部分查验合约伪代码如下。Algorithm 2Query and verify transaction on tracechannelInputbcTraceIdOutputrecordInfo,txInfo572应用科学学报第41卷function GetRecordInforecordInfo=GetState(bcTraceId)bcId=recordInfo.BCIdbcTxId=recordInfo.BCTxIdtxInfo=GetTxInfo(bcTxId)txHash=recordInfo.BCTxHashif txInfo.traceId=bcTraceId&Hash(txInfo)=txHashreturn recordInfo,txInfoend if3MBFST 系统测试在本节中,根据前文溯源协议及溯源模型系统,搭建了一个测试网络环境,启动私有链和联盟链系统。使用 geth 客户端搭建以太坊私有链,使用 docker 容器模拟联盟链节点启动联盟链网络,部署相应的溯源合约与业务合约,使用 hyperledger caliper 测试工具对联盟链链码吞吐量与交易时延进行测试25,并对设计的溯源信息查询接口进行功能测试。3.1环境准备测试硬件环境:IntelrXeonrGold 5218R CPU2.10 GHz,10 GiB 8 核。操作系统版本为 CentOS 7.9。使用的部分软件及版本信息:geth-1.10.18,docker-20.10.4。使用的 Fabric 版本为 2.2.4。测试环境搭建了 3 条以太坊私有链,分别用于记录 3 个粮食供应链企业内部流转信息。联盟链测试网络中,设置了 3 个粮食供应链组织 农场、粮食收购企业和物流公司,两个溯源组织 检验机构和审查机构。每个组织有两个 peer 节点,状态数据库使用couchdb,并使用 raft 排序服务,同时在网络中建立了 2 个业务通道 acquisitionchannel 和logisticschannel,一个溯源主通道 tracechannel,并在业务通道与溯源通道上分别部署了业务链码 businesscc 和溯源链码 tracecc。在 Fabric 中,交易的出块受到出块时间 BatchTimeout 和块大小 BatchSize 两个因素影响29,实验中配置的排序服务出块参数配置如表 3 所示。表 3 排序服务出块参数配置Table 3 Ordering service batch configurationBatchTimeoutBatchSizeMaxMessageCountAbsoluteMaxBytesPreferredMaxBytes2 s10099 MiB512 KiB3.2系统测试首先对 caliper 测试工具进行初始化,对网络连接配置文件、负载配置文件以及测试用例进行配置,随后在搭建的联盟链系统中分别对业务通道上业务链码与溯源协作通道上溯源链码进行测试。使用粮食收购企业的用户 assessor 身份在业务通道 acquisitionchannel 上发起信息查询第4期曹浩浩,等:基于多链融合的粮食供应链溯源系统573操作,通过控制发起访问的客户端线程数,测得不同线程数量下的吞吐量与平均交易时延,结果如图 5(a)和(b)所示,分别为使用 txId 查询与使用 traceId(富查询)查询的结果。1 2001 00080060040020000.080.060.040.020?/s(a)?txId?(a)Performance of using txId for querying on acquisition channel?0.010.01547.90332.701 028.40 1 044.000.02124816320.020.040.07796.80160120804000.70.60.50.40.30.20.10?/s(b)?traceId?(b)Performance of using traceId for querying on acquisition channel?146.20104.9072.2058.8062.3034.300.040.060.100.170.220.5812481632848.90图 5 Businesscc 链码查询性能测试Figure 5 Businescc querying performance tests使用检验机构的用户 auditor 身份在溯源通道 tracechannel 上发起信息查询操作,通过控制线程数,测得不同线程数量下的吞吐量与平均交易时延,结果如图 6(a)和(b)所示,分别为使用 recordId 查询与使用 traceId 查询的结果。1 2001 00080060040020000.080.060.040.020?/s(a)?recordId?(a)Performance of using recordId for querying on traceability channel?0.01310.80550.70848.00899.101 016.50842.700.010.01124816320.020.040.082502001501005001.61.20.80.40?/s(b)?bctraceId?(b)Performance of using bctraceId for querying on traceability channel?227.70182.50153.40103.300.7692.6049.301.350.700.470.400.2712481632图 6 Tracecc 链码查询性能测试Figure 6 Tracecc querying performance tests根据测得结果可以看出,使用 traceId 查询(富查询)时,随着线程数量的增加,交易的性能会逐渐下降,但在达到 16 线程时仍能保持在 1 s 以内的交易时延与 70 左右的吞吐量。使用txId 查询时在 16 线程时达到最大吞吐量,并且交易的时延始终保持在 0.1 s 以内。分别使用粮食收购企业与检验机构的 buyer 和 auditor 身份在业务通道 acquisition-channel 与溯源通道 tracechannel 上进行交易(tx)与记录(record)的信息上链。测试单线程下一定数量的信息上链所需总时间与平均时延,结果如图 7(a)和(b)所示。根据实验数据显示,在测试网络环境中,业务通道与溯源通道上,随着交易数量的逐渐增加,交易的时延稳定不受交易数量的影响,平均交易延迟能逐渐稳定在 0.20.3 s。对设计的跨链查询接口进行测试,使用 traceId 发起查询,得到了来自溯源主通道、两个业务通道和 3 个私有链的全链条溯源信息,信息在联盟链与私有链间存在 traceId 的映射关系。574应用科学学报第41卷80060040020000.300.250.200.150.100.050?/s?(a)?/s0.090.200.210.240.768.38(a)Performance of information on-chain in business channel(b)?(b)Performance of information on-chain in traceability channel101001 00010 00067.61794.5680060040020000.300.250.200.150.100.050?/s?/s0.120.230.240.240.7410.17101001 00010 00084.12791.33图 7 链码写入性能测试Figure 7 Chaincode write performance tests搭建的 MBSFT 原型系统在模拟的性能压力测试实验中,分别对多用户大量并发查询与交易批量连续上链的业务环境进行了模

此文档下载收益归作者所有

下载文档
收起
展开