本申请涉及区块链技术领域,特别是涉及一种区块链私密交易证明方法、装置、计算机设备和存储介质。
背景技术:
随着区块链技术的发展,区块链技术给金融、智能制造、供应链、物流等领域带来了深入的影响,但是通过区块链进行交易面临着严重的隐私泄露风险。
因此,出现了区块链隐私保护技术即交易发起方可以在不向交易验证者提供任何涉及交易的私密信息的情况下,通过佩德森(pedersen)承诺和范围证明使交易验证者相信该交易的有效性,从而验证成功,完成与交易接收方间的交易。
然而,在区块链私密交易过程中每个范围证明的大小是几千字节(普通数字签名小于100字节),交易验证者对多个范围证明进行验证时会占用大量的存储空间,因此,亟需一种区块链私密交易证明方法,来解决区块链私密交易过程中范围证明占用大量存储空间的问题。
技术实现要素:
基于此,有必要针对上述技术问题,提供一种区块链私密交易证明方法、装置、计算机设备和存储介质。
第一方面,提供了一种区块链私密交易证明方法,所述方法应用于区块链系统中的交易发送方,所述区块链系统中还至少包括交易验证方和交易接收方,所述方法包括:
获取多个私密资产凭证、多个范围证明和多个加密的交易金额;
根据所述多个范围证明和预设的聚合算法,对所述多个范围证明进行聚合处理,得到第一证明;
根据所述第一证明、所述多个私密资产凭证及对应的所述多个加密的交易金额,创建与所述交易接收方的交易合约,并将所述交易合约发送到全网区块链进行共识发布,以使所述交易验证方根据所述交易合约中的所述第一证明、所述多个私密资产凭证及对应的所述多个加密的交易金额对目标交易的有效性进行验证。
作为一种可选的实施方式,所述多个私密资产凭证至少包括输入私密资产凭证、输出私密资产凭证和接收私密资产凭证,所述多个范围证明和所述多个加密的交易金额至少包括所述输入私密资产凭证对应的第一范围证明和加密的输入私密资产金额、所述输出私密资产凭证对应的第二范围证明和加密的输出私密资产金额、所述接收私密资产凭证对应的第三范围证明和加密的接收私密资产金额,所述获取多个私密资产凭证、多个范围证明和多个加密的交易金额,包括:
根据自身私钥、所述输入私密资产金额及预设的凭证算法构建所述输入私密资产凭证及对应的所述第一范围证明,并根据所述自身公钥加密所述输入私密资产金额;
根据所述自身私钥、所述输出私密资产金额及所述预设的凭证算法构建所述输出私密资产凭证及对应的所述第二范围证明,并根据所述自身公钥加密所述接收私密资产金额;
根据所述自身私钥、所述接收私密资产金额、所述交易接收方公钥及所述预设的凭证算法构建所述接收私密资产凭证和对应的所述第三范围证明,并根据所述交易接收方公钥加密所述接收私密资产金额。
作为一种可选的实施方式,所述对所述多个范围证明进行聚合处理,得到第一证明之前,所述方法还包括:
对所述多个范围证明的数目进行判断;
如果所述多个范围证明的数目不是二的次方,则填充默认的范围证明,直至所述多个范围证明的数目是二的次方,并执行所述对所述多个范围证明进行聚合处理的步骤;
如果所述范围证明的数目为二的次方,则执行所述对所述多个范围证明进行聚合处理的步骤。
作为一种可选的实施方式,所述根据所述多个范围证明和预设的聚合算法,对所述多个范围证明进行聚合处理,得到第一证明,包括:
将所述多个范围证明中的私钥进行随机分片式处理,得到第一向量;
将所述多个范围证明中的交易金额进行随机分片式处理,得到第二向量;
根据预设的压缩算法对所述第一向量和所述第二向量进行对半处理,得到对应的第三向量和第四向量;
判断所述第三向量和所述第四向量中的元素数目是否等于一;
如果所述第三向量和所述第四向量中的元素数目等于一,则根据所述第三向量、所述第四向量和所述预设的聚合算法得到所述第一证明;
如果所述第三向量和所述第四向量中的元素数目不等于一,则对所述第三向量和所述第四向量进行对半处理,直至所述第三向量和所述第四向量中的元素数目等于一,并根据所述第三向量、所述第四向量和所述预设的聚合算法得到所述第一证明。
第二方面,提供了一种区块链私密交易证明方法,所述方法应用于区块链系统中的交易验证方,所述区块链系统中还至少包括交易发送方和交易接收方,所述方法包括:
接收所述交易发送方发布的交易合约,所述交易合约中包含第一证明、多个私密资产凭证和多个加密的交易金额;
根据所述第一证明、所述多个私密资产凭证和所述多个加密的交易金额,判断所述交易合约是否有效;
如果所述交易合约有效,则将所述交易合约发送给所述交易接收方。
作为一种可选的实施方式,所述多个私密资产凭证至少包括输入私密资产凭证、输出私密资产凭证、接收私密资产凭证,所述加密的交易金额至少包括加密的输入私密资产金额、加密的输出私密资产金额和加密的接收私密资产金额,所述方法还包括:
删除所述交易合约中的所述输入私密资产凭证及对应的所述加密的输入私密资产金额,并将所述输出私密资产凭证及对应的所述加密的输出私密资产金额、所述接收私密资产凭证及对应的所述加密的接收私密资产金额,存储到区块链的存储层,更新所述交易合约进行全网发布。
第三方面,提供了一种区块链私密交易证明方法,所述方法应用于区块链系统中的交易接收方,所述区块链系统中还至少包括交易发送方和交易验证方,所述方法包括:
接收所述交易验证方发送的交易合约,所述交易合约中包含第一证明、多个私密资产凭证和多个加密的交易金额,所述多个私密资产凭证至少包含输出私密资产凭证和接收私密资产凭证,多个加密的交易金额至少包含加密的输出私密资产金额和加密的接收私密资产金额;
根据自身私钥,对所述交易合约中的所述加密的接收私密资产金额进行解密。
第四方面,提供了一种区块链私密交易证明装置,所述装置应用于区块链系统中的交易发送方,所述区块链系统中还至少包括交易验证方和交易接收方,所述装置包括:
获取模块,用于获取多个私密资产凭证、多个范围证明和多个加密的交易金额;
聚合模块,用于根据多个范围证明和预设的聚合算法,对所述多个范围证明进行聚合处理,得到第一证明;
创建模块,用于根据所述第一证明、所述多个私密资产凭证及对应的所述多个加密的交易金额,创建与所述交易接收方的交易合约,并将所述交易合约发送到全网区块链进行共识发布,以使所述交易验证方根据所述交易合约中的所述第一证明、所述多个私密资产凭证及对应的所述多个加密的交易金额对目标交易的有效性进行验证。
第五方面,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取多个私密资产凭证、多个范围证明和多个加密的交易金额;
根据所述多个范围证明和预设的聚合算法,对所述多个范围证明进行聚合处理,得到第一证明;
根据所述第一证明、所述多个私密资产凭证及对应的所述多个加密的交易金额,创建与所述交易接收方的交易合约,并将所述交易合约发送到全网区块链进行共识发布,以使所述交易验证方根据所述交易合约中的所述第一证明、所述多个私密资产凭证及对应的所述多个加密的交易金额对目标交易的有效性进行验证。
第六方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取多个私密资产凭证、多个范围证明和多个加密的交易金额;
根据所述多个范围证明和预设的聚合算法,对所述多个范围证明进行聚合处理,得到第一证明;
根据所述第一证明、所述多个私密资产凭证及对应的所述多个加密的交易金额,创建与所述交易接收方的交易合约,并将所述交易合约发送到全网区块链进行共识发布,以使所述交易验证方根据所述交易合约中的所述第一证明、所述多个私密资产凭证及对应的所述多个加密的交易金额对目标交易的有效性进行验证。
本申请实施例提供了一种区块链私密交易证明方法、装置、计算机设备和存储介质,该方法应用于区块链系统中的交易发送方,区块链系统还包括交易验证方和交易接收方,交易发送方获取多个私密资产凭证、多个范围证明和多个加密的交易金额;根据多个范围证明和预设的聚合算法,交易发送方对多个范围证明进行聚合处理,得到第一证明。然后,交易发送方根据该第一证明、多个私密资产凭证及对应的多个加密的交易金额,创建与交易接收方的交易合约,并将交易合约发送到全网区块链进行共识发布,以使区块链系统中的交易验证方根据交易合约中的第一证明、多个私密资产凭证及对应的多个加密的交易金额对目标交易的有效性进行验证。采用本方法对多个范围证明进行聚合,可以节约区块链系统时间和空间开销。
附图说明
图1为本申请实施例提供的一种区块链私密交易证明方法的流程图;
图2为本申请实施例提供的一种区块链范围证明聚合原理图;
图3为本申请实施例提供的一种区块链范围证明聚合原理图;
图4为本申请另一实施例提供的一种区块链私密交易证明方法的流程图;
图5为本申请另一实施例提供的一种区块链私密交易证明方法的流程图;
图6为本申请实施例提供的一种区块链私密交易证明装置的内部结构图;
图7为本申请实施例提供的一种计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
为了便于理解,首先对区块链系统中的交易方式进行接收,区块链系统中的各交易节点(也称为交易方)包含有明文资产和私密资产,交易双方进行明文资产交易时,区块链系统中的交易验证方可以对交易的明文资产直接进行验证;当交易双方进行私密资产交易时,区块链系统中的交易验证方需要对私密资产凭证和对应的范围证明进行验证,以保证交易双方私密资产的隐私性。
本申请提供了一种区块链私密交易证明方法,该方法应用于区块链系统中的交易发送方,该区块链系统还至少包括交易验证方和交易接收方。交易发送方获取多个私密资产凭证、多个范围证明和多个加密的交易金额,然后,交易发送方根据多个范围证明和预设的聚合算法,对多个范围证明进行聚合处理,得到第一证明,并根据第一证明、多个私密资产凭证及对应的多个加密的交易金额,创建与交易接收方的交易合约,交易发送方将交易合约发送到全网区块链进行共识发布,交易验证方接收到交易发送方发布的交易合约后,根据交易合约中的第一证明、多个私密资产凭证及对应的多个加密的交易金额对目标交易的有效性进行验证。如果交易合约有效,则交易验证方将交易合约发送给交易接收方,交易接收方接收该交易合约,并根据自身私钥对交易合约中的接收私密资产金额进行解密,进一步查询该次交易的接收私密资产金额是否正确且自身余额是否增长。
本申请的一个实施例中提供了一种区块链私密交易证明方法,如图1所示,该方法应用于区块链系统中的交易发送方,区块链系统中至少还包括交易验证方和交易接收方,则该方法的具体处理过程如下:
步骤101,获取多个私密资产凭证、多个范围证明和多个加密的交易金额。
在实施中,交易发送方获取多个私密资产凭证、多个范围证明和多个加密的交易金额。
可选的,其中,多个私密资产凭证至少包括输入私密资产凭证、输出私密资产凭证和接收私密资产凭证。多个范围证明和多个加密的交易金额至少包括输入私密资产凭证对应的第一范围证明和加密的输入私密资产金额;输出私密资产凭证对应的第二范围证明和加密的输出私密资产金额;接收私密资产凭证对应的第三范围证明和加密的接收私密资产金额。
具体的,交易发送方的密钥对(私钥和公钥)可以表示为e(r1,r1),交易接收方的密钥对(私钥和公钥)可以表示为e(r2,r2),则获取多个私密资产凭证、多个范围证明和多个加密的交易金额的处理过程如下:
步骤一,根据自身私钥、输入私密资产金额及预设的凭证算法构建输入私密资产凭证及对应的第一范围证明,并根据自身公钥加密输入私密资产金额。
在实施中,交易发送方首先根据自身私钥r1、输入私密资产金额及预设的凭证算法,构建输入私密资产凭证和对应的第一范围证明。例如,交易发送方构建的输入私密资产凭证为c=r1g+vh,该输入私密资产凭证对应的第一范围证明为proof=prove(r1,v)。其中,v为输入私密资产金额(也可称为交易发送方原始私密资产金额);r1为交易发送方的私钥;g和h为预设的凭证算法中的椭圆曲线基点,可选的,g可以是一个给定的64字节长度的数组常量,如g={0x79,0xbe,0x66,0x7e,...0xb8}。可选的,h可以由g点取哈希值(hash)后取其前63个字节得到,即h=hash(g,63)+0x04={0x50,0x92,0x9b,...,0xa3,0x89,0x04}。同时,为了对交易金额的隐私保护,交易发送方可以根据自身的公钥r1加密输入私密资产金额。具体的,交易发送方根据自身公钥r1加密该输入私密资产金额m=eccencrypt(r1,v)。
步骤二,根据自身私钥、输出私密资产金额及预设的凭证算法构建输出私密资产凭证及对应的第二范围证明,并根据自身公钥加密输出私密资产金额。
在实施中,交易发送方根据自身私钥r1、输出私密资产金额及预设的凭证算法,构建输出私密资产凭证及对应的第二范围证明。例如,交易发送方构建的输出私密资产凭证为c1=r1g+v1h,该输出私密资产凭证对应的第二范围证明为proof=prove(r1,v1)。其中,v1为输入私密资产金额(也可称为交易发送方交易后私密资产余额);r1为交易发送方的私钥;g和h为预设的凭证算法中的椭圆曲线基点。同时,为了对交易金额的隐私保护,交易发送方可以根据自身的公钥r1加密输出私密资产金额,具体的,交易发送方根据自身公钥r1加密该输出私密资产金额m1=eccencrypt(r1,v1)。
步骤三,根据自身私钥、接收私密资产金额、交易接收方公钥及预设的凭证算法构建接收私密资产凭证和对应的第三范围证明,并根据交易接收方公钥加密接收私密资产金额。
在实施中,首先,交易发送方根据自身私钥r1和交易接收方的公钥r2构建交易接收方用于接收私密资产的接收地址即pubkey=r2+r1r2(也即交易接收方接收私密资产的私钥)。然后,交易发送方根据自身私钥r1、接收私密资产金额及预设的凭证算法,构建接收私密资产凭证和对应的第三范围证明,例如,交易发送方构建的接收私密资产凭证为c2=(r2+r1r2)g+v2h,该接收私密资产凭证对应的第三范围证明为proof=prove(r2+r1r2,v2)。其中,v2为接收私密资产金额(也即交易接收方接收的私密资产金额),v2=v-v1即交易接收方接收的私密资产金额就等于交易发送方输入私密资产金额与输出私密资产金额之差;r2+r1r2为交易接收方接收私密资产的的私钥(即接收地址);g和h为预设的凭证算法中的椭圆曲线基点。同时,为了对交易金额的隐私保护,交易发送方可以根据交易接收方的公钥r2加密该接收私密资产金额,表示为m2=eccencrypt(r2,v2)。
步骤102,根据多个范围证明和预设的聚合算法,对多个范围证明进行聚合处理,得到第一证明。
在实施中,交易发送方根据获取的多个范围证明和预设的聚合算法,对多个范围证明进行聚合处理,得到聚合后的第一证明。
作为一种可选的实施方式,根据多个范围证明和预设的聚合算法,对多个范围证明进行聚合处理,得到第一证明,具体处理过程如下:
步骤一,将多个范围证明中的私钥进行随机分片式处理,得到第一向量,将多个范围证明中的交易金额进行随机分片式处理,得到第二向量。
在实施中,交易发送方将多个范围中的私钥进行随机分片式处理,得到第一向量,例如,多个范围证明中的私钥可以组成向量rlist(也可称为致盲因子向量)表示为rlist={r1,r1,r2+r1r2,rd},针对每个私钥进行随机分片式处理,将每个私钥拆分成n个随机数分片,得到第一向量。第一向量可以表示为a={a1,a2,...an},ai∈{0,1}。其中,ai表示第一向量中的元素,ai∈{0,1}表示第一向量中的元素等于0或1,第一向量中元素的数目为范围证明数目的n倍,即如果范围证明的数目为4个,则第一向量中元素的数目为4n个。另外,交易发送方将多个范围证明中的私密资产金额转化为二进制数值,然后对多个范围证明中的私密资产金额进行随机分片式处理,得到第二向量,例如,多个范围证明中的交易金额可以组成向量vlist表示为vlist={v,v1,v2,vd},针对每个二进制形式的交易金额进行随机分片式处理,将每个二进制形式的交易金额拆分成n个随机数分片,得到第二向量。第二向量可以表示为b={b1,b2,....bn},bi∈{0,1},其中,bi表示第一向量中的元素,bi∈{0,1}表示第一向量中的元素等于0或1,第二向量中元素的数目为范围证明数目的n倍,即如果范围证明的数目为4个,则第二向量中元素的数目为4n个。
交易发送方将多个范围证明转化为第一向量和第二向量后,根据环签名算法原理,交易验证者对于范围证明(proof=prove(rlist,vlist))的验证等效于为对第一向量和第二向量内积(proof=<a,b>)的验证。因此,交易发送方对第一向量和第二向量进行聚合处理等效于对多个范围证明进行聚合处理,为了便于表示,下文将proof=<a,b>简写成p=<a,b>。
步骤二,根据预设的压缩算法对第一向量和第二向量进行对半处理,得到对应的第三向量和第四向量;判断第三向量和第四向量中的元素数目是否等于一;如果第三向量和第四向量中的元素数目等于一,则根据第三向量、第四向量和预设的聚合算法得到第一证明;如果第三向量和第四向量中的元素数目不等于一,则对第三向量和第四向量进行对半处理,直至第三向量和第四向量中的元素数目等于一,并根据第三向量、第四向量和预设的聚合算法得到第一证明。
在实施中,如图2所示,交易发送方根据预设的压缩算法分别对第一向量和第二向量进行对半处理,将第一向量a进行对半处理,得到对应的第三向量a′=alx+ahx-1,其中,al和ah为对半处理后长度为向量a一半的向量;x为随机挑战标量。将第二向量b进行对半处理得到对应的第四向量b′=blx+bhx-1,其中bl和bh为对半处理后长度为向量b一半的向量;x为随机挑战标量。则可以将对第一向量a和第二向量b内积的证明转化为第三向量a′和第四向量b′内积的证明,具体的,根据内积计算公式,第一向量a和第二向量b内积的证明为p=<a,b>=<al,ah>+<bl,bh>,第三向量和第四向量内积的证明p′=<alx+ahx-1,blx+bhx-1>=<al,ah>+<bl,bh>+x2<al,bh>+x-2<ah,b>>,为了便于表示,令l=<al,bh>和r=<ah,bl>,则第三向量a′与第四向量b′内积的证明为p′=<alx+ahx-1,blx+bhx-1>=<al,ah>+<bl,bh>+x2l+x-2r,,交易发送方可以将每轮的l和r传递给交易验证方,然后,进行下一轮的等效证明转化过程,交易发送方判断第三向量a′和第四向量b′中的元素的数目是否为一,如图2所示,显然,第三向量a′和第四向量b′中的元素数目不为一,则继续对第三向量a′和第四向量b′进行对半处理,在下一轮的内积计算中用p″,a″和b″来代替p′,a′,b′,每次等效转化得到的新的向量的长度都是上一次的一半,经过log2n轮次后,如果第三向量和第四向量中的元素数目为1,即得到的压缩后的第三向量和第四向量的长度均为1。如图3所示,交易发送方得到聚合后的第一证明,该第一证明中包含对向量长度为1的p″,a″,b″。
例如,范围证明的数目为4个,具体为{proof,proof1,proof2,proofd},每个范围证明对应的随机分片式处理后的长度均为n,则得到的第一向量和第二向量的长度均为4n,交易发送方根据上述聚合算法对4个范围证明进行聚合,则经过log2mn次(m表示范围证明的数目,m=4)计算后得到的聚合后的第一证明proofaggregation的空间和时间开销为o(proofaggregation)=o(log2mn)=o(log2n+2)。
作为一种可选的实施方式,对多个范围证明进行聚合处理,得到第一证明之前,交易发送方对多个范围证明的数目进行判断;如果多个范围证明的数目不是二的次方,则填充默认的范围证明,直至多个范围证明的数目是二的次方,并执行对多个范围证明进行聚合处理的步骤;如果范围证明的数目为二的次方,则执行对多个范围证明进行聚合处理的步骤。
在实施中,交易发送方在对多个范围证明进行聚合处理之前,首先需要对创建的多个范围证明的数目进行判断,如果多个范围证明的数目不是二的次方(2n,n∈n*即n为任意正整数),则区块链系统需要填充默认的范围证明,例如,多个范围证明包括:输入私密资产凭证对应的第一范围证明、输出私密资产凭证对应的第二范围证明和接收私密资产凭证对应的第三范围证明,则多个范围证明的数目为3个,由于3≠2n,n∈n*,则区块链系统需要填充默认的范围证明如proof=prove(rd,vd)使范围证明的数目达到二的次方。其中,填充的范围证明中rd为默认的私钥,vd为默认的私密资产金额。
步骤103,根据第一证明、多个私密资产凭证及对应的多个加密的交易金额,创建与交易接收方的交易合约,并将交易合约发送到全网区块链进行共识发布,以使交易验证方根据交易合约中的第一证明、多个私密资产凭证及对应的多个加密的交易金额对目标交易的有效性进行验证。
在实施中,交易发送方根据聚合后得到的第一证明(如proofaggregation)、多个私密资产凭证(如c=r1g+vh、c1=r1g+v1h和c2=(r2+r1r2)g+v2h)及对应的多个加密的交易金额(如m=eccencrypt(r1,v)、m1=eccencrypt(r1,v1)和m2=eccencrypt(r2,v2)),创建与交易接收方的交易合约。然后,交易发送方将交易合约发送到全网区块链进行共识发布,使交易验证方根据接收到的交易合约中的第一证明、多个私密资产凭证及对应的多个加密的交易金额对目标交易的有效性进行验证。
可选的,交易合约中还可以包括交易发送方的地址(可以为交易发送方id,(identification,身份)号)、交易处理序号(例如,交易发送方id号+1,用于唯一标识本次交易任务),交易发送方签名(交易发送方利用自身私钥对该交易合约进行签名),因此,本申请实施例不做限定。
作为一种可选的实施方式,区块链系统中不仅可以进行私密资产交易还可以进行明文资产交易、明文资产转私密资产交易和私密资产转明文资产交易,因此,在交易发送方发起交易任务之前,交易发送方可以选择交易类型,然后针对不同的类型相应进行交易的操作。
类型一,交易发送方选择明文资产交易,则交易发送方首先获取到交易接收方的接收地址,然后构建交易合约,该交易合约中包含交易发送方的地址(id号)、交易处理序号、交易类型,输入明文资产金额、输出明文资产金额和明文接收资产金额等,本申请实施例不做限定。明文资产交易过程中不需要对明文资产构建资产凭证和范围证明。因此,交易发送方直接通过自身私钥对该交易合约进行签名,并将该交易合约发送给交易验证方。
类型二,交易发送方选择明文资产转私密资产交易类型,则交易发起方首先根据自身私钥和转化为私密资产的交易金额构建私密资产凭证和范围证明(构建过程与上述步骤101类似,本申请不再赘述),然后交易发送方根据该私密资产凭证、范围证明和加密的私密资产金额构建交易合约,该交易合约中还可以包括交易发送方的地址(id号)、交易处理序号和交易类型,本申请实施例不做限定。然后,交易发送方将该交易合约发送到全网区块链进行共识发布。
类型三,交易发送方选择私密资产转明文资产交易类型,则交易发送方根据自身私钥对私密资产解密并验证该私密资产的有效性,如果证明该私密资产有效则交易发送方构建交易合约(具体过程如类型一,本申请不再赘述),并通过自身私钥对该交易合约进行签名,然后,交易发送方将该交易合约发送到全网区块链进行共识发布。
在本申请另一个实施例中,如图4所示,提供了一种区块链私密交易证明方法,该方法应用于区块链系统中的交易验证方,区块链系统中还至少包括交易发送方和交易接收方,则具体处理过程如下:
步骤401,接收交易发送方发布的交易合约,交易合约中包含第一证明、多个私密资产凭证和多个加密的交易金额。
在实施中,交易验证方接收交易发送方发布的交易合约,交易合约中包含第一证明、多个私密资产凭证和多个加密的交易金额。
步骤402,根据第一证明、多个私密资产凭证和多个加密的交易金额,判断交易合约是否有效。
在实施中,交易验证方根据第一证明、多个私密资产凭证和多个加密的交易金额,判断交易合约是否有效。例如,交易验证方根据佩德森(pedersen)承诺验证多个私密资产凭证和多个加密的交易金额,根据第一证明中的每轮对半处理后的p′,a′,b′,验证每轮次p′=p+x2l+x-2r是否相等,直至经过log2n次验证后,完成全部检查。
步骤403,如果交易合约有效,则将交易合约发送给交易接收方。
在实施中,如果交易合约有效,则交易验证方将交易合约广播,发送给交易接收方。可选的,如果交易合约验证无效,则放弃此次交易,并向交易发送方和交易接收方发送相应的交易失败响应。
作为一种可选的实施方式,多个私密资产凭证至少包括输入私密资产凭证、输出私密资产凭证、接收私密资产凭证,加密的交易金额至少包括加密的输入私密资产金额、加密的输出私密资产金额和加密的接收私密资产金额,则验证通过后,交易验证方还可以删除交易合约中的输入私密资产凭证及对应的加密的输入私密资产金额,并将输出私密资产凭证及对应的加密的输出私密资产金额、接收私密资产凭证及对应的加密的接收私密资产金额,存储到区块链的存储层,更新交易合约进行全网发布。
本申请实施例提供了一种区块链私密交易证明方法,该方法应用于区块链系统中的交易验证方,区块链系统中还至少包括交易发送方和交易接收方。交易验证方接收交易发送方发布的交易合约,该交易合约中包含第一证明(聚合后的证明)、多个私密资产凭证和多个加密的交易金额;然后,交易验证方根据第一证明、多个私密资产凭证和多个加密的交易金额,判断交易合约是否有效;如果所述交易合约有效,则将所述交易合约发送给所述交易接收方。采用该方法可以节约区块链系统时间和空间的开销。
在本申请另一实施例中提供了一种区块链私密交易证明方法,如图5所示,该方法应用于区块链系统中的交易接收方,区块链系统至少还包括交易发送方和交易验证方,该方法具体处理过程如下:
步骤501,接收交易验证方发送的交易合约,交易合约中包含第一证明、多个私密资产凭证和多个加密的交易金额,多个私密资产凭证至少包含输出私密资产凭证和接收私密资产凭证,多个加密的交易金额至少包含加密的输出私密资产金额和加密的接收私密资产金额。
在实施中,交易接收方接收交易验证方发送的交易合约,该交易合约中包含第一证明、多个私密资产凭证和多个加密的交易金额,多个私密资产凭证至少还包括输出私密资产凭证和接收私密资产凭证,多个加密的交易金额至少包含加密的输出私密资产金额和加密的接收私密资产金额。
步骤502,根据自身私钥,对交易合约中的加密的接收私密资产金额进行解密。
在实施中,交易接收方根据自身私钥r2对交易合约中的接收私密资产金额(m2=eccencrypt(r2,v2))进行解密,然后交易接收方根据解密出的接收私密资产金额和接收地址(pubkey=r2+r1r2)查询本次交易是否完成(本次交易金额是否已属于自己)和本次交易金额是否正确。
本申请实施例提供了一种区块链私密交易证明方法,该方法应用于区块链系统中的交易接收方,区块链系统还至少包括交易发送方和交易验证方。交易接收方接收交易验证方发送的交易合约,交易合约中包含第一证明、多个私密资产凭证和多个加密的交易金额,多个私密资产凭证至少包含输出私密资产凭证和接收私密资产凭证,多个加密的交易金额至少包含加密的输出私密资产金额和加密的接收私密资产金额;根据自身私钥,对交易合约中的加密的接收私密资产金额进行解密。进而交易接收方可以根据解密后的交易金额和接收地址判定本次交易完成。
本申请实施例还提供了一种区块链私密交易证明装置,如图6所示,该装置应用于区块链系统中的交易发送方,区块链系统中还至少包括交易验证方和交易接收方,该装置包括:
获取模块610,用于获取多个私密资产凭证、多个范围证明和多个加密的交易金额;
聚合模块620,用于根据多个范围证明和预设的聚合算法,对多个范围证明进行聚合处理,得到第一证明;
创建模块630,用于根据第一证明、多个私密资产凭证及对应的多个加密的交易金额,创建与交易接收方的交易合约,并将交易合约发送到全网区块链进行共识发布,以使交易验证方根据交易合约中的第一证明、多个私密资产凭证及对应的多个加密的交易金额对目标交易的有效性进行验证。
作为一种可选的实施方式,多个私密资产凭证至少包括输入私密资产凭证、输出私密资产凭证和接收私密资产凭证,多个范围证明和多个加密的交易金额至少包括输入私密资产凭证对应的第一范围证明和加密的输入私密资产金额、输出私密资产凭证对应的第二范围证明和加密的输出私密资产金额、接收私密资产凭证对应的第三范围证明和加密的接收私密资产金额,获取模块610具体用于根据自身私钥、输入私密资产金额及预设的凭证算法构建输入私密资产凭证及对应的第一范围证明,并根据自身公钥加密输入私密资产金额;
根据自身私钥、输出私密资产金额及预设的凭证算法构建输出私密资产凭证及对应的第二范围证明,并根据自身公钥加密输出私密资产金额;
根据自身私钥、接收私密资产金额、交易接收方公钥及预设的凭证算法构建接收私密资产凭证和对应的第三范围证明,并根据交易接收方公钥加密接收私密资产金额。
作为一种可选的实施方式,该装置600还包括判断模块,判断模块具体用于对多个范围证明的数目进行判断;
如果多个范围证明的数目不是二的次方,则填充默认的范围证明,直至多个范围证明的数目是二的次方,并执行对多个范围证明进行聚合处理的步骤;
如果范围证明的数目为二的次方,则执行对多个范围证明进行聚合处理的步骤。
作为一种可选的实施方式,聚合模块620具体用于将多个范围证明中的私钥进行随机分片式处理,得到第一向量;
将多个范围证明中的交易金额进行随机分片式处理,得到第二向量;
根据预设的压缩算法对第一向量和第二向量进行对半处理,得到对应的第三向量和第四向量;
判断第三向量和第四向量中的元素数目是否等于一;
如果第三向量和第四向量中的元素数目等于一,则根据第三向量、第四向量和预设的聚合算法得到第一证明;
如果第三向量和第四向量中的元素数目不等于一,则对第三向量和第四向量进行对半处理,直至第三向量和第四向量中的元素数目等于一,并根据第三向量、第四向量和预设的聚合算法得到第一证明。
本申请实施例提供了一种区块链私密交易证明装置,该装置应用于区块链系统中的交易发送方,区块链系统还包括交易验证方和交易接收方,交易发送方获取多个私密资产凭证、多个范围证明和多个加密的交易金额;根据多个范围证明和预设的聚合算法,对多个范围证明进行聚合处理,得到第一证明;然后,交易发送方根据该第一证明、多个私密资产凭证及对应的多个加密的交易金额,创建与交易接收方的交易合约,并将交易合约发送到全网区块链进行共识发布,以使区块链系统中的交易验证方根据交易合约中的第一证明、所述多个私密资产凭证及对应的所述多个加密的交易金额对目标交易的有效性进行验证。采用本方法对多个范围证明进行聚合,可以节约时间和空间开销。
应该理解的是,虽然图1、图4和图5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1、图4和图5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
关于区块链私密交易证明装置的具体限定可以参见上文中对于区块链私密交易证明方法的限定,在此不再赘述。上述区块链私密交易证明装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种区块链私密交易证明方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。