卡券发放方法、装置、计算机设备及存储介质与流程

文档序号:17093191发布日期:2019-03-13 23:39阅读:217来源:国知局
卡券发放方法、装置、计算机设备及存储介质与流程

本发明涉及卡券发放方法,更具体地说是指基于区块链的卡券发放方法、装置、计算机设备及存储介质。



背景技术:

卡券包括有礼品卡、票卡等卡,其中,礼品卡是商家发行的一种在指定商户及时间段内消费的代金券或预付费卡,这种卡通常用于员工福利、商务馈赠、节日礼品等;礼品卡市场日益发展,数字礼品卡也得到了广泛的应用,然而在应用过程中,主要存在以下几个问题:

礼品卡通常需要商家预付,而当礼品卡持有人无法进行消费时,商家很难回收礼品卡,从而增大了开支;礼品卡持有人将礼品卡通常借助自己的人脉或二手交易市场才能变现,成本较高;实物礼品卡一旦刮层损坏或者被技术破解,在中间流转环节有被盗刷的风险;礼品卡消费数据难以跟踪和统计,活动发放效果难以评估。

因此,有必要设计一种新的发放方法,以解决礼品卡等卡券的易盗用、难跟踪以及难交换的问题。



技术实现要素:

本发明的目的在于克服现有技术的缺陷,提供卡券发放方法、装置、计算机设备及存储介质。

为实现上述目的,本发明采用以下技术方案:卡券发放方法,包括:

获取用户的通证领取id;

获取当次卡券发放的数据明文信息以及签名信息,以形成发放信息;

根据发放信息获取领取通证的合约地址;

根据领取通证的合约地址调用合约,并提交上链信息到区块链,以更新合约状态;

验证上链信息是否符合预设要求;

若是,则兑换卡券所对应的通证,存储至通证领取id,更新用户已领取的通证数量,并得到领取成功事件;

广播所述领取成功事件。

其进一步技术方案为:所述通证领取id包括区块链钱包地址。

其进一步技术方案为:所述获取当次卡券发放的数据明文信息以及签名信息,以形成发放信息,包括:

获取当次卡券发放的数据信息的明文,以得到当次卡券发放的数据明文信息;

对当次卡券发放的数据信息的明文进行椭圆曲线签名,以形成签名信息;

组合当次卡券发放的数据信息的明文以及签名信息,以得到发放信息。

其进一步技术方案为:所述当次卡券发放的数据信息的明文包括合约定义的前缀字段、卡券授予的通证总数量、上链兑换过期时间以及扩展字段。

其进一步技术方案为:所述上链信息包括兑换数量信息、上链时间、合约前缀组成的明文以及针对明文的签名。

其进一步技术方案为:所述验证上链信息是否符合预设要求,包括:

从发放信息中解析出合约定义的前缀字段、卡券授予的通证总数量、上链兑换过期时间以及扩展字段;

获取所调取的合约的前缀字段;

判断合约定义的前缀字段与所调取的合约的前缀字段是否匹配;

若是,则判断兑换数量信息是否满足预设条件;

若是,则判断上链时间是否小于上链兑换过期时间;

若是,则判断发放信息中的签名信息是否正确;

若是,则上链信息符合预设要求。

其进一步技术方案为:所述判断兑换数量信息满足预设条件是否满足预设条件,包括:

判断用户已领取的通证数量是否小于卡券授予的通证总数量;

若是,则兑换数量信息满足预设条件。

本发明还提供了卡券发放装置,包括:

id获取单元,用于获取用户的通证领取id;

发放信息形成单元,用于获取当次卡券发放的数据明文信息以及签名信息,以形成发放信息;

地址获取单元,用于根据发放信息获取领取通证的合约地址;

上链单元,用于根据领取通证的合约地址调用合约,并提交上链信息到区块链,以更新合约状态;

验证单元,用于验证上链信息是否符合预设要求;

兑换单元,用于若是,则兑换卡券所对应的通证,存储至通证领取id,更新用户已领取的通证数量,并得到领取成功事件;

广播单元,用于广播所述领取成功事件。

本发明还提供了一种计算机设备,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现上述的方法。

本发明还提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时可实现上述的方法。

本发明与现有技术相比的有益效果是:本发明通过区块链将卡券与通证的价值约定,在发放卡券时,将发放信息以及领取通证的合约地址一并发放,用户可根据领取通证的合约地址调取区块链内的对应合约,结合上链信息进行通证领取,且从卡券授予的通证总数量与用户已领取的通证数量进行对比,以防止重复兑换领取;且采用通证的形式将卡券的价值在区块链内进行流转,结合广播时间和区块节点监控,以解决礼品卡等卡券的易盗用、难跟踪以及难交换的问题。

下面结合附图和具体实施例对本发明作进一步描述。

附图说明

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

图1为本发明实施例提供的卡券发放方法的应用场景示意图;

图2为本发明实施例提供的卡券发放方法的流程示意图;

图3为本发明实施例提供的卡券发放方法的子流程示意图;

图4为本发明实施例提供的卡券发放方法的子流程示意图;

图5为本发明实施例提供的卡券发放方法的子流程示意图;

图6为本发明实施例提供的卡券发放装置的示意性框图;

图7为本发明实施例提供的卡券发放装置的发放信息形成单元的示意性框图;

图8为本发明实施例提供的卡券发放装置的验证单元的示意性框图。

图9为本发明实施例提供的计算机设备的示意性框图。

具体实施方式

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

应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

请参阅图1和图2,图1为本发明实施例提供的卡券发放方法的应用场景示意图。图2为本发明实施例提供的卡券发放方法的示意性流程图。该卡券发放方法应用于服务器中。该服务器可以为分布式服务平台中的一台服务器,该服务器中部署有卡券发放平台,该服务器将发放方通过发放终端上传的发放信息、用户通过用户终端输入的上链信息进行上链和兑换通证,以解决礼品卡等卡券的易盗用、难跟踪以及难交换的问题。基于区块链的智能合约技术,卡片发放方可以链下发行卡券给用户,用户可随时在有网状态下将数据上链即可兑换得到卡券约定的通证。

需要说明的是,图2中仅仅示意出一台服务器,在实际操作过程中,采用多台服务器进行多用户兑换通证的操作。

图2是本发明实施例提供的卡券发放方法的流程示意图。如图2所示,该方法包括以下步骤s110至s150。

s110、获取用户的通证领取id。

在本实施例中,上述的通证领取id包括区块链钱包地址。利用通证领取id存储通证。通证是指用户在区块链上持有的数字权益,可在区块链上通过交易来流通,通证的价值往往由其背后代表的实体价值所决定,本实施例中的通证特指基于区块链智能合约发行的通证。区块链本质上是去中心化的数据库,基于密码学技术对交易进行打包生成区块,并且通过特定的共识算法,来使参与其中的节点达成数据一致。上述的通证包括但不限于erc20等的可置换通证,也可以是不可置换通证。

s120、获取当次卡券发放的数据明文信息以及签名信息,以形成发放信息。

在本实施例中,发放信息是指卡券兑换通证的签名信息以及一些验证信息。

在一实施例中,如图3所示,上述的步骤s120可包括步骤s121~s123。

s121、获取当次卡券发放的数据信息的明文,以得到当次卡券发放的数据明文信息。

在本实施例中,上述的当次卡券发放的数据信息的明文包括合约定义的前缀字段、卡券授予的通证总数量、上链兑换过期时间以及扩展字段。

上述的合约定义的前缀字段、卡券授予的通证总数量、上链兑换过期时间以及扩展字段依序组成一个字符串,以形成当次卡券发放的数据信息的明文。

其中,卡券授予的通证总数量是指从本地服务器查询已发放给用户的通证数量加在该卡券本身的通证数量,比如,发放方给用户s发放通证数量为a的卡券,则通证总数量为a。继续发放通证数量为b的卡券,则发放信息中通证总数量为a+b。每次领取成功后都进行广播,发放方可监听该广播以跟踪用户领取数据来评估发放效果,而领取用户累计已领取的总通证数量也会登记在本地服务器内。

具体地,上述的合约定义的前缀字段只接收与之相匹配的前缀数据,防止用户向其他合约中发送并兑换通证,也就是一个卡券兑换通证的合约是唯一的,杜绝错误兑换的问题发生。

该卡券对应的通证上链兑换时间必须在上链兑换过期时间之前,过期则上链兑换无效,上链兑换过期时间可设为空,则表示不限上链兑换时间。

当授予的通证为不可置换通证时,扩展字段填写其通证id信息

s122、对当次卡券发放的数据信息的明文进行椭圆曲线签名,以形成签名信息。

在本实施例中,可通过调用以太坊api获取椭圆曲线签名,以作为发放方的身份证明。证明该签名信息是由发放方签名的。数字签名算法是一种用户可以用私钥为文档产生一段叫做签名的短字符串数据的处理,以至于任何拥有相应公钥,签名和文档的人可以验证该文件是由特定的私钥的拥有者“签名”的,该文档在签名后没有被改变过。

s123、组合当次卡券发放的数据信息的明文以及签名信息,以得到发放信息。

s130、根据发放信息获取领取通证的合约地址。

在本实施例中,合约指的是区块链内的智能合约,智能合约是一段图灵完备的计算机程序,其维护自身内部变量,并且提供可以修改这些变量状态的方法。智能合约在通证发行和交换领取得到较为广泛的应用。先组装卡券数据负载payload(即当次卡券发放的数据明文信息),并针对payload使用发放方的私钥进行签名,连同领取通证的合约地址一起返回,则该领取额通证的合约地址则限定了通证所在的地址,避免错误兑换的问题发生。

s140、根据领取通证的合约地址调用合约,并提交上链信息到区块链,以更新合约状态。。

在本实施例中,在本实施例中,上链是指调用对应的智能合约,以进行卡券对应通证的领取;上链信息包括兑换数量信息、上链时间,合约前缀等组成的明文以及针对明文的签名,该签名为发放方针对明文的签名。

用户可以选择需要兑换的卡券,根据领取通证的合约地址,向区块链智能合约模块发起对应的合约调用,领取通证,以进行上链操作。

s150、验证上链信息是否符合预设要求。

在进行领取卡券对应的通证时,需要验证领取的信息是否符合要求,比如上链时间、是否是已领取过以及领取的通证是否是该卡券的对应通证等,以避免重复领取和错误领取的问题发生。

在一实施例中,如图4所示,上述的步骤s150可包括步骤s151~s158。

s151、从发放信息中解析出合约定义的前缀字段、卡券授予的通证总数量、上链兑换过期时间以及扩展字段;

s152、获取所调取的合约的前缀字段;

s153、判断合约定义的前缀字段与所调取的合约的前缀字段是否匹配。

s154、若否,则上链信息不符合预设要求。

判断合约定义的前缀字段与所调取的合约的前缀字段是否匹配,也就是判断调用的合约是否正确,是否在正确的合约地址内领取该卡券对应的通证,避免错误领取的问题发生。

s155、若是,则判断兑换数量信息是否满足预设条件。

在本实施例中,具体是为了防止重复提交或者提交已作废卡券签名,即防止给用户发放的同一个卡券,用户可能多次调用智能合约进行领取通证的现象发生,上述的兑换数量信息是指用户累计授予的通证数量,也就是关于该用户的所有卡券累计授予的通证数量,其记录在本地服务器内。

在一实施例中,如图5所示,上述的步骤s155可包括步骤s1551~s1553。

s1551、判断用户已领取的通证数量是否小于卡券授予的通证总数量;

s1552、若是,则兑换数量信息满足预设条件;

s1553、若否,则兑换数量信息不满足预设条件。

在本实施例中,卡券授予的通证总数量是指发放方累计发放给用户的通证总数量,当发行方需要给用户发放通证时,通常先从本地服务器内读取累计发行数量,然后加上本次授予的通证数量,来得到当前卡券对应的通证数量,而当前卡券对应的通证数量则为发放方累计发放给用户的通证总数量。

用户每次兑换通证成功时,都会广播该领取成功事件,在广播过程中会同时广播用户领取后的用户已领取的通证数量,发放方本地服务器将监听该广播,以得到用户领取情形并跟踪活动发放效果,在实践过程中,发放方也可选择不监听记录信息,需要使用该数据时直接查询智能合约。且卡券在发放方发送发放信息至对应的用户时,该事件也会记录在发放方的本地服务器内,以记录该用户预计累计领取的通证数量。

在兑换通证时,会附加上给同一个用户已发放的通证值,如给如给用户a已发放m单位的通证,本次将发放n单位的通证,则实际明文中的卡券授予的通证总数量为m+n单位的通证,则实际明文中的卡券授予的通证总数量为m+n单位的通证,用户在领取时,智能合约会计算(m+n)-m=n来得到本次实际授予的通证数量,而智能合约不接收比用户已领取通证数量n更小的值,领取成功后,用户已领取数量被更新为m+n,用户重复提交本次领取信息时,已领取数量m+n小于本次授权总数量m+n不成立而导致领取失败,举个例子:用户在调用合约进行通证领取时,用户a已领取的通证数量为3个通证,而将要领取的卡通证为4个通证,用户在上链过程中,卡券授予的通证总数量为7个通证,即当前的用户a是首次领取该卡券所对应的通证,则兑换的通证为7-3=4个通证;若当前的用户a重复领取该卡券所对应的通证,则用户a已发放的通证数量为7个,则用户提交领取7个通证的请求,上链信息中的用户上传的信息与卡券授予的通证总数量相同,则表明该卡券对应的通证已被领取,不可再次领取,从而避免重复兑换领取的问题,对于用户兑换通证时,可以一次领取多张卡券,直接提交金额最大者即可,只需要满足用户已领取的通证数量小于卡券授予的通证总数量即可成功兑换领取通证,当发放方给用户s发放两张卡券,每张价值10个通证,即需要分多次领取,用户在本地服务器内登记的是当前该用户的已发放数量为22个通证,则两张卡券所授予的通证总数量分别为10+22=32个通证,10+32=42个通证。用户提交32个通证的卡券领取将得到32-22=10个通证,继续提交又获得42-32=10个通证的卡券,也可直接提交42个通证的卡券,直接得到42-22=20个通证,此时若继续提交32个通证的卡券,则会因为已领取通证总数量42个通证>本次提交通证总数量32个通证,而导致无法重复领取。每次领取成功后都进行广播,发放方可监听该广播以跟踪用户领取数据来评估发放效果,而领取用户累计已领取的总通证数量也会登记在本地服务器内。

于其他实施例中,签名信息设置当前时间戳,调取合约进行上链时只记忆最后一次领取的时间戳,在判断兑换信息满足预设条件是否满足预设条件时,只需要将当前发送的领取字符串解析出来的时间戳必须大于上一次解析出来的时间戳即可实现兑换信息满足预设条件满足预设条件,以避免重复兑换的问题发生。

于其他实施例,还可以在每个账户设置一个随机数,这个随机数只能从0开始递增,比如第一次领取通证时发放信息中的签名信息个随机数必须是0,第二次领取通证时发放信息中的签名信息个随机数可以要求必须是1,或者要求大于1,以避免重复兑换的问题发生。

s156、若是,则判断上链时间是否小于上链兑换过期时间。

若上链时间不小于上链兑换过期时间,则返回所述步骤s154;

在本实施例中,该步骤是为了确保领取时间未超过上链兑换过期时间,若超过,则无法领取。

s157、若是,则判断发放信息中的签名信息是否正确;

s158、若是,则上链信息符合预设要求;

若发放信息中的签名信息不正确,则返回所述步骤s154。

签名信息的正确与否表明该卡券是否真实存在。

s160、若是,则兑换卡券所对应的通证,存储至通证领取id,并更新用户已领取的通证数量,并得到领取成功事件。

在本实施例中,兑换过程中,会计算本次可领取的通证数量,即卡券授予的通证总数量减去用户已领取的通证总数量,卡券授予的通证总数量必须超过用户已领取的通证总数量,防止重复提交或者提交已作废卡券签名,更新用户的通证数量信息,发送方通证数量减少,兑换者通证数量增加,更新用户已领取的通证数量信息,后续的卡券授予的通证总数量不应小于该值,否则视为重复提交。

s170、广播所述领取成功事件。

若否,则进入结束步骤。

在本实施例中,广播可以使得各个区块节点均得知用户领取通证成功以及该用户已发放的通证数量,对用户领取通证的数量进行分析和跟踪。

上述的方法还适用于卡券卡或者其他需要即时支付的场景,比如基于信用的支付,活动现场卡券发放,票务系统等等。

在本实施例中,上述的本地服务器指的是发放方的本地服务器,每次广播时,都会更新发放方的本地服务器内记载用户对应的已领取通证数量,以便评估活动实际领取效果。本地服务器记录两个值:用户累计授予的通证数量(也就是卡券授予的通证总数量)、用户已领取数量,监听广播更新用户已领取数量,每次生成卡券签名时直接更新用户已发放数量。

上述的卡券发放方法,通过区块链将卡券与通证的价值约定,在发放卡券时,将发放信息以及领取通证的合约地址一并发放,用户可根据领取通证的合约地址调取区块链内的对应合约,结合上链信息进行通证领取,且从卡券授予的通证总数量与用户已领取的通证数量进行对比,以防止重复兑换领取;且采用通证的形式将卡券的价值在区块链内进行流转,结合广播时间和区块节点监控,以解决卡券卡等卡券的易盗用、难跟踪以及难交换的问题。

图6是本发明实施例提供的一种卡券发放装置300的示意性框图。如图6所示,对应于以上卡券发放方法,本发明还提供一种卡券发放装置300。该卡券发放装置300包括用于执行上述卡券发放方法的单元,该装置可以被配置于服务器中。

具体地,请参阅图6,该卡券发放装置300包括:

id获取单元301,用于获取用户的通证领取id;

发放信息形成单元302,用于获取当次卡券发放的数据明文信息以及签名信息,以形成发放信息;

地址获取单元303,用于根据发放信息获取领取通证的合约地址;

上链单元304,用于根据领取通证的合约地址调用合约,并提交上链信息到区块链,以更新合约状态;

验证单元305,用于验证上链信息是否符合预设要求;

兑换单元306,用于若是,则兑换卡券所对应的通证,存储至通证领取id,并更新用户历史累计领取的通证数量,以得到领取成功事件;

广播单元307,用于广播所述领取成功事件。

在一实施例中,如图7所示,所述发放信息形成单元302包括:

明文获取子单元3021,用于获取当次卡券发放的数据信息的明文,以得到当次卡券发放的数据明文信息;

签名子单元3022,用于对当次卡券发放的数据信息的明文进行椭圆曲线签名,以形成签名信息;

组合子单元3023,用于组合当次卡券发放的数据信息的明文以及签名信息,以得到发放信息。

在一实施例中,如图8所示,所述验证单元305包括:

解析子单元3051,用于从发放信息中解析出合约定义的前缀字段、卡券授予的通证总数量、上链兑换过期时间以及扩展字段;

字段获取子单元3052,用于获取所调取的合约的前缀字段;

匹配判断子单元3053,用于判断合约定义的前缀字段与所调取的合约的前缀字段是否匹配;

兑换判断子单元3054,用于若是,则判断兑换数量信息是否满足预设条件;

时间判断子单元3055,用于若是,则判断上链时间是否小于上链兑换过期时间;

签名判断子单元3056,用于若是,则判断发放信息中的签名信息是否正确;若是,则上链信息符合预设要求。

需要说明的是,所属领域的技术人员可以清楚地了解到,上述卡券发放装置300和各单元的具体实现过程,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。

上述卡券发放装置300可以实现为一种计算机程序的形式,该计算机程序可以在如图9所示的计算机设备上运行。

请参阅图9,图9是本申请实施例提供的一种计算机设备的示意性框图。该计算机设备500可以是服务器,服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。

参阅图9,该计算机设备500包括通过系统总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括非易失性存储介质503和内存储器504。

该非易失性存储介质503可存储操作系统5031和计算机程序5032。该计算机程序5032包括程序指令,该程序指令被执行时,可使得处理器502执行一种卡券发放方法。

该处理器502用于提供计算和控制能力,以支撑整个计算机设备500的运行。

该内存储器504为非易失性存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行一种卡券发放方法。

该网络接口505用于与其它设备进行网络通信。本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

其中,所述处理器502用于运行存储在存储器中的计算机程序5032,以实现如下步骤:

获取用户的通证领取id;

获取当次卡券发放的数据明文信息以及签名信息,以形成发放信息;

根据发放信息获取领取通证的合约地址;

根据领取通证的合约地址调用合约,并提交上链信息到区块链,以更新合约状态;

验证上链信息是否符合预设要求;

若是,则兑换卡券所对应的通证,存储至通证领取id,更新用户已领取的通证数量,并得到领取成功事件;

广播所述领取成功事件。

其中,所述通证领取id包括区块链钱包地址。

所述上链信息包括兑换数量信息、上链时间,合约前缀组成的明文以及针对明文的签名。

在一实施例中,处理器502在实现所述获取当次卡券发放的数据明文信息以及签名信息,以形成发放信息步骤时,具体实现如下步骤:

获取当次卡券发放的数据信息的明文,以得到当次卡券发放的数据明文信息;

对当次卡券发放的数据信息的明文进行椭圆曲线签名,以形成签名信息;

组合当次卡券发放的数据信息的明文以及签名信息,以得到发放信息。

其中,所述当次卡券发放的数据信息的明文包括合约定义的前缀字段、卡券授予的通证总数量、上链兑换过期时间以及扩展字段。

在一实施例中,处理器502在实现所述验证上链信息是否符合预设要求步骤时,具体实现如下步骤:

从发放信息中解析出合约定义的前缀字段、卡券授予的通证总数量、上链兑换过期时间以及扩展字段;

获取所调取的合约的前缀字段;判断合约定义的前缀字段与所调取的合约的前缀字段是否匹配;

若是,则判断兑换数量信息是否满足预设条件;

若是,则判断上链时间是否小于上链兑换过期时间;

若是,则判断发放信息中的签名信息是否正确;

若是,则上链信息符合预设要求。

在一实施例中,处理器502在实现所述判断兑换数量信息满足预设条件是否满足预设条件步骤时,具体实现如下步骤:

判断用户已领取的通证数量是否小于卡券授予的通证总数量;

若是,则兑换数量信息满足预设条件。

应当理解,在本申请实施例中,处理器502可以是中央处理单元(centralprocessingunit,cpu),该处理器502还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序包括程序指令,计算机程序可存储于一存储介质中,该存储介质为计算机可读存储介质。该程序指令被该计算机系统中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。

因此,本发明还提供一种存储介质。该存储介质可以为计算机可读存储介质。该存储介质存储有计算机程序,其中该计算机程序被处理器执行时使处理器执行如下步骤:

获取用户的通证领取id;

获取当次卡券发放的数据明文信息以及签名信息,以形成发放信息;

根据发放信息获取领取通证的合约地址;

根据领取通证的合约地址调用合约,并提交上链信息到区块链,以更新合约状态;

验证上链信息是否符合预设要求;

若是,则兑换卡券所对应的通证,存储至通证领取id,更新用户已领取的通证数量,并得到领取成功事件;

广播所述领取成功事件。

其中,所述通证领取id包括区块链钱包地址。

所述上链信息包括兑换数量信息、上链时间,合约前缀组成的明文以及针对明文的签名。

在一实施例中,所述处理器在执行所述计算机程序而实现所述获取当次卡券发放的数据明文信息以及签名信息,以形成发放信息步骤时,具体实现如下步骤:

获取当次卡券发放的数据信息的明文,以得到当次卡券发放的数据明文信息;

对当次卡券发放的数据信息的明文进行椭圆曲线签名,以形成签名信息;

组合当次卡券发放的数据信息的明文以及签名信息,以得到发放信息。

其中,所述当次卡券发放的数据信息的明文包括合约定义的前缀字段、卡券授予的通证总数量、上链兑换过期时间以及扩展字段。

在一实施例中,所述处理器在执行所述计算机程序而实现所述验证上链信息是否符合预设要求步骤时,具体实现如下步骤:

从发放信息中解析出合约定义的前缀字段、卡券授予的通证总数量、上链兑换过期时间以及扩展字段;

获取所调取的合约的前缀字段;判断合约定义的前缀字段与所调取的合约的前缀字段是否匹配;

若是,则判断兑换数量信息是否满足预设条件;

若是,则判断上链时间是否小于上链兑换过期时间;

若是,则判断发放信息中的签名信息是否正确;

若是,则上链信息符合预设要求。

在一实施例中,所述处理器在执行所述计算机程序而实现所述判断兑换数量信息满足预设条件是否满足预设条件步骤时,具体实现如下步骤:

判断用户已领取的通证数量是否小于卡券授予的通证总数量;

若是,则兑换数量信息满足预设条件。

所述存储介质可以是u盘、移动硬盘、只读存储器(read-onlymemory,rom)、磁碟或者光盘等各种可以存储程序代码的计算机可读存储介质。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例装置中的单元可以根据实际需要进行合并、划分和删减。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。

该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

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