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

使用数字货币的交易方法和装置

阅读:420发布:2020-09-09

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

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

说明书全文

使用数字货币的交易方法和装置

技术领域

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

背景技术

[0002] 链是一种新型的分布式技术,由协议制定者在系统运行之前制定并公布规则,并开发出遵循该协议的客户端,之后由多家机构或个人作为节点,相互连接并运行该客户端,由恶意节点产生的不符合协议的数据会被其他的诚实节点抛弃,采用这种对抗性共识的方法共同维护一个总账本,达到没有一个中心化的权利机构或个人可以篡改初始协议的设想。
[0003] 第一个区块链的应用场景是比特币,实现了一种事先规定发行规则和转账逻辑的货币体系,货币发行的来源是记账节点的出块奖励Coinbase,货币转账逻辑被称为未花费交易输出(Unspent Transaction Output:UTXO)模型。假设用户A目前有货币A1(¥5)、A2(¥4)、A3(¥1),这些货币的源头都来自于出块奖励,用户A希望给用户B转账7元,则用户A收集自己手中的货币,找到大于等于7的组合,发起一个以A1和A2为输入(input),以找零货币A4(¥2)和新生货币B1(¥7)为输出(output)的交易,即A1(¥5)+A2(¥4)=>A4(¥2)+B1(¥7),这个等式关系需要由记账节点首先进行验证,通过并写入区块链后,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进行二进制拆分,以得到其中mi=2i或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] 在一些可选的实施例中,所述交易金额加密模块还用于:生成本次付款使用的交易私钥;存储基点值,以及使用基点加密算法对所述基点值进行加密计算以得到基点校验值;根据公式q=xG+mH计算所述密文交易金额;其中,q为所述密文交易金额,x为所述交易私钥,m为收到的所述明文交易金额,G为所述基点值,H为所述基点校验值。
[0048] 在一些可选的实施例中,
[0049] 所述第一验证信息包括第一交易证明;
[0050] 所述第一验证信息生成模块还用于:将所述明文交易金额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进行拼接以得到所述第一交易证明。
[0051] 在一些可选的实施例中,
[0052] 所述第一验证信息包括第一通信消息;
[0053] 所述第一验证信息生成模块还用于:生成付款端固定私钥,获取收款端固定公钥,以及使用所述基点加密算法对所述付款端固定私钥与所述收款端固定公钥的乘积进行加密计算以得到共享密钥,然后将所述明文交易金额与所述交易私钥进行拼接,再使用所述共享密钥对拼接后的结果进行加密计算以生成所述第一通信消息。
[0054] 在一些可选的实施例中,所述找零金额计算模块还用于:从货币列表中选择收款方为所述付款端、且明文总金额大于或等于所述明文交易金额的数字货币然后组成货币子集,再用所述明文总金额减去所述明文交易金额以得到明文找零金额。
[0055] 在一些可选的实施例中,所述付款请求中包括交易货币和找零货币,所述交易货币中包含所述密文交易金额和所述第一验证信息,所述找零货币中包含所述密文找零金额和所述第二验证信息;
[0056] 所述付款请求还包括转账数据结构;
[0057] 所述装置还包括:
[0058] 转账数据结构生成模块,用于生成包含所述交易货币的哈希值、所述找零货币的哈希值和所述货币子集中各数字货币的哈希值的转账数据结构。
[0059] 为实现上述目的,根据本发明实施例的又一个方面,提供了使用数字货币的交易装置,包括:
[0060] 付款请求接收模块,用于接收付款请求;所述付款请求包括密文交易金额、第一验证信息、密文找零金额和第二验证信息;
[0061] 交易金额验证模块,用于根据所述第一验证信息确认所述密文交易金额符合规则;
[0062] 找零金额验证模块,用于根据所述第二验证信息确认所述密文找零金额符合规则;
[0063] 付款请求入链模块,用于将所述付款请求存储到区块链。
[0064] 在一些可选的实施例中,
[0065] 所述第一验证信息包括第一交易证明;
[0066] 所述交易金额验证模块还用于:拆解所述第一交易证明,以得到全部的索引位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。
[0067] 在一些可选的实施例中,所述装置还包括货币列表建立模块和货币列表验证模块,其中,
[0068] 所述货币列表建立模块用于建立用来存储货币、货币哈希值及二者对应关系的货币列表;所述货币列表包括未花费货币列表、确认中货币列表和已花费货币列表;
[0069] 所述付款请求中包括交易货币和找零货币,所述交易货币中包含所述密文交易金额和所述第一验证信息,所述找零货币中包含所述密文找零金额和所述第二验证信息;
[0070] 所述转账数据结构包括所述交易货币的哈希值、所述转账数据结构还包括找零货币的哈希值和所述货币子集内数字货币的哈希值;
[0071] 所述货币列表验证模块用于:根据所述交易货币的哈希值查找并确认所述交易货币存储在所述确认中货币列表,再根据所述货币子集内数字货币的哈希值查找并确认所述货币子集内的货币存储在所述未花费货币列表,以及确认所述密文交易金额与所述密文找零金额的和等于所述货币子集内数字货币的密文总金额。
[0072] 为实现上述目的,根据本发明实施例的再一个方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,其特征在于,所述计算机指令能够被计算机或计算机系统运行,从而使该计算机或计算机系统能够执行所述的使用数字货币的交易方法。
[0073] 上述发明中的一个实施例具有如下优点或有益效果:因为采用基于分布式账本技术的付款交易的过程中,付款端对交易中涉及的明文金额进行加密以得到密文金额,并生成相应的验证消息,用以对密文金额进行验证或者解密的技术手段,所以克服了现有的分布式账本技术中资金难以保密的技术问题,进而达到保障合作共享且保护交易隐私的技术效果。
[0074] 上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。附图说明
[0075] 附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
[0076] 图1是根据本发明实施例的使用数字货币的交易方法的主要步骤的示意图;
[0077] 图2是根据本发明实施例的使用数字货币的交易装置的主要模块的示意图;
[0078] 图3是根据本发明另一实施例的使用数字货币的交易装置的主要模块的示意图。

具体实施方式

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

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

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

申请试用

分析报告

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

申请试用

QQ群二维码
意见反馈