引言
就像其他大型技术创新一样,区块链是我们已经使用和信任数十年的几种成熟技术的结合。自从1970年代开始研究并于1990年代开发的“共识机制”是一种与垃圾邮件作斗争的工具,它使分布式系统中的用户可以达成协议,而无需中央仲裁员。
区块链使用不同的系统来保持共识。例如,比特币的工作量证明共识机制要求矿工相互竞争,以解决计算量大的数学问题,从而验证两个交换比特币的人之间的付款。解决这些问题需要大量的电力。这就是为什么您听到有关比特币网络每年使用的电力比整个瑞士更多(并且其消耗增长得更快)的报道的原因。
Filecoin建立在空间证明的变体上。它也与权益证明有关,因为权益不是以令牌作为抵押,而是以经证明的存储形式确定的,这决定了矿工开采区块的可能性。在构建去中心化存储网络时,我们着手建立证明结构,在该结构中,通过产生积极的社会外部性的操作来达成共识:数据存储。随着测试网testnet的推出,我们推出一套新的基于存储的证明系统,以达成分散的共识。
当我们在2017年宣布Filecoin时,我们着手创建一个建立在强大的去中心化市场上的去中心化存储网络。为了播种这个市场,分散市场功能并激励早期矿工参与,我们创建了一个加密代币,这是Filecoin共识的副产品。该通证是在有用的工作的基础上生成的,即有用的复制证明和时空证明。
关于证明的故事
Juan Benet在对Zero Knowledge播客的采访中探索了Filecoin证明构建的历史。以下是该采访的节选:
“ Filecoin以多种不同方式推动了区块链的前沿。复制证明最终是一个证明系统,用于验证存储矿工是否确实拥有他们正在存储的内容并且没有作弊。在这些系统中,这是一个非常棘手的问题:如何向网络证明您确实存储了一些东西,而不仅仅是撒谎?
Filecoin尝试解决其他有趣的问题,包括更高的吞吐量共识以及Filecoin使用的可互操作的,内容可寻址的链接数据结构。但归根结底,这一切都是为了利用地球上所有未使用的存储并进行激励性组织,以建立最大,功能最强大的计算存储网络,并降低该存储的价格。
Filecoin的复制证明既是存储证明,又是空间证明,两者有细微的差异(稍后说明)。在Filecoin中,数据单位存储在所谓的扇区中。您可以通过缓慢的编码过程将特定数据密封在磁盘上的某个扇区中,然后将其证明提交给区块链。盖章是花费在该特定证明上的大量工作。为了伪造这样的证明,您必须使用客户端存储在Filecoin上的原始数据来完成特定工作,这与比特币工作量证明中的数字哈希不同。
证明系统是一种加密协议,其中有一个证明者和验证者,证明者将向验证者证明某些内容。例如,在工作量证明中,证明者已经完成了一些工作,或者花费了一些计算周期。最典型的例子是[用比特币表示]哈希。另一个示例是可验证延迟函数(Verifiedable Delay Function,VDF),在这里我可以向您证明我已经按顺序花费了一定数量的周期,因此我已经等待了一定的时间[Filecoin不使用VDF,但是研究领域]。因此,所有这些存储证明系统都是类似的证明系统,它们被广泛用于各种协议中。
存储证明是简单的证明系统,可以证明我拥有一些数据。数据所有权证明的一个示例是:我可以向您证明我有数据X,或者不透露数据X,或者如果数据大几GB,则更为简洁。然后是可检索性证明,在这里,我不仅要证明我有X,而且这些证明可以用于在我恶意并想从您那里保留X的情况下重建X。
空间证明是另一种类型的群组,在这里我可以向您保证我要花一定数量的存储空间。如果我承诺要存储1GB,并且生成一个随机GB,则可以向您证明我正在存储该随机GB,而不存储其他东西。这样就可以将存储空间用作工作量证明。
有趣的部分是将空间证明与普通的数据拥有证明相结合,在此我希望X有用,而不仅仅是随机字符串。困难的部分是创建空间证明,该证明也用于存储有用的数据。这就是复制证明作为Filecoin网络加密协议中的基础原语。
发明了其他的存储证明系统来创建您可以更好地信任的云,因为它们可以向您证明它们正在备份您的数据。但是,它们在信任是契约性的常规集中式云环境中完全没有使用。现在,它们已在整个权力下放领域中使用,因为这是我们使用激励结构来保证事情而不是合同协议的地方。
我们还使用SNARK来证明一些实际的复制证明,这些证明会产生大量输出。我们想对这些复制证明进行很多挑战,但将它们汇总起来,以便它们可以以非常小巧的方式进入链中。有多种方法可以执行此操作,但是SNARK是执行此操作的好方法,它们为您提供了一种方法来证明您已正确完成了证明,然后您可以将SNARK证明放在链上。然后,各方现在可以自己验证一些输入和实际的SNARK证明,并知道证明已正确生成。
在复制证明中,我们获取大量的源数据(如32GB),并应用非常慢的编码,从而在节点可能为32字节段的层中生成这些类似格子的图形。这是一个连续的过程,不断产生一个图形,并且每个节点都按顺序进行哈希处理。由于哈希函数,它必须一个接一个地完成。
生成的图的类型是DRG(Depth-Robust-Graph),它们与这些扩展图相连,并且有一个完整的复杂晶格结构。最后,我们现在将原始数据编码为所谓的副本,该副本作为值提交。如果需要,您可以获取相同的源数据并对其进行多次编码,最终会得到多个唯一编码的副本。
现在,我们已经完成了这一工作,为了证明我们已经正确完成了这种编码,我们可以在SNARK内进行整个编码,这将是非常昂贵的,或者我们可以抽样一些挑战来解决这个问题。证明我们已经存储了这个。假设我们在整个证据中抽取了1000个随机挑战,然后在SNARK内进行了计算。我们获取源编码的数据,然后对其进行解码,然后证明它一直追溯到我们致力于的根。这就是我们要简洁的证明。因为否则,它将是一个32字节的叶子,然后整个Merkle链一直回到根,将是相当大量的数据,然后乘以一千。100s KB或MB产生一个证明。借助SNARK,我们可以将其压缩,我认为它可以压缩到200B或类似的水平。
关于所有这些工作的一个伟大故事就是我们称为“证明过山车”。随着时间的流逝,您最终将创建大量不同的构造,而所有这些不同的参数将为所有这些不同的用例提供服务。
与Filecoin中的证明相比,这种参数选择可能是我们花了这么长时间才运送所有这些东西的最大原因。因为您选择一种构造,并且它具有一定的形状并产生特定大小的伪像,也许很好,然后您调整一些参数,例如,“嘿,也许我们希望扇区稍大一些。”这使得其他一些参数必须更改。
很快,您就进入了一个非常大的参数空间,其中包含许多不同的变量,您可以在此处调整一件事,同时也需要更改许多其他内容。随着一系列算法的优化,进行复杂性管理非常困难。由于很多这样的构造,这些慢速的编码,因此您希望足够慢以对证明有用,但又要足够快以至于它不是很昂贵。进行拨号以使其恰到好处是一个非常困难的挑战,然后在特定的SNARK结构上进行钉牢处理,以确保您可以为链条高效而简洁地完成此任务。
所有这些参数优化都可能非常艰巨和困难,以至于我们实际上必须编写软件来处理此问题。在选择证明结构和Filecoin中的参数时,我们有一个约束求解器只是为了能够处理约束优化问题。这样做的结果令人惊讶,其他小组现在可以使用它来使他们的生活更轻松,但是我们必须编写此代码。
Orient工具
我们在Github上使用了一个名为Orient的工具,并且所有工具都是开源的(请参阅Orient和Übercalc中Filecoin的参数)。它具有一种特殊的语言,您可以在其中定义特定的算法及其生成的工件,然后将它们与所有这些变量和参数组合成更大的对象。
然后,您可以做一些实验性的结果来说明某些散列函数需要花费多长时间,然后将该数据插入某些参数中,并计算出某些其他参数必须是什么。因此,例如,基于此哈希函数以及在SNARK内部或SNARK外部花费的时间,那么您将要使用这种特定的构造,因为它可以将时间最小化或将链上占用的空间最小化。而所有这些东西都是通过此求解器计算出来的。
由于结构的复杂性,单个基元及其如何编织到链中以及所有脱链协议等方面,目前正在制作区块链技术,所有这些东西都非常复杂,因此我们需要此软件帮助我们编写软件。类似于芯片制造的方式,芯片制造一直很好,直到达到一定的密度,然后他们停止了手动生产芯片的能力。他们必须开始使用软件才能对芯片进行布局。我认为我们已经达到了区块链的目的,在区块链中,我们正在建造的某些建筑中,我们需要软件来帮助我们进行设计。
我认为没有其他网络在使用复制证明,因此创建该字段是我们的优势。所以这是一个与众不同的因素。我们也是唯一具有这种可变的市场结构的公司,该结构旨在根据要价和投标结构进行优化,使矿工和客户能够一起推理价格,然后从中进行交易。我认为我们也是唯一在有用存储支持下达成共识的公司。对于其他网络,这可能是由空间证明支持的共识,但对我们而言,它很有用。这些是Filecoin的三个最大区别因素。
然后,通过libp2p与IPFS进行了紧密集成,而在IPFS上已经有大量的使用情况,还有很多其他事情。将所有这些数据直接备份到Filecoin将很容易。值得一提的是IPFS是一个开放的网络,我们已经看到其他网络开始增加对它的支持,这也真的很酷。出于这个原因,它意味着要成为一个分离层。”
Juan Benet在“Zero Knowledge”播客上的完整访谈可以在这里找到:
https://www.zeroknowledge.fm/106
作者:,来源:星际联盟Filecoin
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。