Filecoin的终极指南:深挖Filecoin白皮书
自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中有3组用户:客户、存储矿工以及检索矿工。
客户为存储和检索数据的服务付费。他们可以从可用的服务提供商中进行选择。如果他们想存储隐私数据,他们需要先对其进行加密,然后再提交给服务提供商。
存储矿工存储客户的数据以获得奖励。他们自行决定为存储提供多少空间。在客户和存储矿工达成协议之后,矿工有义务持续提供其存储数据的证明。每个人都可以查看该证明,并确保存储矿工是可靠的。
检索矿工根据客户的请求给他们提供数据。他们可以从客户或存储矿工那里获取数据。检索矿工和客户使用小额支付来交换数据和代币:数据被切分成碎片,客户为每个碎片支付少量代币。检索矿工也可以同时充当存储矿工。
最后,网络代表了验证客户和矿工行为的所有完整节点。这些节点对可用存储进行计数、检查存储证明、以及修复数据错误。
本文中的一些术语:
碎片 :碎片是指客户存储在去中心化存储网络中的数据的一部分。例如,可以将数据(可能是一张猫的图片)有意地切分成许多碎片,且每个碎片可以被存储进入不同的存储矿工中。
扇区 :扇区是存储矿工向网络提供的一些磁盘空间(可以认为是唯一ID,它跟特定存储矿工的磁盘空间的特定部分相关联)。矿工在他们的扇区中存储客户的数据碎片,并为其服务赚取代币。为了存储碎片,存储矿工必须向网络保证其扇区。
分配表 :分配表是一种数据结构,它持续跟踪碎片及其分配的扇区。分配表在分类账上的每个区块都会更新,其Merkle root会存储在最新的区块中。在实践中,分配表用于保持DSN的状态,以便于在验证证明时快速查找。
订单 :订单是请求或提供服务的声明。客户向市场提交买盘订单以请求服务(其中包括在存储市场请求数据存储,在检索市场请求数据检索),矿工则提交卖盘订单以提供服务。
订单簿 :订单簿是订单集。Filecoin为存储市场和检索市场维持单独的订单。
保证 :保证是向网络提供存储(尤其是扇区)的承诺。存储矿工必须向账本(filecoin区块链)提交他们的保证,以在存储市场中接受订单。保证包括包括扇区大小的保证以及其存入的质押代币。
买盘和卖盘订单一起形成存储市场(文件存储的市场)和检索市场(文件检索的市场)。我们可以深入研究这些市场,看看它们如何运作。
存储市场
它是由网络运行的去中心化交易所,其中所有的卖盘和买盘都存在区块链上,用于在Filecoin网络上存储数据。
客户使用PUT协议向存储订单簿提交买盘订单。客户必须在指定的订单中存入代币,并指定他们想要存储的复制数量。客户可以提交多个订单,也可以在一个订单中指定复制数量。更高的冗余度(蓝狐笔记注:此处指更多的复制数量)能产生更高的存储故障的容错性。
存储矿工通过存入质押代币向网络保证其存储,其保证通过Manage.PledgeSector在区块链中进行保证交易。质押代币会在存储矿工愿意提供服务的期间内存入质押,如果矿工生成他们所承诺的数据存储证明,代币会被返回。
如果某些存储证明失败,存储矿工则会损失与之成比例的抵押代币。
当存储矿工扇区充满,该扇区密封。密封是缓慢和有序操作,它将扇区中的数据转换为副本,该副本是跟存储矿工的公钥相关联的数据的唯一物理副本。在复制证明(Proof-of-Replication)期间,密封是必要的操作。
- 如果任何证明缺失或无效,网络会拿走矿工的部分抵押代币,以示惩罚;
- 如果大量的证明缺失或无效(由系统参数Δfault定义),网络会认为存储矿工有故障,将订单结算为失败,然后重新将数据碎片作为新订单引入市场;
- 如果每个存储矿工存储该碎片都有故障,则该碎片会丢失,客户会收到退款。
这是链外的点对点交易市场,客户和检索矿工相互发现彼此。一旦客户和矿工同意价格,他们便开始通过小额支付逐笔交易数据和代币。
让我们看看它是如何运作的。
检索矿工通过他们在网络中发布其卖盘订单来声明服务:他们设置价格,并向市场的订单簿添加卖盘订单。
Filecoin引入去中心化存储网络(DSN)的概念。DSN是一种描述独立客户和存储提供商网络的方案。DSN聚合由多个独立存储提供商提供的存储,并进行自我协调,以为客户提供数据存储和数据检索的服务。
协调是去中心化的,且不需要可信的第三方:这些系统的安全操作是通过协议达成的,这些协议可以协调和验证各方参与者的操作。(蓝狐笔记注:跟Airbnb通过中心化公司的调度不同,它是无需信任第三方的)
DSN可以根据系统要求采用不同的策略进行协调,包括拜占庭协议、八卦协议、或CRDT。
DSN涉及3个功能的实现:存入、获取和管理。“存入”允许客户在唯一标识符下存储数据。“获取”允许客户使用唯一标识符检索数据。“管理”是对去中心化存储市场网络的管理,它测量可供出租的空间、审核存储提供商、以及修复可能的数据故障。管理协议通常由存储提供商和客户或网络的审核者一起运行。
DSN有几个属性。前两个是必须的。
- 数据完整性意味着客户总是可以收到其存入的相同数据,而存储提供商如果提供错误数据,则无法让客户放心。
- 可检索性则意味着客户可以随时间推移检索其数据。
- 公开可验证性,它则允许网络中的任何人在无需知道数据的情况下验证数据是否被存储。
- 可审核性,它允许验证数据是否在正确的时间段内被存储。
- 激励兼容,它旨在奖励好的服务提供商,惩罚差的提供商。
- 实现机密性:它希望对其数据进行私密存储的客户在其提交到网络之前必须加密其数据。
DSN应该对两种类型的可能错误进行容错:
- 管理容错
例如,考虑一下DSB机制,其中的管理协议要求拜占庭协议(由于节点可以向审核者谎报)来审核存储提供商(如果他们根据约定的条件存储应存的所有数据)。
在这样的协议中,网络从存储提供商那里收取存储证明,并运行拜占庭协议来验证这些证明的有效性。如果拜占庭协议在总共n个节点中最多可以容忍f个错误,那么,我们的DSN可以容忍f< n/2个错误节点。在违反这些假设的情况下,审核就会受到影响,从而导致系统变得无用。
- 存储容错
如果错误的存储提供商少于f个,则对存储数据的“获取”执行成功。例如,考虑下简单的方案,其中,将“存入”协议设计为每个存储提供商都存储所有数据。在这个方案中,m=n,且f=m-1。
那么,总是会f=m-1吗?不是的。一些方案可以设计为使用纠删码,其中每个存储提供商存储特定部分的数据,这样在总共m个存储提供商中需要x个来检索数据;在这种情况下,f=m-x。
共识算法
Filecoin的DSN协议可以在任何共识协议基础上执行,它允许验证Filecoin的证明。工作量证明机制通常需要解决谜题,它的答案无法重用或要求耗费大量计算来寻找。(蓝狐笔记注:也就是无记忆性,每次都重新开始)
- 不可重用的工作
- 浪费的工作
- 尝试减少浪费
其他努力还包括使用基于PoS的传统拜占庭协议来替代解决谜题的方法。其中,代币质押的利益相关者在系统中根据其成比例的代币占比进行下一个区块的投票。
Filecoin矿工的工作,不是进行浪费的PoW证明计算,他们生成PoST(Proof-of-Spacetime),以参与共识。
- 有用的工作
Filecoin提出一种有用的工作共识协议,其中网络选举矿工生成新区块的概率跟他们当前在网络中的存储空间比例成正比。Filecoin协议的设计使得矿工宁愿投资于存储,而不是投资平行挖矿的算力。矿工提供存储,并重用计算,以证明数据正被存储,以参与共识。
建模挖矿能力
- 权力故障容错
每个参与者控制一些权力,其中n是网络中的总权力,f是部分权力,由错误方或恶意行为者控制。
- Filecoin中的权力
- 公开
- 可公开验证
- 变量
我们还需要一种机制来防止三种类型的攻击,恶意的矿工能够利用他们并无真实提供的存储来获得奖励:女巫攻击(Sybil Attack)、外包攻击(Outsourcing Attack)、生成攻击(Generation Attack)。
- 女巫攻击
- 外包攻击
- 生成攻击
存储提供商必须说服他们的客户,他们已经存储了他们付费存储的数据。实际上,存储提供商会生成存储证明(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中是复制证明),作为确定时间的方式。
- 递归组合执行以生成简短证明
PoSt & PoRep使用zk-SNARKS,使得证明很简洁且易于验证。
智能合约
智能合约支持Filecoin用户编写有状态的程序,这些程序可以花费代币、在市场中请求数据的存储/检索、验证存储证明。用户可以通过发送交易到分类账与智能合约进行交互,这些交易可以触发合约中的功能调用。我们扩展了智能合约系统,以支持Filecoin的特定操作,例如市场操作、证明验证。
Filecoin支持特定的数据存储合约,以及更通用的智能合约。
- 文件合约
- 与矿工签约
- 付款策略
- 票证服务
- 更多复杂的操作
- 智能合约
跨链交互
桥梁是旨在连接不同区块链的工具。我们计划支持跨链交互,以将Filecoin存储引入其他基于区块链的平台,并将其他平台的功能引入Filecoin。
-
其他平台上的Filecoin:其他区块链系统,如比特币、Zcash、尤其是以太坊和Tezos,允许开发者编写智能合约;然而,这些平台提供很少的存储能力,且成本极高。
我们计划提供一个桥梁,为这些平台提供存储和检索的支持。我们注意到IPFS已经被好几个智能合约使用,作为引用和分发内容的一种方式。增加对Filecoin的支持将允许这些系统可以保证存储IPFS内容,以交换Filecoin代币。
- Filecoin中的其他平台:我们计划提供桥梁,以将其他区块链服务与Filecoin连接起来。例如,与zcash集成将允许发送存储隐私数据的请求。
这里我们列出一些白皮书上没有充分讨论的潜在问题:
- 检索市场的可扩展性
- 审查制度(非法内容)
但为了让网络成为共同治理的网络,该协议需要由用户自己来管理(引入拜占庭行为),以决定该内容是否需要被采取措施。
- 开源?
但即便他们这么做,也可能无济于事。因为人们可以在其上面运行未经审查的版本(通过修改原始软件)。
- 代币波动
从当前的市场成熟度和去中心化领域来看,代币更像是投资工具,而不是效用工具。这也是我们今天没有看到基于代币的项目被太多采用的最大原因之一。
Filecoin协议改进的可能性
这里我们列出Filecoin协议中可能的改进。
- Tahor-LAFS加密方案
因此,例如,“3份中的2份”纠删码意味着总共有3份,其中任何2份都足以重建原始数据。这些份可以成为共享,存储在特定的存储节点上。存储节点是共享的数据库;用户不依赖于它们来保证数据的完整性或机密性。
- 有写入、读取以及验证能力
验证能力可以确认值的存在和完整性,但不能解密内容。可以将可变和不可变的值都放入Grid中。当然,不可变的值是不可能有写入功能的。
------
风险警示:蓝狐笔记所有文章都 不能作为投资建议或推荐,投资有风险,投资应该考虑个人风险承受能力, 建议对项目进行深入考察,慎重做好自己的投资决策。