基于区块链物联网的抽样检测平台①
2022-06-29周寅峰郁曹一梅年松张学军李惠蓉张自峰
周寅峰, 郁曹一, 梅年松, 张学军, 李惠蓉, 张自峰
1(盐城市质量技术监督综合检验检测中心 电子电器检验部, 盐城 224056)
2(中国科学院 上海高等研究院, 上海 200120)
3(中国科学院大学, 北京 100049)
党的十八大以来对政府提出了更高的监管职能要求, 一方面要求政府“放、管、服”, 减轻企业的负担,另一方面又要求提高对产品质量的有效监管, 实施质量提升工程[1]. 近年来, 经济的快速发展使得商品的种类数目大大增加, 市场监督抽查规模和抽查范围不断地扩大, 传统依托纸质传输信息的抽样检测模式已无法满足日益增长的数据量, 无法适应社会发展的要求[2].
我国目前抽样检测行业整体的信息化程度偏低[3,4].目前国内与抽样检测领域相近的质量管理领域较好地应用了计算机技术、感应技术和数据分析技术等信息技术[5–7], 但在抽样检测行业信息化程度一直停留在较低的层次, 主要体现在: (1)抽检效率不高, 检测数据还没有实现自动采集处理, 普遍采用人工录入; (2)数据源不可信, 采用人工录入数据, 出现人为错误的可能性大大增加, 另外中心化的系统中管理员权限较大, 数据上传后可以被系统管理员轻易地更改.
中国通信标准化协会于2019 年11 月发布了《“物联网”+“区块链”应用与发展白皮书》指出可利用区块链技术进行数据存储管理, 解决传统数据存储模式的中心化、易被攻击篡改等问题[8]. 本文提出了一种基于区块链与物联网技术相结合的抽样检测管理平台, 通过物联网终端设备对过程进行智能感知, 结合区块链的可溯源, 不可篡改等特点, 建立数据安全可信, 过程可监控的高效抽样检测管理平台.
1 相关工作
1.1 区块链
2008 年中本聪在《Bitcoin: A peer-to-peer electronic cash system》中描述了一个去中心化的数字货币系统以及实现它的密码学细节, 作为底层技术的区块链开始受到学术界和工业界的追捧. 区块链作为分布式的公共账本, 具有以下特征:
(1) 去中心化
区块链技术是一个去中心化的信息存储机制, 这一特性决定了区块链是由众多节点共同保持和维护数据的. 与传统的中心化防伪系统相比, 分布式的数据存储使得数据更加安全[9], 即使发生单点故障, 通过其他节点保存的副本依旧能维持整个区块链网络, 保证数据安全性的同时也保证了完整性.
(2) 不可篡改
数据一旦经由各节点共识后上传至区块链网络,则无法被篡改[10]. 原因在于区块内数据以默克尔树的形式存储在区块体内, 数据作为默克尔树的叶节点, 两两节点不停进行哈希运算直至只剩一个树根节点, 树根节点保存在区块头中, 当叶节点保存的数据被篡改时, 树根节点发生变化引起区块头的更改, 这就导致了整个区块链的发生变化, 而篡改整个网络要付出极大的代价, 比如以POW 为共识算法的区块链, 要掌握全网50%以上的算力才能修改整条区块链.
(3) 去信任化
智能合约是一段运行在区块链系统中的代码, 也是一套数字形式的承诺. 链上参与方制定智能合约, 当合约中条件被触发则合约自动生效并执行. 大大减少中间人为因素所导致的延迟履约甚至不履约, 加强诚信合作.
区块链不可篡改的特性可从根本上改变信任方式,解决数据的信任和安全问题. 区块链包含3 大分支, 分别是公有链、私有链和联盟链. 公有链项所有节点开放, 加入公有链的各个节点都能参与共识, 但这会导致Sybil 攻击, 攻击者大量创建节点干涉整个网络的共识,增加维护系统的开销[11]; 私有链仅对个人或单独的实体开放, 不具备面向公共的能力; 联盟链采用多中心的方式, 数据仅在联盟中的机构极其用户中传递, 相比公有链的海量节点, 联盟链中节点较少, 可以较快地达成共识, 通过预先设定参与节点、权限控制等方式降低出现Sybil 攻击的可能. 同时联盟链具备多通道的特点, 可将互相信任并可呈现敏感数据信息的节点加入同一通道中, 实现隐私保护[12], 种种特点使得联盟链更适合本系统.
1.2 物联网
物联网通过嵌入式计算、嵌入式设备、通信技术、应用程序等基础技术使得普通设备转变为智能设备, 实现设备与设备之间、设备与人之间信息交互[13].物联网大致可以分为感知层、网络层与应用层. RFID标签、温湿度传感器、全球定位系统等各类物联网终端设备组成的感知层实现对外界的智能感知, 采集数据[14]. 然后使用网络层中各类通信技术将感知层采集到的数据传输到应用层. 应用层运用大数据、数据挖掘等技术, 对海量的感知数据和信息进行分析并处理,实现智能化的决策和控制[15].
物联网正将各行各业重塑为以数据分析为导向来制定决策的智能行业, 医疗、旅游业、农业等实时数据的获取与分析使得各行各业的从业人员及时有效地制定方案. 同时物联网打破一个又一个信息孤岛, 以智慧城市为例, 城市管理人员和市民可以获取大量城市环境的实时信息, 以此为基础综合考量相关数据后采取行动.
1.3 国内外研究进展
自物联网概念提出以来, 物联网产业的迅猛发展使得越来越多的物联网设备接入到整个网络中, 预计2025 年连接数可能达到1000 亿, 但中心化的数据处理方式使得物联网发展到了瓶颈, 万物互联不仅带来了海量的数据还带来了网间协作、隐私与安全、信任机制等挑战, 而区块链去中心化、不可篡改、可溯源等特性, 为解决物联网面临的上述瓶颈和挑战提供了新的思路, 成为学术界和工业界的焦点.
国内外对于区块链物联网相结合的研究大致分为两类. 第一类研究将区块链与物联网相融合, 解决物联网发展面临的问题, 如海量物联网设备的管理、产生的数据如何存储、不同物联网设备怎样交互数据等,现行物联网架构所采用的中心化管理方式无法有效地处理这些问题. Fakhri 等[16]提出一种基于区块链的物联网设备信息交互方案, 将区块链作为信息交互平台实现不同物联网设备的安全交互. Quang 等[17]在研究了海量物联网的管理方式与存在的问题后, 提出了基于区块链的可扩展物联网架构以管理大规模物联网设备, 结合智能合约实现物联网设备的重配置. Wang等[18]提出了一种基于分层存储的区块链工业物联网架构以解决物联网数据存储问题, 通过区块链连接器与云连接器构建分层存储架构将大部分区块数据存储在云中, 而将最新的区块信息存储在工业IoT 网络中, 实现了在物联网设备中管理与存储区块链. Pavithran 等[19]提出了一种能应用于物联网的基于分层身份加密(HIBE)的保护隐私区块链架构, 解决了现存的区块链结构如比特币无法直接融合进物联网中, 该方案同时能保证隐私安全.
第二类研究偏向应用领域, 将区块链技术与物联网技术相结合, 取长补短, 解决实际生产生活中存在的问题. 国内外多数研究人员将目光放在供应链上, 将RFID 芯片嵌入供应链生产、仓储、运输、销售的全流程中, 随时获取当前的数据并监控全流程, 同时将数据保存在区块链中以保证数据的可信可溯源. Mo 等[20]选择服装行业作为应用场景, Sun 等[21]选择白酒行业,Mondal 等[22]以食品供应链为应用场景, 结合上述方案实现生产、运输、仓储和销售的全流程透明化管理,保证生产的物品都真实可靠. 但供应链监督不只是厂商的责任, 需要更有效的监管, 且在一些特定的供应链中, 如海鲜、农产品等食品供应链对温度环境的要求更为苛刻, 所以陈飞等[23]在设计区块链时引入食品药品监督局节点, 实现了数据变更服务和食品召回功能.消费者不仅能查询食品的全流程溯源信息, 还能在该溯源系统中进行维权投诉. 张森等[12]重点关注冷链运输时的温度信息, 提高了冷链物流行业的可信性和数据的安全性. 此外, Malik 等[24]引入信誉系统参与整个供应链的管理, 再通过智能合约整合资源, 提高整个供应链的效率.
2 基于区块链物联网的抽样检测方案设计
2.1 现场抽样
现场抽样环节为抽样检测流程中的先序环节, 具体流程为: 企业抽样-出证索证-现场取样-现场封样-填写表单-签字盖章-样品运输. 在现场抽样环节需要追溯的信息包括: 包含企业厂牌、厂名的照片; 抽样人员的检验员证、企业营业执照或组织机构代码证等证书;抽样物品的详细信息; 抽样单位和检验员信息. 在实际过程中, 由于沿用纸作为信息传输媒介, 不仅效率低下,而且容易在传递过程中丢失. 使用NFC 标签与区块链技术相结合, 在移动端录入抽样单信息的同时, NFC 芯片关联样品, 最后将所有需要追溯的数据上传至数据库与区块链. 在现场抽样环节实现数据来源全部可信,可追溯, 提高现场抽样的效率. 其现场抽样过程图如图1 所示.
图1 现场抽样过程图
2.2 子样拆分与检验
抽样完成后, 样品会送到当地检验检测机构, 分析样品的成分、结构和性能等. 子样拆分是检验前的必要环节, 样品检验除了对样品整体进行评估检测外, 样品的各个组成部分也需要详细的分析. 因此样品检验前, 将样品的各个部分依次拆分并通过移动端关联标签, 然后送往不同的检验的部门. 各部门收到子样后读取子样的NFC 标签, 再读取检验设备的标签, 进入检验记录的界面. 检验完成后在该页面上填写检验项目和检验结构. 其子样拆分与检验过程图如图2、图3.
图2 子样拆分过程图
图3 检验过程图
2.3 人员及设备管理
人员管理在市场监督过程中是很重要的一环. 移动端: 现场抽样, 子样拆分, 检验记录和设备管理, 各个环节需要安排不同的人员进行操作, 所以要对每个人的权限进行区分. 在PC 端, 所有人员都可以登录查看检验检测的进度和结果, 但只有管理员可以审核检测结果, 也可以对不同人员的权限进行授权. 人员管理细节分工如图4 所示.
图4 人员管理分工图
各子样送到不同部门检测前, 为了保证获取到的检验数据真实可信, 需要扫描检验设备的NFC 芯片获取仪器的基本信息. 故在仪器正式投入使用前, 需要录入仪器的基本信息: 名称, 规格, 测量范围等, 同时关联到NFC 芯片, 未关联的设备不能用于检测, 保证检测的结果可追溯. 设备管理过程图如图5 所示.
图5 设备管理过程图
3 基于区块链物联网的抽样检测平台
3.1 存储结构设计
区块链网络的特点决定了无法保存大规模数据,然而整个抽样检测流程中包含抽样单、详细样品信息、子样信息、检验结果等大量需要存储的数据. 全部存储在区块链中不仅影响上链速度, 而且较高的硬件要求增加了运维成本. 所以在本文中, 将采用区块链与传统关系型数据库相结合的方式[23], 当各节点采集完数据后, 先将数据经由SHA256 算法[25]提取数据摘要并存入区块链网络, 上链成功后区块链网络返回一个哈希值, 区块链网络中保存该哈希值与数据摘要, 数据库中则存储完整的数据和数据摘要上链后返回的哈希值, 数据库交由市场监督局节点进行维护, 其余节点可以通过区块链中的哈希值在数据库中进行检索来获取完整数据, 同时根据数据摘要来判断数据库中的数据是否被篡改. 双存储结构不仅能提高整个系统的运行效率, 而且解决了区块链存储数据困难的问题. 存储结构如图6 所示.
图6 存储架构图
3.2 区块链网络结构设计
抽样检测主要由现场抽样部门、子样拆分部门、检验检测部门和审核结果的市场监督局构成, 每次抽样检测需要四方合作共同完成, 且保证数据可信可追溯. 本系统使用Hyperledger Fabric 搭建区块链网络,Hyperledger Fabric 是Linux 基金会下应用最广泛的开源联盟链项目, 其模块化架构、高度保密性等特点使得用户能够快速搭建联盟链网络[26], 本系统的网络结构如图7 所示.
图7 Fabric 网络结构
本平台区块链网络设计中, 以抽样检测的流程作为划分节点方式, 以地级市为例, 各区县检验检测中心以环节划分为现场抽样、子样拆分与检验检测3 个部门, 市场监督管理局除了划分以上3 个部门外, 单独设置市场监督局节点, 相同部门构成1 个组织, 市场监督局节点单独构成1 个组织审核前3 环节产生的数据.现场抽样、子样拆分、检验检测与市场监督局4 个组织处于相互对等的地位, 四方共同参与联盟链的管理.每个组织内包含多个Peer, 分别承担背书、与排序服务节点以及其他组织交互的任务, 但所有节点都需要作为记账节点维护整个账本. 每个组织都有一个为客户端生成证书的Fabric-CA 服务器, 客户端只有向CA注册后才能通过SDK 向Peer 发起交易. 本系统选择具有高吞吐量易扩展的Kafka[27]作为共识机制, 以提高系统效率.
3.3 整体系统框架设计
经过第2 节的抽样检测方案设计与第3.1 节、第3.2 节的存储结构与区块链网络设计, 系统完整框架如图8 所示.
图8 系统完整架构
引入关系型数据库后解决了区块链存储数据困难的问题, 将完整数据存储在数据库中, 区块链网络只存储数据摘要. 数据库由市场监督管理局节点维护, 区块链网络则由各功能对应的节点和市场监督管理局节点一起维护.
现场抽样、子样拆分、检验中心和市场监督局节点信息录入过程相同, 以现场抽样为例, 将现场抽样环节采集到的数据打包后, 先经过SHA256 算法获取该数据包的数据摘要并发送到区块链网络, 上链成功后返回一条哈希值. 此时将返回的哈希值与打包完的数据同属存入数据库中. 而市场监督局节点除了录入信息外, 还负责处理其余节点更正数据的请求与维护数据库. 前3 个环节中, 由于数据录入量较大, 存在操作失误或其他因素导致的信息录入错误, 但因为区块链中的数据无法随意更改. 所以在本系统框架中将更改数据的权限给予市场监督局节点. 若前3 个环节中发现录入信息错误, 可以向市场监督局节点提交更改信息请求, 节点审核通过后由它将更正后的信息上传至区块链网络与数据库.
本方案基于区块链与物联网技术, 将NFC 芯片应用于抽样检测流程中的各个方面, 从源端采集数据, 保证了数据来源可信, 数据可追溯. 同时减少传统抽样检测过程中人工录入的次数, 不仅节约大量的人力成本, 而且大大降低了出现人为错误的可能, 检验结果审核完成后, 相关人员可直接下载检验报告, 提高全过程的效率.
4 系统详细设计
4.1 功能模块设计
抽样检测平台是为了保证各环节数据可靠, 可追溯, 按照抽样检测流程设计满足需求的业务模块. 抽样检测平台的业务模块设计如图9 所示, 分为两大交互端, 即移动端和Web 端, 每端各有4 个功能模块, 移动端为: 现场抽样模块、子样拆分模块、检验记录模块和设备管理模块; Web 端为: 样品管理模块、检验结果模块、人员管理模块、设备管理模块. 每个模块都具备各自的功能, 以下对各模块进行简要介绍.
图9 业务模块图
现场抽样模块主要实现现场抽样环节产生的信息录入同时将抽样单关联NFC 标签, 具体为带有企业厂牌厂名的照片、抽样人员的检验员证、企业营业执照或组织机构代码证等能够证明单位资质的证书、取样和封样时的照片、抽样单信息、现场打印后签字盖章的抽样单照片等信息进行录入, 录入抽样单信息后, 需要将该抽样单与NFC 标签关联.
子样拆封模块主要为拆分后的样品子样关联NFC标签, 并将子样名称和NFC 标签编号录入平台, 便于检验部门后续对样品进行详细分析.
检验记录模块主要是各检验人员收到样品或子样后, 对其进行检验和记录结果, 将结果录入系统中, 检验人员需要依次扫描仪器和样品的标签后, 才能进入检验记录界面, 以保证样品的检验过程都可追溯.
样品管理模块主要对现场抽样后的样品进行管理,包括对样品信息的查询、修改及删除. 在现场抽样环节因为失误造成录入信息有误, 可在这个环节对错误信息进行修改或删除.
检验结果管理模块主要提供给抽样检测管理人员审核流程是否完备, 同时上传报告附件, 报告附件包括检验时的纸质文件, 之后相应人员可以下载检验报告.
人员管理模块主要是对各环节的工作人员进行管理与授权, Web 端管理员创建各环节的工作人员, 并给予权限, 各环节人员只对各自的环节负责, 确保整个过程获取的数据在可追溯的同时可信可靠.
移动端与Web 端的设备管理模块主要是对检验设备关联NFC 标签. 新设备投入使用前需要管理员在Web 端录入设备信息, 然后设备管理员通过移动端将设备与NFC 标签关联, 关联后设备才能投入使用保证所有检验的所有细节都已被追溯. 同Web 端还提供查询、修改和删除功能, 当设备出现问题时, 能立即将设备移除允许使用的序列.
4.2 智能合约设计
(1)发布修订请求
各组织将数据保存到数据库前, 需要先上传至区块链网络, 然而区块链的特点决定了数据一经上传无法修改. 本系统将修改请求通过智能合约实现, 当各个组织发现录入的数据有误时, 调用该合约请求市场监督局节点重新将数据上传至区块链并更新数据库.
修订请求包括修订编号(样品编号+发起组织编号)、发起日期、修改名称、修改内容、监督局节点确认信息、该请求当前状态. 将样品编号与发起组织编号合并为一个字段后作为key, 其余字段作为value,具体结构如表1 所示.
修订请求合约的生命周期如图10 所示. 当发布请求时, 先将Confirm 值为false, Current_State 字段置为Issued. 发布修订请求的算法如算法1.
算法1. 发布修订请求输入: 由样品编号与发起组织编号组成的Issue_ID、合约发布的当前时间Issue_Time、需要修改的字段Ex_Name、字段对应的修改内容Ex_Content输出: 请求发布成功返回成功标记, 发布失败返回错误信息1. Function addOrder(Issue_ID, Issue_Time, Ex_Name, Ex_Content)2. 输入string 类型的参数实例化结构体Order 3. orderQuery = GetState(Order. Issue_ID+ Order. Issue_Time)4. If orderQuery 不为空 then 5. Return 请求已存在, 返回错误信息6. End if 7. orderkey = CreateCompositeKey("Order", []string{Order.Issue_ID,Order.Issue_Time})8. orderJSONasBytes, err = json.Marshal(Order)9. err = PutState(orderkey, orderJSONasBytes)10. If err != nil then 11. Return 请求提交错误, 返回错误信息12. Else 13. Return 请求提交完成14. End if
字段描述Issue_ID修订编号Issue_Time发布时间Ex_Name修改字段Ex_Content修改内容Confirm监督局节点是否同意Is_State修订请求状态
图10 合约状态图
(2)审核修订请求
市场监督局节点收到请求后, 核准请求的内容, 如果同意修改, 将Confirm 字段置为true, 不同意修改就保持false, 同时修订请求进入Handled 状态.
审核修订请求算法如算法2.
算法2. 审核修订请求输入: 由样品编号与发起组织编号组成的Issue_ID、合约发布的当前时间Issue_Time、市场监督局节点同意与否Confirm输出: 审核通过重新将数据打包上链, 修改数据库内容, 审核不通过返回失败信息1. Function updataOrder(Issue_ID, Issue_Time, Confirm)
2. orderAsBytes = GetStateByPartialCompositeKey ("Order", []string{Issue_ID, Issue_Time})3. If orderAsBytes == nil then 4. Return 请求不存在, 返回错误信息5. End if 6. 将orderAsBytes 实例化为Order 7. Order.Confirm = Confirm 8. Order.Is_State = Handled 9. orderkey = CreateCompositeKey("Order", []string{Order.Issue_ID,Order.Issue_Time})10. orderJSONasBytes, err = json.Marshal(Order)11. err = PutState(orderkey, orderJSONasBytes)12. If err != nil then 13. Return 请求提交错误, 返回错误信息14. Else 15. Return 请求提交完成15. End if?
5 系统测试
在详细设计平台功能模块并编码实现后, 对平台的关键功能进行了测试. 如图11, 图12 是对于智能合约执行模块的测试, 从发布合约到处理合约, 测试正常;图13, 图14 属于Web 端的样品管理与测试结果模块,主要展示抽样样品的详细信息与样品所处的检验环节,测试正常; 图15 为移动端主要功能模块, 经测试可以正常使用.
图11 合约请求通过
图12 合约请求未通过
图13 样品管理界面
图14 检验信息界面
图15 移动端主要功能
6 结论与展望
本文分析了抽样检测平台的现状, 针对信息化程度不高导致的效率低下问题以及现存的数据篡改与来源不可信问题, 将物联网技术与区块链技术相结合, 设计并实现了一种基于区块链物联网的抽样检测平台.考虑到区块链无法存储大规模数据, 引入传统关系型数据库, 既解决了数据存储问题, 又利用区块链的特点实现了数据的不可篡改. 物联网终端设备对于过程的智能感知使得大部分资料不再需要手工摘抄或后补录入, 极大地减少了人为错误出现的频率. 即使出现录入数据错误, 通过设计的智能合约发送修改请求, 审核通过后数据再度上链, 兼顾区块链不可篡改的同时保证了数据的正确性. 人员权限管理与设备管理使得检验结果的可信程度进一步提高. 区块链与物联网技术的结合, 提高了抽样检测工作的效率, 降低了人为错误出现的可能, 也使得检测结果更令人信服.