一种区块链系统匿名抢红包方法、设备及储存介质

文档序号:1817381 发布日期:2021-11-09 浏览:7次 >En<

阅读说明:本技术 一种区块链系统匿名抢红包方法、设备及储存介质 (Block chain system anonymous red packet robbing method, equipment and storage medium ) 是由 马登极 王志文 吴思进 于 2021-09-03 设计创作,主要内容包括:本发明属于计算机技术领域,尤其涉及一种区块链系统匿名抢红包方法、设备及储存介质。本发明提供的方法特别适用于多人抢红包场景下,同时能够有效保护红包接收用户的隐私,令红包发送用户或其他用户都不能查询是谁领取了红包,实现红包的匿名领取。(The invention belongs to the technical field of computers, and particularly relates to a method, equipment and a storage medium for anonymously robbing red envelope for a block chain system. The method provided by the invention is particularly suitable for a scene of robbing the red envelope by multiple persons, and can effectively protect the privacy of the red envelope receiving user, so that the red envelope sending user or other users can not inquire who gets the red envelope, and the anonymous getting of the red envelope is realized.)

一种区块链系统匿名抢红包方法、设备及储存介质

技术领域

本发明属于计算机技术领域,尤其涉及一种区块链系统匿名抢红包方法、设备及储存介质。

背景技术

随着科技的智能化发展,手机通讯软件的功能越来越齐全,在节假日来临时,越来越多的人通过手机通讯软件向亲朋好友发送红包,用以烘托节日的氛围,也有不少商家企业等为了宣传营销等目的也会向社会公众发送红包,而这些红包发送领取均存有记录,将红包领取用户的信息透露,尤其在区块链技术领域,由于在区块链中需要将交易上链共识,目前现有的发收红包的方案都是显示的,发送者把红包发送到合约,冻结金额或设置个数,领取者来抢,领取者将留下领取信息,如此对于用户的隐私并不友好。因此,亟需一种匿名抢红包方法,能够保护红包领取者的隐私,在例如发送者把红包信息通过公共媒介公开出来,由很多人来抢这样的场景下能够保护红包领取者的隐私。

发明内容

为解决上述技术问题,本发明提供了一种区块链系统匿名抢红包方法、设备及储存介质,能够保护红包领取者的隐私。

为实现上述目的,本发明采用以下技术方案。

第一方面,提供一种区块链系统匿名抢红包方法,包括以下内容:

区块链系统部署有红包合约,所述红包合约依据预先选定的椭圆曲线构建代扣地址,所述代扣地址仅设置有对应的公钥,红包合约基于所述代扣地址构建匿名合约的交易签名;

所述基于区块链的匿名抢红包方法包括:

S1、红包发送用户在本地生成第一随机数并计算所述第一随机数对应的第一随机数哈希,并基于所述第一随机数哈希构建红包发送交易,同时基于所述红包合约为所述红包发送交易生成的红包ID,然后生成红包私密信息,所述红包私密信息包括第一随机数和红包ID,红包发送用户公布所述红包私密信息;其中,所述红包发送交易的交易信息包括红包所包含token总额的明文,所述第一随机数哈希与红包所包含的token总额所对应;

S2、所述红包合约基于所述红包发送交易冻结红包发送用户账户内对应数量的token;

S3、红包接收用户获取红包发送用户公布的红包私密信息,在本地生成第二随机数,计算所述第二随机数对应的第二随机数哈希,基于所述第二随机数哈希构建以红包合约签名的红包领取交易;同时红包接收用户创建第一零知识证明,并向所述红包合约发送所述第一零知识证明、第二随机数哈希和红包领取交易,所述第一零知识证明用于证明红包接收用户获取了所述红包私密信息;

S4、所述红包合约验证所述第一零知识证明,验证通过则将所述红包接收用户生成的第二随机数哈希注册至所述红包ID上并反馈至所述红包接收用户;

S5、在红包ID的第二随机数哈希注册情况满足预设条件后,红包合约根据预先设置的派发算法为所述第二随机数哈希派发相应数量的token,并完善所述红包领取交易;同时基于所述第二随机数哈希和派发的token数量生成金额标记哈希并将所述金额标记哈希反馈给所述红包接收用户;

S6、红包接收用户收到注册成功反馈后在本地构建第二零知识证明并发送至所述红包合约,所述红包合约验证所述第二零知识证明,验证通过,所述红包合约将红包领取交易记录在所述区块链上,所述红包接收用户领取派发给所述第二随机数哈希token;所述第二零知识证明用于证明红包接收用户获取了第一随机数、第二随机数并且所述第二随机数哈希已注册在红包ID上。

作为优选,所述红包ID储存于第一默克尔树,所述第一默克尔树用于储存基于红包合约的所述第一默克尔树的叶子节点的值与基于所述红包合约生成的红包ID一一对应。

作为优选,所述红包ID上注册的第二随机数储存于第二默克尔树,所述红包合约为每个基于红包合约生成的红包ID均配置对应的第二默克尔树,所述红包ID与第二默克尔树一一对应,所述第二默克尔树用于储存其对应的红包ID上所注册的所有第二随机数哈希的默克尔树,所述第二默克尔树各个叶子节点的值与各个注册在对应红包ID上的第二随机数哈希一一对应。

作为优选,所述红包合约将每个红包ID对应的第二根哈希储存于第三默克尔树中,所述第二根哈希通过计算第二默克尔树的根哈希获得,所述第三默克尔树各个叶子节点的值与各个红包ID对应的第二根哈希一一对应,所述第三默克尔树的叶子节点与第一默克尔树的叶子节点对应映射。

作为优选,所述第二零知识证明基于预设的第二零知识证明电路构建而成,第二零知识证明电路构以第一根哈希、第三根哈希和红包所包含token总额的明文为公开输入,以红包ID的哈希值、第一默克尔树路径数据、第一随机数哈希、第一随机数、第二根哈希、第三默克尔树路径数据、第二随机数、第二默克尔树路径数据和金额标记哈希为私密输入,其中,所述第三根哈希为所述第三默克尔树的根哈希,所述第一默克尔树路径数据、第二默克尔树路径数据和第三默克尔树路径数据均由红包合约反馈给所述红包接收用户。

作为优选,所述红包发送用户通过二维码公布所述红包私密信息。

第二方面,提供一种计算机设备,包括一个或多个处理器;

存储器,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如上述第一方面所述的方法。

第三方面,提供一种存储有计算机程序的存储介质,该程序被处理器执行时实现如上述第一方面所述的方法。

本发明的有益效果在于特别适用于多人抢红包场景下,同时能够有效保护红包接收用户的隐私,令红包发送用户或其他用户都不能查询是谁领取了红包,实现红包的匿名领取。

附图说明

图1为本发明实施例2的一种计算机设备的结构示意图。

具体实施方式

以下结合具体实施例和说明书附图对本发明作出进一步清楚详细的描述说明。本领域普通技术人员在基于这些说明的情况下将能够实现本发明。此外,下述说明中涉及到的本发明的实施例通常仅是本发明一部分的实施例,而不是全部的实施例。因此,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应当属于本发明保护的范围。如无特殊说明,本发明实施例所简述的方法均为本领域技术人员所掌握的方法。

实施例1

本实施例提供一种区块链系统匿名抢红包方法,包括以下内容:

区块链系统部署有红包合约,所述红包合约依据预先选定的椭圆曲线构建代扣地址,所述代扣地址仅设置有对应的公钥,红包合约基于所述代扣地址构建匿名合约的交易签名;

所述基于区块链的匿名抢红包方法包括:

S1、红包发送用户在本地生成第一随机数并计算所述第一随机数对应的第一随机数哈希,并基于所述第一随机数哈希构建红包发送交易,同时基于所述红包合约为所述红包发送交易生成的红包ID,然后生成红包私密信息,所述红包私密信息包括第一随机数和红包ID,红包发送用户公布所述红包私密信息;其中,所述红包发送交易的交易信息包括红包所包含token总额的明文,所述第一随机数哈希与红包所包含的token总额所对应;

S2、所述红包合约基于所述红包发送交易冻结红包发送用户账户内对应数量的token;

S3、红包接收用户获取红包发送用户公布的红包私密信息,在本地生成第二随机数,计算所述第二随机数对应的第二随机数哈希,基于所述第二随机数哈希构建以红包合约签名的红包领取交易;同时红包接收用户创建第一零知识证明,并向所述红包合约发送所述第一零知识证明、第二随机数哈希和红包领取交易,所述第一零知识证明用于证明红包接收用户获取了所述红包私密信息;

S4、所述红包合约验证所述第一零知识证明,验证通过则将所述红包接收用户生成的第二随机数哈希注册至所述红包ID上并反馈至所述红包接收用户;

S5、在红包ID的第二随机数哈希注册情况满足预设条件后,红包合约根据预先设置的派发算法为所述第二随机数哈希派发相应数量的token,并完善所述红包领取交易;同时基于所述第二随机数哈希和派发的token数量生成金额标记哈希并将所述金额标记哈希反馈给所述红包接收用户;

S6、红包接收用户收到注册成功反馈后在本地构建第二零知识证明并发送至所述红包合约,所述红包合约验证所述第二零知识证明,验证通过,所述红包合约将红包领取交易记录在所述区块链上,所述红包接收用户领取派发给所述第二随机数哈希token;所述第二零知识证明用于证明红包接收用户获取了第一随机数、第二随机数并且所述第二随机数哈希已注册在红包ID上。

进一步的,所述红包ID储存于第一默克尔树,所述第一默克尔树用于储存基于红包合约的所述第一默克尔树的叶子节点的值与基于所述红包合约生成的红包ID一一对应。

进一步的,所述红包ID上注册的第二随机数储存于第二默克尔树,所述红包合约为每个基于红包合约生成的红包ID均配置对应的第二默克尔树,所述红包ID与第二默克尔树一一对应,所述第二默克尔树用于储存其对应的红包ID上所注册的所有第二随机数哈希的默克尔树,所述第二默克尔树各个叶子节点的值与各个注册在对应红包ID上的第二随机数哈希一一对应。

进一步的,所述红包合约将每个红包ID对应的第二根哈希储存于第三默克尔树中,所述第二根哈希通过计算第二默克尔树的根哈希获得,所述第三默克尔树各个叶子节点的值与各个红包ID对应的第二根哈希一一对应,所述第三默克尔树的叶子节点与第一默克尔树的叶子节点对应映射。

进一步的,所述第二零知识证明基于预设的第二零知识证明电路构建而成,第二零知识证明电路构以第一根哈希、第三根哈希和红包所包含token总额的明文为公开输入,以红包ID的哈希值、第一默克尔树路径数据、第一随机数哈希、第一随机数、第二根哈希、第三默克尔树路径数据、第二随机数、第二默克尔树路径数据和金额标记哈希为私密输入,其中,所述第三根哈希为所述第三默克尔树的根哈希,所述第一默克尔树路径数据、第二默克尔树路径数据和第三默克尔树路径数据均由红包合约反馈给所述红包接收用户。

进一步的,所述红包发送用户通过二维码公布所述红包私密信息。

上述技术方案的原理在于,红包接收用户通过第一零知识证明来证明其知晓红包ID的第一随机数,在区块链交易中通常采用uxto账户模型,因此,一旦红包合约锁定红包发送用户账户内对应数量的token,这部分token对应的未花费交易输出就被锁定,而要花费该未花费交易输出需要第一随机数的明文和账户的私钥签名,上述方案中,红包发送用户生成红包发送交易对该交易签名,因此获取第一随机数的明文即可使用对应部分的未花费交易输出,因此红包接收用户通过构建第一零知识证明来证明其知晓红包ID的第一随机数,以此获取使用红包发送用户冻结的未花费交易输出的权利。另一方面,红包接收用户在基于匿名合约构建红包领取交易,采用基于代扣合约地址的签名为交易签名,使得红包接收用户无需为接收红包中的token进行签名所有接收交易签名对应的地址均为代扣合约地址,红包接收用户接收地址就不会被记录在区块链上,进一步保护了红包接收用户的隐私,基于代扣合约地址的签名的验证原理在于预先验证交易和证明的准确性,同时实现交易费的代扣。

关于第二零知识证明的公开输入与私密输入,公开输入的第一根哈希、第三根哈希和红包所包含token总额的明文均为公开信息,第一根哈希、第三根哈希为红包合约计算得到,所有人均可查看,而红包所包含token总额的明文存在于红包发送交易中,执行红包发送交易后所有人也均可从中获取,私密输入中,红包ID的哈希值可由红包发送用户公布的红包私密信息中的第一默克尔树获取红包ID在进行哈希运算得到,红包接收用户只要获取了红包发送用户公布的红包私密信息就一定可以计算出红包ID的哈希值,在结合合约反馈的第一默克尔树路径数据可以轻松计算第一根哈希,而由于红包私密信息包括第一默克尔树,第一默克尔树路径数据可以从第一默克尔树中轻松提取,理论上应与公开输入的第一根哈希是一致的,若不一致则说明红包接收用户没有获取包发送用户公布的红包私密信息,其无法领取红包;同理的,第一随机数也是红包私密信息种的内容,第一随机数哈希与第一随机数也用于验证红包接收用户是否获取发送用户公布的红包私密信息;第二根哈希和第三默克尔树路径数据用于验证红包接收用户所提供的第二随机数哈希是否被注册在红包ID上,此处的第二根哈希和第三默克尔树路径数据为红包接收用户收到的红包合约反馈的第二根哈希和第三默克尔树路径数据,由于第三默克尔树由红包合约构建,第二零知识证明电路可以向红包合约请求基于第二根哈希和第三默克尔树路径数据计算第三根哈希所需的其他数据,第二零知识证明电路再次计算第三根哈希,若与红包合约计算的一致,则说明红包接收用户所提供的第二随机数哈希确实被注册在红包ID上;第二随机数和第二默克尔树路径数据用于验证用户提供的第二随机数是否准确,通过第二随机数可以计算对应的第二随机数哈希,然后根据第二默克尔树路径数据出第二默克尔树的根哈希,该计算在零知识证明电路内完成,零知识证明电路将计算得到的第二默克尔树的根哈希与红包合约计算得到的第二默克尔树的根哈希对比,一致则说明红包接收用户所提供的第二随机数对应的第二随机数哈希确实为第二默克尔树上的数据。由上可见,零知识证明确保了红包接收用户知道第一随机数、提供了有效的第二随机数,也确保了该第二随机数对应的第二随机数哈希被注册在红包ID上,同时确保了该红包ID确实为红包发送用户生成的红包ID之一,通过上述验证零知识证明电路生成第三零知识证明,红包接收用户通过第三零知识证明来领取红包,验证通过则将红包发送至用户设定的地址,而红包领取交易由匿名合约签名,不会暴露红包接收用户的任何信息,不能追溯到真实的领取者,实现匿名领取。

实施例2

一种计算机设备,所述设备包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如实施例1所述的方法。

一种存储有计算机程序的存储介质,该程序被处理器执行时实现如以上实施例1所述的方法。

图1为本实施例提供的一种设备的结构示意图。

如图1所示,作为另一方面,本申请还提供了一种计算机设备500,包括一个或多个中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM503中,还存储有设备500操作所需的各种程序和数据。CPU501、ROM502以及RAM503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。

以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。

特别地,根据本申请公开的实施例,上述实施例1所描述的方法可以被实现为计算机软件程序。例如,本申请公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行上述任一实施例描述的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。

作为又一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例的装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,该程序被一个或者一个以上的处理器用来执行描述于本申请的方法。

附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这根据所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以通过执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以通过专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,各所述单元可以是设置在计算机或移动智能设备中的软件程序,也可以是单独配置的硬件装置。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离本申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

10页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种基于区块链的红包匿名领取方法、设备及储存介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!