基于账户模型的隐私交易方法、装置及相关设备与流程

文档序号:23946671发布日期:2021-02-18 13:46阅读:65来源:国知局
基于账户模型的隐私交易方法、装置及相关设备与流程

[0001]
本发明涉及区块链技术领域,尤其涉及一种基于账户模型的隐私交易方 法、装置及相关设备。


背景技术:

[0002]
当前出现了一种以以太坊为代表的基于账户(account)模型的隐私保护 区块链系统,account模型是一种有状态模型,在区块链中的每一个区块上都 有一个全局的世界状态,这个状态是全局的,对应着区块链上所有的账户余 额,每一笔交易或智能合约的调用对账户余额的改变都会导致这个全局世界 状态的更新。
[0003]
由于当前被广泛使用的以门罗币、零币等为代表的未花费的交易输出模 型(unspent transaction output,utxo)的隐私保护区块链系统无法兼容账 户模型,且基于账户模型的隐私保护区块链系统中的隐私交易方法存在账单 尺寸过大,运算负担较重,使区块链系统运行和检验效率低的问题,导致现 有的基于账户模型的隐私保护区块链系统难以大规模推广应用。
[0004]
因此,亟需一种实现更高效率的隐私交易方式,以完成基于账户模型的 隐私保护区块链系统所进行的交易。


技术实现要素:

[0005]
有鉴于此,本发明实施例提供一种基于账户模型的隐私交易方法、装置 及相关设备,以实现更高效率完成基于账户模型的隐私保护区块链系统所进 行的交易的目的。
[0006]
为实现上述目的,本发明实施例提供如下技术方案:
[0007]
本发明实施例第一方面公开了一种基于账户模型的隐私交易方法,所述 方法包括:
[0008]
第一交易账户基于向第二交易账户发起的转账金额s,确定转账金额承诺 e、第一合法性证明π1、第一交易账户交易后的状态c2和第一交易账户余额u2对 应的第二合法性证明π2;
[0009]
所述第一交易账户基于所述第二交易账户的第二公钥pk
b
计算所述转账 金额承诺e的公钥,得到转账公钥pk
e

[0010]
所述第一交易账户利用与所述第二交易账户之间的共享密钥k对所述转 账金额s和混淆元z加密,得到第一交易密文ct,所述混淆元和混淆元z加密,得到第一交易密文ct,所述混淆元为非零 整数环;
[0011]
所述第一交易账户基于自己的第一私钥sk
a
对所述转账公钥pk
e
、所述第 一交易密文ct、所述第一合法性证明π1和第二合法性证明π2进行签名,得到第 一交易账单tx1=(c2,e,r,pk
e
,π1,π2,ct)以及所述第一交易账单tx1的签名 σ1=sign(pk
a
,sk
a
,c2,e,r,pk
e
,ct,π1,π2),所述第一交易账单tx1在通过交易验证方验证 后上链;
[0012]
其中,所述第一交易账户基于区块链系统的公共参数确定自己的 第一公钥pk
a
和第一私钥sk
a

其中,σ为可链接双环签名,i为用于防止双重收 款攻击的签名,l
pk
和l用于表示可链接双环签名的公钥,sk
e
和sk
l
用于表示 可链接双环签名的私钥,所述环签名私钥sk
l
由所述第二交易账户自己的转账 私钥sk
e
,混淆元z和采样随机数确定;
[0027]
所述第二交易账户基于所述第二私钥sk
b
对第二交易账单tx2进行签名,得 到所述第二交易账单tx2=(d1,d2,π3,e,l
pk
,σ,i),以及所述第二交易账单tx2的签名 σ2=sign(pk
b
,sk
b
=(b1,b2),tx2),所述第二交易账单tx2在通过交易验证方验证后上 链;
[0028]
其中,所述第二交易账户基于区块链系统的公共参数确定自己的 第二公钥pk
a
和第二私钥sk
a

[0029]
可选的,所述第二交易账户基于第二消费公钥pk
b
和第二查询私钥sk
b
查 找链上存在的转账公钥pk
e
,获取转账公钥pk
e
与所述第二交易账户相匹配的 第一交易账单tx1,包括:
[0030]
所述第二交易账户基于第二消费公钥pk
b
中的公钥b2和第二查询私钥sk
b
中的私钥b1查找链上是否存在转账公钥的交易账单;
[0031]
若存在,则确定该转账公钥pk
e
对应的交易账单是与所述第二交易账户相 匹配的第一交易账单tx1,所述第一交易账单tx1由第一交易账户发起。
[0032]
可选的,还包括:
[0033]
所述第二交易账户计算第二验证手续费的上限值t2,所述第二验证手续费 的验证承诺d3,并公布所述上限值t2和验证承诺d3,其中,所述验证承诺所述第二验证手续费为所述第二交易账户向交易验证方提供验证所述第二交 易账单tx2是否满足上链要求的佣金;
[0034]
将所述第二验证手续费的上限值t2从所述第二交易账户余额v2中扣除,并 基于所述验证承诺更新所述第二交易账户交易后的状态d2,得到所述第 二交易账户的更新状态d2′
=d2/d3;
[0035]
输出所述第二交易账户交易后的状态d2,所述第二交易账户的更新状态d2′ꢀ
和所述验证承诺d3,由所述交易验证方根据佣金确定所述第二交易账户的最 终状态,以及是否使所述第二交易账单tx2上链。
[0036]
本发明实施例第三方案公开了一种基于账户模型的隐私交易方法,所述 方法包括:
[0037]
交易验证方接收第一交易账户发起的第一交易账单tx1,并在验证所述第 一交易账单tx1和对应的签名σ1合法后,使所述第一交易账单tx1上链;
[0038]
所述交易验证方接收第二交易账户接受的第二交易账单tx2以及所述第二 交易账单tx2的签名σ2,所述第二交易账单tx2=(d1,d2,π3,e,l
pk
,σ,i),其中,σ为可 链接双环签名,i为用于防止双重收款攻击的签名,l
pk
为转账公钥集合,e为 金额承诺集合,π3为第三合法性证明,转账公钥集合金额 承诺集合e={e1,

,e
n
},d1为所述第二交易账户交易前的状态,d2为所述第二交 易账户交易后的状态;
[0039]
所述交易验证方验证所述第二交易账单tx2中的签名i是否在链上的其他 交易中是否出现过;
[0040]
若是,确定所述第二交易账单tx2未通过验证,并丢弃;
[0041]
若否,检验所述第三合法性证明π3、所述第二交易账单tx2的签名σ2和所 述可链接双环签名σ是否合法,以及根据所述第二交易账单tx2计算集合l,并 判断得到的集合l是否为
[0042]
若均为是,使所述第二交易账单tx2上链。
[0043]
本发明实施例第四方面公开了一种基于账户模型的隐私交易装置,所述 装置包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的基 于账户模型的隐私交易程序,所述隐私交易程序被所述处理器执行时实现所 述基于账户模型的隐私交易方法。
[0044]
本发明实施例第五方面公开了一种计算机可读存储介质,所述计算机可 读存储介质上存储有基于账户模型的隐私交易程序,所述隐私交易程序可被 一个或者多个处理器执行,以实现如本发明实施例第一方面公开的所述基于 账户模型的隐私交易方法。
[0045]
本发明实施例第六方面公开一种计算机程序产品,包括计算机指令,当 其在计算机上运行时,使得计算机可以执行上述本发明实施例第一方面公开 的所述基于账户模型的隐私交易方法。
[0046]
基于上述本发明实施例提供的一种基于账户模型的隐私交易方法、装置 及相关设备,该方法包括:通过使第一交易账户基于向第二交易账户发起的 转账金额,确定转账金额承诺、第一合法性证明、第一交易账户交易后的状 态和第一交易账户余额对应的第二合法性证明;并基于第二交易账户的第二 公钥计算得到转账金额承诺的转账公钥,利用与第二交易账户之间的共享密 钥对转账金额和混淆元加密,得到第一交易密文,并基于第一交易账户的第 一私钥进行签名,最终生成第一交易账单,并在第一交易账单通过交易验证 方验证后上链。在本方案中,使用共享密钥对转账金额进行加密,减小账单 尺寸,降低运算负担,在不需要匿名交易的情况下,保持转账金额的隐私性, 更高效率的实现基于账户模型的隐私保护区块链系统所进行的隐私交易。
附图说明
[0047]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实 施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面 描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不 付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0048]
图1为本发明实施例提供的一种基于账户模型的隐私交易方法的流程图;
[0049]
图2为本发明实施例提供的得到转账公钥的流程图;
[0050]
图3为本发明实施例提供的另一种基于账户模型的隐私交易方法的流程 图;
[0051]
图4为本发明实施例提供的第二交易账户确定第一交易账单的流程图;
[0052]
图5为本发明实施例提供的第一交易账户向交易验证方支付佣金的流程 图;
[0053]
图6为本发明实施例提供的第二交易账户向交易验证方支付佣金的流程 图;
[0054]
图7为本发明实施例提供的第一交易账户的结构框图;
[0055]
图8为本发明实施例提供的第二交易账户的结构框图。
具体实施方式
[0056]
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及 实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施 例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领 域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都 属于本发明保护的范围。
[0057]
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、
ꢀ“
第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特 定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以 便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。 此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他 的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备 不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对 于这些过程、方法、产品或设备固有的其它步骤或单元。
[0058]
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的, 而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数 量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该 特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领 域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实 现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之 内。
[0059]
为了方便理解,以下对本发明实施例中出现的术语进行解释说明:
[0060]
消息(message):任意长度的比特串。
[0061]
utxo:当前区块链上已确认但未花费的数字货币,即未花费的一笔钱。
[0062]
urtxo(unreceived transaction output):当前区块链上已确认但未被接 收的数字货币,即未被任何账户接收的一笔钱。
[0063]
双花(double spending):区块链上的不忠实用户对一笔钱交易进行两次 花费。
[0064]
非对称加密算法(asymmetric encryption system):是基于加密、解密过 程中计算复杂度的非对称性来保证安全的一类算法。在非对称加密系统中, 加密方要生成私公钥对,并将私钥自己保留,公钥可以发送给对方。
[0065]
数字签名(digital signature):是一种非对称密码的一个分支,当用户生 成公私钥对时,自己保留私钥,对任意要发送至区块链的消息,用户使用私 钥签名,验证者使用公钥即可验证签名的合法性,数字签名实现了身份的认 证和数据完整性的验证。
[0066]
pedersen承诺(pedersen commitment):对于数量或者金额a,使用离散 对数问题的结构,将a绑定在承诺com=g
x
h
a
上,在交易过程中只公开金额的 承诺值com,实现了保密的金额传输。
[0067]
区间证明(range proof):给出某个金额数量属于指定的区间,而不透露 具体金额信息的零知识证明体系。
[0068]
bulletproofs:零知识证明框架,可以用于实现区间证明,证明尺寸小、 验证速度快,在门罗币等区块链系统上应用广泛,但是无法提供监管功能。
[0069]
承诺证明(commitment proof):对于承诺com=g
x
h
a
,承诺证明π给出了 用户知道x和a的证明,记为π(g
x
h
a
)。
[0070]
环签名(ring signature):是一种特殊的数字签名方案,签名者使用自己 和其用户的公钥生成一个公钥集合,然后用自己的私钥进行签名,验证者在 验证签名的合法性后,只能知道该签名来自公钥集合的某个用户,但无法得 知该用户的具体身份,实现了签名者的身份隐私保护。
[0071]
可链接环签名(linkable ring signature):是一种特殊的环签名方案,用户 在进行环签名时要提供一个标签信息,当用户进行非法签名或双花等非法交 易时,通过比对交易标签就可以判断是否是非法签名或双花交易,实现了安 全的交易保障。
[0072]
由背景技术可知,目前以门罗币、零币等为代表的未花费的utxo模型 的隐私保护区块链系统无法兼容账户模型,并且基于账户模型的隐私保护区 块链系统中的隐私交易方法存在账单尺寸过大,运算负担较重,使区块链系 统运行和检验效率低的问题。
[0073]
因此,本发明实施例提供一种基于账户模型的隐私交易方法、装置及相 关设备,通过在第一交易账户和第二交易账户进行隐私交易的过程中,使用 共享密钥对转账金额进行加密,从而减小账单尺寸,以降低运算负担。
[0074]
参见图1,示出了本发明实施例提供的一种基于账户模型的隐私交易方法 的流程图,该隐私交易方法适用于第一交易账户,该隐私交易方法包括:
[0075]
步骤s101:第一交易账户基于向第二交易账户发起的转账金额s,确定 转账金额承诺e、第一合法性证明π1、第一交易账户交易后的状态c2和第一交 易账户余额u2对应的第二合法性证明π2。
[0076]
需要说明的是,区块链系统预先确定椭圆曲线群随机生成区块链系统公开公共参数各个交易账户根据公共参数分 别生成各自账户对应的长期公私钥。
[0077]
也就是说,第一交易账户生成第一私钥sk
a
=(a1,a2),以及确定第一公钥 a1为第一查询私钥,a2为第一消费私钥,a1为第一查询 公钥,a2为第一消费公钥。
[0078]
第二交易账户生成第二私钥sk
b
=(b1,b2),以及确定第二公钥 b1为第二查询私钥,b2为第二消费私钥,b1为第二查询 公钥,b2为第二消费公钥。
[0079]
其中,其中,为非零整数环。
[0080]
可以理解的是,上述各个交易账户所生成的公钥可作为长期地址,并且 生成长期地址的方式并不仅包括上述方式,也可以通过哈希等方式由公钥生 成长期地址。
[0081]
在具体实现步骤s101的过程中,第一交易账户和第二交易账户进行交易, 即第一交易账户需向第二交易账户进行转账操作。
[0082]
需要说明的是,第一交易账户和第二交易账户在进行转账操作后,各自 的账户状态都会发生相应的变化,也就是由账户初始状态变化为账户交易后 的状态。第一交易账户的账户初始状态为第二交易账户的账户初始 状态为其中,u1表示第一交易账户的初始账户余额,v1表示第二交 易账户的初始账户余额。
[0083]
进一步需要说明的是,第一交易账户和第二交易账户的账户状态可以被 全网获取和查看,但是只能看到隐私承诺,无法看到具体的金额,第一交易 账户和第二交易账户中的金额信息为隐私承诺状态,例如,上述所述的c1和d1。
[0084]
第一交易账户在转账的过程中,根据需要向第二交易账户转账的金额s, 确定转账金额承诺e=g
z
h
s
、第一合法性证明π1=π(e)、第一交易账户交易后的 状态和第一交易账户余额u2对应的第二合法性证明 π2=π(c2)。
[0085]
需要说明的是,第一合法性证明π1是指e中转账金额s的合法性证明,可 以采用区间证明的方式,证明s∈[0,2
n-1]。
[0086]
第一交易账户交易后的第一交易账户余额u2对应的第二合法性证明为区 间证明,证明u2∈[0,2
n-1],区间证明的目的即证明第一交易账户有足够的余额, 同时证明第一交易账户的转账金额是否为合法金额。
[0087]
步骤s102:第一交易账户基于第二交易账户的第二公钥pk
b
计算转账金 额承诺e的公钥,得到转账公钥pk
e

[0088]
由前述内容可知,各个交易账户确定各自账户的公钥,在具体实现步骤 s102的过程中,第一交易账户随机生成混淆元计算转账临时公钥r=g
r
, 调用第二交易账户的第二公钥计算转账金额承诺e的公 钥,得到转账公钥第一交易账户输出(c2,e,r,pk
e
)。
[0089]
步骤s103:第一交易账户利用与第二交易账户之间的共享密钥k对转账 金额s和混淆元z加密,得到第一交易密文ct。
[0090]
需要说明的是,混淆元需要说明的是,混淆元为非零整数环。第一交易账户和第二交 易账户之间预先确定共享密钥在具体实现步骤s103的过程中, 第一交易账户利用共享密钥k对转账金额s和混淆元z加密,得到第一交易密 文ct=enc
k
(s,z),其中,
[0091]
步骤s104:第一交易账户基于自己的第一私钥sk
a
对转账公钥pk
e
、第一 交易密文ct、第一合法性证明π1和第二合法性证明π2进行签名,生成第一交易 账单tx1以及所述第一交易账单tx1的签名σ1=sign(pk
alice
,sk
alice
,c2,e,r,pk
e
,ct,π1,π2)。
[0092]
在具体实现步骤s104的过程中,第一交易账户在生成对应的交易账单时, 需利用自己的第一私钥sk
a
对转账公钥pk
e
、第一交易密文ct、第一合法性证 明π1和第二合法性证明π2进行签名,生成自身对应的第一交易账单 tx1=(c2,e,r,pk
e
,π1,π2,ct,σ1)。
[0093]
在进行签名的过程中,对于第一查询私钥a1和第一消费私钥a2的使用而 言,可以单独使用a1或a2,也可同时使用a1和a2。
[0094]
也就是说,第一交易账户基于自己的第一私钥sk
a
中的第一查询私钥a1、 和第一消费私钥a2中的任一一个或组合,对转账公钥pk
e
、第一交易密文ct、 第一合法性证明π1和第二合法性证明π2进行签名,生成第一交易账单tx1以及 所述第一交易账单tx1的签名σ1=sign(pk
a
,sk
a
,c2,e,r,pk
e
,ct,π1,π2)并输出。
[0095]
第一交易账户生成第一交易账单tx1后,将第一交易账单tx1发送给交易验 证方,交易验证方接收第一交易账户输出的第一交易账单tx1,验证第一交易 账单tx1中的第一合法性证明π1、第二合法性证明π2和签名σ1的合法性。若均通 过验证,交易验证方将第一交易账单tx1和第一交易账户当前状态c2上链。
[0096]
校验验证方的验证方式为:对于第一交易账户发送的第一交易账单tx1, 检验区
间证明,即第一合法性证明π1和第二合法性证明π2的合法性,并检验 c2=c1/e是否成立。若前述检验全部通过,将第一交易账单tx1和第一交易账户 当前状态c2上链。也就是向链上的各个节点公开(tx1,σ1)。
[0097]
本发明实施例提供的一种基于账户模型的隐私交易方法、通过第一交易 账户基于向第二交易账户发起的转账金额,确定转账金额承诺、第一合法性 证明、第一交易账户交易后的状态和第一交易账户余额对应的第二合法性证 明;并基于第二交易账户的第二公钥计算得到转账金额承诺的转账公钥,利用 与第二交易账户之间的共享密钥对转账金额和混淆元加密,得到第一交易密 文,并基于第一交易账户的第一私钥进行签名,最终生成第一交易账单,并 在第一交易账单通过交易验证方验证后上链。在本方案中,使用共享密钥对 转账金额进行加密,减小账单尺寸,降低运算负担,在不需要匿名交易的情 况下,保持转账金额的隐私性,更高效率的实现基于账户模型的隐私保护区 块链系统所进行的隐私交易。
[0098]
上述本发明实施例图1步骤s102中涉及的得到转账公钥pk
e
的过程,参 见图2,示出了本发明实施例提供的得到转账公钥的流程图,包括以下步骤:
[0099]
步骤s201:第一交易账户随机生成混淆元r。
[0100]
在具体实现步骤s201的过程中,混淆元
[0101]
步骤s202:第一交易账户基于混淆元r和第二交易账户的第二公钥pk
b
计 算转账公钥pk
e

[0102]
在具体实现步骤s202的过程中,第一交易账户计算r=g
r
,调用第二交易 账户的第二公钥计算转账金额承诺e的公钥,得到转账 公钥
[0103]
在本发明实施例中,第一交易账户根据混淆元和第二公钥计算转账公钥, 基于自己的第一私钥对转账公钥、第一交易密文、第一合法性证明和第二合 法性证明进行签名,最终生成第一交易账单。从而可以减小账单尺寸,降低 运算负担,在不需要匿名交易的情况下,保持转账金额的隐私性,更高效率 的实现基于账户模型的隐私保护区块链系统所进行的隐私交易。
[0104]
参见图3,示出了本发明实施例提供的另一种基于账户模型的隐私交易方 法的流程图,该隐私交易方法适用于第二交易账户,该隐私交易方法包括:
[0105]
步骤s301:第二交易账户基于第二公钥pk
b
、第二私钥sk
b
和转账临时公 钥r查找链上的交易账单中的转账公钥pk
e
,获取转账公钥pk
e
与第二交易账 户相匹配的第一交易账单tx1。
[0106]
需要说明的是,区块链系统上存在多个转账金额承诺,第二交易账户需 要从区块链系统上的多个转账金额承诺中确是否有其他用户向自身账户转 账。
[0107]
在具体实现步骤s301的过程中,第二交易账户基于第二公钥pk
b
和第二 私钥sk
b
,确定区块链系统上多个转账金额承诺哪一个转账金额承诺是向自身 账户转账的,即确定第一交易账户发起的第一交易账单tx1是向第二交易账户 的转账。
[0108]
第二交易账户具体确定是否存在给自身账户的转账的方式为:第二交易 账户利用第二公钥pk
b
中的第二消费公钥b2和第二私钥sk
b
中的第二查询私钥 b1,确定
是否成立。若成立,则确定第一交易账单tx1是向第二交 易账户的转账。
[0109]
步骤s302:第二交易账户计算第一交易账单tx1中的转账金额承诺e的转 账私钥sk
e

[0110]
在具体实现步骤s302的过程中,第二交易账户计算第一交易账单tx1中的 转账金额承诺e的转账私钥需要说明的是,由转账私钥sk
e
的 内容可知,由于使用了第二交易账户的第二私钥sk
b
,只有第二交易账户才计 算得到转账私钥sk
e

[0111]
步骤s303:第二交易账户利用与第一交易账户之间的共享密钥k解析第 一交易账单中的第一交易密文ct,并验证第一交易密文ct对应的转账金额承诺 e是否成立。若成立,执行步骤s304。若不成立,则结束。
[0112]
在具体实现步骤s303的过程中,第二交易账户根据共享密钥k,解析第 一交易密文ct,即计算dec
k
(ct)=(s,z)。并验证转账金额承诺e=g
z
h
s
是否成立, 若成立,即表示第二交易账户可接收第一交易账单tx1对应的转账金额。若不 成立,表示该转账金额有误,第二交易账户无法接收该转账金额。
[0113]
步骤s304:第二交易账户从链上获取n-1个第二转账金额承诺。
[0114]
在步骤s304中,第二交易账户从链上获取的n-1个第二转账金额承诺区 别于第一转账金额承诺e。也就是说,n-1个第二转账金额承诺与第一转账金 额承诺e不同,是不属于第二交易账户自己的转账金额承诺。
[0115]
其中,n的取值为大于等于2的正整数。
[0116]
在执行步骤s304的过程中,第二交易账户从所有已经上链的urtxo集 合中,也就是转账金额承诺集合中再选取n-1个区别于第一转账金额承诺e的 第二转账金额承诺。
[0117]
需要说明的是,第二交易账户选择n-1个区别于第一转账金额承诺e的第 二转账金额承诺是用于进行混淆的。具体体现在,第二交易账户可以对外证 明接收了n个金额中的一个,但是外界并不能确定第二交易账户到底获取的 是n个金额中的哪一个,从而在接收者层面进一步实现针对交易双方的隐私 保护。
[0118]
步骤s305:第二交易账户集合n-1个第二转账金额承诺与第一转账金额 承诺e,以及n个转账金额承诺所对应的转账公钥,得到金额承诺集合 e={e1,

,e
n
}和转账公钥集合
[0119]
在步骤s305中,金额承诺集合中共有n个转账金额承诺,可 以假设第j个承诺为第一转账金额承诺,也就是说,相应的 i和j的取值范围为1至n,z为混淆元。
[0120]
需要说明的是,第二交易账户只知道第一转账金额承诺中包含的 隐私信息并不知道其他第二转账金额承诺中的隐私信息。
[0121]
步骤s306:第二交易账户将第一交易密文ct中的转账金额s加入账户余额 中,得到第二交易账户余额v2、第二交易账户交易后的状态d2和第二交易账户 余额v2对应的第三合法性证明π3。
[0122]
在具体实现步骤s306的过程中,第二交易账户接收第一交易密文ct中的 转账金额s后,也就是第二交易账户将该转账金额s加入自身的账户余额后, 第二交易账户的账户
余额v1会发生相应变化v1+s,即得到第二交易账户余额 v2=v1+s。
[0123]
基于此,第二交易账户采样随机数基于此,第二交易账户采样随机数为非零整数环,确定第二交 易账户交易后的状态和第二交易账户余额v2对应的第三 合法性证明π3=π(d2)。其中,d1为所述第二交易账户交易前的状态。
[0124]
需要说明的是,第三合法性证明π3可以采用区间证明的方式,证明 b2∈[0,2
n-1],区间证明的目的即证明第二交易账户的余额合法且有效。
[0125]
步骤s307:所述第二交易账户根据所述第二交易账户交易后的状态d2, 所述金额承诺集合e={e1,

,e
n
}和所述转账公钥集合计算,得 到集合l。
[0126]
在步骤s307中,具体计算得到的集合
[0127]
将集合l展开为:
[0128][0129]
需要说明的是,在集合中第j个元素为 此时v
2-v
1-s
j
=0。
[0130]
也就是说,第二交易账户更新的状态中包含的金额v2等于之前的金额v1加 上收钱的金额s
j
,通过数学证明,可知此为充分必要条件。因此第二交易账户 必须采用该种方式更新自己的账户信息,不能乱加金额,也无法双重收款。
[0131]
步骤s308:第二交易账户根据所述转账公钥集合l
pk
、所述集合l、确定 的转账私钥sk
e
和环签名私钥sk
l
对交易消息μ进行可链接双环签名,并输出签 名
[0132]
在步骤s308中,交易消息μ包含金额承诺集合e等资金信息,也包含第 二交易账户自己交易前的状态d1,交易后的状态d2,第三合法性证明π3和其他 与交易相关的信息。
[0133]
在步骤s308中,输出的签名其中,σ为可链 接双环签名,i为用于防止双重收款攻击的签名,l
pk
和l用于表示可链接双 环签名的公钥,sk
e
和sk
l
用于表示可链接双环签名的私钥,环签名私钥sk
l
由 第二交易账户自己的转账私钥sk
e
,混淆元z和采样随机数确定。
[0134]
环签名私钥sk
l
的确定过程为:第二交易账户基于自己的转账私钥sk
e
,混 淆元z和采样随机数进行计算,得到环签名私钥
[0135]
需要说明的是,第二交易账户只知道第一转账金额承诺中包含的 隐私信息因此只能计算出第一转账金额承诺,也就是在金额承诺 集合中第j位置对应的私钥,也就是环签名私钥sk
l

[0136]
假设所进行的是双环签名,也就是第二交易账户收一笔钱,需要做一个 和双环签名,也就是对两个环进行可链接双环签名。
[0137]
步骤s309:第二交易账户基于第二私钥sk
b
对第二交易账单tx2进行签名, 得到第二交易账单tx2=(d1,d2,π3,e,l
pk
,σ,i),以及第二交易账单tx2的签名 σ2=sign(pk
b
,sk
b
=(b1,b2),tx2)。
[0138]
在具体实现步骤s309的过程中,第二交易账户利用自身对应的第二私钥 sk
b
,也就是长期私钥或者说地址私钥(b1,b2)和转账私钥sk
e
对第二交易账单tx2进行签名,得到第二交易账单tx2=(d1,d2,π3,e,l
pk
,σ,i),以及第二交易账单tx2的签 名σ2=sign(pk
b
,sk
b
=(b1,b2),tx2)。
[0139]
执行步骤s309之后得到的第二交易账单tx2需要通过交易验证方验证后才 能上链。具体验证过程如下:
[0140]
首先,交易验证方接收第二交易账户接受的第二交易账单tx2以及第二交 易账单tx2的签名σ2,验证第二交易账单tx2中的签名i是否在链上的其他交易中 是否出现过。
[0141]
若是,则判断该交易为双收交易,也就是说第二交易账户的输出有异常, 确定第二交易账单tx2未通过验证,并丢弃该第二交易账单tx2,同时停止验证。
[0142]
若否,检验第二交易账单tx2中的第三合法性证明π3、第二交易账单tx2的 签名σ2和可链接双环签名σ是否合法,以及根据第二交易账单tx2计算集合l, 并判断得到的集合l是否为
[0143]
最后,若均通过验证或检验,即第三合法性证明π3、第二交易账单tx2的 签名σ2和可链接双环签名σ合法,使第 二交易账单tx2和第二交易账户当前状态d2上链。也就是向链上的各个节点公 开(tx2,σ2)。
[0144]
需要说明的是,交易验证方能够确定第二交易账户拥有集合 中某一个元素对应的私钥,也就是说,交易 验证方只知道第二交易账户在进行当前交易的过程中接受了金额承诺集合e 中的一份钱,但无法确定接受的是哪一份钱,也就是说,交易验证方无法将 第一交易账户和第二交易账户的交易进行关联,进一步实现了接收方层面的 隐私保护。
[0145]
需要说明的是,第二交易账户在确定第一交易账户向自己转账之后,可 以选择立即接收转账金额,也可以选择暂时不接收,同时可以在同一区块中 先花钱再收钱,或者在同一区块中先收钱再花钱,实现灵活调整收钱和花钱 的方式。
[0146]
在本发明实施例中,第二交易账户确定第一交易账单,计算第一交易账 单中的转账金额承诺的转账私钥,并计算得到第二交易账户余额、第二交易 账户交易后的状态和第三合法性证明,并采用获取链上的n-1个区别于第一 转账金额承诺e的第二转账金额承诺是用于进行混淆,使得最终签名的第二交 易账单中的金额并不能为除自身以外的账户确定。在接收者层面进一步实现 针对交易双方的隐私保护。
[0147]
上述本发明实施例图3步骤s301中涉及的第二交易账户确定第一交易账 单的过程,参见图4,示出了本发明实施例提供的第二交易账户确定第一交易 账单的流程图,包括以下步骤:
[0148]
步骤s401:第二交易账户基于第二公钥pk
b
中的第二消费公钥b2和第二 私钥sk
b

的第二查询私钥b1查找链上的交易账单中的转账公钥是否为匹配公钥。若是,执行步骤s402。若否,结束。
[0149]
在具体实现步骤s401的过程中,第二交易账户利用第二公钥pk
b
中的第 二消费公钥b2和第二私钥sk
b
中的第二查询私钥b1,计算并确定是否成立,若成立则执行下述步骤s402,即确定转账公钥pk
e
为匹配公钥。
[0150]
具体证明是否成立的过程如下:
[0151]
由上述本发明实施例图1步骤s101和步骤s102的内容可知,
[0152]
则由上述本发明实施例图1步骤s102的内容可知,r=g
r
, 也就是说,
[0153]
步骤s402:获取转账公钥pk
e
对应的第一交易账单tx1。
[0154]
在本发明实施例中,第二交易账户计算并确定是否成立,若 成立,则获取转账公钥pk
e
对应的第一交易账单tx1,并执行后续操作生成自身 对应的第二交易账单,减小账单尺寸,降低运算负担,在不需要匿名交易的 情况下,保持转账金额的隐私性,更高效率的实现基于账户模型的隐私保护 区块链系统所进行的隐私交易。
[0155]
需要说明的是,上述本发明实施例图1至图4中示出的内容,是在第一 交易账户和第二交易账户不向交易验证方支付手续费的情况下执行交易。优 选的,第一交易账户和第二交易账户也可以在向交易验证方支付手续费的情 况下执行交易。第一交易账户和第二交易账户分别向与自己相关的交易信息 验证行为支付一定奖励,也就是说,第一交易账户向交易验证方支付花钱账 单(向第二交易账户的转钱账单)的验证费用,第二交易账户向交易验证方 支付收钱账单(接收第一交易账户的转钱账单)的验证费用,具体内容可参 见下述图5和图6。
[0156]
参见图5,示出了本发明实施例提供的第一交易账户向交易验证方支付佣 金的流程图,包括以下步骤:
[0157]
步骤s501:第一交易账户计算第一验证手续费的上限值t1,第一验证手 续费的验证承诺c3,并公布上限值t1和验证承诺c3。
[0158]
需要说明的是,验证承诺第一验证手续费为第一交易账户向交易 验证方提供验证第一交易账单是否满足上链要求的佣金。
[0159]
步骤s502:将第一验证手续费的上限值t1从第一交易账户余额u2中扣除, 并基于验证承诺更新第一交易账户交易后的状态c2。
[0160]
在具体实现步骤s502的过程中,从第一交易账户余额u2中扣除第一验证 手续费的上限值t1后,需更新第一交易账户交易后的状态c2,即 [0161]
需要说明的是,在更新第一交易账户交易后的状态时,可以由第一交易 账户自身进行更新,也可以由交易验证方更新第一交易账户交易后的状态, 在此不做具体限定。
[0162]
优选的,上述从第一交易账户的余额中所扣除的为手续费的上限值,可 以理解的是,交易验证方的收费标准可能比该手续费的上限值低。也就是说, 交易验证方扣除手续
费的上限值后,会向第一交易账户返回一部分手续费, 第一交易账户接收交易验证方反馈的验证手续费余额,将验证手续费余额存 储至第一交易账户余额u2中。
[0163]
参见图6,示出了本发明实施例提供的第二交易账户向交易验证方支付佣 金的流程图,包括以下步骤:
[0164]
步骤s601:第二交易账户计算第二验证手续费的上限值t2,第二验证手 续费的验证承诺d3,并公布上限值t2和验证承诺d3。
[0165]
需要说明的是,验证承诺第二验证手续费为第二交易账户向交易 验证方提供验证第二交易账单tx2是否满足上链要求的佣金。
[0166]
步骤s602:将第二验证手续费的上限值t2从所述第二交易账户余额v2中扣 除,并基于验证承诺d3更新第二交易账户交易后的状态d2,得到所述第二交易 账户的更新状态d2′

[0167]
在具体实现步骤s602的过程中,从第二交易账户余额v2中扣除将第二验 证手续费的上限值t2后,需要更新第二交易账户交易后的状态d2,得到第二交 易账户的更新状态d
′2=d2/d3。
[0168]
需要说明的是,在更新第二交易账户交易后的状态时,可以由第二交易 账户自身进行更新,也可以由交易验证方更新第二交易账户交易后的状态, 在此不做具体限定。
[0169]
优选的,第二交易账户接收交易验证方反馈的验证手续费余额,将验证 手续费余额存储至第二交易账户余额v2中。
[0170]
步骤s603:输出第二交易账户交易后的状态d2,第二交易账户的更新状 态d
′2和验证承诺d3,由交易验证方根据佣金确定第二交易账户的最终状态,以 及是否使第二交易账单tx2上链。
[0171]
结合上述图5和图6中示出的内容,交易验证方在进行验证交易时,交 易验证方分别验证c2=c1/(c3·
e)和d
′2=d2/d3是否成立,若成立,则交易验证方接 收所有的验证手续费,即接收第一验证手续费的上限值和第二验证手续费的 上限值。
[0172]
优选的,交易验证方也可将部分验证手续费退回给第一交易账户和第二 交易账户,部分验证手续费的具体退回方式,可以选择明文的方式或者选择 承诺+明文的方式将部分验证手续费退回,在此不做具体限定。
[0173]
通过上述所示出的内容可知,第一交易账户和第二交易账户在区块链系 统上的任何节点都可追溯到第一交易账户和第二交易账户发生交易,但是通 过上述各个实施例示出的内容可对交易金额进行隐藏,也就是说,除交易双 方外的其它节点无法获取任何有关交易金额的信息,从而实现了交易金额隐 藏的功能。
[0174]
与上述本发明实施例提供的一种基于账户模型的隐私交易方法相对应, 参见图7,本发明实施例还提供了第一交易账户的结构框图,第一交易账户包 括:确定单元701、计算单元702、加密单元703和处理单元704。
[0175]
确定单元701,用于基于向第二交易账户发起的转账金额s,确定转账金 额承诺e、第一合法性证明π1、第一交易账户交易后的状态c2和第一交易账户 余额u2对应的第二合法性证明π2。
[0176]
计算单元702,用于基于第二交易账户的第二公钥pk
b
计算转账金额承诺 e的公钥,得到转账公钥pk
e

[0177]
在具体实现中,计算单元702具体用于:随机生成混淆元r,混淆元基于混淆元r和第二交易账户的第二公钥pk
b
计算转账公钥pk
e
,转账公钥 其中,转账临时公钥r=g
r
,第二公钥pk
b
=(b1,b2),),第二交易账户的第二私钥sk
b
=(b1,b2)。
[0178]
加密单元703,用于第一交易账户利用与第二交易账户之间的共享密钥k 对转账金额s和混淆元z加密,得到第一交易密文ct,混淆元金额s和混淆元z加密,得到第一交易密文ct,混淆元为非零 整数环。
[0179]
处理单元704,用于基于自己的第一私钥sk
a
对转账公钥pk
e
、第一交易密 文ct、第一合法性证明π1和第二合法性证明π2进行签名,生成第一交易账单tx1以及所述第一交易账单tx1的签名σ1=sign(pk
alice
,sk
alice
,c2,e,r,pk
e
,ct,π1,π2),第一交 易账单tx1在通过交易验证方验证后上链。
[0180]
其中,第一交易账户基于区块链系统的公共参数确定自己的第一 公钥pk
a
和第一私钥sk
a

[0181]
在具体实现步骤s704的过程中,处理单元704具体用于:基于自己的第 一私钥sk
a
中的第一查询私钥a1或者第一消费私钥a2或者第一查询私钥a1和第 一消费私钥a2对转账公钥pk
e
、第一交易密文ct、第一合法性证明π1和第二合 法性证明π2进行签名,生成第一交易账单tx1并输出,其中,第一私钥 sk
a
=(a1,a2)。
[0182]
优选的,结合图7示出的内容,第一交易账户还包括:
[0183]
支付单元,用于计算第一验证手续费的上限值t1,第一验证手续费的验证 承诺c3,并公布上限值t1和验证承诺c3,将第一验证手续费的上限值t1从第一交 易账户余额u2中扣除,并基于验证承诺更新第一交易账户交易后的状态 c2。其中,验证承诺第一验证手续费为第一交易账户向交易验证方提 供验证第一交易账单是否满足上链要求的佣金。
[0184]
优选的,支付单元还用于接收交易验证方反馈的验证手续费余额,将验 证手续费余额存储至第一交易账户余额u2中。
[0185]
在本发明实施例中,第一交易账户基于向第二交易账户发起的转账金额, 确定转账金额承诺、第一合法性证明、第一交易账户交易后的状态和第一交 易账户余额对应的第二合法性证明;并基于第二交易账户的第二公钥计算得 到转账金额承诺的转账公钥,并利用与第二交易账户之间的共享密钥对转账 金额和混淆元加密,得到第一交易密文,再基于自己的第一私钥对转账公钥、 第一交易密文、第一合法性证明和第二合法性证明进行签名,最终生成第一 交易账单。从而减小账单尺寸,降低运算负担,在不需要匿名交易的情况下, 保持转账金额的隐私性,更高效率的实现基于账户模型的隐私保护区块链系 统所进行的隐私交易。
[0186]
与上述本发明实施例提供的一种基于账户模型的隐私交易方法相对应, 参见图8,本发明实施例还提供了第二交易账户的结构框图,第二交易账户包 括:查询单元801、第一计算单元802、解析单元803、获取单元804、集合 单元805、添加单元806、第二计算单元807、环签名单元808和处理单元809。
[0187]
查询单元801,用于基于第二公钥pk
b
、第二私钥sk
b
和转账临时公钥r查 找链上的
交易账单中的转账公钥pk
e
,获取转账公钥pk
e
与第二交易账户相匹 配的第一交易账单tx1。
[0188]
在具体实现中,查询单元801具体用于:基于第二公钥pk
b
中的第二消费 公钥b2和第二私钥sk
b
中的第二查询私钥b1查找链上的交易账单中的转账公钥 是否为匹配公钥。若是,则获取转账公钥pk
e
对应的第一交易账 单tx1。
[0189]
第一计算单元802,具体用于计算第一交易账单tx1中的转账金额承诺e的 转账私钥sk
e

[0190]
解析单元803,用于利用与第一交易账户之间的共享密钥k解析第一交易 账单中的第一交易密文ct,并验证第一交易密文ct对应的转账金额承诺e是否 成立。若成立,执行处理单元804。
[0191]
获取单元804,用于从链上获取n-1个第二转账金额承诺。
[0192]
获取单元804从链上获取的n-1个第二转账金额承诺区别于第一转账金 额承诺e。也就是说,n-1个第二转账金额承诺与第一转账金额承诺e不同, 是不属于第二交易账户自己的转账金额承诺。
[0193]
集合单元805,用于集合n-1个第二转账金额承诺与第一转账金额承诺e, 以及n个转账金额承诺所对应的转账公钥,得到金额承诺集合e={e1,

,e
n
}和 转账公钥集合
[0194]
添加单元806,用于将第一交易密文ct中的转账金额s加入账户余额中, 得到第二交易账户余额v2、第二交易账户交易后的状态d2和第二交易账户余额 v2对应的第三合法性证明π3。
[0195]
第二计算单元807,用于根据第二交易账户交易后的状态d2,金额承诺集 合e={e1,

,e
n
}和转账公钥集合计算,得到集合 [0196]
环签名单元808,用于根据转账公钥集合l
pk
、集合l、确定的转账私钥sk 和环签名私钥sk
l
对交易消息μ进行可链接双环签名,并输出签名 [0197]
处理单元809,用于基于第二私钥sk
b
对第二交易账单tx2进行签名,得到 第二交易账单以及第二交易账单tx2的签名 第二交易账单tx2在通过交易验证方验证后上链。
[0198]
优选的,结合图8示出的内容,第二交易账户还包括:
[0199]
支付单元,用于计算第二验证手续费的上限值t2,第二验证手续费的验证 承诺d3,并公布上限值t2和验证承诺d3,将第二验证手续费的上限值t2从第二 交易账户余额v2中扣除,并基于验证承诺d3更新第二交易账户交易后的状态 d2。其中,验证承诺第二验证手续费为第二交易账户向交易验证方提 供验证第二交易账单tx2是否满足上链要求的佣金。
[0200]
优选的,支付单元还用于接收交易验证方反馈的验证手续费余额,将验 证手续费余额存储至第二交易账户余额v2中。
[0201]
在本发明实施例中,第二交易账户确定第一交易账单,计算第一交易账 单中的转账金额承诺的转账私钥,并计算得到第二交易账户余额、第二交易 账户交易后的状态和第三合法性证明,并采用获取链上的n-1个区别于第一 转账金额承诺e的第二转账金额承诺
是用于进行混淆,使得最终签名的第二交 易账单中的金额并不能为除自身以外的账户确定。在接收者层面进一步实现 针对交易双方的隐私保护。
[0202]
与上述本发明实施例提供的一种基于账户模型的隐私交易方法相对应, 本发明实施例还提供一种基于账户模型的隐私交易系统,该隐私交易系统包 括:交易验证方、第一交易账户和第二交易账户。
[0203]
需要说明的是,交易验证方的执行原理,可参见上述方法实施例中的内 容,第一交易账户的执行原理可参见上述本发明实施例图7中的内容,第二 交易账户的执行原理可参见上述本发明实施例图8中的内容。
[0204]
本发明实施例还提供了一种基于账户模型的隐私交易装置,该装置包括 存储器和处理器,存储器上存储有可在处理器上运行的基于账户模型的隐私 交易程序,隐私交易程序被处理器执行时实现如上述基于账户模型的隐私交 易方法。
[0205]
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质 上存储有基于账户模型的隐私交易程序,隐私交易程序可被一个或者多个处 理器执行,以实现如上述基于账户模型的隐私交易方法。
[0206]
本发明实施例还提供一种计算机程序产品,包括计算机指令,当其在计 算机上运行时,使得计算机可以执行上述基于账户模型的隐私交易方法。
[0207]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意 组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形 式实现。
[0208]
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同 相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同 之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例, 所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描 述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元 可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可 以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。 可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目 的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0209]
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示 例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现, 为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性 地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行, 取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定 的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本 发明的范围。
[0210]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用 本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易 见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下, 在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例, 而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1