1.一种基于零知识证明的交易方法,其特征在于,包括:区块链上的第一节点接收到交易发起方发送的交易转账请求时,为所述交易转账请求生成对应的隐私交易地址;
在所述区块链上广播所述隐私交易地址;
所述交易发起方与所述交易接收方,利用所述隐私交易地址进行交易。
2.根据权利要求1所述的基于零知识证明的交易方法,其特征在于,在所述接收到交易发起方发送的交易转账请求之后,在所述为所述交易转账请求生成对应的隐私交易地址之前,进一步包括:解析所述交易转账请求相关的交易信息;
根据所述交易信息,为所述交易发起方计算第一交易集合,利用交易接收方的一个公钥加密所述第一交易集合;
将加密后的所述第一交易集合发布到所在区块链上;
在接收到所述交易接收方确定所述第一交易集合为真后,执行所述为所述交易转账请求生成对应的隐私交易地址。
3.根据权利要求1所述的基于零知识证明的交易方法,其特征在于,进一步包括:为每一个区块链注册用户分配两个公钥和私钥;
所述交易发起方和所述交易接收方均为所述区块链注册用户;
所述为所述交易转账请求生成对应的隐私交易地址,包括:利用下述隐私交易地址计算公式,生成隐私交易地址;
交易地址计算公式:
Sadd=sha256(M×r)×Q+N
其中,所述Sadd表征所述隐私交易地址;所述sha256()表征256位的哈希算法;所述M和N表征所述交易接收方的两个公钥;所述r表征所述区块链上一个共识参数;所述Q表征所述隐私交易地址的公钥;所述N表征所述交易接收方的公钥;
所述利用所述隐私交易地址进行交易,包括:利用下述随机数计算公式,为所述交易发起方计算随机数;
随机数计算公式:
R=r×Q
其中,所述R表征所述交易发起方对应的随机数;所述r表征所述区块链上一个共识参数;所述Q表征所述隐私交易地址的公钥;
利用所述隐私交易地址、所述交易发起方对应的随机数以及交易金额,组成广播数组Ub=[Sadd,R,W],并广播所述广播数组,其中,Ub表征所述广播数组;所述W表征交易金额;
基于所述广播数组,进行资金转账交易。
4.根据权利要求3所述的基于零知识证明的交易方法,其特征在于,所述基于所述广播数组,进行资金转账交易,包括:区块链上的第二节点接收到所述交易接收方支配所述隐私交易地址上的资金时,利用下述隐私交易地址查找公式,计算待查找隐私交易地址;
P=sha256(m×R)×Q′+N
其中,所述P表征待查找隐私交易地址;所述sha256()表征256位的哈希算法;所述m表征与公钥M对应的私钥;所述R表征所述交易发起方对应的随机数;所述Q′表征目标隐私交易地址的公钥;所述N表征所述交易接收方的公钥;
当所述P与目标广播数组中的目标隐私交易地址绝对相同时,锁定所述目标隐私交易地址;
利用下述私钥恢复公式,计算所述目标隐私交易地址的私钥;
私钥恢复公式:
Pk=sha256(m×R)+n
其中,所述Pk表征所述目标隐私交易地址的私钥;所述sha256()表征256位的哈希算法;所述m表征与公钥M对应的私钥;所述R表征所述交易发起方对应的随机数;所述n表征与公钥N对应的私钥;
利用所述目标隐私交易地址的私钥和所述交易接收方的签名,支配所述目标隐私交易地址上的资金。
5.根据权利要求2所述的基于零知识证明的交易方法,其特征在于,进一步包括:为所述交易发起方设置第一同态加密函数,为所述交易接收方设置第一同态解密函数,其中,所述第一同态加密函数与所述第一同态解密函数,满足下述第一加密-解密关系式;
第一加密-解密关系式:
(C1+C2+…+Cn)×r=D1(E1(r×C1)+E1(r×C2)+…+E1(r×Cn))其中,C1,C2,...,Cn表征各个交易细节;r表征所述区块链上一个共识参数;D1()表征所述第一同态解密函数;E1()表征所述第一同态加密函数;
所述根据所述交易信息,为所述交易发起方计算第一交易集合,包括:根据下述发起交易计算公式,计算所述交易发起方的第一交易集合;
发起交易计算公式:
T={SignA,Ua,Ub,E1(r×C1),E1(r×C2),...,E1(r×Cn),hash(C1,C2,...Cn)}其中,T表征所述第一交易集合;SignA表征所述交易发起方的签名;Ua表征所述交易发起方的身份标识;Ub表征所述交易接收方的身份标识;r表征所述区块链上一个共识参数;E1()表征所述第一同态加密函数;C1,C2,...,Cn表征各个交易细节;hash()表征哈希算法。
6.根据权利要求2或5所述的基于零知识证明的交易方法,其特征在于,所述交易接收方确定所述第一交易集合为真,包括:在所述区块链上的第二节点上,所述交易接收方利用自身私钥解密所述第一交易集合;
利用所述第一同态解密函数解析所述第一交易集合中的各个所述交易细节;
在解析出的各个所述交易细节满足所述交易接收方预设的第一交易限制条件时,确定所述第一交易集合为真。
7.根据权利要求1所述的基于零知识证明的交易方法,其特征在于,进一步包括:为所述交易发起方设置第二同态解密函数,为所述交易接收方设置第二同态加密函数,其中,所述第二同态加密函数与所述第二同态解密函数,满足下述第二加密-解密关系式;
第二加密-解密关系式:
(G1+G2+…+Gm)×r=D2(E2(r×G1)+E2(r×G2)+…+E2(r×Gm))其中,G1,G2,...,Gm表征所述交易接收方发布的售卖虚拟产品的各个产品细节;r表征所述区块链上一个共识参数;D2()表征所述第二同态解密函数;E2()表征所述第二同态加密函数;
在所述接收交易发起方发送的交易转账请求之前,进一步包括:区块链上的第二节点根据所述交易接收方发布的虚拟产品的各个产品细节,利用下述产品计算公式,计算第二交易集合;
产品计算公式:
M={SignB,Ub,E2(r×G1),E2(r×G2),...,E2(r×Gm),hash(G1,G2,...Gm)}其中,M表征所述第二交易集合;SignB表征所述交易接收方的签名;U表征所述交易接收方的身份标识;r表征所述区块链上一个共识参数;E2()表征所述第二同态加密函数;G1,G2,...Gm表征虚拟产品的各个产品细节;hash()表征哈希算法;
所述第二节点将所述第二交易集合发布到所在区块链上;
所述第一节点利用所述第二同态解密函数解析所述第二交易集合中的虚拟产品的各个产品细节;
所述第一节点在解析出的所述虚拟产品的各个产品细节满足所述交易发起方预设的第二交易限制条件时,执行所述接收到交易发起方发送的交易转账请求;
和/或,
进一步包括:
根据所述区块链的共识机制,构建下述映射关系;
映射关系:
username→{pubkey,flag,other}其中,所述username表征注册用户的用户名;所述pubkey表征所述注册用户的一个公钥;
所述flag表征所述注册用户的特征信息;所述other表征所述注册用户的可选特征信息;
所述交易发起方利用自身的用户名登录所述第一节点,所述交易接收方利用自身的用户名登录所述第二节点。
8.一种基于零知识证明的交易装置,其特征在于,应用于区块链,包括:隐私交易地址生成单元和交易单元,其中,所述隐私交易地址生成单元,用于接收到交易发起方发送的交易转账请求时,为所述交易转账请求生成对应的隐私交易地址;
所述交易单元,用于在所述区块链上广播所述隐私交易地址,所述交易发起方与所述交易接收方,利用所述隐私交易地址进行交易。
9.根据权利要求8所述的装置,其特征在于,进一步包括:同态函数设置单元、第一交易集合计算单元和判定单元,其中,所述同态函数设置单元,用于为所述交易发起方设置第一同态加密函数,为所述交易接收方设置第一同态解密函数,其中,所述第一同态加密函数与所述第一同态解密函数,满足下述第一加密-解密关系式;
第一加密-解密关系式:
(C1+C2+…+Cn)×r=D1(E1(r×C1)+E1(r×C2)+…+E1(r×Cn))其中,C1,C2,...,Cn表征各个交易细节;r表征所述区块链上一个共识参数;D1()表征所述第一同态解密函数;E1()表征所述第一同态加密函数;
所述第一交易集合计算单元,用于解析所述交易转账请求相关的交易信息;根据所述交易信息,利用下述发起交易计算公式,为所述交易发起方计算第一交易集合,利用交易接收方的一个公钥加密所述第一交易集合;将加密后的所述第一交易集合发布到所在区块链上;
发起交易计算公式:
T={SignA,Ua,Ub,E1(r×C1),E1(r×C2),...,E1(r×Cn),hash(C1,C2,...Cn)}其中,T表征所述第一交易集合;SignA表征所述交易发起方的签名;Ua表征所述交易发起方的身份标识;Ub表征所述交易接收方的身份标识;r表征所述区块链上一个共识参数;E1()表征所述同态函数设置单元设置的第一同态加密函数;C1,C2,...,Cn表征各个交易细节;hash()表征哈希算法;
所述判定单元,用于在接收到所述交易接收方的触发时,利用所述交易接收方的自身私钥解密所述第一交易集合;利用所述第一同态解密函数解析所述第一交易集合中的各个所述交易细节;在解析出的各个所述交易细节满足所述交易接收方预设的第一交易限制条件时,确定所述第一交易集合为真;
所述隐私交易地址生成单元,用于在所述判定单元确定所述第一交易集合为真后,执行所述为所述交易转账请求生成对应的隐私交易地址。
10.根据权利要求8所述的装置,其特征在于,进一步包括:公私钥分配单元,其中,所述公私钥分配单元,用于为每一个区块链注册用户分配两个公钥和私钥;
所述交易发起方和所述交易接收方均为所述区块链注册用户;
所述隐私交易地址生成单元,用于利用下述隐私交易地址计算公式,生成隐私交易地址;
交易地址计算公式:
Sadd=sha256(M×r)×Q+N
其中,所述Sadd表征所述隐私交易地址;所述sha256()表征256位的哈希算法;所述M和N表征所述交易接收方的两个公钥;所述r表征所述区块链上一个共识参数;所述Q表征所述隐私交易地址的公钥;所述N表征所述交易接收方的公钥;
所述交易单元,进一步用于利用下述随机数计算公式,为所述交易发起方计算随机数;
随机数计算公式:
R=r×Q
其中,所述R表征所述交易发起方对应的随机数;所述r表征所述区块链上一个共识参数;所述Q表征所述隐私交易地址的公钥;
利用所述隐私交易地址、所述交易发起方对应的随机数以及交易金额,组成广播数组Ub=[Sadd,R,W],并广播所述广播数组,其中,Ub表征所述广播数组;所述W表征交易金额;
接收到所述交易接收方支配所述隐私交易地址上的资金时,利用下述隐私交易地址查找公式,计算待查找隐私交易地址;
P=sha256(m×R)×Q′+N
其中,所述P表征待查找隐私交易地址;所述sha256()表征256位的哈希算法;所述m表征与公钥M对应的私钥;所述R表征所述交易发起方对应的随机数;所述Q′表征目标隐私交易地址的公钥;所述N表征所述交易接收方的公钥;
当所述P与目标广播数组中的目标隐私交易地址绝对相同时,锁定所述目标隐私交易地址;
利用下述私钥恢复公式,计算所述目标隐私交易地址的私钥;
私钥恢复公式:
Pk=sha256(m×R)+n
其中,所述Pk表征所述目标隐私交易地址的私钥;所述sha256()表征256位的哈希算法;所述m表征与公钥M对应的私钥;所述R表征所述交易发起方对应的随机数;所述n表征与公钥N对应的私钥;
利用所述目标隐私交易地址的私钥和所述交易接收方的签名,支配所述目标隐私交易地址上的资金。