一种基于EPC全球网络的区块链完整性验证方法与流程

文档序号:22677835发布日期:2020-10-28 12:35阅读:288来源:国知局
一种基于EPC全球网络的区块链完整性验证方法与流程

本发明涉及epc全球网络技术领域,具体来说,涉及一种基于epc全球网络的区块链完整性验证方法。



背景技术:

epc全球网络(epcglobalnetwork)是在物联网和互联网技术基础上,通过一系列国际标准对产品信息进行采集、存储和分享的专用信息网络。epcds(epcdiscoveryservice)是epc全球网络的搜索引擎,也是其实现全球产品信息分享的中枢模块。在epc全球网络中,企业通过在epcds中注册产品信息索引来发布产品信息,用户通过epcds来查询所需的产品信息。

epcds查询结果正确性包括以下涵义:(1)epcds查询结果是真实的,都来源于供应链中企业。(2)epcds查询结果是完整的。epcds需要保证返回所有查询产品有关的记录,而不能只发送部分记录。此外,假如某个企业发布了产品信息之后进行更新或者撤销,用户查询时得到的结果应该是企业发布的最新结果。

epcds的查询结果验证方面的研究尚属空白区域。与epcds查询验证相关的一个领域是关系数据库查询结果验证。数据拥有者把数据上传到不完全被信任的服务提供商,由服务提供商给各个用户提供数据查询服务。用户在获取查询结果时可以验证查询结果的正确性。这个领域已经有了比较深入的研究。使用认证数据结构是关系数据库查询结果验证的通用解决方案之一。数据拥有者上传数据给服务提供商时,同时上传额外的认证数据结构(authenticateddatastructure)。提供商执行用户的查询时,根据认证数据结构计算出验证对象(verificationobject),并把验证对象和查询结果一起发送以供用户验证查询结果。关系数据库的方法并不能直接使用在epcds查询结果验证中。关系数据库查询结果验证的模型中只有一个数据拥有者,而epcds中的查询往往涉及到多个数据拥有者(epcis)。并且,关系数据库中数据拥有者提交的数据是有序的(认证数据结构也是顺序相关),而epcds将每个epcis提交的产品信息索引整合到产品信息索引库时将会进行重新排序,导致无法使用顺序相关的认证数据结构。查询执行保证是另一项技术。通常,对大量数据执行密集操作,通过认证数据结构是不实用的。sion提出基于挑战-响应(challenge-response)的方法使不被信任的服务器可以证明他执行过用户的查询操作。在此方法中,数据的查询者拥有全部数据,因此查询者可以通过抽查的方式验证服务器是否执行了一批查询。然而在epcds中查询者并不拥有产品索引信息,因此已有的查询执行保证技术不能直接应用于epcds中。近年来受到学术界和工业界广泛关注的区块链是另外一个可以用在查询结果验证中的技术。

针对相关技术中的问题,目前尚未提出有效的解决方案。



技术实现要素:

针对相关技术中的问题,本发明提出一种基于epc全球网络的区块链完整性验证方法,以克服现有相关技术所存在的上述技术问题。

本发明的技术方案是这样实现的:

一种基于epc全球网络的区块链完整性验证方法,包括以下步骤:

步骤s1,每个数据拥有者(dataowners)将其拥有的productinfo信息和verifyinfo信息上传至epcds,并将其registinfo上传至区块链(blockchain);

步骤s2,epcds获取上传的数据建立索引以供用户查询,返回查询结果的同时将验证信息vo同时返回给用户(datausers);

步骤s3,用户向epcds发起查询,得到查询结果以及对应的验证信息vo;

步骤s4,用户向区块链发起验证查询,区块链根据用户查询返回相应的vo',通过验证vo与vo'是否相等来验证其查询结果的完整性。

进一步的,包括以下步骤:

初始化数据信息:

确定为n的产品集合[epc1,...,epcn],选定[l,k,p,f1,f2]作为该系统的初始参数,其中,k表示随机生成批次号,p表示为该系统的期望误报率;

f1,f2表示为随机数生成函数,表示如下:

f1:{0,1}l→{0,1}k,f2:{0,1}l→{0,1}2k

进一步的,还包括以下步骤:

获取产品批次号注册信息:

预先通过函数f1来生成这批产品的初始批次号设为x;

通过公式和公式把这批产品的epcid压缩至大小为m的布隆过滤器b,将使用的q个哈希函数记为h1;

将(x,null,b,a,1)以交易形式发送给区块链获取相应的交易号t1,其中,state设为1表示当前为未发送状态;

将这批产品的索引信息(epci,x,null)(i∈[1,n])以及验证信息(x,null,t1,h1,a)发布至epcds中。

进一步的,还包括以下步骤:

获取产品运输信息:

将这批产品中数量为j(j≤n)的产品[epc1,...,epcj]进行运输,其包括预先通过函数f2,来生成这批产品的发送批次号x1;

通过公式和公式来把这批产品的epcid压缩至大小为m1的布隆过滤器b1,并将其使用的q1个哈希函数记为h2;

将(x,x1,b1,a,2)以交易的形式发送给区块链得到相应的交易号t2,其中state设为2表示当前为已发送状态;

将这批产品的索引信息(epci,x,x1)(i∈[1,j])以及验证信息(x,x1,t2,h2,a)更新至epcds中。

进一步的,还包括以下步骤:

获取产品到达信息:

预先更新这批产品在区块链和epcds中的状态,其中包括向区块链发送(x,x1,b1,a,3)的交易得到相应的交易号t3,其state为3代表这批产品已到达下一目的地,将(x,x1,t3,h2,a)更新至epcds;

向区块链和epcds表明当前这批产品状态,其中包括将这批产品的初始批次号设置为x1后,将(x1,null,b1,b,1)以交易的形式发送给区块链得到相应的交易号t4,其中state设为1表示当前中为未发送状态,将这批产品的索引信息(epci,x1,null)(i∈[1,j])以及验证信息(x1,null,t4,h2,b)发布至epcds中。

进一步的,还包括以下步骤:

获取查询信息:

当用户想查询epc=′epc1′的产品信息时,向epcds发起查询;

epcds执行完查询语句后,将查询结果返回给用户,其中验证信息vo用来验证返回查询结果的完整性。

本发明的有益效果:

本发明基于epc全球网络的区块链完整性验证方法,通过每个数据拥有者将其拥有的信息上传至epcds,并将其registinfo上传至区块链,epcds获取上传的数据建立索引以供用户查询,返回查询结果的同时将验证信息vo同时返回给用户,用户向epcds发起查询,得到查询结果以及对应的验证信息vo,通过验证vo与vo'是否相等来验证其查询结果的完整性,通过产品信息保存至区块链平台为用户提供查询结果的验证,同时对产品信息新增批次号字段来索引数据,增加数据上传的效率的同时也减少了储存开销,解决由于epcds不可靠而引起的安全隐私问题,从而确保用户从epcds中查询到的产品信息是正确且完整的。

附图说明

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

图1是根据本发明实施例的一种基于epc全球网络的区块链完整性验证方法的流程示意图;

图2是根据本发明实施例的一种基于epc全球网络的区块链完整性验证方法的场景应用示意图一;

图3是根据本发明实施例的一种基于epc全球网络的区块链完整性验证方法的场景应用示意图二。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。

根据本发明的实施例,提供了一种基于epc全球网络的区块链完整性验证方法。

如图1-图3所示,根据本发明实施例的基于epc全球网络的区块链完整性验证方法,包括以下步骤:

步骤s1,每个数据拥有者(dataowners)将其拥有的productinfo信息和verifyinfo信息上传至epcds,并将其registinfo上传至区块链(blockchain);

步骤s2,epcds获取上传的数据建立索引以供用户查询,返回查询结果的同时将验证信息vo同时返回给用户(datausers);

步骤s3,用户向epcds发起查询,得到查询结果以及对应的验证信息vo;

步骤s4,用户向区块链发起验证查询,区块链根据用户查询返回相应的vo',通过验证vo与vo'是否相等来验证其查询结果的完整性。

其中,包括以下步骤:

初始化数据信息:

确定为n的产品集合[epc1,...,epcn],选定[l,k,p,f1,f2]作为该系统的初始参数,其中,k表示随机生成批次号,p表示为该系统的期望误报率;

f1,f2表示为随机数生成函数,表示如下:

f1:{0,1}l→{0,1}k,f2:{0,1}l→{0,1}2k

其中,还包括以下步骤:

获取产品批次号注册信息:

预先通过函数f1来生成这批产品的初始批次号设为x;

通过公式和公式把这批产品的epcid压缩至大小为m的布隆过滤器b,将使用的q个哈希函数记为h1;

将(x,null,b,a,1)以交易形式发送给区块链获取相应的交易号t1,其中,state设为1表示当前为未发送状态;

将这批产品的索引信息(epci,x,null)(i∈[1,n])以及验证信息(x,null,t1,h1,a)发布至epcds中。

进一步的,还包括以下步骤:

获取产品运输信息:

将这批产品中数量为j(j≤n)的产品[epc1,...,epcj]进行运输,其包括预先通过函数f2,来生成这批产品的发送批次号x1;

通过公式和公式来把这批产品的epcid压缩至大小为m1的布隆过滤器b1,并将其使用的q1个哈希函数记为h2;

将(x,x1,b1,a,2)以交易的形式发送给区块链得到相应的交易号t2,其中state设为2表示当前为已发送状态;

将这批产品的索引信息(epci,x,x1)(i∈[1,j])以及验证信息(x,x1,t2,h2,a)更新至epcds中。

其中,还包括以下步骤:

获取产品到达信息:

预先更新这批产品在区块链和epcds中的状态,其中包括向区块链发送(x,x1,b1,a,3)的交易得到相应的交易号t3,其state为3代表这批产品已到达下一目的地,将(x,x1,t3,h2,a)更新至epcds;

向区块链和epcds表明当前这批产品状态,其中包括将这批产品的初始批次号设置为x1后,将(x1,null,b1,b,1)以交易的形式发送给区块链得到相应的交易号t4,其中state设为1表示当前中为未发送状态,将这批产品的索引信息(epci,x1,null)(i∈[1,j])以及验证信息(x1,null,t4,h2,b)发布至epcds中。

其中,还包括以下步骤:

获取查询信息:

当用户想查询epc=′epc1′的产品信息时,向epcds发起查询;

epcds执行完查询语句后,将查询结果返回给用户,其中验证信息vo用来验证返回查询结果的完整性。

借助于上述方案,基于epc全球网络的区块链完整性验证方法,通过每个数据拥有者将其拥有的信息上传至epcds,并将其registinfo上传至区块链,epcds获取上传的数据建立索引以供用户查询,返回查询结果的同时将验证信息vo同时返回给用户,用户向epcds发起查询,得到查询结果以及对应的验证信息vo,通过验证vo与vo'是否相等来验证其查询结果的完整性,通过产品信息保存至区块链平台为用户提供查询结果的验证,同时对产品信息新增批次号字段来索引数据,增加数据上传的效率的同时也减少了储存开销,解决由于epcds不可靠而引起的安全隐私问题,从而确保用户从epcds中查询到的产品信息是正确且完整的。

另外,具体的,实际应用中,产品都是以批次的形式进行运输,且还会有批次的分离和整合,所以在数据模型中增加了batch_in和batch_out来更好的记录批次号信息以及更快的索引数据;要验证数据的完整性,可以利用区块链平台来保存我们的验证凭证;考虑到实际开销问题,我们利用布隆过滤器对产品数据进行压缩后再上传至区块链;细化产品的流通过程,每一步都应有相对应区块链注册和上传产品信息的过程。

具体的,验证流程,包括如下:

根据查询结果中的批次号长度判断产品的起始位置,然后验证该查询结果中的batchid_out字段是否存在另一条查询结果中的batchid_in与其相同,若存在,则继续以此类推进行验证,若不存在,说明已找到最新的查询结果,且查询结果中间无遗漏。

根据返回的vo找到每个batchid对应的transactionid,并将其发送至区块链进行查找。

区块链返回相应的vo'(transactionid,batchid_in,batchid_out,bitmap,companyid,state),用户拿到区块链返回的vo'后,首先判断其中的batchid、companyid等是否与查询结果中的相同,然后用户将epc输入对应vo中的hashfun来产生对应的哈希值,以此哈希值作为下标来检查对应vo'中的bitmap,每个下标对应的值都应为1。

判断最新查询结果对应vo’中的state是否为1或者2,若是,则代表此时查询结果是正确且完整的。

综上所述,借助于本发明的上述技术方案,通过在epc全球网络中的产品信息查询结果验证方法,来解决由于epcds不可靠而引起的安全隐私问题,从而确保用户从epcds中查询到的产品信息是正确且完整的。本发明主要通过将企业的产品信息通过数据压缩后保存至区块链平台为用户提供查询结果的验证,我们采用布隆过滤器作为压缩产品数据的手段,同时对产品信息新增批次号字段来索引数据,增加数据上传的效率的同时也减少了储存开销,然后通过为供应链中各企业制定一个规范的产品流通过程来保证我们最终产品信息查询结果的完整性。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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