本发明属于商品防伪验真技术领域,具体涉及一种基于基于区块链的商品防伪验真系统及方法。
背景技术:
目前主要有两种利用区块链技术实现商品防伪溯源的方法,一是将产品所有信息存储于区块链当中,二是将产品所有的中转商交易信息存储于区块当中。
将产品所有信息存储于区块链当中的方法较为常用,此方法为商品建立唯一电子身份,将商品所有数据存储在区块链当中,保证数据的安全性和可靠性。但是,将产品所有信息存储于区块链当中的方法存在以下弊端:(1)商品数据十分庞大,需要大量的存储空间,且区块链各个结点之间数据同步困难;(2)商品的信息分散存储在区块链的不同区块当中,当需要查找时需耗费时间和计算资源逐一遍历查找;(3)要将商品的所有有效数据存入区块链当中,维护成本很高;(4)用户查找信息时需等待一段时间,系统工作效率缓慢;(5)区块链中的数据无法删除。随着时间的增加,所需维护使用此种方法的系统运行的资源需求也将成倍增加。
将产品所有的中转商交易信息存储于区块当中也是目前较为常用的利用区块链技术的商品防伪验证技术,其基本原理是将商品的各项信息简化为一个个交易过程,由中转商a卖给中转商b,并记录交易信息。此种方法简化了将商品信息录入区块链的维护问题,但也仍然存在以下问题导致系统工作效率低下:(1)难以保证中间录入信息的正确性;(2)数据仍然十分庞大,需大量存储资源和计算资源维护,区块链各个结点直接数据同步任务艰巨;(3)系统工作效率缓慢,需遍历区块链;(4)区块链中的数据无法删除。随着时间的增加,所需维护使用此种方法的系统运行的资源需求也将成倍增加。
技术实现要素:
为了解决现有技术中存在的上述技术问题,本发明提供一种基于区块链的酒类商品防伪验真系统及方法,采用数字货币转移的方法作为商品已被验证过的标志,结合区块链交易技术的交易过程不可篡改性和不可破坏性,提高商品防伪验真系统的数据可靠性。
本发明是通过以下技术方案实现的:
一种基于区块链的商品防伪验真系统,包括:用户客户端模块,厂家客户端模块,业务处理服务器模块,以及区块链底层模块;其中:
所述用户客户端模块用于:接收外部输入的含有商品身份码k的商品验证请求,并将所述商品验证请求发送到所述业务处理服务器。
所述厂家客户端模块用于:接收外部输入的含有商品信息的商品录入请求,并将所述商品录入请求发送到所述业务处理服务器。
所述业务处理服务器模块用于:接收并处理来自所述用户客户端模块的商品验证请求和所述厂家客户端模块的商品录入请求。
对所述商品验证请求的处理过程具体为:在所述商品验证请求中提取相应的商品身份码k,将所述商品身份码k发送给所述区块链底层模块进行验证,再将所述区块链底层模块反馈的验证结果发送给所述用户客户端模块。
对所述商品录入请求的处理过程具体为:根据所述商品录入请求中的商品信息生成相应的商品身份码k,将所述商品身份码k发送给所述区块链底层模块进行录入,再将所述区块链底层模块反馈的录入结果发送给所述厂家客户端模块。
所述区块链底层模块由基于联盟链的多个服务器组成,具体包括:p2p通信子模块、数字账户记录与验证子模块、交易记录子模块和账户余额查询子模块,其中:
所述p2p通信子模块用于:实现所述区块链底层模块与所述业务处理服务器模块之间的通信。
所述数字账户记录与验证子模块用于:接收并处理需要录入或验证的所述商品身份码k,执行相应的录入或验证操作。
录入操作具体为:验证所述商品身份码k是否有效并判断该数字身份来源于哪个厂家,若所述商品身份码k无效,则不做处理;若该所述商品身份码k有效,则以所述商品身份码k为标识创建一个商品账户a,同时生成一个与所述商品账户a一一对应的数字货币c,并调用所述交易记录子模块生成一条新的交易记录,所述交易记录为将所述数字货币c生成并转移到商品账户a中的记录信息。
验证操作具体为:调用所述账户余额查询子模块查找所述商品身份码k对应的商品账户a的数字货币c的数量,若所述数字货币c数量为0,则说明所述商品身份码k对应的商品已被验证过,记录验证结果;若所述商品身份码k对应账户的数字货币c的数量不为0,则说明所述商品身份码k对应的商品未被验证过,记录验证结果并调用所述交易记录子模块生成一条新的交易记录,将该所述商品身份码k对应的商品的账户中拥有的数字货币转移到所述公共账户p中,此时所述商品身份码k对应的商品的账户中拥有的数字货币为0;若查找不到对应的商品账户a,则说明所述商品身份码k对应的商品是伪造的,记录验证结果。
其中,所述商品账户a采用utxo模型。
所述交易记录子模块用于:在区块链底层存储交易记录;每一条所述交易记录均包括交易输入和交易输出。
所述账户余额查询子模块用于:查询某商品账户当前余额。
利用商品防伪验真系统实现商品防伪验真方法,包括如下步骤:
利用所述用户客户端模块接收外部输入的含有商品身份码k的商品验证请求,并将所述商品验证请求发送到所述业务处理服务器;
利用所述业务处理服务器模块接收并处理来自所述用户客户端模块的商品验证请求:在所述商品验证请求中提取相应的商品身份码k,将所述商品身份码k发送给所述区块链底层模块;
利用所述区块链底层模块接收并处理需要验证的所述商品身份码k,执行相应的验证操作;所述验证操作具体为:调用所述账户余额查询子模块查找所述商品身份码k对应的商品账户a的数字货币c的数量,若所述数字货币c数量为0,则说明所述商品身份码k对应的商品已被验证过,记录验证结果;若所述商品身份码k对应账户的数字货币c的数量不为0,则说明所述商品身份码k对应的商品未被验证过,记录验证结果并调用所述交易记录子模块生成一条新的交易记录,将该所述商品身份码k对应的商品的账户中拥有的数字货币转移到所述公共账户p中,此时所述商品身份码k对应的商品的账户中拥有的数字货币为0;若查找不到对应的商品账户a,则说明所述商品身份码k对应的商品是伪造的,记录验证结果;将所述验证结果发送给所述业务处理服务器模块;利用所述业务处理服务器模块将所述区块链底层模块反馈的验证结果发送给所述用户客户端模块。
将商品账户a的录入方法具体包括如下步骤:
利用所述厂家客户端模块接收外部输入的含有商品信息的商品录入请求,并将所述商品录入请求发送到所述业务处理服务器;
利用所述业务处理服务器模块接收并处理来自所述厂家客户端模块的商品录入请求:根据所述商品录入请求中的商品信息生成相应的商品身份码k,将所述商品身份码k发送给所述区块链底层模块;
利用所述区块链底层模块验证所述商品身份码k是否有效并判断该数字身份来源于哪个厂家,若所述商品身份码k无效,则不做处理;若该所述商品身份码k有效,则以所述商品身份码k为标识创建一个商品账户a,同时生成一个与所述商品账户a一一对应的数字货币c,并调用所述交易记录子模块生成一条新的交易记录,所述交易记录为将所述数字货币c生成并转移到商品账户a中的记录信息;再将录入结果发送给所述业务处理服务器模块;
利用所述业务处理服务器模块将所述区块链底层模块反馈的录入结果发送给所述厂家客户端模块。
本发明相对于现有技术的有益效果在于:
(1)本发明提出的商品防伪验真方法采用数字货币转移的方法作为商品已被使用过的标志,使用utxo模型记录商品数字账户是否被验证,有效克服了现有基于区块链的商品防伪系统存储的数据量过大的问题,采用此方法大大提高系统的运行和执行效率,降低了系统对资源的需求。
(2)本发明提出的商品防伪验真方法在数字货币账户方面,即区块链底层记录的商品对应的账户,采用的是utxo模型,从底层机制上保障了同一个酒永远无法被两次验证,同时确保了即便是酒的生产厂家也无法篡改数据。
3、本发明提出的方法采用数字货币账户和utxo模型,在验证真假的同时,使用将交易入链的方式实现了数字货币从酒的账户转移到公共账户,方便在应用该方法时对酒的数据进行统计和分析,使得方法的可扩展性大大提高。同时utxo模型能够从规避“双花”问题的角度很好地杜绝了一个酒被验证两次的可能,即一个身份码只可验证一次。
4、本发明考虑到普通用户无法也无需参与商品信息的维护和存储,提出的方法采用区块链当中联盟链的形式,使得普通用户无需花费大量资源,仅用手机的扫一扫功能就可使用基于区块链的酒类商品防伪验真系统。
5、本发明无需依赖商品中转站的信息维护和其他的设备就可实现对商品的防伪保护。无需在中转站对商品的中转信息进行录入,只需要给每个商品配置一个电子身份并在生产时将该商品的身份标识与商品包装在一起。这大大降低了产品防伪的成本。
附图说明
图1是本发明基于区块链的商品防伪验真系统的结构示意图。
图2是本发明基于区块链的商品防伪验真方法的总流程图。
图3是本发明向系统中录入商品信息的方法的总流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
实施例1:
如图1所示,一种基于区块链的商品防伪验真系统,包括:用户客户端模块1,厂家客户端模块2,业务处理服务器模块3,以及区块链底层模块4;其中:
所述用户客户端模块1用于:接收外部输入的含有商品身份码k的商品验证请求,并将所述商品验证请求发送到所述业务处理服务器。
在实际应用中,商品身份码k可以选用条形码、二维码、rfid、nfc等形式,也可以采取跟商品本身特征相匹配的其他表现形式。该身份码是通过密码学算法加密之后生成的,原始信息里面包含了产品的品牌、品类、生产日期、内部编号等内容,但是一旦经过加密算法处理之后,就变成可验证但不可回复单向信息了。所以在这个身份码中,并不能直接看到对应的商品的信息。
用户客户端模块1可以采用手机、平板电脑等移动终端的微信小程序或app等形式,为用户提供商品真伪查询界面,并通过互联网实现用户客户端模块1与业务处理服务器模块3之间的通信交互。
所述厂家客户端模块2用于:接收外部输入的含有商品信息的商品录入请求,并将所述商品录入请求发送到所述业务处理服务器。
厂家客户端模块2可以采用电脑、手机、平板电脑等终端设备的网页、客户端程序、微信小程序或app等形式,为厂家提供商品信息录入界面,并通过互联网实现厂家客户端模块2与业务处理服务器模块3之间的通信交互。
所述业务处理服务器模块3用于:接收并处理来自所述用户客户端模块1的商品验证请求和所述厂家客户端模块2的商品录入请求。
对所述商品验证请求的处理过程具体为:在所述商品验证请求中提取相应的商品身份码k,将所述商品身份码k发送给所述区块链底层模块4进行验证,再将所述区块链底层模块4反馈的验证结果发送给所述用户客户端模块1。
对所述商品录入请求的处理过程具体为:根据所述商品录入请求中的商品信息生成相应的商品身份码k,将所述商品身份码k发送给所述区块链底层模块4进行录入,再将所述区块链底层模块4反馈的录入结果发送给所述厂家客户端模块2。
录入的商品信息最少应该包括产品的品牌、品类、生产日期、内部编号等内容;生成身份码的方式主要就是前面一个专利描述的方法。这种生成产品身份码的方法,可以广泛的适用于其他领域的产品。单纯就身份码生成算法来说,对于产品的信息没有格式或者内容方面的要求。
所述区块链底层模块4由基于联盟链的多个服务器组成,具体包括:p2p通信子模块、数字账户记录与验证子模块、交易记录子模块和账户余额查询子模块,其中:
所述p2p通信子模块用于:实现所述区块链底层模块4与所述业务处理服务器模块3之间的通信。
所述数字账户记录与验证子模块用于:接收并处理需要录入或验证的所述商品身份码k,执行相应的录入或验证操作。
录入操作具体为:验证所述商品身份码k是否有效并判断该数字身份来源于哪个厂家,若所述商品身份码k无效(有效是指这个身份码k是指由本发明的系统生成的身份码,无效的含义是这个身份码是指非由本发明的系统生成的身份码),则不做处理;若该所述商品身份码k有效,则以所述商品身份码k为标识创建一个商品账户a,同时生成一个与所述商品账户a一一对应的数字货币c,并调用所述交易记录子模块生成一条新的交易记录,所述交易记录为将所述数字货币c生成并转移到商品账户a中的记录信息。
验证操作具体为:调用所述账户余额查询子模块查找所述商品身份码k对应的商品账户a的数字货币c的数量,若所述数字货币c数量为0,则说明所述商品身份码k对应的商品已被验证过,记录验证结果;若所述商品身份码k对应账户的数字货币c的数量不为0,则说明所述商品身份码k对应的商品未被验证过,记录验证结果并调用所述交易记录子模块生成一条新的交易记录,将该所述商品身份码k对应的商品的账户中拥有的数字货币转移到所述公共账户p中,此时所述商品身份码k对应的商品的账户中拥有的数字货币为0;若查找不到对应的商品账户a,则说明所述商品身份码k对应的商品是伪造的,记录验证结果。
其中,所述商品账户a采用utxo模型。
所述交易记录子模块用于:在区块链底层存储交易记录;每一条所述交易记录均包括交易输入和交易输出。
所述账户余额查询子模块用于:查询某商品账户当前余额。
本发明中的公共账户p是系统为所有的买家建立的一个统一账户,每一个用户的账户都属于这个公共账户的下一级子账户。通俗的说:张三买了一瓶酒,扫码验证了真伪,酒是真的,这时候扫码的过程,也就是数字货币从酒账户转账到张三账户的过程。其实,每一个买家并没有在区块链上有账户,系统平台在区块链上有一个统一的账户,扫码转账的过程其实是从酒账户到平台账户,平台通过上层的应用系统把这笔帐记在了张三的名下。这样一来,什么人在什么时候消费了这个产品,系统平台就都知道了,便于厂家了解终端客户的各种信息,用于指导自己的研发和生产。
实施例2:
如图2所示,基于实施例1提供的商品防伪验真系统实现的商品防伪验真方法,包括如下步骤:
步骤s101,利用所述用户客户端模块1接收外部输入的含有商品身份码k的商品验证请求,并将所述商品验证请求发送到所述业务处理服务器。
步骤s102,利用所述业务处理服务器模块3接收并处理来自所述用户客户端模块1的商品验证请求:在所述商品验证请求中提取相应的商品身份码k,将所述商品身份码k发送给所述区块链底层模块4。
步骤s103,利用所述区块链底层模块4接收并处理需要验证的所述商品身份码k,执行相应的验证操作;所述验证操作具体为:调用所述账户余额查询子模块查找所述商品身份码k对应的商品账户a的数字货币c的数量,若所述数字货币c数量为0,则说明所述商品身份码k对应的商品已被验证过,记录验证结果;若所述商品身份码k对应账户的数字货币c的数量不为0,则说明所述商品身份码k对应的商品未被验证过,记录验证结果并调用所述交易记录子模块生成一条新的交易记录,将该所述商品身份码k对应的商品的账户中拥有的数字货币转移到所述公共账户p中,此时所述商品身份码k对应的商品的账户中拥有的数字货币为0;若查找不到对应的商品账户a,则说明所述商品身份码k对应的商品是伪造的,记录验证结果;将所述验证结果发送给所述业务处理服务器模块3。
步骤s104,利用所述业务处理服务器模块3将所述区块链底层模块4反馈的验证结果发送给所述用户客户端模块1。
如图3所示,在本实施例提供的防伪验真方法中,厂家向系统中录入商品信息的方法,即所述商品账户a的录入方法具体包括如下步骤:
步骤s201,利用所述厂家客户端模块2接收外部输入的含有商品信息的商品录入请求,并将所述商品录入请求发送到所述业务处理服务器。
步骤s202,利用所述业务处理服务器模块3接收并处理来自所述厂家客户端模块2的商品录入请求:根据所述商品录入请求中的商品信息生成相应的商品身份码k,将所述商品身份码k发送给所述区块链底层模块4。
步骤s203,利用所述区块链底层模块4验证所述商品身份码k是否有效并判断该数字身份来源于哪个厂家,若所述商品身份码k无效,则不做处理;若该所述商品身份码k有效,则以所述商品身份码k为标识创建一个商品账户a,同时生成一个与所述商品账户a一一对应的数字货币c,并调用所述交易记录子模块生成一条新的交易记录,所述交易记录为将所述数字货币c生成并转移到商品账户a中的记录信息;再将录入结果发送给所述业务处理服务器模块3。
步骤s204,利用所述业务处理服务器模块3将所述区块链底层模块4反馈的录入结果发送给所述厂家客户端模块2。
本实施例提供的商品防伪验真方法是与实施例1的商品防伪验真系统相对应的商品防伪验真方法,其相应的工作原理和工作流程与实施例1基本相同,在此不再赘述。
本领域的技术人员容易理解,以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。