CN113793147B - 一种区块链隐藏交易金额的方法、设备及储存介质 - Google Patents
一种区块链隐藏交易金额的方法、设备及储存介质 Download PDFInfo
- Publication number
- CN113793147B CN113793147B CN202110883011.9A CN202110883011A CN113793147B CN 113793147 B CN113793147 B CN 113793147B CN 202110883011 A CN202110883011 A CN 202110883011A CN 113793147 B CN113793147 B CN 113793147B
- Authority
- CN
- China
- Prior art keywords
- transaction
- receiver
- initiator
- confusion
- output
- 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
- 238000000034 method Methods 0.000 title claims abstract description 33
- 239000003999 initiator Substances 0.000 claims description 104
- 238000012546 transfer Methods 0.000 claims description 24
- 230000008859 change Effects 0.000 claims description 21
- 238000012795 verification Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 9
- 230000000977 initiatory effect Effects 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000009472 formulation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
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/3825—Use of electronic signatures
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/383—Anonymous user system
-
- 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
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Engineering & Computer Science (AREA)
- Finance (AREA)
- Physics & Mathematics (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Technology Law (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明属于计算机技术领域,尤其涉及一种区块链隐藏交易金额的方法、设备及储存介质,基于混淆因子等方法将交易金额彻底隐藏,只有知道该金额对应私钥的人才知道金额的真实数值,同时可以令区块链上的任何一个节点在不知道交易的具体金额的情况下验证交易。
Description
技术领域
本发明属于计算机技术领域,尤其涉及一种区块链隐藏交易金额的方法、设备及储存介质。
背景技术
区块链是一种新型去中心化协议,能安全地存储数字货币交易或其他数据,信息不可伪造和篡改,区块链上的交易确认由区块链上的所有节点共同完成。传统的基于UTXO(Unspent TransactionOutput)的区块链,使用整个P2P网络中众多节点构成的分布式数据库来确认并记录所有的交易行为,除了交易各方的私有信息被加密外,任何人都可以通过公开的接口查询每笔交易或某个地址的余额,所有交易数据都是公开透明的,对于一些商业机构而言,其地址很容易在一段时间后被人所知晓,那么其财富情况就会被公之于众,而财富情况对于很多商业机构而言属于商业秘密,现有的隐私方案一般都不能隐藏用户的转账金额,只是转账金额混淆在众多转账金额之中,外界无法确定哪一个是真实的金额。
发明内容
为解决上述技术问题,本发明提供了一种区块链隐藏交易金额的方法、设备及储存介质,能够屏蔽真实的转账金额。
为实现上述目的,本发明采用以下技术方案:
第一方面,提供一种区块链隐藏交易金额的方法,包括如下步骤:
一种区块链隐藏交易金额的方法,其特征在于,包括如下步骤:
S100、交易发起方选择椭圆曲线,选取椭圆曲线上的一个生成点作为通用生成点,并选取椭圆曲线上的另一生成点作为固定生成点,交易发起方为每个参与交易的未花费交易输出生成一个对应的交易私钥,同时交易发起方为找零输出生成对应的交易私钥,所述交易私钥均为随机选取的随机值;
S200、交易发起方基于自身生成的交易私钥和所述通用生成点做椭圆曲线乘法生成交易私钥对应的交易公钥;
S300、交易发起方基于未花费交易输出和找零输出以及各自对应的交易私钥、固定生成点、通用生成点生成未花费交易输出和找零输出对应的承诺,在各个所述承诺中各个交易输出以其对应的交易私钥作为混淆因子;
S400、交易发起方设置交易的交易费,并基于交易费、交易费混淆因子、固定生成点、通用生成点生成交易费对应的承诺,其中,所述交易费混淆因子取0;
各个交易输出对应的承诺满足如下公式:
C=v*G+r*H
其中,C为承诺的输出值、v为交易的实际金额、G为固定生成点、r为混淆因子、H为通用生成点,上述公式适用椭圆曲线的乘法和加减法规则;
S500、交易发起方生成交易数据发送至交易接收方,交易发起方和交易接收方基于所述交易数据生成交易签名数据,交易发起方生成交易输入承诺和交易输出承诺,并将交易签名数据、交易输入承诺和交易输出承诺写入交易信息;
S600、交易发起方对所述交易信息和交易提交到区块链系统,所述区块链系统验证交易并将验证通过的交易存储在所述区块链系统中。
作为优选,步骤S500具体包括以下步骤:
S510、交易发起方计算其混淆因子总数,交易发起方的混淆因子总数为所有参与交易的未花费交易输出对应的混淆因子的和减去找零输出对应的混淆因子的值,混淆因子总数计算满足如下公式:
rs=r1+r2+r3+r4+.........rn-rc
其中rs为交易发起方的混淆因子总数,rn为各个参与交易的未花费交易输出对应的混淆因子,rc为找零输出对应的混淆因子;
S520、交易发起方创建一个发起方随机值,分别将所述发起方随机值和交易方混淆因子总数与所述通用生成点做椭圆曲线乘法对应生成发起方随机值的承诺和交易方混淆因子总数的承诺;
S530、交易发起方向交易接收方加密发送交易数据,交易数据包括转账存入输出、交易费、交易ID、交易生效高度、发起方随机值的承诺和交易方混淆因子总数的承诺;
S540、交易接收方基于所述交易数据生成交易消息,所述交易消息包括交易费和交易生效高度;
S550、交易接收方接收所述交易数据,交易接收方基于交易数据为转账存入输出生成对应的交易私钥,以转账存入输出的交易私钥作为接收方混淆因子,将接收方混淆因子与所述通用生成点做椭圆曲线乘法生成接收方混淆因子的承诺,并基于转账存入输出、混淆因子、固定生成点、通用生成点生成转账存入输出的承诺;同时,交易接收方创建一个接收方随机值,并分别将接收方随机值与所述通用生成点做椭圆曲线乘法生成接收方随机值的承诺;
S560、交易接收方对交易消息、发起方随机值与接收方随机值对应的承诺之和以及交易费混淆因子总数和接收方混淆因子对应的承诺之和进行哈希运算生成交易的Schnorr挑战;
S570、交易接收方基于Schnorr挑战、接收方随机值和接收方混淆因子生成接收方签名,并将接收方签名、接收方随机值的承诺和接收方混淆因子的承诺发送给交易发起方;
S580、交易发起方验证交易接收方的签名,验证无误后生成发起方签名,并基于发起方签名、接收方签名、发起方随机值的承诺和接收方随机值的承诺生成交易签名,并基于交易签名、交易消息、Schnorr挑战值、发起方混淆因子总数的承诺和接收方混淆因子的承诺生成交易签名数据;
S590、交易发起方将所有未花费交易输出的承诺求和生成交易输入承诺,将找零金额混的淆值、转账存入输出的承诺和交易费的承诺求和生成交易输出承诺,将交易签名数据、交易输入承诺和交易输出承诺写入交易信息。
作为优选,所述接收方签名、发起方签名和交易签名满足如下公式:
ss=ks+e*rs;
sr=kr+e*rr;
s=(ss-sr,ks*G-kr*G);
其中,s为交易签名、ss为发起方签名、sr为接收方签名、ks为发起方随机值、kr为接收方随机值、e为Schnorr挑战的值、rs为交易发起方的混淆因子总数、rr为交易接收方的混淆因子。
作为优选,步骤s580中的验证方法具体如下:
S581、交易发起方接收交易发起方发送的接收方随机值的承诺和接收方混淆因子的承诺,以相同方式生成交易的Schnorr挑战;
S582、交易发起方计算收到的接收方混淆因子的承诺与s581中求得的Schnorr挑战的值的乘积再与收到的接收方随机值的承诺求和,将所得结果与接收方签名与通用生成点的乘积对比,若一致则验证通过。
作为优选,步骤S600中验证交易的方法如下:
S610、计算交易输入承诺和交易输出承诺的差,验证其是否为所述椭圆曲线上的公钥,若是则进行下一步验证;
S620、依据发起方混淆因子总数和接收方混淆因子计算得到交易的过剩混淆因子,所述过剩混淆因子计算满足如下公式:
rg=rs-rr;
其中rg为过剩混淆因子,rs为交易发起方的混淆因子总数,rr为交易接收方混淆因子;
基于交易签名和过剩混淆因子对交易进行验证,将交易签名中的ss-sr与通用生成点做椭圆曲线乘法得到第一结果值,将上述求得的过剩混淆因子和交易签名中的ks*G-kr*G以及交易的Schnorr挑战的值相乘得到第二结果值,对比第一结果值和第二结果值,若一致则验证通过。
第二方面,提供一种计算机设备,包括一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如上述第一方面任一项所述的方法。
第三方面,提供一种存储有计算机程序的存储介质,该程序被处理器执行时实现如上述第一方面中任一项所述的方法。
本发明的有益效果在于能够完美隐藏交易的金额,只有知道该金额对应私钥的人才知道金额的真实数值,同时可以令区块链上的任何一个节点在不知道交易的具体金额的情况下验证交易。
附图说明
图1为本发明实施例1的方法示意图;
图2为本发明实施例2的一种计算机设备的结构示意图。
具体实施方式
以下结合具体实施例和说明书附图对本发明作出进一步清楚详细的描述说明。本领域普通技术人员在基于这些说明的情况下将能够实现本发明。此外,下述说明中涉及到的本发明的实施例通常仅是本发明一部分的实施例,而不是全部的实施例。因此,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
在本发明中,除非另有明确的规定和限定,“验证”、“生成”、“发送”、“加密”等术语应做广义理解,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
实施例1
本实施例提供一种区块链隐藏交易金额的方法,如图1所示,包括以下内容:
S100、交易发起方选择椭圆曲线,选取椭圆曲线上的一个生成点作为通用生成点,并选取椭圆曲线上的另一生成点作为固定生成点,交易发起方为每个参与交易的未花费交易输出生成一个对应的交易私钥,同时交易发起方为找零输出生成对应的交易私钥,所述交易私钥均为随机选取的随机值;
S200、交易发起方基于自身生成的交易私钥和所述通用生成点做椭圆曲线乘法生成交易私钥对应的交易公钥;
S300、交易发起方基于未花费交易输出和找零输出以及各自对应的交易私钥、固定生成点、通用生成点生成未花费交易输出和找零输出对应的承诺,在各个所述承诺中各个交易输出以其对应的交易私钥作为混淆因子;
S400、交易发起方设置交易的交易费,并基于交易费、交易费混淆因子、固定生成点、通用生成点生成交易费对应的承诺,其中,所述交易费混淆因子取0;
各个交易输出对应的承诺满足如下公式:
C=v*G+r*H
其中,C为承诺的输出值、v为交易的实际金额、G为固定生成点、r为混淆因子、H为通用生成点,上述公式适用椭圆曲线的乘法和加减法规则;
S500、交易发起方生成交易数据发送至交易接收方,交易发起方和交易接收方基于所述交易数据生成交易签名数据,交易发起方生成交易输入承诺和交易输出承诺,并将交易签名数据、交易输入承诺和交易输出承诺写入交易信息;
S600、交易发起方对所述交易信息和交易提交到区块链系统,所述区块链系统验证交易并将验证通过的交易存储在所述区块链系统中。
进一步的,步骤S500具体包括以下步骤:
S510、交易发起方计算其混淆因子总数,交易发起方的混淆因子总数为所有参与交易的未花费交易输出对应的混淆因子的和减去找零输出对应的混淆因子的值,混淆因子总数计算满足如下公式:
rs=r1+r2+r3+r4+.........rn-rc
其中rs为交易发起方的混淆因子总数,rn为各个参与交易的未花费交易输出对应的混淆因子,rc为找零输出对应的混淆因子;
S520、交易发起方创建一个发起方随机值,分别将所述发起方随机值和交易方混淆因子总数与所述通用生成点做椭圆曲线乘法对应生成发起方随机值的承诺和交易方混淆因子总数的承诺;
S530、交易发起方向交易接收方加密发送交易数据,交易数据包括转账存入输出、交易费、交易ID、交易生效高度、发起方随机值的承诺和交易方混淆因子总数的承诺;
S540、交易接收方基于所述交易数据生成交易消息,所述交易消息包括交易费和交易生效高度;
S550、交易接收方接收所述交易数据,交易接收方基于交易数据为转账存入输出生成对应的交易私钥,以转账存入输出的交易私钥作为接收方混淆因子,将接收方混淆因子与所述通用生成点做椭圆曲线乘法生成接收方混淆因子的承诺,并基于转账存入输出、混淆因子、固定生成点、通用生成点生成转账存入输出的承诺;同时,交易接收方创建一个接收方随机值,并分别将接收方随机值与所述通用生成点做椭圆曲线乘法生成接收方随机值的承诺;
S560、交易接收方对交易消息、发起方随机值与接收方随机值对应的承诺之和以及交易费混淆因子总数和接收方混淆因子对应的承诺之和进行哈希运算生成交易的Schnorr挑战;
S570、交易接收方基于Schnorr挑战、接收方随机值和接收方混淆因子生成接收方签名,并将接收方签名、接收方随机值的承诺和接收方混淆因子的承诺发送给交易发起方;
S580、交易发起方验证交易接收方的签名,验证无误后生成发起方签名,并基于发起方签名、接收方签名、发起方随机值的承诺和接收方随机值的承诺生成交易签名,并基于交易签名、交易消息、Schnorr挑战值、发起方混淆因子总数的承诺和接收方混淆因子的承诺生成交易签名数据;
S590、交易发起方将所有未花费交易输出的承诺求和生成交易输入承诺,将找零金额混的淆值、转账存入输出的承诺和交易费的承诺求和生成交易输出承诺,将交易签名数据、交易输入承诺和交易输出承诺写入交易信息。
进一步的,所述接收方签名、发起方签名和交易签名满足如下公式:
ss=ks+e*rs;
sr=kr+e*rr;
s=(ss-sr,ks*G-kr*G);
其中,s为交易签名、ss为发起方签名、sr为接收方签名、ks为发起方随机值、kr为接收方随机值、e为Schnorr挑战的值、rs为交易发起方的混淆因子总数、rr为交易接收方的混淆因子。
进一步的,步骤s580中的验证方法具体如下:
S581、交易发起方接收交易发起方发送的接收方随机值的承诺和接收方混淆因子的承诺,以相同方式生成交易的Schnorr挑战;
S582、交易发起方计算收到的接收方混淆因子的承诺与s581中求得的Schnorr挑战的值的乘积再与收到的接收方随机值的承诺求和,将所得结果与接收方签名与通用生成点的乘积对比,若一致则验证通过。
进一步的,步骤S600中验证交易的方法如下:
S610、计算交易输入承诺和交易输出承诺的差,验证其是否为所述椭圆曲线上的公钥,若是则进行下一步验证;
S620、依据发起方混淆因子总数和接收方混淆因子计算得到交易的过剩混淆因子,所述过剩混淆因子计算满足如下公式:
rg=rs-rr;
其中rg为过剩混淆因子,rs为交易发起方的混淆因子总数,rr为交易接收方混淆因子;
基于交易签名和过剩混淆因子对交易进行验证,将交易签名中的ss-sr与通用生成点做椭圆曲线乘法得到第一结果值,将上述求得的过剩混淆因子和交易签名中的ks*G-kr*G以及交易的Schnorr挑战的值相乘得到第二结果值,对比第一结果值和第二结果值,若一致则验证通过。
本实施例的关键原理在于Perdersen承诺,以结合椭圆曲线为例来说明,Pedersen承诺核心公式表达:
C=r*H+v*G
上述公式中,C为生成的承诺值,G、H为特定椭圆曲线上的生成点,r代表着混淆因子,v则代表着原始信息。由于G、H为特定椭圆曲线上的生成点,所以r*H、v*G可以看作是相应曲线上的公钥(r、v同理也可以视为私钥)。当人们仅知晓r*H的值时,想要推导出单独的r是难以实现的,这其中还采用了椭圆曲线乘法,即使在得知r*H和生成点H也无法倒推出r的值。
下面以具体案例解析本申请的交易过程,例如用户A的账户中有一个价值40个通证的未花费交易输出,用户A想要将其中的25个通证转给用户B,那么用户A还会获得一个找零输出,就好像如果你有一张5元的钞票,买了3元的东西,会得到2元的找零,本实施例的交易系统也不例外,只是在区块链中交易需要支付交易费,假设交易费为1个通证,那么用户A还将得到14个通证的找零。转账交易的过程如下,首先,用户A先选取本次交易的椭圆曲线,然后在选定的椭圆曲线上选取通用生成点H和固定生成点G,然后用户A先为价值40个通证的未花费交易输出选择一个随机值作为对应的私钥,私钥在Perdersen承诺作为该值的混淆因子,假设用户A选择58作为40的私钥,那么其公钥就是58*H,40对应的承诺就是40*G+58*H,同样的,用户A还要为14个通证的找零选择一个私钥,假设选择22,那么14对应的承诺就是14*G+22*H;然后用户A计算他的混淆因子总数rs=58-22=36,最后用户A再创建一个发起方随机值ks,而用户A不会直接把ks发送给用户B而是发送ks对应的承诺即ks*H,然后用户A把以下信息打包发送给用户B:
转账数量:用户A想要转账给用户B的通证数量;
交易ID:用户A和用户B来回发送数据的唯一标识,用于标记此次交易;
交易费:交易费
区块高度:交易生效的区块高度;
交易发起方混淆因子总数的承诺:rs*G;
发起方随机值的承诺:ks*G;
用户A将以上信息发送给用户B,由用户B进行下一步操作。
用户B接收到用户A的消息后,把交易费和交易生效高度连接形成交易消息M,M=TX fee丨heigh,用户B再为他接受转账的通证选取一个随机值作为私钥,这个私钥会作为接收方的混淆因子,假设用户B选取17作为私钥,同时,用户B也创建一个随机值作为接收方随机值kr,与用户A相同用户B也生成接收方混淆因子和接收方随机值对应的承诺即rr*H和kr*H;然后用户B生成本交易的对应的Schnorr挑战,用变量e表示:
e=hash(M丨ks*H+kr*H丨rs*H+rr*H)
此时,用户B可以生成接收方签名,用sr表示,sr=kr+e*rr,然后用户B把接收方签名sr、接收方随机值的承诺kr*H和接收方混淆因子的承诺rr*H发送给用户A。
用户A接受消息之后,由于得到了接收方随机值的承诺kr*H和接收方混淆因子的承诺rr*H,用户A在本地计算本交易的对应的Schnorr挑战即变量e的值,然后基于椭圆曲线的性质来验算用户B的签名,由于sr=kr+e*rr,那么按照椭圆曲线的性质在两边同时乘以H后应当仍然相等,即sr*H=kr*H+e*rr*H,sr的值由用户B发送的信息中用A可得知,H为公知,那么等式左边的值用户A可以得到,而等式右边接收方随机值的承诺kr*H和接收方混淆因子的承诺rr*H由用户B发送给用户A,用户A也已知,而e的值用户A已经在本地进行计算得到,那么用户A也能计算出等式右边的值,只要对比两者是否相等即可验证用户B的签名,在用户A验证用户B签名无误后,用户A用相同的方式生成发起方签名ss,ss=ks+e*rs,然后用户A把两者的签名整合生成本交易的交易签名s,交易签名s满足如下公式:
s=(ss-sr,ks*H-kr*H)
对上述公司简化,s=(S,K*H),其中S=ss-sr,K=ks-kr。
紧接着,用户A要计算本交易的过剩混淆因子,前面说到交易中所有的值都被基于Perdersen承诺混淆了,本交易的输入40对应的承诺是40*G+58*H,输出之一用户B收到转账25对应的承诺是25*G+17*H,还有找零输出对应的承诺是14*G+22*H,交易费对应的承诺是1*G,交易费没有私钥,交易费是的公开的信息,那么交易输入承诺值就是40*G+58*H,因为只有一个输入,就是用户A价值40个通证的未花费交易输出,而交易输出有三个,分别是给用户B的转账存入、给用户A的找零和交易费,因此,交易输出承诺值就是25*G+17*H+14*G+22*H+1*G,然后,用户A计算过剩混淆因子rg,过剩混淆因子rg满足下列公式:
rg=rs-rr
本实施例中rg=rs-rr=36-17=19,过剩混淆因子对应的承诺则为rg*H,本实施例中应该为19*H;然后用户A把交易签名s、过剩混淆因子对应的承诺rg*H和交易费以及区块高度写入交易签名数据中,再把交易签名数据、交易输入承诺值、交易输入承诺值写入交易信息中,并把交易信息上传到区块链。
交易被写入区块需要验证交易的合法性,上述交易的验证基于零和规则,即如果输入等于输出,那么就证明这个交易即没有产出非法的通证,也没有消耗掉已有的通证,验证时,首先将交易输入承诺值减去交易输入承诺值,理论上应当为0*G+N*H的形式,如果证明交易输入承诺值减去交易输入承诺值是0*G+N*H的形式那么说明交易是合法的,因为交易金额已经被消除,剩下的是混淆因子之间的差值对应的公钥。然后我们的签名为s=(S,K*H),其中S=ss-sr,K=ks-kr,ss=ks+e*rs,sr=kr+e*rr,把ss和se两者相减我们得到如下式子:
ss-sr=ks+e*rs-kr-e*rr
化简后就变成了ss-sr=(ks-kr)+e*rg,两边同时与通用生成点H做椭圆曲线乘法,由于椭圆曲线的性质,得到(ss-sr)*H=(ks-kr)*H+e*rg*H,等式两边中,ss-sr为交易签名中的S,(ks-kr)*H为交易签名中的K*H,而rg*H就是交易信息中过剩混淆因子对应的承诺rg*H,e则包含交易签名数据中,H和G为两个生成点均为公开值,那么验证需要的信息在交易信息中均可找到,只要验证等式两边相等即可证明交易的合法性,而且交易公开的信息均为混淆后的混淆值,或者通过hash加密后的数据,无法倒推出任何关于交易双方的信息,具有良好的保护性,而且验证过程也无需知道任何交易的实际金额或是其对应的私钥。
实施例2
一种计算机设备,所述设备包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如实施例1所述的方法。
一种存储有计算机程序的存储介质,该程序被处理器执行时实现如以上实施例1所述的方法。
图2为本实施例提供的一种设备的结构示意图。
如图2所示,作为另一方面,本申请还提供了一种计算机设备500,包括一个或多个中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM503中,还存储有设备500操作所需的各种程序和数据。CPU501、ROM502以及RAM503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本申请公开的实施例,上述实施例1所描述的方法可以被实现为计算机软件程序。例如,本申请公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行上述任一实施例描述的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。
作为又一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例的装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,该程序被一个或者一个以上的处理器用来执行描述于本申请的方法。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这根据所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以通过执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以通过专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,各所述单元可以是设置在计算机或移动智能设备中的软件程序,也可以是单独配置的硬件装置。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离本申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (7)
1.一种区块链隐藏交易金额的方法,其特征在于,包括如下步骤:
S100、交易发起方选择椭圆曲线,选取椭圆曲线上的一个生成点作为通用生成点,并选取椭圆曲线上的另一生成点作为固定生成点,交易发起方为每个参与交易的未花费交易输出生成一个对应的交易私钥,同时交易发起方为找零输出生成对应的交易私钥,所述交易私钥均为随机选取的随机值;
S200、交易发起方基于自身生成的交易私钥和所述通用生成点做椭圆曲线乘法生成交易私钥对应的交易公钥;
S300、交易发起方基于未花费交易输出和找零输出以及各自对应的交易私钥、固定生成点、通用生成点生成未花费交易输出和找零输出对应的承诺,在各个所述承诺中各个交易输出以其对应的交易私钥作为混淆因子;
S400、交易发起方设置交易的交易费,并基于交易费、交易费混淆因子、固定生成点、通用生成点生成交易费对应的承诺,其中,所述交易费混淆因子取0;
各个交易输出对应的承诺满足如下公式:
C=v*G+r*H
其中,C为承诺的输出值、v为交易的实际金额、G为固定生成点、r为混淆因子、H为通用生成点,上述公式适用椭圆曲线的乘法和加减法规则;
S500、交易接收方接收发送的交易消息,交易发起方和交易接收方生成交易签名数据,交易发起方生成交易输入承诺和交易输出承诺,并将交易签名数据、交易输入承诺和交易输出承诺写入交易信息;
S600、交易发起方对所述交易信息和交易提交到区块链系统,所述区块链系统验证交易并将验证通过的交易存储在所述区块链系统中。
2.根据权利要求1所述的区块链隐藏交易金额的方法,其特征在于,步骤S500具体包括以下步骤:
S510、交易发起方计算其混淆因子总数,交易发起方的混淆因子总数为所有参与交易的未花费交易输出对应的混淆因子的和减去找零输出对应的混淆因子的值,混淆因子总数计算满足如下公式:
rs=r1+r2+r3+r4+.........rn-rc
其中rs为交易发起方的混淆因子总数,rn为各个参与交易的未花费交易输出对应的混淆因子,rc为找零输出对应的混淆因子;
S520、交易发起方创建一个发起方随机值,分别将所述发起方随机值和交易方混淆因子总数与所述通用生成点做椭圆曲线乘法对应生成发起方随机值的承诺和交易方混淆因子总数的承诺;
S530、交易发起方向交易接收方加密发送交易数据,交易数据包括转账存入输出、交易费、交易ID、交易生效高度、发起方随机值的承诺和交易方混淆因子总数的承诺;
S540、交易接收方基于所述交易数据生成交易消息,所述交易消息包括交易费和交易生效高度;
S550、交易接收方交易接收方为转账存入输出生成对应的交易私钥,以转账存入输出的交易私钥作为接收方混淆因子,将接收方混淆因子与所述通用生成点做椭圆曲线乘法生成接收方混淆因子的承诺,并基于转账存入输出、混淆因子、固定生成点、通用生成点生成转账存入输出的承诺;同时,交易接收方创建一个接收方随机值,并分别将接收方随机值与所述通用生成点做椭圆曲线乘法生成接收方随机值的承诺;
S560、交易接收方对交易消息、发起方随机值与接收方随机值对应的承诺之和以及交易费混淆因子总数和接收方混淆因子对应的承诺之和进行哈希运算生成交易的Schnorr挑战;
S570、交易接收方基于Schnorr挑战、接收方随机值和接收方混淆因子生成接收方签名,并将接收方签名、接收方随机值的承诺和接收方混淆因子的承诺发送给交易发起方;
S580、交易发起方验证交易接收方的签名,验证无误后生成发起方签名,并基于发起方签名、接收方签名、发起方随机值的承诺和接收方随机值的承诺生成交易签名,并基于交易签名、交易消息、Schnorr挑战值、发起方混淆因子总数的承诺和接收方混淆因子的承诺生成交易签名数据;
S590、交易发起方将所有未花费交易输出的承诺求和生成交易输入承诺,将找零金额混的淆值、转账存入输出的承诺和交易费的承诺求和生成交易输出承诺,将交易签名数据、交易输入承诺和交易输出承诺写入交易信息。
3.根据权利要求2所述的区块链隐藏交易金额的方法,其特征在于,所述接收方签名、发起方签名和交易签名满足如下公式:
ss=ks+e*rs;
sr=kr+e*rr;
s=(ss-sr,ks*H-kr*H);
其中,s为交易签名、ss为发起方签名、sr为接收方签名、ks为发起方随机值、kr为接收方随机值、e为Schnorr挑战的值、rs为交易发起方的混淆因子总数、rr为交易接收方的混淆因子。
4.根据权利要求3所述的区块链隐藏交易金额的方法,其特征在于,步骤s580中的验证方法具体如下:
S581、交易发起方接收交易发起方发送的接收方随机值的承诺和接收方混淆因子的承诺,以相同方式生成交易的Schnorr挑战;
S582、交易发起方计算收到的接收方混淆因子的承诺与s581中求得的Schnorr挑战的值的乘积再与收到的接收方随机值的承诺求和,将所得结果与接收方签名与通用生成点的乘积对比,若一致则验证通过。
5.根据权利要求4所述的区块链隐藏交易金额的方法,其特征在于,步骤S600中验证交易的方法如下:
S610、计算交易输入承诺和交易输出承诺的差,验证其是否为所述椭圆曲线上的公钥,若是则进行下一步验证;
S620、依据发起方混淆因子总数和接收方混淆因子计算得到交易的过剩混淆因子,所述过剩混淆因子计算满足如下公式:
rg=rs-rr;
其中rg为过剩混淆因子,rs为交易发起方的混淆因子总数,rr为交易接收方混淆因子;
基于交易签名和过剩混淆因子对交易进行验证,将交易签名中的ss-sr与通用生成点做椭圆曲线乘法得到第一结果值,将上述求得的过剩混淆因子和交易签名中的ks*G-kr*G以及交易的Schnorr挑战的值相乘得到第二结果值,对比第一结果值和第二结果值,若一致则验证通过。
6.一种计算机设备,其特征在于,一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如权利要求1-5中任意一项所述的方法。
7.一种存储有计算机程序的存储介质,其特征在于,该程序被处理器执行时实现如权利要求1-5中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110883011.9A CN113793147B (zh) | 2021-08-02 | 2021-08-02 | 一种区块链隐藏交易金额的方法、设备及储存介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110883011.9A CN113793147B (zh) | 2021-08-02 | 2021-08-02 | 一种区块链隐藏交易金额的方法、设备及储存介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113793147A CN113793147A (zh) | 2021-12-14 |
CN113793147B true CN113793147B (zh) | 2023-11-24 |
Family
ID=79181292
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110883011.9A Active CN113793147B (zh) | 2021-08-02 | 2021-08-02 | 一种区块链隐藏交易金额的方法、设备及储存介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113793147B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106603243A (zh) * | 2016-04-08 | 2017-04-26 | 数安时代科技股份有限公司 | 数字签名的私钥处理方法和系统 |
CN111709738A (zh) * | 2020-05-18 | 2020-09-25 | 杜晓楠 | 区块链系统中隐藏交易金额的方法、计算机可读存储介质和区块链系统 |
WO2020258851A1 (zh) * | 2019-06-26 | 2020-12-30 | 创新先进技术有限公司 | 采用环签名的机密区块链交易的实现方法及装置 |
-
2021
- 2021-08-02 CN CN202110883011.9A patent/CN113793147B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106603243A (zh) * | 2016-04-08 | 2017-04-26 | 数安时代科技股份有限公司 | 数字签名的私钥处理方法和系统 |
WO2020258851A1 (zh) * | 2019-06-26 | 2020-12-30 | 创新先进技术有限公司 | 采用环签名的机密区块链交易的实现方法及装置 |
CN111709738A (zh) * | 2020-05-18 | 2020-09-25 | 杜晓楠 | 区块链系统中隐藏交易金额的方法、计算机可读存储介质和区块链系统 |
Non-Patent Citations (1)
Title |
---|
基于聚合签名与加密交易的全匿名区块链;王子钰;刘建伟;张宗洋;喻辉;;计算机研究与发展(第10期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113793147A (zh) | 2021-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Delgado-Segura et al. | A fair protocol for data trading based on bitcoin transactions | |
US11257077B2 (en) | Blockchain system for confidential and anonymous smart contracts | |
CN110383756B (zh) | 加密签名记录的安全交换 | |
EP0662673B1 (en) | Anonymous credit card transactions | |
US5696827A (en) | Secure cryptographic methods for electronic transfer of information | |
EP3396612A1 (en) | Method and system for creating a user identity | |
Cramer et al. | Improved privacy in wallets with observers | |
RU2157001C2 (ru) | Способ проведения платежей (варианты) | |
CN114207643A (zh) | 用于区块链经营的系统和方法 | |
Pfitzmann et al. | How to break and repair a “provably secure” untraceable payment system | |
KR20200066259A (ko) | 정보 보호를 위한 시스템 및 방법 | |
CN111971930A (zh) | 适于提高即时离线区块链交易安全性的计算机实现的系统和方法 | |
CN110612547A (zh) | 一种用于信息保护的系统和方法 | |
US9165297B2 (en) | Virtual account and token-based digital cash protocols | |
CN111738857B (zh) | 应用于区块链的隐匿支付证明的生成与验证方法及装置 | |
US20230325791A1 (en) | Proxied cross-ledger authentication | |
CN113706145B (zh) | 一种隐藏交易金额的代理交易方法、设备及储存介质 | |
CN111539719B (zh) | 基于盲签名的可审计混币服务方法及系统模型 | |
CN113793147B (zh) | 一种区块链隐藏交易金额的方法、设备及储存介质 | |
Wang et al. | A consumer scalable anonymity payment scheme with role based access control | |
CN111523892B (zh) | 一种区块链的跨链交易方法及装置 | |
KR102365823B1 (ko) | 기축 코인 예치를 통한 가상화폐 수수료 거래 시스템 | |
Liaw et al. | A new electronic traveler’s check scheme based on one-way hash function | |
CN101443807A (zh) | 使用数字现金的货币转移 | |
Kim et al. | A new electronic check system with reusable refunds |
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 |