首页 / 专利库 / 资料储存系统 / 分布式账本 / 一种基于数字货币的交易方法和装置

一种基于数字货币的交易方法和装置

阅读:38发布:2020-09-13

专利汇可以提供一种基于数字货币的交易方法和装置专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于 数字 货币 的交易方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:在基于 分布式账本 技术的收付款交易的过程中,收款端和付款端对交易中涉及的明文金额进行加密以得到密文金额,并生成相应的验证消息,用以对密文金额进行验证或者解密。该实施方式解决了现有的 分布式账本技术 中资金难以保密的技术问题,达到了保障合作共享且保护交易隐私的技术效果。,下面是一种基于数字货币的交易方法和装置专利的具体信息内容。

1.一种基于数字货币的交易方法,其特征在于,包括:
收款端对收到的明文交易金额进行加密以得到密文交易金额,以及生成用于验证所述密文交易金额的第一验证信息,然后生成收款请求以及广播该收款请求;所述收款请求中包括所述密文交易金额和所述第一验证信息;
节点在接收到所述收款请求后,根据所述第一验证信息确认所述密文交易金额符合规则,然后将所述收款请求存储到链,以及根据所述收款请求更新货币列表;
付款端从所述区块链获取到所述收款请求后,根据所述第一验证信息对所述密文交易金额进行解密以得到所述明文交易金额,以及根据所述明文交易金额和所述货币列表计算明文找零金额,再对所述明文找零金额进行加密以得到密文找零金额,然后生成用于验证所述密文找零金额的第二验证信息,以及生成转账数据结构,接着生成付款请求以及广播该付款请求;所述付款请求中包括所述密文找零金额、所述第二验证信息和所述转账数据结构;
节点在接收到所述付款请求后,根据所述第二验证信息确认所述密文交易金额符合规则,以及根据所述转账数据结构确认所述货币列表符合规则,然后将所述付款请求存储到所述区块链,以及根据所述转账数据结构更新所述货币列表。
2.根据权利要求1所述的方法,其特征在于,收款端对收到的明文交易金额进行加密以得到密文交易金额的步骤包括:
收款端生成本次收款使用的交易私钥;
收款端存储基点值,以及使用基点加密算法对所述基点值进行加密计算然后得到基点校验值;
收款端根据公式q=xG+mH计算所述密文交易金额;其中,q为所述密文交易金额,x为所述交易私钥,m为收到的所述明文交易金额,G为所述基点值,H为所述基点校验值。
3.根据权利要求2所述的方法,其特征在于,
所述第一验证信息包括第一交易证明;
收款端生成用于验证所述密文交易金额的第一验证信息的步骤包括:
收款端将所述明文交易金额m按照预设位数n进行二进制拆分,以得到
其中mi=2i或mi=0,i表示索引位,并且0≤i<n;
收款端将所述交易私钥x按照预设位数n进行随机拆分,以得到 其中x0至xn-2均随机生成,
收款端对于每一个索引位,根据P(xi,mi)=xiG+miH和P(xi,mi-ki)=xiG+(mi-ki)H计算P(xi,mi)和P(xi,mi-ki);其中ki=2i;
收款端对于每一个所述索引位,使用所述xi、所述P(xi,mi)和所述P(xi,mi-ki)生成该索引位的环签名Si;
收款端将全部的所述索引位、所述P(xi,mi)、所述P(xi,mi-ki)和所述Si进行拼接以得到所述第一交易证明。
4.根据权利要求3所述的方法,其特征在于,节点根据所述第一验证信息确认所述密文交易金额符合规则的步骤包括:
节点拆解所述第一交易证明,以得到全部的所述索引位、所述P(xi,mi)、所述P(xi,mi-ki)和所述Si;
节点确认对于每一个所述索引位,所述Si为所述P(xi,mi)和所述P(xi,mi-ki)的环签名,以及确认对于每一个所述索引位,满足P(xi,mi)-P(xi,mi-ki)=kiH,然后确认满足以确认所述密文交易金额符合规则;其中ki=2i。
5.根据权利要求2所述的方法,其特征在于,
所述第一验证信息包括第一通信消息;
收款端生成用于验证所述密文交易金额的第一验证信息的步骤包括:
收款端生成收款端固定私钥,获取付款端固定公钥,以及使用所述基点加密算法对所述收款端固定私钥与所述付款端固定公钥的乘积进行加密计算以得到共享密钥,然后将所述明文交易金额与所述交易私钥进行拼接,再使用所述共享密钥对拼接后的结果进行加密计算以生成所述第一通信消息。
6.根据权利要求5所述的方法,其特征在于,付款端根据所述第一验证信息对所述密文交易金额进行解密以得到所述明文交易金额的步骤包括:
付款端存储所述基点值,以及使用所述基点加密算法对所述基点值进行加密计算得到所述基点校验值;
付款端生成付款端固定私钥,获取收款端固定公钥,以及使用所述基点加密算法对所述付款端固定私钥与所述收款端固定公钥的乘积进行加密计算以得到共享密钥,然后拆分使用所述共享密钥对所述第一通信消息进行解密计算的结果以得到所述明文交易金额。
7.根据权利要求1所述的方法,其特征在于,付款端根据所述明文交易金额和所述货币列表计算明文找零金额的步骤包括:
付款端从所述货币列表中选择收款方为所述付款端、且明文总金额大于或等于所述明文交易金额的数字货币然后组成所述货币子集,然后用所述明文总金额减去所述明文交易金额以得到明文找零金额。
8.根据权利要求7所述的方法,其特征在于,
所述收款请求中包括交易货币,该交易货币中包含所述密文交易金额和所述第一验证信息;所述付款请求中包括找零货币,该找零货币中包含所述密文找零金额和所述第二验证信息;
付款端生成转账数据结构的步骤包括:
付款端生成包含所述交易货币的哈希值、所述找零货币的哈希值和所述货币子集中各数字货币的哈希值的转账数据结构。
9.根据权利要求8所述的方法,其特征在于,
节点根据所述收款请求更新货币列表的步骤前,还包括:节点建立用于存储货币、货币哈希值及二者对应关系的货币列表;所述货币列表包括未花费货币列表、确认中货币列表和已花费货币列表;
节点根据所述收款请求更新货币列表的步骤包括:节点将所述交易货币和所述交易货币的哈希值存储到所述确认中货币列表;
节点将所述付款请求存储到所述区块链的步骤前,还包括:节点根据所述交易货币的哈希值查找并确认所述交易货币存储在所述确认中货币列表,再根据所述货币子集内数字货币的哈希值查找并确认所述货币子集内的数字货币存储在所述未花费货币列表,以及确认所述密文交易金额与所述密文找零金额的和等于所述货币子集内数字货币的密文总金额;
节点根据所述转账数据结构更新所述货币列表的步骤包括:节点根据所述交易货币的哈希值查找到所述交易货币后,将所述交易货币及其哈希值从所述确认中货币列表移至所述未花费货币列表,再根据所述货币子集内数字货币的哈希值查找到所述货币子集内的货币后,将所述货币子集内的货币及其哈希值从所述未花费货币列表移至所述已花费货币列表,以及将所述找零货币及其哈希值存储到所述未花费货币列表。
10.一种基于数字货币的交易装置,其特征在于,包括:
交易金额加密模块,用于对收到的明文交易金额进行加密以得到密文交易金额;
第一验证信息生成模块,用于生成用来验证所述密文交易金额的第一验证信息;
收款请求发送模块,用于生成收款请求以及广播该收款请求;所述收款请求中包括所述密文交易金额和所述第一验证信息;
收款请求接收模块,用于接收所述收款请求;
交易金额解密模块,用于根据所述第一验证信息对所述密文交易金额进行解密以得到所述明文交易金额;
找零金额计算模块,用于根据所述明文交易金额和所述货币列表计算明文找零金额;
找零金额加密模块,用于对所述明文找零金额进行加密以得到密文找零金额;
第二验证信息生成模块,用于生成用于验证所述密文找零金额的第二验证信息;
转账数据结构生成模块,用于生成转账数据结构;
付款请求发送模块,用于生成付款请求以及广播该付款请求;所述付款请求中包括所述密文找零金额、所述第二验证信息和所述转账数据结构。
11.根据权利要求10所述的装置,其特征在于,所述交易金额加密模块还用于:生成本次收款使用的交易私钥;存储基点值,以及使用基点加密算法对所述基点值进行加密计算以得到基点校验值;根据公式q=xG+mH计算所述密文交易金额;其中,q为所述密文交易金额,x为所述交易私钥,m为收到的所述明文交易金额,G为所述基点值,H为所述基点校验值。
12.根据权利要求11所述的装置,其特征在于,
所述第一验证信息包括第一交易证明;
所述第一验证信息生成模块还用于:将所述明文交易金额m按照预设位数n进行二进制拆分,以得到 其中mi=2i或mi=0,i表示索引位,并且0≤i<n;将所述交易私钥x按照预设位数n进行随机拆分,以得到 其中x0至xn-2均随机生成,
对于每一个索引位,根据P(xi,mi)=xiG+miH和P(xi,mi-ki)=xiG+(mi-ki)H计算P(xi,mi)和P(xi,mi-ki);其中ki=2i;对于每一个所述索引位,使用所述xi、所述P(xi,mi)和所述P(xi,mi-ki)生成该索引位的环签名Si;将全部的所述索引位、所述P(xi,mi)、所述P(xi,mi-ki)和所述Si进行拼接以得到所述第一交易证明。
13.根据权利要求11所述的装置,其特征在于,
所述第一验证信息包括第一通信消息;
所述第一验证信息生成模块还用于:生成收款端固定私钥,获取付款端固定公钥,以及使用所述基点加密算法对所述收款端固定私钥与所述付款端固定公钥的乘积进行加密计算以得到共享密钥,然后将所述明文交易金额与所述交易私钥进行拼接,再使用所述共享密钥对拼接后的结果进行加密计算以生成所述第一通信消息。
14.根据权利要求13所述的装置,其特征在于,所述交易金额解密模块还用于:存储所述基点值,以及使用所述基点加密算法对所述基点值进行加密计算得到所述基点校验值;
生成付款端固定私钥,获取收款端固定公钥,以及使用所述基点加密算法对所述付款端固定私钥与所述收款端固定公钥的乘积进行加密计算以得到共享密钥,然后拆分使用所述共享密钥对所述第一通信消息进行解密计算的结果以得到所述明文交易金额。
15.根据权利要求10所述的装置,其特征在于,所述找零金额计算模块还用于:从所述货币列表中选择收款方为所述付款端、且明文总金额大于或等于所述明文交易金额的数字货币然后组成所述货币子集,然后用所述明文总金额减去所述明文交易金额以得到明文找零金额。
16.根据权利要求15所述的装置,其特征在于,
所述收款请求中包括交易货币,该交易货币中包含所述密文交易金额和所述第一验证信息;所述付款请求中包括找零货币,该找零货币中包含所述密文找零金额和所述第二验证信息;
所述转账数据结构生成模块还用于:生成包含所述交易货币的哈希值、所述找零货币的哈希值和所述货币子集中各数字货币的哈希值的转账数据结构。
17.一种基于数字货币的交易装置,其特征在于,包括:
收款请求接收模块,用于接收收款请求;所述收款请求包括密文交易金额和第一验证信息;
收款请求验证模块,用于根据所述第一验证信息确认所述密文交易金额符合规则;
收款请求入链模块,用于将所述收款请求存储到区块链;
收款更新模块,用于根据所述收款请求更新货币列表;
付款请求接收模块,用于接收付款请求;所述付款请求包括密文找零金额、第二验证信息和转账数据结构;
付款请求验证模块,用于根据所述第二验证信息确认所述密文交易金额符合规则,以及根据所述转账数据结构确认所述货币列表符合规则;
付款请求入链模块,用于将所述付款请求存储到所述区块链;
付款更新模块,用于根据所述转账数据结构更新所述货币列表。
18.根据权利要求17所述的装置,其特征在于,
所述第一验证信息包括第一交易证明;
所述收款请求验证模块还用于:拆解所述第一交易证明,以得到全部的索引位i、P(xi,mi)、P(xi,mi-ki)和Si;确认对于每一个所述索引位,所述Si为所述P(xi,mi)和所述P(xi,mi-ki)的环签名,以及确认对于每一个所述索引位,满足P(xi,mi)-P(xi,mi-ki)=kiH,然后确认满足 以确认所述密文交易金额符合规则;其中q为所述密文交易金额,
ki=2i。
19.根据权利要求17所述的装置,其特征在于,所述装置还包括货币列表建立模块,其中,
所述货币列表建立模块用于建立用来存储货币、货币哈希值及二者对应关系的货币列表;所述货币列表包括未花费货币列表、确认中货币列表和已花费货币列表;
所述收款请求中包括交易货币,该交易货币中包含所述密文交易金额和所述第一验证信息;所述付款请求中包括找零货币,该找零货币中包含所述密文找零金额和所述第二验证信息;
所述收款更新模块还用于:将所述交易货币和所述交易货币的哈希值存储到所述确认中货币列表;
所述转账数据结构包括所述交易货币的哈希值、所述转账数据结构还包括找零货币的哈希值和所述货币子集内数字货币的哈希值;
所述付款请求验证模块还用于:根据所述交易货币的哈希值查找并确认所述交易货币存储在所述确认中货币列表,再根据所述货币子集内数字货币的哈希值查找并确认所述货币子集内的货币存储在所述未花费货币列表,以及确认所述密文交易金额与所述密文找零金额的和等于所述货币子集内数字货币的密文总金额;
所述付款更新模块还用于:根据所述交易货币的哈希值查找到所述交易货币后,将所述交易货币及其哈希值从所述确认中货币列表移至所述未花费货币列表,再根据所述货币子集内数字货币的哈希值查找到所述货币子集内的货币后,将所述货币子集内的货币及其哈希值从所述未花费货币列表移至所述已花费货币列表,以及将所述找零货币及其哈希值存储到所述未花费货币列表。
20.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,其特征在于,所述计算机指令能够被计算机或计算机系统运行,从而使该计算机或计算机系统能够执行权利要求1-9中任一项所述的方法。

说明书全文

一种基于数字货币的交易方法和装置

技术领域

[0001] 本发明涉及计算机技术领域,尤其涉及一种基于数字货币的交易方法和装置。

背景技术

[0002] 链是一种新型的分布式技术,由协议制定者在系统运行之前制定并公布规则,并开发出遵循该协议的客户端,之后由多家机构或个人作为节点,相互连接并运行该客户端,由恶意节点产生的不符合协议的数据会被其他的诚实节点抛弃,采用这种对抗性共识的方法共同维护一个总账本,达到没有一个中心化的权利机构或个人可以篡改初始协议的设想。
[0003] 第一个区块链的应用场景是比特币,实现了一种事先规定发行规则和转账逻辑的货币体系,货币发行的来源是记账节点的出块奖励Coinbase,货币转账逻辑被称为未花费交易输出(Unspent  Transaction  Output:UTXO)模型。假设用户A目前有货币这些货币的源头都来自于出块奖励,用户A希望给用户B转账7元,则用户A收集自己手中的货币,找到大于等于7的组合,发起一个以A1和A2为输入(input),以找零货币 和新生货币 为输出(output)的交易,即
这个等式关系需要由记账节点首先进行验证,通过并
写入区块链后,A1和A2就变为已花费货币,A4和B1就变成了新的未花费货币,可以作为以后UTXO结构的输入。
[0004] 由于记账节点需要验证每一笔交易是否有负值货币、是否出现超额转账、是否有货币创造等,以比特币为代表的区块链系统选择将所有用户的未花费货币信息进行明文存储,并且交易中新生成的货币信息也需要明文声明,节点才能对所有UTXO进行输入和输出相当关系的验证。
[0005] 然而,在实现本发明的过程中,发明人发现现有技术中至少存在如下问题:现实生活中,用户(企业或个人)间点对点的交易金额一般有保密需求,用户在系统内的总余额也有保密需求。传统的中心化方案由于无需合作记账,也就可以方便地设置数据访问权限,可以很好地解决隐私的问题,但用户还是希望借助区块链等分布式技术合作记账的优势来存储多方合作的其他文档和数据,然而完整的业务闭环又需要资金参与实时清结算,从而导致合作共享与交易隐私无法共存的问题。

发明内容

[0006] 有鉴于此,本发明实施例提供一种基于数字货币的交易方法和装置,能够在基于数字货币的交易过程中实现交易金额的加密,以保护用户的隐私权益。
[0007] 为实现上述目的,根据本发明实施例的一个方面,提供了一种基于数字货币的交易方法,包括:
[0008] 收款端对收到的明文交易金额进行加密以得到密文交易金额,以及生成用于验证所述密文交易金额的第一验证信息,然后生成收款请求以及广播该收款请求;所述收款请求中包括所述密文交易金额和所述第一验证信息;
[0009] 节点在接收到所述收款请求后,根据所述第一验证信息确认所述密文交易金额符合规则,然后将所述收款请求存储到区块链,以及根据所述收款请求更新货币列表;
[0010] 付款端从所述区块链获取到所述收款请求后,根据所述第一验证信息对所述密文交易金额进行解密以得到所述明文交易金额,以及根据所述明文交易金额和所述货币列表计算明文找零金额,再对所述明文找零金额进行加密以得到密文找零金额,然后生成用于验证所述密文找零金额的第二验证信息,以及生成转账数据结构,接着生成付款请求以及广播该付款请求;所述付款请求中包括所述密文找零金额、所述第二验证信息和所述转账数据结构;
[0011] 节点在接收到所述付款请求后,根据所述第二验证信息确认所述密文交易金额符合规则,以及根据所述转账数据结构确认所述货币列表符合规则,然后将所述付款请求存储到所述区块链,以及根据所述转账数据结构更新所述货币列表。
[0012] 在一些可选的实施例中,收款端对收到的明文交易金额进行加密以得到密文交易金额的步骤包括:
[0013] 收款端生成本次收款使用的交易私钥;
[0014] 收款端存储基点值,以及使用基点加密算法对所述基点值进行加密计算然后得到基点校验值;
[0015] 收款端根据公式q=xG+mH计算所述密文交易金额;其中,q为所述密文交易金额,x为所述交易私钥,m为收到的所述明文交易金额,G为所述基点值,H为所述基点校验值。
[0016] 在一些可选的实施例中,
[0017] 所述第一验证信息包括第一交易证明;
[0018] 收款端生成用于验证所述密文交易金额的第一验证信息的步骤包括:
[0019] 收款端将所述明文交易金额m按照预设位数n进行二进制拆分,以得到i其中mi=2或mi=0,i表示索引位,并且0≤i<n;
[0020] 收款端将所述交易私钥x按照预设位数n进行随机拆分,以得到 其中x0至xn-2均随机生成,
[0021] 收款端对于每一个索引位,根据P(xi,mi)=xiG+miH和P(xi,mi-ki)=xiG+(mi-ki)H计算P(xi,mi)和P(xi,mi-ki);其中ki=2i;
[0022] 收款端对于每一个所述索引位,使用所述xi、所述P(xi,mi)和所述P(xi,mi-ki)生成该索引位的环签名Si;
[0023] 收款端将全部的所述索引位、所述P(xi,mi)、所述P(xi,mi-ki)和所述Si进行拼接以得到所述第一交易证明。
[0024] 在一些可选的实施例中,节点根据所述第一验证信息确认所述密文交易金额符合规则的步骤包括:
[0025] 节点拆解所述第一交易证明,以得到全部的所述索引位、所述P(xi,mi)、所述P(xi,mi-ki)和所述Si;
[0026] 节点确认对于每一个所述索引位,所述Si为所述P(xi,mi)和所述P(xi,mi-ki)的环签名,以及确认对于每一个所述索引位,满足P(xi,mi)-P(xi,mi-ki)=kiH,然后确认满足以确认所述密文交易金额符合规则;其中ki=2i。
[0027] 在一些可选的实施例中,
[0028] 所述第一验证信息包括第一通信消息;
[0029] 收款端生成用于验证所述密文交易金额的第一验证信息的步骤包括:
[0030] 收款端生成收款端固定私钥,获取付款端固定公钥,以及使用所述基点加密算法对所述收款端固定私钥与所述付款端固定公钥的乘积进行加密计算以得到共享密钥,然后将所述明文交易金额与所述交易私钥进行拼接,再使用所述共享密钥对拼接后的结果进行加密计算以生成所述第一通信消息。
[0031] 在一些可选的实施例中,付款端根据所述第一验证信息对所述密文交易金额进行解密以得到所述明文交易金额的步骤包括:
[0032] 付款端存储所述基点值,以及使用所述基点加密算法对所述基点值进行加密计算得到所述基点校验值;
[0033] 付款端生成付款端固定私钥,获取收款端固定公钥,以及使用所述基点加密算法对所述付款端固定私钥与所述收款端固定公钥的乘积进行加密计算以得到共享密钥,然后拆分使用所述共享密钥对所述第一通信消息进行解密计算的结果以得到所述明文交易金额。
[0034] 在一些可选的实施例中,付款端根据所述明文交易金额和所述货币列表计算明文找零金额的步骤包括:
[0035] 付款端从所述货币列表中选择收款方为所述付款端、且明文总金额大于或等于所述明文交易金额的数字货币然后组成所述货币子集,然后用所述明文总金额减去所述明文交易金额以得到明文找零金额。
[0036] 在一些可选的实施例中,
[0037] 所述收款请求中包括交易货币,该交易货币中包含所述密文交易金额和所述第一验证信息;所述付款请求中包括找零货币,该找零货币中包含所述密文找零金额和所述第二验证信息;
[0038] 付款端生成转账数据结构的步骤包括:
[0039] 付款端生成包含所述交易货币的哈希值、所述找零货币的哈希值和所述货币子集中各数字货币的哈希值的转账数据结构。
[0040] 在一些可选的实施例中,
[0041] 节点根据所述收款请求更新货币列表的步骤前,还包括:节点建立用于存储货币、货币哈希值及二者对应关系的货币列表;所述货币列表包括未花费货币列表、确认中货币列表和已花费货币列表;
[0042] 节点根据所述收款请求更新货币列表的步骤包括:节点将所述交易货币和所述交易货币的哈希值存储到所述确认中货币列表;
[0043] 节点将所述付款请求存储到所述区块链的步骤前,还包括:节点根据所述交易货币的哈希值查找并确认所述交易货币存储在所述确认中货币列表,再根据所述货币子集内数字货币的哈希值查找并确认所述货币子集内的数字货币存储在所述未花费货币列表,以及确认所述密文交易金额与所述密文找零金额的和等于所述货币子集内数字货币的密文总金额;
[0044] 节点根据所述转账数据结构更新所述货币列表的步骤包括:节点根据所述交易货币的哈希值查找到所述交易货币后,将所述交易货币及其哈希值从所述确认中货币列表移至所述未花费货币列表,再根据所述货币子集内数字货币的哈希值查找到所述货币子集内的货币后,将所述货币子集内的货币及其哈希值从所述未花费货币列表移至所述已花费货币列表,以及将所述找零货币及其哈希值存储到所述未花费货币列表。
[0045] 为实现上述目的,根据本发明实施例的另一个方面,提供了一种基于数字货币的交易装置,包括:
[0046] 交易金额加密模块,用于对收到的明文交易金额进行加密以得到密文交易金额;
[0047] 第一验证信息生成模块,用于生成用来验证所述密文交易金额的第一验证信息;
[0048] 收款请求发送模块,用于生成收款请求以及广播该收款请求;所述收款请求中包括所述密文交易金额和所述第一验证信息;
[0049] 收款请求接收模块,用于接收所述收款请求;
[0050] 交易金额解密模块,用于根据所述第一验证信息对所述密文交易金额进行解密以得到所述明文交易金额;
[0051] 找零金额计算模块,用于根据所述明文交易金额和所述货币列表计算明文找零金额;
[0052] 找零金额加密模块,用于对所述明文找零金额进行加密以得到密文找零金额;
[0053] 第二验证信息生成模块,用于生成用于验证所述密文找零金额的第二验证信息;
[0054] 转账数据结构生成模块,用于生成转账数据结构;
[0055] 付款请求发送模块,用于生成付款请求以及广播该付款请求;所述付款请求中包括所述密文找零金额、所述第二验证信息和所述转账数据结构。
[0056] 在一些可选的实施例中,所述交易金额加密模块还用于:生成本次收款使用的交易私钥;存储基点值,以及使用基点加密算法对所述基点值进行加密计算以得到基点校验值;根据公式q=xG+mH计算所述密文交易金额;其中,q为所述密文交易金额,x为所述交易私钥,m为收到的所述明文交易金额,G为所述基点值,H为所述基点校验值。
[0057] 在一些可选的实施例中,
[0058] 所述第一验证信息包括第一交易证明;
[0059] 所述第一验证信息生成模块还用于:将所述明文交易金额m按照预设位数n进行二进制拆分,以得到 其中mi=2i或mi=0,i表示索引位,并且0≤i<n;将所述交易私钥x按照预设位数n进行随机拆分,以得到 其中x0至xn-2均随机生成,对于每一个索引位,根据P(xi,mi)=xiG+miH和P(xi,mi-ki)=xiG+(mi-ki)H计算P(xi,mi)和P(xi,mi-ki);其中ki=2i;对于每一个所述索引位,使用所述xi、所述P(xi,mi)和所述P(xi,mi-ki)生成该索引位的环签名Si;将全部的所述索引位、所述P(xi,mi)、所述P(xi,mi-ki)和所述Si进行拼接以得到所述第一交易证明。
[0060] 在一些可选的实施例中,
[0061] 所述第一验证信息包括第一通信消息;
[0062] 所述第一验证信息生成模块还用于:生成收款端固定私钥,获取付款端固定公钥,以及使用所述基点加密算法对所述收款端固定私钥与所述付款端固定公钥的乘积进行加密计算以得到共享密钥,然后将所述明文交易金额与所述交易私钥进行拼接,再使用所述共享密钥对拼接后的结果进行加密计算以生成所述第一通信消息。
[0063] 在一些可选的实施例中,所述交易金额解密模块还用于:存储所述基点值,以及使用所述基点加密算法对所述基点值进行加密计算得到所述基点校验值;生成付款端固定私钥,获取收款端固定公钥,以及使用所述基点加密算法对所述付款端固定私钥与所述收款端固定公钥的乘积进行加密计算以得到共享密钥,然后拆分使用所述共享密钥对所述第一通信消息进行解密计算的结果以得到所述明文交易金额。
[0064] 在一些可选的实施例中,所述找零金额计算模块还用于:从所述货币列表中选择收款方为所述付款端、且明文总金额大于或等于所述明文交易金额的数字货币然后组成所述货币子集,然后用所述明文总金额减去所述明文交易金额以得到明文找零金额。
[0065] 在一些可选的实施例中,
[0066] 所述收款请求中包括交易货币,该交易货币中包含所述密文交易金额和所述第一验证信息;所述付款请求中包括找零货币,该找零货币中包含所述密文找零金额和所述第二验证信息;
[0067] 所述转账数据结构生成模块还用于:生成包含所述交易货币的哈希值、所述找零货币的哈希值和所述货币子集中各数字货币的哈希值的转账数据结构。
[0068] 为实现上述目的,根据本发明实施例的又一个方面,提供了一种基于数字货币的交易装置,包括:
[0069] 收款请求接收模块,用于接收收款请求;所述收款请求包括密文交易金额和第一验证信息;
[0070] 收款请求验证模块,用于根据所述第一验证信息确认所述密文交易金额符合规则;
[0071] 收款请求入链模块,用于将所述收款请求存储到区块链;
[0072] 收款更新模块,用于根据所述收款请求更新货币列表;
[0073] 付款请求接收模块,用于接收付款请求;所述付款请求包括密文找零金额、第二验证信息和转账数据结构;
[0074] 付款请求验证模块,用于根据所述第二验证信息确认所述密文交易金额符合规则,以及根据所述转账数据结构确认所述货币列表符合规则;
[0075] 付款请求入链模块,用于将所述付款请求存储到所述区块链;
[0076] 付款更新模块,用于根据所述转账数据结构更新所述货币列表。
[0077] 在一些可选的实施例中,
[0078] 所述第一验证信息包括第一交易证明;
[0079] 所述收款请求验证模块还用于:拆解所述第一交易证明,以得到全部的索引位i、P(xi,mi)、P(xi,mi-ki)和Si;确认对于每一个所述索引位,所述Si为所述P(xi,mi)和所述P(xi,mi-ki)的环签名,以及确认对于每一个所述索引位,满足P(xi,mi)-P(xi,mi-ki)=kiH,然后确认满足 以确认所述密文交易金额符合规则;其中ki=2i。
[0080] 在一些可选的实施例中,所述装置还包括货币列表建立模块,其中,[0081] 所述货币列表建立模块用于建立用来存储货币、货币哈希值及二者对应关系的货币列表;所述货币列表包括未花费货币列表、确认中货币列表和已花费货币列表;
[0082] 所述收款请求中包括交易货币,该交易货币中包含所述密文交易金额和所述第一验证信息;所述付款请求中包括找零货币,该找零货币中包含所述密文找零金额和所述第二验证信息;
[0083] 所述收款更新模块还用于:将所述交易货币和所述交易货币的哈希值存储到所述确认中货币列表;
[0084] 所述转账数据结构包括所述交易货币的哈希值、所述转账数据结构还包括找零货币的哈希值和所述货币子集内数字货币的哈希值;
[0085] 所述付款请求验证模块还用于:根据所述交易货币的哈希值查找并确认所述交易货币存储在所述确认中货币列表,再根据所述货币子集内数字货币的哈希值查找并确认所述货币子集内的货币存储在所述未花费货币列表,以及确认所述密文交易金额与所述密文找零金额的和等于所述货币子集内数字货币的密文总金额;
[0086] 所述付款更新模块还用于:根据所述交易货币的哈希值查找到所述交易货币后,将所述交易货币及其哈希值从所述确认中货币列表移至所述未花费货币列表,再根据所述货币子集内数字货币的哈希值查找到所述货币子集内的货币后,将所述货币子集内的货币及其哈希值从所述未花费货币列表移至所述已花费货币列表,以及将所述找零货币及其哈希值存储到所述未花费货币列表。
[0087] 为实现上述目的,根据本发明实施例的再一个方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,其特征在于,所述计算机指令能够被计算机或计算机系统运行,从而使该计算机或计算机系统能够执行所述的基于数字货币的交易方法。
[0088] 上述发明中的一个实施例具有如下优点或有益效果:因为采用基于分布式账本技术的收付款交易的过程中,收款端和付款端对交易中涉及的明文金额进行加密以得到密文金额,并生成相应的验证消息,用以对密文金额进行验证或者解密的技术手段,所以克服了现有的分布式账本技术中资金难以保密的技术问题,进而达到保障合作共享且保护交易隐私的技术效果。
[0089] 上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。附图说明
[0090] 附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
[0091] 图1是根据本发明实施例的基于数字货币的交易方法的主要步骤的示意图;
[0092] 图2是根据本发明实施例的基于数字货币的交易装置的主要模块的示意图;
[0093] 图3是根据本发明另一实施例的基于数字货币的交易装置的主要模块的示意图。

具体实施方式

[0094] 以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0095] 图1是根据本发明实施例的基于数字货币的交易方法的主要步骤的示意图。
[0096] 如图1所示,根据本发明实施例提供的一种基于数字货币的交易方法,包括:
[0097] S10,收款端对收到的明文交易金额进行加密以得到密文交易金额,以及生成用于验证所述密文交易金额的第一验证信息,然后生成收款请求以及广播该收款请求;所述收款请求中包括所述密文交易金额和所述第一验证信息。
[0098] S11,节点在接收到所述收款请求后,根据所述第一验证信息确认所述密文交易金额符合规则,然后将所述收款请求存储到区块链,以及根据所述收款请求更新货币列表。
[0099] S12,付款端从所述区块链获取到所述收款请求后,根据所述第一验证信息对所述密文交易金额进行解密以得到所述明文交易金额,以及根据所述明文交易金额和所述货币列表计算明文找零金额,再对所述明文找零金额进行加密以得到密文找零金额,然后生成用于验证所述密文找零金额的第二验证信息,以及生成转账数据结构,接着生成付款请求以及广播该付款请求;所述付款请求中包括所述密文找零金额、所述第二验证信息和所述转账数据结构。
[0100] S13,节点在接收到所述付款请求后,根据所述第二验证信息确认所述密文交易金额符合规则,以及根据所述转账数据结构确认所述货币列表符合规则,然后将所述付款请求存储到所述区块链,以及根据所述转账数据结构更新所述货币列表。
[0101] 在一些可选的实施例中,所述收款请求中还包括收款时间戳,为了便于发送和接收以及记录,所述收款请求中还包括收款方地址和付款方地址。为了便于识别,所述收款请求在广播前,由所述收款端使用收款端固定私钥对其进行签名。所述付款请求中还包括付款时间戳。为了便于发送和接收以及记录,所述付款请求中还包括收款方地址和付款方地址。为了便于识别,所述付款请求在广播前,由所述付款端使用付款端固定私钥对其进行签名。
[0102] 从上面所述可以看出,本发明实施例因为采用基于分布式账本技术的收付款交易的过程中,收款端和付款端对交易中涉及的明文金额进行加密以得到密文金额,并生成相应的验证消息,用以对密文金额进行验证或者解密的技术手段,所以克服了现有的分布式账本技术中资金难以保密的技术问题,进而达到保障合作共享且保护交易隐私的技术效果。
[0103] 在一些可选的实施例中,收款端对收到的明文交易金额进行加密以得到密文交易金额的步骤包括:
[0104] 收款端生成本次收款使用的交易私钥;收款端存储基点值,以及使用基点加密算法对所述基点值进行加密计算以得到基点校验值;收款端根据公式q=xG+mH计算所述密文交易金额;其中,q为所述密文交易金额,x为所述交易私钥,m为收到的所述明文交易金额,G为所述基点值,H为所述基点校验值。其中,交易私钥仅用于本次收付款,每次进行新的交易时都会生成一个新的交易私钥。
[0105] 所述基点加密算法可以是例如SHA256算法、RIPEMD-160算法或Base58编码等。基点加密算法的目的是通过预设的基点值G计算得到一个无人知晓私钥的公开公钥,即基点校验值H;而使用例如SHA256这类哈希算法得出的基点校验值H比较有公信,当然也可以采用其他能够达到相同或相似效果的算法。基点加密算法需要保证计算得到的H与G之间没有类似与H=kG这种简单地对应关系,从而使得q=xG+mH在q、G、H均已知的时候,x和m的值有唯一解。
[0106] 在一些可选的实施例中,所述第一验证信息包括第一交易证明;
[0107] 收款端生成用于验证所述密文交易金额的第一验证信息的步骤包括:
[0108] 收款端将所述明文交易金额m按照预设位数n进行二进制拆分,以得到其中mi=2i或mi=0,i表示索引位,并且0≤i<n;
[0109] 收款端将所述交易私钥x按照预设位数n进行随机拆分,以得到 其中x0至xn-2均随机生成, 在拆分时,预设位数n越大则加密程度越高,但是也会提高计算成本,并且多余的位数并不具备实际适用性,所以n的取值通常在64比较合适,根据情况也可以选择32或者128;
[0110] 收款端对于每一个索引位,根据P(xi,mi)=xiG+miH和P(xi,mi-ki)=xiG+(mi-ki)H计算P(xi,mi)和P(xi,mi-ki);其中ki=2i;
[0111] 收款端对于每一个所述索引位,使用所述xi、所述P(xi,mi)和所述P(xi,mi-ki)生成该索引位的环签名Si;
[0112] 收款端将全部的所述索引位、所述P(xi,mi)、所述P(xi,mi-ki)和所述Si进行拼接以得到所述第一交易证明。
[0113] 在一些可选的实施例中,节点根据所述第一验证信息确认所述密文交易金额符合规则的步骤包括:
[0114] 节点拆解所述第一交易证明,以得到全部的所述索引位、所述P(xi,mi)、所述P(xi,mi-ki)和所述Si;
[0115] 节点确认对于每一个所述索引位,所述Si为所述P(xi,mi)和所述P(xi,mi-ki)的环签名,以及确认对于每一个所述索引位,满足P(xi,mi)-P(xi,mi-ki)=kiH,然后确认满足从而可以确认密文交易金额q对应的明文交易金额在0-2n范围内,以确认所述密文交易金额符合规则;其中ki=2i。
[0116] 在一些可选的实施例中,所述第一验证信息包括第一通信消息;
[0117] 收款端生成用于验证所述密文交易金额的第一验证信息的步骤包括:
[0118] 收款端生成收款端固定私钥,获取付款端固定公钥,以及使用所述基点加密算法对所述收款端固定私钥与所述付款端固定公钥的乘积进行加密计算以得到共享密钥,然后将所述明文交易金额与所述交易私钥进行拼接,再使用所述共享密钥对拼接后的结果进行加密计算以生成所述第一通信消息。
[0119] 在一些可选的实施例中,付款端根据所述第一验证信息对所述密文交易金额进行解密以得到所述明文交易金额的步骤包括:
[0120] 付款端存储所述基点值,以及使用所述基点加密算法对所述基点值进行加密计算得到所述基点校验值;
[0121] 付款端生成付款端固定私钥,获取收款端固定公钥,以及使用所述基点加密算法对所述付款端固定私钥与所述收款端固定公钥的乘积进行加密计算以得到共享密钥,然后拆分使用所述共享密钥对所述第一通信消息进行解密计算的结果以得到所述明文交易金额。
[0122] 需要说明的是,由于第一通信消息采用了付款端和收款端其中一端的固定私钥以及另一端的固定公钥进行加密,所以只有付款端和收款端可以对第一通信息消息进行解密,从而对密文交易金额进行解密。同理,任意的用户端只能解密并获取到与自身有关的(自身为付款方或者收款方的)数字货币中的明文金额,而无法获取与自身无关的数字货币中的明文交易金额,这样一来就保证了交易过程和交易账本的私密性。
[0123] 在一些可选的实施例中,付款端根据所述明文交易金额和所述货币列表计算明文找零金额的步骤包括:
[0124] 付款端从所述货币列表中选择收款方为所述付款端、且明文总金额大于或等于所述明文交易金额的数字货币然后组成所述货币子集,然后用所述明文总金额减去所述明文交易金额以得到明文找零金额。需要说明的是,如果所述货币子集中数字货币的明文总金额等于所述明文交易金额,则计算得到的所述明文找零金额为零;在这种情况下,可以依旧按照明文找零金额不为0的方法进行后续处理,也可以设置单独的判断条件,不再处理后续出现明文找零金额及与其相关的内容。如果按照明文找零金额不为0的方法进行后续处理,则可以与后续步骤中节点对密文交易金额、密文找零金额以及货币子集中数字货币的明文总金额的验证保持一致,能够提高方法的整体性和安全性。
[0125] 在一些可选的实施例中,所述密文找零金额的生成、解密和验证的方式参考所述密文交易金额;第二验证信息的生成和使用参考所述第一验证信息。需要说明的是,在生成第二验证信息时,由付款端生成本次付款使用的付款交易私钥,在另外一些实施例中,为了满足验证条件,所述付款交易私钥还要满足一定条件,在后续实施例中进行说明;如果需要生成第二通信消息,则付款端根据付款端固定私钥和付款端固定公钥,参照所述第一验证消息的生成方式进行生成。
[0126] 在一些可选的实施例中,
[0127] 节点根据所述收款请求更新货币列表的步骤前,还包括:节点建立用于存储货币、货币哈希值及二者对应关系的货币列表;所述货币列表包括未花费货币列表、确认中货币列表和已花费货币列表;
[0128] 节点根据所述收款请求更新货币列表的步骤包括:节点将所述交易货币和所述交易货币的哈希值存储到所述确认中货币列表;
[0129] 节点将所述付款请求存储到所述区块链的步骤前,还包括:节点根据所述交易货币的哈希值查找并确认所述交易货币存储在所述确认中货币列表,再根据所述货币子集内数字货币的哈希值查找并确认所述货币子集内的数字货币存储在所述未花费货币列表,以及确认所述密文交易金额与所述密文找零金额的和等于所述货币子集内数字货币的密文总金额;
[0130] 节点根据所述转账数据结构更新所述货币列表的步骤包括:节点根据所述交易货币的哈希值查找到所述交易货币后,将所述交易货币及其哈希值从所述确认中货币列表移至所述未花费货币列表,再根据所述货币子集内数字货币的哈希值查找到所述货币子集内的货币后,将所述货币子集内的货币及其哈希值从所述未花费货币列表移至所述已花费货币列表,以及将所述找零货币及其哈希值存储到所述未花费货币列表。
[0131] 本实施例中,因为要确认所述密文交易金额与所述密文找零金额的和等于所述货币子集内数字货币的密文总金额,所以当所述货币子集中数字货币的明文总金额等于所述明文交易金额,即所述明文找零金额的值为0时,仍然要参照对明文交易金额进行加密的方法对明文找零金额进行加密;此外,在对明文找零金额进行加密时,由付款端生成付款交易私钥,这里的付款交易私钥的生成方式与收款端生成交易私钥的方式不同,并非随机生成,而是以所述货币子集中数字货币的交易私钥之和减去所述付款端的交易私钥得到的结果作为所述付款端的付款交易私钥,这样才能够在明文找零金额为0时,仍然满足密文交易金额与密文找零金额的和等于货币子集内数字货币的密文总金额,从而完成验证过程。
[0132] 需要说明的是,任意用户端如果需要查询自身的账户余额,则可以收集货币列表的未花费货币列表中,收款方地址为自身地址的货币,根据这些货币付款端的公钥逐个计算每个货币的共享密钥,并使用所述共享密钥分别解密这些货币中的密文金额,以得到每个货币的明文金额,将这些明文金额相加即可得到自身的账户余额。
[0133] 在一些可选的实施例中,付款端从所述区块链获取到所述收款请求后,还可能拒绝进行付款;此时,所述方法还包括:
[0134] 付款端获取所述收款请求中包含的交易货币,以及计算所述交易货币的哈希值,然后生成拒绝付款请求以及广播该拒绝付款请求;所述拒绝付款请求中包括所述交易货币的哈希值;
[0135] 节点端在接收到所述拒绝付款请求后,根据所述交易货币的哈希值在所述货币列表中查找所述交易货币,以及在确定所述交易货币存在于所述确认中货币列表且所述交易货币的付款方地址为所述付款端的地址后,将所述交易货币从所述货币列表中删除。
[0136] 在一些可选的实施例中,收款端还可以在付款端没有发起付款请求或拒绝付款请求前,发起撤回收款请求;此时,所述方法还包括:
[0137] 收款端计算所述交易货币的哈希值,然后生成撤回收款请求以及广播该撤回收款请求;所述撤回收款请求中包括所述交易货币的哈希值;
[0138] 节点端在接收到所述撤回收款请求后,根据所述交易货币的哈希值在所述货币列表中查找所述交易货币,以及在确定所述交易货币存在于所述确认中货币列表且所述交易货币的收款方地址为所述收款端的地址后,将所述交易货币从所述货币列表中删除。
[0139] 在一些可选的实施例中,所述交易货币、找零货币和数字货币的数据结构如表1所示:
[0140] 表1货币数据结构表
[0141]字段 缩写 类型 解释
AddressFrom Dx 地址 付款方地址
AddressTo Dx 地址 收款方地址
Money q 公钥 密文金额
Proof f Bytes 交易证明
Message c Bytes 通信消息
Timestamp s 时间 毫秒级时间戳
[0142] 在一些可选的实施例中,所述交易证明的数据结构如表2所示:
[0143] 表2交易证明数据结构表
[0144]
[0145]
[0146] 在一些可选的实施例中,所述转账数据结构的可选数据结构如表3所示:
[0147] 表3转账数据结构表
[0148]字段 类型 解释
Inputs Hash列表 输入货币哈希列表
Outputs Hash列表 输出货币哈希列表
[0149] 其中,所述输入货币哈希列表中包括货币子集中数字货币的哈希值;所述输出货币哈希列表中包括所述交易货币的哈希值,以及在存在找零时,还包括所述找零货币的哈希值。
[0150] 图2是根据本发明实施例的基于数字货币的交易装置的主要模块的示意图。
[0151] 如图2所示,本发明实施例提供一种基于数字货币的交易装置200,主要应用于具备收款和付款功能的用户端,包括:
[0152] 交易金额加密模块201,用于对收到的明文交易金额进行加密以得到密文交易金额;
[0153] 第一验证信息生成模块202,用于生成用来验证所述密文交易金额的第一验证信息;
[0154] 收款请求发送模块203,用于生成收款请求以及广播该收款请求;所述收款请求中包括所述密文交易金额和所述第一验证信息;
[0155] 收款请求接收模块204,用于接收所述收款请求;
[0156] 交易金额解密模块205,用于根据所述第一验证信息对所述密文交易金额进行解密以得到所述明文交易金额;
[0157] 找零金额计算模块206,用于根据所述明文交易金额和所述货币列表计算明文找零金额;
[0158] 找零金额加密模块207,用于对所述明文找零金额进行加密以得到密文找零金额;
[0159] 第二验证信息生成模块208,用于生成用于验证所述密文找零金额的第二验证信息;
[0160] 转账数据结构生成模块209,用于生成转账数据结构;
[0161] 付款请求发送模块210,用于生成付款请求以及广播该付款请求;所述付款请求中包括所述密文找零金额、所述第二验证信息和所述转账数据结构。
[0162] 在一些可选的实施例中,所述交易金额加密模块201还用于:生成本次收款使用的交易私钥;存储基点值,以及使用基点加密算法对所述基点值进行加密计算以得到基点校验值;根据公式q=xG+mH计算所述密文交易金额;其中,q为所述密文交易金额,x为所述交易私钥,m为收到的所述明文交易金额,G为所述基点值,H为所述基点校验值。
[0163] 所述第一验证信息包括第一交易证明;
[0164] 所述第一验证信息生成模块202还用于:将所述明文交易金额m按照预设位数n进行二进制拆分,以得到 其中mi=2i或mi=0,i表示索引位,并且0≤i<n;将所述交易私钥x按照预设位数n进行随机拆分,以得到 其中x0至xn-2均随机生成,对于每一个索引位,根据P(xi,mi)=xiG+miH和P(xi,mi-ki)=xiG+(mi-ki)H计算P(xi,mi)和P(xi,mi-ki);其中ki=2i;对于每一个所述索引位,使用所述xi、所述P(xi,mi)和所述P(xi,mi-ki)生成该索引位的环签名Si;将全部的所述索引位、所述P(xi,mi)、所述P(xi,mi-ki)和所述Si进行拼接以得到所述第一交易证明。
[0165] 所述第一验证信息包括第一通信消息;
[0166] 所述第一验证信息生成模块202还用于:生成收款端固定私钥,获取付款端固定公钥,以及使用所述基点加密算法对所述收款端固定私钥与所述付款端固定公钥的乘积进行加密计算以得到共享密钥,然后将所述明文交易金额与所述交易私钥进行拼接,再使用所述共享密钥对拼接后的结果进行加密计算以生成所述第一通信消息。
[0167] 在一些可选的实施例中,所述交易金额解密模块205还用于:存储所述基点值,以及使用所述基点加密算法对所述基点值进行加密计算得到所述基点校验值;生成付款端固定私钥,获取收款端固定公钥,以及使用所述基点加密算法对所述付款端固定私钥与所述收款端固定公钥的乘积进行加密计算以得到共享密钥,然后拆分使用所述共享密钥对所述第一通信消息进行解密计算的结果以得到所述明文交易金额。
[0168] 在一些可选的实施例中,所述找零金额计算模块206还用于:从所述货币列表中选择收款方为所述付款端、且明文总金额大于或等于所述明文交易金额的数字货币然后组成所述货币子集,然后用所述明文总金额减去所述明文交易金额以得到明文找零金额。
[0169] 在一些可选的实施例中,
[0170] 所述收款请求中包括交易货币,该交易货币中包含所述密文交易金额和所述第一验证信息;所述付款请求中包括找零货币,该找零货币中包含所述密文找零金额和所述第二验证信息;
[0171] 所述转账数据结构生成模块209还用于:生成包含所述交易货币的哈希值、所述找零货币的哈希值和所述货币子集中各数字货币的哈希值的转账数据结构。
[0172] 图3是根据本发明另一实施例的基于数字货币的交易装置的主要模块的示意图。
[0173] 如图3所示,本发明另一实施例提供一种基于数字货币的交易装置300,主要应用于具备验证功能的节点,包括:
[0174] 收款请求接收模块301,用于接收收款请求;所述收款请求包括密文交易金额和第一验证信息;
[0175] 收款请求验证模块302,用于根据所述第一验证信息确认所述密文交易金额符合规则;
[0176] 收款请求入链模块303,用于将所述收款请求存储到区块链;
[0177] 收款更新模块304,用于根据所述收款请求更新货币列表;
[0178] 付款请求接收模块305,用于接收付款请求;所述付款请求包括密文找零金额、第二验证信息和转账数据结构;
[0179] 付款请求验证模块306,用于根据所述第二验证信息确认所述密文交易金额符合规则,以及根据所述转账数据结构确认所述货币列表符合规则;
[0180] 付款请求入链模块307,用于将所述付款请求存储到所述区块链;
[0181] 付款更新模块308,用于根据所述转账数据结构更新所述货币列表。
[0182] 在一些可选的实施例中,所述第一验证信息包括第一交易证明;
[0183] 所述收款请求验证模块302还用于:拆解所述第一交易证明,以得到全部的索引位i、P(xi,mi)、P(xi,mi-ki)和Si;确认对于每一个所述索引位,所述Si为所述P(xi,mi)和所述P(xi,mi-ki)的环签名,以及确认对于每一个所述索引位,满足P(xi,mi)-P(xi,mi-ki)=kiH,然i后确认满足 以确认所述密文交易金额符合规则;其中ki=2。
[0184] 在一些可选的实施例中,所述装置还包括货币列表建立模块309,
[0185] 所述货币列表建立模块309用于建立用来存储货币、货币哈希值及二者对应关系的货币列表;所述货币列表包括未花费货币列表、确认中货币列表和已花费货币列表;
[0186] 所述收款请求中包括交易货币,该交易货币中包含所述密文交易金额和所述第一验证信息;所述付款请求中包括找零货币,该找零货币中包含所述密文找零金额和所述第二验证信息;
[0187] 所述收款更新模块304:将所述交易货币和所述交易货币的哈希值存储到所述确认中货币列表;
[0188] 所述转账数据结构包括所述交易货币的哈希值、所述转账数据结构还包括找零货币的哈希值和所述货币子集内数字货币的哈希值;
[0189] 所述付款请求验证模块306还用于:根据所述交易货币的哈希值查找并确认所述交易货币存储在所述确认中货币列表,再根据所述货币子集内数字货币的哈希值查找并确认所述货币子集内的货币存储在所述未花费货币列表,以及确认所述密文交易金额与所述密文找零金额的和等于所述货币子集内数字货币的密文总金额;
[0190] 所述付款更新模块308还用于:根据所述交易货币的哈希值查找到所述交易货币后,将所述交易货币及其哈希值从所述确认中货币列表移至所述未花费货币列表,再根据所述货币子集内数字货币的哈希值查找到所述货币子集内的货币后,将所述货币子集内的货币及其哈希值从所述未花费货币列表移至所述已花费货币列表,以及将所述找零货币及其哈希值存储到所述未花费货币列表。
[0191] 上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈