首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

一种应用于区块链的可消耗凭证的验证方法和装置 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:深圳前海微众银行股份有限公司

摘要:本发明实施例涉及科技金融Fintech领域,尤其是涉及一种应用于区块链的可消耗凭证的验证方法和装置,所述方法包括:核销方获取用户提供的用以核销的凭证;所述凭证中记录有已生效的各次核销记录;所述核销方从区块链上获取所述凭证的核销登记,所述核销登记中记录有第一哈希Hash值;所述第一Hash值是所述凭证在上一次核销后根据所有已生效的核销记录生成的;所述核销方根据所述凭证中的已生效的各次核销记录生成第二Hash值;所述核销方在确认所述第一Hash值和所述第二Hash值一致时,确定所述凭证可用于核销。

主权项:1.一种应用于区块链的可消耗凭证的验证方法,其特征在于,包括:核销方获取用户提供的用以核销的凭证;所述凭证中记录有已生效的各次核销记录;所述核销方从区块链上获取所述凭证的核销登记,所述核销登记中记录有第一Hash值;所述第一Hash值是所述凭证在上一次核销后根据所有已生效的核销记录生成的;所述核销方根据所述凭证中的已生效的各次核销记录生成第二Hash值;所述核销方在确认所述第一Hash值和所述第二Hash值一致时,确定所述凭证可用于核销;所述核销方生成核销请求对应的核销方记录,并将所述核销方记录发送至所述用户,获取所述用户返回的用户方记录,根据所述核销方记录和所述用户方记录确定所述核销请求对应的核销记录,根据所述凭证中的已生效的各次核销记录和所述核销请求对应的核销记录,生成第三Hash值;所述核销方更新所述区块链中所述凭证的核销登记中的第一Hash值为所述第三Hash值。

全文数据:一种应用于区块链的可消耗凭证的验证方法和装置技术领域本发明实施例涉及科技金融Fintech领域,尤其是涉及一种应用于区块链的可消耗凭证的验证方法和装置。背景技术随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技Finteh转变,区块链Blockchain技术也不例外,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。传统的可消耗凭证方案需要中心化的服务端,常有“发券后改规则”的道德诟病。区块链是一种全民参与记账的方式,具有去中心化和去信任的特点。区块链最重要的是解决了中介信用问题。在过去,两个互不认识和信任的人要达成协作是难的,必须要依靠第三方。比如支付行为,在过去任何一种转账,必须要有银行或者支付宝这样的机构存在。但是通过区块链技术,比特币是人类第一次实现在没有任何中介机构参与的情况下,完成双方可以互信的转账行为,这是区块链的重大突破,也因此区块链越来越受到人们的关注。在区块链使用的过程中,对可消耗凭证如优惠券、处方、门票的分布式核销是区块链行业的一个热点。但是目前的验证过程仍存在诸多问题导致验证困难。发明内容本发明提供一种应用于区块链的可消耗凭证方法和装置,用以解决现有技术中凭证的核销请求不可信安全性低的问题。本发明实施例提供一种应用于区块链的可消耗凭证的验证方法,包括:核销方获取用户提供的用以核销的凭证;所述凭证中记录有已生效的各次核销记录;所述核销方从区块链上获取所述凭证的核销登记,所述核销登记中记录有第一哈希Hash值;所述第一Hash值是所述凭证在上一次核销后根据所有已生效的核销记录生成的;所述核销方根据所述凭证中的已生效的各次核销记录生成第二Hash值;所述核销方在确认所述第一Hash值和所述第二Hash值一致时,确定所述凭证可用于核销。一种可能的实现方式,所述核销记录中还包括上一次核销的核销方对所述第一Hash值进行签名的核销签名;所述核销方在确认所述第一Hash值和所述第二Hash值一致时,确定所述凭证可用于核销,包括:所述核销方从所述凭证中获取上一次核销的核销记录;所述核销方根据所述上一次核销的核销记录中的核销机构信息对所述核销签名进行验证;所述核销方在确认所述第一Hash值和所述第二Hash值一致且所述核销签名验证通过时,确定所述凭证可用于核销。一种可能的实现方式,所述核销方确定所述凭证可用于核销之后,还包括:所述核销方向所述用户返回针对所述凭证的锁定请求;所述锁定请求用于所述用户生成锁定签名并将所述锁定签名上传至所述区块链;所述锁定签名用于指示所述区块链将所述核销登记中的锁定状态设置为锁定态并在所述核销登记中记录所述锁定签名;所述核销方接收所述用户发送的锁定成功响应;所述锁定成功响应用于触发所述核销方进行核销。一种可能的实现方式,所述核销方接收所述用户发送的锁定成功响应后,还包括:所述核销方验证所述锁定签名合法后,生成所述核销请求对应的核销方记录;所述核销方将所述核销方记录发送至所述用户;所述核销方获取所述用户返回的用户方记录;所述核销方根据所述核销方记录和所述用户方记录确定所述核销请求对应的核销记录;所述核销方根据所述凭证中的已生效的各次核销记录和所述核销请求对应的核销记录,生成第三Hash值;所述核销方更新所述区块链中所述凭证的核销登记中的第一Hash值为所述第三Hash值。一种可能的实现方式,所述方法还包括:所述核销方将所述凭证的写入状态修改为解锁,并将所述锁定签名写入区块链;所述核销方向所述用户返回核销成功的响应。一种可能的实现方式,所述核销方将区块链上的所述第一Hash值,更新为所述第三Hash值之前,还包括:所述核销方查询所述区块链上所述凭证的写入状态;若确定所述写入状态为解锁,则向所述用户返回重新锁定的指令,并将所述凭证中的所述第二核销记录删除后,返回至所述用户。一种可能的实现方式,所述核销方从区块链上获取所述凭证的核销登记之前,还包括:所述核销方获取所述用户发送所述凭证的核销请求;所述凭证的核销请求包括所述凭证的属性签名及核销次数;所述核销方根据所述凭证,确定所述凭证的剩余可用次数;所述核销方验证所述核销请求的核销次数是否小于或等于所述凭证的剩余可用次数;所述核销方从区块链获取所述凭证的发行方的公钥,验证所述凭证的属性签名是否合法。一种可能的实现方式,所述方法还包括:所述核销方向所述用户发送所述凭证的核销请求的校验值;所述校验值用于所述核销方生成所述核销请求的核销记录并为所述用户验证所述核销方生成的所述核销记录。本发明实施例提供一种应用于区块链的可消耗凭证的验证装置,包括:收发单元,用于获取用户提供的用以核销的凭证;所述凭证中记录有已生效的各次核销记录;从区块链上获取所述凭证的核销登记,所述核销登记中记录有第一哈希Hash值;所述第一Hash值是所述凭证在上一次核销后根据所有已生效的核销记录生成的;处理单元,用于根据所述凭证中的已生效的各次核销记录生成第二Hash值;在确认所述第一Hash值和所述第二Hash值一致时,确定所述凭证可用于核销。一种可能的实现方式,所述核销记录中还包括上一次核销的核销方对所述第一Hash值进行签名的核销签名;所述处理单元,用于:从所述凭证中获取上一次核销的核销记录;根据所述上一次核销的核销记录中的核销机构信息对所述核销签名进行验证;在确认所述第一Hash值和所述第二Hash值一致且所述核销签名验证通过时,确定所述凭证可用于核销。一种可能的实现方式,所述收发单元,还用于:向所述用户返回针对所述凭证的锁定请求;所述锁定请求用于所述用户生成锁定签名并将所述锁定签名上传至所述区块链;所述锁定签名用于指示所述区块链将所述核销登记中的锁定状态设置为锁定态并在所述核销登记中记录所述锁定签名;接收所述用户发送的锁定成功响应;所述锁定成功响应用于触发所述核销方进行核销。一种可能的实现方式,所述收发单元,还用于:将所述核销方记录发送至所述用户;获取所述用户返回的用户方记录;所述处理单元,还用于:验证所述锁定签名合法后,生成所述核销请求对应的核销方记录;根据所述核销方记录和所述用户方记录确定所述核销请求对应的核销记录;根据所述凭证中的已生效的各次核销记录和所述核销请求对应的核销记录,生成第三Hash值;更新所述区块链中所述凭证的核销登记中的第一Hash值为所述第三Hash值。一种可能的实现方式,所述处理单元,还用于:将所述凭证的写入状态修改为解锁,并将所述锁定签名写入区块链;向所述用户返回核销成功的响应。一种可能的实现方式,所述处理单元,用于:查询所述区块链上所述凭证的写入状态;若确定所述写入状态为解锁,则向所述用户返回重新锁定的指令,并将所述凭证中的所述第二核销记录删除后,返回至所述用户。一种可能的实现方式,所述收发单元,用于:获取所述用户发送所述凭证的核销请求;所述凭证的核销请求包括所述凭证的属性签名及核销次数;所述处理单元,用于:验证所述核销请求的核销次数是否小于或等于所述凭证的可用次数;所述核销方从区块链获取所述凭证的发行方的公钥,验证所述凭证的属性签名是否合法后,返回所述凭证的核销请求的验证结果。一种可能的实现方式,所述处理单元,用于:向所述用户发送所述凭证的核销请求的校验值;所述校验值用于所述核销方生成所述核销请求的核销记录并为所述用户验证所述核销方生成的所述核销记录。本发明实施例提供一种计算机存储介质,所述计算机可读存储介质包括计算机程序,当计算机程序在计算机上运行时,使得所述计算机执行上述实施例中任一项所述的方法。本发明实施例提供一种包含指令的计算机程序产品,当所述指令在计算机上运行时,使得所述计算机执行如上述实施例任一项所述的方法。本发明实施例中,核销方通过在区块链上核销登记中的Hash值和凭证中的核销记录序列化之后生成的Hash值进行对比,验证可消耗凭证的核销记录是否被篡改过。只有在核销的时候才需要上链,且区块链上不暴露任何隐私数据,提高了验证效率。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1a为本发明实施例提供的一种系统架构示意图;图1b为本发明实施例提供的一种系统架构示意图;图2为本发明实施例提供的一种可消耗凭证方法的流程示意图;图3为本发明实施例提供的一种可消耗凭证装置的结构示意图;图4为本发明实施例提供的一种计算机设备的结构示意图。具体实施方式为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。核销方:这一角色用来描述了有权限将凭证核销的机构。其他机构可能会向核销方申请核销凭证。发行方:这一角色用来描述了有权限生成凭证,并向用户发行的机构。用户:这一角色可以获得发行方发送的凭证,并可以向核销方申请核销凭证的需求。区块链:所有参与方都具有区块链的读写访问能力,其中,参与方可以为核销方、发行方和用户等具有区块链账户的对象。区块block:用于记录按照一定条件划分出的数据集合和状态结果,是在各个节点达成共识之后形成的,在本发明实施例中,需要记录的数据主要是数据,或者用户的数据变化后的履历更新信息。具体的,区块可以是以时间进行划分,例如每间隔10秒s产生一个区块,那么这个区块即是记录这10s内的所有数据,或者每间隔一天产生一个区块,那么这个区块即是记录这一天内的所有数据;或者,区块还可以是根据接收到的数据或者履历更新信息的数量进行划分,例如,在接收到指定数量的数据或者履历更新信息之后,生成一个区块,那么这个区块即是用于记录已接收到的指定数量的数据更新信息,当然,本发明实施例对区块具体的划分方式并不进行限制。一个区块包括区块头和区块体。其中,区块头中包括前一区块地址Prev-block,前一区块地址在区块头中可以通过前一区块哈希码pre-Hash的形式进行存储,通过前一区块地址的指向将所有的区块串联起来,进而形成一条区块链。区块体中则用于存储具体的数据,例如本发明实施例中的数据。区块链blockchain:或称分布式数据记录账本,是一种按照一定顺序将存储数据的区块以顺序相连的方式组合成的一种链式数据结构。将区块按照顺序串联起来在而形成了一条区块链。节点:指区块链网络中参与数据的记录或者验证等处理过程的计算设备,例如计算机、手机、矿机、台式机或者服务器等拥有计算能力的设备均可作为区块链网络中的节点。另外,本文中术语“和或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“”,在不做特别说明的情况下,一般表示前后关联对象是一种“或”的关系。为了利于对本发明实施例的技术方案的理解,下面介绍区块链的原理。在区块链技术中,网络中的任意一个设备都可以作为区块链的一个节点,并且可以参与到区块链的记录和存储中,节点间基于共识机制,通过竞争计算共同维护整个区块链。由于任一节点都可以拥有一份完整的区块链的数据拷贝,因而任一节点失效,其余节点仍能够正常进行工作,从而基于区块链存储的方式可靠性高。此外,由于在区块链技术中心通过众多的节点来共同维护整个区块链,每个节点所拥有的权限可以是相同的,因而并不存在中心化的设备或者管理机构。区块链中所有的数据信息都是公开透明的,单个节点甚至多个节点对自身数据的修改无法影响到其他节点的数据,除非能够控制整个区块链网络中超过一半的节点都进行修改,但是这种方式难度太大,并且区块链中的每一个区块都与前后的两个区块进行关联,要想篡改一个区块的数据,就需要篡改与之相关的多个区块的数据,难度较大,从而基于区块链存储的数据具有不可篡改性。哈希Hash值:对某种字符串生成哈希映射值的算法,例如sha3。可消耗凭证:可以是电子化证件,使用次数有限,每次核销之时会消耗,用尽便失效。常见的可消耗凭证可以为处方、优惠券、门票等。传统的可消耗凭证方案需要中心化的服务端,常有“发券后改规则”的道德诟病。对此,核销方可以将凭证生成Hash值存证放在区块链上公示。图1a示例性示出了本发明实施例适用的一种系统架构示意图,如图1a所示,本发明实施例适用的系统架构包括用户101,核销方102,发行方103,和区块链网络104。其中,凭证发行方103用于发行可消耗凭证给用户。凭证持有方用户101:作为持有方,用户可以通过向核销方出示凭证进行凭证的消费。凭证核销方,可以为商户等角色,此角色可以核销用户提供的凭证并为用户提供服务。用户101向核销方发送凭证的核销请求;核销方与区块链网络相连,给区块链网络发送需上链的数据;用户与区块链网络相连,验证核销方返回的响应数据。区块链网络中的节点可以为记账节点或者普通节点。核销方、发行方、用户等每个参与方机构使用约定的非对称加密算法,如ECDSA生成自己的公私钥对;将私钥存储到自己的私有数据库里,再将公钥上链。如图1b所示,机构A将自己的公钥A发布至区块链上,机构B将自己的公钥B发布至区块链上。针对现有的凭证的核销,需要将可消耗凭证抽象成区块链上的凭证Token,进而凭证的发行、凭证的核销的整个生命周期都在链上。然而,这种做法效率很低:商家每天可能会发送数以百万计的优惠券,对其全部通证化会对区块链造成巨大的负担。基于上述问题,本发明实施例提供一种应用于区块链的可消耗凭证方法,包括:步骤一、凭证发行方为用户生成凭证,并将凭证发送给用户。在一种具体的实施例中,校验值可以为一长度不定的字符串。一种可能的实现方式,一个可消耗凭证的格式可以用一个json字符串来表示,其属性项可以包括以下字段,如表1所示:KeyValue发行方发行方链上地址发行时间及有效期发行时间及有效期IDUUID字符串接收方接收方链上地址内容发行方自行确定的业务数据最大可用次数凭证的最大可使用次数签名发行方生成的签名核销记录集多条凭证核销记录的集合,创建时刻为空表1其中,发行方自行确定的业务数据可以为“满50-25”,“10元观影”,“处方”等数据,在此不做限定。发行方生成的签名可以为发行方根据凭证中的属性信息为原文生成的,例如,可以根据不包括核销记录的其他内容为原文。在具体实施过程中,发行方可以使用自己的私钥对凭证的所有属性项序列化后字符串生成签名。核销机构或用户可以通过发行方公布在区块链上的公钥,对此签名值进行验证。接收方可以为用户,即发行方将凭证生成完毕后,将该凭证发送至用户,也可以通过第三方发送至用户,在此不做限定。一种可能的实现方式,核销记录集可以为嵌套在可消耗凭证的json里的另一个json字符串,在凭证的创建时为空。在凭证有核销记录后,核销记录集中可能包括多条核销记录,每条核销记录格式,可以为序列化,即将一个表的内容按照“Key:Value”转化成一串字符串的方式。如表2所示,包括以下字段:KeyValue核销时间核销时间核销机构核销机构链上地址剩余使用次数本次所核销后的剩余使用次数校验值核销随机值核销用户签名用户生成的签名核销机构签名核销机构生成的签名表2需要说明的是,每次的核销记录需要有用户和核销机构的共同签名,这是为了保证双方都通过数字签名的方式来确认凭证的合法使用。核销用户签名可以是用户根据该条核销记录为原文生成的签名,核销机构签名可以是核销机构根据该条核销记录为原文生成的签名。具体的,可以核销用户签名可以是用户根据自己的私钥,以核销时间,核销机构,剩余次数,校验值为原文生成的签名。一种可能的实现方式,所述校验值用于所述核销方生成所述核销请求的核销记录并为所述用户验证所述核销方生成的所述核销记录。校验值可以为一个不指定长度的字符串,用于数字签名算法的输入参数之一。在用户或核销方进行验证核销记录对应的签名时,需要同时提供此校验值。这提供了数字签名的抗重放攻击能力,使得签名只有在指定的用户和核销方之间交换校验值的情况下才可以被正确验证。步骤二、用户向核销方发送所述凭证的核销请求。在具体实施过程中,所述凭证的核销请求包括所述凭证及核销次数。在具体实施过程中,可以包括:核销方根据所述凭证验证所述核销请求的核销次数是否小于或等于所述凭证的剩余可用次数;具体的,所述核销方根据所述核销次数与所述凭证中的最大可用次数及最后一次写入的核销记录,确认所述凭证的剩余可用次数,确定所述核销方从区块链获取所述凭证的发行方的公钥,验证所述凭证的属性签名是否合法。如图2所示,本发明实施例提供一种应用于区块链的可消耗凭证的验证方法,包括:步骤201:核销方获取用户提供的用以核销的凭证;所述凭证中记录有已生效的各次核销记录;步骤202:核销方从区块链上获取所述凭证的核销登记,所述核销登记中记录有第一哈希Hash值;所述第一Hash值是所述凭证在上一次核销后根据所有已生效的核销记录生成的;为了防止用户篡改凭证的核销记录或直接删掉其内容,在链上,需要存储每个凭证的核销记录。一种可能的实现方式,可以针对每个凭证建立该凭证的核销登记。在具体实施过程中,可以通过序列化字段进行存储,如表3所示,凭证的核销登记包括第一Hash值。表3为加强验证效果,一种可能的实现方式,所述核销记录中还包括上一次核销的核销方对所述第一Hash值进行签名的核销签名。该核销签名可以为根据Hash值及最后一层核销方生成的核销记录的校验值为原文生成的签名。步骤203:核销方根据所述凭证中的已生效的各次核销记录生成第二Hash值;步骤204:核销方在确认所述第一Hash值和所述第二Hash值一致时,确定所述凭证可用于核销。本发明实施例中,凭证在核销的时候才需要上链,且链上只存储凭证最新状态、核销记录的Hash值及签名,有效保证了凭证验证的效率和安全性。核销方验证凭证的核销记录是否被篡改过,一种可能的实现方式,包括:核销方从所述凭证中获取上一次核销的核销记录;核销方根据所述上一次核销的核销记录中的核销机构信息对所述核销签名进行验证;核销方在确认所述第一Hash值和所述第二Hash值一致且所述核销签名验证通过时,确定所述凭证可用于核销。在具体实施过程中,核销方会在链上核销登记中的Hash和凭证的核销记录序列化之后生成的Hash值进行对比。如果核销记录不为空且第一Hash值和所述第二Hash值一致,则进一步,从链上获取最后一次核销方的公钥,以第一Hash值为原文,验证核销签名是否合法。如果这两者任一不合法,返回失败。进一步的,核销方可以验证凭证的内容,及签名的合法性。一种可能的实现方式,可以根据凭证发行方的地址,从链上获取发行方的公钥,然后以凭证所有属性,序列化后的字符串为原文,验证签名是否合法。如果不合法,返回失败。进一步的,为进一步验证凭证的合法性,核销方根据所提供凭证中的核销记录集合是否为空进入:如果核销记录集合不为空,则对凭证中的每条核销记录,从区块链上获取核销机构公钥及用户公钥,然后依次验证核销机构签名、核销用户签名是否合法。如果有任何一条核销记录中的任何签名不合法,返回失败。否则进入下一步。如果核销记录集合为空,则确定该凭证还未曾被核销,且区块链上也没有该凭证的核销登记。此时,在链上的核销登记中为此凭证新增一条核销登记的记录并填入凭证的ID或是为该凭证生成的核销登记的ID。为避免一张凭证在多个商户处同时消费成功的行为,即双花。本发明实施例中,可以采用智能合约,对核销进行事务性加锁,保证不论是凭证的持有方还是核销方都不存在进行双花攻击的可能。为避免双花,一种可能的实现方式,所述核销方确定所述凭证可用于核销之后,还包括:所述核销方向所述用户返回针对所述凭证的锁定请求;所述锁定请求用于所述用户生成锁定签名并将所述锁定签名上传至所述区块链;所述锁定签名用于指示所述区块链将所述核销登记中的锁定状态设置为锁定态并在所述核销登记中记录所述锁定签名;为避免双花,提高验证的安全性,可以在发送锁定请求的同时,向所述用户发送所述凭证的核销请求的校验值;所述校验值可以用于用户根据所述校验值生成锁定签名,以唯一标识本次核销,以便核销方获取到用户发送的锁定成功响应后,触发核销流程。所述核销方接收所述用户发送的锁定成功响应;所述锁定成功响应用于触发所述核销方进行核销。具体的,用户以核销登记中的Hash及校验值作为原文,用自己的私钥生成锁定签名。用户修改核销登记中该凭证的对应表项,将锁定状态设为Y,并附上锁定签名。结合上述实施例,凭证的核销登记中可以存储有锁定状态及锁定签名。在具体实施过程中,可以通过序列化字段进行存储,如表4所示:表4在具体实施过程中,核销方在区块链中,检查该凭证登记中,是否正在处于锁定状态。如果当前此凭证已经被锁定了,则同样返回失败。一种可能的实现方式,可以包括:步骤一、所述核销方验证所述锁定签名合法后,生成所述核销请求对应的核销方记录;在具体实施过程中,用户通知核销方锁定流程已经完成,可以开始核销;核销方从凭证状态表中找到对应的凭证ID的属性项,及所述核销请求对应生成的校验值,从链上获取用户的公钥,检查凭证是否已经被正确的锁定,且签名是否合法。如果未锁定或签名不合法,返回失败。核销方根据凭证的核销记录集,生成核销方记录,核销方记录中包括剩余次数、核销机构地址、核销时间、校验值等。进一步的,核销方还可以在核销方记录中写入核销机构签名,具体的,可以以核销时间、核销机构地址、剩余次数、校验值一起作为原文,用自身的私钥生成签名,填入核销方记录的“核销机构签名”项中。步骤二、核销方将所述核销方记录发送至所述用户;具体的,核销方将核销记录发给用户,要求用户确认实施核销方记录,并签名。步骤三、核销方获取所述用户返回的用户方记录;具体的,用户从链上获取核销机构公钥,验证核销机构签名是否合法。如果不合法,或核销内容存在错误,则要求核销机构重新生成核销方记录。否则,用户认可核销机构签名,并用自身的私钥生成签名,填入核销记录的“核销用户签名”项中。签名的原文可以为与核销机构签名相同的原文,也可以为不同的原文,在此不做限定。步骤四、核销方根据所述核销方记录和所述用户方记录确定所述核销请求对应的核销记录;核销方从链上获取用户的公钥,验证核销用户签名是否合法,如果不合法返回失败。否则,则表明一条完整的核销记录已经生成。具体的,核销方更新凭证的核销记录集,新增一条核销记录,填入核销方记录和用户方记录。可以包括:核销时间、核销机构地址、剩余次数、校验值、核销机构签名、核销用户签名。当然,更新核销记录集也可以为步骤二时即更新,核销方无需单独发生核销方记录,仅需核将更新后的凭证发送至用户。步骤五、核销方根据所述凭证中的已生效的各次核销记录和所述核销请求对应的核销记录,生成第三Hash值;步骤六、核销方更新所述区块链中所述凭证的核销登记中的第一Hash值为所述第三Hash值。在具体实施过程中,核销方对所有核销记录进行序列化生成Hash,然后将Hash写入到链上的核销登记中与此凭证ID对应表项的“Hash值”中,同时,以Hash值为原文,用自己的私钥生成签名,写入到核销登记对应表项的“Hash签名项”中。一种可能的实现方式,所述方法还包括:核销方将所述凭证的写入状态修改为解锁,并将所述锁定签名写入区块链;核销方向所述用户返回核销成功的响应。此时,核销方可以修改核销登记中锁定状态为N,并删除锁定签名。这一步也可以由用户修改锁定状态,在此不做限定。核销方向所述用户返回核销成功的响应还可以包括向用户提供凭证对应的业务服务。一种可能的实现方式,所述核销方将区块链上的所述第一Hash值,更新为所述第三Hash值之前,还包括:所述核销方查询所述区块链上所述凭证的写入状态;若确定所述写入状态为解锁,则向所述用户返回重新锁定的指令,并将所述凭证中的所述第二核销记录删除后,返回至所述用户。如果此时核销方发现锁定状态已经不是Y了,则说明用户可能在尝试对此凭证进行双花操作。核销方可以立即终止核销流程,重新要求用户进入凭证锁定流程。需要说明的是,核销方也可以使用带权限的区块链,保证这一解锁状态只有核销方才能修改,进一步避免双花的可能,提高核销的安全性。本发明实施例中,所有凭证在核销的时候才需要上链,且链上只存储凭证最新状态、核销记录的Hash及签名;即使一个凭证有多次使用次数,也只需要一个链上记录;整个核销过程只需最多四次区块链写操作。另外,核销流程能够有效地防止用户或者核销方任意一方的双花攻击,有效保证了凭证验证的效率和安全性。基于相同的发明构思,如图3所示,本发明实施例提供一种应用于区块链的可消耗凭证的验证装置,包括:收发单元,用于获取用户提供的用以核销的凭证;所述凭证中记录有已生效的各次核销记录;从区块链上获取所述凭证的核销登记,所述核销登记中记录有第一哈希Hash值;所述第一Hash值是所述凭证在上一次核销后根据所有已生效的核销记录生成的;处理单元,用于根据所述凭证中的已生效的各次核销记录生成第二Hash值;在确认所述第一Hash值和所述第二Hash值一致时,确定所述凭证可用于核销。一种可能的实现方式,所述核销记录中还包括上一次核销的核销方对所述第一Hash值进行签名的核销签名;所述处理单元,用于:从所述凭证中获取上一次核销的核销记录;根据所述上一次核销的核销记录中的核销机构信息对所述核销签名进行验证;在确认所述第一Hash值和所述第二Hash值一致且所述核销签名验证通过时,确定所述凭证可用于核销。一种可能的实现方式,所述收发单元,还用于:向所述用户返回针对所述凭证的锁定请求;所述锁定请求用于所述用户生成锁定签名并将所述锁定签名上传至所述区块链;所述锁定签名用于指示所述区块链将所述核销登记中的锁定状态设置为锁定态并在所述核销登记中记录所述锁定签名;接收所述用户发送的锁定成功响应;所述锁定成功响应用于触发所述核销方进行核销。一种可能的实现方式,所述收发单元,还用于:将所述核销方记录发送至所述用户;获取所述用户返回的用户方记录;所述处理单元,还用于:验证所述锁定签名合法后,生成所述核销请求对应的核销方记录;根据所述核销方记录和所述用户方记录确定所述核销请求对应的核销记录;根据所述凭证中的已生效的各次核销记录和所述核销请求对应的核销记录,生成第三Hash值;更新所述区块链中所述凭证的核销登记中的第一Hash值为所述第三Hash值。一种可能的实现方式,所述处理单元,还用于:将所述凭证的写入状态修改为解锁,并将所述锁定签名写入区块链;向所述用户返回核销成功的响应。一种可能的实现方式,所述处理单元,用于:查询所述区块链上所述凭证的写入状态;若确定所述写入状态为解锁,则向所述用户返回重新锁定的指令,并将所述凭证中的所述第二核销记录删除后,返回至所述用户。一种可能的实现方式,所述收发单元,用于:获取所述用户发送所述凭证的核销请求;所述凭证的核销请求包括所述凭证的属性签名及核销次数;所述处理单元,用于:验证所述核销请求的核销次数是否小于或等于所述凭证的可用次数;所述核销方从区块链获取所述凭证的发行方的公钥,验证所述凭证的属性签名是否合法后,返回所述凭证的核销请求的验证结果。一种可能的实现方式,所述处理单元,用于:若确定所述验证结果为通过,则向所述用户发送所述凭证的核销请求的校验值;所述校验值用于所述核销方生成所述核销请求的核销记录并为所述用户验证所述核销方生成的所述核销记录。请参见图4,基于同一技术构思,本发明实施例还提供了一种计算机设备,用于执行用户或核销方在本发明任一实施例中的方法,可以包括存储器1001和处理器1002。所述存储器1001,用于存储处理器1002执行的计算机程序。存储器1001可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据计算机设备的使用所创建的数据等。处理器1002,可以是一个中央处理单元centralprocessingunit,CPU,或者为数字处理单元等等。本发明实施例中不限定上述存储器1001和处理器1002之间的具体连接介质。本发明实施例在图4中以存储器1001和处理器1002之间通过总线1003连接,总线1003在图4中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线1003可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。存储器1001可以是易失性存储器volatilememory,例如随机存取存储器random-accessmemory,RAM;存储器1001也可以是非易失性存储器non-volatilememory,例如只读存储器,快闪存储器flashmemory,硬盘harddiskdrive,HDD或固态硬盘solid-statedrive,SSD、或者存储器1001是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器1001可以是上述存储器的组合。处理器1002,用于调用所述存储器1001中存储的计算机程序时执行本发明实施例提供的基于区块链的可消耗凭证方法。本发明实施例还提供了一种计算机存储介质,存储为执行上述处理器所需执行的计算机可执行指令,其包含用于执行上述处理器所需执行的程序。在一些可能的实施方式中,本发提供的基于区块链的可消耗凭证方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在计算机设备上运行时,所述程序代码用于使所述计算机设备执行本说明书上述描述的根据本发明各种示例性实施提供的基于区块链的可消耗凭证方法中的步骤,例如,所述计算机设备可以执行本发明实施例提供的基于区块链的可消耗凭证的验证方法。所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子非穷举的列表包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器RAM、只读存储器ROM、可擦式可编程只读存储器EPROM或闪存、光纤、便携式紧凑盘只读存储器CD-ROM、光存储器件、磁存储器件、或者上述的任意合适的组合。本发明的实施方式中提供的基于区块链的可消耗凭证方法的程序产品可以采用便携式紧凑盘只读存储器CD-ROM并包括程序代码,并可以在计算设备上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网LAN或广域网WAN—连接到用户计算设备,或者,可以连接到外部计算设备例如利用因特网服务提供商来通过因特网连接。应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和或将一个步骤分解为多个步骤执行。本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质包括但不限于磁盘存储器、CD-ROM、光学存储器等上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、设备系统、和计算机程序产品的流程图和或方框图来描述的。应理解可由计算机程序指令实现流程图和或方框图中的每一流程和或方框、以及流程图和或方框图中的流程和或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

权利要求:1.一种应用于区块链的可消耗凭证的验证方法,其特征在于,包括:核销方获取用户提供的用以核销的凭证;所述凭证中记录有已生效的各次核销记录;所述核销方从区块链上获取所述凭证的核销登记,所述核销登记中记录有第一哈希Hash值;所述第一Hash值是所述凭证在上一次核销后根据所有已生效的核销记录生成的;所述核销方根据所述凭证中的已生效的各次核销记录生成第二Hash值;所述核销方在确认所述第一Hash值和所述第二Hash值一致时,确定所述凭证可用于核销。2.如权利要求1所述的方法,其特征在于,所述核销记录中还包括上一次核销的核销方对所述第一Hash值进行签名的核销签名;所述核销方在确认所述第一Hash值和所述第二Hash值一致时,确定所述凭证可用于核销,包括:所述核销方从所述凭证中获取上一次核销的核销记录;所述核销方根据所述上一次核销的核销记录中的核销机构信息对所述核销签名进行验证;所述核销方在确认所述第一Hash值和所述第二Hash值一致且所述核销签名验证通过时,确定所述凭证可用于核销。3.如权利要求1所述的方法,其特征在于,所述核销方确定所述凭证可用于核销之后,还包括:所述核销方向所述用户返回针对所述凭证的锁定请求;所述锁定请求用于所述用户生成锁定签名并将所述锁定签名上传至所述区块链;所述锁定签名用于指示所述区块链将所述核销登记中的锁定状态设置为锁定态并在所述核销登记中记录所述锁定签名;所述核销方接收所述用户发送的锁定成功响应;所述锁定成功响应用于触发所述核销方进行核销。4.如权利要求1所述的方法,其特征在于,所述核销方接收所述用户发送的锁定成功响应后,还包括:所述核销方验证所述锁定签名合法后,生成所述核销请求对应的核销方记录;所述核销方将所述核销方记录发送至所述用户;所述核销方获取所述用户返回的用户方记录;所述核销方根据所述核销方记录和所述用户方记录确定所述核销请求对应的核销记录;所述核销方根据所述凭证中的已生效的各次核销记录和所述核销请求对应的核销记录,生成第三Hash值;所述核销方更新所述区块链中所述凭证的核销登记中的第一Hash值为所述第三Hash值。5.如权利要求4所述的方法,其特征在于,所述方法还包括:所述核销方将所述凭证的写入状态修改为解锁,并将所述锁定签名写入区块链;所述核销方向所述用户返回核销成功的响应。6.如权利要求4所述的方法,其特征在于,所述核销方将区块链上的所述第一Hash值,更新为所述第三Hash值之前,还包括:所述核销方查询所述区块链上所述凭证的写入状态;若确定所述写入状态为解锁,则向所述用户返回重新锁定的指令,并将所述凭证中的所述第二核销记录删除后,返回至所述用户。7.如权利要求1所述的方法,其特征在于,所述核销方从区块链上获取所述凭证的核销登记之前,还包括:所述核销方获取所述用户发送所述凭证的核销请求;所述凭证的核销请求包括所述凭证的属性签名及核销次数;所述核销方根据所述凭证,确定所述凭证的剩余可用次数;所述核销方验证所述核销请求的核销次数是否小于或等于所述凭证的剩余可用次数;所述核销方从区块链获取所述凭证的发行方的公钥,验证所述凭证的属性签名是否合法。8.如权利要求7所述的方法,其特征在于,所述方法还包括:所述核销方向所述用户发送所述凭证的核销请求的校验值;所述校验值用于所述核销方生成所述核销请求的核销记录并为所述用户验证所述核销方生成的所述核销记录。9.一种应用于区块链的可消耗凭证的验证装置,其特征在于,包括:收发单元,用于获取用户提供的用以核销的凭证;所述凭证中记录有已生效的各次核销记录;从区块链上获取所述凭证的核销登记,所述核销登记中记录有第一哈希Hash值;所述第一Hash值是所述凭证在上一次核销后根据所有已生效的核销记录生成的;处理单元,用于根据所述凭证中的已生效的各次核销记录生成第二Hash值;在确认所述第一Hash值和所述第二Hash值一致时,确定所述凭证可用于核销。10.一种计算机存储介质,其特征在于,所述计算机可读存储介质包括计算机程序,当计算机程序在计算机上运行时,使得所述计算机执行如权利要求1至8任一所述的方法。11.一种包含指令的计算机程序产品,其特征在于,当所述指令在计算机上运行时,使得所述计算机执行如权利要求1至8任一所述的方法。

百度查询: 深圳前海微众银行股份有限公司 一种应用于区块链的可消耗凭证的验证方法和装置

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。