是什么让Filecoin如此不同?Filecoin的证明系统

IPFS搬运工 2020-02-27 16:30 180
原文链接:https://filecoin.io/blog/filecoin-proof-system/


和其它大型技术创新一样,区块链是我们已经使用和信任了几十年的几种成熟技术的结合体。“共识机制”自上世纪70年代开始研究,并在90年代发展成为一种打击垃圾邮件的工具,它让分布式系统中的用户无需中央仲裁者就能达成协议。
 
Filecoin是建立在空间证明变化上的。它还与权益证明相关,因为权益关系不只是将通证作为权益关系,而是以已证明的存储量存在,它决定了矿工出块的概率。在构建分布式存储网络时,我们着手构建一个证明结构。在这个结构中,共识是通过产生数据存储来实现的。随着testnet的发布,我们将推出一组新的基于存储的证明系统,以实现去中心化的共识。

filecoin-proof-system-diagram.jpg

当我们在2017年宣布Filecoin的时候,我们开始着手创建一个建立在强大的去中心化市场上的去中心化存储网络。为了培育这个市场,分散市场职能,鼓励早期矿工的参与,我们创建了一个加密通证,这是Filecoin共识的副产品。此通证是在有用的工作(即有用的复制证明和时空证明)的基础上生成的。 


 这些证明的故事
 
Juan Benet最近在Zero Knowledge播客的采访中探索了Filecoin证明结构的历史。以下是这次采访的摘录:
 
“Filecoin以多种不同的方式推动区块链的发展。

复制证明是一个证明系统,用来验证存储矿工确实拥有他们所存储的内容,并且没有作弊。但你如何向网络证明,你确实在存储一些东西,而不是撒谎?
 
Filecoin还试图解决其它一些有趣的问题,包括更高的吞吐量一致性和可互操作、内容可寻址的链接数据结构等。

说到底,这一切都是为了利用地球上所有未使用的存储空间,用激励措施来组织它们,建立最强大的计算存储网络,并压低这种存储的价格。
 
Filecoin对复制的证明既是对存储的证明,也是对空间的证明,两者略有不同。在Filecoin中,数据单元存储在所谓的扇区中。你会以缓慢的编码过程将磁盘上扇区中的特定数据密封起来,并将验证提交给区块链。密封是一项耗费大量精力的工作。想要伪造这样的证明,你必须使用客户端存储在Filecoin上的原始数据来完成特定的工作。
 
证明系统是一种密码协议,其中有证明者和验证者——证明者将向验证者证明一些东西。例如,在POW中,证明者需要做了一些计算,或者花费了一些计算周期。他们的典型证明就是哈希。
 
存储证明(Proofs of Storage)是证明我拥有某些数据的简单证明系统。比如:我可以向你证明我有数据X,不需要显示数据X,或者数据是几个GB大,而是以更简洁的方式。

是数据可恢复证明(Proof of Retrievability)我不仅要证明我有X,而且这些证明可以用来恢复X,以防我有恶意,想要隐瞒X。
 
空间证明(Proofs of Space)是另一种类型——我可以向你们保证我花费了一定的存储空间。如果我存了1gb,然后生成一个随机的GB,那么我就可以证明我存储了这个随机的GB,而不是在存储其它东西。这让矿工可以使用存储空间作为工作的证明。
 
有趣的部分是将空间证明与数据持有的普通证明结合起来——我希望X是有用的,而不仅仅是一个随机字符串。最难的部分是创建一个空间证明,它也被用来存储有用的数据。这就是Filecoin网络的密码协议中的复制证明——作为基本原语。
 
其它存储证明是为了创建更值得信任的云,因为它们可以向你证明它们正在备份你的数据。但是它们在正常的中心化云环境中完全没有使用,因为信任是契约式的。现在它们被用于整个去中心化领域,因为这是我们使用激励结构来保证事情而不是合同协议。
 
我们还使用 SNARKs来证明一些复制的实际证明,这些证明产生了大量的输出。我们想在这些复制证明上做很多挑战,把它们聚合起来这样它们就能以一种非常小、紧凑的方式进行链式反应。SNARKs是一个很好的方法,它给了你一种方法去证明你的正确性,然后你就可以把这个SNARK证明放在链上。接着,各方现在可以自己验证一些极少的输入,以及实际的SNARK证明,并知道证明已经正确生成。
 
在复制证明的过程中,我们使用,比如32GB,并应用非常慢的编码,从而在一个节点可能是32字节段的层中生成类似于网格的图。生成一个图需要一个连续的过程,并对每个节点进行连续哈希。因为哈希函数,它必须一个接一个地完成。 

1582167954(1).png

一种生成的图是DRG(深度-半径-图)它们与这些扩展图相连,形成一个复杂的晶格结构。最后,我们将原始数据编码为我们所称的副本,并将其提交为一个值。你可以获取相同的源数据,并可以对其进行多次编码,最终你将得到多个不同的、唯一编码的副本。 

现在我们已经做到了,为了证明我们已经正确地进行了编码,我们可以只取样几个挑战来证明我们已经存储了这个。假设我们在整个证明中随机抽取了1000个挑战,然后在SNARK中进行计算。我们取源编码的数据,然后解码,然后显示它一直回到我们承诺的根。这就是我们想要简洁的证明。否则它就是一个32字节的“叶子”,整个Merkle链一直回到根将会是一个相当大的数据量,然后乘以1000。如果用100 KB或MB来生成一个证明,我们可以用SNARK压缩它,我想大概是200B左右。

filecoin-proofs-system-cartoons.png

关于所有这些工作的一个伟大的故事就是我们所说的证明过山车。随着时间的推移,你最终会创建大量不同的结构,所有这些不同的参数服务于所有这些不同的用例。
 
这个参数的选择,在Filecoin中证明的选择是我们花了这么长时间来发布所有这些东西的最大原因。因为你选择了一个结构,它有特定的形状,产生了特定大小的artifacts ,也许这很好,然后你调整一些参数,比如,“嘿,也许我们想要扇区稍微大一点。“这使得其它一些参数必须改变。
 
很快你就进入了一个很大的、有很多不同变量的参数空间,一旦你在这里调整一个东西,就会还有很多其它的东西也必须跟着改变。因为很多算法都在优化,做复杂性管理,是非常困难的。因为很多这样的结构、缓慢的编码,你想用足够慢的速度来证明它,但又要足够快让它不是很贵。进行拨号以使其恰到好处是一个非常困难的挑战,然后钉上特殊的SNARK结构,以确保你可以高效,简洁地完成此操作。
 
所有这些参数优化可能是如此紧张和困难,以至于我们实际上不得不编写软件来处理这些问题。我们有一个约束求解器来处理约束优化问题,即选择Filecoin中的证明结构和参数。这是一个出乎意料的结果,其他团体现在可以用它来让他们的生活更容易,但是我们必须写这个。
 
我们使用了一个叫做Orient的工具,它在Github上,所有东西都是开源的(见Filecoin在Orient和Ubercalc中的参数)。它有一种特殊的语言,你可以在其中定义特定的算法和它们生成的artifacts ,然后将它们组合成更大的算法,并使用所有这些变量和参数。
 
然后你可以做实验结果,比如某个哈希函数需要多长时间,把数据代入一些参数然后计算出其它一些参数。例如,基于此哈希函数以及在SNARK内部或外部花费的时间,这就是你想要使用的特殊的构造,因为它可以将时间最小化或将链上足迹最小化,而所有这些东西都是通过此求解器计算出来的。
 filecoin-proof-system-ubercalc.jpg
制造区块链技术,因为它的结构是如此的复杂——无论是单独的原语还是它们是如何被编织成链的,所以我们需要这个软件来帮助我们写软件。就像芯片制造一样,芯片制造一直很顺利,直到达到一定的密度,然后他们就不能手工生产芯片了。他们不得不开始使用软件来布置芯片。我认为我们已经在区块链上达到了这一点,我们正在做的一些结构,就需要软件来帮助我们设计。
 
我认为没有其它网络使用复制证明,这是我们的一个优势,我们创造了这个领域。这是一个区分因素。

我们也是唯一一家拥有这种流动性市场结构的公司,这种结构意味着要根据一个要求和出价结构进行优化,在这种结构下,矿工和客户能够一起对价格进行推理,然后据此达成交易。

我认为,我们也是唯一以有效的存储为后盾达成共识的。对于其它的网络,这可能是一种共识,并得到了空间证明的支持,但在我们的例子中,它是有用的。这是Filecoin最大的三个区别因素。
 
然后是通过libp2p与IPFS的紧密集成,以及其他一些已经在IPFS上大量使用的东西。将所有这些数据直接备份到Filecoin中会很容易。值得一提的是,IPFS是一个开放的网络,我们已经看到其它网络开始增加对它的支持,这也很酷。因为这个原因,它意味着要成为分离层。” 


本文来源:Filecoin官方
版权声明:原站点及作者保留权利。文章为作者独立观点,不代表IPFS.CN社区的立场。
收藏 分享

全部评论