刘 凯,卢 鑫,吴 箭,廖世勇
(1.云南省烟草公司,云南 昆明 650000;2.文山州烟草公司砚山县烟草专卖局(分公司),云南 昆明 650000;3.云南烟叶复烤有限责任公司,云南 昆明 650000)
随着物联网、移动互联网、GIS等信源端信息采集智能化自动化程度迅速提高,需要人工录入的信息录入方式已经逐渐被取代.相关技术的应用都提升了烟叶生产收购过程的精细化程度,为溯源提供了必要的信息采集存证.虽然当前已经有部分实现了烟叶供应链采集、存储端的数字化过程数据管理,但是仍然以中心化数据存储模式基础的信息处理模式限制了这些应用性能的进一步提高.例如,目前已有的溯源模式包括条形码、RFID射频识别技术、扫描二维码等,但是它们很多均是采用中心化数据库对过程采样数据进行统一进行管理.这种模式下,数据库的管理和访问权限成为了限制质量溯源应用的关键.
因此,当前烟草行业迫切需要一种工具能在当前法律和行政管辖框架下,整合供应链全口径生产交易要素打通供应链在数据采集、存储、分析上的条块分割和壁垒,以实现烟叶供应链内部信息的有序透明交互,促进供应链各环节决策的互联畅通.以充分挖掘供应链的信息化智能化增益,执行关键工业过程流程的数据监控及产品防伪质量溯源等与供应链运行业务相关的复杂数据产品[1-4].
本文将引入区块链技术构建信息分布式存储架构,进行烟草产品制作流程全程溯源模型进行研究.通过结合区块链技术,建立具有去中心化、交互通畅、不可篡改的烟草安全溯源体系.利用区块链在各方缺乏互信的前提下不借助中心权威服务端依然能够完全信息交互的特性,可进一步提高烟草供应链各环节间的信息协作透明度,为开展数字烟叶溯源防伪的工作奠定基础.利用区块链技术分布式存储的特点,每个节点上保存有完整的信息,它可以保证在信息安全透明的同时,更快的进行实时数据共享,降低信息共享成本和负担.任何人都可以在公开的接口查询区块的数据,在整个系统中分享和交换数据,保证系统各方的高度开放性和透明性[6].利用区块链智能合约不受第三方干扰自动化强制执行预先定义好的规则和条款,执行可追踪、不可逆转、结果客观的特点,提高各参与方主体的协同效率以及降低合约履行过程中的差错率.
区块链技术是基于去中心化的对等网络,用开源软件把密码学原理、时序数据和共识机制相结合,来保障分布式数据库中各节点的连贯和持续,使信息能即时验证、可追溯,但难以篡改和无法屏蔽,从而创造了一套隐私、高效、安全的共享价值体系.区块链技术基于很多个对等节点的分布式存储技术,并把由所有参与方共同参与创建和维护的数据按一定的时间顺序和密码学加密算法存储,这就使得区块链技术具有去中心化、不可篡改的特点.
区块链分为公有链、联盟链和私有链.它们分类的依据是按照准入机制不同而划分的[7].
公有链是完全开放的区块链,任何人都有权限往区块链账本中读写数据,任何人都可以参与系统维护,加入公有链不需要授权,退出和加入都是自由的.因为它的准入门槛低,所以公有链需要一套共识机制来筛选记账节点.所有的节点都是公平竞争.
公有链不同的是私有链,它大多归属于私人或者个别机构.私有链写入权限仅面对某个组织或者个人,读取权限可以对外开放或者进行任意程度的限制.私有链因为节点比较少,而且都是内部节点所以记账环境是可信的.
联盟链是指多个机构共同参与维护的区块链,交易的合法性需要部分或者所有参与机构确认通过才能写入区块链.公有链、私有链、联盟链的比较如表1所示:
表1 区块链分类与比较Table 1 Classification and comparison of blockchain
哈希算法可以通过哈希函数把任意长度的二进制数据映射为较短的固定长度的二进制值,这个二进制值称为哈希值.哈希算法的映射是不可逆的、单向的.一般来说,只能通过原始数据来计算出哈希值,不能通过哈希值反推出原始数据.并且,如果更改一下原始数据,那么哈希值也会跟着改变,通常是不可能由不同的原始数据而计算出一致的哈希值.当然,还是存在不同的原始数据计算得出了相同哈希值的情况,这种情况被称作哈希碰撞[8].一个好的哈希算法是极难通过哈希值反推出原始数据的,而且其哈希碰撞发生的概率也很低.区块链利用哈希算法将存储在区块体中的数据映射为哈希值,并将哈希值存储在区块头中,区块头和区块体就组成了一个区块.同时每个区块也会存储前一个区块的哈希值,于是每个区块就由前一区块的哈希值串联起来,形成了区块链.这种链状的形式也使得每个区块中的数据一旦上传就被永久的存储起来了,而不能被篡改,即区块链具有不能被篡改的特性.
智能合约是区块链中一段自动执行的脚本,这个脚本规定了一些操作,当条件被触发时,智能合约就执行相应的操作.由于区块链具有不可篡改的特性,使得智能合约存储在区块链中也不能被篡改,只要条件被触发就自动执行相应的操作.
烟草供应链主要由四个部门组成:供应商、烟草工业公司、烟草商业公司、客户.而传统烟叶供应链存在中心化、信息不透明、信息存储不一致等问题.根据《烟草专卖法》相关条款,烟草商业公司全权负责卷烟的销售,烟草工业公司负责卷烟的生产,烟草商业公司负责卷烟的流通渠道,任何组织与个人不得在没有取得相应经营权的前提下进行卷烟的流通与销售[9].传统烟草供应链,如图1所示,以烟草商业公司为中心,供应商、烟草工业公司、客户三个部门之间负责相应的部分,互相之间的信息不共享,信息主要由烟草商业公司掌握;并且由于地域差异,各地区都有自己的相关系统并依照各自的地区制定烟草需求,数据格式不统一,信息量也非常大,使得数据存储缺乏一致性.
图1 传统烟叶供应链Fig.1 Traditional tobacco supply chain
相较而言,基于区块链的烟叶供应链,通过安全透明的区块链分布式账本系统解决了传统烟叶供应链中心化、信息存储不统一等问题[10].如图2所示,基于区块链的烟叶供应链的四个部门都被纳入到同一个区块链平台中,四个部门之间的信息通过“链上+链下”的存储结构,只将部分信息上传至区块链,保证区块链上信息的格式统一,安全、透明、可追溯.
图2 基于区块链的烟叶供应链Fig.2 Tobacco supply chain based on block chain
根据不同功能,将基于区块链的烟叶溯源系统的总体层次分为数据层、服务处和应用层三个部分(如图3所示).
图3 基于区块链的烟叶溯源系统总体层次图Fig.3 Overall hierarchy diagram of tobacco traceability system based on block chain
数据层主要负责数据采集和数据存储,通过传感器、手机、服务器等设备分别采集供应商、烟草工业公司、烟草商业公司、客户的数据后将数据上链.
应用层直接面向供应商、烟草工业公司、烟草商业公司、客户四个部门,作为与区块链交互的接口,为每个部门提供上传数据和读取数据的服务.
服务层为数据层和应用层提供服务.具体地,对于数据层,数据上链时发起交易后触发链码服务,数据上链后保证的数据同步;对于应用层,每个部门进行数据处理时都需通过权限管理服务,并且每个部门都要达成共识后,数据才上链.
根据上面系统总体层次图的划分,选用Fabric作为技术支撑,构建溯源系统.Fabric作为一个典型的区块链技术平台,不仅保留了区块链去中心化、不可篡改、共同维护和可编程的智能合约这四个特性,还包括权限系统等适用企业的特性,为溯源系统提供了得天独厚的优势.
Fabric是由多个模块组成的,其中orderer模块和peer模块是Fabric系统中最核心的两个模块[11].orderer模块负责对交易进行排序和打包.Peer模块中运行着很多主节点,主要负责存储区块链数据、运行维护链码、提供对外服务接口等.模块中主要有四个角色:提交节点(Committer Peer)、背书节点(Endorse Peer)、Leader节点(Leader Peer)和锚节点(Anchor Peer),这四个角色通常是由四个Peer服务器节点组成.提交节点主要负责维护区块链的账本结构,定期从orderer节点获取打包好的区块,校验这些区块的合法性后将其加入到区块链上.背书节点主要负责校验交易,在收到交易请求后对其合法性进行校验,校验成功后将结果反馈给交易发送者.Leader节点负责获取区块信息.锚节点主要负责信息的交换.
组织作为Fabric中承担数据信用责任的区块链系统参与方,负责制定组织之间的管理方式.本文的溯源系统将供应商、烟草工业公司、烟草商业公司、客户作为四个组织,他们之间的协作方式如图4所示.
图4 烟叶溯源业务场景图Fig.4 Tobacco leaf tracing business scene diagram
供应商为烟草工业公司种植烟叶,供应商收采烟叶后,在区块链上发起种植数据上链的交易请求,此时供应商组织中的背书节点(Endorse Peer)对这笔交易进行校验,校验成功后发送交易给orderer节点以及反馈结果给供应商,供应商就将此笔交易记录至本地账本中.orderer节点检查交易,符合条件后将交易发送到排序队列,然后把交易打包进区块中.接着,另外三个组织中的Leader节点从orderer节点中获取区块信息,获取到种植数据上链的交易并验证其合法性后,就把这边交易也记录在本地账本中.同时,四个组织的锚节点之间互相交换信息,保证信息同步.此时这条交易被记录在四个组织的本地账本中,四个组织达成共识,于是各组织中的提交节点(Committer Peer)从orderer节点中获取区块,验证区块的合法性后便将区块加入到区块链上.同理,烟草工业公司为烟草商业公司加工烟叶,烟草商业公司向客户销售烟叶都需要所有的组织达成共识、共同认证了才可上链.而一旦交易上链便不可再删改,消费者就可通过相应的手段查询到真实可靠的溯源信息.
去区块数据结构分为区块头和区块体,区块头主要封装了当前区块链版本号、前一区块的哈希值、时间戳、Merkle根等信息,区块体包含有当前区块的交易数量以及包含当前区块经过验证的、创建区块过程中所有的交易记录.每一条交易记录由三部分组成,分别是烟草ID、烟草源数据对应的交易哈希值以及操作单位.本系统采用的区块数据结构如图5.
图5 区块数据结构Fig.5 The data structure of the block
3.4.1 传统数据库与区块链差别
传统数据库通信成本高,其他人如果距离数据库较远,那么通信的速度就会慢一些.容量的可扩展性也很差,如果数据太多,对于设备存储性能就会要求比较高,设备升级也会带来很大的困难.如果大量用户同时访问数据库,中心服务器的压力也会陡增,就相当出现一个热点事件,服务器会因为高并发访问而崩溃.区块链作为一种分布式账本,相比于分布式数据库常常分片存储数据,每一个节点都会存储完整的区块链数据.在数据查询方面,区块链任何单节点可以独立完成查询,分布式数据库需要全节点共同配合完成.在事务更新方面,分布式单节点可以独立管理数据可以修改和删除,区块链是通过共识完成,单节点无法自己更新,否则会被认为是恶意节点.
3.4.2 数据的存储方式
传统信息系统和区块链都有一定的局限性,作为大规模应用,数据在大规模节点或者是大数据量的情景下,区块链存储性能会急剧下降,导致系统不可用,为保证系统的高可用性,本系统模型采取链上、链下相结合的存储方案,链上链下数据协同可以确保数据的关联性和一致性.本系统把源数据中的多媒体数据如图像数据、音频数据、视频数据等采集到终端再异步上传到分布式文件数据库或者其他类型数据库中进行存储,以此来扩展区块链链上的计算和存储性能,这样来减轻区块链节点的存储压力.对于烟草参与方来说,某些敏感数据 如果放在链上意味着各参与方都可见,但是并非各组织部门都愿意将自己的数据公开透明化,那么可以采取将数据加密做一些脱敏处理再上链,这提高了数据的隐私保护性.采用链上链下存储不仅可以扩展计算存储能力,也可以解决隐私保护、防篡改的等问题.烟草区块链溯源系统的存储结构如图6所示.
图6 烟草区块链溯源系统存储结构Fig.6 Storage structure of tobacco blockchain traceability system
具体来说,供应商、烟草加工公司、烟草商业公司、客户均有自己的本地数据库,它们分别将自己单位对烟草的操作记录数据保存在自己的本地数据库中,然后再对这些数据取哈希值,最终将哈希值放到区块链上,这里采取SHA-256安全散列算法,该算法抗碰撞性很高、也能抵御现有的差分攻击、生日攻击等[9].相比于现在广泛使用的MD5和SHA-1等更具安全性.消费者溯源时扫描产品二维码得到产品唯一序列号,再根据序列号去链下各本地数据库查找该产品所对应的哈希值和区块号.根据区块号去链上查找交易哈希值,如果二者数值一致则分别从各本地数据库读取溯源源数据.
利用区块链的可编程特性,我们设计了智能合约模块.hyperleger fabric中智能合约常被称为链码,智能合约主体包括了合约内容和合约参数两个部分.合约内容需要烟草项目各参与方提前约定好协议内容,在各个参与方达成共识形成一定的条例以及规范的之后,本系统把这些条例以及规范写成一段计算机可以自动识别并且执行的代码.在这个过程中各方还需要将链码的名称达成共识.合约中封装了触发合约执行的条件,当外部输入触发到某一条件时,该合约就会有对应的响应,这个响应包括合约中数值的更新[12].可能涉及区块链账本中交易记录更新.智能合约是本系统正常运作的基础,所有的操作都需要有特定的智能合约进行执行、验证.比如本系统中权限管理模块,会有相应的权限管理智能合约,当有组织用户想要加入这个网络时,合约会验证用户的合法性.在fabric网络中,链码主要分为系统链码和用户链码.用户链码的生命周期是基于区块链分布式账本的状态和处理逻辑,通过fabric提供的接口与账本平台进行交互.它主要是负责fabric自身的处理逻辑包括一些系统配置、背书、校验等工作.在peer节点启动时会自动完成注册和部署.以供应商节点为例,当需要存证时,将烟草原料信息和辅料信息上传上链时,会向链上发送一笔交易,系统链码会解析交易的结构格式,检查该笔交易是否参与背书、如果有合法的背书信息则返回正确信息.在收到一定数量节点的正确信息之后表示这笔交易被大部分节点所认可,该笔交易可以上链存储.
智能合约实现了与物理世界的交互,通常合约内容是机动的、需要人为商定的、需要开发人员编写在特定场景下使用的链码为用户链码,链码的部署也是作为一笔特殊的交易写入区块链的,所以一旦写入就无法更改.本系统中用户链码承担了现实生活中烟草溯源所有场景.将各参与方协商的内容用链码形式呈现可以保证项目各方在不引入第三方前提下,自动强制执行,避免了人为因素的干扰,合约各相关方不存在违约的情况.本系统中智能合约的生命周期及模型如图7所示:
图7 合约生命周期及模型Fig.7 Contract life cycle and model
基于区块链的烟叶溯源系统溯源流程图如图8所示,展示了系统是如何进行溯源以及如何保证溯源信息的真实性.对于消费者而言,整个数字化信息溯源过程高效率地实现了实时交互、不可篡改及全程透明等特性,从而有力地保证了烟叶产品的信息真实性,支撑起品牌的信誉度和消费者的消费信心.
图8 溯源流程Fig.8 Traceability process
消费者购买香烟后,可以通过扫描香烟包装上的溯源二维码、关注烟草公司公众号输入溯源码和在官方网站输入溯源码三种方式分别查询供应商、烟草工业公司、烟草商业公司以及分销商的本地数据库并记录它们的溯源信息和区块号信息.对于区块号信息,根据区块号到区块链中查询该溯源信息对应的哈希值,记作S2;另一边,对于溯源信息,通过数据上链时使用的哈希算法SHA-256来计算查询到的溯源信息,得到一串哈希值,记作S1.最后,对比这两个哈希值S1和S2是否全部一致,若是,则说明在本地数据库中查询到的数据就是写入区块链上的数据,在本地数据库中查询到的溯源信息未被篡改;反之,则说明本地数据库中的数据与区块链上的不一致,在本地数据库中查询到的溯源信息是被篡改过的.这样就保证了溯源信息的真实性.
本文对基于区块链的数字烟叶溯源系统的模型进行了研究,对区块链平台进行了筛选,最终采用Hyperledger Fabric联盟链的框架.哈希散列函数采用SHA-256加密算法实现隐私保护.数据存储采用“链上+链下”相结合的方式来提高了区块链的计算性和可扩展性.通过与智能合约的交互实现各主体之间能够达成共识、不受第三方权威机构限制、为烟草从生产到加工再到运输再到消费者的全流程可追溯提供支撑.本文提出的模型可以基本满足目前在烟草溯源中信息不透明、数据分散、消费者与企业、企业与企业之间不信任等的问题,从技术上保证了溯源的可行性.