Zerocoin学习笔记
论文分析请看:
总体思路
Zerocoin是一个去中心的不依赖第三方信任的匿名比特币交易记录的系统。
比特币有一个优点同时这个优点也是它的缺点,那就是它的交易数据是公开透明的,且使用UTXO模型来建模交易关系。这保证了人人都可以认证,但泄露了用户交易隐私。虽然用户使用一个地址来表示其在比特币中的身份,但是很多研究表明,能够通过保存在比特币上的交易数据挖掘和追踪用户信息,甚至能够将比特币上面的“身份”链接到现实真实身份。总结起来就是,比特币的匿名性还不够。
已经有一些方法被提出来解决这个匿名问题,比如中心化的mix,环签名。这些方法或多或少存在一些“严重”的问题。
为了解决这个问题,这篇论文提出了Zerocoin。下面简述Zerocoin的思路:
上图的上面部分表示在比特币中的交易记录,一个转账的转账者的地址和接收者的地址是能够被链接起来的。
下面部分表示的是Zerocoin的交易。它是基于Bitcoin的(也可以说前者是后者的代币),所以有一个Zerocoin Mint的步骤。也就是需要将一定量的Bitcoin转换成Zerocoin。在需要转账的时候,再将Zerocoin转换成Bitcoin。关键点在于图中的虚线部分,表示这两个交易不是链接在一起中,以这样的方式来匿名、防追踪。
不能通过zerocoin转账zerocoin。
站在高层的思维角度来看,我可以使用这样的方式来达到防追踪的效果:我把我的Zerocoin放到一个公共的Zerocoin集合中,在我想花费的时候再随机地从这个集合中选择一个等值的Zerocoin。这样的话就可以把我的钱洗掉了。
协议构造
Accumulator(累加器)
本论文使用到了密码学的累加器Accumulator,目的是以一种高效的方式来证明某一个个体属于或是不属于一个集合。
可以参考视频:Scaling Bitcoin 2018 "Kaizen" Day 1 Part 3
或者这篇博客:RSA累加器,区块链瘦身神器?
Commitment(承诺) & ZKP(零知识证明)
密码学承诺可以参考:结合应用场景讲Schnorr 协议的零知识身份证明
零知识证明相关的协议主要是:Schnorr协议,具体可以参考:Schnorr协议:零知识身份证明和数字签名