读书笔记N232:Filecoin白皮书(中文版完整版)

79 字

读书笔记N232:Filecoin白皮书(中文版完整版)笔记

Filecoin:一种去中心化的存储网络 协议实验室 2017年8月14日

来源:
http://ipfs-file.oss-cn-shenzhen.aliyuncs.com/0/2019-09/12170815784-f2c33e24-677c-4b4b-93db-4d352ecd25d1.pdf
http://www.btb8.com/fil/1910/71729.html

互联网正处于一场革命当中:中心化专有服务正在被去中心化开放式服务所取代;可信中心被可验证计算取代;脆弱的位置地址被弹性内容地址所取代;低效的整体式服务被点对点算法市场所取代;比特币、以太坊和其他的区块链网络已经证明了去中心化交易账本的有效性。

IPFS根据去中心化网络自身已经证实了内容寻址的有效性,即在全球点对点网络上提供数十亿文件使用的服务。它解放孤岛数据、留活网络分区、脱机工作、绕开审查并且给予了数字信息永久性。

Filecoin是一个去中心化的存储网络,它让云存储变身成了一个算法市场。这个市场基于一个本地协议通证(也叫Filecoin)来运行,在这里矿工们可以通过向客户提供存储获取Filecoin。反过来,客户花费Filecoin雇佣矿工们来存储或分发数据。和比特币一样,Filecoin矿工们为了可观的奖励而竞争挖区块,但是Filecoin的挖矿功率是和有效存储成比例的,即直接为客户提供有用的服务

Filecoin协议的云存储网络是一个安全的网络,因为内容在客户端是端到端加密的,而存储提供者并不能访问到解密的秘钥。Filecoin是运行在可以为任何数据提供存储基础设施的IPFS之上的激励层。它对去中心化数据,构建及运行分布式应用程序,以及实现智能合约具有巨大的作用。

Filecoin是一种协议通证,它的区块链运行在一种叫做“时空证明”的新型证明机制上,它的区块将被存储数据的矿工挖掘。Filecoin协议不依赖于单个协调和独立存储提供者组成的网络来提供数据存储和检索服务,其中:
  (1) 用户为数据存储和检索支付通证,
  (2) 存储矿工通过提供存储空间赚取通证,
  (3) 检索矿工提供数据服务赚取通证。

Filecoin协议建立在四个新型组件之上。
  去中心化存储网络(DSN):我们提供一个由独立存储提供者组成的网络的抽象概念,以便于它们提供存储和检索服务;
新型的存储证明:我们提出两种新型的存储证明:(1) 复制证明允许存储提供者,证明数据确实被复制到了其独特的专用物理存储设备上。(2)时空证明允许存储提供者证明他们在指定的时间内持续存储了某些数据。
  可验证市场:我们将存储请求和检索请求建模成由Filecoin网络操作的两个去中心化的可验证市场内的订单;
 有效的工作证明:我们展示了如何基于“时空证明”来构建一个有效的工作证明来应用于共识协议之中。

去中心化存储网络(DSN)方案的概念。DSNs聚集了多个独立存储供应商提供的存储空间,并且它能自我协调,以对用户提供数据存储和检索服务。这种协调是去中心化并且不需要信任方的:即通过协议调节及验证个体方的操作,来达到安全操作整个系统的目的。DSNs可以根据系统的需求采用不同的调节策略,包括拜占庭协议、流言协议以及无冲突可复制数据类型(CRDTs)。

在Filecoin协议中,存储供应商必须让他们的客户相信,客户付费的数据已经被他们存储了;在实践中,存储供应商将生成存储证明供给区块链网络,或者客户自己来进行验证。

存储证明(POS)方案类似“数据持有性验证”(PDP)和“可恢复性验证”(POR)方案。  PDP和PoR方案只是保证了证明人在响应的时候拥有某些数据。在Filecoin中,我们需要更强大的保障能阻止作恶矿工利用不提供存储却获得奖励的三种类型攻击:女巫攻击(Sybil attack)、外包攻击(outsourcing attacks)、代攻击(generation attacks)。

“复制证明”(PoRep)是一个新型的存储证明。它允许服务器(既证明人P)说服用户(既验证者V)一些数据D已被复制到它唯一的专用物理存储上了。我们的方案是一种交互式协议。证明者P:(a)承诺存储数据D的n个不同的副本(独立物理副本),然后(b)通过一个挑战/响应协议来说服验证者V,P确实已经存储了每个副本。据我们所知,PoRep改善了PDP和PoR方案,阻止了女巫攻击、外包攻击、代攻击。

时空证明,其中验证者可以检验在一段时间内证明者是否存储了他/她的外包数据。如此对证明者的要求则是 (1)生成顺序的存储证明(在这里是复制证明),来作为一种 (2)递归执行生成简短证明的确定时间的方法。

防碰撞哈希运算:我们使用一个防碰撞的哈希函数:CRH:{0,1}*→{0,1}O(λ)。我们还使用了一个防碰撞hax函数MerkleCRH,它将字符串分割成多个部分,构造出二叉树饼递归应用CRH,然后输出树根。

Filecoin协议采用了时空证明来审核矿工提供的存储。为了在Filecoin中使用PoSt,出于无指定验证者和我们想要任何网络成员都可以验证的原因,我们将我们的方案修改成了非交互模式。由于我们的验证者是在公共通证模型下运行的,我们可以从区块链中提取随机性来发出挑战。

Filecoin DSN是一个可审查的、可公开验证并且为激励所设计的去中心化存储网络。客户为了存储和检索数据向矿工付费;矿工提供硬盘空间和带宽来赚取费用。矿工只有在网络审核他们确实提供了服务后才会收到付款。

客户在DSN中通过Put和Get请求来付费进行存储及检索数据。存储矿工向网络提供数据存储。存储矿工在Filecoin中提供他们的硬盘空间并且服务Put请求。检索矿工为网络提供数据检索服务。检索矿工在Filecoin中提供给客户Get请求所需的数据。与存储矿工不同,他们不需要抵押、承诺存储数据或是提供存储证明。存储矿工可以很自然同时兼做检索矿工。检索矿工可以从客户或者检索市场上获取碎片。

我们将运行Filecoin全节点的所有用户设想为一个单一的抽象实体:网络。网络充当运行Manage协议的中介;非正式地,在Filecoin区块链的每个新区块中,全节点将管理可用存储,验证抵押物,审核存储证明以及修复可能的故障。

储的供给和需求组成了两个Filecoin市场:存储市场和检索市场。这两个市场是两个去中心化交易所,简言之,客户和矿工为他们请求的服务设定价格或是通过向两个市场分别提交订单。交易所为客户和矿工提供了一种方式来查看匹配报价并发起交易。如果请求的服务被成功提供,通过运行Manage协议,网络将保证矿工得到报酬的同时客户也被收取了费用。

碎片:一个碎片是客户存储在DSN的数据的一部分。例如,数据可以被有意分为很多个碎片,每一个碎片由不同的存储矿工保存。
 扇区:一个扇区是存储矿工提供给网络的一些硬盘空间。矿工将从客户那里得来的碎片存储在他们的扇区中并为他们的服务获取通证。为了存储碎片,存储矿工必须向网络抵押他们的扇区。
  分配表:分配表是一个用来跟踪碎片以及分配扇区的数据结构。分配表在账本中每一个区块都会更新一次,并且它的Merkle树根将存储在最新的区块中。

抵押:抵押是向网络提供存储(特别是扇区)的一种承诺。存储矿工必须将他们的抵押提交给账本才能开始在存储市场中接受订单。一个抵押包含了抵押扇区的大小和存储矿工存放的抵押物

Put:客户将数据存储在Filecoin。一个客户通过向存储市场订单簿提交一个报价订单(提交订单到区块链)来启动Put协议。当匹配到从矿工而来的询价订单时,客户将碎片发给矿工。双方签署成交订单并且将它提交到存储市场订单簿。客户们可以通过提交多份订单(或在订单中指定复制因子)来决定他们碎片的物理副本数量。冗余度越高,存储故障的容许度就越高。

Get:客户从Filecoin检索数据。客户可以通过向检索矿工支付Filecoin通证来检索在DSN中存储的任何数据。一个客户通过向检索市场订单簿提交一个报价订单(向整个网络广播他们的订单)来启动Get协议。当匹配到从矿工而来的询价订单时,客户将收到从矿工而来的碎片。收到后,双方签署成交订单并且将它提交到区块链来确认交易成功。

我们给出了一个非正式的挖矿周期概述:
  1.抵押:存储矿工向网络抵押存储   2.接收订单:存储矿工从存储市场获取存储请求  3.密封:存储矿工为未来的证明准备碎片   4.证明:存储矿工证明他们正在存储所承诺的碎片

我们给出一个对于检索矿工非正式的挖矿周期概述。
  1.收到订单:检索矿工从检索市场得到数据请求 2.发送:检索矿工发送碎片给客户

我们给出一个非正式的网络操作概述。
  1.分配:网络将客户的碎片分配给存储矿工的扇区。 2.修复:网络发现故障并尝试修复它们。

Filecoin有两个市场:存储市场和检索市场。这两个市场拥有相同的结构与不同的设计。存储市场允许客户向存储矿工付费来存储数据。检索市场允许客户向检索矿工付费来享受数据的检索传递服务。在这两种情况下,客户和矿工可以设置他们的报价和要价或是接受当前的报价。这些交易是由区块链网络Filecoin全节点网络的拟人化概念所运行的。网络保证矿工在提供服务时,可以得到来自客户的奖励。

一个可验证市场是一个有着两个阶段的协议:订单匹配与订单结算。订单是购买或出售抵押物、商品或服务的意向声明,订单簿则是所有可用订单的清单。

为了参与存储市场,存储矿工必须抵押与其在DSN中的存储量成比例的抵押物。通过这种方式,网络可以惩罚那些承诺存储数据但又不提供存储证明的存储矿工。同样的,客户必须向订单存入指定的资金,以这种方式保证在结算期间的承诺与资金的可用性。

简而言之,存储市场协议被分为两个阶段:订单匹配和订单结算。
  订单匹配:客户和存储矿工通过提交交易到区块链来将他们的订单提交到订单簿中(第1步)。当订单匹配完成,客户将碎片发送给存储矿工,随后双方签署成交订单并且将它提交到订单簿(第2步)。
  结算:存储矿工封存他们的扇区(第3a步),为包含碎片的扇区生成存储证明并且定期将它们提交到区块链(第3b步);与此同时,其余的网络必须验证矿工所生成的证明并且修复可能的故障(第3c步)。

与存储矿工不同,检索矿工不需要在特定时间周期内存储数据或者生成存储证明。在网络中的任何用户都可以成为检索矿工,通过提供检索服务来赚取Filecoin通证。检索矿工可以直接从客户那里获取碎片,也可以通过检索市场获取它们,或者作为存储矿工直接存储它们。

简而言之,检索市场协议分为两个阶段:订单匹配和订单结算。
  订单匹配:客户和检索矿工通过广播他们的订单将订单添加到订单簿(第1步)。当订单匹配完成,客户和检索矿工之间建立一条小额支付通道(第2步)。
  结算:检索矿工发送碎片的一小部分给客户,然后客户针对每一份碎片都会向矿工发送一份签署的收据(第3步)。检索矿工向区块链出示送达收据从而获得奖励(第4步)。

在 Filecoin 中,功率有以下属性:
  公开:网络中当前正在使用的存储总量是公开的。通过读取区块链,任何人都可以计算每个矿工的存储任务,因此任何人都可以在任意时间点计算出每一个矿工的功率与网络总功率。
  可公开验证的:对于每一个存储任务,矿工被要求生成时空证明以证明服务在被持续提供。通过读取区块链,任何人都可以验证矿工所声明的功率是否正确。
  可变的:在任意时间点,矿工可以通过抵押新扇区并且填充新扇区的方式来添加新的存储。这样矿工便可以改变他们的功率。

Filecoin为终端用户提供了两个基本的原语:Get和Put。这些原语让客户可以在市场中以他们自己喜爱的价格存储和检索数据。虽然原语涵盖了Filecoin的默认使用案例,但我们还是通过支持智能合约的部署,允许在Get和Put之上设计更复杂的操作。用户可以编写新的精细的存储/检索请求,我们将其称为文件合约以及通用智能合约。我们整合了合约系统和一个桥接系统将Filecoin存储带入其他区块链之中,反之亦然,也将其他的区块链的功能带入Filecoin之中。

我们注意到IPFS已经被一些智能合约(和协议通证)当做引用和分发内容的方式使用了。添加对Filecoin的支持将允许这些系统能够以交易Filecoin通证的方式来保证IPFS上存储的内容。

上一个版本:QmZ5fLHwK9d55iyxpke6DJTWxsNR3PHgi6F43jSUgEKx31