Filecoin终极指南:工作原理概述、解析协议及可能的改进
编译:星际大陆
编者注:原标题为《【必收藏】Filecoin最全面有用的终极指南》
当今文件存储市场状况
2、太快了 。
3、这是可靠的 :嗯,它已经发生了几次宕机,有效地使大部分互联网离线。但仍具有 99.9%的正常运行时间。
4、它具有高度的可扩展性。
5、并且提供了很棒的开发经验 。它可以轻松地与其他Amazon服务套件集成以进行扩展(例如CloudFront)
在我们拥有如此出色的云存储服务的世界中,任何竞争都必须表现得比这更好,或者至少是同等水平。在小范围内,分散式网络无法正常运行。但是,如果它(IPFS)被大规模采用(比BitTorrent更高的采用率),则可能证明它是Internet的更好版本,因此将开启全新的经济。
技术概述
2、对Filecoin协议的深入研究
3、其他问题(白皮书中未讨论)
4、Filecoin协议的可能改进
01
Filecoin网络工作原理概述
存储矿工存储客户的数据以获得奖励。他们决定愿意保留多少空间来存储。在客户和存储矿工达成协议后,矿工有义务继续提供其存储数据的证据。每个人都可以查看证据,并确保存储矿工可靠。
检索矿工根据他们的要求提供客户的数据。他们可以从客户端或存储矿工那里获取数据。检索矿工和客户使用小额支付来交换数据和硬币:数据被分成几部分,客户每件支付少量硬币。检索矿工还可以充当存储矿工。
最后,网络代表了验证客户端和矿工行为的所有完整节点。这些节点对可用存储进行计数,检查存储证明并修复数据故障。
本文中使用的一些术语:
片段:片段是客户端存储在分散存储网络中的数据的一部分。例如,可以将数据(可能是一个目录)有意地分为许多部分,并且每个部分可以由一组不同的存储矿工存储。
扇区:扇区是Storage Miner提供给网络的一些磁盘空间(可以认为是与特定存储提供者的磁盘空间的特定部分相关联的唯一ID)。矿工将客户的物品存放在其所在的部门,并为其服务赚取代币。为了存储碎片,存储矿工必须向网络保证其扇区。
AllocTable:AllocTable是一种数据结构,可跟踪零件及其分配的扇区。AllocTable在分类帐中的每个块上都进行更新,其Merkle根存储在最新的块中。在实践中,该表用于保留DSN的状态,以便在验证验证期间快速查找。
订单:订单是请求或提供服务的意图声明。客户向市场提交投标订单以请求服务(分别是用于存储数据的存储市场和用于获取数据的检索市场),而矿工则提交请求订单以提供服务。
订单簿:订单簿是订单集。Filecoin为存储市场和检索市场维护单独的订单。
承诺:承诺是向网络提供存储(特别是扇区)的承诺。存储矿工必须向账本(文件币区块链)提交认捐才能开始在存储市场中接受订单。质押包括质押部门的规模和存储矿工存放的抵押品。
存储市场
它是由网络运行的去中心化交易所,所有要价和投标都存储在区块链中,用于在Filecoin网络上存储数据。
客户向存储订单簿提交一个投标订单(使用PUT协议,在下一节中说明)。客户必须存放订单中指定的硬币并指定他们要存储的副本数量。客户可以提交多个订单,也可以在订单中指定复制因子。更高的冗余度(更高的复制因子)导致对存储故障的更高容忍度(如下所述)。
存储矿工通过通过 Manage.PledgeSector 在区块链中通过质押交易存入抵押品来保证其对网络的存储。抵押品(文件货币)在提供服务的时间内存放,如果矿工为其承诺存储的数据生成存储凭证,则将其退还。如果某些存储证明失败,则会损失一定比例的抵押品。一旦质押交易出现在区块链中,矿工就可以在存储市场中提供其存储:他们设置价格并将要价单添加到市场的订单簿中。
2、如果大量证据缺失或无效(由系统参数Δfault定义),则网络会认为Storage Miner有故障,将订单结算为失败,然后将同一块的新订单重新引入市场。
3、如果每个存储该矿工的Storage Miner有故障,则该矿工将丢失,并且客户将获得退款。
检索市场
这是一个脱链交换,客户端和检索矿工以对等方式彼此发现。一旦客户和矿工就价格达成协议,他们便开始使用小额付款逐笔交换数据和硬币。
让我们看看它是如何工作的。
检索矿工 通过在网络上散播他们的要价单来宣布他们的作品:他们设置价格并将要价单添加到市场的订单簿中。
02
对Filecoin协议的深入研究
DSN具有几个属性。前两个是必需的。
1、数据完整性意味着客户端始终会收到与存储相同的数据,而存储提供商无法说服客户端获取错误的数据。
2、可检索性只是意味着客户端将能够随着时间的推移检索其数据。
DSN的可选属性:
1、公开可验证性允许网络上的每个人在不知道数据本身的情况下验证数据是否正在存储。
2、可审核性允许验证数据是否在正确的时间段内存储。
3、激励兼容旨在奖励优秀的服务提供商并惩罚劣质的提供商。
4、实现机密性:希望将其数据私有存储的客户端,必须先加密其数据,然后才能将其提交给网络。
管理故障: 这些故障是拜占庭式故障,由管理协议中的参与者(存储提供者,客户和审计员)引起。DSN方案依赖于其下划线Manage协议的容错能力。违反管理错误的容错假设可能会损害系统的生命力和安全性。例如,考虑一个DSN方案,其中Manage协议要求使用拜占庭协议(因为节点可以对其进行审计)来审计存储提供程序(如果它们正在根据协议条件存储应存储的所有数据)。在这样的协议中,网络从存储提供商那里接收存储证明,并运行拜占庭协议(BA)同意这些证明的有效性。如果广管局容忍不超过f如果故障总数达到n个,则我们的DSN可以容忍f <n / 2个故障节点。在违反这些假设的情况下,审核可能会受到影响,从而使整个系统变得毫无用处。
存储错误 :存储错误是拜占庭式错误,它们阻止客户端检索数据:即存储矿工丢失了碎片,检索矿工停止提供碎片。成功的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 = MX。
共识算法
Filecoin DSN协议可以在允许对Filecoin证明进行验证的任何共识协议之上实施。工作量证明方案通常需要解决其解决方案不可重用或需要大量浪费计算才能找到的难题。
不可重用的工作: 大多数无许可的区块链都要求矿工解决一个棘手的计算难题,例如反转哈希函数。通常,这些难题的解决方案是无用的,除了保护网络安全之外,没有其他内在价值。一些以太坊(执行智能合约逻辑)和Primecoin(寻找新素数)等区块链试图利用一些计算能力来完成有用的工作。
浪费工作 :解决难题,就机器和能源消耗而言,确实是非常昂贵的,尤其是如果这些难题仅依赖于计算能力的话。当挖掘算法令人尴尬地并行时,解决难题的主要因素是计算能力。
尝试减少浪费 :理想情况下,网络的大部分资源应用于有用的工作。一些努力要求矿工使用更节能的解决方案。例如,Spacemint要求矿工专用于磁盘空间而不是计算。尽管这些磁盘具有更高的能源效率,但它们仍然被“浪费”,因为它们充满了随机数据。其他努力用传统的基于股权证明的拜占庭协议来替代解决难题的方法,在该协议中,利益相关者按与系统中货币份额成比例的方式对下一个区块进行投票。
因此,Filecoin矿工所做的工作不是浪费浪费的工作量证明计算,而是使他们能够参加共识。
有用的工作: 如果计算的结果对网络有价值,而不仅仅是保护区块链,那么我们认为矿工在共识协议中所做的工作是有用的。
Filecoin提出了一个有用的工作共识协议,其中网络选举矿工创建新区块的可能性(我们将其称为矿工的投票权)与他们当前正在使用的存储空间成正比网络。Filecoin协议的设计使矿工宁愿投资于存储,也不愿投资于计算能力以并行化挖掘计算。矿工提供存储并重复使用计算,以证明存储了数据以参与共识。
采矿能力建模
电源故障容限
:在此技术报告中,电源故障容限是一种抽象形式,可以根据参与者对协议结果的影响来重新构造拜占庭式故障。每个参与者控制一些权力,其中 n是网络中的总权力,而 f是有缺陷或敌对参与者所控制的权力的一部分。
Filecoin的功率 :在Filecoin中,矿工 M在时间t的功率p是M的存储分配的总和。影响我的中号是的分数中号的功率超过在网络中的总功率。在Filecoin中,power具有以下属性:
1、公用:网络中当前正在使用的存储总量是公用的。通过阅读区块链,任何人都可以计算每个矿工的存储分配-因此任何人都可以在任何时间点计算每个矿工的电量和电量总量。
2、可公开验证:对于每个存储分配,要求矿工生成时空证明,以证明正在提供服务。通过阅读区块链,任何人都可以验证矿工声称的权力是否正确。
3、变量:在任何时间点,矿工都可以通过承诺新扇区并填充该扇区来向网络添加新存储。通过这种方式,矿工可以随着时间改变他们拥有的电量。
要详细了解此功能如何在共识算法中发挥作用(在数学上),请参阅白皮书。
我们还需要一种机制来防止恶意矿工可以利用三种攻击来获取未提供的存储的奖励: Sybil攻击,Outsourcing攻击,Generation攻击。
Sybil攻击 :通过创建多个Sybil身份,恶意矿工可以假装存储(并获得报酬)比实际存储的副本多,但只能存储一次数据。
外包攻击 :恶意矿工可能依赖于从其他存储提供商快速获取数据,来承诺存储比其实际存储数量更多的数据。
生成攻击 :恶意矿工可能声称存储了大量数据,而他们却使用一个小程序按需高效地生成了这些数据。如果程序小于据称存储的数据,则这会增加恶意矿工赢得Filecoin块奖励的可能性,该可能性与矿工当前使用的存储成比例。
存储提供商必须说服他们的客户,他们已经存储了要付费存储的数据。实际上,存储提供商将生成存储证明(PoS),以供区块链网络(或客户端本身)验证。
为了使存储行为公开可验证,Filecoin引入了两种共识算法: 复制证明(PoRep)和时空证明(PoSt)。
为了解决这个问题,我们引入了一个新的证明,即“时空证明”,验证者可以在其中检验证明者是否在一段时间内存储其外包数据。
1、直觉是要求证明者生成顺序存储证明(在我们的示例中是复制证明),作为确定时间的一种方式。
2、递归地组合执行以生成简短证明。
智能合约
智能合约使Filecoin的用户能够编写有状态的程序,这些程序可以花费令牌,请求在市场中存储/检索数据以及验证存储证明。用户可以通过将交易发送到分类账中触发合约中函数调用的交易来与智能合约进行交互。我们扩展了智能合约系统,以支持Filecoin特定的操作(例如,市场操作,证明验证)。
Filecoin支持特定于数据存储的合同,以及更通用的智能合同:
文件合同:我们允许用户对他们提供或提供存储服务的条件进行编程。有几个值得一提的例子:(1)与矿工签约:客户可以在不参与市场的情况下预先指定提供服务的矿工;(2)付款策略:客户可以为矿工设计不同的奖励策略,例如合同可以随着时间的推移,矿工的工资越来越高,另一个合同可以设定由受信任的Oracle告知的存储价格;(3)票务服务:合同可以使矿工存放代币并代表其用户支付存储/取回费用, (4)更复杂的操作:客户端可以创建允许数据更新的合同。
智能合约:用户可以将程序与其交易相关联,就像在其他系统中(例如在以太坊中)一样,它们不直接依赖于存储的使用。我们预见到诸如分散式命名系统,资产跟踪和众筹平台之类的应用程序。
跨链互动
桥梁是旨在连接不同区块链的工具。在仍在进行中的同时,我们计划支持跨链交互,以将Filecoin存储引入其他基于区块链的平台,并将其他平台的功能引入Filecoin。
其他平台上的Filecoin :其他区块链系统,例如比特币,Zcash,尤其是以太坊和Tezos,允许开发人员编写智能合约;但是,这些平台提供的存储功能非常少,而且成本很高。我们计划提供一个桥梁,为这些平台提供存储和检索支持。我们注意到IPFS已被多个智能合约(和协议令牌)使用,作为引用和分发内容的一种方式。添加对Filecoin的支持将使这些系统能够保证存储IPFS内容,以交换Filecoin令牌。
Filecoin中的其他平台 :我们计划提供桥梁,以将其他区块链服务与Filecoin连接。例如,与Zcash集成将允许支持发送请求以私密存储数据。
03
其他一些问题
审查制度(非法内容) :正如我们过去在Napster和海盗湾看到的那样,缺乏审查制度最终将导致网络上的非法内容,有效地将暗网带到了表面。可能的解决方案可能是基于AI的协议,这些协议会随着时间的推移而学习,并自动检测非法内容并采取必要的措施。但是为了使网络成为民主的网络,该协议需要由用户自己来管理(从而引入拜占庭行为),以决定内容是否需要采取某些措施。 因此,总结审查制度对于不同的人而言是一个不同的问题,它需要一种更具个性化的方法,而不是一个中央公开的方法。Filecoin的工作是为数据管理创建市场,而不是提出审查管理政策。因此,可以在文件币的基础上将此“个性化”审查层转移到应用程序。
04 Filecoin协议的可能改进
令人敬畏的IPFS是一个社区维护和更新的项目,工具列表,或几乎任何与IPFS相关的东西,非常棒。要查看更多信息,或将您的信息添加到列表中,请访问GitHub上的Awesome IPFS。