基于区块链的ETO型企业生产过程溯源系统研究
2023-08-01胡牛平景征骏史培中
胡牛平, 景征骏, 史培中, 吴 旭
(1.江苏理工学院 机械工程学院, 江苏 常州 213001; 2.江苏理工学院 计算机工程学院, 江苏 常州 213001)
面对快速多变、日趋个性化的全球市场,越来越多的企业为了自身的发展,面向订单设计(engineering to order,ETO)的生产模式在我国制造企业中所占的比例越来越大[1]。ETO属于离散性较强的生产类型,是“面向订单”制造环境中最复杂的一种,ETO型企业高度个性化的客户需求,使得企业的制造过程数据极为多且复杂,所以ETO型企业对生产过程的信息安全存储以及逆向追溯的问题十分重视。传统的ETO型企业追溯系统需要通过企业庞大的中心数据库层层查找产品信息,不仅耗时久,而且存在着数据丢失和被篡改的风险,是一种效率相对不高的产品追溯手段。所以企业急需一种安全且高效的追溯系统来保证产品数据安全存储的同时,也可逆向追溯产品的生产信息。
区块链作为一种去中心化、安全性高、可追溯性强的网络,其在工程实践中的应用已经相当广泛。例如,赵利霞和叶春明[2]在疫情信息共享工作方面融入了区块链技术,减少了信息的失真且增强了信息的可追溯性;王楠等[3]将区块链技术应用于数据共享的方面,极大地保证了数据的安全性。孙建梅和蒋雨真[4]通过研究区块链在建筑业应用的表现对比,建立了基于模糊层次分析法的区块链平台对建筑领域适用性评价指标体系。夏凯文等[5]在改进了拜占庭容错算法后利用以太坊区块链和星际文件系统开发了气象数据共享系统。周航等[6]通过研究适用于各单元共识交易的电力区块链系统优化调度,解决了各中小型用户之间及其与大电网之间交易存在不透明环节的互信问题。申玉民等[7]通过开发基于区块链的建筑信息模型图纸多人协同创作系统,利用区块链去中心化、可追溯和防篡改的特性解决了多人协同创作下建筑信息模型图纸版本混乱、不易溯源以及数据安全风险等问题。方燚飚等[8]、王曈等[9]、Agrawal等[10]、Xu等[11]对区块链在生产中供应链的应用方面做出非常系统的研究,他们通过构建多链的形式将区块链技术解决制造业中不同场景下供应链的产品追溯问题。李广桥等[12]、毕娅等[13]、田琛[14]对于区块链在制造企业中协同作业的框架模式进行了深入的探讨和研究,他们共同从安全性、可扩展性和性能表现三个维度分析了区块链在企业协同制造中的应用情况,得出结论,区块链在这三个维度上相比同类交易系统更具有优势。
关于ETO型企业的生产链实现生产过程追溯问题,以上学者所提的方案并不适用,需要针对企业生产链的数据追溯能力做出更为详细的设计,采用hyperledger fabric区块链框架设计并实现一套ETO型企业生产过程溯源系统。
1 主要技术
ETO型企业利用颁布证书验证成员身份机制、通道隔离机制、跨链操作便捷等优点,采用hyperledger fabric区块链构建生产过程溯源系统的网络框架,和其他区块链技术相比,该技术更加适合企业生产链追溯的开发。
1.1 fabric关键技术
fabric是超级账本联盟(hyperledger)推出的核心区块链框架,适合在复杂的企业内和企业间搭建联盟链。根据超级账本联盟的目标, fabric被建设为一个模块化的、支持可插拔组件的基础联盟链框架。
fabric区块链采用分布式存储结构,其每一个存在于链上的节点都拥有一份完整的分类账的备份,其分类账由所有节点来维护。fabric区块链是一种联盟链,提出了成员服务提供商(MSP)的概念,MSP将链上各成员之间的控制结构关系抽象化,再通过颁发证书、用户认证、后台加密等来增加用户的可信度。另外,在fabric区块链中,还存在一种特有的称为通道的概念,类似于局域网,但实质上是由排序节点划分和管理的私有原子广播通道,目的是对通道的信息进行隔离,使得通道外的实体必须要通过身份验证后,才可以读写通道内的信息,否则将无法访问通道内的信息,从而实现交易的隐私性[15]。
1.2 区块结构
区块链上存储的数据能防止篡改和丢失,得益于其链式存储区块结构及存储在区块中的默克尔树[16],结构如图1所示。所有链上区块均以链式结构存储,每当产生新的区块仅可追加在该链的最后一个区块的后面,且每个区块的结构分为三个部分,分别为区块头、区块体数据、区块元数据。区块头存储上一区块的哈希值,使得每一区块都唯一指定前一区块,如果这一哈希值发生错误或者被修改,这一区块以及之后的区块都会失效从而产生断链的情形,所以只要不发生断链的情况,链上的数据均可信可追溯。区块体数据包含了交易的ID(identity document)、通道ID、时间戳及Merkle根等经过验证的、块创建过程中发生价值交换的所有追溯记录。其中Merkel树是基于哈希算法的数据结构,数据在被分为多个小的数据块在最底层,将这些数据哈希之后作为叶子节点,再将它们的哈希值两两合并哈希生成父节点,重复执行直到生成一个根节点。在Merkle树中,任意数据的篡改都会导致该节点的父节点及父节点以上的节点发生改变,最终导致根节点发生变化,这一机制也使得保存在区块链上的数据具有不可篡改的特性。区块元数据部分会保存一些区块的相关配置及排序节点的证书签名等。
图1 区块结构示意图
2 系统设计
2.1 企业生产业务流程分析
ETO型企业是一种面向订单设计的企业,相较于一般制造企业,其生产过程较长,环节较多。ETO型企业生产过程大致需要经历合同签订、产品设计、工单设计、组件生产、产品组装、产品质检这6个步骤。其中详细过程为,企业市场部门在接到订单和客户签订合同后获取产品的定制需求,企业将产品需求交给设计部门完成图纸的设计,之后生产部门就会按照合同的交货日期及车间生产计划等来设计合理的生产工单,然后将这些工单交付给对应的生产车间进行生产,组件生产车间会首先接到生产组件的工单,完成组件加工后,将组件交付给组装车间完成产品的组装,组装完成的产品最后经过质检工序,至此完成产品全部生产过程。具体业务流程如图2所示。
图2 ETO型企业产品生产流程
2.2 生产流程关键数据分析
ETO型企业的生产链主要包括市场部门、产品设计部门、生产部门、离散加工车间、组装线车间、质检部门。各部门中存在大量的生产信息数据,然而对于追溯产品生产过程的问题,并不需要全部的数据,只需要其中关键信息即可。因此在保证产品信息逆向可追溯的基础上,提取了生产链各环节的关键信息(表1)。
表1 生产流程关键数据
2.3 产品生产数据溯源模型
在深入研究ETO型企业生产链的流程后,结合fabric区块链框架,建立如图3所示的ETO型企业产品生产过程数据溯源模型,通过链上链下双存储模式,将ETO型企业生产链中重要生产信息直接上链,大文件进行链下存储后将哈希地址上链,实现信息的安全存储,企业监管部门通过智能合约的调用查询区块链上信息,实现产品信息的监管和生产过程的溯源。
图3 基于fabric区块链的ETO型企业生产过程溯源模型
该模型包含7个角色,分别为企业监管部门、市场部门、产品设计部门、排产部门、离散车间、组装线及质检部门。企业监管部门主要负责生产过程监管及产品的生产过程溯源,其余部门为生产过程各环节部门。模型中各角色通过区块链节点和区块链网络进行交互,交互媒介为部署在区块链上的智能合约,合约中制定了上链数据的内容、格式及交互逻辑等。
模型中为生产链的各个生产环节设计各自的数据处理模块,这些模块通过调用智能合约实现本环节的数据上传和追溯的功能;各生产环节的上传数据模块中,较大的流媒体文件会保存到链下存储服务星际文件系统(IPFS)中,再将文件的地址索引上传到区块链上[17-18],查询模块可以根据相应的编号查询本环节的最新生产信息,以及历史修改记录;模型中监管部门需要负责产品追溯监管,其追溯模块拥有追溯产品信息和监管产品生产过程的能力,并且可以同时调用生产链中一个或多个生产环节的智能合约的查询函数,监管产品的生产状态或追溯产品的生产流程数。
2.4 智能合约设计
智能合约在触发条件满足时可自动执行合约逻辑,以信息化的方式传播、验证或执行合约协议,使区块链及时对外部治理做出反应[19]。企业监管部门的追溯智能合约,通过产品的产品编号(PID)及产品的工单号图纸号来追溯产品的全部生产过程的相关信息。生产过程部门的数据上链智能合约,实现生产过程部门的追溯数据上链。
通过组建超级账本多通道网络,为不同生产部门创建账本数据交互的接口,各部门节点通过智能合约之间的调用实现跨链间的数据交互。接下来介绍数据上链合约算法和生产数据追溯的算法,算法1描述了数据上链操作,用户在通过身份验证后,调用fabric区块链软件开发工具(SDK)库的接口,实现数据的上链;算法2描述了数据追溯的操作,其中步骤2~步骤10通过输入产品的唯一标识(ID),逐步追溯产品的所有生产环节信息。
1)算法1:数据上链智能合约算法。
输入:身份信息(auth),上链的信息(chain data)。
输出:完成交易的txID。
①if(auth is valid)then//验证身份信息;
②SDK(func==set) //选择数据上链函数;
③if TypeLegal(chain data) ok then //检查数据是否规范;
④blockchain(chain data)//数据上链,同步到区块账本;
⑤return TxID //数据上链成功,返回交易号;
⑥else;
⑦return(Chain data TypeIl Legal)//上链数据不规范,上链失败;
⑧return (auth Error) //身份验证失败。
2)算法2:生产数据追溯算法。
输入:身份信息(auth),待查询产品的唯一标识号(PID)。
输出:productID的所有生产流程相关数据(PIDdate)。
①if(auth is valid)then//验证身份信息;
②SDK(func==trace)//选择产品追溯函数;
③If(质检,组装,组件账本中存在PID)then;
④trace(PIDdate,qualify,assemble,components)//追溯产品质检、组装、组件信息存入PIDdate;
⑤Trace(PIDdate,workList)//通过PIDdate中绑定的工单号追溯产品工单信息,存入PIDdate;
⑥Trace(PIDdate,drawing,contract)//通过PIDdate中的图纸编号与合同编号,追溯图纸与合同信息,存入PIDdate;
⑦return (PIDdate)//追溯成功,返回产品信息;
⑧else;
⑨return (trace PIDdate Error)//追溯过程出错,返回错误信息;
⑩retrun (auth Error)//身份验证失败。
2.5 系统架构
通过对ETO型企业的生产流程分析,研究构建基于区块链技术的生产过程追溯系统,创建部门通道隔离部门隐私数据以及编写智能合约来上传数据到区块链网络和监管追溯链上数据,可以实现对ETO型企业生产过程数据的有效监管和数据安全。
如图4所示,追溯系统架构分为资源层、区块链平台层、后台管理层、应用层4层。
图4 追溯系统架构
1)资源层包括搭建网络的硬件和软件资源,比如计算机、服务器、操作系统等。
2)区块链平台层是通过fabric区块链框架搭建区块链网络后台,包括组织通道的创建、节点部署、智能合约的编写等。
3)后台管理层分为4部分,分别为系统管理、业务管理、区块链管理及数据库管理。这一层主要负责系统的一些业务上的数据管理及系统的配置连接管理。
4)应用层主要为系统所连接的一些上链数据和查询追溯数据的终端设备,各部门可以通过终端设备直接与区块链网络进行数据交互。
3 系统验证
3.1 实验环境介绍
ETO型企业生产过程数据追溯系统采用hyperledger fabric 2.3框架实现,实验创建了6个用户通道、5个排序节点,共识机制采用raft共识,智能合约采用了Go编程语言来实现,同时,SDK选择与智能合约的编程语言相匹配的GO_SDK工具包,来编写服务端与前端用户的数据交互接口。后台管理服务端采用Go编程语言的Gin框架实现,客户端选用了Vue框架来完成,链下存储服务的IPFS采用了2台虚拟机完成搭建。实验中各部门节点均在一台虚拟机创建出各个设备虚拟节点,所有虚拟机上均搭载Ubuntu18.04系统。关于区块链网络配置,实验设置区块的生成策略为每2 s产生一个区块或每50个交易就会打包产生一个区块。
3.2 系统实现
ETO型制造企业产品生产过程数据交易上链和追溯测试过程信息界面如图5至图7所示,系统结合ETO型企业柔性生产的过程,把相应的生产信息按环节上传到区块链网络,实现数据的安全存储和共享,监管部门通过产品的唯一标识码来溯源产品当前状态下的生产流程信息。如图5和图6所示,企业生产过程中的市场部门在完成合同的签订后将合同上传到区块链网络,区块链上则生成新的交易和区块,上传的合同信息保存在新生成的区块中,介于区块链的极难篡改和易追溯的特性使得合同的防篡改能力和可追溯性得到了极大的提升。
图5 合同上链交易信息
图7 产品溯源信息
系统的追溯模块下,监管部门用户在系统追溯模块下输入产品的标识号后,系统会通过该产品标识号调用智能合约在区块链上查询该产品的质检信息、组装信息、组件信息、工单信息、图纸和合同的详细信息。如图7所示,测试用例以编号为product-001(以下用P1表示)的产品追溯过程示例,系统在获取到该编号后,首先会查询质检和组装账本,查询这两个账本中产品ID为P1的质检和组装信息,然后向上追溯该产品所涉及的组件信息,查询组件账本中所有用于组装P1的组件信息;在组装和组件生产过程中涉及的工单信息,则通过已经追溯到的组装和组件信息中工单的ID,来追溯所设计工单的详细信息;生产工单中包含的执行图纸ID和目标生产合同ID,正是产品P1的图纸信息和合同信息关键溯源key,通过这两个ID查询图纸账本和合同账本,可以迅速追溯到P1的所用图纸详细信息和产品合同详细信息。至此,完成产品编号为P1的全部生产过程信息的溯源。
此外,追溯信息中所涉及的较大的多媒体流文件,例如合同文件、图纸文件等,均存储在IPFS上,查询的信息仅显示文件存储在星际文件服务上的哈希地址,文件以链接形式供用户下载查看。通过测试可以看到,系统将ETO型企业每一生产环节的关键数据存储到区块链网络中,生成区块进行存证,并且系统可以通过产品唯一标识码向上溯源生产过程的数据信息,实现了基于区块链的ETO型企业生产过程数据可信溯源,有效地防止关键生产数据丢失和被篡改的风险,极大地提升了生产过程的可追溯性。
3.3 性能测试
实验采用开源区块链测试工具tape来测试所构建的区块链网络的性能。测试市场部门通道的数据上链事务和查询事务吞吐率的网络性能测试,结果如图8所示。设置tape工具向Fabric发送事务的并发量为225,测试20组发送不同交易量的TPS(transaction per second)数据,交易数量为50~1 000,每组以50个交易为递增量,可以得到记账交易事件的TPS基本保持在70~90,表现相对稳定,而查询链上数据的TPS数值能够一直保持在250左右处于较高的水平。因此,建立的基于区块链的生产过程数据追溯网络具有不错的查询与写入吞吐量。
图8 网络压力测试结果
为了测试基于区块链的ETO型企业生产过程追溯系统的数据上链记账延迟时间以及查询链上账本数据延迟时间,首先测试了各个部门上传数据到区块链的平均记账时间和查询链上数据的查询平均时间(图9)。记账平均时间为0.4~0.5 s,查询平均时间为0.3~0.4 s,完成记账和查询的所需时间很短。
图9 各生产部门记账与查询平均延时
此外,还测试了单个部门多次记账和查询的详细的时间变化。以市场部门为例,进行50次记账和查询测试,测试结果如图10和图11所示,记账平均时间为0.408 s,查询平均时间为0.361 s。
图10 合同上链记账延时
图11 合同数据追溯查询延时
综上测试结果显示,该区块链追溯生成数据网络的上传数据和查询的延迟较低,能够充分满足企业生产线的数据采集和追溯的需求。
4 结束语
通过hyperledger fabric区块链技术设计并实现针对ETO型企业生产链的生产过程数据追溯系统,使得ETO型企业在生产过程中数据可以有效、安全地存储在区块链上。并且,企业的监管部门可以实时监管并追溯链上数据,提高了ETO型企业协同加工制造环节之间生产数据的安全性和可追溯性,对ETO型企业完善生产链的数据追溯研究有重要参考意义。
就本系统而言,仍还有部分地方需要改善来提升系统在生产过程中的效率。接下来的工作,将针对ETO型企业产品的工艺离散特性,准备采用有序聚合签名与区块链整合的方式来进一步提高ETO型企业产品数据的工艺可追溯性,利用有序聚合签名的保序性验证产品加工的离散工艺正确性,最后签名上传到区块链上以供产品数据追溯。