李保东,叶春明
上海理工大学 管理学院,上海200093
随着经济社会的不断发展,2019年中国汽车保有量已达2.5 亿辆,是名副其实的汽车消费大国。汽车相对于一般商品,价格较为高昂,消费者对其质量的关注度也格外的高,汽车行业经常因质量问题而发生召回事件。一旦出现质量问题,溯源难度大、周期长,很难进行权责划分,这成为汽车行业发展的一大障碍。与此同时,汽车行业正经历着由高速发展到高质量发展的阶段。汽车行业的供应链十分复杂,不合格的零部件产品会对汽车的安全性造成极大隐患。目前市场上假冒配件有几十亿美元,这类产品一旦进入汽车供应链渠道,整个汽车的安全性会极大降低,对消费者的生命健康造成极大威胁。除此之外,沟通效率低、防伪溯源难、信任问题一直是汽车供应链的痛点所在。关于区块链在供应链方面的应用,国内外很多专家学者做了一定的研究与实践。杨慧琴等[1]提出对区块链智能合约的深入应用,构建一个基于区块链的供应链平台;叶小榕等[2]为了实现供应链上数据的可靠性和安全性,设计一个基于智能合约、物联网和区块链的供应链模型,并且验证系统具有可行性;清华大学、IBM 公司和沃尔玛共同探索区块链应用,将区块链技术运用到超市猪肉跟踪管理体系[3];Kim[4]认为区块链+物联网能够为供应链产品的溯源提供潜能,并设计可在以太坊平台执行的智能合约;Korpela[5]认为区块链技术能够在数字供应链上得到革命性的改变,指出了供应链集成的需求,为相关领域的发展提供借鉴方案;张亮[6]从房地产供应链的角度出发,设计了基于以太坊智能合约的房地产供应链系统。在汽车领域,奔驰公司与其提供商Icertis 公司合作,基于区块链技术革新采购流程,目标是增加直接提供商以外其他参与方的透明度。目前对于区块链在供应链产品的溯源研究大多从相关理论出发,介绍区块链给供应链产品带来的潜在机遇,或者是从区块链的某一角度来研究系统的可行性,另外,对供应链溯源的研究集中在食品、医疗方面,对制造业的研究较少。
传统的车辆溯源方式中,王震[7]构建了基于轮胎信息的车辆溯源技术,运用图像识别技术进行车辆信息的溯源;凌绪枫[8]基于新型的溯源标签,生成汽车配件溯源二维码,设计了汽车的零配件溯源系统;Kolarovszka[9]介绍了汽车零部件识别的方案,利用RFID 技术设计汽车追溯模型,增加系统的可追溯性。传统汽车溯源的研究,多是关于采集技术的突破,增加信息收集的维度与效率,然而关于信息的安全存储、溯源渠道的优化却很少涉及。本文的目标是通过对汽车供应链研究,建立基于区块链的汽车供应链产品追溯系统,并验证系统的有效性,实现汽车生产的原材料供应商、零部件供应商、整车厂以及分销商数据的上链,根据功能的需求设计智能合约,开发简单的前端页面,提供溯源接口。为制造业产品的供应链溯源提供参考。具体的创新点有:(1)将供应链数据分为敏感数据和非敏感数据,对敏感数据进行哈希处理,得到的哈希值连同非敏感数据一同记录到区块链上。提升供应链数据可追溯性的同时,保障敏感数据的隐私性。(2)利用智能合约进行链上车辆的交易,减少繁琐的交易手续,保障交易的正常执行以及车辆所有权的安全转移。(3)利用以太坊区块链平台设计了汽车供应链的溯源系统,分析此系统相对于传统溯源系统的优势。
一辆汽车大概有3万个零部件,其供应链的复杂程度可想而知。在汽车制造业全产业链条中,并非只有参与整车制造的一家企业,特别是汽车内部零部件生产等环节,供应商的作用尤为明显。汽车供应链的分层有原材料供应商、零部件供应商、整车厂以及分销商。原材料供应商主要提供原材料等用品;零部件供应商负责模块化的设计与制造,比如传动装置、仪表盘、火花塞等;整车上负责整车的设计、组装,将所有配件组装成可以出厂的汽车;分销商负责车辆的销售,目前大多数车辆在4S店进行销售[10]。为了确保汽车质量与性能,对汽车生产的供应链环节进行必要的质量监督和管控,有助于汽车制造企业质量和水平的提升。传统的汽车供应链上存在一些问题,具体有以下几个方面:
(1)参与方信任问题
对于汽车行业来说,供应链上下游企业众多,汽车零部件的来源错综复杂,很难保证汽车所用的每个零配件都是符合标准的。每个参与主体保存属于自己内部的生产数据,无法被外部人员查看,当发生车辆安全事件,内部人员可通过修改内部数据的方式避免追责。汽车的生产厂商是汽车生产的核心企业,协调供应链上下游的生产及销售,同时负责审核供应商的生产资质与技术资料信息,由此来确定可靠的供应商。但实际上,对于二级甚至三级供应商,是不与汽车的生产厂家直接发生关系的,因此核心企业很难掌握这些供应商的真实信息。针对以上所述的各种情况,汽车供应链上的参与方之间存在信任问题。
(2)产品溯源问题
近年来,汽车召回事件屡见不鲜,就2017年我国国内汽车召回数量达到2 087.4 万辆。安全气囊故障、发动机熄火、机油增多等问题严重威胁到消费者的生命安全。汽车制造集成化的状况下,很难快速地确定问题的根本来源,溯源需要花费很多的人力物力,往往耗时费力却效率极低。
(3)信息共享效率问题
随着经济的全球化,汽车制造也呈现着全球化的态势。汽车制造所需要的零部件来自不同的国家和地区,由于地域和时差的关系,供应链上信息的沟通会出现延迟现象。另外,不同供应链主体的数据分布式存储,数据透明度低、隐蔽性强,造成信息孤岛的现象普遍存在。对于消费者而言,获取产品信息的渠道十分有限,使得消费者对产品的安全性存有疑虑,尤其是对安全性有更高要求的汽车产品而言。基于上述情况,供应链上信息沟通的效率仍待提高。
针对汽车供应链所面临的各种问题,可以借助区块链技术提供解决方案,将汽车生产、流转涉及到的数据记录到区块链上,可以增强各方的互相信任,提升信息共享的效率,使生产数据易于追溯,促使供应链参与企业规范生产流程,生产出合格的产品。
区块链技术最早是由比特币的底层技术扩展出来的,起源于化名为中本聪的学者在密码学报上发表的一篇名为《比特币:一种点对点的电子现金系统》的文章[11]。截至目前,区块链的发展已经经历了以比特币为代表的区块链1.0时代,以以太坊为代表的区块链2.0时代,现在已经迈入区块链3.0 时代。区块链3.0 时代,是将区块链技术运用到社会生活的各种场景,如教育[12]、医疗[13]、供应链、投票选举[14]等。
有关区块链的概念,学术界和产业界有很多讨论,大多数认可以下定义:区块链是一种分布式的数据库,可以共享且不易更改的分布式分类总账,它是构建价值互联网不可或缺的底层应用技术,具备多层级和多个类型应用的价值传输技术。其具有信息不可篡改、集体维护、匿名性、可追溯以及去中心化等特性[15]。
区块链按应用场景的不同,分为公有链、联盟链和私有链三种类型[16]。公有链是对所有人开放的,可以自由进出,不需要授权,一般应用于数字货币;联盟链适用于有限个主体间,需要获取一定的权限方可进入;私有链适用于企业内部,相当于企业内部的私有数据库,仅内部人员使用。
基于区块链的汽车供应链产品追溯应用,需要供应链上下游各个部门的参与,同时汽车供应链要求有较快的交易处理速度,更低的成本。结合表1所显示的区块链类型及其特征,联盟链更适用于汽车的供应链。
表1 区块链的类型及特征
智能合约这一概念早在1994年由密码学家尼克萨博(Nick Szabo)提出,可以简单定义为运行在区块链上的计算机代码,包含一组规则,确定相关方如何进行交互。简单来说,智能合约就是一个确定性的计划,当满足某些条件时,它则执行特定任务,通常遵守”if …then…”语句。智能合约具有透明、高效、精确、可信等特征,可以自动执行验证,降低交易成本,保证安全性,减少对可信机构的依赖,有助于将法律义务自动流程化[17-19]。
区块链为智能合约的发展提供了使用平台。将智能合约部署在区块链上,能充分发挥智能合约自动执行的优势,极大地节省人力成本。通过编写智能合约的功能函数,简化操作流程。
本文将汽车供应链与区块链技术结合,开发去中心化的分布式应用(DAPP),主要的功能有数据的上链存储、汽车所有权的流转变更、数据的溯源查询、授权管理等,以下从开发平台选择、系统的基础架构、供应链溯源流程和智能合约设计几个方面分别介绍。
随着区块链技术的不断发展,很多去中心化的应用和区块链平台被开发出来。一些企业为满足业务需求开发了自己的区块链平台,例如京东的智臻链、亿书区块链、趣链区块链等。但目前规模最大、产生最早的主流区块链平台主要是Bitcoin、Ethereum 和Hyperledger Fabric。在选择区块链开发平台时应尽量选择活跃度高、规模大的平台,一旦开发过程中遇到问题,可以通过求助其他开发者的方式寻求解决方案。以太坊具有可编程的功能,可以通过开发智能合约实现具体应用场景的功能逻辑,具备低延迟和可扩展性;而比特币的功能是依靠其脚本以及UTXO(未花费的交易输出)来实现,可拓展性比较差,不适合做深入的开发。超级账本同样支持智能合约编写,但是超级账本的智能合约需要在额外配置的隔离环境Docker沙盒中运行,部署繁琐,具有较高的不确定性,不利于系统的安全。综合以上考量,本文选用以太坊作为开发平台。
如图1,为区块链系统的基础架构,主要分为:数据层、网络层、共识层、合约层、应用层。层级之间相互衔接,共同维护系统的正常运转,各个层级的功能各不相同,以下对区块链系统架构的每个层级逐一介绍。
图1 区块链的系统架构
区块链的数据层主要用来存储节点之间的交易信息与数据信息,是汽车供应链溯源系统的重要组成部分。数据区块由区块头和区块体两部分构成。区块体存储的交易数据,以梅克尔树的形式组合起来,某一时段所有的交易迭代计算根哈希值,将根哈希值存储到区块头中,利用哈希函数的雪崩效应,一旦梅克尔树叶子节点的数据发生改变,根哈希值将随之改变。这一性质保证了区块数据的不可篡改,也可验证一笔交易是否在区块中。区块头中的时间戳为交易提供时间依据;区块头中还保存了上一区块的哈希值,由此将区块串联起来形成区块链。
本文将汽车供应链的生产数据分为敏感数据和非敏感数据,敏感数据是企业核心的生产工艺、生产流程、技术资料,作为最核心的机密,不可直接记录到区块链上,生产厂家更不会接受,因此必须对其做一定处理。非敏感数据包含企业名称、产品名称、工商注册号等信息,非敏感数据可以直接记录到区块链上。
敏感数据的处理,首先对数据进行哈希加密,将得到的哈希值记录到区块链上。这种处理方式保障敏感数据隐私性的同时确保供应链数据不被篡改。如图2所示。
图2 数据处理方式
区块链的网络层包含P2P网络协议、传播机制与验证机制。供应链上各参与方作为区块链网络中的矿工节点存在,参与方之间产生的交易传播到网络中,矿工节点在本地将交易打包成区块,开始挖矿,最先挖到矿的矿工获得此区块的记账权,获取一定奖励。
图3 汽车供应链溯源业务流程图
共识层封装是系统的共识机制,目前流行的共识机制主要有PoW(工作量证明机制)、DPoS(股份授权证明机制)、PoS(权益证明机制)、PBFT(实用拜占庭共识机制)等[20]。以太坊区块链早期使用的是PoW 共识机制,目前使用的是PoW+PoS的方式。共识机制保障了汽车供应链溯源系统信息的一致性,增强供应链参与主体和消费者对系统的信任度。
合约层主要包含智能合约和脚本算法,是区块链可编程的基础。将代码嵌入到区块链系统中,可以实现自定义的智能合约,在不需要第三方的情况下,达到某些确定的约束条件自动执行相关的命令,智能合约是区块链去信任的基础[21]。
应用层是用户与系统进行交互的窗口,采用HTML+JavaScript+css 的方式开发前端的交互页面。在交互页面提供操作接口,供应链参与主体根据其所处位置的权限,进行信息录入以及产品所有权的转移操作,消费者和监管机构可以通过查询接口查看车辆的转移记录以及汽车生产的溯源信息。基于汽车供应链溯源系统的的功能需求,前端页面设计了管理授权、创建车辆溯源码、对公转账、溯源转移以及链上查询的界面接口。前端的各种操作会调用智能合约,将相关交易数据完整地记录到区块链上。
由于汽车的生产流程十分复杂,涉及的参与主体数量多,仅供应商就存在自己的一级、二级甚至三级供应商。为了研究的方便,将汽车供应链的流程简化为:原材料供应商——零部件供应商——整车厂——分销商——终端客户。
如图3 为汽车供应链溯源业务流程图。汽车供应链溯源,首先需要各参与企业使用数据采集系统收集产品数据,并存储在数据库中,数据分类处理后上传区块链,由各方共同参与记账,经确认的数据永久保存在区块链上。同时,企业的数据库对接监管部门的数据库进行备份。消费者根据查询接口提交溯源请求,系统返回溯源结果。区块链上如果存在恶意节点篡改生产数据,数据对应的哈希值将发生改变,对应区块的哈希值也将随之改变,导致区块不能衔接而不被其他节点接受。
数据的采集上链至交易的最终确认,需要各个参与方的共同配合,存储在区块链上的数据可以被消费者和监管方查询,在溯源接口输入汽车唯一的溯源码可以返回汽车生产的各项数据,若车辆出现质量问题,可及时联系监管方报备。监管方可通过对比数据哈希值的方式快速判别出现问题的供应链环节。
分布式应用(DAPP)是以区块链技术为基础、利用以太坊等平台进行开发的。分布式应用程序的开发最重要的就是对智能合约的操作处理,智能合约的开发流程是:编辑、编译(compile)、部署(deploy)、调用(call)。谷歌浏览器提供了可在线编辑、编译的开发环境remix,部署智能合约可通过web3.js完成,调用过程是在JavaSript中由合约实例发送请求至web3.js,web3.js以RPC(Remote Procedure Call)的方式将请求上传至区块链中的智能合约,进而对区块链中的数据进行读写操作。
编写智能合约构建供应链参与主体的结构体,首先构建原材料供应商结构体,通过加入状态位的方式实现代码复用,原材料供应商、零部件供应商、整车厂、经销商的state 状态位分别对应1、2、3、4。系统中设置管理员,主要是进行系统权限的授权,根据所处供应链位置设置不同的权限。原材料供应商、零部件供应商、整车厂以及分销商均拥有录入信息的权限,分销商具有转移车辆所有权的权限,供应链联盟成员以及消费者和监督者均拥有系统溯源的权限。
信息上传至区块链系统存储以及对信息的查询需要通过编写的智能合约函数来实现,一般使用的solidity语言,因其栈深仅为1 024,对函数调用的深度以及入参、出参个数有影响,所以在进行智能合约函数编写时应尽量控制函数入参、出参个数。如有必要,可以通过分解的方式将较为复杂的函数进行拆分。为满足汽车供应链溯源系统的功能,在编写智能合约时构造相关函数满足其相应功能,如表2所示。
计算机的区块链环境配置,首先需要在官网上下载当前Node.js 的最新版本,npm 是随Node.js 一同下载的包管理工具。在Windows命令窗口输入node-v和npm-v来检测是否安装成功。由于其自带语言较慢,所以在命令行输入npm config set registry https://registry.npm.taobao.org切换到国内的淘宝镜像,输入npm config get registry验证是否切换成功。在命令行输入npm-install-g truffle 命令来安装truffle,输入set-executionpolicy remotesigned 命令进行设置。MetaMask 是谷歌浏览器上的一个插件钱包,不需要下载客户端,只需要将其添加至浏览区的扩展程序即可。Ganache是Truffle提供的可视化私有链工具,可以通过RPC HTTP://127.0.0.1:7545接口实现Ganache和MetaMask的连接。
项目的启动需要经过智能合约的编译、部署、执行,对应的命令分别是:truffle compile、truffle migrate、npm run dev。
表2 智能合约函数表
本系统的程序是基于JavaScript 和Node.js 开发的,系统扩展性良好,可以实现与网页的对接,便于供应链参与方和消费者与系统的交互。溯源网页的架构采用的是HTML+JavaScript+css 的组合方式,这种方式也是目前网页开发的主流模式。通过web3.js 库与trufflecontract两个库实现区块链和网页的连接。去中心化应用的特征是前端应用各种操作的对应代码运行在分布式网络上,溯源系统的追溯功能通过智能合约实现,而智能合约运行在区块链上,所以这个溯源网页满足分布式应用的需求。系统的主要功能包括管理授权、创建汽车、链上查询和信息录入等部分。
汽车供应链参与主体众多,本文为说明研究目的、展示溯源流程,选取8个节点作为供应链参与对象。首先在Ganache 中生成8 个账户地址,并为每个区块链地址分配500ETH,再将Ganache 中的账户地址导入到Metamask 中。通过切换Metamask 中的地址,进行不同供应链主体的操作。这个8个区块链地址分别对应1个管理员、2个原材料供应商、2个零部件供应商、1个整车厂、1个分销商和1个消费者。
5.2.1 授权管理
授权页面是管理员对供应链参与主体进行授权的过程,对不同的参与主体设置不同的状态码,调用智能合约的setPermission 函数。状态码为0,是消费者以及监管员的权限,仅有溯源查询功能;状态码为1,是经销商的权限,具有转移车辆所有权的权限,可以写入销售数据,溯源查询;状态码为2,指的是生产商的权限,具有写入生产信息的权限。如图4,为管理员向区块链地址为0x0b823c95283854265d038300cA0D9F8238AF0e36的节点授予经销商权限。授权的过程调用智能合约,会产生交易费,在Metamask中确认交易信息,即可将授权数据永久的存储到区块链上。
图4 管理员授权界面
5.2.2 创建汽车溯源码
创建汽车指的是为生产的汽车创建唯一的溯源码,溯源码与实体车辆一一对应,这一功能由管理员调用。为每一台汽车生成唯一的溯源码,即生成追溯查询的依据,可以根据这一溯源依据进行车辆的产品溯源。在接口中输入汽车名称,调用智能合约的createNewCargo函数,返回已创建好的汽车ID,如图5,创建的汽车名称为别克-GL8 Avenir,生成的溯源码为1403694914,创建时间为2020/7/2/下午11:16:17。创建的汽车默认属于管理员,本系统管理员的区块链地址为:
0x0fc9147519bb2883be11dc78fa9954cba38f711e
图5 创建汽车溯源码界面
5.2.3 信息录入
信息录入模块是供应商、整车厂以及分销商进行信息录入的模块。以整车厂的信息录入为例,将Metamask的地址切换到整车厂的地址,输入溯源ID、整车厂名称、生产汽车的名称以及产品数据的哈希值、工商注册号,点击发布确认交易信息,这些信息将会记录到区块链上,任何人不可删除修改。如图6所示。
图6 整车厂信息录入界面
原材料供应商、零部件供应商、分销商的操作方式与整车厂的信息录入方式类似,只需切换到对应的区块链地址进行相关信息录入即可,不再一一赘述。录入的信息可以在链上查询模块的溯源查询页面查询。
“你们的人数是奇数,而我们是两两格斗。很显然,今天有个人不必参加格斗。”老四从训练室的“黑板”前退开,看了我一眼。我的名字旁边空着。
5.2.4 溯源转移
溯源转移指的是汽车供应链的转移,通过这一部分的功能能够实现车辆所有权的流转变更。将Metamask的地址切换到车辆拥有者的区块链地址,输入车辆溯源码以及接收车辆的区块链地址,点击转移按钮即可调用智能合约的transfer函数,进行所有权的变更。如图7所示,经销商区块链地址:
0x0b823c95283854265d038300cA0D9F8238AF0e36管理员将溯源码为1403694914的别克-GL8 Avenir转移经销商。这种转移即车辆所有权转移,区块链上的账本记录能够提供可靠性的证明,避免了传统方式的繁琐手续。
图7 车辆所有权转移界面
此外,供应链产品的转移伴随着资金流的移动,以太坊本身就有代币体系,可以利用以太坊平台的代币系统进行支付。
5.2.5 链上查询
链上查询功能模块是本系统的核心,将链上的查询分为基本查询和溯源查询页面。本系统的任意参与方都有权限使用此功能,查看车辆的流转变更数据以及汽车生产的相关数据。
(2)溯源查询页面,任何参与主体可以根据汽车溯源码,查询到对应汽车生产过程中涉及的原材料供应商、零部件供应商、整车厂、分销商等相关生产数据,溯源查询网页的截图如图9所示,其中产品数据栏内的哈希值为敏感数据哈希值。
传统的汽车供应链通常需要大量的人力物力来维持系统的正常运转,防伪溯源难度大。而使用基于区块链的汽车供应链溯源系统,只需在部署以及调用智能合约时消耗少量的交易费,即可减少人财力的损耗,简化追溯流程,提高溯源的效率。
图8 汽车供应链转移信息界面
传统的溯源系统与区块链溯源系统有很多的区别,以下从数据可信度、数据的安全性、溯源效率和监管效率方面进行对比。
传统的溯源系统:供应链数据存储于多个中心化数据库中,易于单方面篡改,数据的可信度低;中心化的数据库易于遭到黑客攻击,数据安全性有待提高;溯源过程消耗大量人力物力,取证需要多个参与主体的共同配合,追溯效率较低;监管机构通常在产品发生质量问题时进行监管与调查,无法做到实时管控,监管的深度和广度有待加强。
图9 汽车供应链溯源信息界面
区块链溯源系统:区块链数据库由多方共同维护,通过共识机制达成一致性,几乎无法篡改,数据可信赖;去中心化的区块链数据库,抗攻击能力强,数据的安全性高;产品的数据记录在区块链上,任何人都可以查看,出现问题可直接查证,追溯效率较高;将监管机构纳入到区块链溯源系统,可时时监测供应链相关数据;极大提升监管效率。
将本文的溯源系统与文献中3 篇基于其他技术的汽车供应链溯源系统做比较,从表3中可以看出,4篇文章设计的系统都具有可追溯性,仅有本系统和文献[9]具备数据的完整性。除此之外,本系统还具备其他系统不具备的数据安全性,以及高效的监管能力与追溯效率。通过对比可以得出,区块链溯源系统相比于传统的溯源系统,能够增强数据的可信度、提高溯源效率、加大监管机构的管控力度、保证数据的安全性。
表3 系统性能对比
本文基于区块链技术构建了汽车供应链的溯源系统,采用区块链+汽车供应链的模式,对生产销售数据进行分布式存储,保证了供应链数据的安全性,增加参与方的互相信任,使得汽车产品的溯源更加高效便捷。在系统的设计方面,增加了对敏感数据的处理环节,根据功能需求设计了智能合约,通过实例对溯源系统进行了展示。最后,分析了区块链溯源方式相比于传统溯源方式的优势。总之,区块链技术的使用,能够重塑信任体系、减小溯源难度、增加信息共享效率。在实际的应用场景中,应结合具体的使用环境进行调整,比如参与方使用系统的激励方案设计、多方协调等问题。区块链作为一项新技术,发展过程会面临诸多问题和机遇。在汽车制造行业,区块链除了具有防伪溯源的潜能,在智能仓储、物流运输、供应链金融等方面也存在巨大的发展前景。