目 录
摘要
第一章 作品概述
第二章 作品设计与实现
第三章 作品测试与分析
第四章 创新性说明
第五章 总结
参考文献
摘要
随着经济的快速发展,人们的生活水平有了大幅提高,但近几年食品安全事故的发生,使人们也越来越关注食品质量问题,因此我们开发了基于区块链的食品溯源系统,该系统本质上是一个去中心化的数据库。利用区块链技术,按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证数据的不可篡改和不可伪造,形成分布式账本。将区块链运用于食品生产追溯,以防业者假造、修改的可能性,可以低成本高效率地解决食品安全领域存在的信任难题,实现安全可信任的食品追溯。
第一章 作品概述
1.1 背景分析
“民以食为天,食以安为先”。食品安全直接关系到人民群众的切身利益,关系到经济健康发展和社会稳定。目前我国食品安全仍存在一些不容忽视的问题,诸如生产和销售假冒伪劣、有毒有害食品,通过地下再加工包装废物上市等。一方面,我们庆幸人们的食品安全意识有所加强,相关部门的监管力度有所加大;但另一方面,人们也开始对市场经济条件下各种违法行为开始进行反思和应对。中国作为发展中国家,在经济日益强大的大背景下,市场中种种为追求商业最大效益而牺牲消费者权益的事件的发生并不出乎意料。它们是一种信号,提醒人们要加强对食品安全的警惕;但也是催化剂,促使有关部门出台方案,净化市场。为了能够有效应对食品药品安全问题所造成的风险,进一步加强对食品、餐饮卫生等行业的监管力度,不断提高公众在饮食方面的安全意识,促进社会和谐稳定,依据《中华人民共和国国民经济和社会发展第十一个五年规划纲要》和有关方针政策,党中央、国务院制订了国家食品安全“十一五”规划。目前食品安全问题已成为人民群众关注的社会热点问题之一。
1.2 相关工作
比特币和区块链技术成为今年来领域专家们研究的热点,区块链技术具有去中心化、不可篡改、开放透明、机器自治等重要特征,以此可以解决交易过程中的信任和安全问题。因此,我们认为区块链能够为实现食品认证、供应链跟踪提供了一个创新型解决方案。它为每一个交易环节都提供了一个永久性记录,这些交易环节被分组到各个区块中且无法篡改。它可以替代那些传统纸质的跟踪体系和人工监测系统,从而避免传统方式对供应链所可能造成的不准确的影响。
区块链技术将实现食品的全程数字化跟踪,从供应商生态系统到商店货架,最终到消费者。对于食品供应商而言,数字产品信息-诸如农场原产地信息、批号、工厂和加工数据、有效期、存储温度和运输等都将与相应的食品建立数字化关联,而整个过程中每一环节的信息将被输入到区块链中。每笔交易的信息都须广播给网络中的所有成员节点,同时所有节点保持同步更新,形成无法更改的永久性记录,以此确保所有的商品相关信息都准确无误。
区块链产生的记录可以帮助各大零售商企业更好地管理各个卖点的产品保质期问题,同时帮助消费者追溯食品起源,进一步增强食品验证的安全措施。 因此我们认为区块链可以给食品追溯市场带来更高的效率,主要通过交易的区块链在系统中留下的链式数据结构来追踪实现。
1.3 特色描述
特色1:将区块链技术引入食品安全溯源体系,能够让互不相识没有信任基础的人建立信任,低成本、高效率地解决人与人之间交易的信任问题。同时该体系为消费者提供了监控食品生产过程的途径。
特色:2:区块链的去中心化和不可篡改的特征,可保证现有食品追溯系统的数据可靠性,避免数据在存储、传输和展示环节被内部管理人员和外部攻击者篡改。
特色3:因为开放透明,消费者、生产者和政府监管部门对食品追溯系统中的数据完全信任,普及率会越来越高。
1.4应用前景分析
在企业咨询管理方面,面对当今飞速发展的社会环境,企业家无法做到对信息的全面了解,企业站在当局者的角度往往无法看清企业发展中存在的问题,通过本系统所有的物品将被信息化,在食品供销的各个环节通过网络和区块链技术将信息记录到安全可信任的分布式数据库上,可以对信息进行更好的收集与管理,更有利于企业的发展。同时,任何信息都是公开透明的,政府、企业、公众可以没有顾虑地轻松做到追溯查询,提供食品生产流程等信息,全面展示食品的整个产业链。
第二章 作品设计与实现
2.1 系统方案
我们从食品安全溯源的角度出发,针对我国在食品认证、食品供应链跟踪等方面存在的诸如信息丢失、信息不完善,公众难以查询等问题,设计了基于区块链的食品溯源系统,通过交易的区块链在系统中留下的链式数据结构来追踪,以快速发现和消除食品安全的问题源。系统为每一个交易环节都提供了一个永久性记录,这些交易环节被分组到各个区块中且无法篡改。它可以替代那些传统纸质的跟踪体系和人工监测系统,从而避免传统方式对供应链所可能造成的不准确的影响。
利用区块链技术,系统能够实现食品的全程数字化跟踪,从供应商生态系统到商店货架,最终到消费者。对于食品供应商而言,数字产品信息-诸如农场原产地信息、批号、工厂和加工数据、有效期、存储温度和运输等都将与相应的食品建立数字化关联,而整个过程中每一环节的信息将被输入到区块链中。每笔交易的信息都须广播给网络中的所有成员节点,同时所有节点保持同步更新,形成无法更改的永久性记录,以此确保所有的商品相关信息都准确无误。
2.2 具体设计与实现
我们认为区块链的应用可能使得食品溯源发生革命式进步。本文主要利用区块链去中心化等思想,以及食品原料的交易流程来进行食品追溯方案的设计。下面从系统角色(用户)、交易流程、账单链维护、信息同步、溯源、隐私与加密六个方面的实现原理、流程、功能、指标等做出详细阐述。
2.2.1 系统用户
本系统存在以下用户:
企业(多个):企业能够申请注册,并在注册成功后登陆到系统中进行交易。
政府(多个):政府能够登陆到系统中添加新的政府节点,并为新政府分配账号,也能够同意企业的注册申请,并为其分配账号,将其添加到网络中。同时政府还可以向全网广播订单确认消息、维护账单链、进行食品溯源。
公众(多个):系统为公众提供的最主要的功能即为:用户能够根据追溯码,进行食品溯源。
下图为系统的用例图,通过用例图我们可以清除的看到各角色的功能:
用户的增加与删除:
我们的系统在整体上来看更像是下面这种情形
*(其实整个网站是一个完全图,任意两个节点都有边相连)
增删用户,这里所有的用户平等对待。即三种角色的增删方式都是相同的。
增删节点的功能只有政府节点拥有。(这很符合现实,所有的厂商都要到工商局去注册公司)新政府节点要到老政府节点注册。
整体流程如下图所示:
如果有节点存在三次执行请求都未得到反馈的,则认为该节点存在问题(有可能是网络中断,机器故障等因素导致)。
2.2.2 交易流程
为了详细阐述交易的整个流程我们首先定义订单。订单分为待完成订单和已确认订单两类,详细说明如下:
待完成订单
就是指A公司向B公司出售原料的订单,该订单未得到B的确认。
这个订单维护以下数据:
1. 来源订单的hash值(多个来源就有多个值)
2. 商品名称、商品价格、数量、商品生产厂家,加工方案描述。
3. 来自A公司的唯一的签名
已确认订单
B公司就收到A公司发来的待完成订单,该订单得到B的确认并签名。
这个订单同样维护以下数据:
1. 来源订单的hash值(多个来源就有多个值)
2. 商品名称、商品价格、数量、商品生产厂家,加工方案描述。
3. 来自A公司的唯一的签名
4. 来自B公司的唯一的签名
5. 时间戳
6. 订单Hash值在本系统中交易流程的完成如下流程图所示
关于C向全网发送更新账单请求的流程和增删用户的流程相同,故此处不再重复绘图。
2.2.3 账单链的维护
区块链技术应用于食品溯源还有一个重要的环节就是账单的维护。不同于传统区块链技术在比特币上的应用,本系统中的“区块”更像是一系列的相互链接的账单衔接而成,所以不同于区块链的名称,我们称之为“账单链”
为了维护账单链该系统主要采取以下方案。
1. 账单由所有角色共同维护。
2. 账单公开,所有节点均可以看到账单信息(除价格、数量等隐私信息外)。
账单在每一个节点的组织结构如下所示:
宏观的看的话账单的组织形式是一棵树。
2.2.4 信息同步
分布式的系统一个重要的问题就是同步,如何做到同步直接影响系统的执行结果。该方案针对整个流程中的部分节点进行了以下同步方案的设计。
1. 相信谁的账单链和用户数据。
在本系统种由于每一个网络节点或多或少都有可能存在一些不确定因素导致无法收到订单和增删用户请求所以一个最值得信任的节点就应当被选取出来。一个信任的节点应当具备以下因素:
a. 时间戳是最近的
b. 账单数目做多
c. 大多数相同的人的订单
基于时间戳的方案显然不可行,因为如果只返回上一条账单的时间戳那就相当于只进行了局部的验证。
基于账单数目也不可行,因为如果某一个节点发生错误多复制账单,重复存储也会导致数目做多。
很明显基于大多数相同的人的订单是最可靠的方案。那么我们的系统将采取以下设计:
对于政府节点A如果它收到了一个已完成订单,并得到确认,那么他将先要求全网的政府节点返回最近10次账单的hash值,我们将相信大多数有相同hash值的那些订单,并要求hash值不一样的政府节点进行更新。然后再由政府节点A向全网发布通知。
*用户数据的维护和账单链的维护类似。
2. 用户数据的及时更新。
设想这样一种情况,如果某一用户在三次增删用户时都未响应,那么如何在它恢复正常的时候及时获得用户数据?
我们的解决方案时要求这些用户在恢复正常之后主动向政府节点发送更新请求。
3. 短时间的大量请求。
同样在系统中我们也发现了短时间的大量请求的问题,比如每次执行增删操作时要求全网用户进行反馈,然而当网络节点数目众多的时候,对于某一政府节点的请求将会是巨大的。
对于这种情况的解决方案就是可以设置一个应答时间的随机数生成器,当节点需要对请求做出应答时可以等待一个随机时间,再响应,这样就减轻了短时间的大量请求对服务器的压力。
2.2.5 溯源
本系统最终的目标是进行食品的溯源,在机制正常运行的前提下,该溯源方法的实现就可以非常容易。
我们只需根据hash的关系进行向上搜索便可找到所有的与该食品相关的订单,以及加工的所有厂家。
回溯的算法是采用深度搜索DFS,算法的具体描述如下。
通过这种简单的回溯,就可以很轻松的从帐单链中找到我们所需要的所有的订单。
2.2.5 隐私与加密
主要涉及登录和数据在存储中的形式。
登录:当需要注册公司时,政府节点直接分配给该公司一个固定的帐户与口令以及一个对应的客户端。完成注册即节点的建立。
食品安全问题不应当成为行业秘密,但是企业生产效益,企业实力,资金等方面的可以从数值上反映出来,所以系统将会对账单中的的价格、数量进行加密对厂家的信息进行一定程度上的维护。
第三章 作品测试与分析
我们的系统已发布到114.115.140.110:8080/BCFS/网站上,可以在任何平台上对我们系统进行功能测试,我们用google chrome对其进行了功能测试,测试其是否满足我们所希望的功能需求,用loadrunner测试其在多用户状态下的性能。
(1)功能测试
测试包括:
增删用户模块测试
账单添加测试
账单追溯测试
测试结果:
测试账户能有效的添加删除用户
用户正常添加账单
通过查询hash值向上搜索到食品的来源
(2)性能测试
我们用loadrunner对系统进行性能测试,测试其在多用户状态下的工作状态,测试结果如图:
系统在多个用户访问下正常运行
第四章 创新性说明
1. 去中心化的思想:我们主要利用区块链去中心化等思想,以及食品原料的交易流程来进行食品追溯方案的设计。使用密码学方法相关联产生的数据块,每一个数据块中包含了一次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
2. 账单链的应用:不用于传统区块链技术在比特币上的应用,本系统中的“区块”更像是一系列的相互链接的账单衔接而成,所以不同于区块链的名称,我们称之为“账单链”。账单链按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。这样组织的好处就是每当最终的食品出现问题时,我们能根据链接的账单找到每一个生产厂家。
3. 基于账单链的数据同步:我们从数据的选择,数据的及时更新和短时间大量请求三个方面进行设计,在保证服务器性能的同时保证数据的及时性和有效性。
4. 溯源:本系统采用深度搜索DFS算法实现回溯,达到溯源的目的。只需要根据hash的关系向上搜索便可找到所有的与该食品相关的订单,以及加工的所有厂家,。
5. 隐私与加密:账单中的价格,数量我们将进行加密,以防止从这些数值反映出的生产效益,企业实力,资金等暴露,让企业、生产家们更放心地使用系统进行交易。
第五章 总结
通过几个月的努力,本作品已经达到了预定的设计目标,通过测试结果表明作品已经初步具备应用价值,有望在食品安全追溯方面得到应用。
参考文献
[1]李建华.网络空间威胁情报感知、共享与分析技术综述[J] .网络与信息安全学报,2016, Vol. 2(2): 16-29. (样例)
[2] 中本聪 《比特币:一种点对点的电子现金系统》比特币创始论文
[2] 孙志国 李秀峰 王文生 冀智强 区块链技术在食品安全领域的应用展望农业网络信息20161226