[IPFS挖矿教程] Filecoin终极指南:Filecoin的技术分析

[复制链接]
14515 |0
发表于 2019-3-12 20:17:33 | 显示全部楼层 |阅读模式
自2009年权力下放革命开始以来,已经出现了许多有前途的项目,并改变了我们看待在这个世界中和生活的方式。

其中一个项目是协议实验室,它诞生了像IPFS这样的惊人项目。

IPFS缺乏一个激励层,可以帮助它大规模采用,并帮助实现它的最终目标是取代HTTP。

这就是Filecoin的用武之地。自推出以来,Filecoin已经引起了社区的极大兴趣。但由于其经济性(crowsale和投资策略),它失去了一些支持者。很明显地说,很多人看到它的计划似乎很生气。

网上有很多关于其技术和经济的信息,这可能会让人感到困惑和压倒一切。所以,在这里我们整合了一个单一来源中的所有可用信息。
所以,先扣上一杯咖啡,这将是一个很长的...
首先,我们将讨论filecoin的技术方面,然后在下一篇文章中讨论它的经济方面。

但在深入研究核心技术之前,让我们分析一下今天的文件存储市场状况。如果您只对技术内容感兴趣,请跳到下一部分。


文件存储市场现在状况


今天,亚马逊S3是互联网上文件存储的巨无霸。这有很多原因:

1.非常便宜:每GB存储0.023美元。每10,000次读取请求0.04美分。
2.速度非常快。
3.可靠性的:曾经有过大部分机子怠机,造成大部分互联网脱机;但它仍有99.9%的正常运行时间。
4.具有高度可扩展性。
5.它提供了很好的开发者体验。它可以与一套亚马逊的其他服务轻松集成以进行扩展(例如,CloudFront)。

在我们拥有如此惊人的云存储服务的世界中,任何竞争都必须比这更好,或至少相当于。虽然小规模,分散的IPFS网络不能很好地工作。

但如果它(IPFS)被大规模采用(比BitTorrent更多采用),这可能被证明是一个更好的互联网版本,因此将开辟一个全新的经济。




技术概述


我们将其分为4个部分:

1.Filecoin网络如何运作概述?
2.文件币协议的深入研究
3.其他问题(未在白皮书中讨论)
4.Filecoin协议的可能改进


Filecoin网络如何运作概述?

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

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

存储矿工存储客户的数据以获得奖励。他们决定了他们愿意储存多少空间。在客户和存储矿工达成协议后,矿工有义务不断提供他存储数据的证据。每个人都可以查看样张并确保储存矿工是可靠的。

检索矿工应他们的要求提供客户的数据。他们可以从客户或存储矿工那里获取数据。检索矿工和客户使用小额支付交换数据和硬币:数据被分成几块,客户为每件支付少量硬币。Retrieval矿工也可以作为储藏矿工。

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

本文中使用的一些术语:

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

扇区:扇区是存储矿工为网络提供的一些磁盘空间(可以将其视为与特定存储提供商的特定磁盘空间部分相关联的唯一ID)。矿工们在他们的行业中存储客户的作品,并为他们的服务赚取代币。为了存储件,存储矿工必须将其扇区保证到网络。

分配表:分配表是一种数据结构,用于跟踪碎片及其分配的扇区。分配表在分类帐中的每个块处更新,其Merkle根存储在最新块中。在实践中,该表用于保持DSN的状态,允许在验证验证期间快速查找。

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

订单簿:订单簿是一组订单。Filecoin为存储市场和检索市场维护单独的订单。

承诺:承诺是向网络提供存储(特别是扇区)的承诺。存储矿工必须向分类帐(Filecoin区块链)提交承诺,以便开始接受存储市场中的订单。承诺包括质押部门的规模和存储矿工存放的抵押品。


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

买卖订单一起形成存储市场(文件存储市场)和检索市场(文件检索市场)。让我们深入了解这些市场,看看它们是如何运作的。


存储市场


它是由网络运行的分散交换,其中所有要求和出价都存储在区块链中,用于在Filecoin网络上存储数据。

客户向存储订单簿提交投标订单(使用PUT协议,在下一节中说明)。客户必须存入订单中指定的硬币并指定他们想要存储的副本数量。客户可以提交多个订单或在订单中指定复制因子。更高的冗余度(更高的复制因子)导致对存储故障的更高容忍度(下面讨论)。

存储矿工通过Manage.PledgeSector通过区块链中的质押交易存放抵押品,将存储保证到网络。抵押品(filecoins)存放了用于提供服务的时间,如果矿工为他们提交的数据生成存储证明,则返回抵押品。如果某些存储证明失败,则会丢失一定比例的抵押品。一旦质押交易出现在区块链中,矿工就可以在存储市场中提供存储:他们设定价格并向市场的订单添加询价单。



一旦质押交易出现在区块链中(因此在分配表中),矿工可以在存储市场中提供他们的存储:他们设定价格并通过Put.AddOrders向市场的订单添加询价单。



当一个匹配的询问&出价顺序被找到(通过Put.MatchOrders),客户端发送的片(数据)发送到矿工。



当收到这件作品时,矿工们运行Put.ReceivePiece。收到数据后,矿工和客户都签署交易订单并将其提交给区块链(在存储市场订单簿中)。



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




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



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


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

1.如果任何证据遗失或无效,网络会通过部分抵押来惩罚存储矿工。
2.如果大量证据丢失或无效(由系统参数Δfault定义),网络认为存储矿工有故障,将订单结算为失败,并将同一件的新订单重新引入市场。
3.如果存储此件的每个存储矿工都出现故障,那么该件将丢失并且客户退款。



检索市场


这是一个脱链交换,客户和检索矿工以对等方式相互发现。一旦客户和矿工就价格达成一致,他们就会开始使用小额支付一块一块地交换数据和硬币。

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

检索矿工通过向网络闲聊他们的询问单来宣布他们的作品:他们设定价格并向市场的订单添加询价单。



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


一旦订单匹配,Retrieval Miners就会将该件发送给客户(矿工发送部分数据并发送微支付)。收到货物时,矿工和客户签署交易订单并将其提交给区块链。




综合起来


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


Filecoin网络的示例执行,按方分组并按行按时间顺序排序


文件币协议的深入研究


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

DSN涉及3个功能的实现:put,get和manage。Put允许客户端以唯一标识符存储数据。Get允许客户端使用标识符检索数据。通过测量可用于租赁的空间,审计提供商以及修复可能的数据故障来管理网络协调。Manage协议由存储提供商经常与客户或审计员网络一起运行(这涉及下面讨论的拜占庭故障)。

DSN有几个属性。前2个基本上是必需的。

1.数据完整性意味着客户端始终接收与存储相同的数据,存储提供商无法说服客户端获取错误数据。
2.可检索性只是意味着客户端将能够随时检索他的数据。

DSN的可选属性:

1.公共可验证性允许网络上的每个人在不知道数据本身的情况下验证数据的存储。
2.可审计性允许验证数据是否存储了适当的持续时间。
3.激励兼容性致力于奖励优质服务提供商并惩罚不良服务提供商。
4.实现机密性:希望私人存储数据的客户必须在将数据提交到网络之前加密数据。


容错


DSN容忍两类可能的故障:

1.管理故障:这些故障是由管理协议中的参与者(存储提供商,客户端和审计员)引起的拜占庭故障。DSN方案依赖于其下划线管理协议的容错性。违反管理故障的容错假设会损害系统的活跃性和安全性。

例如,考虑一种DSN方案,其中管理协议需要拜占庭协议(因为节点可能在于他们的审计),以审计存储提供商(如果他们根据商定的条件存储他们应该存储的所有数据)。

在此类协议中,网络从存储提供商处接收存储证据,并运行拜占庭协议(BA)以就这些证据的有效性达成一致。如果BA容忍高达f在n个总节点中出现故障,那么我们的DSN可以容忍f

2.存储故障:Storage故障是拜占庭故障,阻止客户端检索数据:即存储矿工丢失件,检索矿工停止服务件。成功的Put执行是(f,m) - 容忍的,如果它导致其输入数据存储在m个独立的存储提供者中(总共n个)并且它可以容忍多达f个拜占庭提供者。

参数f和m取决于协议实现;协议设计者可以修复f和m或将选择留给用户,将Put(数据)扩展为Put(data,f,m)。

如果少于f,则对存储数据执行获取成功有缺陷的存储提供商。例如,考虑一个简单的方案,其中设计了协议,使每个存储提供商存储所有数据。在该方案中,m = n且f = m-1。总是f = m-1吗?无,一些方案可以使用擦除编码,其中每个存储提供商存储数据,一个特殊的部分被设计为使得X选自米存储提供商需要检索数据;在这种情况下,f = m-x。


共识算法


Filecoin DSN协议可以在任何允许验证Filecoin证明的共识协议之上实现。工作证明方案通常需要解决其解决方案不可重复使用或需要大量浪费计算才能找到的谜题。
不可重复使用的工作:大多数无权限的区块链要求矿工解决一个难以解决的计算难题,例如反转哈希函数。通常,这些谜题的解决方案是无用的,除了保护网络之外没有任何内在价值。一些像以太坊(执行智能合约逻辑)和Primecoin(寻找新的素数)的区块链试图利用一些计算能力来做有用的工作。
浪费的工作:解决硬谜题在机械成本和能源消耗方面可能非常昂贵,特别是如果这些谜题完全依赖于计算能力。当挖掘算法令人尴尬地平行时,解决难题的普遍因素是计算能力。

尝试减少浪费:理想情况下,网络资源的大部分应用于有用的工作。一些努力要求矿工使用更节能的解决方案。例如,Spacemint要求矿工专用磁盘空间而不是计算;虽然更节能,但这些磁盘仍然“浪费”,因为它们充满了随机数据。其他努力取代难以解决谜题与传统的拜占庭协议,其中利益相关者投票决定下一个与其在系统中的货币份额成比例的块。

因此,而不是浪费的工作量证明计算,Filecoin矿工的工作确实产生了时空证明,这使他们能够参与共识。

有用的工作:如果计算结果对网络有价值,我们认为矿工在共识协议中所做的工作是有用的,除了确保区块链之外。

Filecoin提出了一个有用的工作共识协议,其中网络选择矿工创建新区块的概率(我们将其称为矿工的投票权)与其当前使用的存储成比例与其余的相关。网络。Filecoin协议的设计使得矿工宁愿投资存储而不是计算能力来并行化挖掘计算。矿工提供存储并重新使用计算来证明数据被存储以参与共识。

采矿电力建模


电源容错:在本技术报告中,Power Fault Tolerance是一个抽象,它根据参与者对协议结果的影响重新构建拜占庭故障。每个参与者控制一些功率,其中n是网络中的总功率,f是由故障或对抗参与者控制的功率的分数。

文件币中的功率:在Filecoin中,时间t处矿工M的功率p是M的存储分配的总和。影响我的中号是的分数中号的功率超过在网络中的总功率。在Filecoin中,power具有以下属性:

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

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

3.变量:在任何时候,矿工都可以通过新部门的承诺和填补该部门来为网络增加新的存储空间。通过这种方式,矿工可以随着时间的推移改变他们的电量。

要阅读有关此权力如何在共识算法中起作用(数学)的更多信息,请参阅白皮书。

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

1.女巫攻击:通过创建多个Sybil身份,恶意矿工可以假装存储(并获得付款)比物理存储更多的副本,但只存储一次数据。

2.外包攻击:恶意矿工可能会承诺存储的数据超过他们实际存储的数量,依赖于快速从其他存储提供商处获取数据。

3.生成攻击:恶意矿工可能声称存储了大量数据,而这些数据是使用小程序按需生成的。如果程序小于所谓的存储数据,则会增加恶意矿工在Filecoin中赢得区块奖励的可能性,这与当前使用的矿工的存储成比例。

存储提供商必须说服他们的客户他们存储了他们付费存储的数据。实际上,存储提供商将生成区块链网络(或客户端自己)验证的存储证明(PoS)。
为了使存储行为可公开验证,Filecoin引入了两种一致的算法:复制证明(PoRep)和时空证明(PoSt)。

复制证明(PoRep)是一种新颖的存储证明,它允许服务器(即证明者P)说服用户(即验证者V)某些数据D已被复制到其自己的唯一专用物理存储器中。

我们的方案是交互式协议,其中证明者P:(a)承诺存储一些数据D的不同副本(物理上独立的副本),然后(b)说服验证者V,P确实存储了每个副本通过挑战/响应协议。PoRep改进了PoR和PDP方案,防止了Sybil攻击,外包攻击和生成攻击。
时空证明:存储证明方案允许用户检查存储提供商是否在挑战时存储外包数据。我们如何使用PoS方案来证明某些数据是在一段时间内存储的?

这个问题的一个自然答案是要求用户重复(例如每分钟)向存储提供商发送挑战。但是,每次交互所需的通信复杂性可能是诸如Filecoin之类的系统的瓶颈,其中存储提供商需要将其证据提交给区块链网络。
为了解决这个问题,我们引入了一个新的证明,即时空证明,验证者可以检查证明者是否在一段时间内存储她/他的外包数据。直觉是要求证明者:

1.生成顺序存储证明(在我们的案例中为复制证明),作为确定时间的方法。

2.以递归方式组合执行以生成简短证明。



PoSt插图

证明者从验证者接收随机质询(c)并按顺序生成复制证明,使用证据输出作为另一个的输入达到指定的迭代量t。从而确保完成的所有工作都是可重复使用的(如上所述)。

PoSt和PoRep使用zk-SNARKS,使得样张非常短且易于验证。

要了解有关PoSt实际实施的更多信息,请参阅白皮书。


智能合约


智能合约使Filecoin的用户能够编写可以花费令牌的有状态程序,请求在市场中存储/检索数据并验证存储证明。用户可以通过向合并中触发函数调用的分类帐发送事务来与智能合约进行交互。我们扩展智能合约系统以支持Filecoin特定运营(例如市场运营,验证验证)。

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

1.文件合同:我们允许用户对他们提供的条件进行编程或提供存储服务。有几个值得一提的例子:

(1)承包矿工:客户可以提前指定矿工提供服务而不参与市场。
(2)支付策略:客户可以为矿工设计不同的奖励策略,例如合同可以随着时间的推移向矿工付出越来越高的代价,另一份合同可以设定由可靠的oracle通知的存储价格。
(3)票务服务:合同可以允许矿工存入代币并代表其用户支付存储/检索费用,
(4)更复杂的操作:客户端可以创建允许数据更新的合同。

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


交叉链相互作用


桥梁是旨在连接不同区块链的工具;虽然仍在进行中,但我们计划支持交叉链互动,以便将Filecoin存储带入其他基于区块链的平台,并将其他平台的功能带入Filecoin。

1.Filecoin在其他平台上:其他区块链系统,如比特币,Zcash,特别是以太坊和Tezos,允许开发人员编写智能合约;然而,这些平台提供非常小的存储能力并且成本非常高。我们计划提供一个桥梁,为这些平台提供存储和检索支持。

我们注意到IPFS已经被几个智能合约(和协议令牌)用作引用和分发内容的方式。添加对Filecoin的支持将允许这些系统保证IPFS内容的存储以交换Filecoin令牌。

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


其他一些问题

在这里,我们列出了一些未在白皮书中讨论过的潜在问题。

1.检索市场可扩展性:微支付系统(检索市场)在检索协议上产生大量开销。为了实现与当今集中式基础设施相匹配的检索速度,文件币和IPFS需要大量采用,以便创建密集的状态信道网络。

2.审查(非法内容):正如我们过去看到的Napster和海盗湾一样,缺乏审查将最终导致网络上的非法内容,从而有效地将黑暗网络带到了表面。

可能的解决方案可能是人工智能的协议,随着时间的推移学习,自动检测非法内容并采取必要的行动。但是为了使网络成为民主网络,协议需要由用户自己管理(从而引入拜占庭行为)来决定内容是否需要某些行动。

3.OpenSource ?:推断上述问题,最初,为了保护网络免受此类内容的影响,它也可能由协议实验室管理。这可能意味着一个封闭的软件(免费使用,但不能公开修改)。但是,即使他们这样做,也可能没什么用,因为人们可以在其上运行未经审查的版本(通过修改原始软件)。

4.货币波动:考虑到证券币将在交易所上市的事实,在这样的市场中想象一个小额支付系统(存储和检索将涉及小额支付)有多实用?从目前市场的成熟度和一般的分散空间来看,硬币/代币更像是投资工具而非公用事业。这是我们今天在基于令牌的项目中没有被广泛采用的最大原因之一。


文件币协议的可能改进


这里我们列出了filecoin协议的一些可能的改进。

1.Tahor-LAFS加密方案:在添加值时,客户端首先对其进行加密(使用对称密钥),然后将其拆分为可管理大小的段,然后对这些段进行擦除编码以实现冗余。

因此,例如,“2-of-3”擦除编码意味着该片段被分成总共3个片段,但其中任何2个片段足以重建原始片段(更多地了解ZFEC)。

然后,这些段成为共享,存储在特定的存储节点上。存储节点是共享的数据存储库;用户不依赖于它们的完整性或数据的机密性。



最终,加密密钥和一些有助于找到正确存储节点的信息成为“能力字符串”的一部分(详细了解编码过程)。重要的一点是,一个能力字符串既是必要的,也足以从网格中检索一个值 - 这种情况会失败的情况是当有太多的节点变得不可用(或脱机)并且您无法再检索到足够的共享时。

有写入功能,读取功能和验证功能;一个人可以在线下减少为“不那么权威”的能力。也就是说,具有写入功能的人可以将其转换为读取功能(不与服务器交互)。

验证功能可以确认值的存在和完整性,但不能解密内容。可以将可变值和不可变值都放入Grid中;当然,不可变值根本没有写入功能。

我们将在本文的下一部分讨论文件币经济学。

4kxwkhrhwbn.png

4kxwkhrhwbn.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表