零知识证明不仅可用在隐私方面,还有许多其他用途,利用零知识证明,区块链网络将有更多活跃节点。
CME单日成交量已甩开Bakkt
芝加哥商品交易所(CME)集团正式开启了比特币期权交易,而其首日交易量已击败了它的竞争对手Bakkt。
关于零学问证实(ZKP)的手艺类博客文章很多,近来我也写了一篇文章,比较种种新的通用目标的 zk-SNARK。我发明,关于零学问证实的用例,很少有用非手艺言语表述的文章。事实上,零学问证实不仅可用在隐私方面,另有很多其他用处。它功用云云雄厚,以至有大概从新定义区块链的运作体式格局。
精简区块链,从 GB 压缩到 KB
区块链的区块大概会很大,而且其大小在不停增进。这源于其最初的设想。我们也逐渐接受了这个实际。然则,Coda 项目近来宣布的测试网却差别。
起首,Coda 的区块链是牢固大小的,且不会增进;其次,它只需 22KB!即使是上世纪 80 年代的 8 位机家用电脑 Commodore 64 或 ZX Spectrum,也能把它塞进去。而且,与传统的区块链比拟,Coda 的安全性差不多,以至更高。
相似但功用更多的「精简区块链」项目越来越多,比方 Mir 和 Starling(我本人也介入了 Starling 项目)。
这究竟是如何做到的呢?
只需尝试布置过一个区块链节点,你就会晓得这个历程有多痛楚:同步一个节点须要好几个小时、以至数天时候。区块链云云之大,以至于大多数的家用盘算装备的磁盘空间和带宽都达不到基本要求。效果就是中间化。即使像以太坊如许广受欢迎的区块链,其节点数目也就 10,000 个,大多数都托管在亚马逊 AWS 上,由少数几个实体所具有。区块链并不像很多人以为的那末去中间。
为何同步一个区块链要这么长时候呢?主要有两个缘由:
第一个缘由很明显:下载几百 GB 或更多数据须要很长时候;
第二,下载完以后区块链要完成考证,由于歹意节点大概会向你发送不准确的数据。
若要考证一个区块链,必需从创世区块入手下手重放(replay)整条链:实行第一个生意业务,并确保盘算出的状况即是下载获得的状况。然后转到下一个生意业务,直到你把区块链的一切生意业务都查一遍。这不仅耗时,也浪费资源。在你之前,不计其数的节点做着完全相同的盘算事情。
为何要这么做呢?由于在传统盘算学里,要晓得一个盘算是不是准确的实行,唯一要领就是重做一次这个盘算。假如小规模的盘算,那就还好,但像重放一条区块链这类「慢运算」(slow calculation),状况就完全差别了。
可提高效力和带宽的零学问证实
事实上,有一种要领可以低成本地考证一个盘算效果,而又无需重做该盘算,那就是零学问证实(ZKP),个中最著名的大概要数 zk-SNARK。
它是如何事情的呢?我们须要将区块链的重放函数改写为一个 zk-SNARK。这个 zk-SNARK 将输出两个东西:原初的输出(就跟本来的重放函数一样); 一个很小的数学「证实」,证实这个效果盘算准确。这个「证实」可以小到只需 200 字节(没错,还不到 1KB)。
如许一来,我们就不须要一切(或是多台)盘算机跑一遍重放函数了。由一台盘算机去建立这个「证实」,其他不限数目的盘算机可以在它们以为适宜的时候再举行考证。不管原初的盘算要消费多长时候(即使是几小时、几天、以至几年都没有关联),考证却只需几毫秒即可搞定。这个「证实」可以经由过程线上分发,也可以存储在 U 盘里,以至可以印在 T 恤上。
假如有歹意节点更改了某个生意业务的余额,那末这个「证实」就会和效果差别,一切考证者都邑谢绝这个状况。假如有歹意节点更改了 zk-SNARK 代码,效果也会被谢绝。(有一个「第三参数」、一个公然同享的字符串,会把这个「证实」绑到这个 zk-SNARK 代码。假如代码被修正,那末这个「证实」和同享的字符串将不婚配,因而考证者就会谢绝该效果。)
我们不再须要重做高贵的盘算,也不须要下载区块链(由于我们已经有了关于该区块链存在且有用的数学证实)。你须要的,只是当前状况(比方末了一个区块),加上可以证实当前状况是一个有用区块链的一部分的少许「证实」,再消费几毫秒考证一下效果。
递归性的组合
考证一个「证实」的速率很快,但建立这个「证实」如何呢?实在时候不牢固,与传统盘算比拟,在盘算和和内存方面它的效力要低不少。实际上,虽然一个重放函数的 zk-SNARK 版本听起来不错,但在实践中这个解决计划并不好。和以往的非 zk-SNARK 的重放函数比拟,它须要更大的内存,速率以至更慢。
不过,另有另一个文雅的计划。我们发明,用一点点小技能,实在可以运用递归性 zk-SNARKs 。有了递归,我们就不必从头入手下手考证这个区块链,可以在前一个状况的基本上来构建。速率会快得多。
须要注重的是,递归性 zk-SNARK 的效力依旧不如非递归的 zk-SNARK ,不过,近来 zk-SNARK 的组织取得了长足的提高。
一个递归性的 zk-SNARK 程序,会用属于「前一个状况」(previous state)的「证实」和新的生意业务作为输入。它会(用已被供应的证实)考证前一个状况,并搜检新状况中的生意业务是不是有用。假如没问题,它会输出新的状况和一个「证实」。
一旦新的状况和「证实」被分发到收集中,一切节点可以直接抛弃先前的状况,这么做不会有任何负面影响。新的节点只须要下载最新的状况和「证实」即可。这也就是Coda、Mir 和 Starling 这些项目可以完成小的、大小牢固的区块的窍门。
在上面说的这个例子里,只须要一个节点来建立新的区块和「证实」。明显,我们没必要让同一个节点来生成一切的区块。举个例子,可以从很多节点中随机挑选一个节点(用「可考证随机函数」,浩瀚节点以至可以随机自我挑选而不会有诳骗行动)。我们以至可以做得更好:将区块的生成逻辑分为多个 zk-SNARK。
终究效果就是:区块生产者不须要完全的区块链,它只须要前一个状况。这会让区块大小降到若干呢?一个通例的 Coda 节点仅须要 22 KB 即可存储「证实」、当前状况以及某个账户余额的 Merkle 途径。只须要 22KB,一个节点就可以考证悉数区块链、查询余额并建立生意业务。然则,假如要生成区块,这个节点须要更多:它须要先前状况的悉数余额的 Merkle 树。而 Merkle 树的大小取决于钱包的数目。假如 Coda 具有和以太坊一样多的钱包,那末,Coda 区块生产者也只须要约莫 1 GB 的容量。而以太坊上最小的完全节点是 230 GB(2019 年 12 月的数据)。差异庞大。
应用零学问证实,区块链收集将有更多活泼节点,这就提升了去中间化水平,并让种种程序有更多大概与区块链举行交互,而无需像 Infura 或 Metamask 如许的计划。想想看,99% 的新用户在装置 Metamask 时挑选了摒弃。所以,这类变化将带来庞大的影响。
比特币; https://www.btcmoney.cc/detail/64180.html
加入新手交流群:每天早盘分析、币种行情分析
添加助理微信,一对一专业指导:chengqing930520
上一篇:
拥抱羁系是区块链行业生长的必经之路
下一篇:
CME单日成交量已甩开Bakkt
加入新手交流群:每天早盘分析、币种行情分析,添加助理微信
一对一专业指导:chengqing930520
最新资讯
提供比特币数字货币以太坊eth,莱特币ltc,EOS今日价格、走势、行情、资讯、OKEX、币安、火币网、中币、比特儿、比特币交易平台网站。
2021 数字货币 网站地图