轻松看懂「零知识证明」,看不懂我撅着屁股让你打

标签: 区块链 零知识证明 | 发表时间:2018-09-11 11:35 | 作者:《商业不靠谱》编辑
出处:http://www.bukop.com

科技界的大佬都是积极拥抱区块链。 Google联合创始人谢尔盖.布林月前也曾公开自爆自己是一名以太坊矿工,自己跟儿子一块儿在挖以太坊。 谢尔盖.布林还提到说「零知识证明」这个概念“实在令人难以置信”。这让大家开始好奇零知识证明究竟是什么黑科技,为什么会让Google创始人发出这样的惊叹?

在区块链领域内,零知识证明(zero-knowledge proofs)是很有名的技术词汇。但是,多数人讨论到它就像讨论到量子计算差不多,会纷纷点头表示听过,并尴尬地表示自己懂得不多。

零知识证明是区块链领域公认困难的技术,这个技术才刚出来不久,现在开始了解应该是门槛最低的时候。但相对的,它也有还有很多有待改善的地方。今天我们先从区块链跟零知识证明有什么关系开始看起。

区块链的两难:隐私、可查验

业内曾经用分布式帐本比喻过区块链,负责记帐的人叫做矿工。

矿工在记帐的时候,会先确定转出地址(或帐户)里余额还充足,且这些钱随时可动支,还没有被预定要花在其他地方。基于矿工的核查需求,目前许多区块链的设计,是在网上公开每个地址的交易明细,矿工电脑运行的软件才有办法逐一检查地址里面的余额剩多少。

反面来说,因为交易明细都被迫公开在网上接受矿工核查,导致大家只要知道对方的地址,就可以光明正大地查到他所有的交易纪录,毫无隐私性可言。

用银行帐户来想,会更容易理解这件事可怕在哪。

这就像是别人只要知道我的汇款帐号,他就可以光明正大的上网查询我银行帐户的收支纪录。只不过现在可查询的,是多数人比较少用的加密货币收支记录而已。

那为什么我们现在用的银行转帐服务,不需要公开自己的帐户余额,就能正确记帐呢?

银行的转帐服务是把个人帐户资料完全对银行公开,换句话说银行完全知道你帐户的收支纪录,只不过银行受到严格监管,不能对外公开这些资料。但是区块链上并没有银行负责记帐,而是由全球运行挖矿软件的矿工负责,所以区块链的原始设计,才会是强迫大家都得公开帐户资料。

因此,区块链的发展面临两难困境:用户想保有隐私,但是矿工记帐又必须知道用户的交易纪录才行。比特币区块链的「匿名公开」设计,其实正好与现实需求的「实名秘密」完全相反。

在过去几个月,我们已经看到全球许多国家,都开始要求交易所将「实名认证」加入帐号的注册流程中,这是为了防范犯罪。另外,今天我们也可以理解用户未来会更重视加密货币的交易隐私性,不希望像现在这样完全公开在网上。

但是,如果交易纪录没有公开,矿工就不能查核交易。这该怎么办呢?

零知识证明就是用在这个地方。

保持秘密,但可验证

零知识证明(zero-knowledge proofs)的效果,等同于你不需要让矿工知道你帐户里面确切余额有多少,但是矿工仍然可以知道你的帐户里的钱,够不够钱支付这一笔消费。

我引用MIT多媒体实验室对零知识证明的解释:

你手上有两颗撞球,分别是绿色和红色,除了颜色之外这两颗撞球一模一样。假设我是红绿色盲,因此,就我看来你手上拿的是两颗一模一样的撞球。

问题来了,请问你是否能在不提到任何颜色资讯的前提下,说服我这个色盲相信这两颗球的颜色,确实不同?

当然可以!

你只要把两颗球交给我这个色盲,然后要我拿到背后去随意变换左右顺序之后,再拿出来让你「猜」原本在左手的球,现在换到了哪一手。

对你来说,你一眼就可以判断本来左手拿的是绿色,现在绿色跑到右手去,根本不用猜,很轻易就能指出球换位置了。但是,这对色盲来说简直惊讶!因为就我看来,这是完全相同的两颗球,你肯定只是运气好猜中的。

不过,只要重复做个几次测试,我很快就会相信你说的,这两颗球肯定有哪里不同,只是我看不出来。而且,你也完全没有透露任何关于颜色的资讯。

这就叫做零知识证明。

我们之间的互动中,完全没有提到颜色资讯。换句话说,双方对颜色这项资讯是「零知识」的情况下,你仍然能够用其他方法,说服色盲相信两颗球在颜色上的差异。

对看得到颜色的人来说,当然一眼就看出两者颜色不同,但是对色盲又想知道两颗球哪里不同的人来说,就得用零知识证明的方法说服他。

你发现了吗?

这里的色盲就好像区块链上的矿工,假如现在大家都没有把交易明细公开在网上,那用户就得使用零知识证明这套方法,来说服查核的矿工,自己真的有这笔钱可以花,只是他看不到而已。

当然,用零知识证明来说服矿工自己有足够多的钱,复杂度远比说服色盲高得多,电脑的运算量会非常大。撞球只是方便理解的简化举例,但是两者的逻辑完全相同。

很反直觉吧!所以,谷歌的创始人才会说这是个不可思议的技术。

现在我们再回过头来看零知识证明对区块链的重要性,就会清楚许多。通过零知识证明,可以让原本在区块链上看似零和游戏两个角色(使用者、矿工),现在可以同时兼顾各自的隐私性及核查需求。

那么,真的有人在用零知识证明吗?

有的,最早使用零知识证明技巧的区块链叫做  Zcash,实际的作法叫做zk-SNARKs,这是许多零知识证明的做法之一,也是最有名的一个。

Zcash可以将交易纪录上的汇款者、收款者和金额都经过加密隐藏起来,因此矿工无从得知这些交易上的细节,但仍然可以验证交易。不过,目前多数使用者在Zcash上的交易,还是选择未经加密的作法。

为什么?因为花费的成本比较高,下一段我们马上会讨论。

另外,以太坊(Ethereum)上的智能合约目前也已经可以运用zk-SNARKs 这套零知识证明的作法。但以太坊不完全是从隐私的角度切入,而是从节省运算成本的角度应用零知识证明。

透过zk-SNARKs,以太坊矿工可以不用再重新执行交易的运算,而是只要对方提得出证明即可。大概就像我不需要真的知道你会高一到高三的数学,而只要看到高中毕业证就能确定你懂高中数学。不过,这只有在制作证明的成本,远低于实际运算成本的情况下才划算。

简单来说,零知识证明是一套可以兼顾用户隐私性、矿工核查需求的新作法。但是如同一开始我们所提,零知识证明才刚出现不久,还有许多弱点有待研究、改进。

技术值得期待

即便软件开发者现在已经可以将zk-SNARKs 应用在以太坊的智能合约上,但实际上使用的人并不多。最主要的考量点,是zk-SNARKs 所耗费的运算时间太长、运算量太大。

运算时间太长很好理解,就是原本矿工只要1 秒以内就能完成核查的事,现在要花上7 秒甚至长达40 秒,这会拖慢整体区块链的运作效率。

如果你了解以太坊,以太坊上矿工费的计算方式是单价(gas price)与运算量(gas limit)相乘。因此,将zk-SNARKs 应用在智能合约上,智能合约的使用者就得付出高额的矿工费。如果又因为急件而提高单价的话,矿工费就更贵。

除此之外,目前以太坊的每个区块的gas值限制为670万。如果每次执行智能合约就得花掉上百万个gas,那么其他交易没有空间写入区块,就只能等下一个区块再写,这等同于进一步拖慢了区块链的运作速度。

在目前各种区块链都以提升运作效率、解决规模化(scalability)问题为首要目标的情况下,采用零知识证明的优先序反而没有那么高。因此,距离区块链广泛采用zk-SNARKs 应该还有几年的时间要走,不需要过度惊慌。对研发人员来说,现在或许是个投入研究的好时机。

最后,我们再从监管的角度来看。

越注重隐私性的技术,犯罪者也越喜欢。原本警察可以根据比特币区块链公开在网上的交易纪录,清楚地追查交易流向,虽然不知道这些交易地址的背后操控者是谁,但只要搭配其他的信息(例如IP地址)就有机会找到操控者。

但是,如果未来区块链采用零知识证明,就会让政府监管的难度变得更高。所以,未来政府会如何在用户隐私与监管之间拿捏尺度,是很值得期待的部分。又或者从技术的角度来看,说不定几年之后就又有新技术可以同时满足两者需求,就像是零知识证明同时满足隐私、核查需求一样。

————————

想要深入了解区块链和加密经济,长按下面二维码关注“加密笔记”

 微信扫一扫
关注”加密笔记”

相关 [知识 证明 懂我] 推荐:

轻松看懂「零知识证明」,看不懂我撅着屁股让你打

- - 商业不靠谱
科技界的大佬都是积极拥抱区块链. Google联合创始人谢尔盖.布林月前也曾公开自爆自己是一名以太坊矿工,自己跟儿子一块儿在挖以太坊. 谢尔盖.布林还提到说「零知识证明」这个概念“实在令人难以置信”. 这让大家开始好奇零知识证明究竟是什么黑科技,为什么会让Google创始人发出这样的惊叹. 在区块链领域内,零知识证明(zero-knowledge proofs)是很有名的技术词汇.

阿里巴巴的零知识证明

- 见涛 - 科学松鼠会
战争中你被俘了,敌人拷问你情报. 你是这么想的:如果我把情报都告诉他们,他们就会认为我没有价值了,就会杀了我省粮食,但如果我死活不说,他们也会认为我没有价值而杀了我. 怎样才能做到既让他们确信我知道情报,但又一丁点情报也不泄露呢. 这的确是一个令人纠结的问题,但阿里巴巴想了一个好办法,当强盗向他拷问打开山洞石门的咒语时,他对强盗说:“你们离我一箭之地,用弓箭指着我,你们举起右手我就念咒语打开石门,举起左手我就念咒语关上石门,如果我做不到或逃跑,你们就用弓箭射死我.

证明题

- Kyle - 《槽边往事》---比特海日志
(图库流量超标,欢迎支持:点击注册Yupoo). 是安于现在的生活并且学着享受庸常,还是甘冒下坠的风险振翅飞往远方. 这是我最近在《树洞》里经常看到的问题. 说实话,我也觉得非常惊奇,竟然有那么多人觉得现实在一点点埋葬自己的梦想,同时又没有足够的勇气跨出一步. 每次说到看不到的山那头,海的那一端,总有无数颗小心在各个地方黯然破碎.

证明0.999...=1

- Zane - Solidot
数学中最妙不可言的部分是其简洁优美的陈述,它们常常会让人惊呼“这不是真的”,例如e^(iπ)+1=0. 在《蒙大拿州数学爱好者》杂志上,两位研究人员用了28页探讨了一个已经被深入讨论过的、但常常让学生感到困惑的问题:0.999...等于1(PDF). 众所周知,循环小数0.999…等于实数1,相关的证明很多,例如:设a= 0.999...,两边同乘以10得到10a=9.99...,等式两边再减去a得到10a-a=9,即9a=9,a=1;另一个证明,1/9 = 0.111...,9 x (1/9) = 0.999...于是1 = 0.999....

知识衍生

- 月乾 - linux大棚-roclinux.cn
周日,落得清闲,写篇博客,把自己有关“知识学习”的一个小感悟,用图表达出来,希望能让大家有所启发. 思考一下,想学习一个新的知识,需要哪些前置知识,一个一个列出来,看看这些前置知识,有哪些还不熟悉,再列出这个前置知识的前置知识,如此递归下去,会形成一棵知识的树状结构,我们叫它知识衍生树吧. 所有叶子节点上的前置知识都是你所熟练掌握和理解的.

知识的顶峰

- loudly - 科学松鼠会

动物冷知识

- Pstrey - 科学松鼠会
喜鹊,已知唯一能从镜子里认出自己的非哺乳动物. 2008年,德国法兰克福歌德大学的普莱尔(Helmut Prior)用喜鹊做实验,证明它知道镜子里的影子是自己. 黑猩猩和海豚也有这种本事,但喜鹊是已知唯一能从镜子里认出自己的非哺乳动物. 【能认出镜子中的自己的动物并不多,这个著名的测试叫“镜子测试”,连猫狗都不能通过.

jQuery知识总结

- - 博客园_iTech's Blog
转自: http://www.cnblogs.com/oec2003/archive/2013/04/13/3017731.html. 原作者:  oec2003(水杯) . 出处:     http://oec2003.cnblogs.com/ . 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则 保留追究法律责任的权利.

PKI知识梳理

- - 互联网 - ITeye博客
场景:S要通过Internet发送一份文件给R,这份文件非常重要,不能有丝毫差错,而且不能被别人知道文件的内容. 采用对称加密算法加密文件后传输. S用对称密钥加密明文后得到密文,通过Internet发送密文给R,R用对称密钥解密密文,得到想要的明文. 这种方式需要R将对称密钥告知S,如果途中被黑客截获了对称密钥,整个过程就不是保密的了.

谈知识分享

- - 人月神话的BLOG
准备就知识分享这个话题谈下,有很多人说为何我博客上很多专业实践的文章都分享出来而没有任何保密. 这个其实很简单,首先这些大部分都是项目真正的实践,我在分享的时候都进行了相应的抽象和自我的总结,是没有违反任何和客户的保密协议的,从这个角度来说是完全可以分享的;其次,就我个人而言,我个人的实践经验没有任何不能分享的,知识只有分享才能够产生更大的价值,这也是我一贯一来的观点,如果这些知识需要我保密才能够体现个人价值,那反而说明我个人没有太大价值.