基于区块链的发电厂样品委托检测物流及信息管理系统研究
2021-01-11闫爱军王智涛雷双全高泽松廖强强
黄 意 闫爱军 王智涛 雷双全 高泽松 廖强强
1.武汉海关信息中心
2.西安热工研究院有限公司
3.中国华能集团有限公司
4.西安清宇网络科技有限公司
5.上海电力大学
0 前言
样品检测是保障火力发电厂安全稳定运行的重要保障手段之一,通过出具准确的数据评判产品是否合格、查找发电过程中异常的原因、寻求异常解决方法。样品检测涉及样品种类繁多,主要有水、煤、油、金属材料、催化剂等,通常由发电厂所属的检测实验室承担着本单位例行检测、大小修事故排查的检测测试工作,但有些检测测试项目,由于所使用的仪器昂贵、检测频次低或不具备检测资质等原因,需要委托相关单位检测测试[1]。
委托检测是检测过程中的重要环节和关键控制点,但是由于涉及待检测样品的跨区域流通、检测周期长、中间环节多[2],极易造成样品混淆、原始样品难以追溯、多项检测结果不易整合、检测结果不便查看、异常结果不便追溯等问题[3]。
本项目针对上述问题,提出了采用基于区块链的发电厂样品委托检测物流及信息管理系统,设计了样品标识子系统、样品物流子系统和样品信息流子系统,最后通过使用Python 机器语言中Django模块完成程序的架构部分,通过结合MySQL 数据库,采用B/S(Browser/Server,浏览器/服务器)模式,以完成面向Web端的应用系统[4]。实现委托样品全过程闭环管理,动态实时灵活的控制访问,提升了样品检测的可靠性、及时性和可溯源性。
1 样品检测流程分析
1.1 流程分析
物流:样品准备→样品传递→样品接收→样品检测→样品处置。
信息流:一次标识→二次标识→三次标识→检测分析及报告(编写、审核、批准、盖章)→报告查看。
1.2 节点物流和信息流分析
1.2.1 样品准备
样品的准备由电厂来完成,分为取样、分割、存储、标识等。在此过程中,需取得最具代表性的样品,并按照规定分割,在发电厂所属的检测实验室存储留样;采用有效的标识方法,在每个分割后的样品上,尽可能准确、详尽地获取样品重要信息和全面信息。
最常用的信息记录了样品的品名、型号、数量、依据标准、生产日期、制造单位以及其他的信息。对于产品类样品,上述信息基本上满足了检测的要求;但是对于从主体设备或流程上取样获得的样品,除了上述信息,最好有取样部位的描述、照片、状态、取样人、取样方法等记录。
1.2.2 样品传递
样品传递通常由物流公司来完成。通过物流邮寄方式传递;也有可能由电厂使用自有运输工具传递。有可能出现丢失、延期、损坏等意外。
在此过程中,如果是物流公司承运,则其按照本公司的编码规则重新进行标识,将样品运输至检测机构所在的地址。电厂在运输过程中只能获取主要的运输进度信息,但是不能获取样品在运输过程中的状态信息。
1.2.3 样品接收
样品接收由检测机构来完成,需要从物流公司收取样品,并确认样品是否完好。
需要对样品重新登记、存储、加工(分割)、标识等。重新标识后的样品作为检测机构内部流通时的信息传递载体。
1.2.4 样品检测
样品检测由检测机构来完成,按照需求和程序完成样品的检测。对于有多个检测项目时,样品通常被分割成多份,并分别检测。有可能检测流程是并行的,有可能是串行的,也有可能是串行+并行。
每一个检测项目结束后,需要对检测的结果进行复核、确认,形成分项目检测单或检测报告。
所有检测项目结束后,形成总的检测报告,经过三级审核后传递至电厂,完成信息流的闭环。
检测报告按照不同授权,可实现检测信息在不同机构、不同层级人员的查阅、分发和跟踪。涉及一定密级的报告,可实现查阅报告人的详细记录,包括人员的信息、时间、签阅或分发等。
1.2.5 样品处置
样品处置由检测机构来完成,按照电厂的需求或需要,选择寄回、废弃或长期存储。形成样品物流的闭环。
2 系统设计
2.1 系统需求分析
2.1.1 系统需求体系架构
基于区块链的发电厂样品委托检测物流及信息管理系统具有4 层体系架构,顶层用户业务服务层,应用服务设计层,中间层节点服务和底层区块链网络,如图1所示。
图1 系统需求体系架构
2.1.2 顶层用户
基于区块链的发电厂样品委托检测物流及信息管理系统中各用户和角色的需求如下。
1)检验检测责任人个体需求
每个检验检测责任人通过扫描样品包装上的二维码。
(1)进入电厂样品检验检测联盟系统快速了解样品的标识、分割、流转、检测数据、存储等相关信息并进行相关操作。
(2)使用防伪溯源功能,获得样品标识信息,查询样品真伪,通过溯源知晓样品的采样单位、流转、分割、检测、保存等全过程所有信息。
(3)使用流程监控功能,接收样品开始工作,或者样品不满足测试条件,发现和拒收样品,并提交相关部门跟踪处理。
(4)使用下载功能,下载样品相关数据或者检测报告。
(5)使用整合功能,自动生成样品的全流程测试报告。
(6)使用查询功能,根据样品工作进度、协作程度,预估并安排自己的工作计划,增加组织的协作效率,降低样品的检测周期,并提高样品的检测效率。
2)检验检测单位(节点)需求
(1)二维码生成功能,自定义秘钥,为每个样品生成个性化加密二维码。
(2)数据录入功能,实现全流程数据采集。
(3)防伪溯源功能,生成唯一区块链ID,产生防伪码,将关联数据作为溯源信息。
(4)精准查询功能,通过智能合约获得样品检测精准结果;
(5)数据统计功能,获得样品在检测的时间周期,工作量,以及出错概率。
3)监管方需求
(1)样品的检验周期监督功能,实现样品的全流程跟踪,并根据样品的流转和检测数据,核查样品在每个节点所消耗的时间,明确样品检测的瓶颈。
(2)样品检测报告的效果监督,根据实时报告生成系统,了解样品的检测结果,指导电厂的合理安全运营。
(3)节点工作量优化功能,根据每个节点的检验检测结果,和检验检测效率,以及人员与实验仪器配比,合理调整检验检测工作流程,提高组织的检测效率和检测质量。
4)区块链系统管理员需求
(1)用户角色和权限管理功能,按不同节点、不同职位和不同工作岗位,设计合理的用户权限,在提高节点之间数据共享效率的同时,又保持每个节点单位的数据安全。
(2)用户应用层业务设计功能,根据用户的需求不同,结合用户权限,定制用户个人服务内容,比如样品延时报警功能,样品标识数据丢失拒收功能,以及样品全流程测试完成提醒功能。
2.1.3 中间应用服务
使用区块链技术、二维码技术和web技术将样品的标识、流转数据以及检测报告和处理意见制作成数字资源,保存在高性能服务器中,并通过网络给不同角色和用户提供个性化服务。中间应用服务层,主要包括用户权限系统、任务系统和业务数据库。
2.1.4 系统服务层
系统服务层主要包括区块链共识机制以及算法,不同检验检测单位节点数据库,满足了不同节点之间的数据共享,满足了多副本、可靠记录、不可窜改、多方透明的四个特性。
2.1.5 底层区块链网络
底层区块链网络主要是对数据进行处理,用中间系统服务进行交互,以实现数据协作功能,如:去中心化,安全可信,不可窜改,智能合约,集体维护。一个区块能同时保留同一数据库的多个共享副本,使分布式账本难以被黑客攻击窜改;将样品的标识、流转过程、检测过程、不同节点不同检测项目的信息进行整合并写入区块链,每一条信息都拥有唯一的区块链ID,且附有样品的数字签名和时间戳,这提供了良好的底层数据支撑,使用户能对样品检测结果进行有效的把控;将不同来源的样品在检测过程中的参与主体(包括原电厂、检验检测中心、内部流转信息、分割保存信息、检测结果)的信息数字化后存进区块链中,使每一个参与者的信息在区块链中可被查看;实现一物一码全流程防伪追溯,使整个样品检验检测内所有流程都清晰可见。
2.2 系统功能设计
2.2.1 系统功能业务流程分析
根据上述需求,本系统分为3 个子系统即二维码子系统、样品检验检测流程监控子系统和防伪溯源子系统。本课题组基于区块链、二维码技术,通过使用Python 机器语言中Django 模块完成程序的架构部分,通过结合MySQL 数据库,采用B/S(Browser/Server,浏览器/服务器)模式,以完成面向Web端的应用系统。本应用系统的业务流程如图2所示。其中,每个节点检测责任人扫描二维码后,只有合法用户才可以进行样品的报告检索、状态更新等相关操作。
图2 系统功能业务流程示意图
2.2.2 二维码子系统
二维码子系统包括以下功能
1)二维码与样品的信息关联。提取需要二维码携带的信息,并在数据库中与样品做好相应关联。
2)密钥对生成器。采用通用算法随机生成公钥和私钥。
3)信息加密和解密。节点根据自己的私钥进行加密,用户利用系统公钥进行解密。
4)二维码生成。将需要传递的信息生成二维码。
2.2.3 样品检验检测流程监控子系统
通过区块链平台实现各个检验检测中心节点的数据同步,样品检测流程精确化、科学化、数字化与智能化,提高样品检验检测的效率。样品检验检测流程监控子系统包括以下功能。
1)样品状态信息录入。对电厂样品的标识、分割、流转、保存等全过程信息录入和测试责任人信息的采集。
2)测试数据与样品的精确匹配。对样品信息,测试单位、测试责任人、测试事件以及测试结果通过区块链技术进行存储。
3)测试流程监控。系统可以根据测试计划,监控测试进度,共享测试数据。
4)数据统计分析。根据样品测试周期分析,测试节点或者测试步骤的瓶颈,提高工作效率。
5)奖励机制。对于测试完成的数量与质量,量化分析每个节点甚至责任人的工作绩效,给予适当的奖励。
2.2.4 样品防伪溯源子系统
在整个样品检验检测流程中,通过终端化的防伪溯源二维码及公开透明的区块链技术,让用户可以编辑查询样品的实时状态和相关检验检测数据,对于提高工作效率,保障电厂的安全运营具有深远意义。该系统具体功能如下。
1)样品状态信息采集与同步更新。从标识,分割,流转,检测与存储,对样品的生命全周期进行信息采集,特别是检测时间、地点以及责任人的相关信息。
2)防伪。每个样品,包括样品的分割都会生成防伪码,方便防伪查询。
3)溯源。溯源码生成,样品检测的全流程溯源,用户可以查询样品的溯源信息。
4)样品的归属关系。样品从电厂取样标识后,由于工作的要求,可能会在测试节点进行分割,分割后的样品与原有样品产生不同层级的归属关系,通过区块链ID,智能合约,可以方便地查询到每个样品的状态以及从属关系。
5)数据统计分析。对样品的检测结果进行数据分析,生成样品多级测试报告。
6)奖励机制。对节点的工作质量,以及检验检测责任的工作质量和数量的分析,触发相应的奖励。
2.3 数据库设计
2.3.1 本应用系统采用SQL数据库
1)用户信息表包括ID, 用户名,密码,email,所属单位,登录IP,登录时间,登录次数,状态,角色ID是否匿名。
2)样品标识表包括,样品ID,二维码ID,所属类别,内容,环境条件,电厂名称, 位置信息,取样时间,原材料情况,录入人,是否分割,防伪码等。
3)样品的层级关系表,样品ID, 父ID, 名称,类别,层级是否分割。
4)测试进度表包括,样品ID, 父ID, 二维码,防伪码,所属电厂,所属类别,内容,发布位置,所属节点,测试内容,测试步骤,测试责任人,是否完成测试,审核人,审核时间。
5)二维码表包括,ID,二维码,密钥,内容。
6)审核信息表包括,二维码ID, 二维码扫描位置,扫描时间,是否通过,评价星级,评价内容。
7)奖励表包括ID,节点ID, 责任人ID, 完成测试样品数量,五星评价样品数量,累计每月测试时间。
2.3.2 区块链数据采用NoSQL数据库
区块链数据通过文档进行存储,是一种使用JSON(JavaScript object notation) 格式、以Key-Value 存储数据的方式。区块链信息存储如下。
{
"block": "
00006aa49f0f24bb0e84460469591595e
43c28f1e157f2c75068d81a9c527568",
"header":{
"merkle_root": "
04c119e51d2ad166c71166770
8e1d2728839559886c74981f8f29476f721f15e",
"nonce":518370,
"parent": "
0000a59bf06d82cf571f37b46c6d67
45887e45e3acf8ad2d145e9931e32f95d7",
"target":4,
"timestamp": "2018-07-29 17: 00:
02.362425","version":"00000001",
"data":""
},
"size":120,"transactions":{
"
04c119e51d2ad166c711667708e1d2728839559 88 6c74981f8f29476f721f15e":{
"input_count": 0, "inputs": [], "output_count":1,"outputs":[
{
"address":"b2c2dd63a731f3ca4bcc5c9
860e7d90f8d1f3b024def2dfe5347e1ab1cf3e 308","amount":100
}]
}},
"txcount":1
}
3 系统实现
3.1 系统架构实现
本课题组基于以太坊开发,使用Truffle v4.1.14 和Solidity 0.4.24 编码,具有二维码包装广告监管和防伪溯源功能的品牌链Dapp 代码。后端区块链使用Geth(go ethereum)设置私有以太坊网络,并 通 过Web 3 JavaScript 库、Node.js、liteserver 实现交互。前端应用系统是使用Python Django Web框架实现。本系统的实现架构图如图3所示。本系统分为前端和后端。
1)前端
通过浏览器提供样品信息和测试信息的录入、节点测试责任人防伪溯源查询、测试流程监控和监管等功能。
2)后端
Web 服务器提供系统的Web 服务; RPC(remote procedure call)提供了以太坊虚拟网络;智能合约实现数据存入区块链、数据查询及系统奖励机制;区块链为每一个样品数据块实体。
图3 系统的实现架构图
3.2 区块链环境部署
第一步,下载Ganache,Ganache 用于提供节点。网络以及初始账号,如图4所示。
第二步,进入cmd,下载lite-server,进入项目目录,使用npm run dev开启服务,如下图所示。
第三步,在浏览器中使用MateMask钱包插件,用Ganache提供的初始账号登录系统。
图4 网络以及初始账号图
3.3 系统功能实现
3.3.1 智能合约
商品查询函数如下。
function getproduce(bytes j) constant returns(bytes,string,string,string,string,string,string){
return (f1[j].pid,f1[j].pname,f1[j].pplace,f1[j].ptime,f1[j].ltime,f1[j].lplace,f1[j].xplace);
}
设置交易信息函数如下。
function setTxInfo(bytes _pid, string _txplace,string_txtime){
f1[_pid].lplace=_txplace;
f1[_pid].ptime=_txtime;}
防伪溯源查询函数如下。
function query(bytes _pid) constant returns(uint256,uint256){
uint256 _time=now; uint256 money=5; return(_time,money);
}
3.3.2 系统界面
用户端包括样品信息录入、测试数据信息录入、样品信息查询、防伪查询、样品层级归属关系、测试流程监管6个功能界面。
4 结语
二维码技术和区块链技术的快速发展,针对电厂样品检验检测这个跨地域多部门协作工作场景,建立一个高效的线上合作组织。该组织的构建基于区块链的二维码包装监管和防伪溯源系统,完善并提高了样品检验检测流程和效率。运用Python Django 技术和Web3.0 技术,将样品检验检测流程和检测数据以及防伪标识的丰富内容通过扫描包装上的二维码能够图文声像并茂快速展示,这种样品监管的新模式,为样品检验检测工作节省了大量的时间和精力。
通过互联网传播和共享信息,有利于各个检验检测节点相互协作提高工作效率,降低工作成本;有利于监管部门,实时查看检验检测进度和最终检验检测结果;有利于样品的管理,溯源包括责任划分;研究样品检测数据,提高电厂运行效率。因此,通过基于区块链的发电厂样品委托检测物流及信息管理系统的研究,有利于提升电厂样品检验检测单位多部门协作的整体工作效率,并且有利于电厂的安全运营与维护;有利于量化每个节点的工作质量;通过数据的积累有利于电厂样品跨地域多部门协作的流程创新,为进一步优化资源,为电厂的数字化运营打下基础。