Filecoin终极指南

原文链接:

http://ipfs.cn/news/info-100794.html

目录

1、Filecoin网络工作原理概述?

2、对Filecoin协议的深入研究

3、其他问题(白皮书中未讨论)

4、Filecoin协议有可能改进的地方

01

Filecoin网络工作原理概述?

Filecoin中有3种用户:客户,存储矿工和检索矿工。

客户付费存储和检索数据。他们可以从可用的存储服务商中进行选择。如果他们想存储私有数据,则需要在将其提交给存储服务商之前对其进行加密。

存储矿工存储客户的数据以获得奖励。他们决定愿意保留多少空间来存储。在客户和存储矿工达成协议后,矿工有义务继续提供其存储数据的证据。每个人都可以查看证据,并确保存储矿工可信。

检索矿工根据他们的要求提供客户的数据。他们可以从客户或存储矿工那里获取数据。检索矿工和客户支付很少的费用来交换数据:数据被分成几部分,客户每片段支付很少费用。检索矿工也可以充当存储矿工。

最后,网络代表了验证客户端和矿工行为的所有完整节点。这些节点对可用存储进行计数,检查存储证明并修复数据故障。

本文中使用的一些术语:

片段:片段是客户端存储在分散存储网络中的数据的一部分。例如,可以将数据(可能是一个目录)有意地分为许多部分,并且每个部分可以由一组不同的存储矿工存储。

扇区:扇区是存储矿工提供给网络的一些磁盘空间(可以认为是与特定存储提供者的磁盘空间的特定部分相关联的唯一ID)。矿工将客户的物品存放在其所在的区域,并为其服务赚取代币。为了存储片段,存储矿工必须向网络保证其扇区可用。

AllocTable:AllocTable是一种数据结构,可跟踪零件及其分配的扇区。AllocTable在分类帐中的每个块上都进行更新,其Merkle根存储在最新的块中。在实践中,该表用于保留DSN的状态,以便在验证验证期间快速查找。

订单:订单是请求或提供服务的意图声明。客户向市场提交标的订单以请求服务(分别是用于存储数据的存储市场和用于获取数据的检索市场),而矿工则接受订单以提供服务。

订单簿:订单簿是订单的集合。Filecoin为存储市场和检索市场维护独立的订单簿。

承诺:承诺是向网络提供存储(特别是扇区)的承诺。存储矿工必须向账本(文件币区块链)提交质押才能开始在存储市场中接受订单。质押包括质押扇区的规模和存储矿工存放的抵押币。

Filecoin终极指南_第1张图片

用户通过下订单来分享他们的意图。客户提交投标订单,指定要支付的价格。矿工提交要价单,并指定要收取的价格。当买入和卖出订单匹配时,客户和矿工都签署交易订单并将其提交给区块链。

出价和要价订单共同构成了存储市场(文件存储市场)和检索市场(文件检索市场)。让我们深入研究这些市场,看看它们如何运作。

存储市场

它是由网络运行的去中心化交易所,所有要价和投标订单都存储在区块链中,用于在Filecoin网络上存储数据。

客户向存储订单簿提交一个投标订单(使用PUT协议,在下一节中说明)。客户必须存放订单中指定的费用并指定他们要存储的副本数量。客户可以提交多个订单,也可以在订单中指定复制因子。更高的冗余度(更高的复制因子)导致对存储故障的更高容错率(如下所述)。

存储矿工通过通过Manage.PledgeSector在区块链中通过质押交易存入抵押品来保证其对网络的存储。抵押品(Fil)在提供服务的时间内存放,如果矿工为其承诺存储的数据生成存储凭证,则将其退还。如果某些存储证明丢失,则会损失一定比例的抵押品。一旦质押交易出现在区块链中,矿工就可以在存储市场中提供其存储服务:他们设置价格并将要价单添加到市场的订单簿中。

Filecoin终极指南_第2张图片

一旦质押交易出现在区块链中(因此在AllocTable中),矿工便可以在存储市场中提供其存储服务:他们设置价格并通过Put.AddOrders将要价订单添加到市场的订单簿中。

7.jpg

当找到匹配的要价和买价单时(通过Put.MatchOrders),客户将片段(数据)发送给矿工。

Filecoin终极指南_第3张图片

当接收到片段,矿工运行Put.ReceivePiece。接收到数据后,矿工和客户都签署了交易订单并将其提交到区块链(在存储市场订单中)

Filecoin终极指南_第4张图片

存储矿工的存储分为多个扇区,每个扇区包含分配给矿工的部分。网络通过分配表跟踪每个存储矿工的扇区。此时(签署交易订单时),网络会将数据分配给矿工,并在分配表中记录下来。

Filecoin终极指南_第5张图片

当存储矿工扇区被填充时,该扇区被密封。密封是一种缓慢的顺序操作,它将扇区中的数据转换为副本,该副本是与存储矿工公钥关联的数据唯一物理副本。在复制证明期间,密封是必要的操作(在下面的共识部分中介绍)。

Filecoin终极指南_第6张图片

当为存储矿工分配数据时,他们必须反复生成复制证明以确保他们正在存储数据(我们将在下面详细讨论这些证明)。证明会发布在区块链上,网络会对其进行验证。

Filecoin终极指南_第7张图片

所有存储分配对网络中的每个参与者都是公开的。在每个块中,网络都会检查是否存在每个作业所需的证明,检查它们是否有效,并采取相应的措施:

1、如果缺少任何证据或证据无效,则网络会通过存储矿工的抵押币对他们进行惩罚。

2、如果大量证据缺失或无效(由系统参数Δfault定义),则网络会认为存储矿工有故障,将订单结算为失败,然后相同新订单重新引入市场。

3、如果每个存储该矿工的都无法存储该片段,则该片段将丢失,并且客户将获得退款。

Filecoin终极指南_第8张图片

检索市场

这是一个脱链交换,客户和检索矿工以对等方式彼此发现。一旦客户和矿工就价格达成协议,他们便开始使用小额付款逐笔交换数据和币。

让我们看看它是如何工作的。

检索矿工通过在网络上散播他们的要价单:他们设置价格并将要价单添加到市场的订单簿中。

14.jpg

客户向投标市场订单簿提交投标订单。检索矿工检查其订单是否与客户的相应投标订单相匹配。

Filecoin终极指南_第9张图片

订单匹配后,检索矿工将件发送给客户(矿工发送部分数据,客户发送小额付款)。收到件后,矿工和客户都签署了交易订单并将其提交给区块链。

Filecoin终极指南_第10张图片

总结

下图显示了网络中发生的所有活动。

Filecoin终极指南_第11张图片

02

对Filecoin协议的深入研究

Filecoin引入了分散存储网络(DSN)的概念。DSN是一种描述独立客户端和存储提供程序的网络的方案。DSN聚合由多个独立存储提供商提供的存储,并进行自我协调以为客户端提供数据存储和数据检索。协调是分散的,不需要受信任的各方:这些系统的安全操作是通过协议来实现的,这些协议可以协调和验证各个方执行的操作。DSN可以采用不同的协调策略,包括拜占庭协议,gossip 协议或CRDT,具体取决于系统的要求。

DSN涉及三个功能的实现:put,get和manage。Put允许客户端在唯一标识符下存储数据。Get允许客户端使用标识符检索数据。管理编排网络通过测量空间可供出租,审核供应商和修复可能的数据错误。管理协议通常由存储提供商与客户端或审核员网络一起运行(这涉及拜占庭式问题,将在下面讨论)。

DSN具有几个属性。前两个是必需的。

1、数据完整性意味着客户端始终会收到与存储相同的数据,而存储提供商无法说服客户端获取错误的数据。

2、可检索性只是意味着客户将能够随着时间的推移检索其数据。

DSN的可选属性:

1、公开可验证性:允许网络上的每个人在不知道数据本身的情况下验证数据是否正在存储。

2、可审核性:允许验证数据是否在正确的时间段内存储。

3、激励兼容:旨在奖励优秀的服务提供商并惩罚劣质的提供商。

4、加密性:希望将其数据私有存储的客户端,必须先加密其数据,然后才能将其提交给网络。

容错能力

DSN可以容忍两种可能的故障:

管理故障:这些故障是拜占庭式故障,由管理协议中的参与者(存储提供者,客户和审计员)引起。DSN方案依赖于其Manage协议的容错能力。违反管理故障的容错假设可能会损害系统的生命力和安全性。例如,考虑一个DSN方案,其中Manage协议要求使用拜占庭协议(因为节点可以对其进行审计)来审计存储提供程序(如果它们正在根据协议条件存储应存储的所有数据)。在这样的协议中,网络从存储提供商那里接收存储证明,并运行拜占庭协议(BA)同意这些证明的有效性。如果容忍数不超过f,如果故障总数达到n个,则我们的DSN可以容忍f

存储错误:存储错误是拜占庭式错误,它们阻止客户端检索数据:即存储矿工丢失了片段,检索矿工停止提供片段。成功的Put执行如果将其输入数据存储在 m个独立的存储提供程序中(总共 n个),并且可以容忍多达 f个拜占庭式提供程序,则允许执行(f,m)。参数 f和 m取决于协议的实现;协议设计者可以修复 f和 m或将选择留给用户,从而将Put(data)扩展为Put(data,f,m)。如果少于 f,则对存储的数据执行Get执行成功。错误的存储提供商。例如,考虑一个简单的方案,其中将协议设计为使每个存储提供程序都存储所有数据。在该方案中,m = n并且f = m-1。总是f = m-1吗?不可以,某些方案可以使用擦除编码来设计,其中每个存储提供商都存储数据的特定部分,因此需要m个存储提供商中的x个来检索数据。在这种情况下,f = m-x。

共识算法

Filecoin DSN协议可以在允许对Filecoin证明进行验证的任何共识协议之上实施。工作量证明方案通常需要解决大量浪费计算才能找到的难题。

不可重用的工作:大多数无许可的区块链都要求矿工解决一个棘手的计算难题,例如反转哈希函数。通常,这些难题的解决方案是无用的,除了保护网络安全之外,没有其他内在价值。一些以太坊(执行智能合约逻辑)和Primecoin(寻找新素数)等区块链试图利用一些计算能力来完成有用的工作。

浪费工作:解决难题,就机器和能源消耗而言,确实是非常昂贵的,尤其是如果这些难题仅依赖于计算能力的话。当挖掘算法令人尴尬地并行时,解决难题的主要因素是计算能力。

尝试减少浪费:理想情况下,网络的大部分资源应用于有用的工作。一些努力要求矿工使用更节能的解决方案。例如,Spacemint要求矿工专注于磁盘空间而不是计算。尽管这些磁盘具有更高的能源效率,但它们仍然被“浪费”,因为它们充满了随机数据。其他努力用传统的基于股权证明的拜占庭协议来替代解决难题的方法,在该协议中,利益相关者按与系统中货币份额成比例的方式对下一个区块进行投票。

因此,Filecoin矿工所做的工作不是浪费能源的工作量证明计算,而是使他们能够参加共识。

有价值的工作:如果计算的结果对网络有价值,而不仅仅是保护区块链,那么我们认为矿工在共识协议中所做的工作是价值的。

Filecoin提出了一个有价值的工作共识协议,其中网络选举矿工创建新区块的可能性(我们将其称为矿工的投票权)与他们当前正在使用的存储空间成正比网络。Filecoin协议的设计使矿工宁愿投资于存储,也不愿投资于计算能力以并行化挖掘计算。矿工提供存储并重复使用计算,以证明存储了数据以参与共识。

挖矿能力

算力故障容限:在此技术报告中,算力故障容限是一种抽象形式,可以根据参与者对协议结果的影响来重新构造拜占庭式故障。每个参与者控制一些权力,其中 n是网络中的总权力,而 f是有缺陷或敌对参与者所控制的权力的一部分。

Filecoin的算力:在Filecoin中,矿工M在T时间内的算力P是M的存储分配的总和,影响M的算力,是M的算力在全网总算力中的占比,影响算力有以下因素:

1、公共:网络中当前正在使用的存储总量是公用的。通过阅读区块链,任何人都可以计算每个矿工的存储分配-因此任何人都可以在任何时间点计算每个矿工的算力和算力总和。

2、可公开验证:对于每个存储分配,要求矿工生成时空证明,以证明正在提供服务。通过阅读区块链,任何人都可以验证矿工声称的权力是否正确。

3、变量:在任何时间点,矿工都可以通过承诺新扇区并填充该扇区来向网络添加新存储。通过这种方式,矿工可以随着时间改变他们拥有的算力。

要详细了解此功能如何在共识算法中发挥作用(在数学上),请参阅白皮书。

我们还需要一种机制来防止恶意矿工可以利用三种攻击来获取未提供的存储的奖励:女巫攻击,外包攻击,生成攻击。

女巫攻击:通过创建多个女巫身份,恶意矿工可以假装存储(并获得报酬)比实际存储的副本多,但只能存储一次数据。

外包攻击:恶意矿工可能依赖于从其他存储提供商快速获取数据,来承诺存储比其实际存储数量更多的数据。

生成攻击:恶意矿工可能声称存储了大量数据,而他们却使用一个小程序按需高效地生成了这些数据。如果程序小于据称存储的数据,则这会增加恶意矿工赢得Filecoin块奖励的可能性,该可能性与矿工当前使用的存储成比例。

存储提供商必须说服他们的客户,他们已经存储了要付费存储的数据。实际上,存储提供商将生成存储证明(PoS),以供区块链网络(或客户本身)验证。

为了使存储行为公开可验证,Filecoin引入了两种共识算法:复制证明(PoRep)和时空证明(PoSt)。

复制证明(PoRep)是一种新颖的存储证明,它允许服务器(即证明者P)说服用户(即验证者V)某些数据D已复制到其自己的唯一专用物理存储中。我们的方案是一个交互式协议,证明方P:(a)承诺存储某些数据D的n个不同副本(物理上独立的副本),然后(b)说服验证者V,P确实存储了每个副本通过质询/响应协议。PoRep改进了PoR和PDP方案,防止了女巫攻击,外包攻击和生成攻击。

时空证明:存储证明方案使用户可以在挑战时检查存储提供商是否正在存储外包数据。我们如何使用PoS方案来证明某些数据在一段时间内被存储。这个问题的自然答案是要求用户反复(例如:每分钟)向存储提供商发送挑战。但是,每次交互所需的通信复杂性可能成为Filecoin等系统的瓶颈,在该系统中,存储提供商需要将其证明提交给区块链网络。

为了解决这个问题,我们引入了一个新的证明,即“时空证明”,验证者可以在其中检验证明者是否在一段时间内存储其外包数据。

1、证明者生成顺序的存储证明(在我们的示例中是复制证明),作为确定时间的一种方式。

2、连续的复制证明组合,生成简短的证明。

Filecoin终极指南_第12张图片

证明者从验证者那里收到随机质询(c),并在指定的迭代次数t内使用证明的输出作为另一个的输入,依次生成复制证明。因此,确保完成的所有工作都是可重用的(如上所述)。

PoSt&PoRep使用zk-SNARKS,使证明非常简短且易于验证。

智能合约

智能合约使Filecoin的用户能够编写有状态的程序,这些程序可以花费代币,请求在市场中存储/检索数据以及验证存储证明。用户可以通过将交易发送到分类账中触发合约中函数调用的交易来与智能合约进行交互。我们扩展了智能合约系统,以支持Filecoin特定的操作(例如,市场操作,证明验证)。

Filecoin支持特定于数据存储的合同,以及更通用的智能合同:

文件合同:我们允许用户对他们提供或提供存储服务的条件进行编程。有几个值得一提的例子:(1)与矿工签约:客户可以在不参与市场的情况下预先指定提供服务的矿工;(2)付款策略:客户可以为矿工设计不同的奖励策略,例如合同可以随着时间的推移,矿工的工资越来越高,另一个合同可以设定由受信任的Oracle告知的存储价格;(3)票务服务:合同可以使矿工存放代币并代表其用户支付存储/取回费用, (4)更复杂的操作:客户端可以创建允许数据更新的合同。

智能合约:用户可以将程序与其交易相关联,就像在其他系统中(例如在以太坊中)一样,它们不直接依赖于存储的使用。我们预见到诸如分散式命名系统,资产跟踪和众筹平台之类的应用程序。

跨链互动

桥接是旨在连接不同区块链的工具。在仍在进行中的同时,我们计划支持跨链交互,以将Filecoin存储引入其他基于区块链的平台,并将其他平台的功能引入Filecoin。

其他平台上的Filecoin:其他区块链系统,例如比特币,Zcash,尤其是以太坊和Tezos,允许开发人员编写智能合约;但是,这些平台提供的存储功能非常少,而且成本很高。我们计划提供一个桥梁,为这些平台提供存储和检索支持。我们注意到IPFS已被多个智能合约(和协议代币)使用,作为引用和分发内容的一种方式。添加对Filecoin的支持将使这些系统能够保证存储IPFS内容,以交换Filecoin令牌。

Filecoin中的其他平台:我们计划提供桥梁,以将其他区块链服务与Filecoin连接。例如,与Zcash集成将允许支持发送请求以私密存储数据。

03

其他一些问题

在这里,我们列出了一些潜在的问题,这些问题在白皮书中没有得到很好的讨论。

检索市场的可伸缩性:小额支付系统(检索市场)在检索协议上产生了很多开销。为了达到与当今的集中式基础架构相匹配的检索速度,需要大量采用文件币和IPFS,以创建密集状态通道网络。

审查制度(非法内容):正如我们过去在Napster和海盗湾看到的那样,缺乏审查制度最终将导致网络上的非法内容,有效地将暗网带到了表面。可能的解决方案可能是基于AI的协议,这些协议会随着时间的推移而学习,并自动检测非法内容并采取必要的措施。但是为了使网络成为民主的网络,该协议需要由用户自己来管理(从而引入拜占庭行为),以决定内容是否需要采取某些措施

因此,总结审查制度对于不同的人而言是一个不同的问题,它需要一种更具个性化的方法,而不是一个中央公开的方法。Filecoin的工作是为数据管理创建市场,而不是提出审查管理政策。因此,可以在文件币的基础上将此“个性化”审查层转移到应用程序。

04

Filecoin协议的可能改进

在这里,我们列出了Filecoin协议中的一些可能的改进。

Tahor-LAFS加密方案:在增加价值时,客户端首先将其加密(使用对称密钥),然后将其分成可管理大小的段,然后对它们进行擦除编码以实现冗余。因此,例如,“ 2-of-3”擦除编码意味着该段总共被分割为3个片段,但是其中的任意2个片段都足以重构原始片段(有关ZFEC的更多信息)。这些段然后成为共享,存储在特定的存储节点上。存储节点是共享的数据存储库;用户不依赖它们来保证数据的完整性或机密性。

Filecoin终极指南_第13张图片

最终,加密密钥和一些有助于找到正确的存储节点的信息将成为“功能字符串”的一部分(更多有关编码过程的信息)。重要的一点是,功能字符串对于从Grid检索值既是必需的又是足够的—如果太多节点变得不可用(或脱机)并且您不能再检索足够的份额,则此操作将失败。

录入功能,录入功能和验证功能。可以离线使用一种“验证性较低”的功能。也就是说,具有录入功能的人可以将其转变为读取功能(无需与服务器交互)。验证能力可以确认值的存在和完整性,但不能解密内容。可以将可变值和不可变值都放入Grid中。自然,不可变的值根本没有写能力。


你可能感兴趣的:(Filecoin终极指南)