Crazy Social Engineer. Cypherpunk Follower in China. 丧心病狂的社会攻城狮,加密朋克追随者。Weibo.com@Warrior比特币玩家,twitter『Bitcoin Warrior!』。
比特币网络不像我们想像得那么匿名,严格地说,是一个伪匿名系统。
比特币作为第一个区块链的实践,其初衷是搭建一个点对点公开透明的支付网络。因此,所有的交易数据都是公开的,这在保证了不被篡改的同时也带来了一个重要的问题——无法进行私密交易。
所谓私密交易,并非指比特币地址不须实名认证,而是包括交易双方地址和金额等所有交易信息都都无法被其它人解密,同时又要保证去中心化和账本一致。显然这与比特币的设计理念完全矛盾,在区块链世界中是不可能实现的。但是,这种交易的需求却十分庞大,比特币的地址很容易被追踪,无论是在链上转账还是交易所兑换法币,都会有暴露真实身份的风险,“丝绸之路”的覆灭印证了这一点,因此这几年被盗的比特币都安静地躺在黑客的地址里。中本聪从一开始就很清楚这一点,因此他一直使用tor和高匿代理,还故意留下混淆社会工程学家的个人信息,也从不动用自己早年挖出的比特币,至今仍然无人能找到他。
Zcash就在这种情况下横空出世,打破了私密交易与去中心化不能共存的悖论,将一笔交易拆开为多笔小金额交易并与其他交易混合。同时,其突破性地使用了零知识证明。
所谓零知识证明,是一种特殊的交互式证明,其中证明者知道问题的答案,他需要向验证者证明“他知道答案”这一事实,但是要求验证者不能获得答案的任何信息。可以参考这样一个简单的例子。证明者和验证者都拿到了一个数独的题目,证明者知道一个解法,他可以采取如下这种零知识证明方法:他找出81张纸片,每一张纸片上写上1到9的一个数字,使得正好有9份写有从1到9的纸片。然后因为他知道答案,他可以把所有的纸片按照解法放在一个9乘9的方格内,使得满足数独的题目要求(每列、每行、每个九宫格都正好有1到9)。放好之后他把所有的纸片翻转,让没有字的一面朝上。这样验证者没办法看到纸片上的数字。接下来,验证者就验证数独的条件是否满足。比如他选一列,这时证明者就把这一列的纸片收集起来,把顺序任意打乱,然后把纸片翻过来,让验证者看到1到9的纸片都出现了。整个过程中验证者都无法得知每张纸片的位置,但是却能验证确实是1到9都出现了。
简而言之,在Zcash中,想发送一笔私密交易款项,支付方不能直接向收款方证明,因为区块链网络是公开透明的。只能以匿名的方式,但是这样收款方就不知道是谁发的。支付方想要向收款方证明,就需要在支付同时带上一定能间接证明自己身份且不会被他人认出的信息,比如一段经过加密的字符串。这时只要支付方提供查看密钥给收款方,收款方解密后就可知道交易信息。支付方可以自主决定将查看密钥给谁,因此,他可以让很多人都知道这笔交易,也可以不让任何人知道,实现绝对的私密。
Zcash的隐匿使它如同黑夜中的潜行者,美丽而致命,斯诺登赞扬它而SEC畏惧它。因此比特币一直拒绝引入匿名特性。这正如硬币的正反两面,都不可或缺。