掌桥专利:专业的专利平台
掌桥专利
首页

基于区块链的食品信息溯源方法、装置和系统

文献发布时间:2024-04-18 19:52:40


基于区块链的食品信息溯源方法、装置和系统

技术领域

本发明涉及区块链技术领域,尤其涉及一种基于区块链的食品信息溯源方法、装置和系统。

背景技术

随着互联网金融的发展,银行等金融行业为进一步保证员工的身体,越来越多的关注到食品安全。食品溯源是保证食品安全的一项重要指标,食品溯源保证了食品在流通过程中,食品各项质量指标信息能够被追溯,从而保证食品信息处在安全的掌控之下。而传统的食品溯源采用中心化的存储机制,信息通常面临采集不对称、易篡改破坏,数据存储不安全,以及各个相关组织在数据交换中存在隐私保障等问题。区块链技术是不可篡改的去中心化的分布式账本,具有安全的数据共识和隐私保护机制,可保证数据的完整可靠和一致,因此出现了利用区块链进行溯源的技术。但是在食品溯源方面,仍需要解决如下技术问题:食品流通环节中的各个参与者如何相互作用及进行交易;各个参与者各自的数据交易隐私如何进行保护;由于区块链存储数据量较小,如何保证食品溯源数据文件的保存;溯源智能合约的升级更新如何更加便捷等。

发明内容

有鉴于此,本发明提供一种基于区块链的食品信息溯源方法、装置和系统,以解决上述提及的至少一个问题。

为了实现上述目的,本发明采用以下方案:

根据本发明的第一方面,提供一种基于区块链的食品信息溯源方法,方法包括:接收食品溯源参与者写入的溯源数据、溯源图片和溯源视频,所述食品溯源参与者包括原材料提供商、生产商、运输单位、仓储单位和销售商;将所述溯源图片和所述溯源视频存入链下文件服务器,并执行数据创建智能合约将所述溯源数据、所述溯源图片的哈希值以及所述溯源视频的哈希值存入溯源区块链的存储节点;接收消费用户发出的溯源查询请求;根据所述溯源查询请求执行数据查询智能合约完成食品信息溯源。

根据本发明的第二方面,提供一种基于区块链的食品信息溯源装置,所述装置包括:数据接收单元,用于接收食品溯源参与者写入的溯源数据、溯源图片和溯源视频,所述食品溯源参与者包括原材料提供商、生产商、运输单位、仓储单位和销售商;存储单元,用于将所述溯源图片和所述溯源视频存入链下文件服务器,并执行数据创建智能合约将所述溯源数据、所述溯源图片的哈希值以及所述溯源视频的哈希值存入溯源区块链的存储节点;查询请求接收单元,用于接收用户发出的溯源查询请求;溯源单元,用于根据所述溯源查询请求执行数据查询智能合约完成食品信息溯源。

根据本发明的第三方面,提供一种基于区块链的食品信息溯源系统,系统包括:物理层、数据层、平台层和应用层,所述物理层包括若干依托物联网技术采集食品信息的硬件设备;所述数据层包括链下关系型数据库、链下文件服务器和溯源区块链的存储节点,所述链下关系型数据库用于存储非溯源数据、所述链下文件服务器用于存储溯源图片和视频,所述溯源区块链的存储节点用于存储溯源数据、溯源图片哈希值和溯源视频哈希值;所述平台层用于进行食品溯源参与者的账户及权限管理、日志管理、企业管理、溯源节点管理和数据分析;所述应用层用于和第三方用户或机构建立交互接口。

根据本发明的第四方面,提供一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,处理器执行所述计算机程序时实现上述方法的步骤。

根据本发明的第五方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。

由上述技术方案可知,本发明提出的基于区块链的食品信息溯源方法和系统,可以结合链上与链下,完成食品从生产、加工、存储、运输和销售等环节中的信息存储管理,保证食品信息安全可靠的存储,满足现实场景下的食品溯源需求。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1是本申请实施例提供的一种基于区块链的食品信息溯源方法的流程示意图;

图2是本实施例提供的合约调用示意图;

图3是本实施例提供的食品溯源参与者向区块链存储节点写入数据的流程示意图;

图4是为本实施例提供的消费用户向溯源区块链查询溯源数据的流程示意图;

图5是本申请实施例提供的改进的四层智能合约模型示意图;

图6是本申请另一实施例提供的一种基于区块链的食品信息溯源方法的流程示意图;

图7是本申请实施例提供的一种食品信息溯源系统的网络部署示意图;

图8是本实施例提供的利用公证人模式和中继链模式相结合的跨链交互完成跨链溯源查询请求的流程示意图;

图9是本申请实施例提供的一种基于区块链的食品信息溯源装置的结构示意图;

图10是本申请实施例提供的一种基于区块链的食品信息溯源装置的结构示意图;

图11是本申请实施例提供的一种基于区块链的食品信息溯源系统的架构示意图;

图12是本申请实施例提供的逻辑合约的升级流程示意图;

图13是本申请实施例提供的食品溯源跨链平台接口涉及结构示意图;

图14是本申请实施例提供的消费客户进行食品信息溯源的流程示意图;

图15是本申请实施例提供的电子设备的系统构成示意框图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。

本申请围绕区块链相关技术在食品溯源方面的研究,提供了一个满足现实场景下的食品溯源方案,并实现一个高性能的可扩展的食品溯源系统模型。

如图1所示为本申请实施例提供的一种基于区块链的食品信息溯源方法的流程示意图,本实施例是从溯源区块链侧进行的描述,该方法包括如下步骤:

步骤S101:接收食品溯源参与者写入的溯源数据、溯源图片和溯源视频,所述食品溯源参与者包括原材料提供商、生产商、运输单位、仓储单位和销售商。

为了方便描述,本实施例中将原材料提供商、生产商、运输单位、仓储单位和销售商这些提供食品溯源数据的单位称为食品溯源参与者,而能够理解的是,广义的食品溯源参与者还可以包括消费用户和其他第三方对食品流通具有监管责任的机构。

这里的溯源数据是指可追溯性法规要求的少量可追溯信息,如批号、可追溯结果、产地、检验日期等。以食品溯源各参与方举例来说,对于原材料提供商、生产商、运输单位、仓储单位和销售商,其在区块链存储的内容可以分布如表1-表5所示:

表1原材料数据表

表2生产商数据表

表3销售商数据表

表4物流数据表

表5仓储数据表

步骤S102:将所述溯源图片和所述溯源视频存入链下文件服务器,并执行数据创建智能合约将所述溯源数据、所述溯源图片的哈希值以及所述溯源视频的哈希值存入溯源区块链的存储节点。

本实施例的溯源区块链在存储方面包括了链下关系型数据库、链下文件服务器和区块链存储节点,由于食品溯源数据存在较多图片、视频等较大的文件,而区块链网络的数据存储有限,因此本申请设计使用链上与链下数据相结合的模式,具体来说:链下关系型数据库可以用于存储非溯源数据,链下文件服务器可以用于存储溯源图片和视频,而区块链存储节点则用于存储溯源数据(上述表1-表5的数据)、溯源图片哈希值和溯源视频哈希值。

步骤S103:接收消费用户发出的溯源查询请求。

消费用户可以通过个人终端上的应用发起溯源查询请求,其可以输入食品编号然后点击查询按钮,就可以发出相应食品的溯源查询请求,该食品编号是食品的身份证明,一般同一批次,同一生产时间的相同食品可以编号相同。

步骤S104:根据所述溯源查询请求执行数据查询智能合约完成食品信息溯源。

智能合约是完成区块链数据处理逻辑的关键,数据的写入、查询等操作都可以通过调用智能合约来实现。

在本实施例中可以通过shim(github.com/hyperledger/fabric-chaincode-go/shim)包提供api来访问其状态变量、事务上下文和调用其他智能合约。基于区块链的食品溯源智能合约算法流程主要如下:

输入:(fcn,peers,chaincodeName,channelName,args,token);输出:X,具体来说,包括如下步骤:

step1:校验访问身份信息token是否正确;

step2:根据区块链网络节点peers参数,确定需要进行背书的节点;

step3:根据Fabric网络中定义的通道名称channelName、智能合约链码名称chaincodeName和方法名fcn定位到指定的合约方法;

step4:校验智能合约方法参数args;

step5:根据合约方法和参数进行逻辑操作;

step6:输出执行返回结果X。

其中输入参数fcn为智能合约方法名、peers为Fabric区块链网络中对等节点信息、chaincodeName为所部署的智能合约链码名称,在Fabric区块链中链码通常用来处理网络中成员共同接受的业务逻辑,即我们通常所称的智能合约。channelName为Fabric中定义的区块链网络通道名称、args为智能合约方法请求参数、token为用户身份信息。

由上述描述可知,本申请提供的基于区块链的食品信息溯源方法,能同时结合链上与链下,完成食品从生产、加工、存储、运输和销售等环节中的信息存储管理,保证了食品信息安全可靠的存储,满足了现实场景下的食品溯源需求。

作为本发明的一个实施例,提出了一种分层的智能合约模型,该智能合约模型将智能合约中的功能逻辑和数据分离出来,使用一个单独的合约来存储数据(DataContract,数据合约),并使用一个单独的合约实现业务逻辑(Logic Contract,逻辑合约)。

具体来说,本实施例将智能合约拆分为了代理合约、数据合约和逻辑合约,如图2所示为本实施例提供的合约调用示意图,其中:

代理合约:消费用户或第三方机构与合约的交互都是通过代理合约。代理合约记录了数据合约的地址,通过委托调用转发给逻辑合约处理,并依据业务逻辑修改数据合约数据。代理合约也记录了逻辑合约的地址和版本,知道该转发给哪个版本的逻辑合约处理。

数据合约:负责存储数据,合约的存储结构不能改变,类比数据库中的表,一旦设定就不能轻易修改;访问及修改数据的接口,其他合约不能直接访问当前合约的数据,需要通过外部函数来访问和修改,实现存储合约的CURD。

在本实施例中数据合约主要保存了食品溯源参与者需要上传到Fabric区块链的数据,可以包含原材料提供商数据、生产商数据、运输单位数据、仓储单位数据和销售商数据,具体数据结构如下:

(1)原材料提供商

type Material struct{

Material_id string`json:"material_id"`//原料标识

Material_name string`json:"material_name"`//原料名称

Material_place string`json:"material_place"`//原料产地

Responsible_person string`json:"responsible_person"`//原料责任人

Hash_certificate string`json:"hash_certificate"`//相关证书哈希值

Time string`json:"time"`//数据上传时间

}

(2)生产商

type Producter struct{

Material_id string`json:"material_id"`//原料标识

Food_id string`json:"food_id"`//食品标识

Food_name string`json:"food_name"`//食品名称

Manufacturer string`json:"manufacturer"`//生产厂商信息

Producter_date string`json:"producter_date"`//生产日期

Producter_place string`json:"producter_place"`//产地

Responsible_person string`json:"responsible_person"`//生产责任人Hash_certificate string`json:"hash_certificate"`//相关证书哈希值

Time string`json:"time"`//数据上传时间

}

(3)运输单位

type Transport struct{

Product_id string`json:"product_id"`//产品标识

Product_name string`json:"product_name"`//产品名称

Vehicle_id string`json:"vehicle_id"`//物流车辆标识

Vehicle_date string`json:"vehicle_date"`//运输时间

Vehicle_line string`json:"vehicle_line"`//物流路线

Responsible_person string`json:"responsible_person"`//责任人

Time string`json:"time"`//数据上传时间

}

(4)仓储单位

type Warehouse struct{

Product_id string`json:"product_id"`//产品标识

In_time string`json:"in_time"`//入库时间

Out_time string`json:"out_time"`//出库时间

Warehouse string`json:"warehouse"`//仓库信息

Responsible_person string`json:"responsible_person"`//责任人

Time string`json:"time"`//数据上传时间

}

(5)销售商

type Retailer struct{

Food_id string`json:"food_id"`//食品标识

Retailer_id string`json:"retailer_id"`//销售商标识

Retailer_place string`json:"retailer_place"`//销售地址

Retailer_date string`json:"retailer_date"`//销售时间

Responsible_person string`json:"responsible_person"`//销售责任人

Hash_certificate string`json:"hash_certificate"`//相关证书哈希值

Time string`json:"time"`//数据上传时间

}

逻辑合约:负责处理合约逻辑,通过组合数据合约的CURD,实现复杂的逻辑。

上述逻辑合约主要可以包含如下表6所示的逻辑合约函数:

表6逻辑合约函数

基于上述智能合约设置,如图3所示为本实施例提供的食品溯源参与者向区块链存储节点写入数据的流程示意图:

步骤S301:食品溯源参与者调用代理合约开始执行数据创建步骤。

步骤S302:代理合约委托给逻辑合约进行数据创建处理。

步骤S303:逻辑合约从所述代理合约处获取数据合约地址,并基于所述数据合约地址修改所述数据合约完成将所述溯源数据、所述溯源图片的哈希值以及所述溯源视频的哈希值存入区块链存储节点的操作。

如图4所示为本实施例提供的消费用户向溯源区块链查询溯源数据的流程示意图:

步骤S401:根据所述溯源查询请求调用代理合约开始执行食品信息溯源查询步骤。

步骤S402:代理合约委托给逻辑合约进行食品信息溯源查询。

步骤S403:逻辑合约从所述代理合约处获取数据合约地址,并基于所述数据合约地址查询数据合约的溯源数据。

步骤S404:逻辑合约将所述溯源数据返回给所述代理合约。

步骤S405:代理合约将所述溯源数据展示给所述消费用户。

通过上述的智能合约三层模型,可以解决合约大小的限制,实现复杂的功能。另外还可以通过仅升级逻辑合约来更新智能合约,而将功能性合约封装成通用合约,减少了重复部署合约。

然而,逻辑合约随时的变换可能会带来逻辑不可变性的问题,针对该问题,本申请提出进一步改进的四层智能合约模型,通过添加权限层保证合约修改升级及调用的安全操作,改进的四层智能合约模型如图5所示。

逻辑合约的升级需要通过权限合约进行限制,当超过预设数量的食品溯源参与者签名同意后,逻辑合约升级才能被触发。同时本申请的智能合约是可控的,可以在逻辑合约上添加业务暂停的权限开关,当出现问题时,管理员账户可以关闭关键性逻辑合约操作,来保证合约的正常执行。

优选的,如图6所示,本实施例的基于区块链的食品信息溯源方法还可以包括如下步骤:

步骤S105:接收第三方机构的跨链溯源查询请求。

这的第三方机构可以包括对食品流通负有监管职责的相关机构,本系统可以与这些机构的系统进行跨链交互,即与这些机构所在区块链进行交互,这些机构系统包括但不限于食品检测机关数据管理系统,食品信息采集管理系统,企业资料管理系统等。

步骤S106:基于公证人模式和中继链模式相结合的跨链交互完成所述跨链溯源查询请求。

需要指出的是,虽然图6中是以顺序的方式进行图示,但本领域技术人员应当知晓,步骤S105、S106与步骤S103、S104是可以同时执行的,即可以同时接收消费用户或第三方机构的溯源查询。

在本实施例中由食品溯源参与者中的原材料提供商、生产商、运输单位、仓储单位和销售商作为网络节点构成一Fabric区块链网络,如图7所示为本申请实施例提供的一种食品信息溯源系统的网络部署示意图,由图7可见,该Fabric区块链网络中每个食品溯源参与者均由两个对等节点构成,且该Fabric区块链网络中还包括一排序服务网络,该排序服务网络由五个排序节点通过共识机制组成。

本实施例针对Fabric区块链将使用公证人模式+中继模式的双重技术,两种模式的结合,首先利用了Fabric中公证人的可信任性,同时中继的灵活性方便了区块链间的数据校验与转换。

公证人机制天然比较契合Fabric的生态,因为Fabric中排序节点恰好可以作为公证人,首先排序节点由联盟链中组织成员共同选择产生,具有相对的稳定性,公证人列表不需要不断的更新。但排序节点的可信度也存在问题,因为排序节点是由Fabric选出,其公信力不能影响到其他链,这会使得跨链数据的真实性被质疑。中继模式可方便的解决不同链之间的数据结构转换问题,且不会在额外消耗原链上的资源,同时通过中继链可进行数据验证和状态同步,提高了数据来源的可信性。

如图8所示为本实施例提供的利用公证人模式和中继链模式相结合的跨链交互完成跨链溯源查询请求的流程示意图:

S801:由所述公证人执行多重签名后将交易发送至中继链进行数据验证;

S802:所述中继链验证成功后进行数据结构的转换,将溯源区块链的数据结构转换为第三方机构私有链的数据结构;

S803:通过所述公证人对所述交易进行多重签名后转入所述第三方机构私有链。

优选的,相比于为每一个特殊关系建立各通道来说,本实施例采用了定义多个私有数据集合的方式来实现私有数据的共享,具体来说,本实施例在所述原材料提供商和所述生产商之间、所述销售商和所述生产商之间、所述仓储单位、所述生产商和所述销售商之间通过定义私有数据集合来彼此共享私有数据。

由上述可知,本实施例提供的基于区块链的食品信息溯源方法,一方面解决了现实场景下的智能合约的修改与升级问题,另一方面通过研究分析不同区块链技术,根据不同的应用场景,设计了多链技术,完成在多个区块链之间的信息的传输交换,并保证数据的隐私安全,解决单一区块链孤岛问题。最后,本申请还能同时结合链上与链下,完成食品从生产、加工、存储、运输和销售等环节中的信息存储管理,保证了食品信息安全可靠的存储,满足了现实场景下的食品溯源需求。

如图9所示为本申请实施例提供的一种基于区块链的食品信息溯源装置的结构示意图,该装置包括:数据接收单元910、存储单元920、查询请求接收单元930和溯源单元940,它们之间依次相连。

数据接收单元910用于接收食品溯源参与者写入的溯源数据、溯源图片和溯源视频,所述食品溯源参与者包括原材料提供商、生产商、运输单位、仓储单位和销售商。

存储单元920用于将所述溯源图片和所述溯源视频存入链下文件服务器,并执行数据创建智能合约将所述溯源数据、所述溯源图片的哈希值以及所述溯源视频的哈希值存入溯源区块链的存储节点。

查询请求接收单元930用于接收用户发出的溯源查询请求。

溯源单元940用于根据所述溯源查询请求执行数据查询智能合约完成食品信息溯源。

优选的,存储单元920执行数据创建智能合约将所述溯源数据、所述溯源图片的哈希值以及所述溯源视频的哈希值存入溯源区块链的存储节点具体可以包括:调用代理合约开始执行数据创建步骤;所述代理合约委托给逻辑合约进行数据创建处理;所述逻辑合约从所述代理合约处获取数据合约地址,并基于所述数据合约地址修改所述数据合约完成将所述溯源数据、所述溯源图片的哈希值以及所述溯源视频的哈希值存入区块链存储节点的操作。

优选的,溯源单元940根据所述溯源查询请求执行数据查询智能合约完成食品信息溯源具体可以包括:根据所述溯源查询请求调用代理合约开始执行食品信息溯源查询步骤;所述代理合约委托给逻辑合约进行食品信息溯源查询;所述逻辑合约从所述代理合约处获取数据合约地址,并基于所述数据合约地址查询数据合约的溯源数据;所述逻辑合约将所述溯源数据返回给所述代理合约;所述代理合约将所述溯源数据展示给所述消费用户。

优选的,本实施例中上述逻辑合约的升级通过权限合约进行限制,当超过预设数量的食品溯源参与者签名同意后,所述逻辑合约升级才能被触发。

优选的,本实施例中上述原材料提供商和生产商之间、销售商和生产商之间、仓储单位、生产商和销售商之间通过定义私有数据集合来彼此共享私有数据。

优选的,如图10所示,本实施例的食品信息溯源装置还包括:

跨链请求接收单元950,用于接收第三方机构的跨链溯源查询请求;

跨链请求完成单元960,用于基于公证人模式和中继链模式相结合的跨链交互完成所述跨链溯源查询请求。

优选的,上述公证人由所述食品溯源参与者共同选择排序节点担任,跨链请求完成单元960具体用于:由所述公证人执行多重签名后将交易发送至中继链进行数据验证;所述中继链验证成功后进行数据结构的转换,将溯源区块链的数据结构转换为第三方机构私有链的数据结构;通过所述公证人对所述交易进行多重签名后转入所述第三方机构私有链。

上述各个单元的详细描述可以参见前述方法实施例中相应描述,在此不再继续赘述。

由上述可知,本实施例提供的基于区块链的食品信息溯源装置,一方面解决了现实场景下的智能合约的修改与升级问题,另一方面通过研究分析不同区块链技术,根据不同的应用场景,设计了多链技术,完成在多个区块链之间的信息的传输交换,并保证数据的隐私安全,解决单一区块链孤岛问题。最后,本申请还能同时结合链上与链下,完成食品从生产、加工、存储、运输和销售等环节中的信息存储管理,保证了食品信息安全可靠的存储,满足了现实场景下的食品溯源需求。

如图11所示为本申请实施例提供的一种基于区块链的食品信息溯源系统的架构示意图,该系统架构包括:物理层110、数据层120、平台层130和应用层140,下面对该架构中各个部分分别进行介绍。

物理层110包括若干依托物联网技术采集食品信息的硬件设备,其可以将食品相关的各种信息进行采集,比如可以包括射频装置、物品及指纹识别装置、各类应用传感器、各类信息采集终端或其它物联网应用装置等。

数据层120包括了链下关系型数据库、链下文件服务器和区块链存储节点,由于食品溯源数据存在较多图片、视频等较大的文件,而区块链网络的数据存储有限,因此本申请设计使用链上与链下数据相结合的模式,具体来说:链下关系型数据库用于存储非溯源数据,链下文件服务器用于存储溯源图片和视频,而区块链存储节点则用于存储溯源数据(可追溯性法规要求的少量可追溯信息,如批号、可追溯结果、产地、检验日期等)、溯源图片哈希值和溯源视频哈希值。

以食品溯源各参与方举例来说,对于原材料提供商、生产商、运输单位、仓储单位和销售商,其在区块链存储的内容可以分布如上述表1-表5所示。

链下文件服务器的链下证书图片数据表如表7所示,通过将较大容量的数据如证书照片、出货、加工视频等相关原始数据保存在链下,而将其哈希值保存到区块链中,用于数据校验,可以防止数据篡改。

表7链下证书图片数据表

平台层130主要用于进行食品溯源参与者的账户及权限管理、日志管理、企业管理、溯源节点管理和数据分析,在实际应用中,可以建设一食品溯源平台,将涉及食品整个流通环节的各方都纳入平台管理。

应用层140用于和第三方用户或机构建立交互接口。这里的第三方用户主要是需要进行食品溯源查询的消费客户,平台可以建设一溯源消费信息查询系统为消费客户提供一查询途径。而第三方机构则可以包括对食品流通负有监管职责的相关机构,本系统可以与这些机构的系统进行跨链交互,即与这些机构所在区块链进行交互,这些机构系统包括但不限于食品检测机关数据管理系统,食品信息采集管理系统,企业资料管理系统等。

优选的,本实施例的食品信息溯源系统中的食品溯源参与者包括:原材料提供商、生产商、运输单位、仓储单位、销售商和消费客户这六大主体。本申请由食品溯源参与者中的原材料提供商、生产商、运输单位、仓储单位和销售商作为网络节点构成一Fabric区块链网络(可以参见图7),由图7可见,该Fabric区块链网络中每个食品溯源参与者均由两个对等节点构成,且该Fabric区块链网络中还包括一排序服务网络,该排序服务网络由五个排序节点通过共识机制组成。

作为本发明的一个实施例,上述所有节点都运行在第三方虚拟机ubuntu18版本64位操作系统上。虚拟机被分配Intel(R)Core(TM)i7-7700HQ CPU@2.80GHz和32GB内存。使用Docker容器来部署和维护各个参与者的节点,Docker是支持Fabric的容器环境。上述Fabric区块链网络创建的具体步骤如下步骤1-步骤5所述:

步骤1:创建参与者身份加密材料。区块链网络中的不同参与者包括对等节点、排序节点、客户端应用程序、管理员等,每一个参与者(网络内部或外部能够使用服务的活动元素)都具有封装在X.509数字证书中的数字身份。配置文件crypto-config.yaml定义了排序服务节点、组织节点等基本信息。通过使用cryptogen二进制命令生成加密数字身份信息。

步骤2:生成创世纪块。区块链中的第一个区块被称为创世区块。虽然它并不包含任何用户交易,但却是账本的起始点。创世区块包含了一个配置交易,该交易含有网络初始化配置信息。通过configtx.yaml配置文件,可配置背书策略、排序服务信息等。

步骤3:启动网络。通过Docker容器启动网络,配置文件docker-compose.yaml定义了网络中各节点所需的镜像等信息。

步骤4:创建通道并加入。现在机器上已经运行了对等节点和排序节点,可以通过peer channel create命令为组织之间创建一个通道。通道是特定网络成员之间通信的私有层。每个通道都有一个单独的区块链账本。

步骤5:发布链码(智能合约)到通道。链码首先被安装在一个组织的节点上,然后被部署到通道中,可以被用来背书交易并与区块链账本交互。在将链码部署到通道之前,通道成员需要就建立链码管理的链码定义达成一致。当所需数量的组织达成一致时,就可以将链码定义提交给通道,然后就可以使用链码。

在上述Fabric区块链网络中,食品的流通存在五个组织,他们之间的关系为:原材料供应商将原材料发往生产加工商;生产加工商需要对食品加工生产储存;运输方负责参与方之间的食品货物运输;仓储方需要保存食品;销售商向加工商采购并进行售卖。生产商可能希望与原材料提供商进行私下交易,以对销售商保密交易条款(以免暴露他们收取的加价)。销售商还可能希望与生产商建立单独的私人数据关系,因为它收取的价格低于销售价格。仓储方可能还想与生产加工商和销售商建立私有数据关系。

在Fabric区块链网络中,相比于为每一个特殊关系建立各通道来说,本实施例采用了定义多个私有数据集合的方式来实现私有数据的共享,具体的,可以在所述Fabric区块链网络中为原材料提供商和生产商之间定义第一私有数据集合;为销售商和生产商定义第二私有数据集合;以及为仓储单位、生产商和销售商定义第三私有数据集合;食品溯源参与者在私有数据集合中可彼此共享私有数据。私有数据通过在通道中的成员间使用集合,实现了和通道相同的隐私能力并且不用创建和维护独立的通道,减少了整体交易的复杂性。

下面表8-表10例举了第一私有数据集合、第二私有数据集合和第三私有数据集合的数据结构:

表8生产商和原材料供应商私有数据表

表9销售商和生产商私有数据表

表10仓储单位、生产商和销售商私有数据表

在上述Fabric区块链网络中,智能合约是完成区块链数据处理逻辑的关键,本申请可以使用Go语言进行智能合约的编写,本申请将智能合约分为代理合约、数据合约、逻辑合约和权限合约。代理合约记录有所述数据合约和所述逻辑的地址,通过委托调用将用户交易转发给所述逻辑合约处理。

在本实施例中,可以通过shim(github.com/hyperledger/fabric-chaincode-go/shim)包提供api来访问其状态变量、事务上下文和调用其他智能合约。基于区块链的食品溯源合约算法流程主要如下,其中输入参数fcn为智能合约方法名、peers为Fabric区块链网络中对等节点信息、chaincodeName为所部署的智能合约链码名称,在Fabric区块链中链码通常用来处理网络中成员共同接受的业务逻辑,即通常所称的智能合约。channelName为Fabric中定义的区块链网络通道名称、args为智能合约方法请求参数、token为用户身份信息。

算法1:智能合约调用流程

输入:(fcn,peers,chaincodeName,channelName,args,token)

输出:X

step1:校验访问身份信息token是否正确;

step2:根据区块链网络节点peers参数,确定需要进行背书的节点;

step3:根据Fabric网络中定义的通道名称channelName、智能合约链码名称chaincodeName和方法名fcn定位到指定的合约方法;

step4:校验智能合约方法参数args;

step5:根据合约方法和参数进行逻辑操作;

step6:输出执行返回结果X。

在本实施例中,将Fabric区块链网络中的智能合约分为代理合约、数据合约和逻辑合约,实现了整个合约的模块化,实现了解耦,每个部分之间可以相互调用。代理合约负责对外提供调用,调用内部的逻辑处理合约,逻辑合约负责完成数据的处理工作,数据合约负责存储实际要存储的数据。由于本实施例对于合约进行解耦,即使只升级了逻辑合约的部分,也不会影响到其他的其他合约模块的功能,这为后面的合约升级提供了拓展性。

其中逻辑合约的升级包括如图12所示的操作:

步骤S1201:通过Fabric中命令peer lifecycle chaincode package将新逻辑合约代码打包成新的智能合约包;

步骤S1202:通过peer lifecycle chaincode install将所述新逻辑合约安装到对等节点上;

步骤S1203:食品溯源参与者的组织通过peer lifecycle chaincodeapproveformyorg发起同意许可命令;

步骤S1204:通过peer lifecycle chaincode commit提交合约,完成逻辑合约升级操作。

在本实施例中,由于食品信息溯源系统需要满足其他负有监管责任的机构进行检查的需求,因此本实施例的食品信息溯源系统还包括连接多个区块链网络到所述Fabric区块链网络的跨链平台,如图13所示为本申请实施例提供的食品溯源跨链平台接口涉及结构示意图。申请人通过对跨链行为进行抽象凝练,发现跨链平台只需包含初始化接口、读接口和写接口这三个服务接口即可满足跨链的基本数据传输,但是基于跨链访问除了获取和发送数据外,还肩负了跨链可信验证以及跨链事务保证的使命,这依赖于区块头同步、跨链交易验证以及跨链事件监听等功能。因此申请人基于跨链交互过程进一步抽象凝练,使得本实施例的跨链平台还包括了如下交互接口:获取块高接口、获取块高接口和注册时间接口。其中:所述初始化接口用于跨链资源的初始化;所述读接口用于在面向只读场景时获取链上信息;所述写接口用于在面向跨链发起交易场景时更新链上数据;所述获取块高接口用于查询当前块高以完成区块头同步;所述获取区块接口用于查询区块头信息以完成跨链交易验证;所述注册事件接口用于监听跨链事件。

有了上述的上层服务和底层交互的6个接口,便能打通业务层到区块链之间的信息链路,同时也为跨链应用屏蔽了不同区块链平台在接口访问协议上的差异性,可以通过统一的数据协议和调用格式完成与多条区块链的交互。

优选的,基于上述食品信息溯源系统,如图14所示,消费客户可以通过如下方式进行食品信息溯源:

步骤S1401:消费客户通过溯源应用输入食品编号并点击溯源查询;

步骤S1402:溯源应用通过SDK向Fabric区块链网络提交交易并调用智能合约,背书节点在指定容器中运行智能合约;

这里的溯源应用可以基于Fabric Node.js SDK进行溯源应用的开发,另外用户过Fabric Node.js SDK访问区块链智能合约时首先需要有一个封装在X.509的数字身份信息,该身份信息的创建需要通过区块链中的组织的同意,即需要使用组织的身份加密材料做认证。当用户发送请求时,首先会验证用户身份是否正确,之后通过身份信息、通道名和方法名便可以访问指定的智能合约方法。

步骤S1403:溯源应用在收到足够背书之后将交易发给所述排序节点;

步骤S1404:排序节点对交易请求进行打包然后广播给网络中其它节点;

步骤S1405:节点对交易进行最终检查,通过后写入账本。

由上述描述可知,本申请提供的食品信息溯源系统,一方面解决了现实场景下的智能合约的修改与升级问题,另一方面通过研究分析不同区块链技术,根据不同的应用场景,设计了多链技术,完成在多个区块链之间的信息的传输交换,并保证数据的隐私安全,解决单一区块链孤岛问题。最后,本申请还能同时结合链上与链下,完成食品从生产、加工、存储、运输和销售等环节中的信息存储管理,保证了食品信息安全可靠的存储,满足了现实场景下的食品溯源需求。

本发明实施例还提供一种食品信息溯源方法,该方法包括:消费客户和监管部门通过如上所述的食品信息溯源系统进行食品信息溯源。

本发明实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行所述程序时实现上述方法。

本发明实施例还提供一种计算机程序产品,包括计算机程序/指令,计算机程序/指令被处理器执行时实现上述方法的步骤。

如图15所示,该电子设备600还可以包括:通信模块110、输入单元120、音频处理器130、显示器160、电源170。值得注意的是,电子设备600也并不是必须要包括图15中所示的所有部件;此外,电子设备600还可以包括图15中没有示出的部件,可以参考现有技术。

如图15所示,中央处理器100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器100接收输入并控制电子设备600的各个部件的操作。

其中,存储器140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器100可执行该存储器140存储的该程序,以实现信息存储或处理等。

输入单元120向中央处理器100提供输入。该输入单元120例如为按键或触摸输入装置。电源170用于向电子设备600提供电力。显示器160用于进行图像和文字等显示对象的显示。该显示器例如可为LCD显示器,但并不限于此。

该存储器140可以是固态存储器,例如,只读存储器(ROM)、随机存取存储器(RAM)、SIM卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为EPROM等。存储器140还可以是某种其它类型的装置。存储器140包括缓冲存储器141(有时被称为缓冲器)。存储器140可以包括应用/功能存储部142,该应用/功能存储部142用于存储应用程序和功能程序或用于通过中央处理器100执行电子设备600的操作的流程。

存储器140还可以包括数据存储部143,该数据存储部143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器140的驱动程序存储部144可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。

通信模块110即为经由天线111发送和接收信号的发送机/接收机110。通信模块(发送机/接收机)110耦合到中央处理器100,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。

基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)110还经由音频处理器130耦合到扬声器131和麦克风132,以经由扬声器131提供音频输出,并接收来自麦克风132的音频输入,从而实现通常的电信功能。音频处理器130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器130还耦合到中央处理器100,从而使得可以通过麦克风132能够在本机上录音,且使得可以通过扬声器131来播放本机上存储的声音。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

相关技术
  • 一种基于多链互联区块链网络的食品快速溯源系统及方法
  • 一种基于区块链的食品药品溯源系统及方法
  • 一种基于ERP系统与区块链的食品溯源信息管理系统
  • 一种基于ERP系统与区块链的食品溯源信息管理系统
技术分类

06120116332585