让我们用非技术语言告诉你,零知识证明如何改变区块链_SKE:skeb币飞机频道

撰文:RonaldMannak,区块链创业公司StarlingProtocol联合创始人兼CEO

编译:卢江飞

来源:链闻

关于零知识证明的技术类博客文章很多,最近我也写了一篇文章,比较各种新的通用目的的zk-SNARK。我发现,关于零知识证明的用例,很少有用非技术语言表述的文章。事实上,零知识证明不仅可用在隐私方面,还有许多其他用途。它功能如此丰富,甚至有可能重新定义区块链的运作方式。

精简区块链,从GB压缩到KB

区块链的区块可能会很大,而且其大小在不断增长。这源于其最初的设计。我们也渐渐接受了这个现实。但是,Coda项目最近发布的测试网却不同。

首先,Coda的区块链是固定大小的,且不会增长;其次,它只有22KB!即便是上世纪80年代的8位机家用电脑Commodore64或ZXSpectrum,也能把它塞进去。而且,与传统的区块链相比,Coda的安全性差不多,甚至更高。

The Block分析师:两次买卖YFI让我赚了不少,现在又适当买了一些:The Block分析师Larry Cermak发推称:“我以800美元的价格买了一些YFI,几天后以3000美元的价格出售了。然后我在币安刚上线YFI那会以6000美元的价格重新买入,然后再次以1.2万美元的价格卖出。两笔交易我都赚了不少钱。现在我实在看不下去它继续上涨,所以我又适当重新买了一些。[2020/9/14]

类似但功能更多的「精简区块链」项目越来越多,比如Mir和Starling。

这到底是如何做到的呢?

只要尝试部署过一个区块链节点,你就会知道这个过程有多痛苦:同步一个节点需要好几个小时、甚至数天时间。区块链如此之大,以至于大多数的家用计算设备的磁盘空间和带宽都达不到基本要求。结果就是中心化。即便像以太坊这样广受欢迎的区块链,其节点数量也就10,000个,大多数都托管在亚马逊AWS上,由少数几个实体所拥有。区块链并不像许多人以为的那么去中心。

比特币安全专家:有人出价10 BTC让我接受采访,证明HEX不是局:比特币安全专家Andreas Antonopoulos最近表示,有人出价10 BTC,让他做一个关于HEX的采访,以证明它不是一个局。

据此前报道,多家行业媒体及分析师已提醒投资者注意,HEX疑为欺诈项目。[2020/8/16]

为什么同步一个区块链要这么长时间呢?主要有两个原因:

第一个原因很明显:下载几百GB或更多数据需要很长时间;

第二,下载完之后区块链要完成验证,因为恶意节点可能会向你发送不正确的数据。

若要验证一个区块链,必须从创世区块开始重放整条链:执行第一个交易,并确保计算出的状态等于下载得到的状态。然后转到下一个交易,直到你把区块链的所有交易都查一遍。这不仅耗时,也浪费资源。在你之前,成千上万的节点做着完全相同的计算工作。

陈伟星:李笑来让我在这一行业混到想吐:13日晚间,陈伟星在朋友圈再度发文,称李笑来欠三万个比特币完全属实,其“比特币首富”的形象是虚构而来,并表示其与李笑来并没有任何个人直接利益冲突,完全是价值观冲突,更是指李笑来让他在这个行业混到想吐。以下是陈伟星朋友圈部分原文:我和李笑来私下沟通过几次如何停止私吞私募资金和大比例免费币,一起干一些正能量的事情,被无视;李笑来在2013年6月开始到9月,募集了30000个比特币,并口头承诺其能按比特币保底;去年9月到期,被其要求延后一年还;接下来9月份就是到期还款时间;这是行业老人众所周知的事情,我没有说谎;我和李笑来没有任何个人直接利益冲突,完全是价值观冲突,让我在这个行业混到想吐;我个人也完全没有意愿和没有必要蹭这热屎惹骚,更不需要靠他来为自己造势;我的诉求是明确的,就是希望这个行业大佬们能形成“不贪污”的共识。既然干了,就绝不会怂![2018/6/14]

为什么要这么做呢?因为在传统计算学里,要知道一个计算是否正确的执行,唯一办法就是重做一次这个计算。如果小规模的计算,那就还好,但像重放一条区块链这种「慢运算」,情况就完全不同了。

希伯来大学密码研究员Aviv Zohar:IOTA让我又爱又恨:据Coindesk文章,希伯来大学密码研究员Aviv Zohar近日表示:“IOTA让我又爱又恨。此前一些专家指出了IOTA存在的一些漏洞,预计IOTA将继续受到抨击。据悉,针对IOTA技术的负面消息始于去年9月份,集中于以下三点:1.IOTA使用内部创建的散列函数(称为P-Curl)保护系统数据,这是密码学领域的巨大禁忌。而IOTA表示该决定是为防止开源软件被任意复制。

2.IOTA官方钱包没有“种子发生器”帮助用户生成秘钥。对此,IOTA已决定在未来几周推出名为Trinity的新钱包,内置随机地址生成器解决该问题。

3.IOTA的寻址方案使得用户只能使用一次地址,容易被盗用。

此外,IOTA联合创始人David Sonstebo也不曾否认,与其他一些主流币相比,IOTA目前是半集中式的,有一个中央协调节点。然而,你不能在一夜之间创建一个完全分散的网络,你必须从某个地方开始。IOTA现全球均价1.47美元,上涨11.22%,领涨市值前30币种。[2018/4/15]

可提高效率和带宽的零知识证明

加拿大银行行长:比特币“让我彻夜难眠”:加拿大行长在年底报告中提到让自己无法安睡的三个问题,包括网络安全、年轻人就业、家庭债务。同时还特别提到加密货币也是另一个让自己担忧的问题。他认为加密货币不是货币,购买行为纯属投机,它的价值也无人知晓。而且央行提供的货币才是最好的避险手段。当然数字货币的需求会继续增加,因此央行有必要深入研究如何可以正确使用这种新事物。[2017/12/18]

事实上,有一种方法可以低成本地验证一个计算结果,而又无需重做该计算,那就是零知识证明,其中最著名的可能要数zk-SNARK。

它是如何工作的呢?我们需要将区块链的重放函数改写为一个zk-SNARK。这个zk-SNARK将输出两个东西:原初的输出;一个很小的数学「证明」,证明这个结果计算正确。这个「证明」可以小到只有200字节。

这样一来,我们就不需要所有计算机跑一遍重放函数了。由一台计算机去创建这个「证明」,其他不限数量的计算机可以在它们认为合适的时间再进行验证。无论原初的计算要花费多长时间,验证却只需几毫秒即可搞定。这个「证明」可以通过线上分发,也可以存储在U盘里,甚至可以印在T恤上。

如果有恶意节点更改了某个交易的余额,那么这个「证明」就会和结果不同,所有验证者都会拒绝这个状态。如果有恶意节点更改了zk-SNARK代码,结果也会被拒绝。

我们不再需要重做昂贵的计算,也不需要下载区块链。你需要的,只是当前状态,加上能够证明当前状态是一个有效区块链的一部分的少量「证明」,再花费几毫秒验证一下结果。

递归性的组合

验证一个「证明」的速度很快,但创建这个「证明」怎样呢?其实时间不固定,与传统计算相比,在计算和和内存方面它的效率要低不少。实际上,虽然一个重放函数的zk-SNARK版本听起来不错,但在实践中这个解决方案并不好。和以往的非zk-SNARK的重放函数相比,它需要更大的内存,速度甚至更慢。

不过,还有另一个优雅的方案。我们发现,用一点点小技巧,其实可以使用递归性zk-SNARKs。有了递归,我们就不必从头开始验证这个区块链,可以在前一个状态的基础上来构建。速度会快得多。

需要注意的是,递归性zk-SNARK的效率依然不如非递归的zk-SNARK,不过,最近zk-SNARK的构造取得了长足的进步。

一个递归性的zk-SNARK程序,会用属于「前一个状态」的「证明」和新的交易作为输入。它会验证前一个状态,并检查新状态中的交易是否有效。如果没问题,它会输出新的状态和一个「证明」。

一旦新的状态和「证明」被分发到网络中,所有节点可以直接丢弃先前的状态,这么做不会有任何负面影响。新的节点只需要下载最新的状态和「证明」即可。这也就是Coda、Mir和Starling这些项目可以实现小的、大小固定的区块的秘诀。

在上面说的这个例子里,只需要一个节点来创建新的区块和「证明」。显然,我们没必要让同一个节点来生成所有的区块。举个例子,可以从许多节点中随机选择一个节点。我们甚至可以做得更好:将区块的生成逻辑分为多个zk-SNARK。

最终结果就是:区块生产者不需要完整的区块链,它只需要前一个状态。这会让区块大小降到多少呢?一个常规的Coda节点仅需要22KB即可存储「证明」、当前状态以及某个账户余额的Merkle路径。只需要22KB,一个节点就能验证整个区块链、查询余额并创建交易。但是,如果要生成区块,这个节点需要更多:它需要先前状态的全部余额的Merkle树。而Merkle树的大小取决于钱包的数量。如果Coda拥有和以太坊一样多的钱包,那么,Coda区块生产者也只需要大约1GB的容量。而以太坊上最小的完整节点是230GB。差距巨大。

利用零知识证明,区块链网络将有更多活跃节点,这就提升了去中心化程度,并让各种程序有更多可能与区块链进行交互,而无需像Infura或Metamask这样的方案。想想看,99%的新用户在安装Metamask时选择了放弃。所以,这种变化将带来巨大的影响。

感谢以下各位对本文的审阅:DanielLubarov(Mir),ShaneVitarana,StanvandeBurgt,TaariqLewis,和DmitriyBerenzon。作者授权链闻翻译并发布该文中文版本。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金智博客

[0:0ms0-5:771ms