我是马克周,一个对数字加密货币和区块链深感兴趣的撰稿人;热衷编程学习和币价技术分析。
你可以在这里找到我
LinkedIn:www.linkedin.com/in/mark-zhou-ab01b637
TradingView:www.tradingview.com/u/xiucat
最近在 Coursera 上开了好多在线课程的坑 …… 普林斯顿大学的数字货币技术;密歇根大学的数据分析以及加州大学圣地亚哥分校的离散数学等等。填坑需要时间和耐心,以及由浅入深的路子。相比之下,有关比特币和数字货币技术的课程,因为涉及编程量最小,也最简单。
最近看到的一个章节着实有趣。助理教授提到一种被称为 Zerocoin 的加密货币,并且专门用一整节课来讲解它的诞生、原理和应用价值。之所以有趣,除了它的设计结构以及应用空间外,还因为它的二代升级版 Zcash 早已在各大交易所进行交易了 —— 它的设计逻辑正在被市场验证中。
早在 2013 年,美国约翰霍普金斯大学教授 Matthew D. Green 和学生 Ian Miers、Christina Garman 就提出了一个概念:在协议的层面加入 资金打乱 (Mixing) 服务,从而为加密货币的使用者提供更好的匿名性。有关 Mixing 服务的介绍,可以参考此前的
这篇文章
。
他们的考量基于这样一种现实:以比特币为主的加密货币虽然能够一定程度上保持用户的交易安全和隐匿,但是其公开的账本信息、没有内置 Mixing 机制的设计,还是不能很好的保护使用者的隐私。其他个人和组织仍然可以通过一些手段把交易和交易者的身份关联起来,比如监控相同转账地址、根据同样的交易数额推测出账和入账地址的关系等等。(在另外一篇文章里,也曾提到过比特币的本质属性并不包括匿名性,因为它做不到真正的匿名,相关信息可以移步这篇文章。)
于是,Zerocoin 的概念应运而生了。事实上,Zerocoin 本质上并不是一个单独的加密货币,而更像是一个系统补丁:你可以把它加入到不同加密货币的区块链上,从而为特定区块链提供 Zerocoin 的 Mixing 服务。因为比特币是第一个也是最受关注的加密货币,所以 Zerocoin 最初被加到了比特币区块链上。
Zerocoin 协议将用户支付行为和代币在区块链网络中实际的转账过程断开了。这就是 Mixing 服务的基本原理:用户发起的转账被放入被称为 Zerocoin Pool 的 “池子” 中,然后再用另一笔钱转给目标用户。没错,这种操作和洗钱有点像:进来一笔钱,改头换面以另一笔钱的 “模样” 出去。不过,洗钱 (Money Laundering) 和资金打乱 (Money Mixing) 有一点本质上的区别:洗钱这个词已经定义了资金的入出一定有一端与违法行为相关:要么把非法资金洗白,要么把合法资金用做非法目的。而 Mixing 只是打乱入出资金的技术手段,而使用这种手段的人或组织,既有出于洗钱目的的非法行为,也有为了保护隐私的合法行为。
当然,由于其转账的便利性和隐秘性,使用 Mixing 服务进行洗钱活动的情况非常多。这也是包括我国在内的多国政府和央行要求监管加密货币的主要原因之一:加密货币已经从技术角度上为洗钱行为敞开了大门,尽管它们本身只是中立的技术协议。
Zerocoin,以及随后诞生的升级版 Zcash,在实现匿名化过程中采用了一个很重要的密码学原理,那就是 “零知识证明” (Zero-knowledge Proof)。根据度娘的解释,“零知识证明”,是由 S.Goldwasser、S.Micali 及 C.Rackoff 在 20 世纪 80 年代初提出的。它指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。零知识证明实质上是一种涉及两方或更多方的协议,即两方或更多方完成一项任务所需采取的一系列步骤。证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。大量事实证明,零知识证明在密码学中非常有用。如果能够将零知识证明用于验证,将可以有效解决许多问题。”
假如你是一个证明者,手里拿着一扇大门的钥匙,迫切的想要向你的朋友 (也就是验证者) 证明钥匙在自己手中,可以打开这扇门。在零知识证明的环境下,你不需要让朋友看到你手里的钥匙,或者见证你成功打开房门的过程;而仅仅通过其他方式,就能够确认你有这把钥匙。这个概念在加密学和很多网络安全领域有很多的应用,因为它可以在不泄露原本隐私的信息的前提下就得到一个数学概率上几乎接近百分之百的验证。这对于保护个人隐私、保护数据安全都有很重要的实际意义。
关于这个概念,有一个非常有趣的实验,可以让大家形象地理解它的涵义。
在 2007 年某个有关区块链的会议上,有人演示了这个实验。实验需要两个除了颜色不同外,长得完全一样的物品,比如说一红一绿两个完全相同的小球。
假设你是一个证明者,你有一位色盲朋友是验证者。在他眼中,唯一的区别——即色差,是不存在的,所以这两个小球完全相同,这位色盲朋友无法从小球的大小、轻重、气味、手感等任何角度找出一丁点不同。
在这个实验里,作为证明者,你要做的是让你的朋友知道,这两个小球确实有不同的颜色。这里有一个前提,证明者和验证者除了色盲问题外没有任何区别,因此小球对于两人来说只可能存在颜色的不同。既然这个实验是为了体现零知识证明的原理,作为证明者,你不能告诉色盲朋友这两个球具体的颜色情况。但你可以换一种方式让他了解到这一点。
具体的实验步骤是这样的:首先,由色盲朋友把两个球背手放在身后,然后随便拿一个出来给你看一眼,再放回去。接下来他要再拿一个球出来给你看,至于有没有在背后换球,则由色盲朋友决定。此时,需要你告诉他,两次拿出的球是不是同一个。
接下来,就是重复上述操作,重复次数越多越好。之所以要多次重复操作,是因为对于色盲朋友 (验证者) 而言,作为证明者的你可能会胡乱猜测是否换了球。猜对一两次还有可能,如果实验重复成百上千次,猜中的几率就极其低微了。根据你答对次数来看,如果答对次数很少,则无法证明颜色不同;如果次次都能答对,那么说明一定是因为两个小球不同的颜色,让你轻而易举的得出答案。此时,证明者就在未透露小球具体的颜色特征的情况下,成功地向验证者证明了它们具有不同的颜色。
在这个实验中,小球的颜色特征就是需要保护的数据(比如个人隐私、各类密码);而整个证明过程便是一次成功的零知识证明。
在类似 Zerocoin 这样的加密货币技术中,零知识证明原理得到了很好的应用。
- [ THE END ] -
你可以在这里找到我
LinkedIn:www.linkedin.com/in/mark-zhou-ab01b637
TradingView:www.tradingview.com/u/xiucat
领取专属 10元无门槛券
私享最新 技术干货