Filecoin的终极指南:深挖Filecoin白皮书

前言:按照计划Filecoin将于12月11日测试网上线,而在2020年3月主网上线。作为去中心化存储的项目,Filecoin通过构建存储和检索市场,类似于存储市场的去中心化的Airbnb,它能对中心化的存储市场带来冲击和颠覆吗?从技术上,它到底是什么?如何来解读?本文作者“Vasa”,由“蓝狐笔记”社群的“SIEN”翻译。
自2009年开启去中心化的革新以来,涌现了很多有前途的项目,并且改变我们看待世界的看法和生活方式。其中之一是Protocol Labs,它催生了让人惊叹的项目如IPFS。
IPFS缺少可以帮助其实现大规模采用的激励层,它的最终极目标是取代HTTP。
这就是Filecoin的来历。自发布以来,Filecoin在社区中赢得了很多关注。但由于它的代币经济(众筹和投资策略),它失去了不少支持者。显然,有些人似乎对它的计划不满。
网络上有很多关于它的技术和代币经济的信息,有些让人困惑且不知所措。这里我们将在一个地方解决问题,告诉你什么是Filecoin。所以,现在系好安全带,然后来一杯咖啡,这会是个很长的历程。
在我们深入分析其核心技术之前,我们先分析下当前文件存储市场的状况。
文件存储市场现状
如今,Amazon S3是互联网上文件存储的巨头。原因有很多:
· 非常便宜:每GB存储0.023美元,每10,000次读取请求0.04美分;
· 非常快
· 可靠:确实,它发生过几次大的宕机,并导致互联网的很大部分离线。但它仍然有99.9%的正常运行时间。
· 高度可扩展
提供很棒的开发者体验。它可轻松地与其他Amazon服务套件集成,以实现扩展(例如CloudFront)
这个世界上,我们已经拥有了如此出色的云存储服务,任何竞争者都必须有更优秀的服务,或者至少达到同等的水平。就小规模的情况而言,去中心化网络做得不出色。
但是,如果IPFS被大规模采用(比BitTorrent有更大规模的采用),那么,这可能会被证明是更好的互联网版本,而且还将开启全新的经济。
技术概述
有四个部分:
· Filecoin网络如何运作?
· Filecoin协议的深入研究
· 其他问题(白皮书上未涉及的)
· Filecoin协议的可能改进
Filecoin网络如何运作?
在Filecoin中有3组用户:客户、存储矿工以及检索矿工。
客户为存储和检索数据的服务付费。他们可以从可用的服务提供商中进行选择。如果他们想存储隐私数据,他们需要先对其进行加密,然后再提交给服务提供商。
存储矿工存储客户的数据以获得奖励。他们自行决定为存储提供多少空间。在客户和存储矿工达成协议之后,矿工有义务持续提供其存储数据的证明。每个人都可以查看该证明,并确保存储矿工是可靠的。
检索矿工根据客户的请求给他们提供数据。他们可以从客户或存储矿工那里获取数据。检索矿工和客户使用小额支付来交换数据和代币:数据被切分成碎片,客户为每个碎片支付少量代币。检索矿工也可以同时充当存储矿工。
最后,网络代表了验证客户和矿工行为的所有完整节点。这些节点对可用存储进行计数、检查存储证明、以及修复数据错误。
本文中的一些术语:
碎片:碎片是指客户存储在去中心化存储网络中的数据的一部分。例如,可以将数据(可能是一张猫的图片)有意地切分成许多碎片,且每个碎片可以被存储进入不同的存储矿工中。
扇区:扇区是存储矿工向网络提供的一些磁盘空间(可以认为是唯一ID,它跟特定存储矿工的磁盘空间的特定部分相关联)。矿工在他们的扇区中存储客户的数据碎片,并为其服务赚取代币。为了存储碎片,存储矿工必须向网络保证其扇区。
分配表:分配表是一种数据结构,它持续跟踪碎片及其分配的扇区。分配表在分类账上的每个区块都会更新,其Merkle root会存储在最新的区块中。在实践中,分配表用于保持DSN的状态,以便于在验证证明时快速查找。
订单:订单是请求或提供服务的声明。客户向市场提交买盘订单以请求服务(其中包括在存储市场请求数据存储,在检索市场请求数据检索),矿工则提交卖盘订单以提供服务。
订单簿:订单簿是订单集。Filecoin为存储市场和检索市场维持单独的订单。
保证:保证是向网络提供存储(尤其是扇区)的承诺。存储矿工必须向账本(filecoin区块链)提交他们的保证,以在存储市场中接受订单。保证包括包括扇区大小的保证以及其存入的质押代币。

Filecoin的终极指南:深挖Filecoin白皮书

用户通过下订单来表达其意向。客户提交买盘订单,并指定其想支付的价格。矿工提交卖盘订单,并指定其想收取的价格。当买盘和卖盘订单匹配,客户和矿工双方签署交易订单协议并将其提交至区块链。
买盘和卖盘订单一起形成存储市场(文件存储的市场)和检索市场(文件检索的市场)。我们可以深入研究这些市场,看看它们如何运作。
存储市场
它是由网络运行的去中心化交易所,其中所有的卖盘和买盘都存在区块链上,用于在Filecoin网络上存储数据。
客户使用PUT协议向存储订单簿提交买盘订单。客户必须在指定的订单中存入代币,并指定他们想要存储的复制数量。客户可以提交多个订单,也可以在一个订单中指定复制数量。更高的冗余度(蓝狐笔记注:此处指更多的复制数量)能产生更高的存储故障的容错性。
存储矿工通过存入质押代币向网络保证其存储,其保证通过Manage.PledgeSector在区块链中进行保证交易。质押代币会在存储矿工愿意提供服务的期间内存入质押,如果矿工生成他们所承诺的数据存储证明,代币会被返回。
如果某些存储证明失败,存储矿工则会损失与之成比例的抵押代币。

Filecoin的终极指南:深挖Filecoin白皮书

一旦保证交易出现在区块链上(因此在分配表中),矿工便可以在存储市场中提供其存储:他们设置价格并通过Put.AddOrders向市场订单簿提交卖盘订单。

Filecoin的终极指南:深挖Filecoin白皮书

当卖单和买单匹配(通过Put.MatchOrders),客户将数据碎片发给矿工。

Filecoin的终极指南:深挖Filecoin白皮书

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

Filecoin的终极指南:深挖Filecoin白皮书

存储矿工的存储被划分为多个扇区,每个扇区包含分配给矿工的碎片。网络通过分配表持续跟踪每个存储矿工的扇区。此时(当交易订单协议签署),网络将数据分配给矿工,并在分配表上留下一条记录。

Filecoin的终极指南:深挖Filecoin白皮书

当存储矿工扇区充满,该扇区密封。密封是缓慢和有序操作,它将扇区中的数据转换为副本,该副本是跟存储矿工的公钥相关联的数据的唯一物理副本。在复制证明(Proof-of-Replication)期间,密封是必要的操作。

Filecoin的终极指南:深挖Filecoin白皮书

当为存储矿工分配数据时,他们必须重复生成复制证明以确保他们在存储数据。证明会发布到区块链上,并由网络对其进行验证。

Filecoin的终极指南:深挖Filecoin白皮书

所有存储分配对网络中的所有参与者公开。每个区块,网络会检查对每个分配任务所要求的证明是否存在,检查它们是否有效,并采取对应措施:
· 如果任何证明缺失或无效,网络会拿走矿工的部分抵押代币,以示惩罚;
· 如果大量的证明缺失或无效(由系统参数Δfault定义),网络会认为存储矿工有故障,将订单结算为失败,然后重新将数据碎片作为新订单引入市场;
· 如果每个存储矿工存储该碎片都有故障,则该碎片会丢失,客户会收到退款。

Filecoin的终极指南:深挖Filecoin白皮书

检索市场
这是链外的点对点交易市场,客户和检索矿工相互发现彼此。一旦客户和矿工同意价格,他们便开始通过小额支付逐笔交易数据和代币。
让我们看看它是如何运作的。
检索矿工通过他们在网络中发布其卖盘订单来声明服务:他们设置价格,并向市场的订单簿添加卖盘订单。

Filecoin的终极指南:深挖Filecoin白皮书

一旦订单匹配,检索矿工向客户发送碎片(矿工发送部分数据,而客户发送部分支付代币,根据碎片进行)。当碎片收到,矿工和客户会签署协议订单,并提交到区块链上。

Filecoin的终极指南:深挖Filecoin白皮书

总结
下图显示发生在网络上的所有活动

Filecoin的终极指南:深挖Filecoin白皮书

对Filecoin协议的深入研究
Filecoin引入去中心化存储网络(DSN)的概念。DSN是一种描述独立客户和存储提供商网络的方案。DSN聚合由多个独立存储提供商提供的存储,并进行自我协调,以为客户提供数据存储和数据检索的服务。
协调是去中心化的,且不需要可信的第三方:这些系统的安全操作是通过协议达成的,这些协议可以协调和验证各方参与者的操作。(蓝狐笔记注:跟Airbnb通过中心化公司的调度不同,它是无需信任第三方的)
DSN可以根据系统要求采用不同的策略进行协调,包括拜占庭协议、八卦协议、或CRDT。
DSN涉及3个功能的实现:存入、获取和管理。“存入”允许客户在唯一标识符下存储数据。“获取”允许客户使用唯一标识符检索数据。“管理”是对去中心化存储市场网络的管理,它测量可供出租的空间、审核存储提供商、以及修复可能的数据故障。管理协议通常由存储提供商和客户或网络的审核者一起运行。
DSN有几个属性。前两个是必须的。
· 数据完整性意味着客户总是可以收到其存入的相同数据,而存储提供商如果提供错误数据,则无法让客户放心。
· 可检索性则意味着客户可以随时间推移检索其数据。
DSN的其他属性:
公开可验证性,它则允许网络中的任何人在无需知道数据的情况下验证数据是否被存储。
可审核性,它允许验证数据是否在正确的时间段内被存储。
激励兼容,它旨在奖励好的服务提供商,惩罚差的提供商。
实现机密性:它希望对其数据进行私密存储的客户在其提交到网络之前必须加密其数据。
容错能力
DSN应该对两种类型的可能错误进行容错:
· 管理容错
这是在管理协议中由参与者(存储提供商,客户&审核员)导致的拜占庭容错。DSN机制依赖于它管理协议的容错。违反管理错误的容错假设可能会损害系统的活性和安全。
例如,考虑一下DSB机制,其中的管理协议要求拜占庭协议(由于节点可以向审核者谎报)来审核存储提供商(如果他们根据约定的条件存储应存的所有数据)。
在这样的协议中,网络从存储提供商那里收取存储证明,并运行拜占庭协议来验证这些证明的有效性。如果拜占庭协议在总共n个节点中最多可以容忍f个错误,那么,我们的DSN可以容忍f< n/2个错误节点。在违反这些假设的情况下,审核就会受到影响,从而导致系统变得无用。
· 存储容错
存储容错也是拜占庭容错,它们会阻止客户检索数据:即是说,存储矿工丢失了数据碎片,检索矿工停止提供服务。如果将其“存入”数据存储在m个独立的存储提供商(总共n个),且它能容错最多f个拜占庭提供商,那么,成功的“存入”执行是(f,m)-容错。参数f和m取决于协议的实现;协议设计者可以修复f和m或者让用户作出选择,而将Put(data)扩展为Put(data,f,m)。
如果错误的存储提供商少于f个,则对存储数据的“获取”执行成功。例如,考虑下简单的方案,其中,将“存入”协议设计为每个存储提供商都存储所有数据。在这个方案中,m=n,且f=m-1。
那么,总是会f=m-1吗?不是的。一些方案可以设计为使用纠删码,其中每个存储提供商存储特定部分的数据,这样在总共m个存储提供商中需要x个来检索数据;在这种情况下,f=m-x。
共识算法
Filecoin的DSN协议可以在任何共识协议基础上执行,它允许验证Filecoin的证明。工作量证明机制通常需要解决谜题,它的答案无法重用或要求耗费大量计算来寻找。(蓝狐笔记注:也就是无记忆性,每次都重新开始)
· 不可重用的工作
大多数无须许可的区块链要求矿工解决棘手的计算谜题,例如逆向哈希函数。通常,这些难题的答案都是毫无用处的,且没有其他内在价值,除了为网络提供安全之外。一些区块链,例如以太坊(执行智能合约逻辑)和Primecoin(寻找新质数)试图使用部分算力来完成有用的工作。
· 浪费的工作
解决谜题可能在机器和能源消耗成本方面非常昂贵,尤其是,如果这些谜题仅仅依赖于算力。当挖矿算法令人尴尬地并行时,解决谜题的主要因素是计算能力。
· 尝试减少浪费
理想情况下,网络的大部分资源应该花费在有用的工作上。一些努力也在尝试要求矿工使用更加节能的解决方案。例如,Spacemint要求矿工用专用的磁盘空间而不是计算。尽管更加节能,这些磁盘依然是“浪费”的,因为它们充满的是随机的数据。
其他努力还包括使用基于PoS的传统拜占庭协议来替代解决谜题的方法。其中,代币质押的利益相关者在系统中根据其成比例的代币占比进行下一个区块的投票。
Filecoin矿工的工作,不是进行浪费的PoW证明计算,他们生成PoST(Proof-of-Spacetime),以参与共识。
· 有用的工作
我们认为,如果除保护区块链的安全之外,计算结果也对网络有价值,那么,在共识协议中矿工做的工作是有用的。
Filecoin提出一种有用的工作共识协议,其中网络选举矿工生成新区块的概率跟他们当前在网络中的存储空间比例成正比。Filecoin协议的设计使得矿工宁愿投资于存储,而不是投资平行挖矿的算力。矿工提供存储,并重用计算,以证明数据正被存储,以参与共识。
建模挖矿能力
· 权力故障容错
权力故障容错是一种抽象形式,它根据参与者对协议结果的影响力来重构拜占庭容错。
每个参与者控制一些权力,其中n是网络中的总权力,f是部分权力,由错误方或恶意行为者控制。
· Filecoin中的权力
在Filecoin中,矿工M在时间t的权力p是M的存储分配的总和。M的影响力I是M的权力占整个网络全部权力的比例。在Filecoin中,权力具有如下属性:
· 公开
网络中当前在用的存储总量是公开的。通过读取区块链,任何人都能计算每个矿工的存储分配,因此,任何人都可以在任何时间点计算每个矿工的权力和网络中的总权力。(蓝狐笔记注:这里的权力,类似于其网络中的影响力,能直接用于选举生成区块的矿工。)
· 可公开验证
对于每个存储分配,矿工要求生成PoST时空证明(Proof-of-Spacetime),证明其正在提供的服务。通过读取区块链,任何人都可以验证一个矿工声称的权力是否正确。
· 变量
在任何时间点,通过承诺新的扇区并填充扇区,矿工可以向网络增加新的存储。通过这种方式,矿工可以随着时间改变其拥有的权力比例。
我们还需要一种机制来防止三种类型的攻击,恶意的矿工能够利用他们并无真实提供的存储来获得奖励:女巫攻击(Sybil Attack)、外包攻击(Outsourcing Attack)、生成攻击(Generation Attack)。
· 女巫攻击
通过创建多个女巫身份,恶意矿工可以假装其存储比实际更多的副本(并由此获得报酬),但实际上只存储数据一次。
· 外包攻击
通过依赖于从其他存储提供商那里快速获取数据,恶意矿工承诺存储超出其实际存储能力的数据。
· 生成攻击
恶意矿工可以声称存储了大量的数据,而他们却使用一个小程序按需求高效地生成了这些数据。如果程序小于所声称的存储数据,这会增加恶意矿工在Filecoin中赢得区块奖励的概率,这个可能性与矿工当前使用中的存储成正比。
存储提供商必须说服他们的客户,他们已经存储了他们付费存储的数据。实际上,存储提供商会生成存储证明(PoS),以供区块链网络或客户自己进行验证。
为了让存储行为公开可验证,Filecoin引入了两种共识算法:Proof-of-Replication(PoRep)和Proof-of-Spacetime(PoSt),也就是复制证明和时空证明。
复制证明(PoRep)是一种新颖的存储证明,它允许服务器(证明者P)说服用户(验证者V)某些数据D已经被复制到其自己的唯一专用物理存储中。
我们的机制是交互式的协议,其中证明方P:
(a)承诺存储某些数据D的n个不同副本(物理上独立的副本)
(b)说服验证者V相信,P确实通过质询/响应协议存储了每个副本。PoRep改进了PoR和PDP机制,防止女巫攻击、外包攻击以及生成攻击。
Proof-of-Spacetime(时空证明):PoS(存储证明)机制允许用户检查存储提供商是否在质询期间存储外包数据。我们如何使用PoS(存储证明)机制来证明某些数据在一段时间内被存储了呢?
这个问题的自然答案是要求用户反复地(例如每分钟)向存储提供商发送质询。然而,每次交互所要求的通信复杂度可能会是成为像Filecoin这样系统的瓶颈,其中存储提供商需要将其证明提交到区块链上。
为了解决这个问题,我们引入新的证明Proof-of-Spacetime,也就是时空证明,其中验证者可以检查证明者是否在一段时间内存储她/他的外包数据。
直觉是要求证明者
· 生成有次序的存储证明(Filecoin中是复制证明),作为确定时间的方式。
· 递归组合执行以生成简短证明

Filecoin的终极指南:深挖Filecoin白皮书

证明者从验证者那里收到随机质询(c)),并为指定迭代次数t使用证明的输出作为另一个的输入,依次生成复制证明。因此,确保完成的所有工作都是可重用的(如上所述)。
PoSt & PoRep使用zk-SNARKS,使得证明很简洁且易于验证。
智能合约
智能合约支持Filecoin用户编写有状态的程序,这些程序可以花费代币、在市场中请求数据的存储/检索、验证存储证明。用户可以通过发送交易到分类账与智能合约进行交互,这些交易可以触发合约中的功能调用。我们扩展了智能合约系统,以支持Filecoin的特定操作,例如市场操作、证明验证。
Filecoin支持特定的数据存储合约,以及更通用的智能合约。
· 文件合约
我们允许用户对他们提供存储服务的条件进行编程。有几个例子值得一提:
· 与矿工签约
客户可提前指定提供服务的矿工,而无需参与市场。
· 付款策略
客户可以为矿工设计不同的奖励策略,例如合约可以设置为随着时间推移向矿工支付越来越高的费用,或者合约可以设置可信预言机告知的存储价格。
· 票证服务
合约可以允许矿工存放代币,以代表其用户支付存储/检索的费用。
· 更多复杂的操作
客户可以创建允许数据升级的合约。
· 智能合约
用户可以将程序与其交易相关联,就像其他的系统(如以太坊)那样,这些系统不直接依赖于存储的使用。我们可以预见到这些应用:DNS(蓝狐笔记注:去中心化的域名系统)、资产跟踪以及众筹平台。
跨链交互
桥梁是旨在连接不同区块链的工具。我们计划支持跨链交互,以将Filecoin存储引入其他基于区块链的平台,并将其他平台的功能引入Filecoin。
· 其他平台上的Filecoin:其他区块链系统,如比特币、Zcash、尤其是以太坊和Tezos,允许开发者编写智能合约;然而,这些平台提供很少的存储能力,且成本极高。
我们计划提供一个桥梁,为这些平台提供存储和检索的支持。我们注意到IPFS已经被好几个智能合约使用,作为引用和分发内容的一种方式。增加对Filecoin的支持将允许这些系统可以保证存储IPFS内容,以交换Filecoin代币。
· Filecoin中的其他平台:我们计划提供桥梁,以将其他区块链服务与Filecoin连接起来。例如,与zcash集成将允许发送存储隐私数据的请求。
其他一些问题
这里我们列出一些白皮书上没有充分讨论的潜在问题:
· 检索市场的可扩展性
小额支付系统(检索市场)在检索协议上产生了许多开销。为了达到与如今中心化基础设施相匹配的检索速度,Filecoin和IPFS需要大量的采用,以创建密集的状态通道网络。(蓝狐笔记注:如果检索市场规模很大,那么其小额支付需要较高的吞吐量支持)
· 审查制度(非法内容)
正如我们过去在Napster和the Priate Bay(海盗湾)所看到的一样,缺乏审查将最终导致网络上产生非法内容,将暗网带到明面上。可能的解决方案是,基于AI驱动的协议能够随着时间推移进行学习,且能自动检测非法内容,并采取必要的行动。
但为了让网络成为共同治理的网络,该协议需要由用户自己来管理(引入拜占庭行为),以决定该内容是否需要被采取措施。
· 开源?
从上述问题推断,也有可能刚开始时为了保护网络免遭非法内容侵扰,它可能由Protocol Labs管理。这可能意味着是一个封闭的软件,可以免费使用,但不能公开用于修改。
但即便他们这么做,也可能无济于事。因为人们可以在其上面运行未经审查的版本(通过修改原始软件)。
· 代币波动
考虑到Filecoin将会在交易所上市这一点,在这种市场中,到底小额支付系统(存储和检索会设计小额支付)有多大可行性?(蓝狐笔记注:作者的意思是说,Filecoin代币在市场上是波动的,很难作为小额支付的货币,需要稳定币才行)。
从当前的市场成熟度和去中心化领域来看,代币更像是投资工具,而不是效用工具。这也是我们今天没有看到基于代币的项目被太多采用的最大原因之一。
Filecoin协议改进的可能性
这里我们列出Filecoin协议中可能的改进。
· Tahor-LAFS加密方案
当增加价值时,客户首先将其加密(用对称密钥),然后将其分成可管理大小的份,之后Erasure Code以实现冗余。(蓝狐笔记注:EC编码,也称为纠删码,它可以将n份原始数据,增加m份数据,并能通过n+m份中的任意n份数据,还原为原始数据)。
因此,例如,“3份中的2份”纠删码意味着总共有3份,其中任何2份都足以重建原始数据。这些份可以成为共享,存储在特定的存储节点上。存储节点是共享的数据库;用户不依赖于它们来保证数据的完整性或机密性。

Filecoin的终极指南:深挖Filecoin白皮书

最终,加密密钥和一些有助于发现正确存储节点的信息成为“功能字符串”的部分。重要的是,功能字符串对于从Grid中检索值既是必须的又是足够的。如果太多的节点变得不可用或离线,你无法获得检索足够的共享,这种情况下它会失败。
· 有写入、读取以及验证能力
可以离线使用一种“权威性较低”的能力,也就是说,具有写入能力的人可以将其转换为读取能力(无需与服务器交互)。
验证能力可以确认值的存在和完整性,但不能解密内容。可以将可变和不可变的值都放入Grid中。当然,不可变的值是不可能有写入功能的。