CN111507721B - 一种区块链的跨链交易方法及装置 - Google Patents
一种区块链的跨链交易方法及装置 Download PDFInfo
- Publication number
- CN111507721B CN111507721B CN202010328317.3A CN202010328317A CN111507721B CN 111507721 B CN111507721 B CN 111507721B CN 202010328317 A CN202010328317 A CN 202010328317A CN 111507721 B CN111507721 B CN 111507721B
- Authority
- CN
- China
- Prior art keywords
- transaction data
- transaction
- knowledge proof
- account
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Abstract
本发明公开了一种区块链的跨链交易方法及装置,其中方法为:第一区块链的第一节点接收第一交易数据并验证所述第一交易数据;所述第一节点接收第五交易数据并验证所述第五交易数据;在所述第二区块链的第二节点对第二交易数据和第六交易数据验证通过后,所述第一节点执行所述第一交易数据。上述方法应用于金融科技(Fintech)时,可在不泄露交易对象的情况下,验证所述第一交易数据通过,并执行所述第一交易数据。
Description
技术领域
本发明涉及金融科技(Fintech)领域中区块链(blockchain)领域,尤其涉及一种区块链的跨链交易方法及装置。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。金融科技领域中对金融交易的安全性要求极高,因此常通过区块链(blockchain)来实现金融交易。
目前,在跨区块链的交易场景中,一个区块链中的交易的发起方需要向外部的区块链出示交易对象(如交易金额),以证明拥有区块链的资产权益,才能完成交易。显然,现有的这种跨区块链的交易过程中,证明权益的所有权时会泄露交易对象,是一个亟待解决的问题。
发明内容
本发明提供一种区块链的跨链交易方法及装置,解决了现有技术中跨区块链的交易过程中,证明权益的所有权时会泄露资产权益的问题。
第一方面,本发明提供一种区块链的跨链交易方法,包括:第一区块链的第一节点接收第一交易数据并验证所述第一交易数据;所述第一交易数据为第一账户向第二账户发起的交易数据;所述第一账户为第一用户在所述第一区块链上的账户;所述第二账户为第二用户在第二区块链上的账户;所述第一交易数据包括第一零知识证明;所述第一零知识证明为所述第一交易数据中的交易对象的零知识证明;所述第一节点接收第五交易数据并验证所述第五交易数据;所述第五交易数据是所述第一用户对所述第二用户发起的第四交易数据验证通过后生成的;所述第四交易数据和所述第五交易数据均包括第二零知识证明;所述第二零知识证明为所述第五交易数据中的交易对象的零知识证明;在所述第二区块链的第二节点对第二交易数据和第六交易数据验证通过后,所述第一节点执行所述第一交易数据;所述第二交易数据包括所述第一零知识证明;所述第六交易数据包括所述第二零知识证明。
上述方法中,由于所述第一交易数据包括第一零知识证明,因此可在不泄露第一交易数据的交易对象的情况下,验证所述第一交易数据通过,另外,所述第五交易数据包括第二零知识证明,也能在不泄露所述第五交易数据中的交易对象的条件下,证明所述第二账户的资产权益,因此,可在不泄露交易对象的情况下,在所述第二区块链的第二节点对第二交易数据和第六交易数据验证通过后,执行所述第一交易数据。
可选的,所述第一零知识证明是基于第一匿名凭证按照椭圆曲线的方式确定的;其中,所述第一匿名凭证是根据所述第一交易数据的交易对象及所述第一用户的子秘密确定的;所述第一零知识证明包括:第一子部分、第二子部分和第三子部分;所述第一零知识证明中的第一子部分是根据所述第一账户的账户地址、所述第一匿名凭证确定的;所述第一零知识证明中的第二子部分是根据所述第一零知识证明中的第一子部分和所述第一交易数据的交易对象确定的;所述第一零知识证明中的第三子部分是根据所述第一零知识证明中的第一子部分和所述第一用户的子秘密确定的。
上述方法中,所述第一零知识证明是基于所述第一匿名凭证按照椭圆曲线的方式确定的,所述第一匿名凭证可以将所述交易对象及所述第一用户的子秘密隐匿其中,并分别根据第一用户的子秘密得到所述第一零知识证明的第一子部分、第二子部分和第三子部分,从而提供了一种基于椭圆曲线的零知识证明生成方式。
可选的,所述第一零知识证明具体是按照以下方式确定的:在预设数字范围内选择第一随机数和第二随机数;根据所述第一随机数、所述第二随机数、第一公开点和第二公开点的线性运算结果,确定第一中间变量;所述第一公开点和所述第二公开点为椭圆曲线上的两个公开点;根据所述第一交易数据的交易对象、所述第一用户的子秘密、所述第一公开点和所述第二公开点的线性运算结果,确定所述第一匿名凭证;根据所述第一账户、所述第一中间变量和所述第一匿名凭证,按照预设哈希算法,确定所述第一交易数据的交易对象的所述第一零知识证明的第一子部分;根据所述第一随机数、所述第一零知识证明的第一子部分和所述交易对象的线性运算结果,确定所述第一零知识证明中的第二子部分;根据所述第二随机数、所述第一零知识证明的第一子部分、所述第一用户的子秘密的线性运算结果,确定所述第一零知识证明的第三子部分。
上述方法中,通过在预设数字范围内选择第一随机数和第二随机数,分别通过线性计算,确定所述交易对象的所述第一零知识证明的第一子部分、第二子部分和第三子部分,从而提供了一种通过简单线性运算生成第一零知识证明的方法。
可选的,所述第一零知识证明具体是按照以下方式确定的:t1_1=a1*G+b1*H;其中,t1_1为第一中间变量,a1为所述第一随机数,b1为所述第二随机数,G为所述第一公开点,H为所述第二公开点;V1=v*G+r1*H;V1为所述第二中间变量;v为所述第一交易数据的交易对象;r1为所述第一用户的子秘密;z0_1=Hash(A1|V1|t1_1);A1为所述第一账户;Hash表示所述预设哈希算法;z0_1为所述第一交易数据的交易对象的第一零知识证明的第一子部分;z1_1=a1-z0_1*V1,z2_1=b1-z0_1*r1;V1_kp=(z0_1,z1_1,z2_1);V1_kp为所述第一零知识证明。
上述方式提供了一种具体确定第一零知识证明的方法。
可选的,所述第一交易数据还包括所述第一账户的私钥的第三零知识证明、和/或第三账户的私钥的第四零知识证明;所述第三账户为所述第一用户在所述第二区块链的账户;所述第五交易数据还包括所述第二账户的私钥的第五零知识证明、和/或第四账户的私钥的第六零知识证明;所述第四账户为所述第二用户在所述第一区块链的账户;所述第二交易数据还包括所述第三零知识证明、和/或所述第四零知识证明;所述第六交易数据包括所述第五零知识证明、和/或所述第六零知识证明。
上述方式下,所述第一交易数据还包括第三零知识证明、和/或第三账户的私钥的第四零知识证明,所述第五交易数据还包括第五零知识证明、和/或第六零知识证明,从而在交易过程中对所述第二账户的私钥和第四账户的私钥进行验证,进一步增加交易的可靠性。
可选的,所述第一节点验证所述第一交易数据之后,还包括:所述第一节点在验证通过后,生成对所述第一交易数据的第一交易签名,所述第一交易签名用于声明所述第一节点认同所述第一交易数据的有效性;所述第一节点触发所述第二节点对所述第二交易数据进行验证;所述第二交易数据包括所述第一交易数据和所述第一交易签名;所述第一节点接收所述第二节点的第三交易数据;所述第三交易数据包括所述第二交易数据和所述第二节点对所述第二交易数据的第二交易签名;所述第二交易签名用于声明所述第二节点认同所述第二交易数据的有效性。
上述方式下,所述第一节点在验证通过后,生成对所述第一交易数据的第一交易签名,从而声明所述第一节点认同所述第一交易数据的有效性,另外,所述第一节点接收所述第二节点的第三交易数据,所述第二交易签名用于声明所述第二节点认同所述第二交易数据的有效性,从而交互验证所述第一交易数据的有效性。
可选的,所述第一节点验证所述第五交易数据之后,还包括:所述第一节点在验证通过后,生成对所述第五交易数据的第五交易签名,所述第五交易签名用于声明所述第一节点认同所述第五交易数据的有效性;所述第一节点触发所述第二节点对所述第六交易数据进行验证;所述第六交易数据包括所述第五交易数据和所述第五交易签名;所述第一节点接收所述第二节点的第七交易数据;所述第七交易数据包括所述第六交易数据和所述第二节点对所述第六交易数据的第六交易签名;所述第六交易签名用于声明所述第二节点认同所述第六交易数据的有效性。
上述方式下,所述第一节点在验证通过后,生成对所述第五交易数据的第五交易签名,从而声明所述第一节点认同所述第五交易数据的有效性,之后,所述第一节点再接收所述第二节点的第七交易数据,从而交互验证所述第五交易数据的有效性。
第二方面,本发明提供一种区块链的跨链交易方法,包括:第一用户确定第一账户拟向第二账户发起的第一交易数据中的交易对象;所述第一账户为第一用户在所述第一区块链上的账户;所述第二账户为第二用户在第二区块链上的账户;所述第一用户生成第一零知识证明;所述第一零知识证明为所述第一交易数据中的交易对象的零知识证明;所述第一用户向所述第一区块链的第一节点发送第一交易数据,所述第一交易数据包括所述第一零知识证明;所述第一用户接收所述第二用户发送的第四交易数据;所述第四交易数据包括第二零知识证明;所述第二零知识证明为所述第五交易数据中的交易对象的零知识证明;所述第一用户在对所述第四交易数据验证通过后,向所述第一节点发送第五交易数据;所述第五交易数据包括所述第二零知识证明。
上述方式下,第一用户确定第一账户拟向第二账户发起的第一交易数据中的交易对象后,生成相应的第一零知识证明,并向第一节点发送包括第一零知识证明的第一交易数据,以及在对所述第四交易数据验证通过后,向所述第一节点发送第五交易数据,从而在不暴露交易对象的基础上,发送第五交易数据。
可选的,所述第一零知识证明包括:第一子部分、第二子部分和第三子部分;所述第一用户生成第一零知识证明,包括:根据所述第一交易数据的交易对象及所述第一用户的子秘密,生成第一匿名凭证;根据所述第一账户的账户地址和所述第一匿名凭证,确定所述第一零知识证明中的第一子部分;根据所述第一零知识证明中的第一子部分和所述第一交易数据的交易对象,确定所述第一零知识证明中的第二子部分;根据所述第一零知识证明中的第一子部分和所述第一用户的子秘密,确定所述第一零知识证明中的第三子部分。
上述方式下,第一用户分别确定所述第一零知识证明中的第一子部分、所述第一零知识证明中的第二子部分和所述第一零知识证明中的第三子部分,从而将每个子部分与所述第一账户的账户地址、所述交易对象和所述第一用户的子秘密绑定。
可选的,所述第一用户生成所述第一账户的私钥的第三零知识证明、和/或第三账户的私钥的第四零知识证明;所述第一交易数据还包括所述第三零知识证明和/或所述第四零知识证明;所述第三账户为所述第一用户在所述第二区块链的账户;所述第四交易数据还包括所述第二账户的私钥的第五零知识证明、和/或第四账户的私钥的第六零知识证明;所述第四账户为所述第二用户在所述第一区块链的账户;所述第一用户在对所述第四交易数据验证通过后,向所述第一节点发送第五交易数据之前,还包括:所述第一用户生成所述第四交易数据的第四交易签名,将所述第四交易数据和所述第四交易签名作为所述第五交易数据。
上述方式下,所述第一用户生成所述第一账户的私钥的第三零知识证明、和/或第三账户的私钥的第四零知识证明,从而在所述第一账户的私钥、第三账户的私钥隐匿的情况下,增加了对所述第一账户的私钥、第三账户的私钥的验证,另外,所述第一用户生成所述第四交易数据的第四交易签名,将所述第四交易数据和所述第四交易签名作为所述第五交易数据,从而进一步增加交易的可靠性。
第三方面,本发明提供一种区块链的跨链交易装置,包括:接收模块,用于接收第一交易数据并验证所述第一交易数据;所述第一交易数据为第一账户向第二账户发起的交易数据;所述第一账户为第一用户在所述第一区块链上的账户;所述第二账户为第二用户在第二区块链上的账户;所述第一交易数据包括第一零知识证明;所述第一零知识证明为所述第一交易数据中的交易对象的零知识证明;以及用于接收第五交易数据并验证所述第五交易数据;所述第五交易数据是所述第一用户对所述第二用户发起的第四交易数据验证通过后生成的;所述第四交易数据和所述第五交易数据均包括第二零知识证明;所述第二零知识证明为所述第五交易数据中的交易对象的零知识证明;执行模块,用于在所述第二区块链的第二节点对第二交易数据和第六交易数据验证通过后,执行所述第一交易数据;所述第二交易数据包括所述第一零知识证明;所述第六交易数据包括所述第二零知识证明。
可选的,所述第一零知识证明是基于第一匿名凭证按照椭圆曲线的方式确定的;其中,所述第一匿名凭证是根据所述第一交易数据的交易对象及所述第一用户的子秘密确定的;所述第一零知识证明包括:第一子部分、第二子部分和第三子部分;所述第一零知识证明中的第一子部分是根据所述第一账户的账户地址、所述第一匿名凭证确定的;所述第一零知识证明中的第二子部分是根据所述第一零知识证明中的第一子部分和所述第一交易数据的交易对象确定的;所述第一零知识证明中的第三子部分是根据所述第一零知识证明中的第一子部分和所述第一用户的子秘密确定的。
可选的,所述第一零知识证明具体是按照以下方式确定的:在预设数字范围内选择第一随机数和第二随机数;根据所述第一随机数、所述第二随机数、第一公开点和第二公开点的线性运算结果,确定第一中间变量;所述第一公开点和所述第二公开点为椭圆曲线上的两个公开点;根据所述第一交易数据的交易对象、所述第一用户的子秘密、所述第一公开点和所述第二公开点的线性运算结果,确定所述第一匿名凭证;根据所述第一账户、所述第一中间变量和所述第一匿名凭证,按照预设哈希算法,确定所述第一交易数据的交易对象的所述第一零知识证明的第一子部分;根据所述第一随机数、所述第一零知识证明的第一子部分和所述交易对象的线性运算结果,确定所述第一零知识证明中的第二子部分;根据所述第二随机数、所述第一零知识证明的第一子部分、所述第一用户的子秘密的线性运算结果,确定所述第一零知识证明的第三子部分。
可选的,所述第一零知识证明具体是按照以下方式确定的:t1_1=a1*G+b1*H;其中,t1_1为第一中间变量,a1为所述第一随机数,b1为所述第二随机数,G为所述第一公开点,H为所述第二公开点;V1=v*G+r1*H;V1为所述第二中间变量;v为所述第一交易数据的交易对象;r1为所述第一用户的子秘密;z0_1=Hash(A1|V1|t1_1);A1为所述第一账户;Hash表示所述预设哈希算法;z0_1为所述第一交易数据的交易对象的第一零知识证明的第一子部分;z1_1=a1-z0_1*V1,z2_1=b1-z0_1*r1;V1_kp=(z0_1,z1_1,z2_1);V1_kp为所述第一零知识证明。
可选的,所述第一交易数据还包括所述第一账户的私钥的第三零知识证明、和/或第三账户的私钥的第四零知识证明;所述第三账户为所述第一用户在所述第二区块链的账户;所述第五交易数据还包括所述第二账户的私钥的第五零知识证明、和/或第四账户的私钥的第六零知识证明;所述第四账户为所述第二用户在所述第一区块链的账户;所述第二交易数据还包括所述第三零知识证明、和/或所述第四零知识证明;所述第六交易数据包括所述第五零知识证明、和/或所述第六零知识证明。
可选的,所述执行模块还用于:在验证通过后,生成对所述第一交易数据的第一交易签名,所述第一交易签名用于声明所述第一节点认同所述第一交易数据的有效性;触发所述第二节点对所述第二交易数据进行验证;所述第二交易数据包括所述第一交易数据和所述第一交易签名;所述接收模块还用于:接收所述第二节点的第三交易数据;所述第三交易数据包括所述第二交易数据和所述第二节点对所述第二交易数据的第二交易签名;所述第二交易签名用于声明所述第二节点认同所述第二交易数据的有效性。
可选的,所述执行模块还用于:在验证通过后,生成对所述第五交易数据的第五交易签名,所述第五交易签名用于声明所述第一节点认同所述第五交易数据的有效性;触发所述第二节点对所述第六交易数据进行验证;所述第六交易数据包括所述第五交易数据和所述第五交易签名;所述接收模块还用于:接收所述第二节点的第七交易数据;所述第七交易数据包括所述第六交易数据和所述第二节点对所述第六交易数据的第六交易签名;所述第六交易签名用于声明所述第二节点认同所述第六交易数据的有效性。
上述第三方面及第三方面各个可选装置的有益效果,可以参考上述第一方面及第一方面各个可选方法的有益效果,这里不再赘述。
第四方面,本发明提供一种区块链的跨链交易装置,包括:处理模块,用于确定第一账户拟向第二账户发起的第一交易数据中的交易对象;所述第一账户为第一用户在所述第一区块链上的账户;所述第二账户为第二用户在第二区块链上的账户;以及用于生成第一零知识证明;所述第一零知识证明为所述第一交易数据中的交易对象的零知识证明;数据传输模块,用于向所述第一区块链的第一节点发送第一交易数据,所述第一交易数据包括所述第一零知识证明;以及用于接收所述第二用户发送的第四交易数据;所述第四交易数据包括第二零知识证明;所述第二零知识证明为所述第五交易数据中的交易对象的零知识证明;还用于在对所述第四交易数据验证通过后,向所述第一节点发送第五交易数据;所述第五交易数据包括所述第二零知识证明。
可选的,所述第一零知识证明包括:第一子部分、第二子部分和第三子部分;所述处理模块,具体用于:根据所述第一交易数据的交易对象及所述第一用户的子秘密,生成第一匿名凭证;根据所述第一账户的账户地址和所述第一匿名凭证,确定所述第一零知识证明中的第一子部分;根据所述第一零知识证明中的第一子部分和所述第一交易数据的交易对象,确定所述第一零知识证明中的第二子部分;根据所述第一零知识证明中的第一子部分和所述第一用户的子秘密,确定所述第一零知识证明中的第三子部分。
可选的,所述第一交易数据还包括所述第三零知识证明和/或所述第四零知识证明;所述第三账户为所述第一用户在所述第二区块链的账户;所述第四交易数据还包括所述第二账户的私钥的第五零知识证明、和/或第四账户的私钥的第六零知识证明;所述第四账户为所述第二用户在所述第一区块链的账户;所述处理模块还用于:生成所述第一账户的私钥的第三零知识证明、和/或第三账户的私钥的第四零知识证明;生成所述第四交易数据的第四交易签名,将所述第四交易数据和所述第四交易签名作为所述第五交易数据。
第五方面,本发明提供一种计算机设备,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面及第一方面各个可选的方法或第二方面及第二方面各个可选的方法。
第六方面,本发明提供一种存储介质,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面及第一方面各个可选的方法或第二方面及第二方面各个可选的方法。
附图说明
图1为本申请实施例提供的一种区块链的跨链交易方法的步骤流程示意图;
图2为本申请实施例提供的一种区块链的跨链交易方法的具体步骤流程示意图;
图3为本申请实施例提供的一种区块链的跨链交易方法的具体步骤流程示意图;
图4为本申请实施例提供的一种区块链的跨链交易装置的结构示意图;
图5为本申请实施例提供的一种区块链的跨链交易装置的结构示意图。
具体实施方式
为了更好的理解上述技术方案,下面将结合说明书附图及具体的实施方式对上述技术方案进行详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互结合。
在金融机构(银行机构、保险机构或证券机构)在进行业务(如银行的贷款业务、存款业务等)运转过程中,金融科技领域中对金融交易的安全性要求极高,因此常通过区块链(blockchain)来实现金融交易。目前,在跨区块链的交易场景中,证明交易对象的所有权时会泄露交易对象。这种情况不符合银行等金融机构的需求,无法保证金融机构各项业务的高效运转。
如图1所示,本申请提供一种区块链的跨链交易方法。
步骤101:第一区块链的第一节点接收第一交易数据并验证所述第一交易数据。
步骤102:所述第一节点接收第五交易数据并验证所述第五交易数据。
步骤103:在所述第二区块链的第二节点对第二交易数据和第六交易数据验证通过后,所述第一节点执行所述第一交易数据。
步骤101~步骤103中,所述第一交易数据为第一账户向第二账户发起的交易数据;所述第一账户为第一用户在所述第一区块链上的账户;所述第二账户为第二用户在第二区块链上的账户;所述第一交易数据包括第一零知识证明;所述第一零知识证明为所述第一交易数据中的交易对象的零知识证明;所述第五交易数据是所述第一用户对所述第二用户发起的第四交易数据验证通过后生成的;所述第四交易数据和所述第五交易数据均包括第二零知识证明;所述第二零知识证明为所述第五交易数据中的交易对象的零知识证明;所述第二交易数据包括所述第一零知识证明;所述第六交易数据包括所述第二零知识证明。
一种可能的实现方式(以下称为椭圆曲线的零知识证明生成方式)中,所述第一零知识证明是基于第一匿名凭证按照椭圆曲线的方式确定的;其中,所述第一匿名凭证是根据所述第一交易数据的交易对象及所述第一用户的子秘密确定的;所述第一零知识证明包括:第一子部分、第二子部分和第三子部分;所述第一零知识证明中的第一子部分是根据所述第一账户的账户地址、所述第一匿名凭证确定的;所述第一零知识证明中的第二子部分是根据所述第一零知识证明中的第一子部分和所述第一交易数据的交易对象确定的;所述第一零知识证明中的第三子部分是根据所述第一零知识证明中的第一子部分和所述第一用户的子秘密确定的。
椭圆曲线的零知识证明生成方式具体可以如下:
所述第一公开点和所述第二公开点为椭圆曲线上的两个公开点;根据所述第一交易数据的交易对象、所述第一用户的子秘密、所述第一公开点和所述第二公开点的线性运算结果,确定所述第一匿名凭证;根据所述第一账户、所述第一中间变量和所述第一匿名凭证,按照预设哈希算法,确定所述第一交易数据的交易对象的所述第一零知识证明的第一子部分;根据所述第一随机数、所述第一零知识证明的第一子部分和所述交易对象的线性运算结果,确定所述第一零知识证明中的第二子部分;根据所述第二随机数、所述第一零知识证明的第一子部分、所述第一用户的子秘密的线性运算结果,确定所述第一零知识证明的第三子部分。
更具体地,椭圆曲线的零知识证明生成方式中所述第一零知识证明可以按照以下方式确定:
t1_1=a1*G+b1*H;其中,t1_1为第一中间变量,a1为所述第一随机数,b1为所述第二随机数,G为所述第一公开点,H为所述第二公开点;V1=v*G+r1*H;V1为所述第二中间变量;v为所述第一交易数据的交易对象;r1为所述第一用户的子秘密;z0_1=Hash(A1|V1|t1_1);A1为所述第一账户;Hash表示所述预设哈希算法;z0_1为所述第一交易数据的交易对象的第一零知识证明的第一子部分;z1_1=a1-z0_1*V1,z2_1=b1-z0_1*r1;V1_kp=(z0_1,z1_1,z2_1);V1_kp为所述第一零知识证明。
需要说明的是,在步骤101~步骤103的实现方式及可选实施方式中,所述第一交易数据还可以包括所述第一账户的私钥的第三零知识证明、和/或第三账户的私钥的第四零知识证明;所述第三账户为所述第一用户在所述第二区块链的账户;所述第五交易数据还可以包括所述第二账户的私钥的第五零知识证明、和/或第四账户的私钥的第六零知识证明;所述第四账户为所述第二用户在所述第一区块链的账户;所述第二交易数据还可以包括所述第三零知识证明、和/或所述第四零知识证明;所述第六交易数据可以包括所述第五零知识证明、和/或所述第六零知识证明。
步骤101之后,还可以执行以下步骤:
所述第一节点在验证通过后,生成对所述第一交易数据的第一交易签名,所述第一交易签名用于声明所述第一节点认同所述第一交易数据的有效性;所述第一节点触发所述第二节点对所述第二交易数据进行验证;所述第二交易数据包括所述第一交易数据和所述第一交易签名;所述第一节点接收所述第二节点的第三交易数据;所述第三交易数据包括所述第二交易数据和所述第二节点对所述第二交易数据的第二交易签名;所述第二交易签名用于声明所述第二节点认同所述第二交易数据的有效性。
相应地,步骤103之后,还可以执行以下步骤:
所述第一节点在验证通过后,生成对所述第五交易数据的第五交易签名,所述第五交易签名用于声明所述第一节点认同所述第五交易数据的有效性;所述第一节点触发所述第二节点对所述第六交易数据进行验证;所述第六交易数据包括所述第五交易数据和所述第五交易签名;所述第一节点接收所述第二节点的第七交易数据;所述第七交易数据包括所述第六交易数据和所述第二节点对所述第六交易数据的第六交易签名;所述第六交易签名用于声明所述第二节点认同所述第六交易数据的有效性。
步骤101~步骤103为第一节点侧的交互步骤。
相应地,第一用户侧也有类似步骤:
(1)第一用户确定第一账户拟向第二账户发起的第一交易数据中的交易对象。
(2)所述第一用户生成第一零知识证明。
(3)所述第一用户向所述第一区块链的第一节点发送第一交易数据。
(4)所述第一用户接收所述第二用户发送的第四交易数据。
(5)所述第一用户在对所述第四交易数据验证通过后,向所述第一节点发送第五交易数据。
步骤(1)~步骤(5)中,所述第一账户为第一用户在所述第一区块链上的账户;所述第二账户为第二用户在第二区块链上的账户;所述第一交易数据包括所述第一零知识证明;所述第一零知识证明为所述第一交易数据中的交易对象的零知识证明;所述第四交易数据包括第二零知识证明;所述第二零知识证明为所述第五交易数据中的交易对象的零知识证明;所述第五交易数据包括所述第二零知识证明。
所述第一零知识证明包括:第一子部分、第二子部分和第三子部分;步骤(2)的一种可选实施方式中,步骤(2)具体可以为:
根据所述第一交易数据的交易对象及所述第一用户的子秘密,生成第一匿名凭证;根据所述第一账户的账户地址和所述第一匿名凭证,确定所述第一零知识证明中的第一子部分;根据所述第一零知识证明中的第一子部分和所述第一交易数据的交易对象,确定所述第一零知识证明中的第二子部分;根据所述第一零知识证明中的第一子部分和所述第一用户的子秘密,确定所述第一零知识证明中的第三子部分。
步骤(1)~步骤(5)的一种可选实施方式中,所述第一用户生成所述第一账户的私钥的第三零知识证明、和/或第三账户的私钥的第四零知识证明;所述第一交易数据还包括所述第三零知识证明和/或所述第四零知识证明;所述第三账户为所述第一用户在所述第二区块链的账户;所述第四交易数据还包括所述第二账户的私钥的第五零知识证明、和/或第四账户的私钥的第六零知识证明;所述第四账户为所述第二用户在所述第一区块链的账户;所述第一用户在对所述第四交易数据验证通过后,向所述第一节点发送第五交易数据之前,第一用户还可以执行如下步骤:
所述第一用户生成所述第四交易数据的第四交易签名,将所述第四交易数据和所述第四交易签名作为所述第五交易数据。
下面结合图2和图3详细描述本申请实施例提供的一种区块链的交易方法。该方法包括两个阶段:初始化阶段和支付阶段。其中,图2为初始化阶段的交互示意图,图3为支付阶段的交互示意图。
在图2和图3中涉及到的执行实体包括:
甲链共识节点(第一区块链的第一节点):甲链为隐匿交易行为发起的区块链,可简称为发起链(在本申请的描述中,若无特殊说明,链的含义等同于“区块链”)。甲链共识节点即为发起链中参与隐匿交易共识的区块链节点。
乙链共识节点(第二区块链的第二节点):乙链为隐匿交易行为接收的区块链,可简称为接收链。乙链共识节点即为发起链中参与隐匿交易共识的区块链节点。
支付方(如用户A):支付方为隐匿交易行为的发起者,支付方在发起链(如甲链)上拥有匿名权益凭证V1。在甲链拥有地址A1(第一账户),对应私钥A1k。在乙链拥有地址A2(第三账户),对应私钥A2k。
举例来说,用户A拥有甲链匿名凭证V1(第一匿名凭证)、交易对象(如凭证金额)v和用户A的子秘密r1。用户A使用私钥A1k、A2k和r1对地址A1、A2、凭证M1生成零知识证明A1k_kp(A1k_knowledge_proof)、A2k_kp、V1_kp。r1为固定位数(如1024位)内的随机数。本申请的描述中,X_kp表示X的零知识证明(knowledge_proof),可以在不暴露X的实际信息的情况下,证明拥有X,举例来说,X为A1k。
收款方(如用户B):收款方为隐匿交易行为的接收者,收款方在接收链(如乙链)上会生成匿名权益凭证V2,在甲链拥有地址B1(第四账户),对应私钥B1k,在乙链拥有地址B2(第三账户),对应私钥B2k。A1k、A2k、B1k和B2k的生成方式可以相同,以A1k举例来说,地址与私钥的对应关系一般有如下映射A1=Hash(A1k*G),G为椭圆曲线上一个点。
举例来说,用户B拥有乙链匿名凭证V2、金额v和用户B的子秘密r2。用户B使用私钥B1k、B2k和r2对地址B1、B2、凭证V1生成零知识证明B1k_kp、B2k_kp、V2_kp。r2为固定位数(如1024位)内的随机数。
需要说明的是,图2和图3中的支付方以用户A为例说明,收款方以用户B为例说明。
如图2所示,初始化阶段包括以下步骤:
步骤201:用户A和用户B传输账户地址、凭证金额v,子秘密。
步骤202:用户A生成第零交易数据及对第零交易数据的第零交易签名。
步骤203:用户A发送交易的第一交易数据至甲链共识节点。
步骤204:甲链共识节点验证第一交易数据通过,生成第一交易签名,并锁定A1和B1。
步骤205:甲链共识节点发送交易的第二交易数据至乙链共识节点。
步骤206:乙链共识节点验证第二交易数据通过,生成第二交易签名,并锁定A2和B2。
步骤207:乙链共识节点发送交易的第三交易数据至甲链共识节点。
步骤208:甲链共识节点验证第三交易数据通过,并确定A1、B1、A2和B2已被锁定。
步骤201~步骤208中的交易为账户A1向账户B2的转账交易。
步骤201中,账户地址的具体传输过程可以为:用户A将用户A在甲链上的账户地址A1、用户A在乙链上的账户地址A2发送至用户B;用户B将用户B在甲链上的账户地址B1、用户B在乙链上的账户地址B2发送至用户A。
需要说明的是,用户在甲链或乙链账户地址是公开信息,对安全性的要求不高,通过公开信道或私密信道传输都可以。
但是,凭证金额v和子秘密均属于对安全性要求较高的信息,必须通过私密信道以安全方式传输。值得一提的是,凭证金额v和子秘密用于后续步骤中交易数据的验证和生成。凭证金额v的具体传输过程可以为:用户A将凭证金额v通过安全方式发送至用户B。子秘密的具体传输过程可以为:用户A将子秘密r1通过安全方式发送至用户B。用户B将子秘密r2通过安全方式发送至用户A。
步骤202中,第零交易数据可以包括A1k_kp、A2k_kp和V1_kp。用户A生成A1k_kp、A2k_kp和V1_kp的方法类似。值得一提的是,用户B生成B1k_kp、B2k_kp和V2_kp的方法和用户A生成A1k_kp、A2k_kp和V1_kp的方法也类似
以生成A1的零知识证明A1k_kp为例,可以按照以下步骤a)~e)生成:
a)选择固定位数(如1024位)内的不同随机数a,b。
b)根据a,b,G,H,进行线性计算,得到中间变量t1。其中,G和H为椭圆曲线上的两个公开点。
举例来说,t1=a*G+b*H。
c)根据用户A在甲链上的账户地址A1、生成变量R和t1,按照预设哈希算法(Hash),计算零知识证明组成部分z0。其中,生成变量R是根据G、H、A1k以及用户A子秘密r1线性计算得到的,生成变量R是公开的,A1k为A1的私钥。
举例来说,R=A1k*G+r1*H;z0=Hash(A1|R|t1)。
d)根据a、b、z0、r1和A1的私钥A1k进行线性计算,得到零知识证明组成部分z1和z2。举例来说,z1=a-z0*A1k,z2=b-z0*r1。
e)生成A1k的零知识证明A1k_kp=(z0,z1,z2)。
其余的零知识证明,A2k_kp、B1k_kp、B2k_kp、V1_kp、V2_kp的计算过程和上述过程类似。具体来说:
A2k_kp生成过程中,相应的步骤a)、b)和e)相同,c)步骤中生成变量R是根据G、H、A2k以及用户A子秘密r1线性计算得到的,根据用户A在乙链上的账户地址A2、生成变量R和t1,按照预设哈希算法(Hash),计算零知识证明组成部分z0。举例来说,R=A2k*G+r1*H;z0=Hash(A2|R|t1)。d)步骤中,根据a、b、z0、r1和A1的私钥A2k进行线性计算,得到零知识证明组成部分z1和z2。举例来说,z1=a-z0*A2k,z2=b-z0*r1。
V1_kp生成过程中,相应的步骤a)、b)和e)相同,c)步骤中生成变量R是根据G、H、v以及用户A子秘密r1线性计算得到的,根据用户A在甲链上的账户地址A1、生成变量R和t1,按照预设哈希算法(Hash),计算零知识证明组成部分z0。举例来说,R=v*G+r1*H;z0=Hash(A1|R|t1)。d)步骤中,根据a、b、z0、r1和v进行线性计算,得到V1_kp的组成部分z1和z2。举例来说,z1=a-z0*v,z2=b-z0*r1。
B1k_kp生成过程中,相应的步骤a)、b)和e)相同,c)步骤中生成变量R是根据G、H、B1k以及用户B子秘密r2线性计算得到的,根据用户B在甲链上的账户地址B1、生成变量R和t1,按照预设哈希算法(Hash),计算零知识证明组成部分z0。举例来说,R=B1k*G+r2*H;z0=Hash(B1|R|t1)。d)步骤中,根据a、b、z0、r2和B1的私钥B1k进行线性计算,得到B1k_kp的组成部分z1和z2。举例来说,z1=a-z0*B1k,z2=b-z0*r2。
B2k_kp生成过程中,相应的步骤a)、b)和e)相同,c)步骤中生成变量R是根据G、H、B2k以及用户B子秘密r2线性计算得到的,根据用户B在乙链上的账户地址B2、生成变量R和t1,按照预设哈希算法(Hash),计算零知识证明组成部分z0。举例来说,R=B2k*G+r2*H;z0=Hash(B2|R|t1)。d)步骤中,根据a、b、z0、r2和B2的私钥B2k进行线性计算,得到B2k_kp的组成部分z1和z2。举例来说,z1=a-z0*B2k,z2=b-z0*r2。
V2_kp生成过程中,相应的步骤a)、b)和e)相同,c)步骤中生成变量R是根据G、H、v以及用户A子秘密r2线性计算得到的,根据用户A在甲链上的账户地址A1、生成变量R和t1,按照预设哈希算法(Hash),计算零知识证明组成部分z0。举例来说,R=v*G+r2*H;z0=Hash(B2|R|t1)。d)步骤中,根据a、b、z0、r2和v进行线性计算,得到V2_kp的组成部分z1和z2。举例来说,z1=a-z0*v,z2=b-z0*r2。显然,V2_kp生成过程中是需要用到v的,所以用户A需要向用户B发送凭证金额v。当然具体的传输步骤可以不在步骤201中,此处只是以步骤201为例说明,只要在V2_kp生成之前都可以。
需要说明的是,在步骤203之前,A1k_kp、A2k_kp和V1_kp必须要生成,B1k_kp、B2k_kp和V2_kp可以生成,也可以不生成。
步骤202中,用户A还会生成对第零交易数据(如A1k_kp、A2k_kp和V1_kp)的签名,记为第零交易签名δ_A。
步骤203中,第一交易数据包括第零交易数据和第零交易签名。具体地,第一交易数据可以为(δ_A|A1|A2|B1|B2|V1_kp|A1k_kp|A2k_kp)。本申请的描述中,()中包括的表示一项交易数据,用“|”表示将交易数据的每一项分隔开。
步骤203为交易发起的步骤。
需要说明的是,本申请中交易数据(如本申请描述到的第一交易数据、第二交易数据…等)中可能包含3类数据,地址类数据、签名类数据和零知识证明类数据。可以按照以下分类验证规则,对不同类的数据进行验证:
对于地址类数据,可以直接验证地址类数据中指示为本链内账户地址是否真的在本链中(如对于A1和B1,指示为甲链内的账户地址,甲链共识节点便确认A1和B1是否真的在甲链中);对于签名类数据,可以通过预设的验签算法验证签名类数据的有效性(如对于δ_A,甲链共识节点便确认用户A是否真的确认了δ_A相应数据的有效性);对于零知识证明类数据,可以通过以下步骤f)~g)的算法,来验证零知识证明的正确性。以生成A1的零知识证明A1k_kp为例,可以按照以下步骤f)~g)生成:
f)根据A1k_kp中的z0,z1,z2进行线性计算,得到中间变量t2。
举例来说,t2=z1*G+z2*H+z0*R。其中,R为计算A1k_kp时的R,R=A1k*G+r1*H。
g)验证A1k_kp的零知识证明部分z0=Hash(A1|R|t2)是否成立。
显然,A1k_kp验证是需要用户A的子秘密r1的,这也解释了用户A向用户B传输子秘密r1的原因(相应地,A2k_kpB1k_kp、B2k_kp也存在类似的原因),当然具体的传输步骤可以不在步骤201中,此处只是以步骤201为例说明,只要在A1k_kp验证之前都可以。
其余的零知识证明,A2k_kp、B1k_kp、B2k_kp、V1_kp、V2_kp的验证过程和上述过程类似。具体来说:
A2k_kp验证过程中,步骤f)中,t2的计算形式相同,只是R不同,R=A2k*G+r1*H,步骤g)中,验证A2k_kp的零知识证明部分z0=Hash(A2|R|t2)。
V1k_kp验证过程中,步骤f)中,t2的计算形式相同,只是R不同,R=v*G+r1*H,步骤g)中,验证V1k_kp的零知识证明部分z0=Hash(A1|R|t2)。
B1k_kp验证过程中,步骤f)中,t2的计算形式相同,只是R不同,R=B1k*G+r2*H,步骤g)中,验证B1k_kp的零知识证明部分z0=Hash(B1|R|t2)。
B2k_kp验证过程中,步骤f)中,t2的计算形式相同,只是R不同,R=B2k*G+r2*H,步骤g)中,验证B2k_kp的零知识证明部分z0=Hash(B2|R|t2)。
V2k_kp验证过程中,步骤f)中,t2的计算形式相同,只是R不同,R=v*G+r2*H,步骤g)中,验证V2k_kp的零知识证明部分z0=Hash(B2|R|t2)。
因此,步骤204中,甲链共识节点可以按照分类验证规则对第一交易数据中的不同类型的数据进行验证,并在验证通过后,生成第一交易签名,记为δ_甲,并将A1和B1锁定,从而防止其他交易对账户A1和B1进行操作。
步骤204完成,说明甲链的共识节点认同了交易的合法性,同意这笔交易在未来执行。
步骤205中的第二交易数据包括第一交易数据除了A1和B1的部分以及第一交易签名。具体地,第二交易数据可以为(δ_甲|A2|B2|V1_kp|A1k_kp|A2k_kp)。
步骤206中,乙链共识节点可以按照分类验证规则对第二交易数据中的不同类型的数据进行验证,并在验证通过后,生成第二交易签名,记为δ_乙,并将A2和B2锁定,从而防止其他交易对账户A2和B2进行操作。乙链共识节点验证了δ_甲后,说明乙链共识节点可以确定甲链的共识节点已经认同了交易的合法性,且已将账户A1和B1锁定。
步骤207中的第三交易数据包括第二交易数据和第二交易签名。具体地,第三交易数据可以为(δ_乙|δ_甲|A2|B2|V1_kp|A1k_kp|A2k_kp)。
步骤208中,甲链共识节点可以按照分类验证规则对第三交易数据中的不同类型的数据进行验证,需要说明的是,对于甲链共识节点历史上已经验证过的数据,如V1_kp可以在确定是历史验证过的数据后,不再重复验证。甲链共识节点验证了δ_乙后,说明甲链共识节点可以确定乙链的共识节点已经认同了交易的合法性,且已将账户A2和B2锁定,而且A1和B1已经锁定,因此,可以确定A1、B1、A2和B2均已被锁定。
到此为止,A1、B1、A2和B2均已被锁定,在解除锁定之前不能进行其它交易,只能进行账户A1向账户B2的转账交易。具体可结合图3,详细描述支付阶段的过程。
步骤301:用户B生成第三交易数据及对第三交易数据的第三交易签名。
步骤302:用户B发送第四交易数据至用户A。
步骤303:用户A验证第四交易数据通过,生成第四交易签名。
步骤304:用户A发送第五交易数据至甲链共识节点。
步骤305:甲链共识节点验证第五交易数据通过,生成第五交易签名。
步骤306:甲链共识节点发送第六交易数据至乙链共识节点。
步骤307:乙链共识节点验证第六交易数据通过,生成第六交易签名。
步骤308:乙链共识节点发送第七交易数据至甲链共识节点。
步骤309:甲链共识节点验证第七交易数据通过,生成第七交易签名,并解除A1和B1的锁定。
步骤310:甲链共识节点发送第八交易数据至乙链共识节点。
步骤311:乙链共识节点验证第八交易数据通过,生成第八交易签名,并解除A2和B2的锁定。
步骤301中,第三交易数据可以包括B1k_kp、B2k_kp、V2和V2_kp可按照步骤202所述的B1k_kp、B2k_kp和V2_kp相应的步骤a)~e)的生成方法生成。
步骤301中,用户B还会生成对第三交易数据(如B1k_kp、B2k_kp、V2和V2_kp)的签名,记为第三交易签名δ_B。
步骤301完成说明用户B声明了第三交易数据(如B1k_kp、B2k_kp、V2和V2_kp)的有效性。
步骤302中,第四交易数据包括第三交易数据和第三交易签名。具体地,第四交易数据可以为(δ_B|B1k_kp|B2k_kp|V2_kp|V2)。
步骤303中,用户A接收到第四交易数据后,可以按照分类验证规则对第四交易数据中的不同类型的数据进行验证,并在验证通过后,生成第四交易签名,记为δ2_A。步骤303完成后,说明用户A认同了第四交易数据的有效性。
步骤304中,第五交易数据包括第四交易数据和第四交易签名。具体地,第五交易数据可以为(δ2_A|δ_B|B1k_kp|B2k_kp|V2|V2_kp)。
步骤305中,甲链共识节点接收到第五交易数据后,可以按照分类验证规则对第五交易数据中的不同类型的数据进行验证,并在验证通过后,生成第五交易签名,记为δ2_甲。步骤305完成后,说明甲链共识节点认同了第五交易数据的有效性,此时,V2_kp已在甲链中生效,即在甲链已经认同,账户A1的V1_kp已经转化为账户B2的V2_kp。
步骤306中,第六交易数据包括(δ2_甲|δ2_A|δ_B|B1k_kp|B2k_kp|V2|V2_kp)。第六交易数据可以为第五交易数据和第五交易签名的组合。第六交易数据还可以有其它形式,如(δ2_甲|δ2_A|δ_B|B1k_kp|B2k_kp|V2|V2_kp|δ_甲|A1|B1|V1_kp|A1k_kp|A2k_kp),即甲链共识节点把初始化阶段中得到的(δ_甲|A1|B1|V1_kp|A1k_kp|A2k_kp)一同打包发送给乙链共识节点。
步骤307中,乙链共识节点接收到第六交易数据后,可以按照分类验证规则对第六交易数据中的不同类型的数据进行验证,并在验证通过后,生成第六交易签名,记为δ2_乙。步骤307完成后,说明乙链共识节点认同了第六交易数据的有效性,而且乙链共识节点也确定了甲链也认同了第五交易数据的有效性,此时,V2_kp也在乙链中生效,即在乙链已经认同,账户A1的V1_kp已经转化为账户B2的V2_kp。
步骤308中,第七交易数据包括(δ2_乙|δ2_甲|δ2_A|δ_B|B1k_kp|B2k_kp|V2|V2_kp),可以是第六交易数据和第六交易签名的组合。还可以有其它形式,如第七交易数据可以为(δ2_甲|δ2_A|δ_B|B1k_kp|B2k_kp|V2|V2_kp)如可以为(δ2_乙|δ2_甲|δ2_A|δ_B|B1k_kp|B2k_kp|V2_kp|δ_甲|δ_乙|A1|B1|A2|B2|V1_kp|A1k_kp|A2k_kp)。即乙链共识节点把初始化阶段中得到的(δ_乙|A2|B2)一同打包发送给甲链共识节点。
步骤309中,甲链共识节点接收到第七交易数据后,可以按照分类验证规则对第七交易数据中的不同类型的数据进行验证,并在验证通过后,生成第七交易签名,记为δ3_甲。步骤309完成后,说明甲链共识节点认同了第七交易数据的有效性,而且甲链共识节点也确定了乙链也认同了第六交易数据的有效性,甲链和乙链均已经认同,账户A1的V1_kp已经转化为账户B2的V2_kp,也就是说,此时账户A1向账户B2的转账交易已经在甲链和乙链中生效,所以此时账户A1和B1可以参与其它交易了,便解除A1和B1的锁定。
步骤310中,第八交易数据包括δ3_甲,可以为第七交易数据和第七交易签名的组合,第七交易数据中的数据乙链均已经验证过,所以第八交易数据可以只包含第七交易签名。也可以将第七交易数据和第七交易签名全包含,乙链共识节点可以检验是否是之前验证过的数据,是就不需要重复验证。具体地,第八交易数据可以为(δ3_甲|δ2_乙|δ2_甲|δ2_A|δ_B|B1k_kp|B2k_kp|V2_kp|δ_甲|δ_乙|A1|B1|A2|B2|V1_kp|A1k_kp|A2k_kp)。即第八交易数据可以为第七交易数据和第七交易签名的组合。
步骤311中,乙链共识节点接收到第八交易数据后,可以按照分类验证规则对第八交易数据中的不同类型的数据进行验证。步骤311中验证通过后,说明乙链共识节点也确定了甲链也认同了第七交易数据的有效性,也就是说,此时账户A1向账户B2的转账交易已经在乙链和乙链中生效,所以此时账户A2和B2可以参与其它交易了,便解除A2和B2的锁定。
如图4所示,本发明提供一种区块链的跨链交易装置,包括:接收模块401,用于接收第一交易数据并验证所述第一交易数据;所述第一交易数据为第一账户向第二账户发起的交易数据;所述第一账户为第一用户在所述第一区块链上的账户;所述第二账户为第二用户在第二区块链上的账户;所述第一交易数据包括第一零知识证明;所述第一零知识证明为所述第一交易数据中的交易对象的零知识证明;以及用于接收第五交易数据并验证所述第五交易数据;所述第五交易数据是所述第一用户对所述第二用户发起的第四交易数据验证通过后生成的;所述第四交易数据和所述第五交易数据均包括第二零知识证明;所述第二零知识证明为所述第五交易数据中的交易对象的零知识证明;执行模块402,用于在所述第二区块链的第二节点对第二交易数据和第六交易数据验证通过后,执行所述第一交易数据;所述第二交易数据包括所述第一零知识证明;所述第六交易数据包括所述第二零知识证明。
可选的,所述第一零知识证明是基于第一匿名凭证按照椭圆曲线的方式确定的;其中,所述第一匿名凭证是根据所述第一交易数据的交易对象及所述第一用户的子秘密确定的;所述第一零知识证明包括:第一子部分、第二子部分和第三子部分;所述第一零知识证明中的第一子部分是根据所述第一账户的账户地址、所述第一匿名凭证确定的;所述第一零知识证明中的第二子部分是根据所述第一零知识证明中的第一子部分和所述第一交易数据的交易对象确定的;所述第一零知识证明中的第三子部分是根据所述第一零知识证明中的第一子部分和所述第一用户的子秘密确定的。
可选的,所述第一零知识证明具体是按照以下方式确定的:在预设数字范围内选择第一随机数和第二随机数;根据所述第一随机数、所述第二随机数、第一公开点和第二公开点的线性运算结果,确定第一中间变量;所述第一公开点和所述第二公开点为椭圆曲线上的两个公开点;根据所述第一交易数据的交易对象、所述第一用户的子秘密、所述第一公开点和所述第二公开点的线性运算结果,确定所述第一匿名凭证;根据所述第一账户、所述第一中间变量和所述第一匿名凭证,按照预设哈希算法,确定所述第一交易数据的交易对象的所述第一零知识证明的第一子部分;根据所述第一随机数、所述第一零知识证明的第一子部分和所述交易对象的线性运算结果,确定所述第一零知识证明中的第二子部分;根据所述第二随机数、所述第一零知识证明的第一子部分、所述第一用户的子秘密的线性运算结果,确定所述第一零知识证明的第三子部分。
可选的,所述第一零知识证明具体是按照以下方式确定的:t1_1=a1*G+b1*H;其中,t1_1为第一中间变量,a1为所述第一随机数,b1为所述第二随机数,G为所述第一公开点,H为所述第二公开点;V1=v*G+r1*H;V1为所述第二中间变量;v为所述第一交易数据的交易对象;r1为所述第一用户的子秘密;z0_1=Hash(A1|V1|t1_1);A1为所述第一账户;Hash表示所述预设哈希算法;z0_1为所述第一交易数据的交易对象的第一零知识证明的第一子部分;z1_1=a1-z0_1*V1,z2_1=b1-z0_1*r1;V1_kp=(z0_1,z1_1,z2_1);V1_kp为所述第一零知识证明。
可选的,所述第一交易数据还包括所述第一账户的私钥的第三零知识证明、和/或第三账户的私钥的第四零知识证明;所述第三账户为所述第一用户在所述第二区块链的账户;所述第五交易数据还包括所述第二账户的私钥的第五零知识证明、和/或第四账户的私钥的第六零知识证明;所述第四账户为所述第二用户在所述第一区块链的账户;所述第二交易数据还包括所述第三零知识证明、和/或所述第四零知识证明;所述第六交易数据包括所述第五零知识证明、和/或所述第六零知识证明。
可选的,所述执行模块402还用于:在验证通过后,生成对所述第一交易数据的第一交易签名,所述第一交易签名用于声明所述第一节点认同所述第一交易数据的有效性;触发所述第二节点对所述第二交易数据进行验证;所述第二交易数据包括所述第一交易数据和所述第一交易签名;所述接收模块401还用于:接收所述第二节点的第三交易数据;所述第三交易数据包括所述第二交易数据和所述第二节点对所述第二交易数据的第二交易签名;所述第二交易签名用于声明所述第二节点认同所述第二交易数据的有效性。
可选的,所述执行模块402还用于:在验证通过后,生成对所述第五交易数据的第五交易签名,所述第五交易签名用于声明所述第一节点认同所述第五交易数据的有效性;触发所述第二节点对所述第六交易数据进行验证;所述第六交易数据包括所述第五交易数据和所述第五交易签名;所述接收模块401还用于:接收所述第二节点的第七交易数据;所述第七交易数据包括所述第六交易数据和所述第二节点对所述第六交易数据的第六交易签名;所述第六交易签名用于声明所述第二节点认同所述第六交易数据的有效性。
如图5所示,本发明提供一种区块链的跨链交易装置,包括:处理模块501,用于确定第一账户拟向第二账户发起的第一交易数据中的交易对象;所述第一账户为第一用户在所述第一区块链上的账户;所述第二账户为第二用户在第二区块链上的账户;以及用于生成第一零知识证明;所述第一零知识证明为所述第一交易数据中的交易对象的零知识证明;数据传输模块502,用于向所述第一区块链的第一节点发送第一交易数据,所述第一交易数据包括所述第一零知识证明;以及用于接收所述第二用户发送的第四交易数据;所述第四交易数据包括第二零知识证明;所述第二零知识证明为所述第五交易数据中的交易对象的零知识证明;还用于在对所述第四交易数据验证通过后,向所述第一节点发送第五交易数据;所述第五交易数据包括所述第二零知识证明。
可选的,所述第一零知识证明包括:第一子部分、第二子部分和第三子部分;所述处理模块501,具体用于:根据所述第一交易数据的交易对象及所述第一用户的子秘密,生成第一匿名凭证;根据所述第一账户的账户地址和所述第一匿名凭证,确定所述第一零知识证明中的第一子部分;根据所述第一零知识证明中的第一子部分和所述第一交易数据的交易对象,确定所述第一零知识证明中的第二子部分;根据所述第一零知识证明中的第一子部分和所述第一用户的子秘密,确定所述第一零知识证明中的第三子部分。
可选的,所述第一交易数据还包括所述第三零知识证明和/或所述第四零知识证明;所述第三账户为所述第一用户在所述第二区块链的账户;所述第四交易数据还包括所述第二账户的私钥的第五零知识证明、和/或第四账户的私钥的第六零知识证明;所述第四账户为所述第二用户在所述第一区块链的账户;所述处理模块501还用于:生成所述第一账户的私钥的第三零知识证明、和/或第三账户的私钥的第四零知识证明;生成所述第四交易数据的第四交易签名,将所述第四交易数据和所述第四交易签名作为所述第五交易数据。
本申请实施例提供一种计算机设备,包括程序或指令,当所述程序或指令被执行时,用以执行本申请实施例提供的一种区块链的跨链交易方法及任一可选方法。
本申请实施例提供一种存储介质,包括程序或指令,当所述程序或指令被执行时,用以执行本申请实施例提供的一种区块链的跨链交易方法及任一可选方法。
最后应说明的是:本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (13)
1.一种区块链的跨链交易方法,其特征在于,包括:
第一区块链的第一节点接收第一交易数据并验证所述第一交易数据;所述第一交易数据为第一账户向第二账户发起的交易数据;所述第一账户为第一用户在所述第一区块链上的账户;所述第二账户为第二用户在第二区块链上的账户;所述第一交易数据包括第一零知识证明;所述第一零知识证明为所述第一交易数据中的交易对象的零知识证明;
所述第一节点在验证通过后,生成对所述第一交易数据的第一交易签名,所述第一交易签名用于声明所述第一节点认同所述第一交易数据的有效性;
所述第一节点发送第二交易数据至所述第二区块链的第二节点,并触发所述第二节点对所述第二交易数据进行验证;所述第二交易数据包括所述第一交易数据和所述第一交易签名;
所述第一节点接收所述第二节点的第三交易数据;所述第三交易数据包括所述第二交易数据和所述第二节点对所述第二交易数据的第二交易签名;所述第二交易签名用于声明所述第二节点认同所述第二交易数据的有效性;
所述第一节点接收第五交易数据并验证所述第五交易数据,并生成第五交易签名;所述第一节点发送第六交易数据至所述第二节点;所述第五交易数据是所述第一用户对所述第二用户发起的第四交易数据验证通过后生成,并发送至所述第一节点的;所述第四交易数据和所述第五交易数据均包括第二零知识证明;所述第二零知识证明为所述第五交易数据中的交易对象的零知识证明;所述第四交易数据包括所述第三交易数据和第三交易签名;所述第六交易数据包括所述第五交易数据和所述第五交易签名;
在所述第二节点对第二交易数据和第六交易数据验证通过后,所述第一节点执行所述第一交易数据;所述第二交易数据包括所述第一零知识证明;所述第六交易数据包括所述第二零知识证明。
2.如权利要求1所述的方法,其特征在于,所述第一零知识证明是基于第一匿名凭证按照椭圆曲线的方式确定的;其中,所述第一匿名凭证是根据所述第一交易数据的交易对象及所述第一用户的子秘密确定的;所述第一零知识证明包括:第一子部分、第二子部分和第三子部分;所述第一零知识证明中的第一子部分是根据所述第一账户的账户地址、所述第一匿名凭证确定的;所述第一零知识证明中的第二子部分是根据所述第一零知识证明中的第一子部分和所述第一交易数据的交易对象确定的;所述第一零知识证明中的第三子部分是根据所述第一零知识证明中的第一子部分和所述第一用户的子秘密确定的。
3.如权利要求2所述的方法,其特征在于,所述第一零知识证明具体是按照以下方式确定的:
在预设数字范围内选择第一随机数和第二随机数;
根据所述第一随机数、所述第二随机数、第一公开点和第二公开点的线性运算结果,确定第一中间变量;所述第一公开点和所述第二公开点为椭圆曲线上的两个公开点;
根据所述第一交易数据的交易对象、所述第一用户的子秘密、所述第一公开点和所述第二公开点的线性运算结果,确定所述第一匿名凭证;
根据所述第一账户、所述第一中间变量和所述第一匿名凭证,按照预设哈希算法,确定所述第一交易数据的交易对象的所述第一零知识证明的第一子部分;
根据所述第一随机数、所述第一零知识证明的第一子部分和所述交易对象的线性运算结果,确定所述第一零知识证明中的第二子部分;
根据所述第二随机数、所述第一零知识证明的第一子部分、所述第一用户的子秘密的线性运算结果,确定所述第一零知识证明的第三子部分。
4.如权利要求3所述的方法,其特征在于,所述第一零知识证明具体是按照以下方式确定的:
t1_1=a1*G+b1*H;其中,t1_1为第一中间变量,a1为所述第一随机数,b1为所述第二随机数,G为所述第一公开点,H为所述第二公开点;
V1=v*G+r1*H;V1为第二中间变量;v为所述第一交易数据的交易对象;r1为所述第一用户的子秘密;
z0_1=Hash(A1|V1|t1_1);A1为所述第一账户;Hash表示所述预设哈希算法;z0_1为所述第一交易数据的交易对象的第一零知识证明的第一子部分;
z1_1=a1-z0_1*V1,z2_1=b1-z0_1*r1;
V1_kp=(z0_1,z1_1,z2_1);V1_kp为所述第一零知识证明。
5.如权利要求1至4任一项所述的方法,其特征在于,所述第一交易数据还包括所述第一账户的私钥的第三零知识证明、和/或第三账户的私钥的第四零知识证明;所述第三账户为所述第一用户在所述第二区块链的账户;
所述第五交易数据还包括所述第二账户的私钥的第五零知识证明、和/或第四账户的私钥的第六零知识证明;所述第四账户为所述第二用户在所述第一区块链的账户;
所述第二交易数据还包括所述第三零知识证明、和/或所述第四零知识证明;
所述第六交易数据包括所述第五零知识证明、和/或所述第六零知识证明。
6.如权利要求1至4任一项所述的方法,其特征在于,所述第一节点验证所述第五交易数据之后,还包括:
所述第一节点在验证通过后,生成对所述第五交易数据的第五交易签名,所述第五交易签名用于声明所述第一节点认同所述第五交易数据的有效性;
所述第一节点触发所述第二节点对所述第六交易数据进行验证;所述第六交易数据包括所述第五交易数据和所述第五交易签名;
所述第一节点接收所述第二节点的第七交易数据;所述第七交易数据包括所述第六交易数据和所述第二节点对所述第六交易数据的第六交易签名;所述第六交易签名用于声明所述第二节点认同所述第六交易数据的有效性。
7.一种区块链的跨链交易方法,其特征在于,包括:
第一用户确定第一账户拟向第二账户发起的第一交易数据中的交易对象;所述第一账户为第一用户在第一区块链上的账户;所述第二账户为第二用户在第二区块链上的账户;
所述第一用户生成第一零知识证明;所述第一零知识证明为所述第一交易数据中的交易对象的零知识证明;
所述第一用户向所述第一区块链的第一节点发送第一交易数据,所述第一交易数据包括所述第一零知识证明;
所述第一用户接收所述第二用户发送的第四交易数据;所述第四交易数据包括第二零知识证明;所述第二零知识证明为第五交易数据中的交易对象的零知识证明;
所述第一用户在对所述第四交易数据验证通过后,向所述第一节点发送第五交易数据;所述第五交易数据包括所述第二零知识证明。
8.如权利要求7所述的方法,其特征在于,所述第一零知识证明包括:第一子部分、第二子部分和第三子部分;所述第一用户生成第一零知识证明,包括:
根据所述第一交易数据的交易对象及所述第一用户的子秘密,生成第一匿名凭证;
根据所述第一账户的账户地址和所述第一匿名凭证,确定所述第一零知识证明中的第一子部分;
根据所述第一零知识证明中的第一子部分和所述第一交易数据的交易对象,确定所述第一零知识证明中的第二子部分;
根据所述第一零知识证明中的第一子部分和所述第一用户的子秘密,确定所述第一零知识证明中的第三子部分。
9.如权利要求7或8所述的方法,其特征在于,还包括:
所述第一用户生成所述第一账户的私钥的第三零知识证明、和/或第三账户的私钥的第四零知识证明;所述第一交易数据还包括所述第三零知识证明和/或所述第四零知识证明;所述第三账户为所述第一用户在所述第二区块链的账户;
所述第四交易数据还包括所述第二账户的私钥的第五零知识证明、和/或第四账户的私钥的第六零知识证明;所述第四账户为所述第二用户在所述第一区块链的账户;所述第一用户在对所述第四交易数据验证通过后,向所述第一节点发送第五交易数据之前,还包括:
所述第一用户生成所述第四交易数据的第四交易签名,将所述第四交易数据和所述第四交易签名作为所述第五交易数据。
10.一种区块链的跨链交易装置,其特征在于,包括:
接收模块,用于接收第一交易数据并验证所述第一交易数据;所述第一交易数据为第一账户向第二账户发起的交易数据;所述第一账户为第一用户在第一区块链上的账户;所述第二账户为第二用户在第二区块链上的账户;所述第一交易数据包括第一零知识证明;所述第一零知识证明为所述第一交易数据中的交易对象的零知识证明;以及用于
在验证通过后,生成对所述第一交易数据的第一交易签名,所述第一交易签名用于声明第一节点认同所述第一交易数据的有效性;发送第二交易数据至所述第二区块链的第二节点,并触发所述第二节点对所述第二交易数据进行验证;所述第二交易数据包括所述第一交易数据和所述第一交易签名;
接收所述第二节点的第三交易数据;所述第三交易数据包括所述第二交易数据和所述第二节点对所述第二交易数据的第二交易签名;所述第二交易签名用于声明所述第二节点认同所述第二交易数据的有效性;
接收第五交易数据并验证所述第五交易数据,并生成第五交易签名;发送第六交易数据至所述第二节点;所述第五交易数据是所述第一用户对所述第二用户发起的第四交易数据验证通过后生成,并发送至所述第一节点的;所述第四交易数据和所述第五交易数据均包括第二零知识证明;所述第二零知识证明为所述第五交易数据中的交易对象的零知识证明;所述第四交易数据包括所述第三交易数据和第三交易签名;所述第六交易数据包括所述第五交易数据和所述第五交易签名;
执行模块,用于在所述第二节点对第二交易数据和第六交易数据验证通过后,执行所述第一交易数据;所述第二交易数据包括所述第一零知识证明;所述第六交易数据包括所述第二零知识证明。
11.一种区块链的跨链交易装置,其特征在于,包括:
处理模块,用于确定第一账户拟向第二账户发起的第一交易数据中的交易对象;所述第一账户为第一用户在第一区块链上的账户;所述第二账户为第二用户在第二区块链上的账户;以及用于
生成第一零知识证明;所述第一零知识证明为所述第一交易数据中的交易对象的零知识证明;
数据传输模块,用于向所述第一区块链的第一节点发送第一交易数据,所述第一交易数据包括所述第一零知识证明;以及用于
接收所述第二用户发送的第四交易数据;所述第四交易数据包括第二零知识证明;所述第二零知识证明为第五交易数据中的交易对象的零知识证明;还用于在对所述第四交易数据验证通过后,向所述第一节点发送所述第五交易数据;所述第五交易数据包括所述第二零知识证明。
12.一种计算机设备,其特征在于,包括程序或指令,当所述程序或指令被执行时,如权利要求1至6或7至9中任意一项所述的方法被执行。
13.一种存储介质,其特征在于,包括程序或指令,当所述程序或指令被执行时,如权利要求1至6或7至9中任意一项所述的方法被执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010328317.3A CN111507721B (zh) | 2020-04-23 | 2020-04-23 | 一种区块链的跨链交易方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010328317.3A CN111507721B (zh) | 2020-04-23 | 2020-04-23 | 一种区块链的跨链交易方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111507721A CN111507721A (zh) | 2020-08-07 |
CN111507721B true CN111507721B (zh) | 2021-07-23 |
Family
ID=71877859
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010328317.3A Active CN111507721B (zh) | 2020-04-23 | 2020-04-23 | 一种区块链的跨链交易方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111507721B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112184245B (zh) * | 2020-09-30 | 2024-04-26 | 深圳前海微众银行股份有限公司 | 一种跨区块链的交易身份确认方法及装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107862216B (zh) * | 2017-10-13 | 2021-04-06 | 布比(北京)网络技术有限公司 | 用于匿名跨链交易的隐私保护方法、装置和存储介质 |
CN108288159A (zh) * | 2018-03-07 | 2018-07-17 | 物数(上海)信息科技有限公司 | 基于多区块链的跨链交易方法、系统、设备及存储介质 |
US20190354962A1 (en) * | 2018-05-18 | 2019-11-21 | Qredo Ltd. | Distributed Ledger Payments Platform for Telecoms |
CN110428255B (zh) * | 2019-07-05 | 2023-03-10 | 深圳壹账通智能科技有限公司 | 一种基于区块链的车辆数据管理方法及装置 |
CN110728576A (zh) * | 2019-08-19 | 2020-01-24 | 湖南科技学院 | 一种基于零知识证明的去中心化匿名数据交易方法 |
CN110473105B (zh) * | 2019-08-20 | 2024-01-16 | 深圳市迅雷网络技术有限公司 | 一种区块链交易结算方法、系统及相关设备 |
-
2020
- 2020-04-23 CN CN202010328317.3A patent/CN111507721B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111507721A (zh) | 2020-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230214827A1 (en) | Settling obligations via netting transactions | |
CN109242675B (zh) | 基于区块链的资产发布方法及装置、电子设备 | |
CN108885761B (zh) | 用于区块链上的安全点对点通信的方法 | |
US10225076B2 (en) | Splitting digital promises recorded in a blockchain | |
US20220222634A1 (en) | Weighted multiple authorizations | |
CN106504094B (zh) | 基于区块链技术的分布式总账系统的交易撮合方法及系统 | |
US11436595B2 (en) | Method for issuing, using, refunding, settling and revoking electronic voucher using updated status of balance database by respective blocks in blockchain, and server using the same | |
US11316696B2 (en) | Hash subtrees for grouping components by component type | |
US11449864B2 (en) | Reissuing obligations to preserve privacy | |
CN109544129B (zh) | 区块链交易方法及装置、电子设备 | |
CN112037068B (zh) | 资源转移方法、系统、装置、计算机设备和存储介质 | |
CN116158053A (zh) | 离线交互系统和方法 | |
CN111383114A (zh) | 基于区块链的资产信息管理方法和装置 | |
CN107909440B (zh) | 一种分布式总账系统交易同步清算方法及系统 | |
Dreier et al. | Formal analysis of e-cash protocols | |
US11424938B1 (en) | Credentialed miners for a blockchain | |
CN111507721B (zh) | 一种区块链的跨链交易方法及装置 | |
CN111523892B (zh) | 一种区块链的跨链交易方法及装置 | |
Ilgi et al. | Formal verification for security technologies in the blockchain with artificial intelligence: a survey | |
CN112861184A (zh) | 资产证明的验证与生成方法、装置及电子设备 | |
Cline et al. | ClockWork: An exchange protocol for proofs of non Front-Running | |
KR101171798B1 (ko) | 전자상거래에서의 전자 지불 시스템 및 방법과 이에 사용되는 기록매체 | |
CN112633890B (zh) | 一种基于区块链的隐匿权益证明的验证方法及装置 | |
CN113313490B (zh) | 资产与合约分离的区块链智能合约交易方法 | |
US20220393880A1 (en) | Credentialed blockchain participation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |