【技术实现步骤摘要】
一种具有双混币机制的区块链交易方法及系统
[0001]本专利技术涉及区块链隐私保护技术,具体涉及一种具有混币机制的区块链交易方法及系统。
技术介绍
[0002]区块链作为一种分布式账本,因其具有去中心化、不可篡改、可溯源以及公开性等特点受到人们越来越多的关注,并在金融、医疗、政府服务等诸多行业得到广泛应用。但随着区块链技术的不断发展,其面临的隐私泄露问题也越发突出。在区块链数字币中隐私性安全问题的主要原因在于用户的交易地址被获知,使得攻击者可以有规律地绘制出交易图谱,并以此追溯用户的真实身份信息。目前,混币机制是区块链网络层进行隐私保护的典型方案,通过不同用户相互交换资产的方式将交易者之间的关系分散到不相关的地址中,隐藏区块链的交易过程以增加攻击者的分析难度,达到隐私保护的目的。根据混币过程中有无第三方参与,将已有的混币机制分为两大类:一类是以MixCoin、BlindCoin等代表的中心化混币交易模式,用户需要通过提供混币服务的提供商来实现混币交易,虽然其在一定程度上能够解决地址混淆的目的,但无法保证第三方混币服务提供商的可信度,不可避免的会因中心化服务给用户带来一定的安全隐患;另一类是以CoinJoin和CoinShuffle为代表的去中心化混币交易模式,用户无需第三方服务商参与就能够完成地址混淆,从根本上解决了中心化混币模式存在的可信度问题。
[0003]最早出现的去中心化混币方案是Maxwell提出的CoinJoin机制,其核心是通过将多个交易合并成一个交易,隐藏输入地址和输出地址的关联,形成多输入对 ...
【技术保护点】
【技术特征摘要】
1.一种具有双混币机制的区块链交易方法,其特征在于,包括:公布阶段:每个参与者分别生成临时公私钥对和随机公私钥地址对,随机公钥地址存储交易承诺,该交易承诺由混币交易参数和参与者身份参数关联生成,向其他参与者广播临时公钥和随机公钥地址;一次洗牌阶段:第一个参与者提取排序在其后的其他参与者临时公钥,按逆序分层加密本地选定的数字币输入地址,并将密文添加到第一密文集后发送给第二个参与者,第二个参与者利用自身临时私钥从密文中剥离出一层加密层,继续添加本地生成的密文到第一密文集,对第一密文集洗牌后发送给第三个参与者,重复执行解密、密文添加、洗牌及密文集传递操作,直到最后一个参与者对密文解密后获得无序的输入地址列表,将列表广播给其他参与者;二次洗牌阶段:最后一个参与者提取排序在其前的其他参与者临时公钥,按正序分层加密本地选定的数字币输出地址,并将密文添加到第二密文集后发送给倒数第二个参与者,倒数第二个参与者利用自身临时私钥从密文中剥离出一层加密层,继续添加本地生成的密文到第二密文集,对第二密文集洗牌后发送给倒数第三个参与者,重复执行解密、密文添加、洗牌及密文集传递操作,直到第一个参与者对密文解密后获得无序的输出地址列表,将列表广播给其他参与者;承诺验证阶段:每个参与者在确认两个密文集中分别含有本地选定的数字币输入和输出地址后,利用本地的随机私钥地址对混币交易参数和参与者身份参数签名后广播给其他参与者,其他参与者利用广播者的随机公钥地址验签,在确认签名为真时由混币交易参数和参与者身份参数关联生成承诺值,将承诺值与随机公钥地址中存储的交易承诺比较,如果一致则承诺验证为真,否则承诺验证为假;交易提交阶段:每个参与者在验证其他参与者的承诺均为真时,创建包含有输入和输出地址列表的本地交易数据,利用本地的随机私钥地址对本地交易数据签名后广播给其他参与者,其他参与者利用广播者的随机公钥地址验签,在验签其他参与者的签名均为真时,将所有参与者的本地交易数据添加到交易数据集内并提交到区块链网络。2.根据权利要求1所述的具有双混币机制的区块链交易方法,其特征在于,所述的公布阶段具体包括:第i个参与者生成临时公私钥对(a
pk,i
,a
sk,i
)、随机数r
i
、两个盲化因子s
i
和k
i
,利用数字币输入地址INPUT
pk,i
生成随机公钥地址b
pk,i
:b
pk,i
=r
i
G+INPUT
pk,i
利用数字币输入地址INPUT
pk,i
对应的私钥INPUT
sk,i
生成随机私钥地址b
sk,i
:b
sk,i
=r
i
+INPUT
sk,i
其中,G表示一条指定椭圆曲线的基点,是一个给定的公开参数;利用盲化因子s
i
生成两个承诺分量t
1,i
和t
2,i
::利用盲化因子k
i
生成交易承诺cm
i
:
其中,τ1和τ2表示混币交易的双向会话标识符,v
i
表示第i个参与者输出的币值;利用随机私钥地址b
sk,i
生成关于临时公钥a
pk,i
的签名:σ
i,1
=Sig(b
sk,i
,(a
pk,i
,1,τ1))将签名σ
i,1
、临时公钥a
pk,i
和随机公钥地址b
pk,i
广播给其他参与者,其他参与者利用第i个参与者的随机公钥地址b
pk,i
验证签名:Verify(b
pk,i
,σ
i,1
)其中,Sig()表示签名函数,Verify()表示验签函数;在确认签名有效后将随机公钥地址b
pk,i
和临时公钥a
pk,i
关联存储到本地。3.根据权利要求2所述的具有双混币机制的区块链交易方法,其特征在于,所述的一次洗牌阶段具体包括:第i个参与者接收第i
‑
1个参与者的密文集C
i
‑1和签名σ
i
‑
1,2
,利用第i
‑
1个参与者的随机公钥地址b
pk,i
‑1验证签名:Verify(b
pk,i
‑1,σ
i
‑
1,2
)在确认签名有效后,利用临时私钥a
sk,i
解密密文集C
i
‑1,得到剥离加密层的密文集:C
′
i
‑1=Dnc(a
sk,i
,C
i
‑1)其中,Dnc()表示解密函数;生成本地选定的数字币输入地址INPUT
pk,i
的分层加密密文:c
i
=Enc(a
pk,i+1
,Enc(a
pk,i+2
,...Enc(a
pk,n
,INPUT
pk,i
)...))其中,1<i<n,n为混币交易的参与者总数,Enc()表示加密函数;将密文c
i
加入到密文集C
′
i
‑1并重新洗牌后获得密文集C
i
,利用随机私钥地址b
sk,i
生成关于密文集C
i
的签名:σ
i,2
=Sig(b
sk,i
,(C
i
,2,τ1))将密文集C
i
和签名σ
i,2
一起发送给第i+1个参与者;重复执行以上过程,直至第n个参与者将自身的数字币输入地址也添加到解密的密文集后,获得无序的输入地址...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。