基于区块链的农产品供应链追溯系统及方法与流程

文档序号:16318607发布日期:2018-12-19 05:35阅读:235来源:国知局
基于区块链的农产品供应链追溯系统及方法与流程

本发明属于区块链及农业技术领域,涉及一种基于区块链的农产品供应链追溯系统及方法。

背景技术

区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本,其最基本的概念,是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式,具有去中心化、信息不可篡改以及隐私保护的特点。

农产品供应链就是农产品从农场到顾客手中的整个过程,具体包括包装、运输、储藏、销售等环节。农产品供应链追溯的过程是农产品供应链追溯系统将农产品在供应链中各个环节的流通信息存入数据库,然后在消费者需要时根据农产品信息对数据库的进行搜索,并显示搜索出的信息,衡量农产品供应链追溯系统的标准主要有系统中心化程度、追溯信息信任率、追溯速度以及追溯准确度。

目前现有基于区块链的农产品供应链追溯系统及方法的主要流程是,供应链中的售点在功能选择模块中选择上链功能时,数据上链模块将产品在本环节的流通信息记录于区块链中,显示模块显示其上链结果,然后顾客在功能选择模块中选择追溯功能时,追溯模块根据扫描农产品二维码码获得的信息,搜索区块链所有区块中相匹配的追溯信息,显示模块显示其检索结果。此系统及方法利用区块链的分布式验证、不可篡改与隐私保护的特点,针对性地解决了普通农产品供应链追溯系统中中心化程度高、追溯信息信任率低的问题。

上述系统及方法的不足之处在于:在追溯时需要搜索所有区块,会导致追溯速度会随着区块链中信息的增加而大幅度下降,而且农场可以利用自己的私钥和数字证书伪造出其他农场的农产品的二维码,导致追溯的准确度降低。



技术实现要素:

本发明的目的在于克服上述现有技术存在的不足,提出了一种基于区块链的农产品供应链追溯系统及方法,用于解决现有技术中存在的追溯速度随着区块链中信息增多而大幅度下降以及追溯准确度较低的技术问题。

为实现上述目的,本发明采用的技术方案为:

一种基于区块链的农产品供应链追溯系统,包括功能选择模块、追溯模块、数据上链模块和显示模块,其中:

所述功能选择模块,用于根据用户的功能请求向追溯模块发送追溯请求,或向数据上链模块发送启源请求或新增追溯请求;

所述追溯模块,用于响应功能选择模块发送的追溯请求,并将追溯结果发送至显示模块,或与数据上链模块进行信息交互;

所述数据上链模块,用于响应功能选择模块的发送的启源请求,并将启源结果发送至显示模块,和接收功能选择模块的发送的新增追溯请求,与追溯模块进行信息交互,根据追溯模块返回的追溯结果获取新增追溯结果,并将新增追溯结果发送至显示模块;

所述显示模块,用于显示追溯模块发送的追溯结果和数据上链模块发送的启源结果或新增追溯结果。

上述基于区块链的农产品供应链追溯系统,所述数据上链模块,包括启源子模块、新增追溯子模块和上链适配子模块,其中:

所述启源子模块,用于接收功能选择模块发送的启源请求,获取农产品编号和农产品二维码,并向上链适配子模块发送农产品编号和农场名;

所述新增追溯子模块,用于接收功能选择模块发送的新增追溯请求,向追溯模块发送追溯请求,根据返回的追溯结果获取农产品编号和新流通信息,并向上链适配子模块发送农产品编号和新流通信息;

所述上链适配子模块,用于接收启源子模块发送的农场名和农产品编号,获取启源上链信息,同时对启源上链信息进行上链操作,并将启源上链结果转发至显示模块,和接收新增追溯子模块发送的农产品编号和新流通信息,获取新增上链信息,同时对新增上链信息进行上链操作,并将新增追溯结果转发至显示模块。

一种基于区块链的农产品供应链追溯方法,包括以下步骤:

(1)功能选择模块向数据上链模块发送农场选择的启源请求;

(2)数据上链模块响应功能选择模块发送的启源请求,并将启源结果发送至显示模块:

(2a)启源子模块接收启源请求;

(2b)启源子模块获取农产品编号producthash和农产品二维码qr_pic;

(2c)启源子模块将农产品编号producthash和农场名farmname发送至上链适配子模块;

(2d)上链适配子模块获取启源上链信息;

(2e)上链适配子模块对启源上链信息进行上链操作,并发送上链操作结果:

上链适配子模块利用委任权益证明dpos的共识算法验证启源上链信息是否被篡改,若是,将上链失败信息作为启源结果,否则,将启源上链信息作为追溯信息发布于区块链中,并将上链成功信息作为启源结果,并将启源结果发送至显示模块;

(3)显示模块显示数据上链模块发送的启源结果;

(4)功能选择模块判断当前售点是否将农产品售卖给消费者:

功能选择模块判断当前售点是否将农产品售卖给消费者,若是,则向追溯模块发送消费者选择的追溯请求,并执行步骤(9),否则,当前售点发送农产品至下级售点,功能选择模块向数据上链模块发送下级售点选择的新增追溯请求,并执行步骤(5);

(5)数据上链模块接收功能选择模块发送的新增追溯请求,并向追溯模块发送追溯请求:

数据上链模块的新增追溯子模块接收功能选择模块发送的新增追溯请求,并向追溯模块发送追溯请求;

(6)追溯模块与数据上链模块进行信息交互:

(6a)追溯模块扫描农产品二维码,得到非对称解码信息:

追溯模块扫描农产品二维码qr_pic,得到农产品二维码信息,访问农产品二维码信息中的农场数字证书地址farmdc_addr,利用其中农场的公钥对二维码信息中的加密信息encryptedinfo进行非对称解码,得到包括农产品品种variety、生产时间productedtime和产品编号producthash的非对称解码信息decodinginfo,解码公式为:

decodinginfo=farmpublickeyunlock(encryptedinfo)

其中,farmpublickeyunlock(*)表示农场公钥解析函数;

(6b)追溯模块根据decodinginfo对区块链进行搜索,得到搜索结果;

(6c)追溯模块对搜索结果进行防伪造验证,得到追溯结果,并将追溯结果发送至数据上链模块;

(7)数据上链模块获取新增追溯结果,并将新增追溯结果发送至显示模块;

(7a)新增追溯子模块判断追溯结果是否是成功的,若是,则执行步骤(7b),否则将失败的追溯结果作为新增追溯结果,执行步骤(7d);

(7b)新增追溯子模块根据追溯结果获取农产品编号producthash和新流通信息circulationinfo_new,并发送至上链适配子模块:

新增追溯子模块从验证信息中提取农产品编号producthash和流通信息circulationinfo,并将到货信息拼接在流通信息circulationinfo后,形成新的流通信息circulationinfo_new,然后将producthash和circulationinfo_new发送至上链适配子模块;

(7c)上链适配子模块获得新增追溯结果;

(7d)上链适配子模块将新增追溯结果发送至显示模块;

(8)显示模块显示数据上链模块发送的新增追溯结果,并执行步骤(4);

(9)追溯模块响应功能选择模块发送的追溯请求,得到追溯结果,并将追溯结果发送至显示模块;

(10)显示模块显示追溯模块发送的追溯结果。

本发明与现有技术相比,具有如下优点:

1.本发明在数据上链模块响应新增上链请求中增加了追溯模块与数据上链模块的信息交互,使每次农场品的上链信息中都包括了整个流通信息,因此保证了在追溯农产品全部流通流程信息时,只需要从区块链中搜索出最新的追溯信息,而不需要搜索区块链中所有的区块,与现有技术相比,有效减缓了追溯速度随着区块链信息增多的大幅度下降。

2.本发明在追溯模块获取到搜索结果后与追溯模块将搜索结果作为追溯结果并发送之间,增加了一个防伪造验证的过程,保证了其他农场伪造的农产品二维码不能使用,与现有技术相比,提高了追溯准确率。

附图说明

图1是本发明农产品供应链追溯系统的结构示意图;

图2是本发明农产品供应链追溯方法的实现流程图;

图3是本发明农产品供应链追溯方法的区块链中区块的数据内容结构示意图。

具体实施方式

以下结合附图和具体实施例,对本发明作进一步详细描述:

参照图1,一种基于区块链的农产品供应链追溯系统,包括功能选择模块、追溯模块、数据上链模块和显示模块,其中:所述功能选择模块,用于根据用户的功能请求向追溯模块发送追溯请求,或向数据上链模块发送启源请求或新增追溯请求;所述追溯模块,用于响应功能选择模块发送的追溯请求,并将追溯结果发送至显示模块,或与数据上链模块进行信息交互;所述数据上链模块,用于响应功能选择模块的发送的启源请求,并将启源结果发送至显示模块,和接收功能选择模块的发送的新增追溯请求,与追溯模块进行信息交互,根据追溯模块返回的追溯结果获取新增追溯结果,并将新增追溯结果发送至显示模块;所述显示模块,用于显示追溯模块发送的追溯结果和数据上链模块发送的启源结果或新增追溯结果。

其中所述数据上链模块,包括启源子模块、新增追溯子模块和上链适配子模块,其中:所述启源子模块,用于接收功能选择模块发送的启源请求,获取农产品编号和农产品二维码,并向上链适配子模块发送农产品编号和农场名;所述新增追溯子模块,用于接收功能选择模块发送的新增追溯请求,向追溯模块发送追溯请求,根据返回的追溯结果获取农产品编号和新流通信息,并向上链适配子模块发送农产品编号和新流通信息;所述上链适配子模块,用于接收启源子模块发送的农场名和农产品编号,获取启源上链信息,同时对启源上链信息进行上链操作,并将启源上链结果转发至显示模块,和接收新增追溯子模块发送的农产品编号和新流通信息,获取新增上链信息,同时对新增上链信息进行上链操作,并将新增追溯结果转发至显示模块;

参照图2,一种基于区块链的农产品供应链追溯方法,下面以一包新疆大枣的追溯为例,包括以下步骤:

(1)功能选择模块向数据上链模块发送农场选择的启源请求;

(2)数据上链模块响应功能选择模块发送的启源请求,并将启源结果发送至显示模块:

(2a)启源子模块接收启源请求;

(2b)启源子模块获取新疆大枣编号producthash和新疆大枣二维码qr_pic:

(2b1)启源子模块获取新疆大枣编号producthash:

启源子模块对输入的农场名farmname、农场品品种variety和生产时间productedtime进行拼接,并对拼接结果进行哈希计算,得到新疆大枣编号producthash,哈希计算的公式为:

producthash=sha256(farmname+variety+productedtime)

其中,sha256(*)表示哈希256函数,生产时间productedtime取当前时间;

(2b2)启源子模块获取加密信息encryptedinfo:

启源子模块对新疆大枣品种variety、生产时间productedtime和新疆大枣编号producthash进行拼接,并通过农场私钥对拼接结果进行加密,得到加密信息encryptedinfo,加密的公式为:

encryptedinfo=farmprivatekeylock(variety+productedtime+producthash)

其中,farmprivatekeylock(*)表示农场私钥的加密函数;

(2b3)启源子模块获取农场品二维码qr_pic:

启源子模块将农场数字证书地址farmdc_addr拼接在加密信息后,并通过二维码编码函数qr_encode(*)对拼接结果进行转换,得到新疆大枣二维码qr_pic,转换公式为:

qr_pic=qr_encode(encryptedinfo+farmdc_addr);

(2c)启源子模块将新疆大枣编号producthash和农场名farmname发送至上链适配子模块;

(2d)上链适配子模块获取启源上链信息:

(2d1)上链适配子模块获取农场数字签名farmds:

上链适配子模块对启源子模块发送的农场名farmname和新疆大枣编号producthash进行拼接,并采用农场私钥对拼接结果的哈希运算值进行加密,得到农场数字签名farmds,签名公式为:

farmds=farmprivatekeylock(sha256(producthash+farmname))

(2d2)上链适配子模块获取启源上链信息:

上链适配子模块将农场名farmname作为流通信息circulationinfo,将农场签名farmds作为售点签名sellingds,将农场数字证书地址farmdc_addr作为售点数字证书地址sellingdc_addr,并将circulationinfo、sellingds、sellingdc_addr以及新疆大枣编号producthash封装成启源上链信息;

(2e)上链适配子模块对启源上链信息进行上链操作,并发送上链操作结果:

上链适配子模块利用委任权益证明dpos的共识算法验证启源上链信息是否被篡改,若是,将上链失败信息作为启源结果,否则,将启源上链信息作为追溯信息发布于区块链中,其中区块链的区块数据内容结构如图3所示,并将上链成功信息作为启源结果,并将启源结果发送至显示模块;

共识算法包括pow、pos、pbft、dpos等,其中dpos中文名叫做股份授权证明机制,它的原理是让每一个持股的人进行投票,由此产生101位代表,区块记录权也将由这些代表间投票胜出的代表获得,因为它弱中心化的特点,取得了中心化与无中心化之间的有效平衡,所以dpos更适合农业供应链中既需要信息安全也需要不错效率的应用环境,所以本发明采用dpos作为本发明中的共识算法;

(3)显示模块显示数据上链模块发送的启源结果;

(4)功能选择模块判断当前售点是否将新疆大枣售卖给消费者:

功能选择模块判断当前售点是否将农产品售卖给消费者,若是,则向追溯模块发送消费者选择的追溯请求,并执行步骤(9),否则,当前售点发送农产品至下级售点,功能选择模块向数据上链模块发送下级售点选择的新增追溯请求,并执行步骤(5);

(5)数据上链模块接收功能选择模块发送的新增追溯请求,并向追溯模块发送追溯请求:

数据上链模块的新增追溯子模块接收功能选择模块发送的新增追溯请求,并向追溯模块发送追溯请求;

(6)追溯模块与数据上链模块进行信息交互:

(6a)追溯模块扫描新疆大枣二维码,得到非对称解码信息:

追溯模块扫描新疆大枣二维码qr_pic,得到新疆大枣二维码信息,访问新疆大枣二维码信息中的农场数字证书地址farmdc_addr,利用其中农场的公钥对二维码信息中的加密信息encryptedinfo进行非对称解码,得到包括农产品品种variety、生产时间productedtime和产品编号producthash的非对称解码信息decodinginfo,解码公式为:

decodinginfo=farmpublickeyunlock(encryptedinfo)

其中,farmpublickeyunlock(*)表示农场公钥解析函数;

(6b)追溯模块根据decodinginfo对区块链进行搜索,并得到搜索结果:

(6b1)追溯模块根据decodinginfo中的productedtime和producthash从区块链的最新区块往前进行搜索,判断所搜索区块的产生时间是否晚于productedtime,若是,则执行步骤(6b2),否则将搜索失败作为搜索结果,步骤(6b)结束;

(6b2)追溯模块判断追溯信息中的农产品编号与区块链中当前追溯信息的相匹配,若是,则将此条追溯信息取出作为成功的搜索结果,否则将搜索失败作为搜索结果。

(6c)追溯模块对搜索结果进行防伪造验证:

(6c1)追溯模块将搜索结果中的流通信息取出并截取农场名,作为农场名a;

(6c2)追溯模块访问新疆大枣二维码信息中的农场数字证书地址farmdc_addr,获取其中的农场名,作为农场名b;

(6c3)比较农场名a与农场名b,判断二者是否一致,若是,则将搜索结果作为成功的追溯结果,否则将失败的验证信息作为失败的追溯结果;

如果不一致则说明新疆大枣二维码是其他农场伪造的,并将伪造的信息作为追溯结果发送给显示模块显示,否则,将搜索信息作为追溯结果发送给显示模块显示,保证了其他农场伪造的农产品二维码不能使用,与现有技术相比,提高了追溯准确率;

(7)数据上链模块根据追溯模块发送的追溯结果,获取新增追溯结果,并将新增追溯结果发送至显示模块;

(7a)新增追溯子模块判断追溯结果是否是成功的,若是,则执行步骤(7b),否则将失败的追溯结果作为新增追溯结果,执行步骤(7g);

(7b)新增追溯子模块根据追溯结果获取新疆大枣编号producthash和新流通信息circulationinfo_new,并发送至上链适配子模块:

新增追溯子模块从验证信息中提取新疆大枣编号producthash和流通信息circulationinfo,并将到货信息拼接在流通信息circulationinfo后,形成新的流通信息circulationinfo_new,然后将producthash和circulationinfo_new发送至上链适配子模块;

因为circulationinfo_new包括了整个流通信息,因此保证了在追溯农产品全部流通流程信息时,只需要从区块链中搜索出最新的追溯信息,而不需要搜索区块链中所有的区块,与现有技术相比,有效减缓了追溯速度随着区块链信息增多的大幅度下降。

(7c)上链适配子模块获得新增追溯结果:

(7c1)上链适配子模块使用下级售点的私钥对新疆大枣编号和流通信息进行签名,得到售点数字签名sellingds:

上链适配子模块接收新疆大枣编号producthash和新流通信息circulationinfo_new,将circulationinfo_new作为流通信息circulationinfo与producthash拼接,使用售点的私钥对此拼接结果的哈希的运算值进行加密,得到售点数字签名sellingds,签名公式为:

sellingds=sellingprivatekeylock(sha256(producthash+circulationinfo))

其中sellingprivatekeylock(*)表示售点的私钥加密函数;

(7c2)上链适配子模块将producthash、circulationinfo、sellingds以及售点数字证书地址sellingdc_addr封装成新增上链信息;

(7c3)上链适配子模块上链适配子模块对新增上链信息进行上链操作,得到新增追溯结果:

上链适配子模块利用委任权益证明dpos的共识算法验证新增上链信息是否被篡改,若是,将上链失败信息作为新增追溯结果,否则,将新增上链信息作为追溯信息发布于区块链中,并将上链成功信息作为新增追溯结果。

(7d)上链适配子模块将新增追溯结果发送至显示模块;

(8)显示模块显示数据上链模块发送的新增追溯结果,并执行步骤(4);

(9)追溯模块响应功能选择模块发送的追溯请求,得到追溯结果,并将追溯结果发送至显示模块:

此处追溯模块响应功能选择模块发送的追溯请求,得到追溯结果的具体操作与步骤(6)中所述的追溯模块响应数据上链模块发送的追溯请求,得到追溯结果的操作一致;

(10)显示模块显示追溯模块发送的追溯结果,新疆大枣的追溯流程结束。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1