一种基于RFID和智能合约的溯源方法及系统转让专利

申请号 : CN202111494814.1

文献号 : CN113902384B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈政霖郑飞州陈胜俭

申请人 : 广州优刻谷科技有限公司

摘要 :

本发明提供的一种基于RFID和智能合约的溯源方法,包括:在物品开始流通前,上游节点将合法的EPC码写入待流通物品的RFID标签内;在区块链网络的世界状态树上创建一个账号;上游节点根据业务需求确定进行下一环节处理的节点的物理身份;第i个环节的流通节点收到所述商品时,通过RFID读写设备读取RFID标内的kpub、存入其中的数组E和元数据meta;第i个环节的流通节点将RFID标签和商品发往下一节点;第i个环节的流通节点将kpub、EPC码、Ei和函数write()发到区块链网络,区块链网络调用智能合约进行验证后,将Ei写进智能合约的数据区中。

权利要求 :

1.一种基于RFID和智能合约的溯源方法,其特征在于:包括:

1)在物品开始流通前,上游节点将合法的EPC码写入待流通物品的RFID标签内;在区块链网络的世界状态树上创建一个账号,所述账号的值为上游节点的公钥 ;在该账号下生成控制对所述EPC码进行授权访问的智能合约,所述智能合约以所述EPC码为索引进行查找;

其中所述智能合约包括数据区和代码区,数据区为溯源数组E,E的第 个元素表示第 个环节的流通节点的前一个物流环节的所有数据的哈希值,表示第 个环节的流通节点操作完成时间,表示第 个环节的流通节点指定下一环节有权限进行操作的节点的公钥,表示第 个环节的流通节点对 、、合成的字符串的哈希值进行的数字签名;代码区包含至少一个函数,所述函数供合法节点调用用于对节点进行鉴权操作后写入新的元素 ,所述函数记作write(),其参数为调用该函数的节点的公钥和待写入的数据;

2)上游节点根据业务需求确定进行下一环节处理的节点的物理身份,然后从证书颁发中心或本地缓存的证书目录中查找与节点对应的公钥 ,记录当前的处理时间 ,计算前一个物流环节的所有数据的哈希值 ,以及计算当前环节的数字签名 ;的初始值为1;

3)上游节点将其公钥 、EPC码、 和函数write()发到区块链网络;

4)区块链网络上的节点收到所述上游节点发送的数据后,依次根据 、EPC查找到对应智能合约,并调用函数write()传入参数 和 ;函数write()检查 是否为该世界状态树的账号的公钥,若是则将 写入智能合约数据区的第 个数组元素中;

5)上游节点在所述RFID标签内分出三块存储区,分别存储 、数组E和元数据meta,其中E的长度为 ,并将 和 通过标签读写设备写入该RFID标签内;meta包含三个字段nonce、 和 ,其中nonce表示当前节点处于第nonce个物流环节, 表示对nonce的签名, 为验证签名用的公钥;上游节点将nonce置为1,并使用其私钥对nonce进行签名,传入 ,并将自身的公钥写入 ;将商品及其附着的RFID标签发往公钥为 的节点;

6)令 ,第 个环节的流通节点收到所述商品时,通过RFID读写设备读取RFID标内的 、存入其中的数组E和元数据meta;

61)若E已被填满,则依次验证数组E中的每个数组元素,验证meta的签名数据是否正确,以及确定 ;若通过验证,则第 个环节的流通节点将标签内的nonce值增1,对nonce进行签名传入 ,并将自身公钥传入 ;

62)若E未被填满,则依次验证数组E中的每个数组元素,验证meta的签名数据是否正确,以及确定 ,以及满足

若通过验证,第 个环节的流通节点将标签内的nonce值增一,对nonce进行签名传入,并将自身的公钥传入 ,第 个环节的流通节点计算 ,并写入RFID标签内;

7)第 个环节的流通节点将RFID标签和商品发往下一节点;

8)第 个环节的流通节点将 、EPC码、 和函数write()发到区块链网络,区块链网络调用智能合约进行验证后,将 写进智能合约的数据区中;

9)跳转6)。

2.根据权利要求1所述的基于RFID和智能合约的溯源方法,其特征在于:在物品开始流通前,各企业或流通节点的主体单位组建面向商品流通场景的联盟链,并且向联盟链的证书颁发中心申请各自的数字证书;数字证书的字段至少包含节点物理身份、节点类型、证书颁发时间。

3.根据权利要求1所述的基于RFID和智能合约的溯源方法,其特征在于:所述62)中,第个环节的流通节点计算前一个物流环节的所有数据的哈希值 的具体过程如下:其中concat函数表示将其变量按照从左到右的顺序进行字符拼接后得到的字符串。

4.根据权利要求3所述的基于RFID和智能合约的溯源方法,其特征在于:所述 、、合成的字符串的哈希值 表示如下:

5.一种基于RFID和智能合约的溯源系统,其特征在于:包括上游节点、流通节点和终端节点;所述上游节点、流通节点和终端节点内存储有程序,所述上游节点、流通节点和终端节点内的程序运行时,执行权利要求1‑4任一项所述基于RFID和智能合约的溯源方法的操作。

说明书 :

一种基于RFID和智能合约的溯源方法及系统

技术领域

[0001] 本发明涉及RFID技术领域,更具体地,涉及一种基于RFID和智能合约的溯源方法及系统。

背景技术

[0002] 在供应链管理或需要涉及流程复杂、参与主体众多的商品生产、物流等领域,如何保证产品或零部件完好且安全地准时送达下一级处理节点,以防止假货的掺入和相关人员
的造假,是目前亟需解决的难题。目前,不同细分领域的研究人员从各自的专业领域出发,
提出了初步可行的商品追溯和流程管理方法,其中较为有效的是以区块链技术为中心的智
能合约、多方安全计算等密码学相关算法,另外,随着基于RFID技术的物品识别方法的应用
普及,大内存容量的RFID标签也有望成为产品溯源场景的有效辅助工具。
[0003] 区块链技术以其具有的不可抵赖和不可篡改性,成为商品溯源和防伪领域的重要新兴方法。其主要通过将每次的交易或每个环节的操作进行数字签名,并将交易和其签名
进行上链操作来实现可信性。数字签名方法确保了每个交易都有密码学安全的确切生成
者,不相关的节点或用户无法伪造上链前的交易信息,从而初步保证各个交易的不可伪造
和不可抵赖。另外,各个阶段的交易通过区块链平台按照区块的形式组织起来,该链式结构
的任何一个区块如果被恶意修改,全网诚实节点都可以及时发现,这就可以防止数据被恶
意删改的风险。
[0004] 目前的基于区块链技术的溯源及安全管理方法大多基于上述思路进行改进,或是增加一些辅助技术进行安全优化。比如中国专利公布号为“CN106779737A”的专利申请提出
将私链和公链相结合的溯源防伪方法。用户在将交易发往公链的同时也将其副本保存在本
地的私链里,在交易进行的每个环节,各个相关方都可以将公链上的数据的关键字段与本
地私链的进行比对,若发现数据不匹配,则表明数据被恶意篡改,从而增强商品流转信息的
可信性与实时性。
[0005] 但上述方法仍存在一个较大的问题,由于私链是完全由单个用户或节点控制的区块链系统,包括与某个特定的物流过程相关联的其他任何节点都无权访问,这种将关联交
易进行孤立切割的方法存在安全隐患。
[0006] 比如上游的某个节点将交易上链后,如果长时间不在线,那么恶意节点对交易的恶意篡改将无法被及时发现,交易过程仍然存在被下游节点错误执行的可能,存在分叉的
风险。同时,这类方法只能保证“链上”信息的可信性,上链信息通常是实际商品的一些属
性,如价格、名称、重量等,无法保证链下商品的可信性。

发明内容

[0007] 本发明的发明目的在于提供一种基于RFID和智能合约的溯源方法,本方法以链下的RFID标签为载体的业务流转过程的建链策略,确保溯源过程的完整性和可信性。且应用
智能合约准入策略,确保链上备份数据的可信性。
[0008] 为实现以上发明目的,采用的技术方案是:
[0009] 一种基于RFID和智能合约的溯源方法,包括:
[0010] 1)在物品开始流通前,上游节点将合法的EPC码写入待流通物品的RFID标签内;在区块链网络的世界状态树上创建一个账号,所述账号的值为上游节点的公钥 ;在该账
号下生成控制对所述EPC码进行授权访问的智能合约,所述智能合约以所述EPC码为索引进
行查找;
[0011] 其中所述智能合约包括数据区和代码区,数据区为溯源数组E,E的第 个元素表示第 个环节的流通节点的前一个物流环节的所有数据的哈希值,
表示第 个环节的流通节点操作完成时间,表示第 个环节的流通节点指定下一环节有权
限进行操作的节点的公钥,表示第 个环节的流通节点对 、、合成的字符串的哈希值
进行的数字签名;代码区包含至少一个函数,所述函数供合法节点调用用于对节点进行
鉴权操作后写入新的元素 ,所述函数记作write(),其参数为调用该函数的节点的公钥和
待写入的数据;
[0012] 2)上游节点根据业务需求确定进行下一环节处理的节点的物理身份,然后从证书颁发中心或本地缓存的证书目录中查找与节点对应的公钥 ,记录当前的处理时间 ,计算
前一个物流环节的所有数据的哈希值 ,以及计算当前环节的数字签名 ;的初始值为1;
[0013] 3)上游节点将其公钥 、EPC码、 和函数write()发到区块链网络;
[0014] 4)区块链网络上的节点收到所述上游节点发送的数据后,依次根据 、EPC查找到对应智能合约,并调用函数write()传入参数 和 ;函数write()检查 是否为该
世界状态树的账号的公钥,若是则将 写入智能合约数据区的第 个数组元素中;
[0015] 5)上游节点在所述RFID标签内分出三块存储区,分别存储 、数组E和元数据meta,其中E的长度为 ,并将 和 通过标签读写设备写入该RFID标签内;meta包含三
个字段nonce、 和 ,其中nonce表示当前节点处于第nonce个物流环节, 表示
对nonce的签名, 为验证签名用的公钥;上游节点将nonce置为1,并使用其私钥对
nonce进行签名,传入 ,并将自身的公钥写入 ;将商品及其附着的RFID标签发往公
钥为 的节点;
[0016] 6)令 ,第 个环节的流通节点收到所述商品时,通过RFID读写设备读取RFID标内的 、存入其中的数组E和元数据meta;
[0017] 61)若E已被填满,则依次验证数组E中的每个数组元素,验证meta的签名数据是否正确,以及确定 ;若通过验证,则第 个环节的流通节点将标签内的nonce值增1,
对nonce进行签名传入 ,并将自身公钥传入 ;
[0018] 62)若E未被填满,则依次验证数组E中的每个数组元素,验证meta的签名数据是否正确,以及确定 ,以及满足
[0019] ;
[0020] 若通过验证,第 个环节的流通节点将标签内的nonce值增一,对nonce进行签名传入 ,并将自身的公钥传入 ,第 个环节的流通节点计算 ,并写入RFID标签内;
[0021] 7)第 个环节的流通节点将RFID标签和商品发往下一节点;
[0022] 8)第 个环节的流通节点将 、EPC码、 和函数write()发到区块链网络,区块链网络调用智能合约进行验证后,将 写进智能合约的数据区中;
[0023] 9)跳转6)。
[0024] 同时,本发明还提供了一种基于RFID和智能合约的溯源系统,其具体的方案如下:
[0025] 包括上游节点、流通节点和终端节点;所述上游节点、流通节点和终端节点内存储有程序,所述上游节点、流通节点和终端节点内的程序运行时,执行以上的基于RFID和智能
合约的溯源方法的步骤。
[0026] 与现有技术相比,本发明的有益效果是:
[0027] 本发明提供的基于RFID和智能合约的溯源方法能够提高物流环节的全程可追踪性和可信性,特别在整个过程的流程比较复杂且节点所处网络环境较差时。传统的溯源方
法常常需要在节点和区块链网络间进行多轮通信,可信性严重依赖区块链节点的可信性。
本发明则在链下即可离线完成链式溯源过程,大量的链上共识与智能合约的执行过程则可
在网络环境良好时补充进行。在最坏的情况下,物流过程中的某个节点将标签内的所有溯
源数据全部删除,但其若想伪造足够长度的溯源数据,则需要联合足够多的节点一起作恶
才可能欺骗下游节点。若物流链条较长,在实际生产环境中几乎无法伪造,从而增强了溯源
过程的强可信性。

附图说明

[0028] 图1为基于RFID和智能合约的溯源方法的流程示意图。
[0029] 图2为溯源系统的整体拓扑结构示意图。

具体实施方式

[0030] 附图仅用于示例性说明,不能理解为对本专利的限制;
[0031] 以下结合附图和实施例对本发明做进一步的阐述。
[0032] 实施例1
[0033] 图1为基于RFID和智能合约的溯源方法的流程示意图。如图1所示,本发明提供的方法包括以下步骤:
[0034] (1)初始化:各企业或流通节点的主体单位组建面向商品流通场景的联盟链,并且向联盟链的证书颁发中心申请各自的数字证书,数字证书的字段至少包含节点物理身份
(比如企业名)、节点类型、证书颁发时间。数字证书将一个随机的字符串(即公钥)与各个节
点的物理身份唯一地绑定起来,实现在区块链网络里可信地标识任一节点的功能。其中,节
点类型包括上游节点、流通节点、终端节点,在这三种类型的内部可根据具体商品内容进行
进一步细分。
[0035] (2)在物品开始流通前,上游节点将合法的EPC码写入待流通物品的RFID标签内,在区块链网络的世界状态树上创建一个账号,该账号的值为上游节点的公钥 。然后在
该账号下生成一个控制对该EPC码进行授权访问的智能合约,该智能合约以该EPC码为索引
进行查找。
[0036] 智能合约包括数据区和代码区,其中数据区是一个溯源数组E,E的第 个元素 是如下数据的集合:表示第 个环节的流通节点的前一个物流环节的所有数据的哈希值,
表示第 个环节的流通节点操作完成时间,表示第 个环节的流通节点指定下一环节有权
限进行操作的节点的公钥,表示第 个环节的流通节点对 、、合成的字符串的哈希值
进行的数字签名; ,在具体实施时,hash函数可以是任何一种成
熟的商用哈希函数,concat函数表示将其变量按照从左到右的顺序进行字符拼接后得到的
字符串;在具体实施时可根据业务需求采用相应的成熟的商用签名算法。其中,每个环节的
哈希操作的计算方法如下:
[0037]    (公式1)
[0038] 代码区包含至少一个函数,该函数供合法节点调用用于对节点进行鉴权操作后,写入新的元素E,记作write(),其参数为调用该函数的节点的公钥和待写入的数据。
[0039] (3)上游节点根据业务需求,确定可进行下一环节处理的节点的物理身份,然后从证书颁发中心或本地缓存的证书目录中,查找与该物理身份对应的公钥 ,记下当前的处
理时间 ,然后根据上述公式计算 ,最后计算 。
[0040] (4)上游节点将其公钥 、EPC码、 和函数write()发到区块链网络。
[0041] (5)区块链网络上的节点收到所述数据,依次根据 、EPC找到对应智能合约,调用函数write(),并传入参数 和 。函数write()检查 是否为该世界状态树的账号
的公钥,若是,则将 写入智能合约的数据区的第一个数组元素中。
[0042] (6)上游节点在该RFID标签内分出三块存储区,分别存储 、数组E和元数据meta,其中E的长度为 ,并将 和 通过标签读写设备写入该RFID标签内。meta包含三
个字段,其中一个为nonce,表示当前节点处于第nonce个物流环节,一个为对nonce的签名
,另一个为验证签名用的公钥 。上游节点将nonce置为1,并使用其私钥对nonce进
行签名,传入 ,并将自身的公钥写入 。最后将商品及其附着的RFID标签发往公钥
为 的节点。
[0043] (7)后面第i个环节的任何一个节点收到该商品时,都会通过RFID读写设备读取标签的里的 、存入其中的数组E和元数据meta。
[0044] (7.1)如果此时E已被填满,本环节节点则通过上游节点所默认使用的哈希算法和签名算法,依次验证每个数组元素,然后验证meta里签名数据是否正确,以及确定

[0045] (7.2)如果E未被填满,则除了进行(7.1)的步骤外,还需满足 ,以及满足
[0046]   (公式2)
[0047] (8.1)若步骤(7.1)通过验证,当前环节的节点将标签内的nonce值增一,对nonce进行签名传入 ,并将自身的公钥传入 。
[0048] (8.2)若步骤(7.2)通过验证,除了进行(8.1)的操作外,当前节点还需对 进行计算,并写入标签内。
[0049] (9)当前环节的节点将标签和商品发往下一节点。
[0050] (10)当前环节的节点将 、EPC码、 和函数write()发到区块链网络,区块链网络调用智能合约进行验证后,将 写进智能合约数据区中。
[0051] 图2为溯源系统的整体拓扑结构示意图。溯源系统在运行的过程中,各个节点依次向RFID标签添加链式溯源数组,以及向区块链网络调用智能合约。
[0052] 实施例2
[0053] 本实施例对本发明的基于RFID和智能合约的溯源方法提供了如下的物流场景:
[0054] 物流过程开始前,每个参与方都向证书授权中心申请一个数字证书,比如生产企业的数字证书举例为{ABC工厂,上游节点,2021年1月3日,ABC工厂的公钥 ,…,发证中
心的签名},每个节点都可以通过企业名称查找到其公钥,也可以通过公钥查找企业名称。
对于一些所处网络环境较差的中间物流节点,其预先下载所有参与方的证书,而不用每次
都向授权中心通过网络请求获取。
[0055] ABC工厂将合法的EPC码写入待流通物品的RFID标签内,在区块链网络内创建以该EPC码为索引的智能合约。然后其根据实际业务需求,确定将本商品发往EDF物流站;然后向
授权中心或本地缓存的证书集合中查找EDF物流站的公钥 ,按照(公式1)生成哈希值,并
生成溯源数组的第一个元素 ,另外生成meta,其中nonce=1,对nonce签名得 ,并将自
身的公钥传入 。
[0056] ABC工厂并行进行如下操作:
[0057] 1、通过标签读写设备将 、EPC码、 写入RFID标签;
[0058] 2、调用区块链网络的函数write(),传入参数 、EPC码、 。
[0059] 函数write()的基本逻辑是判断节点是否有权限对数组E进行新增元素的操作,比如写第一个元素时,只有合约创建者有权限,后续的元素写操作都只能由数组E的最后一个
元素的公钥的所有者可写。根据业务需求,可对函数write()进行额外的准入策略控制。
[0060] 当EDF物流站收到来自ABC工厂的商品,其先读取标签内的 、数组E和元数据meta,使用 对 内的签名字段以及meta内的签名字段进行验签操作,以及进行一些业
务相关的验证操作。并根据物流实际情况,选取GHI物流站作为下一节点,从本地证书集合
中获得GHI物流站的公钥 ,然后生成 ,若标签的存储空间足够,则将 写入标签。同时,
修改meta中的nonce=2,对nonce签名得 ,并将自身的公钥传入 。
[0061] EDF物流站将货物发给GHI物流站,然后在网络质量较好的情况下,调用区块链网络的write(),传入参数 、EPC码、 。
[0062]  GHI物流站进行同样的操作,直到最后一个节点。
[0063] 通过这样的操作,溯源数组内的各个元素实际上形成了一条面向该商品的流转过程的区块链,实现了离线情况下的建链和验证过程。
[0064] 显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可
以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本
发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求
的保护范围之内。